improve substr matcher

This commit is contained in:
Senghan Bright 2021-01-17 12:59:20 +01:00
parent 0e606ebfca
commit dc37ed8dd0
3 changed files with 10 additions and 17 deletions

View File

@ -9,6 +9,7 @@ end
local db_client = require("telescope._extensions.frecency.db_client")
-- vim.defer_fn(db_client.init, 100) -- TODO: this is a crappy attempt to lessen loadtime impact, use VimEnter?
db_client.init()
local os_path_sep = vim.loop.os_uname().sysname == "Windows" and "\\" or "/"
-- finder code
@ -32,8 +33,6 @@ local frecency = function(opts)
-- TODO: decide on how to handle cwd or lsp_workspace for pathname shorten?
local results = db_client.get_file_scores(opts) -- TODO: pass `filter_workspace` option
local os_path_sep = vim.loop.os_uname().sysname == "Windows" and "\\" or "/"
local displayer = entry_display.create {
separator = "",
hl_chars = {[os_path_sep] = "TelescopePathSeparator"},
@ -49,7 +48,6 @@ local frecency = function(opts)
local buf_is_loaded = vim.api.nvim_buf_is_loaded
local filename = entry.name
local hl_filename = buf_is_loaded(bufnr(filename)) and "TelescopeBufferLoaded" or ""
if opts.tail_path then
@ -60,8 +58,6 @@ local frecency = function(opts)
filename = path.make_relative(filename, cwd)
-- TODO: remove score from display; only there for debug
return displayer {
{entry.score, "Directory"},
{filename, hl_filename},

View File

@ -36,20 +36,17 @@ my_sorters.get_substr_matcher = function(opts)
substr.scoring_function = function(_, prompt, _, entry)
local display = entry.name:lower()
local search_terms = util.split(prompt, " ")
local matched
local search_terms = util.split(prompt, "%s")
local matched = 0
local total_search_terms = 0
for _, word in pairs(search_terms) do
matched = display:find(word, 1, true) and 1 or -1
if matched == -1 then goto continue end
total_search_terms = total_search_terms + 1
if display:find(word, 1, true) then
matched = matched + 1
end
end
::continue::
if matched == -1 then
return -1
else
return entry.index
end
return matched == total_search_terms and entry.index or -1
end
return substr

View File

@ -34,7 +34,7 @@ end
util.split = function(str, delimiter)
local result = {}
for match in (str .. delimiter):gmatch("(.-)" .. delimiter) do
for match in str:gmatch("[^" .. delimiter .. "]+") do
table.insert(result, match)
end
return result