Browse Source

Improved Source::View::find_start_of_sentence when source contains multiline use of stream operators

merge-requests/365/head
eidheim 9 years ago
parent
commit
6105210333
  1. 12
      src/source.cc

12
src/source.cc

@ -1109,6 +1109,7 @@ bool Source::View::find_open_non_curly_bracket_backward(Gtk::TextIter iter, Gtk:
}
Gtk::TextIter Source::View::find_start_of_sentence(Gtk::TextIter iter) {
bool stream_operator_test=*iter==';'?true:false;
int para_count=0;
int square_count=0;
long curly_count=0;
@ -1131,7 +1132,17 @@ Gtk::TextIter Source::View::find_start_of_sentence(Gtk::TextIter iter) {
break;
if(iter.starts_line() && para_count==0 && square_count==0) {
bool stream_operator_found=false;
// Handle << at the beginning of the sentence if iter initially started with ;
if(stream_operator_test) {
auto tabs_end_iter=get_tabs_end_iter(iter);
if(!tabs_end_iter.starts_line() && *tabs_end_iter=='<' &&
tabs_end_iter.forward_char() && *tabs_end_iter=='<' &&
tabs_end_iter.forward_char() && *tabs_end_iter==' ')
stream_operator_found=true;
}
// Handle : and , on previous line
if(!stream_operator_found) {
auto previous_iter=iter;
previous_iter.backward_char();
while(!previous_iter.starts_line() && (*previous_iter==' ' || previous_iter.ends_line()) && previous_iter.backward_char()) {}
@ -1149,6 +1160,7 @@ Gtk::TextIter Source::View::find_start_of_sentence(Gtk::TextIter iter) {
return iter;
}
}
}
} while(iter.backward_char());
return iter;

Loading…
Cancel
Save