diff options
| author | Maxime Coste <mawww@kakoune.org> | 2020-11-22 16:52:37 +1100 |
|---|---|---|
| committer | Maxime Coste <mawww@kakoune.org> | 2020-11-22 16:52:37 +1100 |
| commit | a8d43ce6ce310463052d00501bd7092ef56b390c (patch) | |
| tree | 2cb6269d7746443ff5c2f1250879c6e81c6c6997 /src | |
| parent | 644660f65f42c25c594cbd804efabcb16bb67242 (diff) | |
| parent | f3f3f806243efcd15d8000b96119608dd79163ab (diff) | |
Merge remote-tracking branch 'AndrewVos/ignore-indent-on-line-completion'
Diffstat (limited to 'src')
| -rw-r--r-- | src/insert_completer.cc | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/src/insert_completer.cc b/src/insert_completer.cc index ca6b08a1..43a4fc61 100644 --- a/src/insert_completer.cc +++ b/src/insert_completer.cc @@ -348,7 +348,8 @@ InsertCompletion complete_line(const SelectionList& sels, const ColumnCount tabstop = options["tabstop"].get<int>(); const ColumnCount column = get_column(buffer, tabstop, cursor_pos); - StringView prefix = buffer[cursor_pos.line].substr(0_byte, cursor_pos.column); + StringView prefix = trim_indent(buffer[cursor_pos.line].substr(0_byte, cursor_pos.column)); + BufferCoord replace_begin = buffer.advance(cursor_pos, -prefix.length()); InsertCompletion::CandidateList candidates; auto add_candidates = [&](const Buffer& buf) { @@ -356,12 +357,16 @@ InsertCompletion complete_line(const SelectionList& sels, { if (buf.name() == buffer.name() && l == cursor_pos.line) continue; - const StringView line = buf[l]; + + const StringView line = trim_indent(buf[l]); + + if (line.length() == 0) + continue; + if (prefix == line.substr(0_byte, prefix.length())) { - StringView candidate = line.substr(0_byte, line.length()-1); - candidates.push_back({candidate.str(), "", - {expand_tabs(candidate, tabstop, column), {}}}); + StringView candidate = trim_indent(line.substr(0_byte, line.length())); + candidates.push_back({candidate.str(), "", {expand_tabs(candidate, tabstop, column), {}} }); // perf: it's unlikely the user intends to search among >10 candidates anyway if (candidates.size() == 100) break; @@ -384,7 +389,7 @@ InsertCompletion complete_line(const SelectionList& sels, return {}; std::sort(candidates.begin(), candidates.end()); candidates.erase(std::unique(candidates.begin(), candidates.end()), candidates.end()); - return { std::move(candidates), cursor_pos.line, cursor_pos, buffer.timestamp() }; + return { std::move(candidates), replace_begin, cursor_pos, buffer.timestamp() }; } } |
