mirror of
https://github.com/kristoferssolo/telescope-frecency.nvim.git
synced 2025-10-21 20:10:38 +00:00
fix: use the default filetype for the prompt (#134)
This commit is contained in:
parent
484ee36613
commit
2e9cbda5cf
@ -14,6 +14,7 @@ local uv = vim.loop or vim.uv
|
|||||||
---@field private finder FrecencyFinder
|
---@field private finder FrecencyFinder
|
||||||
---@field private fs FrecencyFS
|
---@field private fs FrecencyFS
|
||||||
---@field private lsp_workspaces string[]
|
---@field private lsp_workspaces string[]
|
||||||
|
---@field private namespace integer
|
||||||
---@field private recency FrecencyRecency
|
---@field private recency FrecencyRecency
|
||||||
---@field private results table[]
|
---@field private results table[]
|
||||||
---@field private workspace string?
|
---@field private workspace string?
|
||||||
@ -48,11 +49,12 @@ Picker.new = function(database, finder, fs, recency, config)
|
|||||||
finder = finder,
|
finder = finder,
|
||||||
fs = fs,
|
fs = fs,
|
||||||
lsp_workspaces = {},
|
lsp_workspaces = {},
|
||||||
|
namespace = vim.api.nvim_create_namespace "frecency",
|
||||||
recency = recency,
|
recency = recency,
|
||||||
results = {},
|
results = {},
|
||||||
}, { __index = Picker })
|
}, { __index = Picker })
|
||||||
local d = self.config.filter_delimiter
|
local d = self.config.filter_delimiter
|
||||||
self.workspace_tag_regex = "^%s*(" .. d .. "(%S+)" .. d .. ")"
|
self.workspace_tag_regex = "^%s*" .. d .. "(%S+)" .. d
|
||||||
return self
|
return self
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -234,13 +236,30 @@ function Picker:on_input_filter_cb(state, picker_opts)
|
|||||||
local filepath_formatter = self:filepath_formatter(picker_opts)
|
local filepath_formatter = self:filepath_formatter(picker_opts)
|
||||||
return function(prompt)
|
return function(prompt)
|
||||||
local workspace
|
local workspace
|
||||||
local matched, tag = prompt:match(self.workspace_tag_regex)
|
local start, finish, tag = prompt:find(self.workspace_tag_regex)
|
||||||
local opts = { prompt = matched and prompt:sub(matched:len() + 1) or prompt }
|
local opts = { prompt = start and prompt:sub(finish + 1) or prompt }
|
||||||
if prompt == "" then
|
if prompt == "" then
|
||||||
workspace = self:get_workspace(picker_opts.cwd, self.config.initial_workspace_tag)
|
workspace = self:get_workspace(picker_opts.cwd, self.config.initial_workspace_tag)
|
||||||
else
|
else
|
||||||
workspace = self:get_workspace(picker_opts.cwd, tag) or self.workspace
|
workspace = self:get_workspace(picker_opts.cwd, tag) or self.workspace
|
||||||
end
|
end
|
||||||
|
local picker = state:get()
|
||||||
|
if picker then
|
||||||
|
local buf = picker.prompt_bufnr
|
||||||
|
vim.api.nvim_buf_clear_namespace(buf, self.namespace, 0, -1)
|
||||||
|
if start then
|
||||||
|
local prefix = picker.prompt_prefix
|
||||||
|
local start_col = #prefix + start - 1
|
||||||
|
local end_col = #prefix + finish
|
||||||
|
vim.api.nvim_buf_set_extmark(
|
||||||
|
buf,
|
||||||
|
self.namespace,
|
||||||
|
0,
|
||||||
|
start_col,
|
||||||
|
{ end_row = 0, end_col = end_col, hl_group = "TelescopeQueryFilter" }
|
||||||
|
)
|
||||||
|
end
|
||||||
|
end
|
||||||
if self.workspace ~= workspace then
|
if self.workspace ~= workspace then
|
||||||
self.workspace = workspace
|
self.workspace = workspace
|
||||||
self.results = self:fetch_results(workspace)
|
self.results = self:fetch_results(workspace)
|
||||||
@ -273,7 +292,6 @@ end
|
|||||||
---@param bufnr integer
|
---@param bufnr integer
|
||||||
---@return nil
|
---@return nil
|
||||||
function Picker:set_prompt_options(bufnr)
|
function Picker:set_prompt_options(bufnr)
|
||||||
vim.bo[bufnr].filetype = "frecency"
|
|
||||||
vim.bo[bufnr].completefunc = "v:lua.require'telescope'.extensions.frecency.complete"
|
vim.bo[bufnr].completefunc = "v:lua.require'telescope'.extensions.frecency.complete"
|
||||||
vim.keymap.set("i", "<Tab>", "pumvisible() ? '<C-n>' : '<C-x><C-u>'", { buffer = bufnr, expr = true })
|
vim.keymap.set("i", "<Tab>", "pumvisible() ? '<C-n>' : '<C-x><C-u>'", { buffer = bufnr, expr = true })
|
||||||
vim.keymap.set("i", "<S-Tab>", "pumvisible() ? '<C-p>' : ''", { buffer = bufnr, expr = true })
|
vim.keymap.set("i", "<S-Tab>", "pumvisible() ? '<C-p>' : ''", { buffer = bufnr, expr = true })
|
||||||
|
|||||||
@ -122,6 +122,8 @@ function PlenaryAsyncUtil.sleep(ms) end
|
|||||||
---@field clear_extra_rows fun(self: TelescopePicker, results_bufnr: integer): nil
|
---@field clear_extra_rows fun(self: TelescopePicker, results_bufnr: integer): nil
|
||||||
---@field get_row fun(self: TelescopePicker, index: integer): integer
|
---@field get_row fun(self: TelescopePicker, index: integer): integer
|
||||||
---@field manager TelescopeEntryManager|false
|
---@field manager TelescopeEntryManager|false
|
||||||
|
---@field prompt_bufnr integer
|
||||||
|
---@field prompt_prefix string
|
||||||
---@field results_bufnr integer?
|
---@field results_bufnr integer?
|
||||||
---@field results_win integer?
|
---@field results_win integer?
|
||||||
---@field sorting_strategy 'ascending'|'descending'
|
---@field sorting_strategy 'ascending'|'descending'
|
||||||
|
|||||||
@ -1,5 +0,0 @@
|
|||||||
if exists('b:current_syntax') | finish| endif
|
|
||||||
|
|
||||||
syntax match WorkspaceFilter /:.\{-}:/
|
|
||||||
hi def link WorkspaceFilter TelescopeQueryFilter
|
|
||||||
|
|
||||||
Loading…
Reference in New Issue
Block a user