feat: Add ability to configure default sorters
This commit is contained in:
11
README.md
11
README.md
@@ -115,12 +115,21 @@ nnoremap <Leader>en <cmd>lua require'telescope.builtin'.find_files{ cwd = "~/.co
|
|||||||
|
|
||||||
Find all the files in your nvim config.
|
Find all the files in your nvim config.
|
||||||
|
|
||||||
|
### Available keys for `defaults`
|
||||||
|
|
||||||
|
- `generic_sorter`:
|
||||||
|
- Description: The sorter to be used for generic searches.
|
||||||
|
- `default`: `require('telescope.sorters').get_generic_fuzzy_sorter
|
||||||
|
- `file_sorter`:
|
||||||
|
- Description: The sorter to be used for file based searches.
|
||||||
|
- `default`: `require('telescope.sorters').get_fuzzy_file
|
||||||
|
|
||||||
### Full Example
|
### Full Example
|
||||||
|
|
||||||
```vim
|
```vim
|
||||||
lua <<EOF
|
lua <<EOF
|
||||||
-- totally optional to use setup
|
-- totally optional to use setup
|
||||||
require('telescope').setup{
|
require('telescope').setup {
|
||||||
defaults = {
|
defaults = {
|
||||||
shorten_path = false -- currently the default value is true
|
shorten_path = false -- currently the default value is true
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -52,18 +52,19 @@ builtin.git_files = function(opts)
|
|||||||
--- Find root of git directory and remove trailing newline characters
|
--- Find root of git directory and remove trailing newline characters
|
||||||
opts.cwd = string.gsub(vim.fn.system("git rev-parse --show-toplevel"), '[\n\r]+', '')
|
opts.cwd = string.gsub(vim.fn.system("git rev-parse --show-toplevel"), '[\n\r]+', '')
|
||||||
end
|
end
|
||||||
|
|
||||||
-- By creating the entry maker after the cwd options,
|
-- By creating the entry maker after the cwd options,
|
||||||
-- we ensure the maker uses the cwd options when being created.
|
-- we ensure the maker uses the cwd options when being created.
|
||||||
opts.entry_maker = opts.entry_maker or make_entry.gen_from_file(opts)
|
opts.entry_maker = opts.entry_maker or make_entry.gen_from_file(opts)
|
||||||
|
|
||||||
pickers.new(opts, {
|
pickers.new(opts, {
|
||||||
prompt_title = 'Git File',
|
prompt_title = 'Git File',
|
||||||
finder = finders.new_oneshot_job(
|
finder = finders.new_oneshot_job(
|
||||||
{ "git", "ls-tree", "--full-tree", "-r", "--name-only", "HEAD" },
|
{ "git", "ls-tree", "--full-tree", "-r", "--name-only", "HEAD" },
|
||||||
opts
|
opts
|
||||||
),
|
),
|
||||||
previewer = previewers.cat.new(opts),
|
previewer = previewers.cat.new(opts),
|
||||||
sorter = sorters.get_fuzzy_file(),
|
sorter = conf.file_sorter(opts),
|
||||||
}):find()
|
}):find()
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -90,7 +91,7 @@ builtin.commands = function()
|
|||||||
}
|
}
|
||||||
end
|
end
|
||||||
},
|
},
|
||||||
sorter = sorters.get_generic_fuzzy_sorter(),
|
sorter = conf.generic_sorter(),
|
||||||
attach_mappings = function(prompt_bufnr, map)
|
attach_mappings = function(prompt_bufnr, map)
|
||||||
local run_command = function()
|
local run_command = function()
|
||||||
local selection = actions.get_selected_entry(prompt_bufnr)
|
local selection = actions.get_selected_entry(prompt_bufnr)
|
||||||
@@ -133,9 +134,9 @@ builtin.live_grep = function(opts)
|
|||||||
|
|
||||||
pickers.new(opts, {
|
pickers.new(opts, {
|
||||||
prompt_title = 'Live Grep',
|
prompt_title = 'Live Grep',
|
||||||
finder = live_grepper,
|
finder = live_grepper,
|
||||||
previewer = previewers.vimgrep.new(opts),
|
previewer = previewers.vimgrep.new(opts),
|
||||||
sorter = sorters.get_generic_fuzzy_sorter(),
|
sorter = conf.generic_sorter(opts),
|
||||||
}):find()
|
}):find()
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -165,7 +166,7 @@ builtin.lsp_references = function(opts)
|
|||||||
entry_maker = make_entry.gen_from_quickfix(opts),
|
entry_maker = make_entry.gen_from_quickfix(opts),
|
||||||
},
|
},
|
||||||
previewer = previewers.qflist.new(opts),
|
previewer = previewers.qflist.new(opts),
|
||||||
sorter = sorters.get_generic_fuzzy_sorter(),
|
sorter = conf.generic_sorter(opts),
|
||||||
}):find()
|
}):find()
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -196,7 +197,7 @@ builtin.lsp_document_symbols = function(opts)
|
|||||||
entry_maker = make_entry.gen_from_quickfix(opts)
|
entry_maker = make_entry.gen_from_quickfix(opts)
|
||||||
},
|
},
|
||||||
previewer = previewers.vim_buffer.new(opts),
|
previewer = previewers.vim_buffer.new(opts),
|
||||||
sorter = sorters.get_generic_fuzzy_sorter(),
|
sorter = conf.generic_sorter(opts),
|
||||||
}):find()
|
}):find()
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -268,7 +269,7 @@ builtin.lsp_code_actions = function(opts)
|
|||||||
|
|
||||||
return true
|
return true
|
||||||
end,
|
end,
|
||||||
sorter = sorters.get_generic_fuzzy_sorter(),
|
sorter = conf.generic_sorter(opts),
|
||||||
}):find()
|
}):find()
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -302,7 +303,7 @@ builtin.lsp_workspace_symbols = function(opts)
|
|||||||
entry_maker = make_entry.gen_from_quickfix(opts)
|
entry_maker = make_entry.gen_from_quickfix(opts)
|
||||||
},
|
},
|
||||||
previewer = previewers.qflist.new(opts),
|
previewer = previewers.qflist.new(opts),
|
||||||
sorter = sorters.get_generic_fuzzy_sorter(),
|
sorter = conf.generic_sorter(opts),
|
||||||
}):find()
|
}):find()
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -322,7 +323,7 @@ builtin.quickfix = function(opts)
|
|||||||
entry_maker = make_entry.gen_from_quickfix(opts),
|
entry_maker = make_entry.gen_from_quickfix(opts),
|
||||||
},
|
},
|
||||||
previewer = previewers.qflist.new(opts),
|
previewer = previewers.qflist.new(opts),
|
||||||
sorter = sorters.get_generic_fuzzy_sorter(),
|
sorter = conf.generic_sorter(opts),
|
||||||
}):find()
|
}):find()
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -345,7 +346,7 @@ builtin.loclist = function(opts)
|
|||||||
entry_maker = make_entry.gen_from_quickfix(opts),
|
entry_maker = make_entry.gen_from_quickfix(opts),
|
||||||
},
|
},
|
||||||
previewer = previewers.qflist.new(opts),
|
previewer = previewers.qflist.new(opts),
|
||||||
sorter = sorters.get_generic_fuzzy_sorter(),
|
sorter = conf.generic_sorter(opts),
|
||||||
}):find()
|
}):find()
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -367,7 +368,7 @@ builtin.grep_string = function(opts)
|
|||||||
opts
|
opts
|
||||||
),
|
),
|
||||||
previewer = previewers.vimgrep.new(opts),
|
previewer = previewers.vimgrep.new(opts),
|
||||||
sorter = sorters.get_generic_fuzzy_sorter(),
|
sorter = conf.generic_sorter(opts),
|
||||||
}):find()
|
}):find()
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -379,7 +380,7 @@ builtin.oldfiles = function(opts)
|
|||||||
finder = finders.new_table(vim.tbl_filter(function(val)
|
finder = finders.new_table(vim.tbl_filter(function(val)
|
||||||
return 0 ~= vim.fn.filereadable(val)
|
return 0 ~= vim.fn.filereadable(val)
|
||||||
end, vim.v.oldfiles)),
|
end, vim.v.oldfiles)),
|
||||||
sorter = sorters.get_fuzzy_file(),
|
sorter = conf.file_sorter(opts),
|
||||||
previewer = previewers.cat.new(opts),
|
previewer = previewers.cat.new(opts),
|
||||||
}):find()
|
}):find()
|
||||||
end
|
end
|
||||||
@@ -433,7 +434,7 @@ builtin.help_tags = function(opts)
|
|||||||
},
|
},
|
||||||
-- TODO: previewer for Vim help
|
-- TODO: previewer for Vim help
|
||||||
previewer = previewers.help.new(opts),
|
previewer = previewers.help.new(opts),
|
||||||
sorter = sorters.get_generic_fuzzy_sorter(),
|
sorter = conf.generic_sorter(opts),
|
||||||
attach_mappings = function(prompt_bufnr, map)
|
attach_mappings = function(prompt_bufnr, map)
|
||||||
local view_help = function()
|
local view_help = function()
|
||||||
local selection = actions.get_selected_entry(prompt_bufnr)
|
local selection = actions.get_selected_entry(prompt_bufnr)
|
||||||
@@ -471,7 +472,7 @@ builtin.reloader = function(opts)
|
|||||||
entry_maker = make_entry.gen_from_packages(opts),
|
entry_maker = make_entry.gen_from_packages(opts),
|
||||||
},
|
},
|
||||||
-- previewer = previewers.vim_buffer.new(opts),
|
-- previewer = previewers.vim_buffer.new(opts),
|
||||||
sorter = sorters.get_generic_fuzzy_sorter(),
|
sorter = conf.generic_sorter(opts),
|
||||||
|
|
||||||
attach_mappings = function(prompt_bufnr, map)
|
attach_mappings = function(prompt_bufnr, map)
|
||||||
local reload_package = function()
|
local reload_package = function()
|
||||||
@@ -521,7 +522,7 @@ builtin.builtin = function(opts)
|
|||||||
entry_maker = make_entry.gen_from_quickfix(opts),
|
entry_maker = make_entry.gen_from_quickfix(opts),
|
||||||
},
|
},
|
||||||
previewer = previewers.qflist.new(opts),
|
previewer = previewers.qflist.new(opts),
|
||||||
sorter = sorters.get_generic_fuzzy_sorter(),
|
sorter = conf.generic_sorter(opts),
|
||||||
}):find()
|
}):find()
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -563,7 +564,7 @@ builtin.find_files = function(opts)
|
|||||||
opts
|
opts
|
||||||
),
|
),
|
||||||
previewer = previewers.cat.new(opts),
|
previewer = previewers.cat.new(opts),
|
||||||
sorter = sorters.get_fuzzy_file(opts),
|
sorter = conf.file_sorter(opts),
|
||||||
}):find()
|
}):find()
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -597,7 +598,7 @@ builtin.buffers = function(opts)
|
|||||||
},
|
},
|
||||||
-- previewer = previewers.vim_buffer.new(opts),
|
-- previewer = previewers.vim_buffer.new(opts),
|
||||||
previewer = previewers.vimgrep.new(opts),
|
previewer = previewers.vimgrep.new(opts),
|
||||||
sorter = sorters.get_generic_fuzzy_sorter(),
|
sorter = conf.generic_sorter(opts),
|
||||||
}):find()
|
}):find()
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -655,7 +656,7 @@ builtin.treesitter = function(opts)
|
|||||||
entry_maker = make_entry.gen_from_treesitter(opts)
|
entry_maker = make_entry.gen_from_treesitter(opts)
|
||||||
},
|
},
|
||||||
previewer = previewers.vim_buffer.new(opts),
|
previewer = previewers.vim_buffer.new(opts),
|
||||||
sorter = sorters.get_generic_fuzzy_sorter(),
|
sorter = conf.generic_sorter(opts),
|
||||||
}):find()
|
}):find()
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -688,7 +689,7 @@ builtin.planets = function(opts)
|
|||||||
end
|
end
|
||||||
},
|
},
|
||||||
previewer = previewers.cat.new(opts),
|
previewer = previewers.cat.new(opts),
|
||||||
sorter = sorters.get_generic_fuzzy_sorter(),
|
sorter = conf.generic_sorter(opts),
|
||||||
attach_mappings = function(prompt_bufnr, map)
|
attach_mappings = function(prompt_bufnr, map)
|
||||||
map('i', '<CR>', function()
|
map('i', '<CR>', function()
|
||||||
local selection = actions.get_selected_entry(prompt_bufnr)
|
local selection = actions.get_selected_entry(prompt_bufnr)
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ local function first_non_null(...)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local actions = require('telescope.actions')
|
local sorters = require('telescope.sorters')
|
||||||
|
|
||||||
-- TODO: Add other major configuration points here.
|
-- TODO: Add other major configuration points here.
|
||||||
-- selection_strategy
|
-- selection_strategy
|
||||||
@@ -81,12 +81,8 @@ function config.set_defaults(defaults)
|
|||||||
set("mappings", {})
|
set("mappings", {})
|
||||||
set("default_mappings", nil)
|
set("default_mappings", nil)
|
||||||
|
|
||||||
-- NOT STABLE. DO NOT USE
|
set("generic_sorter", sorters.get_generic_fuzzy_sorter)
|
||||||
set("horizontal_config", {
|
set("file_sorter", sorters.get_fuzzy_file)
|
||||||
get_preview_width = function(columns, _)
|
|
||||||
return math.floor(columns * 0.75)
|
|
||||||
end,
|
|
||||||
})
|
|
||||||
end
|
end
|
||||||
|
|
||||||
function config.clear_defaults()
|
function config.clear_defaults()
|
||||||
|
|||||||
Reference in New Issue
Block a user