summaryrefslogtreecommitdiff
path: root/lua
diff options
context:
space:
mode:
Diffstat (limited to 'lua')
-rw-r--r--lua/telescope/config.lua60
-rw-r--r--lua/telescope/mappings.lua69
-rw-r--r--lua/telescope/pickers.lua2
3 files changed, 81 insertions, 50 deletions
diff --git a/lua/telescope/config.lua b/lua/telescope/config.lua
index 9e1ba25..82cd158 100644
--- a/lua/telescope/config.lua
+++ b/lua/telescope/config.lua
@@ -59,52 +59,24 @@ function config.set_defaults(defaults)
-- Last argument will be the search term (passed in during execution)
set("vimgrep_arguments", {'rg', '--color=never', '--no-heading', '--with-filename', '--line-number', '--column', '--smart-case'})
- -- TODO: Shortenpath
- -- Decide how to propagate that to all the opts everywhere.
-
-- TODO: Add motions to keybindings
- -- TODO: Add relative line numbers?
- set("default_mappings", {
- i = {
- ["<C-n>"] = actions.move_selection_next,
- ["<C-p>"] = actions.move_selection_previous,
-
- ["<C-c>"] = actions.close,
-
- ["<Down>"] = actions.move_selection_next,
- ["<Up>"] = actions.move_selection_previous,
-
- ["<CR>"] = actions.goto_file_selection_edit,
- ["<C-x>"] = actions.goto_file_selection_split,
- ["<C-v>"] = actions.goto_file_selection_vsplit,
- ["<C-t>"] = actions.goto_file_selection_tabedit,
-
- ["<C-u>"] = actions.preview_scrolling_up,
- ["<C-d>"] = actions.preview_scrolling_down,
-
- -- TODO: When we implement multi-select, you can turn this back on :)
- -- ["<Tab>"] = actions.add_selection,
- },
-
- n = {
- ["<esc>"] = actions.close,
- ["<CR>"] = actions.goto_file_selection_edit,
- ["<C-x>"] = actions.goto_file_selection_split,
- ["<C-v>"] = actions.goto_file_selection_vsplit,
- ["<C-t>"] = actions.goto_file_selection_tabedit,
-
- -- TODO: This would be weird if we switch the ordering.
- ["j"] = actions.move_selection_next,
- ["k"] = actions.move_selection_previous,
-
- ["<Down>"] = actions.move_selection_next,
- ["<Up>"] = actions.move_selection_previous,
-
- ["<C-u>"] = actions.preview_scrolling_up,
- ["<C-d>"] = actions.preview_scrolling_down,
- },
- })
+ -- To disable a keymap, put [map] = false
+ -- So, to not map "<C-n>", just put
+ --
+ -- ...,
+ -- ["<C-n>"] = false,
+ -- ...,
+ --
+ -- Into your config.
+ --
+ -- Otherwise, just set the mapping to the function that you want it to be.
+ --
+ -- ...,
+ -- ["<C-i>"] = actions.goto_file_selection_split
+ -- ...,
+ --
+ set("mappings", {})
-- NOT STABLE. DO NOT USE
set("horizontal_config", {
diff --git a/lua/telescope/mappings.lua b/lua/telescope/mappings.lua
index 8d9dd65..5abe098 100644
--- a/lua/telescope/mappings.lua
+++ b/lua/telescope/mappings.lua
@@ -1,8 +1,51 @@
-- TODO: Customize keymap
local a = vim.api
+local actions = require('telescope.actions')
+
local mappings = {}
+mappings.default_mappings = {
+ i = {
+ ["<C-n>"] = actions.move_selection_next,
+ ["<C-p>"] = actions.move_selection_previous,
+
+ ["<C-c>"] = actions.close,
+
+ ["<Down>"] = actions.move_selection_next,
+ ["<Up>"] = actions.move_selection_previous,
+
+ ["<CR>"] = actions.goto_file_selection_edit,
+ ["<C-x>"] = actions.goto_file_selection_split,
+ ["<C-v>"] = actions.goto_file_selection_vsplit,
+ ["<C-t>"] = actions.goto_file_selection_tabedit,
+
+ ["<C-u>"] = actions.preview_scrolling_up,
+ ["<C-d>"] = actions.preview_scrolling_down,
+
+ -- TODO: When we implement multi-select, you can turn this back on :)
+ -- ["<Tab>"] = actions.add_selection,
+ },
+
+ n = {
+ ["<esc>"] = actions.close,
+ ["<CR>"] = actions.goto_file_selection_edit,
+ ["<C-x>"] = actions.goto_file_selection_split,
+ ["<C-v>"] = actions.goto_file_selection_vsplit,
+ ["<C-t>"] = actions.goto_file_selection_tabedit,
+
+ -- TODO: This would be weird if we switch the ordering.
+ ["j"] = actions.move_selection_next,
+ ["k"] = actions.move_selection_previous,
+
+ ["<Down>"] = actions.move_selection_next,
+ ["<Up>"] = actions.move_selection_previous,
+
+ ["<C-u>"] = actions.preview_scrolling_up,
+ ["<C-d>"] = actions.preview_scrolling_down,
+ },
+ }
+
local keymap_store = setmetatable({}, {
__index = function(t, k)
rawset(t, k, {})
@@ -46,6 +89,10 @@ mappings.apply_keymap(42, <function>, {
})
--]]
local telescope_map = function(prompt_bufnr, mode, key_bind, key_func, opts)
+ if not key_func then
+ return
+ end
+
opts = opts or {
silent = true
}
@@ -98,7 +145,7 @@ mappings.apply_keymap = function(prompt_bufnr, attach_mappings, buffer_keymap)
local applied_mappings = { n = {}, i = {} }
local map = function(mode, key_bind, key_func, opts)
- local mode = string.lower(mode)
+ mode = string.lower(mode)
local key_bind_internal = a.nvim_replace_termcodes(key_bind, true, true, true)
applied_mappings[mode][key_bind_internal] = true
@@ -109,14 +156,26 @@ mappings.apply_keymap = function(prompt_bufnr, attach_mappings, buffer_keymap)
return
end
- for mode, mode_map in pairs(buffer_keymap) do
- local mode = string.lower(mode)
- -- TODO: Probalby should not overwrite any keymaps
- -- local buffer_keymaps
+ for mode, mode_map in pairs(buffer_keymap or {}) do
+ mode = string.lower(mode)
+
+ for key_bind, key_func in pairs(mode_map) do
+ local key_bind_internal = a.nvim_replace_termcodes(key_bind, true, true, true)
+ if not applied_mappings[mode][key_bind_internal] then
+ applied_mappings[mode][key_bind_internal] = true
+ telescope_map(prompt_bufnr, mode, key_bind, key_func)
+ end
+ end
+ end
+
+ -- TODO: Probalby should not overwrite any keymaps
+ for mode, mode_map in pairs(mappings.default_mappings) do
+ mode = string.lower(mode)
for key_bind, key_func in pairs(mode_map) do
local key_bind_internal = a.nvim_replace_termcodes(key_bind, true, true, true)
if not applied_mappings[mode][key_bind_internal] then
+ applied_mappings[mode][key_bind_internal] = true
telescope_map(prompt_bufnr, mode, key_bind, key_func)
end
end
diff --git a/lua/telescope/pickers.lua b/lua/telescope/pickers.lua
index 9c55e1b..f28ae6a 100644
--- a/lua/telescope/pickers.lua
+++ b/lua/telescope/pickers.lua
@@ -526,7 +526,7 @@ function Picker:find()
picker = self,
}, { __mode = 'kv' }))
- mappings.apply_keymap(prompt_bufnr, self.attach_mappings, config.values.default_mappings)
+ mappings.apply_keymap(prompt_bufnr, self.attach_mappings, config.values.mappings)
-- Do filetype last, so that users can register at the last second.
pcall(a.nvim_buf_set_option, prompt_bufnr, 'filetype', 'TelescopePrompt')