From 1c7fb28b371331684de3504acdd9b1026ab2f969 Mon Sep 17 00:00:00 2001 From: Micah Halter Date: Fri, 10 May 2024 12:31:07 -0400 Subject: [PATCH] feat(vscode): add more default mappings to vscode integration (#952) * feat(vscode): add all AstroNvim default LSP mappings * feat(vscode): add more AstroNvim default mappings --- lua/astrocommunity/recipes/vscode/init.lua | 78 +++++++++++++++++++--- 1 file changed, 68 insertions(+), 10 deletions(-) diff --git a/lua/astrocommunity/recipes/vscode/init.lua b/lua/astrocommunity/recipes/vscode/init.lua index 1a3588742..4ee97790e 100644 --- a/lua/astrocommunity/recipes/vscode/init.lua +++ b/lua/astrocommunity/recipes/vscode/init.lua @@ -38,16 +38,74 @@ return { -- add a few keybindings { "AstroNvim/astrocore", - ---@type AstroCoreOpts - opts = { - mappings = { - n = { - ["ff"] = "Find", - ["fw"] = "call VSCodeNotify('workbench.action.findInFiles')", - ["ls"] = "call VSCodeNotify('workbench.action.gotoSymbol')", - }, - }, - }, + ---@param opts AstroCoreOpts + opts = function(_, opts) + local maps = assert(opts.mappings) + + -- basic actions + maps.n["q"] = function() require("vscode-neovim").action "workbench.action.closeWindow" end + maps.n["w"] = function() require("vscode-neovim").action "workbench.action.files.save" end + maps.n["n"] = function() require("vscode-neovim").action "welcome.showNewFileEntries" end + + -- splits navigation + maps.n["|"] = function() require("vscode-neovim").action "workbench.action.splitEditor" end + maps.n["\\"] = function() require("vscode-neovim").action "workbench.action.splitEditorDown" end + maps.n[""] = function() require("vscode-neovim").action "workbench.action.navigateLeft" end + maps.n[""] = function() require("vscode-neovim").action "workbench.action.navigateDown" end + maps.n[""] = function() require("vscode-neovim").action "workbench.action.navigateUp" end + maps.n[""] = function() require("vscode-neovim").action "workbench.action.navigateRight" end + + -- terminal + maps.n[""] = function() require("vscode-neovim").action "workbench.action.terminal.toggleTerminal" end + maps.n[""] = function() require("vscode-neovim").action "workbench.action.terminal.toggleTerminal" end + + -- buffer management + maps.n["]b"] = "Tabnext" + maps.n["[b"] = "Tabprevious" + maps.n["c"] = "Tabclose" + maps.n["C"] = "Tabclose!" + maps.n["bp"] = "Tablast" + + -- file explorer + maps.n["e"] = function() require("vscode-neovim").action "workbench.files.action.focusFilesExplorer" end + maps.n["o"] = function() require("vscode-neovim").action "workbench.files.action.focusFilesExplorer" end + + -- indentation + maps.v[""] = function() require("vscode-neovim").action "editor.action.indentLines" end + maps.v[""] = function() require("vscode-neovim").action "editor.action.outdentLines" end + + -- diagnostics + maps.n["]d"] = function() require("vscode-neovim").action "editor.action.marker.nextInFiles" end + maps.n["[d"] = function() require("vscode-neovim").action "editor.action.marker.prevInFiles" end + + -- pickers (emulate telescope mappings) + maps.n["fc"] = function() + require("vscode-neovim").action("workbench.action.findInFiles", { args = { query = vim.fn.expand "" } }) + end + maps.n["fC"] = function() require("vscode-neovim").action "workbench.action.showCommands" end + maps.n["ff"] = function() require("vscode-neovim").action "workbench.action.quickOpen" end + maps.n["fn"] = function() require("vscode-neovim").action "notifications.showList" end + maps.n["fo"] = function() require("vscode-neovim").action "workbench.action.openRecent" end + maps.n["ft"] = function() require("vscode-neovim").action "workbench.action.selectTheme" end + maps.n["fw"] = function() require("vscode-neovim").action "workbench.action.findInFiles" end + + -- git client + maps.n["gg"] = function() require("vscode-neovim").action "workbench.view.scm" end + + -- LSP Mappings + maps.n["K"] = function() require("vscode-neovim").action "editor.action.showHover" end + maps.n["gI"] = function() require("vscode-neovim").action "editor.action.goToImplementation" end + maps.n["gd"] = function() require("vscode-neovim").action "editor.action.revealDefinition" end + maps.n["gD"] = function() require("vscode-neovim").action "editor.action.revealDeclaration" end + maps.n["gr"] = function() require("vscode-neovim").action "editor.action.goToReferences" end + maps.n["gy"] = function() require("vscode-neovim").action "editor.action.goToTypeDefinition" end + maps.n["la"] = function() require("vscode-neovim").action "editor.action.quickFix" end + maps.n["lG"] = function() require("vscode-neovim").action "workbench.action.showAllSymbols" end + maps.n["lR"] = function() require("vscode-neovim").action "editor.action.goToReferences" end + maps.n["lr"] = function() require("vscode-neovim").action "editor.action.rename" end + maps.n["ls"] = function() require("vscode-neovim").action "workbench.action.gotoSymbol" end + maps.n["lf"] = function() require("vscode-neovim").action "editor.action.formatDocument" end + end, }, -- disable colorscheme setting { "AstroNvim/astroui", opts = { colorscheme = false } },