feat: Working on snippets for nvim

This commit is contained in:
2024-11-17 14:52:30 -05:00
parent 8a17c5ad80
commit eff01f42fd
8 changed files with 246 additions and 127 deletions

View File

@@ -2,61 +2,61 @@ vim.g.mapleader = " "
vim.g.maplocalleader = " "
local keymap = vim.keymap.set
local default_options = {noremap = true, silent = true}
local telescope = require('telescope.builtin')
local default_options = { noremap = true, silent = true }
local telescope = require("telescope.builtin")
local wk = require("which-key")
local wk_add = function(mode, keymaps)
wk.add(keymaps, { mode = mode, silent = true })
wk.add(keymaps, { mode = mode, silent = true })
end
local find_files = function(dir)
return function()
telescope.find_files({ cwd = dir, hidden = true, no_ignore = true })
end
return function()
telescope.find_files({ cwd = dir, hidden = true, no_ignore = true })
end
end
--------------------------------------------------------------------------------
-- Insert Mode
--------------------------------------------------------------------------------
-- easier escape key mapping
keymap('i', 'jk', '<ESC>', default_options)
keymap("i", "jk", "<ESC>", default_options)
wk_add("i", {
{ "<C-s>", "<ESC>:write<CR>a", desc = "[S]ave" }
{ "<C-s>", "<ESC>:write<CR>a", desc = "[S]ave" },
})
--------------------------------------------------------------------------------
-- Normal Mode
--------------------------------------------------------------------------------
wk_add("n", {
{ "<Left>", ":vertical resize +1<CR>", desc = "Resize Pane Left" },
{ "<Right>", ":vertical resize -1<CR>", desc = "Resize Pane Right" },
{ "<Up>", "resize -1<CR>", desc = "Resize Pane Up" },
{ "<Down>", "resize +1<CR>", desc = "Resize Pane Down" },
{ "<Left>", ":vertical resize +1<CR>", desc = "Resize Pane Left" },
{ "<Right>", ":vertical resize -1<CR>", desc = "Resize Pane Right" },
{ "<Up>", "resize -1<CR>", desc = "Resize Pane Up" },
{ "<Down>", "resize +1<CR>", desc = "Resize Pane Down" },
{ "<leader>n", "<CMD>:noh<CR>", desc = "[N]o highlighting" },
{ "<leader>s", "<CMD>:set spell!<CR>", desc = "[S]pell check toggle" },
{ "<C-n>", "<CMD>:Neotree toggle<CR>", desc = "Toggle Neotree" },
{ "<C-s>", "<CMD>:write<CR>", desc = "[S]ave" },
{ "<leader>n", "<CMD>:noh<CR>", desc = "[N]o highlighting" },
{ "<leader>s", "<CMD>:set spell!<CR>", desc = "[S]pell check toggle" },
--{ "<C-n>", "<CMD>:Neotree toggle<CR>", desc = "Toggle Neotree" },
{ "<C-s>", "<CMD>:write<CR>", desc = "[S]ave" },
{ "J", ":move .+1<CR>==", desc = "Move line down" },
{ "K", ":move .-2<CR>==", desc = "Move line up" },
{ "J", ":move .+1<CR>==", desc = "Move line down" },
{ "K", ":move .-2<CR>==", desc = "Move line up" },
-- Git
{ "<leader>gg", ":LazyGit<CR>", desc = "Open [G]it" },
{ "<leader>gf", ":Telescope git_files<CR>", desc = "Find [G]it [F]ile" },
{ "<leader>t", ":ToggleTerm<CR>", desc = "Open [T]erminal" },
-- Git
{ "<leader>gg", ":LazyGit<CR>", desc = "Open [G]it" },
{ "<leader>gf", ":Telescope git_files<CR>", desc = "Find [G]it [F]ile" },
{ "<leader>t", ":ToggleTerm<CR>", desc = "Open [T]erminal" },
-- Telescope keymaps
{ "<leader>ff", telescope.find_files, desc = "[F]ind [F]iles" },
{ "<leader>fg", telescope.live_grep, desc = "[F]ind [G]rep" },
{ "<leader>fb", telescope.buffers, desc = "[F]ind [B]uffers" },
{ "<leader>fh", telescope.help_tags, desc = "[F]ind [H]elp" },
{ "<leader>fd", find_files('$DOTFILES'), desc = "[F]ind [D]otfiles" },
{ "<leader>fn", find_files('$DOTFILES/nvim/m-housh'), desc = "[F]ind [N]vim file" },
{ "<leader>fs", find_files('$DOTFILES/scripts/scripts'), desc = "[F]ind [S]cript" },
{ "<leader>fz", find_files('$DOTFILES/zsh/config'), desc = "[F]ind [Z]sh config file" },
{ "<leader>z", "<CMD>:ZenMode<CR>", desc = "[Z]en Mode" },
-- Telescope keymaps
{ "<leader>ff", telescope.find_files, desc = "[F]ind [F]iles" },
{ "<leader>fg", telescope.live_grep, desc = "[F]ind [G]rep" },
{ "<leader>fb", telescope.buffers, desc = "[F]ind [B]uffers" },
{ "<leader>fh", telescope.help_tags, desc = "[F]ind [H]elp" },
{ "<leader>fd", find_files("$DOTFILES"), desc = "[F]ind [D]otfiles" },
{ "<leader>fn", find_files("$DOTFILES/nvim/m-housh"), desc = "[F]ind [N]vim file" },
{ "<leader>fs", find_files("$DOTFILES/scripts/scripts"), desc = "[F]ind [S]cript" },
{ "<leader>fz", find_files("$DOTFILES/zsh/config"), desc = "[F]ind [Z]sh config file" },
{ "<leader>z", "<CMD>:ZenMode<CR>", desc = "[Z]en Mode" },
})
--------------------------------------------------------------------------------
@@ -70,23 +70,15 @@ wk_add("n", {
-- { "K", ":move '<-2<CR>", desc = "Move selected block up" },
-- { "J", ":move '>+1<CR>", desc = "Move selected block down" },
-- })
vim.keymap.set(
"v", "K",
":move '<-2<CR>gv=gv",
{ desc = "Move selected block up.", silent = true, noremap = true }
)
vim.keymap.set(
"v", "J",
":move '>+1<CR>gv=gv",
{ desc = "Move selected block up.", silent = true, noremap = true }
)
vim.keymap.set("v", "K", ":move '<-2<CR>gv=gv", { desc = "Move selected block up.", silent = true, noremap = true })
vim.keymap.set("v", "J", ":move '>+1<CR>gv=gv", { desc = "Move selected block up.", silent = true, noremap = true })
-- Toggle term key maps, that get attached when terminal is opened.
function _G.set_terminal_keymaps()
local opts = { buffer = 0 }
keymap('t', '<esc>', [[<C-\><C-n>]], opts)
local opts = { buffer = 0 }
keymap("t", "<esc>", [[<C-\><C-n>]], opts)
end
vim.cmd('autocmd! TermOpen term://* lua set_terminal_keymaps()')
vim.cmd("autocmd! TermOpen term://* lua set_terminal_keymaps()")
-- LuaSnip Keymaps
--local ls = require('luasnip')
@@ -99,7 +91,6 @@ vim.cmd('autocmd! TermOpen term://* lua set_terminal_keymaps()')
-- end
-- end, { silent = true })
-- <c-j>
-- This will jump backwards in the snippet.
-- vim.keymap.set({ "i", "s" }, "<c-j>", function()

View File

@@ -1,49 +1,72 @@
-- The language servers to setup.
local lsp_servers = {
"bashls",
"clangd",
"dockerls",
"gopls",
"jsonls",
"lua_ls",
"marksman",
"sourcekit",
"yamlls",
}
return {
"neovim/nvim-lspconfig",
event = { "BufReadPre", "BufNewFile" },
dependencies = {
"hrsh7th/cmp-nvim-lsp",
{ "antosha417/nvim-lsp-file-operations", config = true },
"williamboman/mason.nvim",
"williamboman/mason-lspconfig.nvim",
},
config = function()
require("mason").setup()
require("mason-lspconfig").setup({
opts = {
ensure_installed = lsp_servers,
},
})
local lspconfig = require("lspconfig")
local cmp_nvim_lsp = require("cmp_nvim_lsp")
local capabilities = cmp_nvim_lsp.default_capabilities()
local opts = { noremap = true, silent = true }
local on_attach =
function(_, bufnr)
opts.buffer = bufnr
local on_attach = function(_, bufnr)
opts.buffer = bufnr
opts.desc = "Show line diagnostics"
vim.keymap.set("n", "<leader>d", vim.diagnostic.open_float, opts)
opts.desc = "Show line diagnostics"
vim.keymap.set("n", "<leader>d", vim.diagnostic.open_float, opts)
opts.desc = "Show diagnostics in Telescope"
vim.keymaps.set("n", "<leader><leader>d", "<CMD>Telescope diagnostics bufnr=0<CR>", opts)
opts.desc = "Show diagnostics in Telescope"
vim.keymap.set("n", "<leader><leader>d", "<CMD>Telescope diagnostics bufnr=0<CR>", opts)
opts.desc = "Show documentation for what is under cursor"
vim.keymap.set("n", "<C-k>", vim.lsp.buf.hover, opts)
opts.desc = "Show documentation for what is under cursor"
vim.keymap.set("n", "<C-k>", vim.lsp.buf.hover, opts)
opts.desc = "[G]oto [D]efinition"
vim.keymap.set("n", "gd", "<cmd>Telescope lsp_definitions trim_text=true<cr>", opts)
opts.desc = "[G]oto [D]efinition"
vim.keymap.set("n", "gd", "<cmd>Telescope lsp_definitions trim_text=true<cr>", opts)
opts.desc = "[G]oto [D]eclaration"
vim.keymap.set("n", "gD", vim.lsp.buf.declaration, opts)
opts.desc = "[G]oto [D]eclaration"
vim.keymap.set("n", "gD", vim.lsp.buf.declaration, opts)
opts.desc = "LSP [C]ode [A]ction"
vim.keymap.set("n", "<leader>ca", vim.lsp.buf.code_action, opts)
opts.desc = "LSP [C]ode [A]ction"
vim.keymap.set("n", "<leader>ca", vim.lsp.buf.code_action, opts)
--opts.desc = "[R]e-[N]ame"
--vim.keymap.set("n", "<leader>rn", vim.lsp.buf.rename, opts)
--opts.desc = "[R]e-[N]ame"
--vim.keymap.set("n", "<leader>rn", vim.lsp.buf.rename, opts)
opts.desc = "[R]eload or start LSP"
vim.keymap.set("n", "<leader>rl", ":LspRestart | :LspStart<CR>", opts)
opts.desc = "[R]eload or start LSP"
vim.keymap.set("n", "<leader>rl", ":LspRestart | :LspStart<CR>", opts)
opts.desc = "Goto previous diagnostic"
vim.keymap.set("n", "[d", vim.diagnostic.goto_prev, opts)
opts.desc = "Goto previous diagnostic"
vim.keymap.set("n", "[d", vim.diagnostic.goto_prev, opts)
opts.desc = "Goto next diagnostic"
vim.keymap.set("n", "]d", vim.diagnostic.goto_next, opts)
end, lspconfig["sourcekit"].setup({
opts.desc = "Goto next diagnostic"
vim.keymap.set("n", "]d", vim.diagnostic.goto_next, opts)
end
for _, lsp in ipairs(lsp_servers) do
lspconfig[lsp].setup({
capabilities = capabilities,
on_attach = on_attach,
on_init = function(client)
@@ -52,6 +75,7 @@ return {
client.offset_encoding = "utf-8"
end,
})
end
-- nice icons
local signs = { Error = "", Warn = "", Hint = "󰠠 ", Info = "" }
@@ -63,28 +87,3 @@ return {
vim.keymap.set("n", "<leader>rn", vim.lsp.buf.rename, { desc = "[R]e-[N]ame" })
end,
}
--
-- -- Normal mode keymaps
-- wk.add({
-- { "<C-k>", vim.lsp.buf.hover, desc = "LSP hover info" },
-- { "<leader>ca", vim.lsp.buf.code_action, desc = "LSP [C]ode [A]ction" },
-- { "gi", vim.lsp.buf.implementation, desc = "[G]oto [I]mplementation" },
-- { "gr", vim.lsp.buf.references, desc = "List [R]eferences" },
-- { "gs", vim.lsp.buf.signature_help, desc = "[S]ignature help" },
-- }, {
-- mode = "n",
-- silent = true,
-- noremap = true,
-- })
--
-- -- Visual mode keymaps
-- wk.add({
-- { "<leader>ca", vim.lsp.buf.code_action, desc = "LSP [C]ode [A]ction" },
-- }, { mode = "v", silent = true })
-- end,
-- })
-- end,
-- },
-- }
-- }

