mirror of
https://github.com/m-housh/dotfiles.git
synced 2026-02-15 06:32:40 +00:00
feat: Working on snippets for nvim
This commit is contained in:
@@ -3,18 +3,22 @@ vim.g.mapleader = " "
|
|||||||
vim.g.maplocalleader = " "
|
vim.g.maplocalleader = " "
|
||||||
|
|
||||||
-- Auto commands
|
-- Auto commands
|
||||||
require('user.autocmd')
|
require("user.autocmd")
|
||||||
|
|
||||||
-- Plugins
|
-- Plugins
|
||||||
require('user.plugins')
|
require("user.plugins")
|
||||||
|
|
||||||
-- Key maps
|
-- Key maps
|
||||||
require('user.keymaps')
|
require("user.keymaps")
|
||||||
|
|
||||||
-- Theme (must stay after plugins are loaded)
|
-- Theme (must stay after plugins are loaded)
|
||||||
require('user.theme')
|
require("user.theme")
|
||||||
|
|
||||||
-- Common settings
|
-- Common settings
|
||||||
require('user.settings')
|
require("user.settings")
|
||||||
|
|
||||||
|
-- Snippets are setup in the luasnip settings, they get loaded from the snippets directory
|
||||||
|
-- based on filetype.
|
||||||
|
--require("user.snippets")
|
||||||
|
|
||||||
vim.o.shiftwidth = 2
|
vim.o.shiftwidth = 2
|
||||||
|
|||||||
@@ -2,8 +2,8 @@ vim.g.mapleader = " "
|
|||||||
vim.g.maplocalleader = " "
|
vim.g.maplocalleader = " "
|
||||||
|
|
||||||
local keymap = vim.keymap.set
|
local keymap = vim.keymap.set
|
||||||
local default_options = {noremap = true, silent = true}
|
local default_options = { noremap = true, silent = true }
|
||||||
local telescope = require('telescope.builtin')
|
local telescope = require("telescope.builtin")
|
||||||
local wk = require("which-key")
|
local wk = require("which-key")
|
||||||
|
|
||||||
local wk_add = function(mode, keymaps)
|
local wk_add = function(mode, keymaps)
|
||||||
@@ -20,9 +20,9 @@ end
|
|||||||
-- Insert Mode
|
-- Insert Mode
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
-- easier escape key mapping
|
-- easier escape key mapping
|
||||||
keymap('i', 'jk', '<ESC>', default_options)
|
keymap("i", "jk", "<ESC>", default_options)
|
||||||
wk_add("i", {
|
wk_add("i", {
|
||||||
{ "<C-s>", "<ESC>:write<CR>a", desc = "[S]ave" }
|
{ "<C-s>", "<ESC>:write<CR>a", desc = "[S]ave" },
|
||||||
})
|
})
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
@@ -36,7 +36,7 @@ wk_add("n", {
|
|||||||
|
|
||||||
{ "<leader>n", "<CMD>:noh<CR>", desc = "[N]o highlighting" },
|
{ "<leader>n", "<CMD>:noh<CR>", desc = "[N]o highlighting" },
|
||||||
{ "<leader>s", "<CMD>:set spell!<CR>", desc = "[S]pell check toggle" },
|
{ "<leader>s", "<CMD>:set spell!<CR>", desc = "[S]pell check toggle" },
|
||||||
{ "<C-n>", "<CMD>:Neotree toggle<CR>", desc = "Toggle Neotree" },
|
--{ "<C-n>", "<CMD>:Neotree toggle<CR>", desc = "Toggle Neotree" },
|
||||||
{ "<C-s>", "<CMD>:write<CR>", desc = "[S]ave" },
|
{ "<C-s>", "<CMD>:write<CR>", desc = "[S]ave" },
|
||||||
|
|
||||||
{ "J", ":move .+1<CR>==", desc = "Move line down" },
|
{ "J", ":move .+1<CR>==", desc = "Move line down" },
|
||||||
@@ -52,10 +52,10 @@ wk_add("n", {
|
|||||||
{ "<leader>fg", telescope.live_grep, desc = "[F]ind [G]rep" },
|
{ "<leader>fg", telescope.live_grep, desc = "[F]ind [G]rep" },
|
||||||
{ "<leader>fb", telescope.buffers, desc = "[F]ind [B]uffers" },
|
{ "<leader>fb", telescope.buffers, desc = "[F]ind [B]uffers" },
|
||||||
{ "<leader>fh", telescope.help_tags, desc = "[F]ind [H]elp" },
|
{ "<leader>fh", telescope.help_tags, desc = "[F]ind [H]elp" },
|
||||||
{ "<leader>fd", find_files('$DOTFILES'), desc = "[F]ind [D]otfiles" },
|
{ "<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>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>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>fz", find_files("$DOTFILES/zsh/config"), desc = "[F]ind [Z]sh config file" },
|
||||||
{ "<leader>z", "<CMD>:ZenMode<CR>", desc = "[Z]en Mode" },
|
{ "<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" },
|
-- { "K", ":move '<-2<CR>", desc = "Move selected block up" },
|
||||||
-- { "J", ":move '>+1<CR>", desc = "Move selected block down" },
|
-- { "J", ":move '>+1<CR>", desc = "Move selected block down" },
|
||||||
-- })
|
-- })
|
||||||
vim.keymap.set(
|
vim.keymap.set("v", "K", ":move '<-2<CR>gv=gv", { desc = "Move selected block up.", silent = true, noremap = true })
|
||||||
"v", "K",
|
vim.keymap.set("v", "J", ":move '>+1<CR>gv=gv", { desc = "Move selected block up.", silent = true, noremap = true })
|
||||||
":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.
|
-- Toggle term key maps, that get attached when terminal is opened.
|
||||||
function _G.set_terminal_keymaps()
|
function _G.set_terminal_keymaps()
|
||||||
local opts = { buffer = 0 }
|
local opts = { buffer = 0 }
|
||||||
keymap('t', '<esc>', [[<C-\><C-n>]], opts)
|
keymap("t", "<esc>", [[<C-\><C-n>]], opts)
|
||||||
end
|
end
|
||||||
vim.cmd('autocmd! TermOpen term://* lua set_terminal_keymaps()')
|
vim.cmd("autocmd! TermOpen term://* lua set_terminal_keymaps()")
|
||||||
|
|
||||||
-- LuaSnip Keymaps
|
-- LuaSnip Keymaps
|
||||||
--local ls = require('luasnip')
|
--local ls = require('luasnip')
|
||||||
@@ -99,7 +91,6 @@ vim.cmd('autocmd! TermOpen term://* lua set_terminal_keymaps()')
|
|||||||
-- end
|
-- end
|
||||||
-- end, { silent = true })
|
-- end, { silent = true })
|
||||||
|
|
||||||
|
|
||||||
-- <c-j>
|
-- <c-j>
|
||||||
-- This will jump backwards in the snippet.
|
-- This will jump backwards in the snippet.
|
||||||
-- vim.keymap.set({ "i", "s" }, "<c-j>", function()
|
-- vim.keymap.set({ "i", "s" }, "<c-j>", function()
|
||||||
|
|||||||
@@ -1,24 +1,44 @@
|
|||||||
|
-- The language servers to setup.
|
||||||
|
local lsp_servers = {
|
||||||
|
"bashls",
|
||||||
|
"clangd",
|
||||||
|
"dockerls",
|
||||||
|
"gopls",
|
||||||
|
"jsonls",
|
||||||
|
"lua_ls",
|
||||||
|
"marksman",
|
||||||
|
"sourcekit",
|
||||||
|
"yamlls",
|
||||||
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
"neovim/nvim-lspconfig",
|
"neovim/nvim-lspconfig",
|
||||||
event = { "BufReadPre", "BufNewFile" },
|
event = { "BufReadPre", "BufNewFile" },
|
||||||
dependencies = {
|
dependencies = {
|
||||||
"hrsh7th/cmp-nvim-lsp",
|
"hrsh7th/cmp-nvim-lsp",
|
||||||
{ "antosha417/nvim-lsp-file-operations", config = true },
|
{ "antosha417/nvim-lsp-file-operations", config = true },
|
||||||
|
"williamboman/mason.nvim",
|
||||||
|
"williamboman/mason-lspconfig.nvim",
|
||||||
},
|
},
|
||||||
config = function()
|
config = function()
|
||||||
|
require("mason").setup()
|
||||||
|
require("mason-lspconfig").setup({
|
||||||
|
opts = {
|
||||||
|
ensure_installed = lsp_servers,
|
||||||
|
},
|
||||||
|
})
|
||||||
local lspconfig = require("lspconfig")
|
local lspconfig = require("lspconfig")
|
||||||
local cmp_nvim_lsp = require("cmp_nvim_lsp")
|
local cmp_nvim_lsp = require("cmp_nvim_lsp")
|
||||||
local capabilities = cmp_nvim_lsp.default_capabilities()
|
local capabilities = cmp_nvim_lsp.default_capabilities()
|
||||||
local opts = { noremap = true, silent = true }
|
local opts = { noremap = true, silent = true }
|
||||||
local on_attach =
|
local on_attach = function(_, bufnr)
|
||||||
function(_, bufnr)
|
|
||||||
opts.buffer = bufnr
|
opts.buffer = bufnr
|
||||||
|
|
||||||
opts.desc = "Show line diagnostics"
|
opts.desc = "Show line diagnostics"
|
||||||
vim.keymap.set("n", "<leader>d", vim.diagnostic.open_float, opts)
|
vim.keymap.set("n", "<leader>d", vim.diagnostic.open_float, opts)
|
||||||
|
|
||||||
opts.desc = "Show diagnostics in Telescope"
|
opts.desc = "Show diagnostics in Telescope"
|
||||||
vim.keymaps.set("n", "<leader><leader>d", "<CMD>Telescope diagnostics bufnr=0<CR>", opts)
|
vim.keymap.set("n", "<leader><leader>d", "<CMD>Telescope diagnostics bufnr=0<CR>", opts)
|
||||||
|
|
||||||
opts.desc = "Show documentation for what is under cursor"
|
opts.desc = "Show documentation for what is under cursor"
|
||||||
vim.keymap.set("n", "<C-k>", vim.lsp.buf.hover, opts)
|
vim.keymap.set("n", "<C-k>", vim.lsp.buf.hover, opts)
|
||||||
@@ -43,7 +63,10 @@ return {
|
|||||||
|
|
||||||
opts.desc = "Goto next diagnostic"
|
opts.desc = "Goto next diagnostic"
|
||||||
vim.keymap.set("n", "]d", vim.diagnostic.goto_next, opts)
|
vim.keymap.set("n", "]d", vim.diagnostic.goto_next, opts)
|
||||||
end, lspconfig["sourcekit"].setup({
|
end
|
||||||
|
|
||||||
|
for _, lsp in ipairs(lsp_servers) do
|
||||||
|
lspconfig[lsp].setup({
|
||||||
capabilities = capabilities,
|
capabilities = capabilities,
|
||||||
on_attach = on_attach,
|
on_attach = on_attach,
|
||||||
on_init = function(client)
|
on_init = function(client)
|
||||||
@@ -52,6 +75,7 @@ return {
|
|||||||
client.offset_encoding = "utf-8"
|
client.offset_encoding = "utf-8"
|
||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
|
end
|
||||||
|
|
||||||
-- nice icons
|
-- nice icons
|
||||||
local signs = { Error = " ", Warn = " ", Hint = " ", Info = " " }
|
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" })
|
vim.keymap.set("n", "<leader>rn", vim.lsp.buf.rename, { desc = "[R]e-[N]ame" })
|
||||||
end,
|
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 s = ls.snippet
|
||||||
local sn = ls.snippet_node
|
local sn = ls.snippet_node
|
||||||
local ms = ls.multi_snippet
|
local ms = ls.multi_snippet
|
||||||
@@ -7,3 +8,10 @@ local f = ls.function_node
|
|||||||
local c = ls.choice_node
|
local c = ls.choice_node
|
||||||
local t = ls.text_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