Auto-insert prompt menu completions on <ret> if any text was entered
Previously we would only auto-insert if the current token had some text, but this breaks auto-selection of the first match. Fixes #3849
This commit is contained in:
parent
f25442fbad
commit
aab0be529f
|
@ -771,16 +771,16 @@ public:
|
||||||
{
|
{
|
||||||
const String& line = m_line_editor.line();
|
const String& line = m_line_editor.line();
|
||||||
|
|
||||||
auto can_auto_insert_completion = [&] {
|
auto can_auto_insert_completion = [&] (bool check_token) {
|
||||||
const bool has_completions = not m_completions.candidates.empty();
|
const bool has_completions = not m_completions.candidates.empty();
|
||||||
const bool completion_selected = m_current_completion != -1;
|
const bool completion_selected = m_current_completion != -1;
|
||||||
const bool text_entered = m_completions.start != line.byte_count_to(m_line_editor.cursor_pos());
|
const bool text_entered = check_token ? m_completions.start != line.byte_count_to(m_line_editor.cursor_pos()) : !line.empty();
|
||||||
return has_completions and not completion_selected and text_entered;
|
return has_completions and not completion_selected and text_entered;
|
||||||
};
|
};
|
||||||
|
|
||||||
if (key == Key::Return)
|
if (key == Key::Return)
|
||||||
{
|
{
|
||||||
if ((m_completions.flags & Completions::Flags::Menu) and can_auto_insert_completion())
|
if ((m_completions.flags & Completions::Flags::Menu) and can_auto_insert_completion(false))
|
||||||
{
|
{
|
||||||
const String& completion = m_completions.candidates.front();
|
const String& completion = m_completions.candidates.front();
|
||||||
m_line_editor.insert_from(line.char_count_to(m_completions.start),
|
m_line_editor.insert_from(line.char_count_to(m_completions.start),
|
||||||
|
@ -999,7 +999,7 @@ public:
|
||||||
if (key == ' ' and
|
if (key == ' ' and
|
||||||
(m_completions.flags & Completions::Flags::Menu) 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
|
not (m_completions.flags & Completions::Flags::Quoted) and // if token is quoted, this space does not end it
|
||||||
can_auto_insert_completion())
|
can_auto_insert_completion(true))
|
||||||
m_line_editor.insert_from(line.char_count_to(m_completions.start),
|
m_line_editor.insert_from(line.char_count_to(m_completions.start),
|
||||||
m_completions.candidates.front());
|
m_completions.candidates.front());
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user