Big improvements to Vim keymaps; add swift configs

This commit is contained in:
Ben Kreeger 2025-08-19 16:11:23 -05:00
parent 04d02d3417
commit 375cb89d5f
Signed by: kreeger
GPG Key ID: D5CF8683D4BE4B50
11 changed files with 110 additions and 90 deletions

View File

@ -24,6 +24,7 @@
"nvim-treesitter-textobjects": { "branch": "master", "commit": "71385f191ec06ffc60e80e6b0c9a9d5daed4824c" },
"nvim-web-devicons": { "branch": "master", "commit": "c2599a81ecabaae07c49ff9b45dcd032a8d90f1a" },
"plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" },
"project-cli-commands.nvim": { "branch": "main", "commit": "9a2a2fdfd38a3d71cc927e3a398ac0ddfa846b3d" },
"telescope-fzf-native.nvim": { "branch": "main", "commit": "1f08ed60cafc8f6168b72b80be2b2ea149813e55" },
"telescope-ui-select.nvim": { "branch": "master", "commit": "6e51d7da30bd139a6950adf2a47fda6df9fa06d2" },
"telescope.nvim": { "branch": "master", "commit": "b4da76be54691e854d3e0e02c36b0245f945c2c7" },

9
nvim/lsp/sourcekit.lua Normal file
View File

@ -0,0 +1,9 @@
return {
capabilities = {
workspace = {
didChangeWatchedFiles = {
dynamicRegistration = true,
},
},
},
}

View File

@ -17,6 +17,7 @@ local filetype_maps = {
{ pattern = "*.tf", ft = "terraform" },
{ pattern = "*.pro", ft = "progruard" },
{ pattern = "*.mjml", ft = "html" },
{ pattern = ".swift-format", ft = "json" },
}
for _, mapping in ipairs(filetype_maps) do

View File

@ -2,21 +2,13 @@ local keymap = vim.keymap.set
-- Normal mode
keymap("n", "<Esc>", "<cmd>nohlsearch<CR>")
keymap("n", "<leader>fd", vim.diagnostic.setloclist, { desc = "Open quick[f]ix [d]iagnostics" })
keymap("n", "<leader>w", "<cmd>w!<CR>", { desc = "[w]rite current file", silent = true })
keymap("n", "<leader>q", "<cmd>q<CR>", { desc = "[q]uit current buffer", silent = true })
keymap("n", "<leader>Q", "<cmd>qa<CR>", { desc = "[Q]uit completely", silent = true })
keymap("n", "<Leader>fb", ":lua vim.lsp.buf.format()<CR>", { desc = "[f]ormat [b]uffer", silent = true })
keymap("n", "<C-h>", "<C-w><C-h>", { desc = "Move focus to the left window" })
keymap("n", "<C-l>", "<C-w><C-l>", { desc = "Move focus to the right window" })
keymap("n", "<C-j>", "<C-w><C-j>", { desc = "Move focus to the lower window" })
keymap("n", "<C-k>", "<C-w><C-k>", { desc = "Move focus to the upper window" })
keymap(
"n",
"gd",
"<cmd>lua vim.lsp.buf.definition()<CR>",
{ desc = "[g]o to [d]efinition", noremap = true, silent = true }
)
-- Visual mode
keymap("v", "<Leader>p", '"_dP', { desc = "[p]aste without overwriting default register" })

View File