View File

@@ -0,0 +1,45 @@
return {
"L3MON4D3/LuaSnip",
opts = {
history = true,
enable_autosnippets = false, -- don't automatically expand snippets.
updatevents = "TextChanged,TextChangedI",
},
config = function()
local ls = require("luasnip")
local types = require("luasnip.util.types")
ls.setup({
extra_opts = {
[types.choiceNode] = {
active = {
virt_text = { { "choiceNode", "Comment" } },
},
},
},
})
require("luasnip.loaders.from_vscode").lazy_load()
require("luasnip.loaders.from_lua").lazy_load({ paths = "~/.config/m-housh/lua/user/snippets/" })
-- Keymaps
local opts = { silent = true }
-- Use <Ctrl>k to expand snippets.
-- This will expand the current item or jump to the next item within the snippet.
vim.keymap.set({ "i", "s" }, "<C-k>", function()
if ls.expand_or_jumpable() then
ls.expand_or_jump()
end
end, opts)
-- Use <Ctrl>j to jump backwards in a snippet.
-- This always moves to the previous item within a snippet.
vim.keymap.set({ "i", "s" }, "<C-j>", function()
if ls.jumpable(-1) then
ls.jump(-1)
end
end, opts)
-- Reload snippets.
vim.keymap.set("n", "<leader><leader>s", "<CMD>source ~/.config/m-housh/lua/user/plugin/luasnip.lua<CR>")
end,
}

