diff options
| author | Maxime Coste <mawww@kakoune.org> | 2020-11-18 19:55:57 +1100 |
|---|---|---|
| committer | Maxime Coste <mawww@kakoune.org> | 2020-11-18 19:56:05 +1100 |
| commit | 161aa918df8c8a927b5c8e13dfe0ec72975895e3 (patch) | |
| tree | 6d6fbdb8bcd1a89732b679d64315dbba390c86a6 /src | |
| parent | cdcf4b0c7d2f5b2bb07bd38599e19b886942cea4 (diff) | |
Restore auto-select on return, add a flag to disable that for commands
Fixes #3849 Again
Diffstat (limited to 'src')
| -rw-r--r-- | src/command_manager.cc | 4 | ||||
| -rw-r--r-- | src/completion.hh | 3 | ||||
| -rw-r--r-- | src/input_handler.cc | 6 |
3 files changed, 9 insertions, 4 deletions
diff --git a/src/command_manager.cc b/src/command_manager.cc index c2da22a2..ca619f7f 100644 --- a/src/command_manager.cc +++ b/src/command_manager.cc @@ -630,7 +630,9 @@ Completions CommandManager::complete_command_name(const Context& context, String auto aliases = context.aliases().flatten_aliases() | transform(&HashItem<String, String>::key); - return {0, query.length(), Kakoune::complete(query, query.length(), concatenated(commands, aliases)), Completions::Flags::Menu}; + return {0, query.length(), + Kakoune::complete(query, query.length(), concatenated(commands, aliases)), + Completions::Flags::Menu | Completions::Flags::NoEmpty}; } Completions CommandManager::complete_module_name(StringView query) const diff --git a/src/completion.hh b/src/completion.hh index 370aec1b..d3aeca2b 100644 --- a/src/completion.hh +++ b/src/completion.hh @@ -22,7 +22,8 @@ struct Completions { None = 0, Quoted = 0b1, - Menu = 0b10 + Menu = 0b10, + NoEmpty = 0b100 }; constexpr friend bool with_bit_ops(Meta::Type<Flags>) { return true; } diff --git a/src/input_handler.cc b/src/input_handler.cc index f4376ae2..ae646aaf 100644 --- a/src/input_handler.cc +++ b/src/input_handler.cc @@ -775,7 +775,10 @@ public: const bool has_completions = not m_completions.candidates.empty(); const bool completion_selected = m_current_completion != -1; const bool text_entered = m_completions.start != line.byte_count_to(m_line_editor.cursor_pos()); - return has_completions and not completion_selected and text_entered; + return (m_completions.flags & Completions::Flags::Menu) and + has_completions and + not completion_selected and + (not (m_completions.flags & Completions::Flags::NoEmpty) or text_entered); }; if (key == Key::Return) @@ -997,7 +1000,6 @@ public: else { if (key == ' ' and - (m_completions.flags & Completions::Flags::Menu) and not (m_completions.flags & Completions::Flags::Quoted) and // if token is quoted, this space does not end it can_auto_insert_completion()) m_line_editor.insert_from(line.char_count_to(m_completions.start), |
