refactor(nvim): modernize plugin stack
Removed dead weight: - Drop nightfox, rose-pine, kanagawa, everforest colorschemes - Remove fzf/fzf.vim (redundant with telescope) - Remove vim-fugitive and its keymaps (lazygit covers this) - Remove Comment.nvim (built into nvim 0.10+) Replaced: - nvim-cmp → blink.cmp (Rust-powered, faster, ghost text) - none-ls/null-ls → conform.nvim (async, maintained) - cmp-nvim-lsp capabilities → blink.cmp.get_lsp_capabilities() - Copilot suggestions now routed through blink-copilot Added: - lazydev.nvim for proper Lua LSP in nvim config - flash.nvim (s/S jump anywhere on screen) - which-key.nvim (leader key popup with groups) - snacks.nvim (notifier + word highlights) - nvim-treesitter-textobjects (af/if, ac/ic, ]f/[f) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -5,7 +5,7 @@ local opt = { noremap = true }
|
|||||||
local opts = { noremap = true, silent = true }
|
local opts = { noremap = true, silent = true }
|
||||||
local term_opts = { silent = true }
|
local term_opts = { silent = true }
|
||||||
|
|
||||||
local keymap = vim.api.nvim_set_keymap
|
local keymap = vim.keymap.set
|
||||||
|
|
||||||
-- {{{ Leader Key (moved to init.lua)
|
-- {{{ Leader Key (moved to init.lua)
|
||||||
-- vim.g.mapleader = " " -- set <Space> as leader key
|
-- vim.g.mapleader = " " -- set <Space> as leader key
|
||||||
@@ -16,12 +16,12 @@ local keymap = vim.api.nvim_set_keymap
|
|||||||
keymap("n", ";", ":", opt) -- remap ; to :
|
keymap("n", ";", ":", opt) -- remap ; to :
|
||||||
keymap("n", ":", ";", opt) -- remap : to ;
|
keymap("n", ":", ";", opt) -- remap : to ;
|
||||||
|
|
||||||
keymap("n", "<leader>w", ":w<cr>", opts) -- save
|
keymap("n", "<leader>w", ":w<cr>", opts) -- save current buffer
|
||||||
keymap("n", "<leader>q", ":q<cr>", opts) -- quit
|
keymap("n", "<leader>q", ":confirm qall<cr>", opts) -- quit Neovim (prompt on unsaved changes)
|
||||||
keymap("n", "<leader>wq", ":wq<cr>", opts) -- save and quit
|
keymap("n", "<leader>wq", ":wall | qa<cr>", opts) -- save all writable buffers and quit
|
||||||
keymap("n", "<leader>W", ":w!<cr>", opts) -- force save
|
keymap("n", "<leader>W", ":w!<cr>", opts) -- force save current buffer
|
||||||
keymap("n", "<leader>Q", ":q!<cr>", opts) -- force quit
|
keymap("n", "<leader>Q", ":qall!<cr>", opts) -- force quit Neovim
|
||||||
keymap("n", "<leader>WQ", ":wq!<cr>", opts) -- force save and quit
|
keymap("n", "<leader>WQ", ":wall! | qa!<cr>", opts) -- force save all and quit
|
||||||
-- }}}
|
-- }}}
|
||||||
|
|
||||||
-- {{{ Navigation
|
-- {{{ Navigation
|
||||||
@@ -109,15 +109,15 @@ keymap("c", "w!!", [[w !sudo tee %]], opt) -- save file with sudo
|
|||||||
-- }}}
|
-- }}}
|
||||||
|
|
||||||
-- {{{ Diff / Git
|
-- {{{ Diff / Git
|
||||||
keymap("n", "<leader>gd", ":Gvdiffsplit<cr>", opts) -- git diff split (requires fugitive)
|
|
||||||
keymap("n", "<leader>gs", ":Git<cr>", opts) -- open git status tree (requires fugitive)
|
|
||||||
keymap("n", "<leader>gr", ":terminal git log --graph --oneline --decorate --all<CR>i", opts) -- show git log graph in terminal
|
keymap("n", "<leader>gr", ":terminal git log --graph --oneline --decorate --all<CR>i", opts) -- show git log graph in terminal
|
||||||
|
|
||||||
-- GitSigns toggles
|
-- GitSigns toggles
|
||||||
vim.keymap.set('n', '<leader>gt', function() require('gitsigns').toggle_signs() end, { desc = 'Toggle git signs' })
|
vim.keymap.set('n', '<leader>gt', function() require('gitsigns').toggle_signs() end, { desc = 'Toggle git signs' })
|
||||||
vim.keymap.set('n', '<leader>gb', function() require('gitsigns').toggle_current_line_blame() end, { desc = 'Toggle git blame' })
|
vim.keymap.set('n', '<leader>gb', function() require('gitsigns').toggle_current_line_blame() end,
|
||||||
|
{ desc = 'Toggle git blame' })
|
||||||
vim.keymap.set('n', '<leader>gx', function() require('gitsigns').toggle_deleted() end, { desc = 'Toggle git deleted' })
|
vim.keymap.set('n', '<leader>gx', function() require('gitsigns').toggle_deleted() end, { desc = 'Toggle git deleted' })
|
||||||
vim.keymap.set('n', '<leader>gn', function() require('gitsigns').toggle_numhl() end, { desc = 'Toggle git number highlights' })
|
vim.keymap.set('n', '<leader>gn', function() require('gitsigns').toggle_numhl() end,
|
||||||
|
{ desc = 'Toggle git number highlights' })
|
||||||
vim.keymap.set('n', '<leader>gc', function() require('gitsigns').toggle_linehl() end, { desc = 'Toggle git line colors' })
|
vim.keymap.set('n', '<leader>gc', function() require('gitsigns').toggle_linehl() end, { desc = 'Toggle git line colors' })
|
||||||
|
|
||||||
-- LSP diagnostic toggle
|
-- LSP diagnostic toggle
|
||||||
@@ -139,9 +139,6 @@ keymap("n", "<leader>si", ":source $MYVIMRC<CR>", opts) -- source init.lua ($MYV
|
|||||||
-- }}}
|
-- }}}
|
||||||
|
|
||||||
-- {{{ Plugins
|
-- {{{ Plugins
|
||||||
-- Yazi (keeping this here since it's a simple command keymap)
|
|
||||||
keymap("n", "<leader>y", ":Yazi<cr>", opt) -- open Yazi file manager
|
|
||||||
|
|
||||||
-- mkdx checkbox toggle (disable default space key, use leader+t instead)
|
-- mkdx checkbox toggle (disable default space key, use leader+t instead)
|
||||||
vim.g["mkdx#settings"] = {
|
vim.g["mkdx#settings"] = {
|
||||||
checkbox = {
|
checkbox = {
|
||||||
|
|||||||
@@ -4,10 +4,6 @@ return {
|
|||||||
{ "gruvbox-community/gruvbox", priority = 1000 },
|
{ "gruvbox-community/gruvbox", priority = 1000 },
|
||||||
{ "folke/tokyonight.nvim", priority = 1000 },
|
{ "folke/tokyonight.nvim", priority = 1000 },
|
||||||
{ "catppuccin/nvim", name = "catppuccin", priority = 1000 },
|
{ "catppuccin/nvim", name = "catppuccin", priority = 1000 },
|
||||||
{ "EdenEast/nightfox.nvim", priority = 1000 },
|
|
||||||
{ "rose-pine/neovim", name = "rose-pine", priority = 1000 },
|
|
||||||
{ "rebelot/kanagawa.nvim", priority = 1000 },
|
|
||||||
{ "sainnhe/everforest", priority = 1000 },
|
|
||||||
|
|
||||||
|
|
||||||
-- Auto-save
|
-- Auto-save
|
||||||
@@ -73,10 +69,6 @@ return {
|
|||||||
current_line_blame = false,
|
current_line_blame = false,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"tpope/vim-fugitive",
|
|
||||||
cmd = { "Git", "Gvdiffsplit" },
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"kdheepak/lazygit.nvim",
|
"kdheepak/lazygit.nvim",
|
||||||
dependencies = { "nvim-lua/plenary.nvim" },
|
dependencies = { "nvim-lua/plenary.nvim" },
|
||||||
@@ -107,6 +99,18 @@ return {
|
|||||||
right_alt = "",
|
right_alt = "",
|
||||||
space = " ",
|
space = " ",
|
||||||
}
|
}
|
||||||
|
-- Tokyo Night Moon colors, transparent background
|
||||||
|
vim.g.tmuxline_theme = {
|
||||||
|
a = { "#1e2030", "#82aaff" },
|
||||||
|
b = { "#82aaff", "default" },
|
||||||
|
c = { "#636da6", "default" },
|
||||||
|
x = { "#636da6", "default" },
|
||||||
|
y = { "#82aaff", "default" },
|
||||||
|
z = { "#1e2030", "#82aaff" },
|
||||||
|
win = { "#636da6", "default" },
|
||||||
|
cwin = { "#1e2030", "#c099ff" },
|
||||||
|
bg = { "#636da6", "default" },
|
||||||
|
}
|
||||||
vim.g.tmuxline_preset = {
|
vim.g.tmuxline_preset = {
|
||||||
a = "#S",
|
a = "#S",
|
||||||
win = "#I #W",
|
win = "#I #W",
|
||||||
@@ -117,20 +121,48 @@ return {
|
|||||||
end,
|
end,
|
||||||
},
|
},
|
||||||
|
|
||||||
-- FZF
|
|
||||||
{
|
|
||||||
"junegunn/fzf",
|
|
||||||
build = function()
|
|
||||||
vim.fn["fzf#install"]()
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
{ "junegunn/fzf.vim" },
|
|
||||||
|
|
||||||
-- Productivity
|
-- Productivity
|
||||||
{ "numToStr/Comment.nvim", event = "VeryLazy", opts = {} },
|
|
||||||
{ "windwp/nvim-autopairs", event = "InsertEnter", opts = {} },
|
{ "windwp/nvim-autopairs", event = "InsertEnter", opts = {} },
|
||||||
{ "tpope/vim-surround", event = "VeryLazy" },
|
{ "tpope/vim-surround", event = "VeryLazy" },
|
||||||
|
|
||||||
|
-- Flash: jump anywhere with 2 chars (replaces f/t for long range)
|
||||||
|
{
|
||||||
|
"folke/flash.nvim",
|
||||||
|
event = "VeryLazy",
|
||||||
|
opts = {},
|
||||||
|
keys = {
|
||||||
|
{ "s", mode = { "n", "x", "o" }, function() require("flash").jump() end, desc = "Flash jump" },
|
||||||
|
{ "S", mode = { "n", "x", "o" }, function() require("flash").treesitter() end, desc = "Flash treesitter" },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Which-key: show available keybindings after leader
|
||||||
|
{
|
||||||
|
"folke/which-key.nvim",
|
||||||
|
event = "VeryLazy",
|
||||||
|
opts = {
|
||||||
|
spec = {
|
||||||
|
{ "<leader>f", group = "find" },
|
||||||
|
{ "<leader>g", group = "git" },
|
||||||
|
{ "<leader>s", group = "split/spell" },
|
||||||
|
{ "<leader>w", group = "write" },
|
||||||
|
{ "<leader>d", group = "date" },
|
||||||
|
{ "<leader>l", group = "lsp" },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Snacks: notifications + quality-of-life utilities
|
||||||
|
{
|
||||||
|
"folke/snacks.nvim",
|
||||||
|
priority = 1000,
|
||||||
|
lazy = false,
|
||||||
|
opts = {
|
||||||
|
notifier = { enabled = true },
|
||||||
|
words = { enabled = true },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
-- -- Tmux navigation
|
-- -- Tmux navigation
|
||||||
-- { "christoomey/vim-tmux-navigator" },
|
-- { "christoomey/vim-tmux-navigator" },
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,16 @@
|
|||||||
-- ~/.config/nvim/lua/plugins/lsp.lua
|
-- ~/.config/nvim/lua/plugins/lsp.lua
|
||||||
return {
|
return {
|
||||||
|
-- Lazydev: proper Lua LSP for neovim config files
|
||||||
|
{
|
||||||
|
"folke/lazydev.nvim",
|
||||||
|
ft = "lua",
|
||||||
|
opts = {
|
||||||
|
library = {
|
||||||
|
{ path = "luvit-meta/library", words = { "vim%.uv" } },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
-- Mason (LSP installer)
|
-- Mason (LSP installer)
|
||||||
{
|
{
|
||||||
"williamboman/mason.nvim",
|
"williamboman/mason.nvim",
|
||||||
@@ -22,11 +33,11 @@ return {
|
|||||||
dependencies = {
|
dependencies = {
|
||||||
"mason.nvim",
|
"mason.nvim",
|
||||||
"mason-lspconfig.nvim",
|
"mason-lspconfig.nvim",
|
||||||
"hrsh7th/cmp-nvim-lsp",
|
"saghen/blink.cmp",
|
||||||
},
|
},
|
||||||
config = function()
|
config = function()
|
||||||
local lspconfig = require("lspconfig")
|
local capabilities = require("blink.cmp").get_lsp_capabilities()
|
||||||
local capabilities = require("cmp_nvim_lsp").default_capabilities()
|
local servers = { "lua_ls", "pyright", "texlab", "bashls", "marksman" }
|
||||||
|
|
||||||
-- Configure diagnostics to be hidden by default
|
-- Configure diagnostics to be hidden by default
|
||||||
vim.diagnostic.config({
|
vim.diagnostic.config({
|
||||||
@@ -52,85 +63,79 @@ return {
|
|||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
|
|
||||||
-- Language servers setup with capabilities
|
-- Use Neovim 0.11+ LSP API to avoid deprecated lspconfig setup calls.
|
||||||
lspconfig.lua_ls.setup({
|
if vim.lsp.config and vim.lsp.enable then
|
||||||
capabilities = capabilities,
|
for _, server in ipairs(servers) do
|
||||||
})
|
vim.lsp.config(server, { capabilities = capabilities })
|
||||||
lspconfig.pyright.setup({
|
end
|
||||||
capabilities = capabilities,
|
vim.lsp.enable(servers)
|
||||||
})
|
else
|
||||||
lspconfig.texlab.setup({
|
local lspconfig = require("lspconfig")
|
||||||
capabilities = capabilities,
|
for _, server in ipairs(servers) do
|
||||||
})
|
lspconfig[server].setup({ capabilities = capabilities })
|
||||||
lspconfig.bashls.setup({
|
end
|
||||||
capabilities = capabilities,
|
end
|
||||||
})
|
|
||||||
lspconfig.marksman.setup({
|
|
||||||
capabilities = capabilities,
|
|
||||||
})
|
|
||||||
end,
|
end,
|
||||||
},
|
},
|
||||||
|
|
||||||
-- Completion
|
-- Copilot (suggestion/panel disabled — blink-copilot handles completions)
|
||||||
{
|
{
|
||||||
"hrsh7th/nvim-cmp",
|
"zbirenbaum/copilot.lua",
|
||||||
|
event = "InsertEnter",
|
||||||
|
opts = {
|
||||||
|
suggestion = { enabled = false },
|
||||||
|
panel = { enabled = false },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
-- blink.cmp: fast Rust-powered completion engine
|
||||||
|
{
|
||||||
|
"saghen/blink.cmp",
|
||||||
|
version = "*",
|
||||||
dependencies = {
|
dependencies = {
|
||||||
"hrsh7th/cmp-buffer",
|
"rafamadriz/friendly-snippets",
|
||||||
"hrsh7th/cmp-path",
|
|
||||||
"hrsh7th/cmp-nvim-lsp",
|
|
||||||
"hrsh7th/cmp-nvim-lua",
|
|
||||||
"saadparwaiz1/cmp_luasnip",
|
|
||||||
{
|
{
|
||||||
"L3MON4D3/LuaSnip",
|
"L3MON4D3/LuaSnip",
|
||||||
dependencies = { "rafamadriz/friendly-snippets", "evesdropper/luasnip-latex-snippets.nvim" },
|
|
||||||
build = "make install_jsregexp",
|
build = "make install_jsregexp",
|
||||||
},
|
dependencies = { "evesdropper/luasnip-latex-snippets.nvim" },
|
||||||
},
|
|
||||||
config = function()
|
config = function()
|
||||||
local cmp = require("cmp")
|
|
||||||
local luasnip = require("luasnip")
|
|
||||||
|
|
||||||
-- Load snippets
|
|
||||||
require("luasnip.loaders.from_vscode").lazy_load()
|
require("luasnip.loaders.from_vscode").lazy_load()
|
||||||
require("luasnip.loaders.from_lua").load({ paths = "~/.config/nvim/lua/snippets" })
|
require("luasnip.loaders.from_lua").load({ paths = "~/.config/nvim/lua/snippets" })
|
||||||
|
|
||||||
cmp.setup({
|
|
||||||
snippet = {
|
|
||||||
expand = function(args)
|
|
||||||
luasnip.lsp_expand(args.body)
|
|
||||||
end,
|
end,
|
||||||
},
|
},
|
||||||
mapping = cmp.mapping.preset.insert({
|
{
|
||||||
["<C-Space>"] = cmp.mapping.complete(),
|
"fmuaddel/blink-copilot",
|
||||||
["<CR>"] = cmp.mapping.confirm({ select = true }),
|
dependencies = { "zbirenbaum/copilot.lua" },
|
||||||
["<Tab>"] = cmp.mapping(function(fallback)
|
},
|
||||||
if require("copilot.suggestion").is_visible() then
|
},
|
||||||
require("copilot.suggestion").accept()
|
opts = {
|
||||||
elseif cmp.visible() then
|
keymap = {
|
||||||
cmp.select_next_item()
|
preset = "default",
|
||||||
elseif luasnip.expand_or_jumpable() then
|
["<Tab>"] = { "select_next", "snippet_forward", "fallback" },
|
||||||
luasnip.expand_or_jump()
|
["<S-Tab>"] = { "select_prev", "snippet_backward", "fallback" },
|
||||||
else
|
["<CR>"] = { "accept", "fallback" },
|
||||||
fallback()
|
},
|
||||||
end
|
appearance = { nerd_font_variant = "mono" },
|
||||||
end, { "i", "s" }),
|
sources = {
|
||||||
["<S-Tab>"] = cmp.mapping(function(fallback)
|
default = { "lazydev", "lsp", "path", "snippets", "buffer", "copilot" },
|
||||||
if cmp.visible() then
|
providers = {
|
||||||
cmp.select_prev_item()
|
lazydev = {
|
||||||
elseif luasnip.jumpable(-1) then
|
name = "LazyDev",
|
||||||
luasnip.jump(-1)
|
module = "lazydev.integrations.blink",
|
||||||
else
|
score_offset = 100,
|
||||||
fallback()
|
},
|
||||||
end
|
copilot = {
|
||||||
end, { "i", "s" }),
|
name = "copilot",
|
||||||
}),
|
module = "blink-copilot",
|
||||||
sources = cmp.config.sources({
|
score_offset = 50,
|
||||||
{ name = "nvim_lsp" },
|
async = true,
|
||||||
{ name = "luasnip" },
|
},
|
||||||
{ name = "buffer" },
|
},
|
||||||
{ name = "path" },
|
},
|
||||||
}),
|
snippets = { preset = "luasnip" },
|
||||||
})
|
completion = {
|
||||||
end,
|
ghost_text = { enabled = true },
|
||||||
|
},
|
||||||
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
@@ -188,6 +188,6 @@ return {
|
|||||||
tabline = {},
|
tabline = {},
|
||||||
winbar = {},
|
winbar = {},
|
||||||
inactive_winbar = {},
|
inactive_winbar = {},
|
||||||
extensions = { "nvim-tree", "fzf", "lazy" },
|
extensions = { "nvim-tree", "lazy" },
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
@@ -1,28 +1,29 @@
|
|||||||
return {
|
return {
|
||||||
"nvimtools/none-ls.nvim",
|
"stevearc/conform.nvim",
|
||||||
dependencies = { "nvim-lua/plenary.nvim" },
|
event = { "BufWritePre" },
|
||||||
config = function()
|
cmd = { "ConformInfo" },
|
||||||
local null_ls = require("null-ls")
|
keys = {
|
||||||
null_ls.setup({
|
{
|
||||||
debug = false,
|
"<leader>fm",
|
||||||
sources = {
|
function() require("conform").format({ async = true }) end,
|
||||||
-- null_ls.builtins.diagnostics.markdownlint.with({
|
desc = "Format buffer",
|
||||||
-- filetypes = { "markdown", "markdown.pandoc", "pandoc" },
|
},
|
||||||
-- }),
|
},
|
||||||
null_ls.builtins.formatting.prettier.with({
|
opts = {
|
||||||
filetypes = { "markdown", "markdown.pandoc", "pandoc" },
|
formatters_by_ft = {
|
||||||
}),
|
javascript = { "prettier" },
|
||||||
|
typescript = { "prettier" },
|
||||||
|
javascriptreact = { "prettier" },
|
||||||
|
typescriptreact = { "prettier" },
|
||||||
|
json = { "prettier" },
|
||||||
|
html = { "prettier" },
|
||||||
|
css = { "prettier" },
|
||||||
|
markdown = { "prettier" },
|
||||||
|
yaml = { "prettier" },
|
||||||
|
},
|
||||||
|
format_on_save = {
|
||||||
|
timeout_ms = 500,
|
||||||
|
lsp_fallback = true,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
on_attach = function(client, bufnr)
|
|
||||||
if client.supports_method("textDocument/formatting") then
|
|
||||||
vim.api.nvim_create_autocmd("BufWritePre", {
|
|
||||||
buffer = bufnr,
|
|
||||||
callback = function()
|
|
||||||
vim.lsp.buf.format({ bufnr = bufnr })
|
|
||||||
end,
|
|
||||||
})
|
|
||||||
end
|
|
||||||
end,
|
|
||||||
})
|
|
||||||
end,
|
|
||||||
}
|
}
|
||||||
@@ -1,6 +1,8 @@
|
|||||||
return {
|
return {
|
||||||
|
{
|
||||||
"nvim-treesitter/nvim-treesitter",
|
"nvim-treesitter/nvim-treesitter",
|
||||||
build = ":TSUpdate",
|
build = ":TSUpdate",
|
||||||
|
dependencies = { "nvim-treesitter/nvim-treesitter-textobjects" },
|
||||||
config = function()
|
config = function()
|
||||||
require("nvim-treesitter.configs").setup({
|
require("nvim-treesitter.configs").setup({
|
||||||
ensure_installed = { "c", "lua", "python", "javascript", "markdown", "markdown_inline", "html", "css", "bash", "vim", "vimdoc" },
|
ensure_installed = { "c", "lua", "python", "javascript", "markdown", "markdown_inline", "html", "css", "bash", "vim", "vimdoc" },
|
||||||
@@ -39,6 +41,29 @@ return {
|
|||||||
node_decremental = "grm",
|
node_decremental = "grm",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
|
textobjects = {
|
||||||
|
select = {
|
||||||
|
enable = true,
|
||||||
|
lookahead = true,
|
||||||
|
keymaps = {
|
||||||
|
["af"] = "@function.outer",
|
||||||
|
["if"] = "@function.inner",
|
||||||
|
["ac"] = "@class.outer",
|
||||||
|
["ic"] = "@class.inner",
|
||||||
|
["aa"] = "@parameter.outer",
|
||||||
|
["ia"] = "@parameter.inner",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
move = {
|
||||||
|
enable = true,
|
||||||
|
set_jumps = true,
|
||||||
|
goto_next_start = { ["]f"] = "@function.outer", ["]c"] = "@class.outer" },
|
||||||
|
goto_next_end = { ["]F"] = "@function.outer", ["]C"] = "@class.outer" },
|
||||||
|
goto_previous_start = { ["[f"] = "@function.outer", ["[c"] = "@class.outer" },
|
||||||
|
goto_previous_end = { ["[F"] = "@function.outer", ["[C"] = "@class.outer" },
|
||||||
|
},
|
||||||
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
-- Better folding setup
|
-- Better folding setup
|
||||||
@@ -47,4 +72,5 @@ return {
|
|||||||
vim.opt.foldlevel = 20
|
vim.opt.foldlevel = 20
|
||||||
vim.opt.foldenable = false
|
vim.opt.foldenable = false
|
||||||
end,
|
end,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user