diff --git a/lua/libmodal/src/Prompt.lua b/lua/libmodal/src/Prompt.lua index 0e70ba1..f270b82 100644 --- a/lua/libmodal/src/Prompt.lua +++ b/lua/libmodal/src/Prompt.lua @@ -123,57 +123,6 @@ end */ --]] ------------------------------------------------------- ---[[ SUMMARY: - * Provide completions for a `libmodal.prompt`. -]] ---[[ PARAMS: - * `completions` => the list of completions. -]] ---[[ RETURNS: - * A function that accepts: - * `argLead` => the current line being edited, stops at the cursor. - * `cmdLine` => the current line being edited - * `cursorPos` => the position of the cursor - * Used for `input()` VimL. -]] ------------------------------------------------------- -function Prompt.createCompletionsProvider(completions) - return function(argLead, cmdLine, _) - if string.len(cmdLine) < 1 then return completions - end - - -- replace conjoining characters with spaces. - local spacedArgLead = argLead - for _, replacement in ipairs(_REPLACEMENTS) do - -- _REPLACEMENTS are already `vim.pesc`aped - spacedArgLead, _ = string.gsub(spacedArgLead, replacement, ' ') - end - - -- split the spaced version of `argLead`. - local splitArgLead = vim.split(spacedArgLead, ' ', true) - - --[[ make sure the user is in a position were this function - will provide accurate completions.]] - if #splitArgLead > 1 then return nil - end - - -- get the word selected by the user. (don't compare case) - local word = string.upper(splitArgLead[1]) - - -- get all matches from the completions list. - local matches = {} - for _, completion in ipairs(completions) do - -- test if `word` is inside of `completions`:`v`, ignoring case. - local escapedCompletion, _ = vim.pesc(string.upper(completion)) - if string.match(escapedCompletion, word) then - matches[#matches + 1] = completion -- preserve case when providing completions. - end - end - return matches - end -end - ------------------------------------------- --[[ SUMMARY: * Enter a prompt.