View File

@@ -1,26 +0,0 @@
-- return {
-- "nvim-neo-tree/neo-tree.nvim",
-- branch = "v3.x",
-- dependencies = {
-- "nvim-lua/plenary.nvim",
-- "nvim-tree/nvim-web-devicons", -- not strictly required, but recommended
-- "MunifTanjim/nui.nvim",
-- },
-- opts = {
-- close_if_last_window = false,
-- enable_git_status = true,
-- enable_diagnostics = true,
-- filesystem = {
-- always_show = {
-- "plugins",
-- ".zshrc",
-- ".zshenv",
-- "*.env"
-- },
-- filtered_items = {
-- hide_dotfiles = false
-- },
-- use_libuv_file_watcher = true
-- },
-- }
-- }

10
nvim/m-housh/lua/user/snippets/init.lua Executable file → Normal file
View File

@@ -1,4 +1,5 @@
local ls = require('luasnip')
-- Setup snippets here.
local ls = require("luasnip")
local s = ls.snippet
local sn = ls.snippet_node
local ms = ls.multi_snippet
@@ -7,3 +8,10 @@ local f = ls.function_node
local c = ls.choice_node
local t = ls.text_node
ls.add_snippets("lua", {
s("hello", {
t('print("hello '),
i(1),
t(' world")'),
}),
})

