Browse Source

Fixed a bug in find_tab_char_and_size().

merge-requests/365/head
eidheim 10 years ago
parent
commit
756bd0a69c
  1. 14
      src/source.cc

14
src/source.cc

@ -703,7 +703,7 @@ bool Source::View::on_button_press_event(GdkEventButton *event) {
}
std::pair<char, unsigned> Source::View::find_tab_char_and_size() {
const std::regex indent_regex("^([ \t]+).*$");
const std::regex indent_regex("^([ \t]+)(.*)$");
auto size=get_buffer()->get_line_count();
std::unordered_map<char, size_t> tab_chars;
std::unordered_map<unsigned, size_t> tab_sizes;
@ -711,8 +711,17 @@ std::pair<char, unsigned> Source::View::find_tab_char_and_size() {
for(int c=0;c<size;c++) {
auto line=get_line(c);
std::smatch sm;
std::string str;
if(std::regex_match(line, sm, indent_regex)) {
auto str=sm[1].str();
if(sm[2].str().size()==0)
continue;
str=sm[1].str();
}
else {
str="";
if(line.size()==0)
continue;
}
long tab_diff=abs(static_cast<long>(str.size()-last_tab_size));
if(tab_diff>0) {
@ -734,7 +743,6 @@ std::pair<char, unsigned> Source::View::find_tab_char_and_size() {
tab_chars[str[0]]=1;
}
}
}
char found_tab_char=0;
size_t occurences=0;
for(auto &tab_char: tab_chars) {

Loading…
Cancel
Save