(neovim) switch to own configuration
This commit is contained in:
parent
957ec52ca8
commit
977453fa05
51 changed files with 1145 additions and 358 deletions
|
@ -1,175 +0,0 @@
|
||||||
-- disable netrw
|
|
||||||
vim.g.loaded_netrw = 1
|
|
||||||
vim.g.loaded_netrwPlugin = 1
|
|
||||||
|
|
||||||
-- install Lazy
|
|
||||||
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
|
|
||||||
if not vim.loop.fs_stat(lazypath) then
|
|
||||||
vim.fn.system({
|
|
||||||
"git",
|
|
||||||
"clone",
|
|
||||||
"--filter=blob:none",
|
|
||||||
"https://github.com/folke/lazy.nvim.git",
|
|
||||||
"--branch=stable", -- latest stable release
|
|
||||||
lazypath,
|
|
||||||
})
|
|
||||||
end
|
|
||||||
vim.opt.rtp:prepend(lazypath)
|
|
||||||
|
|
||||||
-- define plugins
|
|
||||||
require("lazy").setup({
|
|
||||||
"jdhao/whitespace.nvim",
|
|
||||||
"lewis6991/gitsigns.nvim",
|
|
||||||
"lukas-reineke/indent-blankline.nvim",
|
|
||||||
"numToStr/Comment.nvim",
|
|
||||||
"NvChad/nvim-colorizer.lua",
|
|
||||||
"nvim-lualine/lualine.nvim",
|
|
||||||
"nvim-treesitter/nvim-treesitter",
|
|
||||||
"tanvirtin/monokai.nvim",
|
|
||||||
{ "nvim-telescope/telescope.nvim",
|
|
||||||
dependencies = { 'nvim-lua/plenary.nvim' }
|
|
||||||
},
|
|
||||||
{ "nvim-neo-tree/neo-tree.nvim",
|
|
||||||
dependencies = {
|
|
||||||
"nvim-lua/plenary.nvim",
|
|
||||||
"nvim-tree/nvim-web-devicons",
|
|
||||||
"MunifTanjim/nui.nvim"
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"folke/which-key.nvim",
|
|
||||||
config = function()
|
|
||||||
vim.o.timeout = true
|
|
||||||
vim.o.timeoutlen = 300
|
|
||||||
require("which-key").setup({
|
|
||||||
})
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
-- start & setup plugins
|
|
||||||
-- colorscheme has to be first
|
|
||||||
require("monokai").setup()
|
|
||||||
require("gitsigns").setup({
|
|
||||||
signs = {
|
|
||||||
add = { text = "▎" },
|
|
||||||
change = { text = "▎" },
|
|
||||||
delete = { text = "▎" },
|
|
||||||
topdelete = { text = "契" },
|
|
||||||
changedelete = { text = "▎" },
|
|
||||||
untracked = { text = "▎" },
|
|
||||||
},
|
|
||||||
})
|
|
||||||
require("indent_blankline").setup()
|
|
||||||
require("Comment").setup()
|
|
||||||
require("colorizer").setup()
|
|
||||||
require("lualine").setup({
|
|
||||||
options = {
|
|
||||||
component_separators = '',
|
|
||||||
icons_enabled = true,
|
|
||||||
section_separators = '',
|
|
||||||
theme = "molokai",
|
|
||||||
},
|
|
||||||
sections = {
|
|
||||||
lualine_a = { "mode" },
|
|
||||||
lualine_b = { { "filename", file_status = true, path = 1 } },
|
|
||||||
lualine_c = { "branch" },
|
|
||||||
lualine_x = { "filetype" },
|
|
||||||
lualine_y = { "progress" },
|
|
||||||
lualine_z = { "location" },
|
|
||||||
},
|
|
||||||
tabline = {
|
|
||||||
lualine_a = { "buffers" },
|
|
||||||
},
|
|
||||||
})
|
|
||||||
require("nvim-treesitter.configs").setup({
|
|
||||||
build = ":TSUpdate",
|
|
||||||
ensure_installed = { "bash", "python", "terraform", "vim", "yaml" },
|
|
||||||
highlight = {
|
|
||||||
enable = true,
|
|
||||||
use_languagetree = true,
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
require("neo-tree").setup({
|
|
||||||
close_if_last_window = false,
|
|
||||||
sort_case_insensitive = true,
|
|
||||||
window = {
|
|
||||||
position = "left",
|
|
||||||
auto_expand_width = true,
|
|
||||||
-- width = 100,
|
|
||||||
mappings = {
|
|
||||||
["s"] = "open_split",
|
|
||||||
["v"] = "open_vsplit",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
nesting_rules = {},
|
|
||||||
filesystem = {
|
|
||||||
filtered_items = {
|
|
||||||
visible = true,
|
|
||||||
hide_dotfiles = false,
|
|
||||||
hide_gitignored = true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
-- modify colorcheme
|
|
||||||
vim.api.nvim_set_hl(0, "ColorColumn", { bg = "#770000" })
|
|
||||||
vim.api.nvim_set_hl(0, "DiffChange", { bg = NONE, fg = "#e7c547" })
|
|
||||||
vim.api.nvim_set_hl(0, "DiffText", { bg = NONE, fg = "#ff8700" })
|
|
||||||
vim.api.nvim_set_hl(0, "LineNr", { bg = NONE, fg = "#465457" })
|
|
||||||
vim.api.nvim_set_hl(0, "NonText", { bg = NONE })
|
|
||||||
vim.api.nvim_set_hl(0, "Normal", { bg = NONE })
|
|
||||||
vim.api.nvim_set_hl(0, "SignColumn", { bg = NONE })
|
|
||||||
vim.api.nvim_set_hl(0, "SpellBad", { bg = "#770000", fg = "#ffffff" })
|
|
||||||
vim.api.nvim_set_hl(0, "Visual", { bg = "#005577", fg = "#ffffff" })
|
|
||||||
|
|
||||||
-- global options
|
|
||||||
vim.opt.list = true
|
|
||||||
vim.opt.cursorline = true
|
|
||||||
vim.opt.expandtab = true
|
|
||||||
vim.opt.gdefault = true
|
|
||||||
vim.opt.hlsearch = false
|
|
||||||
vim.opt.ignorecase = true
|
|
||||||
vim.opt.number = true
|
|
||||||
vim.opt.shiftround = true
|
|
||||||
vim.opt.showmode = false
|
|
||||||
vim.opt.smartcase = true
|
|
||||||
vim.opt.splitbelow = true
|
|
||||||
vim.opt.splitright = true
|
|
||||||
vim.opt.termguicolors = true
|
|
||||||
vim.opt.writebackup = false
|
|
||||||
vim.opt.clipboard = ""
|
|
||||||
vim.opt.mouse = ""
|
|
||||||
vim.opt.tabstop = 2
|
|
||||||
vim.opt.scrolloff = 5
|
|
||||||
vim.opt.updatetime = 100
|
|
||||||
vim.opt.shiftwidth = 2
|
|
||||||
vim.opt.showtabline = 2
|
|
||||||
vim.opt.softtabstop = 2
|
|
||||||
|
|
||||||
-- configure mappings
|
|
||||||
vim.g.mapleader = " "
|
|
||||||
vim.keymap.set("i", "<C-a>", "<esc>I", { silent = true })
|
|
||||||
vim.keymap.set("i", "<C-e>", "<esc>A", { silent = true })
|
|
||||||
vim.keymap.set("n", "<esc><cr>", "<esc><cmd>wq!<cr>", { silent = true })
|
|
||||||
vim.keymap.set("n", "<leader>/", "<esc><cmd>lua require('Comment.api').toggle.linewise.count(vim.v.count > 0 and vim.v.count or 1)<cr>", { silent = true, desc = "toggle comment" })
|
|
||||||
vim.keymap.set("n", "<leader>c", '<cmd>execute "set colorcolumn=" . (&colorcolumn == "" ? "80,120" : "")<cr>', { silent = true, desc = "toggle column" })
|
|
||||||
vim.keymap.set("n", "<leader>fb", require("telescope.builtin").buffers, { desc = "find buffer" })
|
|
||||||
vim.keymap.set("n", "<leader>ff", require("telescope.builtin").find_files, { desc = "find file" })
|
|
||||||
vim.keymap.set("n", "<leader>fg", require("telescope.builtin").live_grep, { desc = "find text" })
|
|
||||||
vim.keymap.set("n", "<leader>h", "<cmd>set hlsearch!<cr>", { silent = true, desc = "toggle hlsearch" })
|
|
||||||
vim.keymap.set("n", "<leader>j", "<cmd>bprevious<cr>", { silent = true, desc = "previous buffer" })
|
|
||||||
vim.keymap.set("n", "<leader>k", "<cmd>bnext<cr>", { silent = true, desc = "next buffer" })
|
|
||||||
vim.keymap.set("n", "<leader>n", "<cmd>set nonumber!<cr><cmd>Gitsigns toggle_signs<cr><cmd>IndentBlanklineToggle<cr>", { silent = true, desc = "toggle decorations" })
|
|
||||||
vim.keymap.set("n", "<leader>s", "<cmd>set spell!<cr>", { silent = true, desc = "toggle spell" })
|
|
||||||
vim.keymap.set("n", "<leader>t", "<cmd>Neotree toggle<cr>", { silent = true, desc = "toggle tree" })
|
|
||||||
vim.keymap.set("n", "<leader>x", "<cmd>bd<cr>", { silent = true, desc = "close buffer" })
|
|
||||||
vim.keymap.set("n", "<tab>", "<C-w>w", { silent = true })
|
|
||||||
vim.keymap.set("v", "<leader>/", "<esc><cmd>lua require('Comment.api').toggle.linewise(vim.fn.visualmode())<cr>", { silent = true, desc = "toggle comment" })
|
|
||||||
|
|
||||||
-- autocmd
|
|
||||||
vim.api.nvim_create_autocmd({ "BufRead", "BufNewFile" }, {
|
|
||||||
pattern = {"*.gotmpl"},
|
|
||||||
callback = function() vim.bo.filetype = "yaml" end,
|
|
||||||
})
|
|
2
_saved/vim/lazyvim/init.lua
Normal file
2
_saved/vim/lazyvim/init.lua
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
-- bootstrap lazy.nvim, LazyVim and your plugins
|
||||||
|
require("config.lazy")
|
25
_saved/vim/lazyvim/lua/config/autocmds.lua
Normal file
25
_saved/vim/lazyvim/lua/config/autocmds.lua
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
-- Autocmds are automatically loaded on the VeryLazy event
|
||||||
|
-- Default autocmds that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/autocmds.lua
|
||||||
|
--
|
||||||
|
-- Add any additional autocmds here
|
||||||
|
-- with `vim.api.nvim_create_autocmd`
|
||||||
|
--
|
||||||
|
-- Or remove existing autocmds by their group name (which is prefixed with `lazyvim_` for the defaults)
|
||||||
|
-- e.g. vim.api.nvim_del_augroup_by_name("lazyvim_wrap_spell")
|
||||||
|
|
||||||
|
vim.api.nvim_create_autocmd({ "BufRead", "BufNewFile" }, {
|
||||||
|
pattern = { "helmfile.y?ml", "*.gotmpl" },
|
||||||
|
callback = function()
|
||||||
|
vim.cmd("set filetype=helm")
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
vim.api.nvim_create_autocmd({ "BufReadPre" }, {
|
||||||
|
callback = function()
|
||||||
|
vim.api.nvim_set_hl(0, "ColorColumn", { bg = "#770000" })
|
||||||
|
vim.api.nvim_set_hl(0, "DiffChange", { bg = "NONE", fg = "#e7c547" })
|
||||||
|
vim.api.nvim_set_hl(0, "DiffText", { bg = "NONE", fg = "#ff8700" })
|
||||||
|
vim.api.nvim_set_hl(0, "SpellBad", { bg = "#770000", fg = "#ffffff" })
|
||||||
|
vim.api.nvim_set_hl(0, "Visual", { bg = "#0094d8", fg = "#ffffff" })
|
||||||
|
end,
|
||||||
|
})
|
67
_saved/vim/lazyvim/lua/config/keymaps.lua
Normal file
67
_saved/vim/lazyvim/lua/config/keymaps.lua
Normal file
|
@ -0,0 +1,67 @@
|
||||||
|
-- Keymaps are automatically loaded on the VeryLazy event
|
||||||
|
-- Default keymaps that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/keymaps.lua
|
||||||
|
-- Add any additional keymaps here
|
||||||
|
|
||||||
|
local map = vim.keymap.set
|
||||||
|
local nomap = vim.keymap.del
|
||||||
|
|
||||||
|
nomap("n", "<leader><space>")
|
||||||
|
nomap("n", "<leader>,")
|
||||||
|
nomap("n", "<leader>.")
|
||||||
|
nomap("n", "<leader>?")
|
||||||
|
nomap("n", "<leader>K")
|
||||||
|
nomap("n", "<leader>l")
|
||||||
|
nomap("n", "<leader>L")
|
||||||
|
nomap("n", "<leader>S")
|
||||||
|
nomap("n", "<leader>`")
|
||||||
|
|
||||||
|
nomap("n", "<leader>bb")
|
||||||
|
nomap("n", "<leader>bD")
|
||||||
|
nomap("n", "<leader>bo")
|
||||||
|
|
||||||
|
nomap("n", "<leader>E")
|
||||||
|
|
||||||
|
nomap("n", "<leader>fB")
|
||||||
|
nomap("n", "<leader>fe")
|
||||||
|
nomap("n", "<leader>fE")
|
||||||
|
nomap("n", "<leader>fn")
|
||||||
|
nomap("n", "<leader>fp")
|
||||||
|
nomap("n", "<leader>fR")
|
||||||
|
nomap("n", "<leader>ft")
|
||||||
|
nomap("n", "<leader>fT")
|
||||||
|
|
||||||
|
nomap("n", "<leader>gY")
|
||||||
|
nomap("n", "<leader>gS")
|
||||||
|
|
||||||
|
nomap("n", "<leader>qq")
|
||||||
|
|
||||||
|
nomap("n", "<leader>xl")
|
||||||
|
nomap("n", "<leader>xq")
|
||||||
|
|
||||||
|
map("i", "<C-a>", "<esc>I")
|
||||||
|
map("i", "<C-e>", "<esc>A")
|
||||||
|
|
||||||
|
map("n", "<esc><cr>", "<esc><cmd>wq!<cr>", { desc = "Save and Exit", remap = true })
|
||||||
|
map("n", "<tab>", "<C-w>w", { desc = "Switch Pane", remap = true })
|
||||||
|
|
||||||
|
map("n", "<leader>-", "<C-W>s", { desc = "Split Horizontally", remap = true })
|
||||||
|
map("n", "<leader>/", "gcc", { desc = "Toggle Comments", remap = true })
|
||||||
|
map("n", "<leader>|", "<C-W>v", { desc = "Split Vertically", remap = true })
|
||||||
|
map("n", "<leader>bl", function()
|
||||||
|
Snacks.picker.buffers()
|
||||||
|
end, { desc = "Buffer List", remap = true })
|
||||||
|
map("n", "<leader>b[", "<cmd>bprevious<CR>", { desc = "Previous Buffer", remap = true })
|
||||||
|
map("n", "<leader>b]", "<cmd>bnext<CR>", { desc = "Next Buffer", remap = true })
|
||||||
|
map("n", "<leader>bn", "<cmd>enew<CR>", { desc = "New Buffer", remap = true })
|
||||||
|
map("n", "<leader>h", "<cmd>set hlsearch!<cr>", { desc = "Toggle hlsearch", remap = true })
|
||||||
|
map(
|
||||||
|
"n",
|
||||||
|
"<leader>m",
|
||||||
|
'<cmd>execute "set colorcolumn=" . (&colorcolumn == "" ? "80,120" : "")<cr>',
|
||||||
|
{ desc = "Toggle Columns", remap = true }
|
||||||
|
)
|
||||||
|
map("n", "<leader>T", function()
|
||||||
|
Snacks.terminal()
|
||||||
|
end, { desc = "Terminal", remap = true })
|
||||||
|
|
||||||
|
map("v", "<leader>/", "gc", { desc = "Toggle Comments", remap = true })
|
40
_saved/vim/lazyvim/lua/plugins/lualine.lua
Normal file
40
_saved/vim/lazyvim/lua/plugins/lualine.lua
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
return {
|
||||||
|
"nvim-lualine/lualine.nvim",
|
||||||
|
opts = {
|
||||||
|
options = {
|
||||||
|
theme = "powerline",
|
||||||
|
section_separators = "",
|
||||||
|
component_separators = "",
|
||||||
|
globalstatus = false,
|
||||||
|
},
|
||||||
|
sections = {
|
||||||
|
lualine_c = {
|
||||||
|
{
|
||||||
|
"diagnostics",
|
||||||
|
symbols = {
|
||||||
|
error = LazyVim.config.icons.diagnostics.Error,
|
||||||
|
warn = LazyVim.config.icons.diagnostics.Warn,
|
||||||
|
info = LazyVim.config.icons.diagnostics.Info,
|
||||||
|
hint = LazyVim.config.icons.diagnostics.Hint,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{ "filetype", icon_only = true, separator = "", padding = { left = 1, right = 0 } },
|
||||||
|
{ "filename", file_status = true, path = 1 },
|
||||||
|
},
|
||||||
|
lualine_x = {
|
||||||
|
{
|
||||||
|
"diff",
|
||||||
|
symbols = {
|
||||||
|
added = LazyVim.config.icons.git.added,
|
||||||
|
modified = LazyVim.config.icons.git.modified,
|
||||||
|
removed = LazyVim.config.icons.git.removed,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
lualine_z = {},
|
||||||
|
},
|
||||||
|
tabline = {
|
||||||
|
lualine_a = { "buffers" },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
15
_saved/vim/lazyvim/lua/plugins/monokai.lua
Normal file
15
_saved/vim/lazyvim/lua/plugins/monokai.lua
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
return {
|
||||||
|
{
|
||||||
|
"loctvl842/monokai-pro.nvim",
|
||||||
|
priority = 1000,
|
||||||
|
opts = {
|
||||||
|
filter = "classic",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"LazyVim/LazyVim",
|
||||||
|
opts = {
|
||||||
|
colorscheme = "monokai-pro",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
28
_saved/vim/lazyvim/lua/plugins/snacks.lua
Normal file
28
_saved/vim/lazyvim/lua/plugins/snacks.lua
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
return {
|
||||||
|
"folke/snacks.nvim",
|
||||||
|
opts = {
|
||||||
|
dashboard = { enabled = false },
|
||||||
|
},
|
||||||
|
keys = {
|
||||||
|
{
|
||||||
|
"<leader>n",
|
||||||
|
function()
|
||||||
|
vim.cmd("set number!")
|
||||||
|
vim.cmd('execute "set signcolumn=" . (&signcolumn == "yes" ? "no" : "yes")')
|
||||||
|
if Snacks.indent.enabled then
|
||||||
|
Snacks.indent.disable()
|
||||||
|
else
|
||||||
|
Snacks.indent.enable()
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
desc = "Toggle Decorations",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>e",
|
||||||
|
function()
|
||||||
|
Snacks.explorer()
|
||||||
|
end,
|
||||||
|
desc = "File Explorer",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
18
_saved/vim/lazyvim/lua/plugins/treesitter.lua
Normal file
18
_saved/vim/lazyvim/lua/plugins/treesitter.lua
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
return {
|
||||||
|
"nvim-treesitter/nvim-treesitter",
|
||||||
|
opts = {
|
||||||
|
ensure_installed = {
|
||||||
|
"bash",
|
||||||
|
"diff",
|
||||||
|
"gotmpl",
|
||||||
|
"helm",
|
||||||
|
"json",
|
||||||
|
"lua",
|
||||||
|
"markdown",
|
||||||
|
"markdown_inline",
|
||||||
|
"python",
|
||||||
|
"terraform",
|
||||||
|
"vim",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
35
_saved/vim/lazyvim/lua/plugins/which-key.lua
Normal file
35
_saved/vim/lazyvim/lua/plugins/which-key.lua
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
return {
|
||||||
|
"folke/which-key.nvim",
|
||||||
|
event = "VeryLazy",
|
||||||
|
opts_extend = { "spec" },
|
||||||
|
opts = {
|
||||||
|
preset = "helix",
|
||||||
|
icons = {
|
||||||
|
mappings = false,
|
||||||
|
},
|
||||||
|
defaults = {},
|
||||||
|
spec = {
|
||||||
|
{
|
||||||
|
mode = { "n", "v" },
|
||||||
|
{
|
||||||
|
"<leader>b",
|
||||||
|
group = "buffer",
|
||||||
|
expand = function()
|
||||||
|
return require("which-key.extras").expand.buf()
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
{ "<leader><tab>", group = "tabs", hidden = true },
|
||||||
|
{ "<leader>d", group = "debug", hidden = true },
|
||||||
|
{ "<leader>dp", group = "profiler", hidden = true },
|
||||||
|
{ "<leader>gh", group = "hunks", hidden = true },
|
||||||
|
{ "<leader>q", group = "quit/session", hidden = true },
|
||||||
|
{ "<leader>s", group = "search", hidden = true },
|
||||||
|
{ "<leader>t", hidden = true },
|
||||||
|
{ "<leader>u", group = "ui", hidden = true },
|
||||||
|
{ "<leader>w", hidden = true },
|
||||||
|
{ "<leader>x", group = "diagnostics/quickfix", hidden = true },
|
||||||
|
{ "gx", desc = "Open with system app", hidden = true },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
3
_saved/vim/lazyvim/stylua.toml
Normal file
3
_saved/vim/lazyvim/stylua.toml
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
indent_type = "Spaces"
|
||||||
|
indent_width = 2
|
||||||
|
column_width = 120
|
|
@ -1,2 +1,2 @@
|
||||||
-- bootstrap lazy.nvim, LazyVim and your plugins
|
require("config")
|
||||||
require("config.lazy")
|
require("core")
|
||||||
|
|
20
config/common/nvim/lsp/lua.lua
Normal file
20
config/common/nvim/lsp/lua.lua
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
return {
|
||||||
|
cmd = { "lua-language-server" },
|
||||||
|
filetypes = { "lua" },
|
||||||
|
settings = {
|
||||||
|
Lua = {
|
||||||
|
diagnostics = {
|
||||||
|
globals = {
|
||||||
|
"vim",
|
||||||
|
"Snacks",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
capabilities = vim.tbl_deep_extend("force", {}, vim.lsp.protocol.make_client_capabilities(), {
|
||||||
|
fileOperations = {
|
||||||
|
didRename = true,
|
||||||
|
willRename = true,
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
}
|
5
config/common/nvim/lsp/terraform.lua
Normal file
5
config/common/nvim/lsp/terraform.lua
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
return {
|
||||||
|
cmd = { "terraform-ls", "serve" },
|
||||||
|
filetypes = { "terraform", "hcl" },
|
||||||
|
root_markers = { ".terraform", ".git" },
|
||||||
|
}
|
|
@ -1,25 +1,100 @@
|
||||||
-- Autocmds are automatically loaded on the VeryLazy event
|
-- don't auto comment new line
|
||||||
-- Default autocmds that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/autocmds.lua
|
vim.api.nvim_create_autocmd("BufEnter", { command = [[set formatoptions-=cro]] })
|
||||||
--
|
|
||||||
-- Add any additional autocmds here
|
|
||||||
-- with `vim.api.nvim_create_autocmd`
|
|
||||||
--
|
|
||||||
-- Or remove existing autocmds by their group name (which is prefixed with `lazyvim_` for the defaults)
|
|
||||||
-- e.g. vim.api.nvim_del_augroup_by_name("lazyvim_wrap_spell")
|
|
||||||
|
|
||||||
vim.api.nvim_create_autocmd({ "BufRead", "BufNewFile" }, {
|
-- resize neovim split when terminal is resized
|
||||||
pattern = { "helmfile.y?ml", "*.gotmpl" },
|
vim.api.nvim_command("autocmd VimResized * wincmd =")
|
||||||
|
|
||||||
|
-- enable spell for text files
|
||||||
|
vim.api.nvim_create_autocmd("FileType", {
|
||||||
|
group = vim.api.nvim_create_augroup("spell", { clear = true }),
|
||||||
|
pattern = { "text", "plaintex", "typst", "gitcommit", "markdown" },
|
||||||
callback = function()
|
callback = function()
|
||||||
vim.cmd("set filetype=helm")
|
vim.api.nvim_set_hl(0, "SpellBad", { bg = "#770000", fg = "#ffffff" })
|
||||||
|
vim.opt_local.spell = true
|
||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
-- set some colors
|
||||||
vim.api.nvim_create_autocmd({ "BufReadPre" }, {
|
vim.api.nvim_create_autocmd({ "BufReadPre" }, {
|
||||||
callback = function()
|
callback = function()
|
||||||
vim.api.nvim_set_hl(0, "ColorColumn", { bg = "#770000" })
|
vim.api.nvim_set_hl(0, "ColorColumn", { bg = "#770000" })
|
||||||
vim.api.nvim_set_hl(0, "DiffChange", { bg = "NONE", fg = "#e7c547" })
|
vim.api.nvim_set_hl(0, "DiffChange", { bg = "NONE", fg = "#e7c547" })
|
||||||
vim.api.nvim_set_hl(0, "DiffText", { bg = "NONE", fg = "#ff8700" })
|
vim.api.nvim_set_hl(0, "DiffText", { bg = "NONE", fg = "#ff8700" })
|
||||||
vim.api.nvim_set_hl(0, "SpellBad", { bg = "#770000", fg = "#ffffff" })
|
|
||||||
vim.api.nvim_set_hl(0, "Visual", { bg = "#0094d8", fg = "#ffffff" })
|
vim.api.nvim_set_hl(0, "Visual", { bg = "#0094d8", fg = "#ffffff" })
|
||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
-- fix dimmed elements in Snacks.picker
|
||||||
|
vim.api.nvim_create_autocmd("User", {
|
||||||
|
pattern = "VeryLazy",
|
||||||
|
callback = function()
|
||||||
|
Snacks.util.set_hl({
|
||||||
|
PickerDir = { link = "Text" },
|
||||||
|
PickerPathHidden = { link = "Text" },
|
||||||
|
PickerPathIgnored = { link = "Comment" },
|
||||||
|
PickerGitStatusUntracked = { link = "Special" },
|
||||||
|
}, { prefix = "Snacks" })
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
-- remember last location
|
||||||
|
vim.api.nvim_create_autocmd("BufReadPost", {
|
||||||
|
group = vim.api.nvim_create_augroup("last-loc", { clear = true }),
|
||||||
|
callback = function(event)
|
||||||
|
local exclude = { "gitcommit" }
|
||||||
|
local buf = event.buf
|
||||||
|
if vim.tbl_contains(exclude, vim.bo[buf].filetype) or vim.b[buf].my_last_loc then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
vim.b[buf].my_last_loc = true
|
||||||
|
local mark = vim.api.nvim_buf_get_mark(buf, '"')
|
||||||
|
local lcount = vim.api.nvim_buf_line_count(buf)
|
||||||
|
if mark[1] > 0 and mark[1] <= lcount then
|
||||||
|
pcall(vim.api.nvim_win_set_cursor, 0, mark)
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
-- lsp
|
||||||
|
vim.api.nvim_create_autocmd("LspAttach", {
|
||||||
|
group = vim.api.nvim_create_augroup("lsp-attach", { clear = true }),
|
||||||
|
callback = function(event)
|
||||||
|
local map = function(keys, func, desc)
|
||||||
|
vim.keymap.set("n", keys, func, { buffer = event.buf, desc = desc })
|
||||||
|
end
|
||||||
|
map("<leader>cd", vim.diagnostic.open_float, "diagnostic (float)")
|
||||||
|
map("<leader>ch", vim.lsp.buf.hover, "help")
|
||||||
|
map("<leader>ca", vim.lsp.buf.code_action, "actions")
|
||||||
|
map("<leader>cf", vim.lsp.buf.format, "format file")
|
||||||
|
local function client_supports_method(client, method, bufnr)
|
||||||
|
if vim.fn.has("nvim-0.11") == 1 then
|
||||||
|
return client:supports_method(method, bufnr)
|
||||||
|
else
|
||||||
|
return client.supports_method(method, { bufnr = bufnr })
|
||||||
|
end
|
||||||
|
end
|
||||||
|
local client = vim.lsp.get_client_by_id(event.data.client_id)
|
||||||
|
if
|
||||||
|
client and client_supports_method(client, vim.lsp.protocol.Methods.textDocument_documentHighlight, event.buf)
|
||||||
|
then
|
||||||
|
local highlight_augroup = vim.api.nvim_create_augroup("lsp-highlight", { clear = false })
|
||||||
|
vim.api.nvim_create_autocmd({ "CursorHold", "CursorHoldI" }, {
|
||||||
|
buffer = event.buf,
|
||||||
|
group = highlight_augroup,
|
||||||
|
callback = vim.lsp.buf.document_highlight,
|
||||||
|
})
|
||||||
|
vim.api.nvim_create_autocmd({ "CursorMoved", "CursorMovedI" }, {
|
||||||
|
buffer = event.buf,
|
||||||
|
group = highlight_augroup,
|
||||||
|
callback = vim.lsp.buf.clear_references,
|
||||||
|
})
|
||||||
|
vim.api.nvim_create_autocmd("LspDetach", {
|
||||||
|
group = vim.api.nvim_create_augroup("lsp-detach", { clear = true }),
|
||||||
|
callback = function(event2)
|
||||||
|
vim.lsp.buf.clear_references()
|
||||||
|
vim.api.nvim_clear_autocmds({ group = "lsp-highlight", buffer = event2.buf })
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
3
config/common/nvim/lua/config/init.lua
Normal file
3
config/common/nvim/lua/config/init.lua
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
require("config.settings")
|
||||||
|
require("config.keymaps")
|
||||||
|
require("config.autocmds")
|
|
@ -1,67 +1,74 @@
|
||||||
-- Keymaps are automatically loaded on the VeryLazy event
|
vim.g.mapleader = " "
|
||||||
-- Default keymaps that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/keymaps.lua
|
vim.g.maplocalleader = "\\"
|
||||||
-- Add any additional keymaps here
|
|
||||||
|
|
||||||
local map = vim.keymap.set
|
local map = vim.keymap.set
|
||||||
local nomap = vim.keymap.del
|
|
||||||
|
|
||||||
nomap("n", "<leader><space>")
|
|
||||||
nomap("n", "<leader>,")
|
|
||||||
nomap("n", "<leader>.")
|
|
||||||
nomap("n", "<leader>?")
|
|
||||||
nomap("n", "<leader>K")
|
|
||||||
nomap("n", "<leader>l")
|
|
||||||
nomap("n", "<leader>L")
|
|
||||||
nomap("n", "<leader>S")
|
|
||||||
nomap("n", "<leader>`")
|
|
||||||
|
|
||||||
nomap("n", "<leader>bb")
|
|
||||||
nomap("n", "<leader>bD")
|
|
||||||
nomap("n", "<leader>bo")
|
|
||||||
|
|
||||||
nomap("n", "<leader>E")
|
|
||||||
|
|
||||||
nomap("n", "<leader>fB")
|
|
||||||
nomap("n", "<leader>fe")
|
|
||||||
nomap("n", "<leader>fE")
|
|
||||||
nomap("n", "<leader>fn")
|
|
||||||
nomap("n", "<leader>fp")
|
|
||||||
nomap("n", "<leader>fR")
|
|
||||||
nomap("n", "<leader>ft")
|
|
||||||
nomap("n", "<leader>fT")
|
|
||||||
|
|
||||||
nomap("n", "<leader>gY")
|
|
||||||
nomap("n", "<leader>gS")
|
|
||||||
|
|
||||||
nomap("n", "<leader>qq")
|
|
||||||
|
|
||||||
nomap("n", "<leader>xl")
|
|
||||||
nomap("n", "<leader>xq")
|
|
||||||
|
|
||||||
map("i", "<C-a>", "<esc>I")
|
map("i", "<C-a>", "<esc>I")
|
||||||
map("i", "<C-e>", "<esc>A")
|
map("i", "<C-e>", "<esc>A")
|
||||||
|
|
||||||
map("n", "<esc><cr>", "<esc><cmd>wq!<cr>", { desc = "Save and Exit", remap = true })
|
map("v", "<leader>/", "gc", { desc = "toggle comments", remap = true })
|
||||||
map("n", "<tab>", "<C-w>w", { desc = "Switch Pane", remap = true })
|
|
||||||
|
|
||||||
map("n", "<leader>-", "<C-W>s", { desc = "Split Horizontally", remap = true })
|
map("n", "<esc><cr>", "<cmd>wqa<cr>", { desc = "save and exit", remap = true })
|
||||||
map("n", "<leader>/", "gcc", { desc = "Toggle Comments", remap = true })
|
map("n", "<esc><esc><cr>", "<cmd>wqa<cr>", { desc = "save and exit", remap = true })
|
||||||
map("n", "<leader>|", "<C-W>v", { desc = "Split Vertically", remap = true })
|
map("n", "<tab>", "<C-w>w", { desc = "switch pane", remap = true })
|
||||||
|
|
||||||
|
map("n", "+", ":vertical resize +5<CR>")
|
||||||
|
map("n", "_", ":vertical resize -5<CR>")
|
||||||
|
map("n", "=", ":resize +5<CR>")
|
||||||
|
map("n", "-", ":resize -5<CR>")
|
||||||
|
|
||||||
|
map("n", "<leader>-", "<C-W>s", { desc = "split horizontally", remap = true })
|
||||||
|
map("n", "<leader>/", "gcc", { desc = "toggle comments", remap = true })
|
||||||
|
map("n", "<leader>|", "<C-W>v", { desc = "split vertically", remap = true })
|
||||||
|
|
||||||
|
map("n", "<leader>b[", "<cmd>bprevious<CR>", { desc = "buffer previous", remap = true })
|
||||||
|
map("n", "<leader>b]", "<cmd>bnext<CR>", { desc = "buffer next", remap = true })
|
||||||
|
map("n", "<leader>bd", function()
|
||||||
|
Snacks.bufdelete()
|
||||||
|
end, { desc = "buffer delete", remap = true })
|
||||||
map("n", "<leader>bl", function()
|
map("n", "<leader>bl", function()
|
||||||
Snacks.picker.buffers()
|
Snacks.picker.buffers()
|
||||||
end, { desc = "Buffer List", remap = true })
|
end, { desc = "buffer list", remap = true })
|
||||||
map("n", "<leader>b[", "<cmd>bprevious<CR>", { desc = "Previous Buffer", remap = true })
|
map("n", "<leader>bn", "<cmd>enew<CR>", { desc = "buffer create", remap = true })
|
||||||
map("n", "<leader>b]", "<cmd>bnext<CR>", { desc = "Next Buffer", remap = true })
|
|
||||||
map("n", "<leader>bn", "<cmd>enew<CR>", { desc = "New Buffer", remap = true })
|
map("n", "<leader>e", function()
|
||||||
map("n", "<leader>h", "<cmd>set hlsearch!<cr>", { desc = "Toggle hlsearch", remap = true })
|
Snacks.explorer()
|
||||||
|
end, { desc = "explorer", remap = true })
|
||||||
|
map("n", "<leader>s", "<cmd>set hlsearch!<cr>", { desc = "toggle hlsearch", remap = true })
|
||||||
|
|
||||||
|
map("n", "<leader>ff", function()
|
||||||
|
Snacks.picker.files()
|
||||||
|
end, { desc = "files", remap = true })
|
||||||
|
map("n", "<leader>fg", function()
|
||||||
|
Snacks.picker.grep()
|
||||||
|
end, { desc = "grep", remap = true })
|
||||||
|
|
||||||
|
map("n", "<leader>hc", function()
|
||||||
|
Snacks.picker.command_history()
|
||||||
|
end, { desc = "commands", remap = true })
|
||||||
|
map("n", "<leader>hn", "<cmd>Noice<CR>", { desc = "notifications", remap = true })
|
||||||
|
map("n", "<leader>hs", function()
|
||||||
|
Snacks.picker.search_history()
|
||||||
|
end, { desc = "search", remap = true })
|
||||||
|
|
||||||
map(
|
map(
|
||||||
"n",
|
"n",
|
||||||
"<leader>m",
|
"<leader>m",
|
||||||
'<cmd>execute "set colorcolumn=" . (&colorcolumn == "" ? "80,120" : "")<cr>',
|
'<cmd>execute "set colorcolumn=" . (&colorcolumn == "" ? "80,120" : "")<cr>',
|
||||||
{ desc = "Toggle Columns", remap = true }
|
{ desc = "toggle columns" }
|
||||||
)
|
)
|
||||||
map("n", "<leader>T", function()
|
map("n", "<leader>n", function()
|
||||||
|
vim.cmd("set number!")
|
||||||
|
vim.cmd('execute "set signcolumn=" . (&signcolumn == "yes" ? "no" : "yes")')
|
||||||
|
if Snacks.indent.enabled then
|
||||||
|
Snacks.indent.disable()
|
||||||
|
else
|
||||||
|
Snacks.indent.enable()
|
||||||
|
end
|
||||||
|
end, { desc = "toggle decorations", remap = true })
|
||||||
|
map("n", "<leader>t", function()
|
||||||
Snacks.terminal()
|
Snacks.terminal()
|
||||||
end, { desc = "Terminal", remap = true })
|
end, { desc = "terminal", remap = true })
|
||||||
|
|
||||||
map("v", "<leader>/", "gc", { desc = "Toggle Comments", remap = true })
|
map("n", "<leader>us", "<cmd>set spell!<cr>", { desc = "toggle spell", remap = true })
|
||||||
|
map("n", "<leader>uw", "<cmd>set wrap!<cr>", { desc = "toggle wrap", remap = true })
|
||||||
|
|
44
config/common/nvim/lua/config/settings.lua
Normal file
44
config/common/nvim/lua/config/settings.lua
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
vim.filetype.add({
|
||||||
|
pattern = {
|
||||||
|
["helmfile.y.ml"] = "helm",
|
||||||
|
[".*.gotmpl"] = "helm",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
vim.o.backup = false
|
||||||
|
vim.o.breakindent = true
|
||||||
|
vim.o.confirm = true
|
||||||
|
vim.o.cursorline = true
|
||||||
|
vim.o.expandtab = true
|
||||||
|
vim.o.gdefault = true
|
||||||
|
vim.o.hlsearch = true
|
||||||
|
vim.o.inccommand = "split"
|
||||||
|
vim.o.number = true
|
||||||
|
vim.o.relativenumber = false
|
||||||
|
vim.o.shiftround = true
|
||||||
|
vim.o.showcmd = false
|
||||||
|
vim.o.showmode = false
|
||||||
|
vim.o.smartcase = true
|
||||||
|
vim.o.smartindent = true
|
||||||
|
vim.o.splitbelow = true
|
||||||
|
vim.o.splitright = true
|
||||||
|
vim.o.termguicolors = true
|
||||||
|
vim.o.undofile = true
|
||||||
|
vim.o.wrap = true
|
||||||
|
vim.o.writebackup = false
|
||||||
|
|
||||||
|
vim.o.clipboard = ""
|
||||||
|
vim.o.conceallevel = 0
|
||||||
|
vim.o.fileencoding = "utf-8"
|
||||||
|
vim.o.foldcolumn = "0"
|
||||||
|
vim.o.mouse = ""
|
||||||
|
vim.o.shiftwidth = 2
|
||||||
|
vim.o.signcolumn = "yes"
|
||||||
|
vim.o.softtabstop = 2
|
||||||
|
vim.o.spelllang = "en_us,pl"
|
||||||
|
vim.o.statuscolumn = ""
|
||||||
|
vim.o.tabstop = 2
|
||||||
|
vim.o.updatetime = 100
|
||||||
|
vim.o.whichwrap = ""
|
||||||
|
|
||||||
|
vim.opt.shortmess:append({ W = true, I = true, c = true, C = true, S = false })
|
3
config/common/nvim/lua/core/init.lua
Normal file
3
config/common/nvim/lua/core/init.lua
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
require("core.lazy")
|
||||||
|
require("core.lsp")
|
||||||
|
require("core.mason-path")
|
43
config/common/nvim/lua/core/lazy.lua
Normal file
43
config/common/nvim/lua/core/lazy.lua
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
|
||||||
|
if not (vim.uv or vim.loop).fs_stat(lazypath) then
|
||||||
|
local lazyrepo = "https://github.com/folke/lazy.nvim.git"
|
||||||
|
local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath })
|
||||||
|
if vim.v.shell_error ~= 0 then
|
||||||
|
vim.api.nvim_echo({
|
||||||
|
{ "Failed to clone lazy.nvim:\n", "ErrorMsg" },
|
||||||
|
{ out, "WarningMsg" },
|
||||||
|
{ "\nPress any key to exit..." },
|
||||||
|
}, true, {})
|
||||||
|
vim.fn.getchar()
|
||||||
|
os.exit(1)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
vim.opt.rtp:prepend(lazypath)
|
||||||
|
|
||||||
|
require("lazy").setup({ import = "plugins" }, {
|
||||||
|
install = {
|
||||||
|
missing = true,
|
||||||
|
},
|
||||||
|
checker = {
|
||||||
|
enabled = true,
|
||||||
|
notify = false,
|
||||||
|
},
|
||||||
|
change_detection = {
|
||||||
|
enabled = true,
|
||||||
|
notify = false,
|
||||||
|
},
|
||||||
|
ui = {
|
||||||
|
-- border = "rounded"
|
||||||
|
},
|
||||||
|
performance = {
|
||||||
|
rtp = {
|
||||||
|
disabled_plugins = {
|
||||||
|
"gzip",
|
||||||
|
"tarPlugin",
|
||||||
|
"tohtml",
|
||||||
|
"tutor",
|
||||||
|
"zipPlugin",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
274
config/common/nvim/lua/core/lsp.lua
Normal file
274
config/common/nvim/lua/core/lsp.lua
Normal file
|
@ -0,0 +1,274 @@
|
||||||
|
vim.lsp.enable({
|
||||||
|
"lua",
|
||||||
|
"terraform",
|
||||||
|
})
|
||||||
|
|
||||||
|
vim.diagnostic.config({
|
||||||
|
virtual_lines = true,
|
||||||
|
-- virtual_text = true,
|
||||||
|
underline = false,
|
||||||
|
update_in_insert = false,
|
||||||
|
severity_sort = true,
|
||||||
|
float = {
|
||||||
|
border = "rounded",
|
||||||
|
source = false,
|
||||||
|
},
|
||||||
|
signs = {
|
||||||
|
text = {
|
||||||
|
[vim.diagnostic.severity.ERROR] = " ",
|
||||||
|
[vim.diagnostic.severity.WARN] = " ",
|
||||||
|
[vim.diagnostic.severity.INFO] = " ",
|
||||||
|
[vim.diagnostic.severity.HINT] = " ",
|
||||||
|
},
|
||||||
|
numhl = {
|
||||||
|
[vim.diagnostic.severity.ERROR] = "ErrorMsg",
|
||||||
|
[vim.diagnostic.severity.WARN] = "WarningMsg",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Extras
|
||||||
|
|
||||||
|
local function restart_lsp(bufnr)
|
||||||
|
bufnr = bufnr or vim.api.nvim_get_current_buf()
|
||||||
|
local clients = vim.lsp.get_clients({ bufnr = bufnr })
|
||||||
|
|
||||||
|
for _, client in ipairs(clients) do
|
||||||
|
vim.lsp.stop_client(client.id)
|
||||||
|
end
|
||||||
|
|
||||||
|
vim.defer_fn(function()
|
||||||
|
vim.cmd("edit")
|
||||||
|
end, 100)
|
||||||
|
end
|
||||||
|
|
||||||
|
vim.api.nvim_create_user_command("LspRestart", function()
|
||||||
|
restart_lsp()
|
||||||
|
end, {})
|
||||||
|
|
||||||
|
local function lsp_status()
|
||||||
|
local bufnr = vim.api.nvim_get_current_buf()
|
||||||
|
local clients = vim.lsp.get_clients({ bufnr = bufnr })
|
||||||
|
|
||||||
|
if #clients == 0 then
|
||||||
|
print(" No LSP clients attached")
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
print(" LSP Status for buffer " .. bufnr .. ":")
|
||||||
|
print("─────────────────────────────────")
|
||||||
|
|
||||||
|
for i, client in ipairs(clients) do
|
||||||
|
print(string.format(" Client %d: %s (ID: %d)", i, client.name, client.id))
|
||||||
|
print(" Root: " .. (client.config.root_dir or "N/A"))
|
||||||
|
print(" Filetypes: " .. table.concat(client.config.filetypes or {}, ", "))
|
||||||
|
|
||||||
|
-- Check capabilities
|
||||||
|
local caps = client.server_capabilities
|
||||||
|
local features = {}
|
||||||
|
if caps.completionProvider then
|
||||||
|
table.insert(features, "completion")
|
||||||
|
end
|
||||||
|
if caps.hoverProvider then
|
||||||
|
table.insert(features, "hover")
|
||||||
|
end
|
||||||
|
if caps.definitionProvider then
|
||||||
|
table.insert(features, "definition")
|
||||||
|
end
|
||||||
|
if caps.referencesProvider then
|
||||||
|
table.insert(features, "references")
|
||||||
|
end
|
||||||
|
if caps.renameProvider then
|
||||||
|
table.insert(features, "rename")
|
||||||
|
end
|
||||||
|
if caps.codeActionProvider then
|
||||||
|
table.insert(features, "code_action")
|
||||||
|
end
|
||||||
|
if caps.documentFormattingProvider then
|
||||||
|
table.insert(features, "formatting")
|
||||||
|
end
|
||||||
|
|
||||||
|
print(" Features: " .. table.concat(features, ", "))
|
||||||
|
print("")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
vim.api.nvim_create_user_command("LspStatus", lsp_status, { desc = "Show detailed LSP status" })
|
||||||
|
|
||||||
|
local function check_lsp_capabilities()
|
||||||
|
local bufnr = vim.api.nvim_get_current_buf()
|
||||||
|
local clients = vim.lsp.get_clients({ bufnr = bufnr })
|
||||||
|
|
||||||
|
if #clients == 0 then
|
||||||
|
print("No LSP clients attached")
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
for _, client in ipairs(clients) do
|
||||||
|
print("Capabilities for " .. client.name .. ":")
|
||||||
|
local caps = client.server_capabilities
|
||||||
|
|
||||||
|
local capability_list = {
|
||||||
|
{ "Completion", caps.completionProvider },
|
||||||
|
{ "Hover", caps.hoverProvider },
|
||||||
|
{ "Signature Help", caps.signatureHelpProvider },
|
||||||
|
{ "Go to Definition", caps.definitionProvider },
|
||||||
|
{ "Go to Declaration", caps.declarationProvider },
|
||||||
|
{ "Go to Implementation", caps.implementationProvider },
|
||||||
|
{ "Go to Type Definition", caps.typeDefinitionProvider },
|
||||||
|
{ "Find References", caps.referencesProvider },
|
||||||
|
{ "Document Highlight", caps.documentHighlightProvider },
|
||||||
|
{ "Document Symbol", caps.documentSymbolProvider },
|
||||||
|
{ "Workspace Symbol", caps.workspaceSymbolProvider },
|
||||||
|
{ "Code Action", caps.codeActionProvider },
|
||||||
|
{ "Code Lens", caps.codeLensProvider },
|
||||||
|
{ "Document Formatting", caps.documentFormattingProvider },
|
||||||
|
{ "Document Range Formatting", caps.documentRangeFormattingProvider },
|
||||||
|
{ "Rename", caps.renameProvider },
|
||||||
|
{ "Folding Range", caps.foldingRangeProvider },
|
||||||
|
{ "Selection Range", caps.selectionRangeProvider },
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, cap in ipairs(capability_list) do
|
||||||
|
local status = cap[2] and "✓" or "✗"
|
||||||
|
print(string.format(" %s %s", status, cap[1]))
|
||||||
|
end
|
||||||
|
print("")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
vim.api.nvim_create_user_command("LspCapabilities", check_lsp_capabilities, { desc = "Show LSP capabilities" })
|
||||||
|
|
||||||
|
local function lsp_diagnostics_info()
|
||||||
|
local bufnr = vim.api.nvim_get_current_buf()
|
||||||
|
local diagnostics = vim.diagnostic.get(bufnr)
|
||||||
|
|
||||||
|
local counts = { ERROR = 0, WARN = 0, INFO = 0, HINT = 0 }
|
||||||
|
|
||||||
|
for _, diagnostic in ipairs(diagnostics) do
|
||||||
|
local severity = vim.diagnostic.severity[diagnostic.severity]
|
||||||
|
counts[severity] = counts[severity] + 1
|
||||||
|
end
|
||||||
|
|
||||||
|
print(" Diagnostics for current buffer:")
|
||||||
|
print(" Errors: " .. counts.ERROR)
|
||||||
|
print(" Warnings: " .. counts.WARN)
|
||||||
|
print(" Info: " .. counts.INFO)
|
||||||
|
print(" Hints: " .. counts.HINT)
|
||||||
|
print(" Total: " .. #diagnostics)
|
||||||
|
end
|
||||||
|
|
||||||
|
vim.api.nvim_create_user_command("LspDiagnostics", lsp_diagnostics_info, { desc = "Show LSP diagnostics count" })
|
||||||
|
|
||||||
|
local function lsp_info()
|
||||||
|
local bufnr = vim.api.nvim_get_current_buf()
|
||||||
|
local clients = vim.lsp.get_clients({ bufnr = bufnr })
|
||||||
|
|
||||||
|
print("═══════════════════════════════════")
|
||||||
|
print(" LSP INFORMATION ")
|
||||||
|
print("═══════════════════════════════════")
|
||||||
|
print("")
|
||||||
|
|
||||||
|
-- Basic info
|
||||||
|
print(" Language client log: " .. vim.lsp.get_log_path())
|
||||||
|
print(" Detected filetype: " .. vim.bo.filetype)
|
||||||
|
print(" Buffer: " .. bufnr)
|
||||||
|
print(" Root directory: " .. (vim.fn.getcwd() or "N/A"))
|
||||||
|
print("")
|
||||||
|
|
||||||
|
if #clients == 0 then
|
||||||
|
print(" No LSP clients attached to buffer " .. bufnr)
|
||||||
|
print("")
|
||||||
|
print("Possible reasons:")
|
||||||
|
print(" • No language server installed for " .. vim.bo.filetype)
|
||||||
|
print(" • Language server not configured")
|
||||||
|
print(" • Not in a project root directory")
|
||||||
|
print(" • File type not recognized")
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
print(" LSP clients attached to buffer " .. bufnr .. ":")
|
||||||
|
print("─────────────────────────────────")
|
||||||
|
|
||||||
|
for i, client in ipairs(clients) do
|
||||||
|
print(string.format(" Client %d: %s", i, client.name))
|
||||||
|
print(" ID: " .. client.id)
|
||||||
|
print(" Root dir: " .. (client.config.root_dir or "Not set"))
|
||||||
|
print(" Command: " .. table.concat(client.config.cmd or {}, " "))
|
||||||
|
print(" Filetypes: " .. table.concat(client.config.filetypes or {}, ", "))
|
||||||
|
|
||||||
|
-- Server status
|
||||||
|
if client.is_stopped() then
|
||||||
|
print(" Status: Stopped")
|
||||||
|
else
|
||||||
|
print(" Status: Running")
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Workspace folders
|
||||||
|
if client.workspace_folders and #client.workspace_folders > 0 then
|
||||||
|
print(" Workspace folders:")
|
||||||
|
for _, folder in ipairs(client.workspace_folders) do
|
||||||
|
print(" • " .. folder.name)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Attached buffers count
|
||||||
|
local attached_buffers = {}
|
||||||
|
for buf, _ in pairs(client.attached_buffers or {}) do
|
||||||
|
table.insert(attached_buffers, buf)
|
||||||
|
end
|
||||||
|
print(" Attached buffers: " .. #attached_buffers)
|
||||||
|
|
||||||
|
-- Key capabilities
|
||||||
|
local caps = client.server_capabilities
|
||||||
|
local key_features = {}
|
||||||
|
if caps.completionProvider then
|
||||||
|
table.insert(key_features, "completion")
|
||||||
|
end
|
||||||
|
if caps.hoverProvider then
|
||||||
|
table.insert(key_features, "hover")
|
||||||
|
end
|
||||||
|
if caps.definitionProvider then
|
||||||
|
table.insert(key_features, "definition")
|
||||||
|
end
|
||||||
|
if caps.documentFormattingProvider then
|
||||||
|
table.insert(key_features, "formatting")
|
||||||
|
end
|
||||||
|
if caps.codeActionProvider then
|
||||||
|
table.insert(key_features, "code_action")
|
||||||
|
end
|
||||||
|
|
||||||
|
if #key_features > 0 then
|
||||||
|
print(" Key features: " .. table.concat(key_features, ", "))
|
||||||
|
end
|
||||||
|
|
||||||
|
print("")
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Diagnostics summary
|
||||||
|
local diagnostics = vim.diagnostic.get(bufnr)
|
||||||
|
if #diagnostics > 0 then
|
||||||
|
print(" Diagnostics Summary:")
|
||||||
|
local counts = { ERROR = 0, WARN = 0, INFO = 0, HINT = 0 }
|
||||||
|
|
||||||
|
for _, diagnostic in ipairs(diagnostics) do
|
||||||
|
local severity = vim.diagnostic.severity[diagnostic.severity]
|
||||||
|
counts[severity] = counts[severity] + 1
|
||||||
|
end
|
||||||
|
|
||||||
|
print(" Errors: " .. counts.ERROR)
|
||||||
|
print(" Warnings: " .. counts.WARN)
|
||||||
|
print(" Info: " .. counts.INFO)
|
||||||
|
print(" Hints: " .. counts.HINT)
|
||||||
|
print(" Total: " .. #diagnostics)
|
||||||
|
else
|
||||||
|
print(" No diagnostics")
|
||||||
|
end
|
||||||
|
|
||||||
|
print("")
|
||||||
|
print("Use :LspLog to view detailed logs")
|
||||||
|
print("Use :LspCapabilities for full capability list")
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Create command
|
||||||
|
vim.api.nvim_create_user_command("LspInfo", lsp_info, { desc = "Show comprehensive LSP information" })
|
25
config/common/nvim/lua/core/mason-path.lua
Normal file
25
config/common/nvim/lua/core/mason-path.lua
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
local mason_bin = vim.fn.stdpath("data") .. "/mason/bin"
|
||||||
|
local current_path = vim.env.PATH or ""
|
||||||
|
|
||||||
|
-- Remove any existing Mason bin entries to prevent duplicates
|
||||||
|
local path_entries = vim.split(current_path, ":")
|
||||||
|
local clean_path_entries = {}
|
||||||
|
local seen = {}
|
||||||
|
|
||||||
|
for _, entry in ipairs(path_entries) do
|
||||||
|
-- Skip Mason bin entries and duplicates
|
||||||
|
if entry ~= mason_bin and entry ~= "" and not seen[entry] then
|
||||||
|
seen[entry] = true
|
||||||
|
table.insert(clean_path_entries, entry)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Add Mason bin directory at the beginning
|
||||||
|
local new_path = mason_bin .. ":" .. table.concat(clean_path_entries, ":")
|
||||||
|
vim.env.PATH = new_path
|
||||||
|
|
||||||
|
-- Verify Mason bin directory exists
|
||||||
|
if vim.fn.isdirectory(mason_bin) == 0 then
|
||||||
|
-- Mason not installed yet, create placeholder
|
||||||
|
vim.fn.mkdir(mason_bin, "p")
|
||||||
|
end
|
64
config/common/nvim/lua/plugins/blink.lua
Normal file
64
config/common/nvim/lua/plugins/blink.lua
Normal file
|
@ -0,0 +1,64 @@
|
||||||
|
return {
|
||||||
|
{ "L3MON4D3/LuaSnip", keys = {} },
|
||||||
|
{
|
||||||
|
"saghen/blink.cmp",
|
||||||
|
dependencies = {
|
||||||
|
"rafamadriz/friendly-snippets",
|
||||||
|
},
|
||||||
|
version = "*",
|
||||||
|
config = function()
|
||||||
|
require("blink.cmp").setup({
|
||||||
|
snippets = { preset = "luasnip" },
|
||||||
|
signature = { enabled = true },
|
||||||
|
appearance = {
|
||||||
|
use_nvim_cmp_as_default = false,
|
||||||
|
nerd_font_variant = "normal",
|
||||||
|
},
|
||||||
|
sources = {
|
||||||
|
default = { "lsp", "path", "snippets", "buffer" },
|
||||||
|
providers = {
|
||||||
|
cmdline = {
|
||||||
|
min_keyword_length = 2,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
keymap = {
|
||||||
|
["<Tab>"] = { "accept", "fallback" },
|
||||||
|
},
|
||||||
|
cmdline = {
|
||||||
|
enabled = false,
|
||||||
|
completion = { menu = { auto_show = true } },
|
||||||
|
keymap = {
|
||||||
|
["<Tab>"] = { "accept_and_enter", "fallback" },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
completion = {
|
||||||
|
menu = {
|
||||||
|
border = nil,
|
||||||
|
scrolloff = 1,
|
||||||
|
scrollbar = false,
|
||||||
|
draw = {
|
||||||
|
columns = {
|
||||||
|
{ "kind_icon" },
|
||||||
|
{ "label", "label_description", gap = 1 },
|
||||||
|
{ "kind" },
|
||||||
|
{ "source_name" },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
documentation = {
|
||||||
|
window = {
|
||||||
|
border = nil,
|
||||||
|
scrollbar = false,
|
||||||
|
winhighlight = "Normal:BlinkCmpDoc,FloatBorder:BlinkCmpDocBorder,EndOfBuffer:BlinkCmpDoc",
|
||||||
|
},
|
||||||
|
auto_show = true,
|
||||||
|
auto_show_delay_ms = 500,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
require("luasnip.loaders.from_vscode").lazy_load()
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
}
|
18
config/common/nvim/lua/plugins/conform.lua
Normal file
18
config/common/nvim/lua/plugins/conform.lua
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
return {
|
||||||
|
"stevearc/conform.nvim",
|
||||||
|
opts = {},
|
||||||
|
config = function()
|
||||||
|
require("conform").setup({
|
||||||
|
formatters_by_ft = {
|
||||||
|
lua = { "stylua" },
|
||||||
|
terraform = { "terraform_fmt" },
|
||||||
|
tf = { "terraform_fmt" },
|
||||||
|
["terraform-vars"] = { "terraform_fmt" },
|
||||||
|
},
|
||||||
|
format_on_save = {
|
||||||
|
lsp_fallback = true,
|
||||||
|
async = false,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
}
|
22
config/common/nvim/lua/plugins/gitsigns.lua
Normal file
22
config/common/nvim/lua/plugins/gitsigns.lua
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
return {
|
||||||
|
"lewis6991/gitsigns.nvim",
|
||||||
|
config = function()
|
||||||
|
require("gitsigns").setup({
|
||||||
|
signs = {
|
||||||
|
add = { text = "▎" },
|
||||||
|
change = { text = "▎" },
|
||||||
|
delete = { text = "" },
|
||||||
|
topdelete = { text = "" },
|
||||||
|
changedelete = { text = "▎" },
|
||||||
|
untracked = { text = "▎" },
|
||||||
|
},
|
||||||
|
signs_staged = {
|
||||||
|
add = { text = "▎" },
|
||||||
|
change = { text = "▎" },
|
||||||
|
delete = { text = "" },
|
||||||
|
topdelete = { text = "" },
|
||||||
|
changedelete = { text = "▎" },
|
||||||
|
},
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
}
|
|
@ -1,40 +1,60 @@
|
||||||
return {
|
return {
|
||||||
"nvim-lualine/lualine.nvim",
|
"nvim-lualine/lualine.nvim",
|
||||||
opts = {
|
dependencies = {
|
||||||
options = {
|
"nvim-tree/nvim-web-devicons",
|
||||||
theme = "powerline",
|
|
||||||
section_separators = "",
|
|
||||||
component_separators = "",
|
|
||||||
globalstatus = false,
|
|
||||||
},
|
|
||||||
sections = {
|
|
||||||
lualine_c = {
|
|
||||||
{
|
|
||||||
"diagnostics",
|
|
||||||
symbols = {
|
|
||||||
error = LazyVim.config.icons.diagnostics.Error,
|
|
||||||
warn = LazyVim.config.icons.diagnostics.Warn,
|
|
||||||
info = LazyVim.config.icons.diagnostics.Info,
|
|
||||||
hint = LazyVim.config.icons.diagnostics.Hint,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{ "filetype", icon_only = true, separator = "", padding = { left = 1, right = 0 } },
|
|
||||||
{ "filename", file_status = true, path = 1 },
|
|
||||||
},
|
|
||||||
lualine_x = {
|
|
||||||
{
|
|
||||||
"diff",
|
|
||||||
symbols = {
|
|
||||||
added = LazyVim.config.icons.git.added,
|
|
||||||
modified = LazyVim.config.icons.git.modified,
|
|
||||||
removed = LazyVim.config.icons.git.removed,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
lualine_z = {},
|
|
||||||
},
|
|
||||||
tabline = {
|
|
||||||
lualine_a = { "buffers" },
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
|
config = function()
|
||||||
|
require("lualine").setup({
|
||||||
|
options = {
|
||||||
|
theme = "monokai-pro",
|
||||||
|
section_separators = "",
|
||||||
|
component_separators = "",
|
||||||
|
globalstatus = false,
|
||||||
|
},
|
||||||
|
sections = {
|
||||||
|
lualine_a = { "mode" },
|
||||||
|
lualine_b = { "branch" },
|
||||||
|
lualine_c = {
|
||||||
|
{
|
||||||
|
"diff",
|
||||||
|
symbols = {
|
||||||
|
added = " ",
|
||||||
|
modified = " ",
|
||||||
|
removed = " ",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"diagnostics",
|
||||||
|
symbols = {
|
||||||
|
error = " ",
|
||||||
|
warn = " ",
|
||||||
|
info = " ",
|
||||||
|
hint = " ",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{ "filetype", icon_only = true, separator = "", padding = { left = 1, right = 0 } },
|
||||||
|
{ "filename", file_status = true, path = 1 },
|
||||||
|
},
|
||||||
|
lualine_x = {
|
||||||
|
{
|
||||||
|
"lsp_status",
|
||||||
|
symbols = {
|
||||||
|
spinner = { "⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏" },
|
||||||
|
done = "✓",
|
||||||
|
separator = " ",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
lualine_y = {
|
||||||
|
{ "searchcount" },
|
||||||
|
{ "progress", separator = " ", padding = { left = 1, right = 0 } },
|
||||||
|
{ "location", padding = { left = 0, right = 1 } },
|
||||||
|
},
|
||||||
|
lualine_z = {},
|
||||||
|
},
|
||||||
|
tabline = {
|
||||||
|
lualine_a = { "buffers" },
|
||||||
|
},
|
||||||
|
})
|
||||||
|
end,
|
||||||
}
|
}
|
||||||
|
|
45
config/common/nvim/lua/plugins/mason.lua
Normal file
45
config/common/nvim/lua/plugins/mason.lua
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
return {
|
||||||
|
{
|
||||||
|
"williamboman/mason.nvim",
|
||||||
|
lazy = false,
|
||||||
|
cmd = "Mason",
|
||||||
|
keys = { { "<leader>cm", "<cmd>Mason<cr>", desc = "Mason" } },
|
||||||
|
build = ":MasonUpdate",
|
||||||
|
opts = {
|
||||||
|
ensure_installed = {
|
||||||
|
"lua-language-server",
|
||||||
|
"terraform-ls",
|
||||||
|
"stylua",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
config = function(_, opts)
|
||||||
|
require("mason").setup(opts)
|
||||||
|
local mr = require("mason-registry")
|
||||||
|
local function ensure_installed()
|
||||||
|
for _, tool in ipairs(opts.ensure_installed) do
|
||||||
|
if mr.has_package(tool) then
|
||||||
|
local p = mr.get_package(tool)
|
||||||
|
if not p:is_installed() then
|
||||||
|
vim.notify("Mason: Installing " .. tool .. "...", vim.log.levels.INFO)
|
||||||
|
p:install():once("closed", function()
|
||||||
|
if p:is_installed() then
|
||||||
|
vim.notify("Mason: Successfully installed " .. tool, vim.log.levels.INFO)
|
||||||
|
else
|
||||||
|
vim.notify("Mason: Failed to install " .. tool, vim.log.levels.ERROR)
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
else
|
||||||
|
vim.notify("Mason: Package '" .. tool .. "' not found", vim.log.levels.WARN)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if mr.refresh then
|
||||||
|
mr.refresh(ensure_installed)
|
||||||
|
else
|
||||||
|
ensure_installed()
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
}
|
12
config/common/nvim/lua/plugins/mini.lua
Normal file
12
config/common/nvim/lua/plugins/mini.lua
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
return {
|
||||||
|
"echasnovski/mini.pairs",
|
||||||
|
config = function()
|
||||||
|
require("mini.pairs").setup({
|
||||||
|
modes = { insert = true, command = true, terminal = false },
|
||||||
|
skip_next = [=[[%w%%%'%[%"%.%`%$]]=],
|
||||||
|
skip_ts = { "string" },
|
||||||
|
skip_unbalanced = true,
|
||||||
|
markdown = true,
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
}
|
|
@ -1,15 +1,10 @@
|
||||||
return {
|
return {
|
||||||
{
|
"loctvl842/monokai-pro.nvim",
|
||||||
"loctvl842/monokai-pro.nvim",
|
priority = 10000,
|
||||||
priority = 1000,
|
config = function()
|
||||||
opts = {
|
require("monokai-pro").setup({
|
||||||
filter = "classic",
|
filter = "classic",
|
||||||
},
|
})
|
||||||
},
|
vim.cmd.colorscheme("monokai-pro")
|
||||||
{
|
end,
|
||||||
"LazyVim/LazyVim",
|
|
||||||
opts = {
|
|
||||||
colorscheme = "monokai-pro",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
|
|
27
config/common/nvim/lua/plugins/noice.lua
Normal file
27
config/common/nvim/lua/plugins/noice.lua
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
return {
|
||||||
|
"folke/noice.nvim",
|
||||||
|
event = "VeryLazy",
|
||||||
|
dependencies = {
|
||||||
|
"MunifTanjim/nui.nvim",
|
||||||
|
},
|
||||||
|
config = function()
|
||||||
|
require("noice").setup({
|
||||||
|
lsp = {
|
||||||
|
override = {
|
||||||
|
["vim.lsp.util.convert_input_to_markdown_lines"] = true,
|
||||||
|
["vim.lsp.util.stylize_markdown"] = true,
|
||||||
|
["cmp.entry.get_documentation"] = true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
messages = {
|
||||||
|
view_search = false,
|
||||||
|
},
|
||||||
|
presets = {
|
||||||
|
bottom_search = true,
|
||||||
|
command_palette = true,
|
||||||
|
long_message_to_split = true,
|
||||||
|
lsp_doc_border = true,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
}
|
|
@ -1,28 +1,47 @@
|
||||||
return {
|
return {
|
||||||
"folke/snacks.nvim",
|
"folke/snacks.nvim",
|
||||||
opts = {
|
priority = 1000,
|
||||||
dashboard = { enabled = false },
|
lazy = false,
|
||||||
},
|
config = function()
|
||||||
keys = {
|
require("snacks").setup({
|
||||||
{
|
animate = { enabled = false },
|
||||||
"<leader>n",
|
bigfile = { enabled = false },
|
||||||
function()
|
bufdelete = { enabled = true },
|
||||||
vim.cmd("set number!")
|
dashboard = { enabled = false },
|
||||||
vim.cmd('execute "set signcolumn=" . (&signcolumn == "yes" ? "no" : "yes")')
|
debug = { enabled = false },
|
||||||
if Snacks.indent.enabled then
|
dim = { enabled = false },
|
||||||
Snacks.indent.disable()
|
explorer = { enabled = true, replace_netrw = true },
|
||||||
else
|
git = { enabled = false },
|
||||||
Snacks.indent.enable()
|
gitbrowse = { enabled = false },
|
||||||
end
|
image = { enabled = false },
|
||||||
end,
|
indent = { enabled = true },
|
||||||
desc = "Toggle Decorations",
|
input = { enabled = true },
|
||||||
},
|
layout = { enabled = false },
|
||||||
{
|
lazygit = { enabled = false },
|
||||||
"<leader>e",
|
notifier = { enabled = true },
|
||||||
function()
|
notify = { enabled = true },
|
||||||
Snacks.explorer()
|
picker = {
|
||||||
end,
|
enabled = true,
|
||||||
desc = "File Explorer",
|
files = {
|
||||||
},
|
hidden = true,
|
||||||
},
|
ignored = true,
|
||||||
|
},
|
||||||
|
hidden = true,
|
||||||
|
ignored = true,
|
||||||
|
},
|
||||||
|
profiler = { enabled = false },
|
||||||
|
quickfile = { enabled = true },
|
||||||
|
rename = { enabled = false },
|
||||||
|
scope = { enabled = true },
|
||||||
|
scratch = { enabled = false },
|
||||||
|
scroll = { enabled = true },
|
||||||
|
statuscolumn = { enabled = false },
|
||||||
|
terminal = { enabled = true },
|
||||||
|
toggle = { enabled = false },
|
||||||
|
util = { enabled = true },
|
||||||
|
win = { enabled = false },
|
||||||
|
words = { enabled = false },
|
||||||
|
zen = { enabled = false },
|
||||||
|
})
|
||||||
|
end,
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,18 +1,25 @@
|
||||||
return {
|
return {
|
||||||
"nvim-treesitter/nvim-treesitter",
|
"nvim-treesitter/nvim-treesitter",
|
||||||
opts = {
|
build = ":TSUpdate",
|
||||||
ensure_installed = {
|
config = function()
|
||||||
"bash",
|
require("nvim-treesitter.configs").setup({
|
||||||
"diff",
|
ensure_installed = {
|
||||||
"gotmpl",
|
"bash",
|
||||||
"helm",
|
"diff",
|
||||||
"json",
|
"gotmpl",
|
||||||
"lua",
|
"hcl",
|
||||||
"markdown",
|
"helm",
|
||||||
"markdown_inline",
|
"json",
|
||||||
"python",
|
"lua",
|
||||||
"terraform",
|
"markdown",
|
||||||
"vim",
|
"markdown_inline",
|
||||||
},
|
"python",
|
||||||
},
|
"regex",
|
||||||
|
"terraform",
|
||||||
|
"vim",
|
||||||
|
},
|
||||||
|
highlight = { enable = true },
|
||||||
|
indent = { enable = true },
|
||||||
|
})
|
||||||
|
end,
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,35 +1,36 @@
|
||||||
return {
|
return {
|
||||||
"folke/which-key.nvim",
|
"folke/which-key.nvim",
|
||||||
event = "VeryLazy",
|
event = "VeryLazy",
|
||||||
opts_extend = { "spec" },
|
config = function()
|
||||||
opts = {
|
require("which-key").setup({
|
||||||
preset = "helix",
|
preset = "helix",
|
||||||
icons = {
|
delay = 300,
|
||||||
mappings = false,
|
icons = {
|
||||||
},
|
rules = false,
|
||||||
defaults = {},
|
breadcrumb = " ",
|
||||||
spec = {
|
separator = " ",
|
||||||
{
|
group = " ",
|
||||||
mode = { "n", "v" },
|
|
||||||
{
|
|
||||||
"<leader>b",
|
|
||||||
group = "buffer",
|
|
||||||
expand = function()
|
|
||||||
return require("which-key.extras").expand.buf()
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
{ "<leader><tab>", group = "tabs", hidden = true },
|
|
||||||
{ "<leader>d", group = "debug", hidden = true },
|
|
||||||
{ "<leader>dp", group = "profiler", hidden = true },
|
|
||||||
{ "<leader>gh", group = "hunks", hidden = true },
|
|
||||||
{ "<leader>q", group = "quit/session", hidden = true },
|
|
||||||
{ "<leader>s", group = "search", hidden = true },
|
|
||||||
{ "<leader>t", hidden = true },
|
|
||||||
{ "<leader>u", group = "ui", hidden = true },
|
|
||||||
{ "<leader>w", hidden = true },
|
|
||||||
{ "<leader>x", group = "diagnostics/quickfix", hidden = true },
|
|
||||||
{ "gx", desc = "Open with system app", hidden = true },
|
|
||||||
},
|
},
|
||||||
},
|
plugins = {
|
||||||
},
|
spelling = {
|
||||||
|
enabled = false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
win = {
|
||||||
|
height = {
|
||||||
|
max = math.huge,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
spec = {
|
||||||
|
{
|
||||||
|
mode = { "n", "v" },
|
||||||
|
{ "<leader>b", group = "buffer" },
|
||||||
|
{ "<leader>c", group = "code" },
|
||||||
|
{ "<leader>f", group = "find" },
|
||||||
|
{ "<leader>h", group = "history" },
|
||||||
|
{ "<leader>u", group = "ui" },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
end,
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue