initial
This commit is contained in:
1 parent
4d702fab7e
commit
f0ebf86684
55 files changed
+3839
No files matched your search
@@ -0,0 +1,10 @@
|
||||
vim.opt.termguicolors = true
|
||||
|
||||
local ccc = require('ccc')
|
||||
|
||||
ccc.setup({
|
||||
highlighter = {
|
||||
auto_enable = true,
|
||||
lsp = true,
|
||||
},
|
||||
})
|
||||
@@ -0,0 +1,19 @@
|
||||
local dbee = require('dbee')
|
||||
|
||||
dbee.setup({
|
||||
sources = {
|
||||
require('dbee.sources').EnvSource:new('NVIM_DB'),
|
||||
-- require("dbee.sources").MemorySource:new({
|
||||
-- {
|
||||
-- name = "dbname",
|
||||
-- type = "postgres",
|
||||
-- url = "postgres://pguser:pguser@localhost:5602/dbname?sslmode=disable"
|
||||
-- },
|
||||
-- }),
|
||||
-- require("dbee.sources").FileSource:new(vim.fn.stdpath("cache") .. "/dbee/config.json"),
|
||||
},
|
||||
})
|
||||
|
||||
vim.api.nvim_create_user_command('DBToggle', function()
|
||||
require('dbee').toggle()
|
||||
end, {})
|
||||
@@ -0,0 +1,15 @@
|
||||
local flash = require('flash')
|
||||
local icons = require('lib.icons')
|
||||
|
||||
flash.setup({
|
||||
prompt = {
|
||||
enabled = true,
|
||||
prefix = { { icons.ui.Separator .. icons.ui.Rocket .. icons.ui.ChevronRight .. ' ', 'FlashPromptIcon' } },
|
||||
win_config = { relative = 'editor', width = 1, height = 1, row = 1, col = 0, zindex = 1000 },
|
||||
},
|
||||
modes = {
|
||||
char = {
|
||||
jump_labels = false,
|
||||
},
|
||||
},
|
||||
})
|
||||
@@ -0,0 +1,24 @@
|
||||
local gitlinker = require('gitlinker')
|
||||
|
||||
gitlinker.setup({
|
||||
opts = {
|
||||
remote = nil,
|
||||
add_current_line_on_normal_mode = true,
|
||||
action_callback = require('gitlinker.actions').copy_to_clipboard,
|
||||
print_url = true,
|
||||
},
|
||||
callbacks = {
|
||||
['github.com'] = require('gitlinker.hosts').get_github_type_url,
|
||||
['gitlab.com'] = require('gitlinker.hosts').get_gitlab_type_url,
|
||||
['try.gitea.io'] = require('gitlinker.hosts').get_gitea_type_url,
|
||||
['codeberg.org'] = require('gitlinker.hosts').get_gitea_type_url,
|
||||
['bitbucket.org'] = require('gitlinker.hosts').get_bitbucket_type_url,
|
||||
['try.gogs.io'] = require('gitlinker.hosts').get_gogs_type_url,
|
||||
['git.sr.ht'] = require('gitlinker.hosts').get_srht_type_url,
|
||||
['git.launchpad.net'] = require('gitlinker.hosts').get_launchpad_type_url,
|
||||
['repo.or.cz'] = require('gitlinker.hosts').get_repoorcz_type_url,
|
||||
['git.kernel.org'] = require('gitlinker.hosts').get_cgit_type_url,
|
||||
['git.savannah.gnu.org'] = require('gitlinker.hosts').get_cgit_type_url,
|
||||
},
|
||||
mappings = '<leader>gy',
|
||||
})
|
||||
@@ -0,0 +1,93 @@
|
||||
local gitsigns = require('gitsigns')
|
||||
|
||||
gitsigns.setup({
|
||||
signs = {
|
||||
add = {
|
||||
hl = 'GitSignsAdd',
|
||||
text = '│',
|
||||
numhl = 'GitSignsAddNr',
|
||||
linehl = 'GitSignsAddLn',
|
||||
},
|
||||
change = {
|
||||
hl = 'GitSignsChange',
|
||||
text = '│',
|
||||
numhl = 'GitSignsChangeNr',
|
||||
linehl = 'GitSignsChangeLn',
|
||||
},
|
||||
delete = {
|
||||
hl = 'GitSignsDelete',
|
||||
text = '_',
|
||||
numhl = 'GitSignsDeleteNr',
|
||||
linehl = 'GitSignsDeleteLn',
|
||||
},
|
||||
topdelete = {
|
||||
hl = 'GitSignsDelete',
|
||||
text = '‾',
|
||||
numhl = 'GitSignsDeleteNr',
|
||||
linehl = 'GitSignsDeleteLn',
|
||||
},
|
||||
changedelete = {
|
||||
hl = 'GitSignsChange',
|
||||
text = '~',
|
||||
numhl = 'GitSignsChangeNr',
|
||||
linehl = 'GitSignsChangeLn',
|
||||
},
|
||||
},
|
||||
signcolumn = true,
|
||||
numhl = false,
|
||||
linehl = false,
|
||||
word_diff = false,
|
||||
watch_gitdir = { interval = 1000, follow_files = true },
|
||||
attach_to_untracked = true,
|
||||
current_line_blame = false,
|
||||
current_line_blame_opts = {
|
||||
virt_text = true,
|
||||
virt_text_pos = 'eol',
|
||||
delay = 0,
|
||||
ignore_whitespace = false,
|
||||
},
|
||||
current_line_blame_formatter = '<author>, <author_time:%Y-%m-%d> - <summary>',
|
||||
sign_priority = 6,
|
||||
update_debounce = 100,
|
||||
status_formatter = nil,
|
||||
max_file_length = 40000,
|
||||
preview_config = { border = 'single', style = 'minimal', relative = 'cursor', row = 0, col = 1 },
|
||||
yadm = { enable = false },
|
||||
on_attach = function(bufnr)
|
||||
local gs = package.loaded.gitsigns
|
||||
|
||||
local function map(mode, l, r, opts)
|
||||
opts = opts or {}
|
||||
opts.buffer = bufnr
|
||||
vim.keymap.set(mode, l, r, opts)
|
||||
end
|
||||
|
||||
map('n', ']c', function()
|
||||
if vim.wo.diff then
|
||||
return ']c'
|
||||
end
|
||||
vim.schedule(function()
|
||||
gs.next_hunk()
|
||||
end)
|
||||
return '<Ignore>'
|
||||
end, { expr = true, desc = 'Next Change' })
|
||||
|
||||
map('n', '[c', function()
|
||||
if vim.wo.diff then
|
||||
return '[c'
|
||||
end
|
||||
vim.schedule(function()
|
||||
gs.prev_hunk()
|
||||
end)
|
||||
return '<Ignore>'
|
||||
end, { expr = true, desc = 'Previous Change' })
|
||||
|
||||
map({ 'v' }, '<leader>ga', ':Gitsigns stage_hunk<CR>', { desc = 'Stage Hunk' })
|
||||
map({ 'v' }, '<leader>gr', ':Gitsigns reset_hunk<CR>', { desc = 'Reset Hunk' })
|
||||
map('n', '<leader>gB', function()
|
||||
gs.blame_line({ full = true })
|
||||
end, { desc = 'Blame With Preview' })
|
||||
|
||||
map({ 'o', 'x' }, 'ih', ':<C-U>Gitsigns select_hunk<CR>')
|
||||
end,
|
||||
})
|
||||
@@ -0,0 +1,51 @@
|
||||
local harpoon = require('harpoon')
|
||||
harpoon:setup({})
|
||||
|
||||
local conf = require('telescope.config').values
|
||||
local function toggle_telescope(harpoon_files)
|
||||
local file_paths = {}
|
||||
for _, item in ipairs(harpoon_files.items) do
|
||||
table.insert(file_paths, item.value)
|
||||
end
|
||||
|
||||
require('telescope.pickers')
|
||||
.new({}, {
|
||||
prompt_title = 'Harpoon',
|
||||
finder = require('telescope.finders').new_table({
|
||||
results = file_paths,
|
||||
}),
|
||||
previewer = conf.file_previewer({}),
|
||||
sorter = conf.generic_sorter({}),
|
||||
})
|
||||
:find()
|
||||
end
|
||||
|
||||
vim.keymap.set('n', '<leader>ha', function()
|
||||
harpoon:list():append()
|
||||
end, { desc = 'Add Mark' })
|
||||
vim.keymap.set('n', '<leader>hh', function()
|
||||
toggle_telescope(harpoon:list())
|
||||
end, { desc = 'Telescope Marks' })
|
||||
vim.keymap.set('n', '<leader>hm', function()
|
||||
harpoon.ui:toggle_quick_menu(harpoon:list())
|
||||
end, { desc = 'Open UI' })
|
||||
|
||||
vim.keymap.set('n', '[h', function()
|
||||
harpoon:list():prev()
|
||||
end, { desc = 'Prev Mark' })
|
||||
vim.keymap.set('n', ']h', function()
|
||||
harpoon:list():next()
|
||||
end, { desc = 'Next Mark' })
|
||||
|
||||
vim.keymap.set('n', '<leader>hk', function()
|
||||
harpoon:list():prev()
|
||||
end, { desc = 'Prev Mark' })
|
||||
vim.keymap.set('n', '<leader>hj', function()
|
||||
harpoon:list():next()
|
||||
end, { desc = 'Next Mark' })
|
||||
|
||||
for i = 1, 9 do
|
||||
vim.keymap.set('n', '<leader>h' .. i, function()
|
||||
harpoon:list():select(i)
|
||||
end, { desc = 'Mark ' .. i })
|
||||
end
|
||||
@@ -0,0 +1,8 @@
|
||||
local navigator = require('Navigator')
|
||||
|
||||
navigator.setup({
|
||||
auto_save = 'current',
|
||||
disable_on_zoom = false,
|
||||
mux = 'auto',
|
||||
})
|
||||
|
||||
@@ -0,0 +1,92 @@
|
||||
local nvim_tree = require('nvim-tree')
|
||||
|
||||
local icons = require('lib.icons')
|
||||
|
||||
local function on_attach(bufnr)
|
||||
local api = require('nvim-tree.api')
|
||||
|
||||
local function opts(desc)
|
||||
return {
|
||||
desc = 'nvim-tree: ' .. desc,
|
||||
buffer = bufnr,
|
||||
noremap = true,
|
||||
silent = true,
|
||||
nowait = true,
|
||||
}
|
||||
end
|
||||
|
||||
api.config.mappings.default_on_attach(bufnr)
|
||||
vim.keymap.set('n', 'Y', api.fs.copy.filename, opts('Copy Name'))
|
||||
vim.keymap.set('n', 'y', api.fs.copy.relative_path, opts('Copy Relative Path'))
|
||||
vim.keymap.set('n', 'l', api.node.open.edit, opts('Open'))
|
||||
vim.keymap.set('n', '<CR>', api.node.open.edit, opts('Open'))
|
||||
vim.keymap.set('n', 'h', api.node.navigate.parent_close, opts('Close Directory'))
|
||||
vim.keymap.set('n', 'v', api.node.open.vertical, opts('Open: Vertical Split'))
|
||||
vim.keymap.set('n', 'o', api.node.open.horizontal, opts('Open: Horizontal Split'))
|
||||
end
|
||||
|
||||
nvim_tree.setup({
|
||||
on_attach = on_attach,
|
||||
hijack_directories = { enable = true },
|
||||
update_cwd = true,
|
||||
filters = {},
|
||||
renderer = {
|
||||
add_trailing = false,
|
||||
group_empty = false,
|
||||
highlight_git = false,
|
||||
highlight_opened_files = 'none',
|
||||
root_folder_modifier = ':t',
|
||||
indent_markers = {
|
||||
enable = false,
|
||||
icons = { corner = icons.ui.Corner, edge = icons.ui.Edge, none = icons.ui.Edge },
|
||||
},
|
||||
icons = {
|
||||
webdev_colors = true,
|
||||
git_placement = 'before',
|
||||
padding = ' ',
|
||||
symlink_arrow = icons.ui.Arrow,
|
||||
show = { file = true, folder = true, folder_arrow = true, git = true },
|
||||
glyphs = {
|
||||
default = icons.documents.File,
|
||||
symlink = icons.documents.SymLink,
|
||||
folder = {
|
||||
arrow_open = icons.ui.ArrowOpen,
|
||||
arrow_closed = icons.ui.ArrowClosed,
|
||||
default = icons.documents.Folder,
|
||||
open = icons.documents.OpenFolder,
|
||||
empty = icons.documents.FolderEmpty,
|
||||
empty_open = icons.documents.OpenFolderEmpty,
|
||||
symlink = icons.documents.SymlinkFolder,
|
||||
symlink_open = icons.documents.SymlinkFolder,
|
||||
},
|
||||
git = {
|
||||
unstaged = icons.git.Mod,
|
||||
staged = icons.git.Add,
|
||||
unmerged = icons.git.Diff,
|
||||
renamed = icons.git.Rename,
|
||||
untracked = icons.git.Untrack,
|
||||
deleted = icons.git.Remove,
|
||||
ignored = icons.git.Ignore,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
diagnostics = {
|
||||
enable = true,
|
||||
icons = {
|
||||
hint = icons.diagnostics.Hint,
|
||||
info = icons.diagnostics.Information,
|
||||
warning = icons.diagnostics.Warning,
|
||||
error = icons.diagnostics.Error,
|
||||
},
|
||||
},
|
||||
update_focused_file = { enable = true, update_cwd = true, ignore_list = {} },
|
||||
git = { enable = true, ignore = true, timeout = 500 },
|
||||
view = {
|
||||
width = 40,
|
||||
side = 'left',
|
||||
adaptive_size = true,
|
||||
number = false,
|
||||
relativenumber = false,
|
||||
},
|
||||
})
|
||||
@@ -0,0 +1,24 @@
|
||||
require("oil").setup({
|
||||
use_default_keymaps = false,
|
||||
keymaps = {
|
||||
["q"] = "actions.close",
|
||||
["g?"] = "actions.show_help",
|
||||
["<CR>"] = "actions.select",
|
||||
["<C-\\>"] = "actions.select_split",
|
||||
["<C-enter>"] = "actions.select_vsplit", -- this is used to navigate left
|
||||
["<C-t>"] = "actions.select_tab",
|
||||
["<C-p>"] = "actions.preview",
|
||||
["<C-c>"] = "actions.close",
|
||||
["<C-r>"] = "actions.refresh",
|
||||
["-"] = "actions.parent",
|
||||
["_"] = "actions.open_cwd",
|
||||
["`"] = "actions.cd",
|
||||
["~"] = "actions.tcd",
|
||||
["gs"] = "actions.change_sort",
|
||||
["gx"] = "actions.open_external",
|
||||
["h"] = "actions.toggle_hidden",
|
||||
},
|
||||
view_options = {
|
||||
show_hidden = false,
|
||||
},
|
||||
})
|
||||
@@ -0,0 +1,125 @@
|
||||
local spectre = require('spectre')
|
||||
|
||||
spectre.setup({
|
||||
color_devicons = true,
|
||||
highlight = {
|
||||
ui = 'String',
|
||||
search = 'DiffChange',
|
||||
replace = 'DiffDelete',
|
||||
},
|
||||
mapping = {
|
||||
['toggle_line'] = {
|
||||
map = 't',
|
||||
cmd = "<cmd>lua require('spectre').toggle_line()<CR>",
|
||||
desc = 'toggle current item',
|
||||
},
|
||||
['enter_file'] = {
|
||||
map = '<cr>',
|
||||
cmd = "<cmd>lua require('spectre.actions').select_entry()<CR>",
|
||||
desc = 'goto current file',
|
||||
},
|
||||
['send_to_qf'] = {
|
||||
map = 'Q',
|
||||
cmd = "<cmd>lua require('spectre.actions').send_to_qf()<CR>",
|
||||
desc = 'send all item to quickfix',
|
||||
},
|
||||
['replace_cmd'] = {
|
||||
map = 'c',
|
||||
cmd = "<cmd>lua require('spectre.actions').replace_cmd()<CR>",
|
||||
desc = 'input replace vim command',
|
||||
},
|
||||
['show_option_menu'] = {
|
||||
map = 'o',
|
||||
cmd = "<cmd>lua require('spectre').show_options()<CR>",
|
||||
desc = 'show option',
|
||||
},
|
||||
['run_replace'] = {
|
||||
map = 'R',
|
||||
cmd = "<cmd>lua require('spectre.actions').run_replace()<CR>",
|
||||
desc = 'replace all',
|
||||
},
|
||||
['change_view_mode'] = {
|
||||
map = 'm',
|
||||
cmd = "<cmd>lua require('spectre').change_view()<CR>",
|
||||
desc = 'change result view mode',
|
||||
},
|
||||
['toggle_ignore_case'] = {
|
||||
map = 'I',
|
||||
cmd = "<cmd>lua require('spectre').change_options('ignore-case')<CR>",
|
||||
desc = 'toggle ignore case',
|
||||
},
|
||||
['toggle_ignore_hidden'] = {
|
||||
map = 'H',
|
||||
cmd = "<cmd>lua require('spectre').change_options('hidden')<CR>",
|
||||
desc = 'toggle search hidden',
|
||||
},
|
||||
},
|
||||
find_engine = {
|
||||
['rg'] = {
|
||||
cmd = 'rg',
|
||||
args = {
|
||||
'--color=never',
|
||||
'--no-heading',
|
||||
'--with-filename',
|
||||
'--line-number',
|
||||
'--column',
|
||||
},
|
||||
options = {
|
||||
['ignore-case'] = {
|
||||
value = '--ignore-case',
|
||||
icon = '[I]',
|
||||
desc = 'ignore case',
|
||||
},
|
||||
['hidden'] = {
|
||||
value = '--hidden',
|
||||
desc = 'hidden file',
|
||||
icon = '[H]',
|
||||
},
|
||||
},
|
||||
},
|
||||
['ag'] = {
|
||||
cmd = 'ag',
|
||||
args = {
|
||||
'--vimgrep',
|
||||
'-s',
|
||||
},
|
||||
options = {
|
||||
['ignore-case'] = {
|
||||
value = '-i',
|
||||
icon = '[I]',
|
||||
desc = 'ignore case',
|
||||
},
|
||||
['hidden'] = {
|
||||
value = '--hidden',
|
||||
desc = 'hidden file',
|
||||
icon = '[H]',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
replace_engine = {
|
||||
['sed'] = {
|
||||
cmd = 'sed',
|
||||
args = nil,
|
||||
},
|
||||
options = {
|
||||
['ignore-case'] = {
|
||||
value = '--ignore-case',
|
||||
icon = '[I]',
|
||||
desc = 'ignore case',
|
||||
},
|
||||
},
|
||||
},
|
||||
default = {
|
||||
find = {
|
||||
cmd = 'rg',
|
||||
options = { 'ignore-case' },
|
||||
},
|
||||
replace = {
|
||||
cmd = 'sed',
|
||||
},
|
||||
},
|
||||
replace_vim_cmd = 'cdo',
|
||||
is_open_target_win = true,
|
||||
is_insert_mode = true,
|
||||
})
|
||||
@@ -0,0 +1,10 @@
|
||||
local spider = require('spider')
|
||||
|
||||
spider.setup({
|
||||
skipInsignificantPunctuation = true,
|
||||
})
|
||||
|
||||
vim.keymap.set({ 'n', 'o', 'x' }, 'w', "<cmd>lua require('spider').motion('w')<CR>", { desc = 'Spider-w' })
|
||||
vim.keymap.set({ 'n', 'o', 'x' }, 'e', "<cmd>lua require('spider').motion('e')<CR>", { desc = 'Spider-e' })
|
||||
vim.keymap.set({ 'n', 'o', 'x' }, 'b', "<cmd>lua require('spider').motion('b')<CR>", { desc = 'Spider-b' })
|
||||
vim.keymap.set({ 'n', 'o', 'x' }, 'ge', "<cmd>lua require('spider').motion('ge')<CR>", { desc = 'Spider-ge' })
|
||||
@@ -0,0 +1,22 @@
|
||||
local tabout = require('tabout')
|
||||
|
||||
tabout.setup({
|
||||
tabkey = '<tab>',
|
||||
backwards_tabkey = '<s-tab>',
|
||||
act_as_tab = true,
|
||||
act_as_shift_tab = true,
|
||||
default_tab = '<C-t>',
|
||||
default_shift_tab = '<C-d>',
|
||||
enable_backwards = false,
|
||||
completion = true,
|
||||
tabouts = {
|
||||
{ open = "'", close = "'" },
|
||||
{ open = '"', close = '"' },
|
||||
{ open = '`', close = '`' },
|
||||
{ open = '(', close = ')' },
|
||||
{ open = '[', close = ']' },
|
||||
{ open = '{', close = '}' },
|
||||
},
|
||||
ignore_beginning = true,
|
||||
exclude = { 'markdown' },
|
||||
})
|
||||
@@ -0,0 +1,67 @@
|
||||
local actions = require('telescope.actions')
|
||||
local action_state = require('telescope.actions.state')
|
||||
local transform_mod = require('telescope.actions.mt').transform_mod
|
||||
|
||||
local function multiopen(prompt_bufnr, method)
|
||||
local cmd_map = {
|
||||
vertical = 'vsplit',
|
||||
horizontal = 'split',
|
||||
tab = 'tabe',
|
||||
default = 'edit',
|
||||
}
|
||||
local picker = action_state.get_current_picker(prompt_bufnr)
|
||||
local multi_selection = picker:get_multi_selection()
|
||||
|
||||
if #multi_selection > 0 then
|
||||
require('telescope.pickers').on_close_prompt(prompt_bufnr)
|
||||
pcall(vim.api.nvim_set_current_win, picker.original_win_id)
|
||||
|
||||
for i, entry in ipairs(multi_selection) do
|
||||
local cmd = i == 1 and 'edit' or cmd_map[method]
|
||||
vim.cmd(string.format('%s %s', cmd, entry.value))
|
||||
end
|
||||
else
|
||||
actions['select_' .. method](prompt_bufnr)
|
||||
end
|
||||
end
|
||||
|
||||
local custom_actions = transform_mod({
|
||||
multi_selection_open_vertical = function(prompt_bufnr)
|
||||
multiopen(prompt_bufnr, 'vertical')
|
||||
end,
|
||||
multi_selection_open_horizontal = function(prompt_bufnr)
|
||||
multiopen(prompt_bufnr, 'horizontal')
|
||||
end,
|
||||
multi_selection_open_tab = function(prompt_bufnr)
|
||||
multiopen(prompt_bufnr, 'tab')
|
||||
end,
|
||||
multi_selection_open = function(prompt_bufnr)
|
||||
multiopen(prompt_bufnr, 'default')
|
||||
end,
|
||||
})
|
||||
|
||||
local function stopinsert(callback)
|
||||
return function(prompt_bufnr)
|
||||
vim.cmd.stopinsert()
|
||||
vim.schedule(function()
|
||||
callback(prompt_bufnr)
|
||||
end)
|
||||
end
|
||||
end
|
||||
|
||||
local multi_open_mappings = {
|
||||
i = {
|
||||
['<C-v>'] = stopinsert(custom_actions.multi_selection_open_vertical),
|
||||
['<C-x>'] = stopinsert(custom_actions.multi_selection_open_horizontal),
|
||||
['<C-t>'] = stopinsert(custom_actions.multi_selection_open_tab),
|
||||
['<CR>'] = stopinsert(custom_actions.multi_selection_open),
|
||||
},
|
||||
n = {
|
||||
['<C-v>'] = custom_actions.multi_selection_open_vertical,
|
||||
['<C-x>'] = custom_actions.multi_selection_open_horizontal,
|
||||
['<C-t>'] = custom_actions.multi_selection_open_tab,
|
||||
['<CR>'] = custom_actions.multi_selection_open,
|
||||
},
|
||||
}
|
||||
|
||||
return multi_open_mappings
|
||||
@@ -0,0 +1,163 @@
|
||||
local telescope = require('telescope')
|
||||
local actions = require('telescope.actions')
|
||||
local multi_open_mappings = require('plugins.tools.telescope-multiopen')
|
||||
local icons = require('lib.icons')
|
||||
|
||||
local function flash(prompt_bufnr)
|
||||
require('flash').jump({
|
||||
pattern = '^',
|
||||
label = { after = { 0, 0 } },
|
||||
search = {
|
||||
mode = 'search',
|
||||
exclude = {
|
||||
function(win)
|
||||
return vim.bo[vim.api.nvim_win_get_buf(win)].filetype ~= 'TelescopeResults'
|
||||
end,
|
||||
},
|
||||
},
|
||||
action = function(match)
|
||||
local picker = require('telescope.actions.state').get_current_picker(prompt_bufnr)
|
||||
picker:set_selection(match.pos[1] - 1)
|
||||
end,
|
||||
})
|
||||
end
|
||||
|
||||
telescope.setup({
|
||||
defaults = {
|
||||
layout_config = {
|
||||
height = 0.8,
|
||||
width = 0.9,
|
||||
prompt_position = 'top',
|
||||
bottom_pane = {
|
||||
height = 0.5,
|
||||
preview_width = 0.6,
|
||||
preview_cutoff = 120,
|
||||
},
|
||||
center = {
|
||||
height = 0.4,
|
||||
preview_cutoff = 40,
|
||||
},
|
||||
cursor = {
|
||||
preview_cutoff = 40,
|
||||
preview_width = 0.6,
|
||||
},
|
||||
horizontal = {
|
||||
preview_width = 0.6,
|
||||
preview_cutoff = 120,
|
||||
},
|
||||
vertical = {
|
||||
preview_cutoff = 40,
|
||||
},
|
||||
},
|
||||
prompt_prefix = icons.ui.Telescope .. icons.ui.ChevronRight,
|
||||
selection_caret = icons.ui.Play,
|
||||
multi_icon = icons.ui.Check,
|
||||
path_display = { 'smart' },
|
||||
sorting_strategy = 'ascending',
|
||||
|
||||
mappings = {
|
||||
i = {
|
||||
['<esc>'] = actions.close,
|
||||
['<C-n>'] = actions.cycle_history_next,
|
||||
['<C-p>'] = actions.cycle_history_prev,
|
||||
|
||||
['<C-j>'] = actions.move_selection_next,
|
||||
['<C-k>'] = actions.move_selection_previous,
|
||||
|
||||
['<C-c>'] = actions.close,
|
||||
|
||||
['<Down>'] = actions.move_selection_next,
|
||||
['<Up>'] = actions.move_selection_previous,
|
||||
|
||||
['<CR>'] = actions.select_default,
|
||||
['<C-x>'] = actions.select_horizontal,
|
||||
['<C-v>'] = actions.select_vertical,
|
||||
['<C-t>'] = actions.select_tab,
|
||||
['<C-s>'] = flash,
|
||||
|
||||
['<C-u>'] = actions.preview_scrolling_up,
|
||||
['<C-d>'] = actions.preview_scrolling_down,
|
||||
|
||||
['<PageUp>'] = actions.results_scrolling_up,
|
||||
['<PageDown>'] = actions.results_scrolling_down,
|
||||
|
||||
['<Tab>'] = actions.toggle_selection + actions.move_selection_worse,
|
||||
['<S-Tab>'] = actions.toggle_selection + actions.move_selection_better,
|
||||
['<C-q>'] = actions.send_to_qflist + actions.open_qflist,
|
||||
['<M-q>'] = actions.send_selected_to_qflist + actions.open_qflist,
|
||||
['<C-l>'] = actions.complete_tag,
|
||||
},
|
||||
|
||||
n = {
|
||||
['q'] = actions.close,
|
||||
['<esc>'] = actions.close,
|
||||
['<CR>'] = actions.select_default,
|
||||
['<C-x>'] = actions.select_horizontal,
|
||||
['<C-v>'] = actions.select_vertical,
|
||||
['<C-t>'] = actions.select_tab,
|
||||
['s'] = flash,
|
||||
|
||||
['<Tab>'] = actions.toggle_selection + actions.move_selection_worse,
|
||||
['<S-Tab>'] = actions.toggle_selection + actions.move_selection_better,
|
||||
['<C-q>'] = actions.send_to_qflist + actions.open_qflist,
|
||||
['<M-q>'] = actions.send_selected_to_qflist + actions.open_qflist,
|
||||
|
||||
['j'] = actions.move_selection_next,
|
||||
['k'] = actions.move_selection_previous,
|
||||
['H'] = actions.move_to_top,
|
||||
['M'] = actions.move_to_middle,
|
||||
['L'] = actions.move_to_bottom,
|
||||
|
||||
['<Down>'] = actions.move_selection_next,
|
||||
['<Up>'] = actions.move_selection_previous,
|
||||
['gg'] = actions.move_to_top,
|
||||
['G'] = actions.move_to_bottom,
|
||||
|
||||
['<C-u>'] = actions.preview_scrolling_up,
|
||||
['<C-d>'] = actions.preview_scrolling_down,
|
||||
|
||||
['<PageUp>'] = actions.results_scrolling_up,
|
||||
['<PageDown>'] = actions.results_scrolling_down,
|
||||
|
||||
['?'] = actions.which_key,
|
||||
},
|
||||
},
|
||||
},
|
||||
pickers = {
|
||||
find_files = { mappings = multi_open_mappings },
|
||||
git_files = { mappings = multi_open_mappings },
|
||||
oldfiles = { mappings = multi_open_mappings },
|
||||
},
|
||||
extensions = {
|
||||
fzf = {
|
||||
fuzzy = true,
|
||||
override_generic_sorter = true,
|
||||
override_file_sorter = true,
|
||||
case_mode = 'smart_case',
|
||||
},
|
||||
undo = {
|
||||
use_delta = true,
|
||||
use_custom_command = nil,
|
||||
side_by_side = true,
|
||||
diff_context_lines = vim.o.scrolloff,
|
||||
entry_format = 'state #$ID, $STAT, $TIME',
|
||||
-- time_format = '%d %b %H:%M',
|
||||
mappings = {
|
||||
i = {
|
||||
['<S-cr>'] = require('telescope-undo.actions').yank_additions,
|
||||
['<C-cr>'] = require('telescope-undo.actions').yank_deletions,
|
||||
['<cr>'] = require('telescope-undo.actions').restore,
|
||||
},
|
||||
},
|
||||
},
|
||||
menufacture = { mappings = { main_menu = { [{ 'i', 'n' }] = '<C-e>' } } },
|
||||
},
|
||||
})
|
||||
|
||||
require('telescope').load_extension('fzf')
|
||||
require('telescope').load_extension('menufacture')
|
||||
require('telescope').load_extension('undo')
|
||||
require('telescope').load_extension('harpoon')
|
||||
require('telescope').load_extension('notify')
|
||||
require('telescope').load_extension('refactoring')
|
||||
require('telescope').load_extension('file_browser')
|
||||
@@ -0,0 +1,459 @@
|
||||
local which_key = require('which-key')
|
||||
local icons = require('lib.icons')
|
||||
|
||||
local setup = {
|
||||
plugins = {
|
||||
marks = true,
|
||||
registers = true,
|
||||
spelling = {
|
||||
enabled = true,
|
||||
suggestions = 30,
|
||||
},
|
||||
presets = {
|
||||
operators = true,
|
||||
motions = true,
|
||||
text_objects = true,
|
||||
windows = true,
|
||||
nav = true,
|
||||
z = true,
|
||||
g = true,
|
||||
},
|
||||
},
|
||||
key_labels = {
|
||||
['<leader>'] = icons.ui.Rocket,
|
||||
['<space>'] = '<spc>',
|
||||
['<Tab>'] = '<tab>',
|
||||
},
|
||||
icons = {
|
||||
breadcrumb = icons.ui.ArrowOpen,
|
||||
separator = icons.ui.Arrow,
|
||||
group = '',
|
||||
},
|
||||
popup_mappings = {
|
||||
scroll_down = '<c-d>',
|
||||
scroll_up = '<c-u>',
|
||||
},
|
||||
window = {
|
||||
border = 'shadow',
|
||||
position = 'bottom',
|
||||
margin = { 0, 0, 0, 0 },
|
||||
padding = { 1, 2, 1, 2 },
|
||||
winblend = 10,
|
||||
},
|
||||
layout = {
|
||||
height = { min = 4, max = 24 },
|
||||
width = { min = 20, max = 50 },
|
||||
spacing = 3,
|
||||
align = 'center',
|
||||
},
|
||||
ignore_missing = false,
|
||||
hidden = { '<silent>', '<cmd>', '<Cmd>', '<CR>', '^:', '^ ', '^call ', '^lua ' },
|
||||
show_help = true,
|
||||
show_keys = true,
|
||||
triggers = 'auto',
|
||||
triggers_nowait = {
|
||||
-- marks
|
||||
'`',
|
||||
"'",
|
||||
'g`',
|
||||
"g'",
|
||||
-- registers
|
||||
'"',
|
||||
'<c-r>',
|
||||
-- spelling
|
||||
'z=',
|
||||
},
|
||||
triggers_blacklist = {
|
||||
i = { 'j', 'j' },
|
||||
v = { 'j', 'j' },
|
||||
},
|
||||
}
|
||||
|
||||
local i = {
|
||||
[' '] = 'Whitespace',
|
||||
['"'] = 'Balanced "',
|
||||
["'"] = "Balanced '",
|
||||
['`'] = 'Balanced `',
|
||||
['('] = 'Balanced (',
|
||||
[')'] = 'Balanced ) including white-space',
|
||||
['>'] = 'Balanced > including white-space',
|
||||
['<lt>'] = 'Balanced <',
|
||||
[']'] = 'Balanced ] including white-space',
|
||||
['['] = 'Balanced [',
|
||||
['}'] = 'Balanced } including white-space',
|
||||
['{'] = 'Balanced {',
|
||||
['?'] = 'User Prompt',
|
||||
_ = 'Underscore',
|
||||
a = 'Argument',
|
||||
b = 'Balanced ), ], }',
|
||||
c = 'Class',
|
||||
f = 'Function',
|
||||
o = 'Block, conditional, loop',
|
||||
q = 'Quote `, ", \'',
|
||||
t = 'Tag',
|
||||
}
|
||||
|
||||
local a = vim.deepcopy(i)
|
||||
for k, v in pairs(a) do
|
||||
a[k] = v:gsub(' including.*', '')
|
||||
end
|
||||
|
||||
local ic = vim.deepcopy(i)
|
||||
local ac = vim.deepcopy(a)
|
||||
|
||||
for key, name in pairs({ n = 'Next', l = 'Last' }) do
|
||||
i[key] = vim.tbl_extend('force', { name = 'Inside ' .. name .. ' textobject' }, ic)
|
||||
a[key] = vim.tbl_extend('force', { name = 'Around ' .. name .. ' textobject' }, ac)
|
||||
end
|
||||
|
||||
local opts = {
|
||||
mode = 'n',
|
||||
prefix = '<leader>',
|
||||
buffer = nil,
|
||||
silent = true,
|
||||
noremap = true,
|
||||
nowait = true,
|
||||
}
|
||||
|
||||
local mappings = {
|
||||
[','] = { '<cmd>b#<cr>', icons.ui.History .. 'Recent' },
|
||||
q = { '<cmd>q<cr>', icons.ui.Close .. 'Quit' },
|
||||
Q = { '<cmd>qa!<cr>', icons.ui.Power .. 'Force Quit!' },
|
||||
w = { '<cmd>w<cr>', icons.ui.Save .. 'Save' },
|
||||
x = { '<cmd>x<cr>', icons.ui.Pencil .. 'Write and Quit' },
|
||||
c = {
|
||||
name = icons.ui.NeoVim .. 'Config',
|
||||
c = { '<cmd>CccConvert<cr>', 'Convert Color' },
|
||||
d = { '<cmd>RootDir<cr>', 'Root Directory' },
|
||||
e = { '<cmd>e $MYVIMRC<cr>', 'Edit Config' },
|
||||
f = { '<cmd>lua vim.lsp.buf.format({async = true})<cr>', 'Format File' },
|
||||
F = { '<cmd>retab<cr>', 'Fix Tabs' },
|
||||
i = { vim.show_pos, 'Inspect Position' },
|
||||
l = { '<cmd>:g/^\\s*$/d<cr>', 'Clean Empty Lines' },
|
||||
n = { '<cmd>set relativenumber!<cr>', 'Relative Numbers' },
|
||||
p = { '<cmd>CccPick<cr>', 'Pick Color' },
|
||||
r = { '<cmd>Telescope reloader<cr>', 'Reload Module' },
|
||||
R = { '<cmd>ReloadConfig<cr>', 'Reload Configs' },
|
||||
},
|
||||
b = {
|
||||
name = icons.ui.Bug .. 'Debug',
|
||||
b = { '<cmd>DapToggleBreakpoint<cr>', 'Breakpoint' },
|
||||
c = { '<cmd>DapContinue<cr>', 'Continue' },
|
||||
i = { '<cmd>DapStepInto<cr>', 'Into' },
|
||||
l = { "<cmd>lua require'dap'.run_last()<cr>", 'Last' },
|
||||
o = { '<cmd>DapStepOver<cr>', 'Over' },
|
||||
O = { '<cmd>DapStepOut<cr>', 'Out' },
|
||||
r = { '<cmd>DapToggleRepl<cr>', 'Repl' },
|
||||
R = { '<cmd>DapRestartFrame<cr>', 'Restart Frame' },
|
||||
t = { '<cmd>DapUIToggle<cr>', 'Debugger' },
|
||||
x = { '<cmd>DapTerminate<cr>', 'Exit' },
|
||||
},
|
||||
d = {
|
||||
name = icons.ui.Database .. 'Database',
|
||||
b = { '<cmd>DBToggle<cr>', 'DB Explorer' },
|
||||
j = { '<cmd>lua require("dbee").next()<cr>', 'DB Next' },
|
||||
k = { '<cmd>lua require("dbee").prev()<cr>', 'DB Prev' },
|
||||
s = { '<cmd>lua require("dbee").store("csv", "buffer", { extra_arg = 0 })<cr>', 'To CSV' },
|
||||
S = { '<cmd>lua require("dbee").store("json", "buffer", { extra_arg = 0 })<cr>', 'To JSON' },
|
||||
t = { '<cmd>lua require("dbee").store("table", "buffer", { extra_arg = 0 })<cr>', 'To Table' },
|
||||
},
|
||||
E = {
|
||||
name = icons.documents.OpenFolder .. 'Explorer',
|
||||
e = { '<cmd>NvimTreeToggle<cr>', 'File Explorer' },
|
||||
f = { '<cmd>NvimTreeFindFileToggle<CR>', 'Toggle file explorer on current file' },
|
||||
r = { '<cmd>NvimTreeRefresh<CR>', 'Refresh file explorer' },
|
||||
},
|
||||
f = {
|
||||
name = icons.ui.Telescope .. 'Find',
|
||||
b = { '<cmd>Telescope buffers<cr>', 'Buffers' },
|
||||
B = { '<cmd>Telescope git_branches<cr>', 'Checkout branch' },
|
||||
a = { '<cmd>lua require("telescope").extensions.menufacture.find_files()<cr>', 'All Files' },
|
||||
c = { '<cmd>Telescope git_bcommits<cr>', 'File Commits' },
|
||||
C = { '<cmd>Telescope git_commits<cr>', 'Git Commits' },
|
||||
d = { '<cmd>Telescope file_browser<cr>', 'Browse Folders' },
|
||||
e = { '<cmd>Oil<cr>', 'Dir Editor' },
|
||||
f = { '<cmd>lua require("telescope").extensions.menufacture.git_files()<cr>', 'Find files' },
|
||||
g = { '<cmd>lua require("telescope").extensions.menufacture.live_grep()<cr>', 'Find Text' },
|
||||
G = { '<cmd>lua require("telescope").extensions.menufacture.grep_string()<cr>', 'Find Word' },
|
||||
h = { '<cmd>Telescope help_tags<cr>', 'Help' },
|
||||
H = { '<cmd>Telescope man_pages<cr>', 'Man Pages' },
|
||||
k = { '<cmd>Telescope commands<cr>', 'Commands' },
|
||||
K = { '<cmd>Telescope keymaps<cr>', 'Keymaps' },
|
||||
l = { '<cmd>Telescope resume<cr>', 'Last Search' },
|
||||
L = { '<cmd>Telescope loclist<cr>', 'Location List' },
|
||||
n = { '<cmd>enew<cr>', 'New File' },
|
||||
r = { '<cmd>Telescope oldfiles<cr>', 'Recent Files' },
|
||||
p = { '<cmd>Telescope<cr>', 'Panel' },
|
||||
q = { '<cmd>Telescope quickfix<cr>', 'Quickfix' },
|
||||
s = { '<cmd>Telescope live_grep grep_open_files=true<cr>', 'Find in Open Files' },
|
||||
u = { '<cmd>Telescope undo<cr>', 'Undo History' },
|
||||
['"'] = { '<cmd>Telescope registers<cr>', 'Registers' },
|
||||
['.'] = { '<cmd>Telescope symbols<cr>', 'Emojis' },
|
||||
[','] = { '<cmd>Nerdy<cr>', 'Nerd Glyphs' },
|
||||
},
|
||||
g = {
|
||||
name = icons.git.Octoface .. 'Git',
|
||||
a = { '<cmd>Gitsigns stage_hunk<cr>', 'Stage Hunk' },
|
||||
A = { '<cmd>Gitsigns stage_buffer<cr>', 'Stage Buffer' },
|
||||
b = { '<cmd>Gitsigns blame_line<cr>', 'Blame' },
|
||||
c = { '<cmd>Git<cr>', 'Commit' },
|
||||
C = { '<cmd>CoAuthor<cr>', 'Add Co Author' },
|
||||
d = { '<cmd>Gitsigns preview_hunk<cr>', 'Preview Hunk' },
|
||||
D = { '<cmd>Gitsigns diffthis HEAD<cr>', 'Diff' },
|
||||
g = { '<cmd>Fterm lazygit<cr>', 'Lazygit' },
|
||||
j = { '<cmd>Gitsigns next_hunk<cr>', 'Next Hunk' },
|
||||
k = { '<cmd>Gitsigns prev_hunk<cr>', 'Prev Hunk' },
|
||||
r = { '<cmd>Gitsigns reset_hunk<cr>', 'Reset Hunk' },
|
||||
R = { '<cmd>Gitsigns reset_buffer<cr>', 'Reset Buffer' },
|
||||
s = { '<cmd>Telescope git_status<cr>', 'Changed files' },
|
||||
S = { '<cmd>Telescope git_stash<cr>', 'Stashed Changes' },
|
||||
t = {
|
||||
name = 'Git Toggle',
|
||||
b = { '<cmd>Gitsigns toggle_current_line_blame<cr>', 'Blame' },
|
||||
d = { '<cmd>Gitsigns toggle_deleted<cr>', 'Deleted' },
|
||||
l = { '<cmd>Gitsigns toggle_linehl<cr>', 'Line HL' },
|
||||
n = { '<cmd>Gitsigns toggle_numhl<cr>', 'Number HL' },
|
||||
s = { '<cmd>Gitsigns toggle_signs<cr>', 'Signs' },
|
||||
w = { '<cmd>Gitsigns toggle_word_diff<cr>', 'Word Diff' },
|
||||
},
|
||||
u = { '<cmd>Gitsigns undo_stage_hunk<cr>', 'Undo Stage Hunk' },
|
||||
v = { '<cmd>Gitsigns select_hunk<cr>', 'Select Hunk' },
|
||||
},
|
||||
h = { name = icons.ui.Bookmark .. 'Harpoon' },
|
||||
l = {
|
||||
name = icons.ui.Gear .. 'LSP',
|
||||
a = { '<cmd>Lspsaga code_action<cr>', 'Code Action' },
|
||||
d = { '<cmd>Lspsaga peek_definition<cr>', 'Peek Definition' },
|
||||
D = { '<cmd>Lspsaga goto_definition<cr>', 'Goto Definition' },
|
||||
f = { '<cmd>Lspsaga finder<cr>', 'Finder' },
|
||||
F = { '<cmd>Telescope lsp_references<cr>', 'References' },
|
||||
h = { '<cmd>Lspsaga hover_doc<cr>', 'Hover' },
|
||||
i = { '<cmd>Telescope diagnostics<cr>', 'Diagnostics' },
|
||||
I = { '<cmd>Lspsaga show_workspace_diagnostics<cr>', 'Workspace Diagnostics' },
|
||||
j = { '<cmd>Lspsaga diagnostic_jump_next<cr>', 'Next Diagnostic' },
|
||||
k = { '<cmd>Lspsaga diagnostic_jump_prev<cr>', 'Prev Diagnostic' },
|
||||
l = { "<cmd>lua require('lsp_lines').toggle()<cr>", 'Toggle LSP Lines' },
|
||||
L = { '<cmd>LspInfo<cr>', 'LSP Info' },
|
||||
o = { '<cmd>Lspsaga outline<cr>', 'Outline' },
|
||||
p = { '<cmd>Telescope lsp_incoming_calls<cr>', 'Incoming Calls' },
|
||||
P = { '<cmd>Telescope lsp_outgoing_calls<cr>', 'Outgoing Calls' },
|
||||
r = { '<cmd>Lspsaga rename<cr>', 'Rename' },
|
||||
R = { '<cmd>Lspsaga project_replace<cr>', 'Replace' },
|
||||
s = { '<cmd>Telescope lsp_document_symbols<cr>', 'Document Symbols' },
|
||||
S = { '<cmd>Telescope lsp_dynamic_workspace_symbols<cr>', 'Workspace Symbols' },
|
||||
t = { '<cmd>Lspsaga peek_type_definition<cr>', 'Peek Type Definition' },
|
||||
T = { '<cmd>Lspsaga goto_type_definition<cr>', 'Goto Type Definition' },
|
||||
},
|
||||
m = {
|
||||
name = icons.kind.Field .. 'Modes',
|
||||
c = { '<cmd>CccHighlighterToggle<cr>', 'Highlight Colors' },
|
||||
d = { '<cmd>Dashboard<cr>', 'Dashboard' },
|
||||
h = { '<cmd>Hardtime toggle<cr>', 'Hardtime' },
|
||||
m = { '<cmd>MarkdownPreviewToggle<cr>', 'Markdown Preview' },
|
||||
n = { '<cmd>Telescope notify<cr>', 'Notifications' },
|
||||
r = { '<cmd>%SnipRun<cr>', 'Run File' },
|
||||
s = { '<cmd>set spell!<cr>', 'Spellcheck' },
|
||||
z = { '<cmd>ZenMode<cr>', 'ZenMode' },
|
||||
Z = { '<cmd>Twilight<cr>', 'Twilight' },
|
||||
},
|
||||
n = {
|
||||
name = icons.ui.Note .. 'Notes',
|
||||
d = { '<cmd>Tdo<cr>', "Today's Todo" },
|
||||
e = { '<cmd>TdoEntry<cr>', "Today's Entry" },
|
||||
f = { '<cmd>TdoFiles<cr>', 'All Notes' },
|
||||
g = { '<cmd>TdoFind<cr>', 'Find Notes' },
|
||||
h = { '<cmd>Tdo -1<cr>', "Yesterday's Todo" },
|
||||
j = { "<cmd>put =strftime('%a %d %b %r')<cr>", 'Insert Human Date' },
|
||||
J = { "<cmd>put =strftime('%F')<cr>", 'Insert Date' },
|
||||
k = { "<cmd>put =strftime('%r')<cr>", 'Insert Human Time' },
|
||||
K = { "<cmd>put =strftime('%F-%H-%M')<cr>", 'Insert Time' },
|
||||
l = { '<cmd>Tdo 1<cr>', "Tomorrow's Todo" },
|
||||
n = { '<cmd>TdoNote<cr>', 'New Note' },
|
||||
s = {
|
||||
'<cmd>lua require("tdo").run_with("commit " .. vim.fn.expand("%:p")) vim.notify("Committed!")<cr>',
|
||||
'Commit Note',
|
||||
},
|
||||
t = { '<cmd>TdoTodos<cr>', 'Incomplete Todos' },
|
||||
x = { '<cmd>TdoToggle<cr>', 'Toggle Todo' },
|
||||
},
|
||||
p = {
|
||||
name = icons.ui.Package .. 'Packages',
|
||||
c = { '<cmd>Lazy check<cr>', 'Check' },
|
||||
d = { '<cmd>Lazy debug<cr>', 'Debug' },
|
||||
p = { '<cmd>Lazy<cr>', 'Plugins' },
|
||||
P = { '<cmd>Lazy profile<cr>', 'Profile' },
|
||||
m = { '<cmd>Mason<cr>', 'Mason' },
|
||||
i = { '<cmd>Lazy install<cr>', 'Install' },
|
||||
l = { '<cmd>Lazy log<cr>', 'Log' },
|
||||
r = { '<cmd>Lazy restore<cr>', 'Restore' },
|
||||
s = { '<cmd>Lazy sync<cr>', 'Sync' },
|
||||
u = { '<cmd>Lazy update<cr>', 'Update' },
|
||||
x = { '<cmd>Lazy clean<cr>', 'Clean' },
|
||||
},
|
||||
r = {
|
||||
name = icons.diagnostics.Hint .. 'Refactor',
|
||||
b = { "<cmd>lua require('spectre').open_file_search()<cr>", 'Replace Buffer' },
|
||||
e = { "<cmd>lua require('refactoring').refactor('Extract Block')<CR>", 'Extract Block' },
|
||||
f = { "<cmd>lua require('refactoring').refactor('Extract Block To File')<CR>", 'Extract To File' },
|
||||
i = { "<cmd>lua require('refactoring').refactor('Inline Variable')<CR>", 'Inline Variable' },
|
||||
n = { '', 'Swap Next' },
|
||||
p = { '', 'Swap Previous' },
|
||||
r = { '', 'Smart Rename' },
|
||||
d = { '', 'Go To Definition' },
|
||||
h = { '', 'List Definition Head' },
|
||||
l = { '', 'List Definition' },
|
||||
j = { '', 'Next Usage' },
|
||||
k = { '', 'Previous Usage' },
|
||||
R = { "<Esc><cmd>lua require('telescope').extensions.refactoring.refactors()<CR>", 'Refactor Commands' },
|
||||
S = { "<cmd>lua require('spectre').open()<cr>", 'Replace' },
|
||||
s = { [[:%s/\<<C-r><C-w>\>/<C-r><C-w>/gI<Left><Left><Left>]], 'Replace Word' },
|
||||
v = { "<cmd>lua require('refactoring').refactor('Extract Variable')<CR>", 'Extract Variable' },
|
||||
w = { "<cmd>lua require('spectre').open_visual({select_word=true})<cr>", 'Replace Word' },
|
||||
},
|
||||
t = {
|
||||
name = icons.ui.Terminal .. 'Terminal',
|
||||
['`'] = { '<cmd>Sterm<cr>', 'Horizontal Terminal' },
|
||||
n = { '<cmd>Sterm node<cr>', 'Node' },
|
||||
p = { '<cmd>Sterm bpython<cr>', 'Python' },
|
||||
r = { '<cmd>Sterm irb<cr>', 'Ruby' },
|
||||
s = { '<cmd>Sterm<cr>', 'Horizontal Terminal' },
|
||||
t = { '<cmd>Fterm<cr>', 'Terminal' },
|
||||
v = { '<cmd>Vterm<cr>', 'Vertical Terminal' },
|
||||
},
|
||||
T = {
|
||||
name = icons.ui.Test .. 'Test',
|
||||
f = { '<cmd>lua require("neotest").run.run(vim.fn.expand("%"))<cr>', 'Run Test' },
|
||||
F = { '<cmd>lua require("neotest").run.run()<cr>', 'Run Current Test' },
|
||||
o = { '<cmd>Neotest output-panel<cr>', 'Test Output' },
|
||||
O = { '<cmd>Neotest summary<cr>', 'Test Summary' },
|
||||
},
|
||||
s = {
|
||||
name = icons.ui.Windows .. 'Split',
|
||||
[','] = { '<cmd>NavigatorPrevious<cr>', 'Previous Split' },
|
||||
['-'] = { '<C-w>s', 'Split Below' },
|
||||
['\\'] = { '<C-w>v', 'Split Right' },
|
||||
c = { '<cmd>tabclose<cr>', 'Close Tab' },
|
||||
d = { '<C-w>c', 'Close Window' },
|
||||
f = { '<cmd>tabfirst<cr>', 'First Tab' },
|
||||
h = { '<C-w>h', 'Move Left' },
|
||||
j = { '<C-w>j', 'Move Down' },
|
||||
k = { '<C-w>k', 'Move Up' },
|
||||
l = { '<C-w>l', 'Move Right' },
|
||||
L = { '<cmd>tablast<cr>', 'Last Tab' },
|
||||
o = { '<cmd>tabnext<cr>', 'Next Tab' },
|
||||
O = { '<cmd>tabprevious<cr>', 'Previous Tab' },
|
||||
p = { '<C-w>p', 'Previous Window' },
|
||||
q = { '<cmd>bw<cr>', 'Close Current Buf' },
|
||||
s = { '<cmd>split<cr>', 'Horizontal Split File' },
|
||||
t = { '<cmd>tabnew<cr>', 'New Tab' },
|
||||
v = { '<cmd>vsplit<cr>', 'Vertical Split File' },
|
||||
W = { "<cmd>lua require'utils'.sudo_write()<cr>", 'Force Write' },
|
||||
w = { '<cmd>w<cr>', 'Write' },
|
||||
x = { '<cmd>x<cr>', 'Write and Quit' },
|
||||
},
|
||||
y = {
|
||||
name = icons.ui.Clipboard .. 'Yank',
|
||||
f = { '<cmd>%y+<cr>', 'Copy Whole File' },
|
||||
p = { '<cmd>CRpath<cr>', 'Copy Relative Path' },
|
||||
P = { '<cmd>CApath<cr>', 'Copy Absolute Path' },
|
||||
g = { '<cmd>lua require"gitlinker".get_buf_range_url()<cr>', 'Copy Git URL' },
|
||||
},
|
||||
}
|
||||
|
||||
local vopts = {
|
||||
mode = 'v',
|
||||
prefix = '<leader>',
|
||||
buffer = nil,
|
||||
silent = true,
|
||||
noremap = true,
|
||||
nowait = true,
|
||||
}
|
||||
|
||||
local vmappings = {
|
||||
l = {
|
||||
name = icons.ui.Gear .. 'LSP',
|
||||
a = '<cmd><C-U>Lspsaga range_code_action<CR>',
|
||||
},
|
||||
r = {
|
||||
name = icons.diagnostics.Hint .. 'Refactor',
|
||||
r = { "<Esc><cmd>lua require('telescope').extensions.refactoring.refactors()<CR>", 'Refactor Commands' },
|
||||
e = { "<esc><cmd>lua require('refactoring').refactor('Extract Function')<CR>", 'Extract Function' },
|
||||
f = { "<esc><cmd>lua require('refactoring').refactor('Extract Function To File')<CR>", 'Extract To File' },
|
||||
v = { "<esc><cmd>lua require('refactoring').refactor('Extract Variable')<CR>", 'Extract Variable' },
|
||||
i = { "<esc><cmd>lua require('refactoring').refactor('Inline Variable')<CR>", 'Inline Variable' },
|
||||
},
|
||||
s = { "<esc><cmd>'<,'>SnipRun<cr>", icons.ui.Play .. 'Run Code' },
|
||||
q = { '<cmd>q<cr>', icons.ui.Close .. 'Quit' },
|
||||
Q = { '<cmd>qa!<cr>', icons.ui.Power .. 'Force Quit!' },
|
||||
x = { '<cmd>x<cr>', icons.ui.Pencil .. 'Write and Quit' },
|
||||
y = {
|
||||
name = icons.ui.Clipboard .. 'Yank',
|
||||
g = { '<cmd>lua require"gitlinker".get_buf_range_url()<cr>', 'Copy Git URL' },
|
||||
},
|
||||
}
|
||||
|
||||
local no_leader_opts = {
|
||||
mode = 'n',
|
||||
prefix = '',
|
||||
buffer = nil,
|
||||
silent = true,
|
||||
noremap = true,
|
||||
nowait = true,
|
||||
}
|
||||
|
||||
local no_leader_mappings = {
|
||||
['<S-h>'] = { '<cmd>bprevious<cr>', 'Previous Buffer' },
|
||||
['<S-l>'] = { '<cmd>bnext<cr>', 'Next Buffer' },
|
||||
|
||||
['<C-h>'] = { '<C-w>h', 'Move Left' },
|
||||
['<C-j>'] = { '<C-w>j', 'Move Down' },
|
||||
['<C-k>'] = { '<C-w>k', 'Move Up' },
|
||||
['<C-l>'] = { '<C-w>l', 'Move Right' },
|
||||
|
||||
['<C-Up>'] = { '<cmd>resize +10<cr>', 'Increase window height' },
|
||||
['<C-Down>'] = { '<cmd>resize -10<cr>', 'Decrease window height' },
|
||||
['<C-Left>'] = { '<cmd>vertical resize -10<cr>', 'Decrease window width' },
|
||||
['<C-Right>'] = { '<cmd>vertical resize +10<cr>', 'Increase window width' },
|
||||
|
||||
['<C-f>'] = { '<cmd>Telescope find_files<cr>', 'Find Files' },
|
||||
['<C-g>'] = { '<cmd>Fterm lazygit<cr>', 'Lazygit' },
|
||||
|
||||
['['] = {
|
||||
name = icons.ui.ArrowLeft .. 'Previous',
|
||||
b = { '<cmd>bprevious<cr>', 'Buffer' },
|
||||
B = { '<cmd>bfirst<cr>', 'First Buffer' },
|
||||
d = { '<cmd>Lspsaga diagnostic_jump_prev<cr>', 'Diagnostic' },
|
||||
e = { 'g;', 'Edit' },
|
||||
g = { '<cmd>Gitsigns prev_hunk<cr>', 'Git Hunk' },
|
||||
j = { '<C-o>', 'Jump' },
|
||||
},
|
||||
[']'] = {
|
||||
name = icons.ui.ArrowRight .. 'Next',
|
||||
b = { '<cmd>bnext<cr>', 'Buffer' },
|
||||
B = { '<cmd>blast<cr>', 'Buffer' },
|
||||
d = { '<cmd>Lspsaga diagnostic_jump_next<cr>', 'Diagnostic' },
|
||||
e = { 'g,', 'Edit' },
|
||||
g = { '<cmd>Gitsigns next_hunk<cr>', 'Git Hunk' },
|
||||
j = { '<C-i>', 'Jump' },
|
||||
},
|
||||
|
||||
K = { '<cmd>Lspsaga hover_doc<cr>', 'LSP Hover' },
|
||||
U = { '<cmd>redo<cr>', 'Redo' },
|
||||
}
|
||||
|
||||
if vim.fn.exists('$TMUX') == 1 then
|
||||
local tmux_mappings = {
|
||||
['<C-h>'] = { '<cmd>NavigatorLeft<cr>', 'Move Left' },
|
||||
['<C-j>'] = { '<cmd>NavigatorDown<cr>', 'Move Down' },
|
||||
['<C-k>'] = { '<cmd>NavigatorUp<cr>', 'Move Up' },
|
||||
['<C-l>'] = { '<cmd>NavigatorRight<cr>', 'Move Right' },
|
||||
['<C-m>'] = { '<cmd>NavigatorPrevious<cr>', 'Goto Previous' },
|
||||
}
|
||||
no_leader_mappings = vim.tbl_extend('force', no_leader_mappings, tmux_mappings)
|
||||
end
|
||||
|
||||
which_key.setup(setup)
|
||||
which_key.register(mappings, opts)
|
||||
which_key.register(vmappings, vopts)
|
||||
which_key.register(no_leader_mappings, no_leader_opts)
|
||||
which_key.register({ mode = { 'o', 'x' }, i = i, a = a })
|
||||
Reference in new issue
Block a user