moved ftplugins, and fixed some plugins

This commit is contained in:
Jeremie Fraeys 2024-09-15 11:21:15 -04:00
parent 3a09e91ad6
commit 8c56556c86
23 changed files with 578 additions and 244 deletions

View file

@ -1,19 +1,14 @@
return {
'f-person/auto-dark-mode.nvim',
event = 'VimEnter', -- Lazy load on VimEnter event
opts = {
update_interval = 1000, -- Check for mode change every second
update_interval = 2000,
set_dark_mode = function()
vim.api.nvim_set_option_value('background', 'dark', {})
vim.cmd('colorscheme monokai')
vim.cmd('set background=dark') -- Ensure the background is set correctly
end,
set_light_mode = function()
vim.api.nvim_set_option_value('background', 'light', {})
vim.cmd('colorscheme solarized')
vim.cmd('set background=light')
end,
},
config = function(_, opts)
require('auto-dark-mode').setup(opts)
end
}

View file

@ -10,4 +10,3 @@ return {
cmp.event:on('confirm_done', cmp_autopairs.on_confirm_done())
end,
}

View file

@ -3,29 +3,64 @@ return {
'hrsh7th/nvim-cmp',
dependencies = {
-- Snippet Engine & its associated nvim-cmp source
'L3MON4D3/LuaSnip',
'saadparwaiz1/cmp_luasnip',
{ 'L3MON4D3/LuaSnip', lazy = true },
{ 'saadparwaiz1/cmp_luasnip', lazy = true },
-- Adds LSP completion capabilities
'hrsh7th/cmp-nvim-lsp',
{ 'hrsh7th/cmp-nvim-lsp' },
-- Adds a number of user-friendly snippets
'rafamadriz/friendly-snippets',
{ 'rafamadriz/friendly-snippets', lazy = true },
-- Optional sources
'hrsh7th/cmp-path',
'hrsh7th/cmp-buffer',
-- Optional sources for path and buffer completion
{ 'hrsh7th/cmp-path', lazy = true },
{ 'hrsh7th/cmp-buffer', lazy = true },
-- Optional: additional completions for cmdline and git
{ 'hrsh7th/cmp-cmdline', lazy = true },
{ 'petertriho/cmp-git', lazy = true }, -- Git completions for commit messages
-- Optional: icons for completion menu
{ 'onsails/lspkind-nvim', lazy = true }, -- Adds nice icons to completion
},
event = { 'InsertEnter', 'CmdlineEnter' },
config = function()
local cmp = require('cmp')
local luasnip = require('luasnip')
local lspkind = require('lspkind')
-- Set completion options
vim.opt.completeopt = { 'menu', 'menuone', 'noselect' }
-- Import required modules
local cmp = require('cmp')
local luasnip = require('luasnip')
local cmp_mappings = {
['<C-n>'] = cmp.mapping.select_next_item(),
['<C-p>'] = cmp.mapping.select_prev_item(),
['<C-b>'] = cmp.mapping.scroll_docs(-4),
['<C-f>'] = cmp.mapping.scroll_docs(4),
['<C-Space>'] = cmp.mapping.complete(), -- Trigger completion
['<CR>'] = cmp.mapping.confirm({ select = true }), -- Confirm selection
['<C-l>'] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_next_item()
elseif luasnip.expand_or_jumpable() then
luasnip.expand_or_jump()
else
fallback()
end
end, { 'i', 's' }),
['<C-h>'] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_prev_item()
elseif luasnip.jumpable(-1) then
luasnip.jump(-1)
else
fallback()
end
end, { 'i', 's' }),
['<C-e>'] = cmp.mapping.abort(), -- Abort completion
}
-- Setup luasnip
-- Setup LuaSnip configuration
luasnip.config.setup({
history = true,
updateevents = 'TextChanged,TextChangedI',
@ -39,59 +74,34 @@ return {
cmp.setup({
snippet = {
expand = function(args)
luasnip.lsp_expand(args.body)
luasnip.lsp_expand(args.body) -- Expand snippets
end,
},
sources = cmp.config.sources({
{ name = 'nvim_lsp' },
{ name = 'luasnip' },
{ name = 'buffer' },
{ name = 'path' },
{ name = 'nvim_lsp' }, -- LSP completions
{ name = 'luasnip' }, -- Snippet completions
{ name = 'path' }, -- Path completions
{ name = 'buffer' }, -- Buffer completions
}),
window = {
completion = cmp.config.window.bordered(),
documentation = cmp.config.window.bordered(),
completion = cmp.config.window.bordered(), -- Border for completion window
documentation = cmp.config.window.bordered(), -- Border for documentation window
},
formatting = {
fields = { 'abbr', 'kind', 'menu' },
format = function(entry, item)
local menu_icon = {
nvim_lsp = 'λ',
luasnip = '',
buffer = 'Ω',
path = '🖫',
}
item.menu = menu_icon[entry.source.name] or entry.source.name
return item
end,
format = lspkind.cmp_format({ -- Use lspkind for icons
with_text = true,
menu = {
nvim_lsp = '[LSP]',
luasnip = '[Snip]',
buffer = '[Buffer]',
path = '[Path]',
cmdline = '[Cmd]',
git = '[Git]',
},
}),
},
mapping = cmp.mapping.preset.insert({
['<C-n>'] = cmp.mapping.select_next_item(),
['<C-p>'] = cmp.mapping.select_prev_item(),
['<C-b>'] = cmp.mapping.scroll_docs(-4),
['<C-f>'] = cmp.mapping.scroll_docs(4),
['<C-Space>'] = cmp.mapping.complete(),
['<CR>'] = cmp.mapping.confirm({ select = true }),
['<C-l>'] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_next_item()
elseif luasnip.expand_or_jumpable() then
luasnip.expand_or_jump()
else
fallback()
end
end, { 'i', 's' }),
['<C-h>'] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_prev_item()
elseif luasnip.jumpable(-1) then
luasnip.jump(-1)
else
fallback()
end
end, { 'i', 's' }),
['<C-e>'] = cmp.mapping.abort(),
}),
mapping = cmp.mapping.preset.insert(cmp_mappings),
})
-- Setup for SQL filetype with vim-dadbod-completion
@ -101,6 +111,36 @@ return {
{ name = 'buffer' },
}),
})
-- Setup for markdown with buffer-only completions
cmp.setup.filetype('markdown', {
sources = cmp.config.sources({
{ name = 'buffer' },
}),
})
-- Setup for cmdline '/' (search) and ':' (command) mode
cmp.setup.cmdline('/', {
mapping = cmp.mapping.preset.cmdline(cmp_mappings),
sources = {
{ name = 'buffer' },
},
})
cmp.setup.cmdline(':', {
mapping = cmp.mapping.preset.cmdline(cmp_mappings),
sources = cmp.config.sources({
{ name = 'path' },
{ name = 'cmdline' },
}),
})
-- Setup git commit message completion
cmp.setup.filetype('gitcommit', {
sources = cmp.config.sources({
{ name = 'git' },
{ name = 'buffer' },
}),
})
end,
}

