From 6de309d492464bd1b46108cda4e984638d9b4526 Mon Sep 17 00:00:00 2001 From: uga-rosa Date: Thu, 8 Jun 2023 09:42:25 +0900 Subject: [PATCH 1/2] Ignore range only cmdline --- lua/cmp_cmdline/init.lua | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/lua/cmp_cmdline/init.lua b/lua/cmp_cmdline/init.lua index 7646701..f80079c 100644 --- a/lua/cmp_cmdline/init.lua +++ b/lua/cmp_cmdline/init.lua @@ -36,9 +36,9 @@ local MODIFIER_REGEX = create_regex({ }, true) local COUNT_RANGE_REGEX = create_regex({ - [=[\s*\%(\d\+\|\$\)\%[,\%(\d\+\|\$\)]\s*]=], - [=[\s*'\%[<,'>]\s*]=], - [=[\s*\%(\d\+\|\$\)\s*]=], + [=[^\s*\%(\d\+\|\$\)\%[,\%(\d\+\|\$\)]\s*$]=], + [=[^\s*'\%[<,'>]\s*$]=], + [=[^\s*\%(\d\+\|\$\)\s*$]=], }, true) local OPTION_NAME_COMPLETION_REGEX = create_regex({ @@ -72,6 +72,11 @@ local definitions = { kind = cmp.lsp.CompletionItemKind.Variable, isIncomplete = true, exec = function(option, arglead, cmdline, force) + -- Ignore range only cmdline. (e.g.: 4, '<,'>) + if not force and COUNT_RANGE_REGEX:match_str(cmdline) then + return {} + end + local _, parsed = pcall(function() local target = cmdline local s, e = COUNT_RANGE_REGEX:match_str(target) @@ -110,11 +115,6 @@ local definitions = { fixed_input = string.sub(arglead, 1, suffix_pos or #arglead) end - -- Ignore prefix only cmdline. (e.g.: 4, '<,'>) - if not force and cmdline == '' then - return {} - end - -- The `vim.fn.getcompletion` does not return `*no*cursorline` option. -- cmp-cmdline corrects `no` prefix for option name. local is_option_name_completion = OPTION_NAME_COMPLETION_REGEX:match_str(cmdline) ~= nil From 02ec99c527156613f391b1a66abfb99c464f8a24 Mon Sep 17 00:00:00 2001 From: uga-rosa Date: Thu, 8 Jun 2023 09:44:45 +0900 Subject: [PATCH 2/2] Create ONLY_RANGE_REGEX; COUNT_RANGE_REGEX is also used elsewhere --- lua/cmp_cmdline/init.lua | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lua/cmp_cmdline/init.lua b/lua/cmp_cmdline/init.lua index f80079c..78bd80d 100644 --- a/lua/cmp_cmdline/init.lua +++ b/lua/cmp_cmdline/init.lua @@ -36,6 +36,12 @@ local MODIFIER_REGEX = create_regex({ }, true) local COUNT_RANGE_REGEX = create_regex({ + [=[\s*\%(\d\+\|\$\)\%[,\%(\d\+\|\$\)]\s*]=], + [=[\s*'\%[<,'>]\s*]=], + [=[\s*\%(\d\+\|\$\)\s*]=], +}, true) + +local ONLY_RANGE_REGEX = create_regex({ [=[^\s*\%(\d\+\|\$\)\%[,\%(\d\+\|\$\)]\s*$]=], [=[^\s*'\%[<,'>]\s*$]=], [=[^\s*\%(\d\+\|\$\)\s*$]=], @@ -73,7 +79,7 @@ local definitions = { isIncomplete = true, exec = function(option, arglead, cmdline, force) -- Ignore range only cmdline. (e.g.: 4, '<,'>) - if not force and COUNT_RANGE_REGEX:match_str(cmdline) then + if not force and ONLY_RANGE_REGEX:match_str(cmdline) then return {} end