mirror of
https://github.com/m-housh/dotfiles.git
synced 2026-02-14 14:12:41 +00:00
feat: Working on snippets for nvim
This commit is contained in:
@@ -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()
|
||||
|
||||
@@ -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,
|
||||
-- },
|
||||
-- }
|
||||
-- }
|
||||
|
||||
45
nvim/m-housh/lua/user/plugin/luasnip.lua
Normal file
45
nvim/m-housh/lua/user/plugin/luasnip.lua
Normal 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,
|
||||
}
|
||||
@@ -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
10
nvim/m-housh/lua/user/snippets/init.lua
Executable file → Normal 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")'),
|
||||
}),
|
||||
})
|
||||
|
||||
34
nvim/m-housh/lua/user/snippets/lua.lua
Normal file
34
nvim/m-housh/lua/user/snippets/lua.lua
Normal 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.",
|
||||
"})",
|
||||
}),
|
||||
}),
|
||||
})
|
||||
64
nvim/m-housh/lua/user/snippets/swift.lua
Normal file
64
nvim/m-housh/lua/user/snippets/swift.lua
Normal 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>") })),
|
||||
})
|
||||
Reference in New Issue
Block a user