From cf67686fc95b048ea1939a056cfff69de31dffd9 Mon Sep 17 00:00:00 2001 From: eidheim Date: Fri, 10 Nov 2017 08:59:38 +0100 Subject: [PATCH] Fixes backspace key when insert is after spaces or tabs at start of the first line in buffer --- src/source.cc | 2 +- tests/source_key_test.cc | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/source.cc b/src/source.cc index d5d4358..1caa724 100644 --- a/src/source.cc +++ b/src/source.cc @@ -1776,7 +1776,7 @@ bool Source::View::on_key_press_event_basic(GdkEventKey* key) { break; } } - if(get_buffer()->size()==1) // special case due to backward_char(s) returning false when moving to start of buffer + if(iter.get_line()==0) // Special case since there are no previous line do_smart_backspace=false; if(do_smart_backspace) { auto previous_line_end_iter=iter; diff --git a/tests/source_key_test.cc b/tests/source_key_test.cc index 898fa9a..bbc13d2 100644 --- a/tests/source_key_test.cc +++ b/tests/source_key_test.cc @@ -890,5 +890,24 @@ int main() { " }"); g_assert(view.get_buffer()->get_insert()->get_iter() == view.get_buffer()->end()); } + + + event.keyval = GDK_KEY_BackSpace; + { + view.get_buffer()->set_text(" int main()\n"); + auto iter=view.get_buffer()->begin(); + iter.forward_chars(2); + view.get_buffer()->place_cursor(iter); + assert(view.on_key_press_event_basic(&event)==false); + assert(view.on_key_press_event_bracket_language(&event)==false); + } + { + view.get_buffer()->set_text(" int main()"); + auto iter=view.get_buffer()->begin(); + iter.forward_chars(2); + view.get_buffer()->place_cursor(iter); + assert(view.on_key_press_event_basic(&event)==false); + assert(view.on_key_press_event_bracket_language(&event)==false); + } } }