Browse Source

improved tab and shift-tab indentation.

merge-requests/365/head
eidheim 10 years ago
parent
commit
401055ebec
  1. 9
      src/source.cc

9
src/source.cc

@ -190,7 +190,6 @@ Source::View::View(const boost::filesystem::path &file_path): file_path(file_pat
auto context_iter=iter; auto context_iter=iter;
if(context_iter.backward_char()) { if(context_iter.backward_char()) {
if((spellcheck_all && !get_source_buffer()->iter_has_context_class(context_iter, "no-spell-check")) || get_source_buffer()->iter_has_context_class(context_iter, "comment") || get_source_buffer()->iter_has_context_class(context_iter, "string")) { if((spellcheck_all && !get_source_buffer()->iter_has_context_class(context_iter, "no-spell-check")) || get_source_buffer()->iter_has_context_class(context_iter, "comment") || get_source_buffer()->iter_has_context_class(context_iter, "string")) {
cout << (char)*iter << endl;
if(*iter==32 || *iter==45) { //Might have used space or - to split two words if(*iter==32 || *iter==45) { //Might have used space or - to split two words
auto first=iter; auto first=iter;
auto second=iter; auto second=iter;
@ -553,6 +552,7 @@ bool Source::View::on_key_press_event(GdkEventKey* key) {
int line_end=selection_end.get_line(); int line_end=selection_end.get_line();
for(int line=line_start;line<=line_end;line++) { for(int line=line_start;line<=line_end;line++) {
Gtk::TextIter line_it = get_source_buffer()->get_iter_at_line(line); Gtk::TextIter line_it = get_source_buffer()->get_iter_at_line(line);
if(!get_buffer()->get_has_selection() || line_it!=selection_end)
get_source_buffer()->insert(line_it, tab); get_source_buffer()->insert(line_it, tab);
} }
get_source_buffer()->end_user_action(); get_source_buffer()->end_user_action();
@ -567,6 +567,8 @@ bool Source::View::on_key_press_event(GdkEventKey* key) {
unsigned indent_left_steps=tab_size; unsigned indent_left_steps=tab_size;
for(int line_nr=line_start;line_nr<=line_end;line_nr++) { for(int line_nr=line_start;line_nr<=line_end;line_nr++) {
auto line_it = get_source_buffer()->get_iter_at_line(line_nr);
if(!get_buffer()->get_has_selection() || line_it!=selection_end) {
string line=get_line(line_nr); string line=get_line(line_nr);
std::smatch sm; std::smatch sm;
if(std::regex_match(line, sm, tabs_regex) && sm[1].str().size()>0) { if(std::regex_match(line, sm, tabs_regex) && sm[1].str().size()>0) {
@ -577,14 +579,16 @@ bool Source::View::on_key_press_event(GdkEventKey* key) {
return true; return true;
} }
} }
}
for(int line_nr=line_start;line_nr<=line_end;line_nr++) { for(int line_nr=line_start;line_nr<=line_end;line_nr++) {
Gtk::TextIter line_it = get_source_buffer()->get_iter_at_line(line_nr); Gtk::TextIter line_it = get_source_buffer()->get_iter_at_line(line_nr);
Gtk::TextIter line_plus_it=line_it; Gtk::TextIter line_plus_it=line_it;
if(!get_buffer()->get_has_selection() || line_it!=selection_end) {
if(indent_left_steps==0 || line_plus_it.forward_chars(indent_left_steps)) if(indent_left_steps==0 || line_plus_it.forward_chars(indent_left_steps))
get_source_buffer()->erase(line_it, line_plus_it); get_source_buffer()->erase(line_it, line_plus_it);
} }
}
get_source_buffer()->end_user_action(); get_source_buffer()->end_user_action();
return true; return true;
} }
@ -1046,7 +1050,6 @@ void Source::ClangViewParse::update_diagnostics() {
auto tooltip_buffer=Gtk::TextBuffer::create(get_buffer()->get_tag_table()); auto tooltip_buffer=Gtk::TextBuffer::create(get_buffer()->get_tag_table());
tooltip_buffer->insert_with_tag(tooltip_buffer->get_insert()->get_iter(), severity_spelling, diagnostic_tag_name); tooltip_buffer->insert_with_tag(tooltip_buffer->get_insert()->get_iter(), severity_spelling, diagnostic_tag_name);
tooltip_buffer->insert_with_tag(tooltip_buffer->get_insert()->get_iter(), ":\n"+spelling, "def:note"); tooltip_buffer->insert_with_tag(tooltip_buffer->get_insert()->get_iter(), ":\n"+spelling, "def:note");
//TODO: Insert newlines to clang_tu->diagnostics[c].spelling (use 80 chars, then newline?)
return tooltip_buffer; return tooltip_buffer;
}; };
diagnostic_tooltips.emplace_back(create_tooltip_buffer, *this, get_buffer()->create_mark(start), get_buffer()->create_mark(end)); diagnostic_tooltips.emplace_back(create_tooltip_buffer, *this, get_buffer()->create_mark(start), get_buffer()->create_mark(end));

Loading…
Cancel
Save