summaryrefslogtreecommitdiff
path: root/src/command_manager.cc
diff options
context:
space:
mode:
authorMaxime Coste <mawww@kakoune.org>2021-02-25 20:56:50 +1100
committerMaxime Coste <mawww@kakoune.org>2021-02-25 21:04:06 +1100
commit7c321e121d5910a9316cd04a6c596c1fe95b8bde (patch)
tree4a6f709e70280a593dfaf74b9be22c15f9d02c32 /src/command_manager.cc
parent726b96da6976a4befa1d2aacd20c573f702c0033 (diff)
Tweak requoting behaviour
Only requote when completion is replacing the whole token Do not requote command names as they should not require it, tag them as quoted. Fixes #4061
Diffstat (limited to 'src/command_manager.cc')
-rw-r--r--src/command_manager.cc12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/command_manager.cc b/src/command_manager.cc
index 19f60012..7e0d6503 100644
--- a/src/command_manager.cc
+++ b/src/command_manager.cc
@@ -627,7 +627,7 @@ Completions CommandManager::complete_command_name(const Context& context, String
return {0, query.length(),
Kakoune::complete(query, query.length(), concatenated(commands, aliases)),
- Completions::Flags::Menu | Completions::Flags::NoEmpty};
+ Completions::Flags::Menu | Completions::Flags::NoEmpty | Completions::Flags::Quoted};
}
Completions CommandManager::complete_module_name(StringView query) const
@@ -669,7 +669,8 @@ Completions CommandManager::complete(const Context& context,
const auto& token = tokens.back();
auto requote = [](Completions completions, Token::Type token_type) {
- if (completions.flags & Completions::Flags::Quoted)
+ if ((completions.flags & Completions::Flags::Quoted) or
+ completions.start != 0)
return completions;
if (token_type == Token::Type::Raw)
@@ -682,7 +683,6 @@ Completions CommandManager::complete(const Context& context,
}
else if (token_type == Token::Type::RawQuoted)
{
- kak_assert(completions.start > 0);
--completions.start;
completions.flags |= Completions::Flags::Quoted;
for (auto& c : completions.candidates)
@@ -702,7 +702,7 @@ Completions CommandManager::complete(const Context& context,
token.type == Token::Type::RawQuoted))
{
StringView query = command_line.substr(start, cursor_pos_in_token);
- return requote(offset_pos(complete_command_name(context, query), start), token.type);
+ return offset_pos(complete_command_name(context, query), start);
}
switch (token.type)
@@ -761,9 +761,9 @@ Completions CommandManager::complete(const Context& context,
Vector<String> params;
for (auto it = tokens.begin() + 1; it != tokens.end(); ++it)
params.push_back(it->content);
- return requote(offset_pos(command_it->value.completer(
+ return offset_pos(requote(command_it->value.completer(
context, flags, params, tokens.size() - 2,
- cursor_pos_in_token), start), token.type);
+ cursor_pos_in_token), token.type), start);
}
case Token::Type::RawEval:
default: