From cb09fd6b8fc58b6ff367d29c5a5ee83d285e4bba Mon Sep 17 00:00:00 2001 From: eidheim Date: Tue, 30 Jan 2018 08:22:06 +0100 Subject: [PATCH] Language protocol: fixes cursor position after style format and rename --- src/source_language_protocol.cc | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/source_language_protocol.cc b/src/source_language_protocol.cc index e486994..5005024 100644 --- a/src/source_language_protocol.cc +++ b/src/source_language_protocol.cc @@ -414,6 +414,9 @@ void Source::LanguageProtocolView::setup_navigation_and_refactoring() { result_processed.get_future().get(); get_buffer()->begin_user_action(); + auto iter=get_buffer()->get_insert()->get_iter(); + auto line=iter.get_line(); + auto offset=iter.get_line_offset(); for(auto it=replaces.rbegin();it!=replaces.rend();++it) { auto start=get_iter_at_line_pos(it->start.line, it->start.index); auto end=get_iter_at_line_pos(it->end.line, it->end.index); @@ -422,6 +425,11 @@ void Source::LanguageProtocolView::setup_navigation_and_refactoring() { unescape_text(it->text); get_buffer()->insert(start, it->text); } + if(get_buffer()->get_insert()->get_iter().is_end()) { + place_cursor_at_line_offset(line, offset); + hide_tooltips(); + scroll_to_cursor_delayed(this, true, false); + } get_buffer()->end_user_action(); }; } @@ -668,6 +676,9 @@ void Source::LanguageProtocolView::setup_navigation_and_refactoring() { } if(view_it!=views.end()) { (*view_it)->get_buffer()->begin_user_action(); + auto iter=get_buffer()->get_insert()->get_iter(); + auto line=iter.get_line(); + auto offset=iter.get_line_offset(); for(auto offset_it=usage.offsets.rbegin();offset_it!=usage.offsets.rend();++offset_it) { auto start_iter=(*view_it)->get_iter_at_line_pos(offset_it->first.line, offset_it->first.index); auto end_iter=(*view_it)->get_iter_at_line_pos(offset_it->second.line, offset_it->second.index); @@ -678,6 +689,11 @@ void Source::LanguageProtocolView::setup_navigation_and_refactoring() { else (*view_it)->get_buffer()->insert(start_iter, text); } + if(usage.new_text && get_buffer()->get_insert()->get_iter().is_end()) { + place_cursor_at_line_offset(line, offset); + hide_tooltips(); + scroll_to_cursor_delayed(this, true, false); + } (*view_it)->get_buffer()->end_user_action(); (*view_it)->save(); usages_renamed.emplace_back(&usage);