@ -3,6 +3,7 @@ return {
event = "VimEnter",
opts = {
delay = 0,
preset = "helix",
icons = {
mappings = vim.g.have_nerd_font,
keys = vim.g.have_nerd_font,
@ -10,10 +11,13 @@ return {
-- Document existing key chains
spec = {
{ "<leader>s", group = "[S]earch" },
{ "<leader>e", group = "[E]xplorer/Tree" },
{ "<leader>t", group = "[T]oggle" },
{ "<leader>g", group = "[G]oto/Actions" },
{ "<leader>a", group = "[a]vante" },
{ "<leader>g", group = "[g]it" },
{ "<leader>l", group = "[l]sp" },
{ "<leader>lg", group = "[l]sp [g]oto" },
{ "<leader>ls", group = "[l]sp [s]ymbols" },
{ "<leader>s", group = "[s]earch" },
{ "<leader>t", group = "[t]oggle" },
},
},
}

View File

@ -34,33 +34,33 @@ return {
-- Define these keys here since they require access to runtime values
local builtin = require("telescope.builtin")
keymap("n", "<leader>sh", builtin.help_tags, { desc = "[S]earch [H]elp" })
keymap("n", "<leader>sk", builtin.keymaps, { desc = "[S]earch [K]eymaps" })
keymap("n", "<leader>sf", builtin.find_files, { desc = "[S]earch [F]iles" })
keymap("n", "<leader>ss", builtin.builtin, { desc = "[S]earch [S]elect Telescope" })
keymap("n", "<leader>sw", builtin.grep_string, { desc = "[S]earch current [W]ord" })
keymap("n", "<leader>sg", builtin.live_grep, { desc = "[S]earch by [G]rep" })
keymap("n", "<leader>sd", builtin.diagnostics, { desc = "[S]earch [D]iagnostics" })
keymap("n", "<leader>sr", builtin.resume, { desc = "[S]earch [R]esume" })
keymap("n", "<leader>s.", builtin.oldfiles, { desc = '[S]earch Recent Files ("." for repeat)' })
keymap("n", "<leader><leader>", builtin.buffers, { desc = "[ ] Find existing buffers" })
keymap("n", "<leader>/", function()
local map = function(keys, func, desc)
vim.keymap.set("n", "<leader>" .. keys, func, { desc = "[s]earch " .. desc })
end
map("<leader>", builtin.find_files, "all files ([ ])")
map("sb", builtin.buffers, "[b]uffers")
map("sd", builtin.diagnostics, "[d]iagnostics")
map("sg", builtin.live_grep, "[g]rep")
map("sh", builtin.help_tags, "[h]elp")
map("sk", builtin.keymaps, "[k]eymaps")
map("sn", function()
builtin.find_files({ cwd = vim.fn.stdpath("config") })
end, "[n]eovim files")
map("sr", builtin.resume, "[r]esume")
map("st", builtin.builtin, "[t]elescope")
map("sw", builtin.grep_string, "current [w]ord")
map("s.", builtin.oldfiles, "recent files ([.] for repeat)")
map("/", function()
builtin.current_buffer_fuzzy_find(require("telescope.themes").get_dropdown({
winblend = 10,
previewer = false,
}))
end, { desc = "[/] Fuzzily search in current buffer" })
keymap("n", "<leader>s/", function()
end, "current buffer fuzzy ([/])")
map("s/", function()
builtin.live_grep({
grep_open_files = true,
prompt_title = "Live Grep in Open Files",
})
end, { desc = "[S]earch [/] in Open Files" })
keymap("n", "<leader>sn", function()
builtin.find_files({ cwd = vim.fn.stdpath("config") })
end, { desc = "[S]earch [N]eovim files" })
end, "in open files ([/])")
end,
}

View File

@ -18,6 +18,7 @@ return {
hide_gitignore = false,
never_show = {
"node_modules",
".build",
".DS_Store",
"thumbs.db",
".git",

View File

@ -0,0 +1,42 @@
return {
"dimaportenko/project-cli-commands.nvim",
dependencies = {
"akinsho/toggleterm.nvim",
"nvim-telescope/telescope.nvim",
},
keys = {
{
"<leader>sc",
"<cmd>Telescope project_cli_commands open<cr>",
desc = "[s]earch [c]ommands",
},
},
config = function()
local OpenActions = require("project_cli_commands.open_actions")
local RunActions = require("project_cli_commands.actions")
require("project_cli_commands").setup({
-- Key mappings bound inside the telescope window
running_telescope_mapping = {
["<C-c>"] = RunActions.exit_terminal,
["<C-f>"] = RunActions.open_float,
["<C-v>"] = RunActions.open_vertical,
["<C-h>"] = RunActions.open_horizontal,
},
open_telescope_mapping = {
{ mode = "i", key = "<CR>", action = OpenActions.execute_script_vertical },
{ mode = "n", key = "<CR>", action = OpenActions.execute_script_vertical },
{ mode = "i", key = "<C-h>", action = OpenActions.execute_script },
{ mode = "n", key = "<C-h>", action = OpenActions.execute_script },
{ mode = "i", key = "<C-i>", action = OpenActions.execute_script_with_input },
{ mode = "n", key = "<C-i>", action = OpenActions.execute_script_with_input },
{ mode = "i", key = "<C-c>", action = OpenActions.copy_command_clipboard },
{ mode = "n", key = "<C-c>", action = OpenActions.copy_command_clipboard },
{ mode = "i", key = "<C-f>", action = OpenActions.execute_script_float },
{ mode = "n", key = "<C-f>", action = OpenActions.execute_script_float },
{ mode = "i", key = "<C-v>", action = OpenActions.execute_script_vertical },
{ mode = "n", key = "<C-v>", action = OpenActions.execute_script_vertical },
},
})
end,
}

View File

@ -1,4 +1,4 @@
local servers = {
local mason_lsps = {
-- LSPs
"json-lsp",
"lua_ls",
@ -14,8 +14,10 @@ local servers = {
"shellharden",
"stylua",
"yamlfix",
--- Linters
"swiftlint",
}
local non_mason_lsps = {
"sourcekit",
}
return {
@ -25,7 +27,7 @@ return {
"mason-org/mason-lspconfig.nvim",
},
opts = {
ensure_installed = servers,
ensure_installed = mason_lsps,
},
},
{
@ -50,26 +52,31 @@ return {
"saghen/blink.cmp",
},
config = function()
for _, server in ipairs(non_mason_lsps) do
vim.lsp.enable(server)
end
vim.api.nvim_create_autocmd("LspAttach", {
group = vim.api.nvim_create_augroup("kickstart-lsp-attach", { clear = true }),
callback = function(event)
local map = function(keys, func, desc, mode)
vim.keymap.set(mode or "n", keys, func, { buffer = event.buf, desc = "LSP: " .. desc })
vim.keymap.set(
mode or "n",
"<leader>" .. keys,
func,
{ buffer = event.buf, desc = "[l]sp: " .. desc }
)
end
map("grn", vim.lsp.buf.rename, "[R]e[n]ame")
map("ga", vim.lsp.buf.code_action, "[g]oto [a]ction", { "n", "x" })
map("gtr", require("telescope.builtin").lsp_references, "[g]o[t]o [r]eferences")
map("gti", require("telescope.builtin").lsp_implementations, "[g]o[t]o [i]mplementation")
map("gtd", require("telescope.builtin").lsp_definitions, "[g]o[t]o [d]efinition")
map("gtD", vim.lsp.buf.declaration, "[g]o[t]o [D]eclaration")
map("gtt", require("telescope.builtin").lsp_type_definitions, "[g]o[t]o [t]ype Definition")
map("gsb", require("telescope.builtin").lsp_document_symbols, "[g]oto [s]ymbols in [b]uffer")
map(
"gsw",
require("telescope.builtin").lsp_dynamic_workspace_symbols,
"[g]oto [s]ymbols in [w]orkspace"
)
map("la", vim.lsp.buf.code_action, "[a]ctions", { "n", "x" })
map("lgr", require("telescope.builtin").lsp_references, "[g]oto [r]eferences")
map("lgi", require("telescope.builtin").lsp_implementations, "[g]oto [i]mplementation")
map("lgf", require("telescope.builtin").lsp_definitions, "[g]oto de[f]inition")
map("lgd", vim.lsp.buf.declaration, "[g]oto [d]eclaration")
map("lgt", require("telescope.builtin").lsp_type_definitions, "[g]oto [t]ype definition")
map("lr", vim.lsp.buf.rename, "[r]ename")
map("lsb", require("telescope.builtin").lsp_document_symbols, "[s]ymbols in [b]uffer")
map("lsw", require("telescope.builtin").lsp_dynamic_workspace_symbols, "[s]ymbols in [w]orkspace")
local client = vim.lsp.get_client_by_id(event.data.client_id)
local augroup = vim.api.nvim_create_augroup

View File

@ -4,12 +4,12 @@ return {
cmd = { "ConformInfo" },
keys = {
{
"<leader>f",
"<leader>lf",
function()
require("conform").format({ async = true, lsp_format = "fallback" })
end,
mode = "",
desc = "[F]ormat buffer",
desc = "[l]sp: [f]ormat buffer",
},
},
opts = {
@ -36,7 +36,7 @@ return {
ruby = { "rubocop" },
rust = { "rustfmt" },
sh = { "shellharden" },
swift = { "swiftlint" },
swift = { "swiftformat" },
terraform = { "terraform_fmt" },
xml = { "xmllint" },
yaml = { "yamlfix" },

View File

@ -1,37 +0,0 @@
return {
"folke/trouble.nvim",
opts = {}, -- for default options, refer to the configuration section for custom setup.
cmd = "Trouble",
keys = {
{
"<leader>xx",
"<cmd>Trouble diagnostics toggle<cr>",
desc = "Diagnostics (Trouble)",
},
{
"<leader>xX",
"<cmd>Trouble diagnostics toggle filter.buf=0<cr>",
desc = "Buffer Diagnostics (Trouble)",
},
{
"<leader>cs",
"<cmd>Trouble symbols toggle focus=false<cr>",
desc = "Symbols (Trouble)",
},
{
"<leader>cl",
"<cmd>Trouble lsp toggle focus=false win.position=right<cr>",
desc = "LSP Definitions / references / ... (Trouble)",
},
{
"<leader>xL",
"<cmd>Trouble loclist toggle<cr>",
desc = "Location List (Trouble)",
},
{
"<leader>xQ",
"<cmd>Trouble qflist toggle<cr>",
desc = "Quickfix List (Trouble)",
},
},
}