mirror of
https://github.com/kristoferssolo/telescope-frecency.nvim.git
synced 2025-10-21 20:10:38 +00:00
add sorter (not working yet)
This commit is contained in:
parent
d1eab0a69c
commit
bcec7dd4b8
@ -18,7 +18,7 @@ local entry_display = require "telescope.pickers.entry_display"
|
|||||||
local finders = require "telescope.finders"
|
local finders = require "telescope.finders"
|
||||||
local pickers = require "telescope.pickers"
|
local pickers = require "telescope.pickers"
|
||||||
local previewers = require "telescope.previewers"
|
local previewers = require "telescope.previewers"
|
||||||
local sorters = require "telescope.sorters"
|
local sorters = require "telescope._extensions.frecency.sorter"
|
||||||
local conf = require('telescope.config').values
|
local conf = require('telescope.config').values
|
||||||
local path = require('telescope.path')
|
local path = require('telescope.path')
|
||||||
local utils = require('telescope.utils')
|
local utils = require('telescope.utils')
|
||||||
@ -72,7 +72,7 @@ local frecency = function(opts)
|
|||||||
end,
|
end,
|
||||||
},
|
},
|
||||||
previewer = conf.file_previewer(opts),
|
previewer = conf.file_previewer(opts),
|
||||||
sorter = sorters.get_generic_fuzzy_sorter(), -- TODO: do we have to have our own sorter? we only want filtering
|
sorter = sorters.get_frecency_sorter()
|
||||||
}):find()
|
}):find()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
29
lua/telescope/_extensions/frecency/sorter.lua
Normal file
29
lua/telescope/_extensions/frecency/sorter.lua
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
local sorters = require "telescope.sorters"
|
||||||
|
|
||||||
|
local my_sorters = {}
|
||||||
|
|
||||||
|
my_sorters.get_frecency_sorter = function(opts)
|
||||||
|
opts = opts or {}
|
||||||
|
opts.ngram_len = 2
|
||||||
|
|
||||||
|
local fuzzy_sorter = sorters.get_generic_fuzzy_sorter(opts)
|
||||||
|
|
||||||
|
local frecency = sorters:new()
|
||||||
|
frecency.scoring_function = function(_, prompt, _, entry)
|
||||||
|
local base_score = fuzzy_sorter:score(prompt, entry)
|
||||||
|
|
||||||
|
if base_score == -1 then
|
||||||
|
return -1
|
||||||
|
end
|
||||||
|
|
||||||
|
if base_score == 0 then
|
||||||
|
return entry.index
|
||||||
|
else
|
||||||
|
return math.min(math.pow(entry.index, 0.25), 2) * base_score
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return frecency
|
||||||
|
end
|
||||||
|
|
||||||
|
return my_sorters
|
||||||
Loading…
Reference in New Issue
Block a user