View file

@ -2,4 +2,3 @@ return {
'numToStr/Comment.nvim',
opts = {},
}

View file

@ -17,4 +17,3 @@ return {
},
},
}

View file

@ -1,14 +1,17 @@
return {
'tpope/vim-dadbod',
'kristijanhusak/vim-dadbod-ui',
dependencies = {
'kristijanhusak/vim-dadbod-ui',
'kristijanhusak/vim-dadbod-completion',
{ 'tpope/vim-dadbod', lazy = true },
{ 'kristijanhusak/vim-dadbod-completion', ft = { 'sql', 'mysql', 'plsql' }, lazy = true }, -- Optional
},
keys = {
{ '<leader>du', '<cmd>DBUIToggle<cr>', { desc = 'Toggle dadbod', noremap = true } },
cmd = {
'DBUI',
'DBUIToggle',
'DBUIAddConnection',
'DBUIFindBuffer',
},
init = function()
-- Your DBUI configuration
vim.g.db_ui_use_nerd_fonts = 1
end,
}

View file

@ -1,16 +1,16 @@
return {
-- Add the nvim-dap related plugins
-- add the nvim-dap related plugins
{
'mfussenegger/nvim-dap',
dependencies = {
{ 'rcarriga/nvim-dap-ui', opt = true, cmd = 'DapUI' },
{ 'rcarriga/nvim-dap-ui', opt = true, cmd = 'Dapui' },
{ 'nvim-neotest/nvim-nio', opt = true, cmd = 'Neotest' },
{ 'theHamsta/nvim-dap-virtual-text', opt = true, ft = { 'python', 'go', 'rust' } },
{ 'thehamsta/nvim-dap-virtual-text', opt = true, ft = { 'python', 'go', 'rust' } },
{ 'mfussenegger/nvim-dap-python', opt = true, ft = 'python' },
{ 'leoluz/nvim-dap-go', opt = true, ft = 'go' },
{ 'simrat39/rust-tools.nvim', opt = true, ft = 'rust' },
'williamboman/mason.nvim', -- Mason for managing external tools
'williamboman/mason-lspconfig.nvim'
'williamboman/mason.nvim', -- mason for managing external tools
'williamboman/mason-lspconfig.nvim',
},
config = function()
local dap = require('dap')
@ -18,26 +18,16 @@ return {
local dap_virtual_text = require('nvim-dap-virtual-text')
local mason_registry = require('mason-registry')
-- Initialize dap-ui
-- initialize dap-ui
dapui.setup()
-- Initialize dap-virtual-text
-- initialize dap-virtual-text
dap_virtual_text.setup()
-- Keybindings
vim.api.nvim_set_keymap('n', '<leader>dc', ':lua require"dap".continue()<CR>', { noremap = true, silent = true })
vim.api.nvim_set_keymap('n', '<leader>ds', ':lua require"dap".step_over()<CR>', { noremap = true, silent = true })
vim.api.nvim_set_keymap('n', '<leader>di', ':lua require"dap".step_into()<CR>', { noremap = true, silent = true })
vim.api.nvim_set_keymap('n', '<leader>do', ':lua require"dap".step_out()<CR>', { noremap = true, silent = true })
vim.api.nvim_set_keymap('n', '<leader>db', ':lua require"dap".toggle_breakpoint()<CR>', { noremap = true, silent = true })
vim.api.nvim_set_keymap('n', '<leader>dB', ':lua require"dap".set_breakpoint(vim.fn.input("Breakpoint condition: "))<CR>', { noremap = true, silent = true })
vim.api.nvim_set_keymap('n', '<leader>dr', ':lua require"dap".repl.open()<CR>', { noremap = true, silent = true })
vim.api.nvim_set_keymap('n', '<leader>du', ':lua require"dapui".toggle()<CR>', { noremap = true, silent = true })
-- DAP Python
-- dap python
local function get_python_path()
local cwd = vim.fn.getcwd()
if vim.env.VIRTUAL_ENV then
return vim.env.VIRTUAL_ENV .. '/bin/python'
if vim.env.virtual_env then
return vim.env.virtual_env .. '/bin/python'
elseif vim.fn.executable(cwd .. '/venv/bin/python') == 1 then
return cwd .. '/venv/bin/python'
elseif vim.fn.executable(cwd .. '/.venv/bin/python') == 1 then
@ -49,13 +39,13 @@ return {
require('dap-python').setup(get_python_path())
-- DAP Go
-- dap go
require('dap-go').setup()
-- DAP Rust
-- dap rust
local rust_tools = require('rust-tools')
-- Ensure codelldb is installed via Mason
-- ensure codelldb is installed via mason
local codelldb_package = mason_registry.get_package('codelldb')
local codelldb_path = codelldb_package:get_install_path()
local codelldb_adapter = codelldb_path .. '/extension/adapter/codelldb'
@ -63,55 +53,121 @@ return {
rust_tools.setup({
tools = {
autoSetHints = true,
autosethints = true,
inlay_hints = {
show_parameter_hints = true,
parameter_hints_prefix = "<- ",
other_hints_prefix = "=> ",
parameter_hints_prefix = '<- ',
other_hints_prefix = '=> ',
},
},
server = {
on_attach = function(_, bufnr)
-- DAP Rust keymaps
vim.api.nvim_buf_set_keymap(bufnr, 'n', '<leader>dr', ':RustDebuggables<CR>', { noremap = true, silent = true })
-- Keybind for RustHoverActions
vim.api.nvim_buf_set_keymap(bufnr, 'n', 'K', ':RustHoverActions<CR>', { noremap = true, silent = true })
-- dap rust keymaps
vim.api.nvim_buf_set_keymap(
bufnr,
'n',
'<leader>dr',
':rustdebuggables<cr>',
{ noremap = true, silent = true }
)
-- keybind for rusthoveractions
vim.api.nvim_buf_set_keymap(bufnr, 'n', 'k', ':rusthoveractions<cr>', { noremap = true, silent = true })
end,
},
dap = {
adapter = require('rust-tools.dap').get_codelldb_adapter(
codelldb_adapter,
codelldb_lib
),
adapter = require('rust-tools.dap').get_codelldb_adapter(codelldb_adapter, codelldb_lib),
},
})
-- DAP UI integration
dap.listeners.after.event_initialized["dapui_config"] = function()
-- dap ui integration
dap.listeners.after.event_initialized['dapui_config'] = function()
dapui.open()
end
dap.listeners.before.event_terminated["dapui_config"] = function()
dap.listeners.before.event_terminated['dapui_config'] = function()
dapui.close()
end
dap.listeners.before.event_exited["dapui_config"] = function()
dap.listeners.before.event_exited['dapui_config'] = function()
dapui.close()
end
-- Define signs for breakpoints
vim.fn.sign_define('DapBreakpoint', { text = '🔴', texthl = '', linehl = '', numhl = '' })
vim.fn.sign_define('DapStopped', { text = '🟢', texthl = '', linehl = '', numhl = '' })
-- define signs for breakpoints
vim.fn.sign_define('dapbreakpoint', { text = '🔴', texthl = '', linehl = '', numhl = '' })
vim.fn.sign_define('dapstopped', { text = '🟢', texthl = '', linehl = '', numhl = '' })
end,
keys = {
{ 'n', '<leader>dc', ':lua require"dap".continue()<CR>' },
{ 'n', '<leader>ds', ':lua require"dap".step_over()<CR>' },
{ 'n', '<leader>di', ':lua require"dap".step_into()<CR>' },
{ 'n', '<leader>do', ':lua require"dap".step_out()<CR>' },
{ 'n', '<leader>db', ':lua require"dap".toggle_breakpoint()<CR>' },
{ 'n', '<leader>dB', ':lua require"dap".set_breakpoint(vim.fn.input("Breakpoint condition: "))<CR>' },
{ 'n', '<leader>dr', ':lua require"dap".repl.open()<CR>' },
{ 'n', '<leader>du', ':lua require"dapui".toggle()<CR>' }
{
'<leader>dc',
function()
require('dap').continue()
end,
mode = 'n',
noremap = true,
silent = true,
},
{
'<leader>ds',
function()
require('dap').step_over()
end,
mode = 'n',
noremap = true,
silent = true,
},
{
'<leader>di',
function()
require('dap').step_into()
end,
mode = 'n',
noremap = true,
silent = true,
},
{
'<leader>do',
function()
require('dap').step_out()
end,
mode = 'n',
noremap = true,
silent = true,
},
{
'<leader>db',
function()
require('dap').toggle_breakpoint()
end,
mode = 'n',
noremap = true,
silent = true,
},
{
'<leader>dsb',
function()
require('dap').set_breakpoint(vim.fn.input('Breakpoint condition: '))
end,
mode = 'n',
noremap = true,
silent = true,
},
{
'<leader>dr',
function()
require('dap').repl.open()
end,
mode = 'n',
noremap = true,
silent = true,
},
{
'<leader>du',
function()
require('dapui').toggle()
end,
mode = 'n',
noremap = true,
silent = true,
},
},
ft = { 'python', 'go', 'rust' }
}
ft = { 'python', 'go', 'rust' },
},
}

View file

@ -5,6 +5,17 @@ return {
'WhoIsSethDaniel/mason-tool-installer.nvim',
},
event = { 'BufReadPre', 'BufNewFile' },
cmd = { 'ConformInfo' },
keys = {
{
'<leader>f',
function()
require('conform').format({ async = true, lsp_fallback = true })
end,
mode = '',
desc = '[F]ormat buffer',
},
},
opts = function()
local formatters_by_ft = {
lua = { 'stylua' },
@ -16,33 +27,38 @@ return {
end
end,
go = { 'gofumpt', 'goimports' },
yaml = { 'prettier' }, -- Added YAML formatter
bash = { 'shfmt' }, -- Added Bash formatter
rust = { 'rustfmt' }, -- Added Rust formatter
dockerfile = { 'hadolint' }, -- Added Dockerfile formatter
yaml = { 'prettier' },
bash = { 'shfmt' },
rust = { 'rustfmt' },
dockerfile = { 'hadolint' },
}
require('conform').setup({
return {
notify_on_error = false,
format_on_save = function(bufnr)
local disable_filetypes = { c = true, cpp = true }
return {
timeout_ms = 500,
lsp_fallback = not disable_filetypes[vim.bo[bufnr].filetype],
}
end,
formatters_by_ft = formatters_by_ft,
format_on_save = {
lsp_fallback = true,
timeout_ms = 500,
},
})
}
end,
config = function(_, opts)
require('conform').setup(opts)
require('mason-tool-installer').setup({
ensure_installed = {
'stylua', -- Lua
'ruff', -- Python
'isort', -- Python
'black', -- Python
'gofumpt', -- Go
'goimports', -- Go
'prettier', -- YAML, JSON, etc.
'shfmt', -- Bash
'hadolint', -- Dockerfile
'stylua',
'ruff',
'isort',
'black',
'gofumpt',
'goimports',
'shfmt',
'hadolint',
},
})
end,
}

View file

@ -14,7 +14,8 @@ return {
-- on_attach function executed when the plugin is attached to a buffer
on_attach = function(bufnr)
vim.keymap.set('n', '<leader>hp', require('gitsigns').preview_hunk, {
buffer = bufnr, desc = 'Preview git hunk'
buffer = bufnr,
desc = 'Preview git hunk',
})
-- Don't override built-in and fugitive keymaps
@ -42,4 +43,3 @@ return {
},
},
}

View file

@ -12,9 +12,10 @@ return {
go = { 'golangcilint' },
yaml = { 'yamllint' },
bash = { 'shellcheck' },
lua = { 'luacheck' }, -- Added Lua linter
rust = { 'clippy' }, -- Use `clippy` for Rust linting
lua = { 'luacheck' }, -- Added Lua linter
rust = { 'clippy' }, -- Use `clippy` for Rust linting
dockerfile = { 'hadolint' }, -- Added Dockerfile linter
-- rust = { 'clippy' }, -- Use `clippy` for Rust linting
}
-- Autocommand group for triggering linting
@ -36,15 +37,15 @@ return {
-- Mason tool installer setup
require('mason-tool-installer').setup({
ensure_installed = {
'ruff', -- Python
-- 'clippy', -- Rust
'ruff', -- Python
-- 'mypy', -- Uncomment if needed for additional Python linting
'golangci-lint', -- Go
'yamllint', -- YAML
'shellcheck', -- Bash
'luacheck', -- Lua
'hadolint', -- Dockerfile
'yamllint', -- YAML
'shellcheck', -- Bash
'luacheck', -- Lua
'hadolint', -- Dockerfile
},
})
end,
}

View file

@ -10,6 +10,7 @@ return {
'j-hui/fidget.nvim',
tag = 'legacy',
opts = {},
event = 'LspAttach', -- Lazy load on LSP attachment
},
-- Additional Lua configuration
@ -54,7 +55,9 @@ return {
},
},
},
rust_analyzer = { cmd = { 'rustup', 'run', 'stable', 'rust-analyzer' } },
rust_analyzer = {
cmd = { 'rustup', 'run', 'stable', 'rust-analyzer' },
},
texlab = {
flags = {
debounce_text_changes = 150,
@ -62,13 +65,13 @@ return {
settings = {
texlab = {
build = {
executable = "latexmk",
args = { "-pdf", "-xelatex", "-output-directory=output", "-interaction=nonstopmode", "-synctex=1", "%f" },
executable = 'latexmk',
args = { '-pdf', '-xelatex', '-output-directory=output', '-interaction=nonstopmode', '-synctex=1', '%f' },
onSave = true,
},
forwardSearch = {
executable = "zathura",
args = { "--synctex-forward", "%l:1:%f", "%p" },
executable = 'zathura',
args = { '--synctex-forward', '%l:1:%f', '%p' },
},
},
},
@ -87,6 +90,13 @@ return {
},
},
},
marksman = {
filetypes = { 'markdown' },
root_dir = function(fname)
return require('lspconfig.util').root_pattern('.marksman.toml', '.git')(fname) or vim.loop.cwd()
end,
settings = {},
},
yamlls = {
filetypes = { 'yaml' },
settings = {
@ -156,11 +166,12 @@ return {
spacing = 2,
},
float = {
Source = 'if_many',
source = 'if_many',
border = 'rounded',
},
})
-- Define diagnostic signs
local sign = function(opts)
vim.fn.sign_define(opts.name, {
texthl = opts.name,
@ -174,10 +185,8 @@ return {
sign({ name = 'DiagnosticSignHint', text = '' })
sign({ name = 'DiagnosticSignInfo', text = '»' })
-- Fidget configuration (LSP progress)
require('fidget').setup({})
-- Neodev setup for improved Lua development
require('fidget').setup({})
require('neodev').setup({
library = {
plugins = { 'nvim-dap-ui' },
@ -186,4 +195,3 @@ return {
})
end,
}

View file

@ -1,4 +0,0 @@
return {
'iamcco/markdown-preview.nvim',
}

View file

@ -5,8 +5,20 @@ return {
'L3MON4D3/LuaSnip',
},
keys = {
{ '<leader>nf', function() require('neogen').generate({ type = 'func' }) end, desc = 'Generate function doc' },
{ '<leader>nt', function() require('neogen').generate({ type = 'type' }) end, desc = 'Generate type doc' },
{
'<leader>nf',
function()
require('neogen').generate({ type = 'func' })
end,
desc = 'Generate function doc',
},
{
'<leader>nt',
function()
require('neogen').generate({ type = 'type' })
end,
desc = 'Generate type doc',
},
},
config = function()
require('neogen').setup({
@ -16,4 +28,3 @@ return {
-- Uncomment next line if you want to follow only stable versions
-- version = "*"
}

View file

@ -1,8 +1,7 @@
return {
'shaunsingh/solarized.nvim',
event = "VeryLazy",
event = 'VeryLazy',
config = function()
vim.g.solarized_variant = 'light'
end,
}

View file

@ -0,0 +1,7 @@
-- Highlight todo, notes, etc in comments
return {
'folke/todo-comments.nvim',
event = 'VimEnter',
dependencies = { 'nvim-nua/plenary.nvim' },
opts = { signs = false },
}

View file

@ -1,18 +1,73 @@
return {
'folke/which-key.nvim',
event = 'VimEnter',
opts = {
plugins = {
marks = true,
registers = true,
spelling = {
enabled = true,
suggestions = 20,
},
},
windows = {
border = 'single',
},
},
}
-- return {
-- 'folke/which-key.nvim',
-- event = 'VimEnter',
-- opts = {
-- plugins = {
-- marks = true,
-- registers = true,
-- spelling = {
-- enabled = true,
-- suggestions = 20,
-- },
-- },
-- windows = {
-- border = 'single',
-- },
-- },
-- }
return { -- Useful plugin to show you pending keybinds.
'folke/which-key.nvim',
event = 'VimEnter', -- Sets the loading event to 'VimEnter'
config = function() -- This is the function that runs, AFTER loading
require('which-key').setup({
icons = {
-- set icon mappings to true if you have a Nerd Font
mappings = vim.g.have_nerd_font,
-- If you are using a Nerd Font: set icons.keys to an empty table which will use the
-- default whick-key.nvim defined Nerd Font icons, otherwise define a string table
keys = vim.g.have_nerd_font and {} or {
Up = '<Up> ',
Down = '<Down> ',
Left = '<Left> ',
Right = '<Right> ',
C = '<C-…> ',
M = '<M-…> ',
D = '<D-…> ',
S = '<S-…> ',
CR = '<CR> ',
Esc = '<Esc> ',
ScrollWheelDown = '<ScrollWheelDown> ',
ScrollWheelUp = '<ScrollWheelUp> ',
NL = '<NL> ',
BS = '<BS> ',
Space = '<Space> ',
Tab = '<Tab> ',
F1 = '<F1>',
F2 = '<F2>',
F3 = '<F3>',
F4 = '<F4>',
F5 = '<F5>',
F6 = '<F6>',
F7 = '<F7>',
F8 = '<F8>',
F9 = '<F9>',
F10 = '<F10>',
F11 = '<F11>',
F12 = '<F12>',
},
},
})
-- Document existing key chains
require('which-key').add({
{ '<leader>c', group = '[C]ode', mode = { 'n', 'x' } },
{ '<leader>d', group = '[D]ocument' },
{ '<leader>r', group = '[R]ename' },
{ '<leader>s', group = '[S]earch' },
{ '<leader>w', group = '[W]orkspace' },
{ '<leader>t', group = '[T]oggle' },
{ '<leader>h', group = 'Git [H]unk', mode = { 'n', 'v' } },
})
end,
}