View File

@@ -0,0 +1,34 @@
-- Setup snippets here.
local ls = require("luasnip")
local s = ls.snippet
local sn = ls.snippet_node
local ms = ls.multi_snippet
local i = ls.insert_node
local f = ls.function_node
local c = ls.choice_node
local t = ls.text_node
ls.add_snippets("lua", {
-- Setup a new snippet file.
s("sf", {
t({
"-- Setup snippets.",
'local ls = require("luasnip")',
"local s = ls.snippet",
"local sn = ls.snippet_node",
"local ms = ls.multi_snippet",
"local i = ls.insert_node",
"local f = ls.function_node",
"local c = ls.choice_node",
"local t = ls.text_node",
"-- Add snippets",
}),
t('ls.add_snippets("'),
i(1, "<file-type>"),
t({
'", {',
"\t-- Define snippets here.",
"})",
}),
}),
})

View File

@@ -0,0 +1,64 @@
-- Setup snippets.
local ls = require("luasnip")
local s = ls.snippet
local sn = ls.snippet_node
local ms = ls.multi_snippet
local i = ls.insert_node
local f = ls.function_node
local c = ls.choice_node
local t = ls.text_node
local fmt = require("luasnip.extras.fmt").fmt
local rep = require("luasnip.extras").rep
-- Add snippets
ls.add_snippets("swift", {
-- Add a dependency snippet.
s("@d", fmt("@Dependency(\\.{}) var {}", { i(1), rep(1) })),
-- Add a dependency client.
s("@dc", fmt([[
public extension DependencyValues {{
var {}: {} {{
get: {{ self[{}.self] }}
set: {{ self[{}.self] = newValue }}
}}
}}
@DependencyClient
struct {} {{
// Insert interface here.
}}
extension {}: TestDependencyKey {{
static let testValue: {} = Self()
}}
]], {
i(1, "<var-name>"),
i(2, "<Type>"),
rep(2),
rep(2),
rep(2),
rep(2),
rep(2),
})
),
-- Add spi modifier snippet.
s("spi", fmt("@_spi({})", { i(1, "name") })),
-- Add spi import modifier snippet.
s("sii", fmt("@_spi({}) import {}", { i(1, "name"), i(2, "modlue") })),
-- Document a function.
s("doc", fmt([[
/// {}
///
/// - Parameters:
/// - {}: {}
]], { i(1, "A short description."), i(2, "<param>"), i(3, "<param-description>") }
)),
s("param", fmt([[
/// - {}: {}
]], { i(1, "<param>"), i(2, "<description>") })),
})