Add more Neovim plugins and config

This commit is contained in:
Lexi / Zoe 2026-09-01 19:48:28 +02:00
parent 29e053af75
commit b5bd437512
Signed by: binaryDiv
GPG key ID: F8D4956E224DA232
5 changed files with 676 additions and 50 deletions

View file

@ -33,7 +33,9 @@ vimdiff() {
# Neovim shortcuts # Neovim shortcuts
alias nv='nvim' alias nv='nvim'
alias nvimr='nvim -R' alias nvimr='nvim -R'
alias nvim-config='nvim ~/.config/nvim/init.lua' function nvim-config() {
( cd ~/.config/nvim/ && nvim init.lua )
}
# yay without parameters does "pacman -Syu" but I don't want it to do this # yay without parameters does "pacman -Syu" but I don't want it to do this
yay() { yay() {

View file

@ -1,8 +1,10 @@
-- Config shortcuts -- Config shortcuts
local o = vim.o local o = vim.o
local opt = vim.opt
local keymap = vim.keymap local keymap = vim.keymap
-- Autocommand group for this file to allow config reloading
local augroup = vim.api.nvim_create_augroup('init', { clear = true })
------------------ ------------------
-- GENERAL OPTIONS -- GENERAL OPTIONS
@ -36,9 +38,20 @@ o.softtabstop = -1
-- Don't auto-insert comment leader when entering insert mode with o/O -- Don't auto-insert comment leader when entering insert mode with o/O
vim.api.nvim_create_autocmd('FileType', { vim.api.nvim_create_autocmd('FileType', {
group = augroup,
command = 'set formatoptions-=o', command = 'set formatoptions-=o',
}) })
-- Open new split windows at the bottom / right side
o.splitbelow = true
o.splitright = true
-- Pseudo-transparency for floating windows
o.winblend = 10
-- Show inline diagnostics (LSP)
vim.diagnostic.config { virtual_text = true }
------------- -------------
-- FILE TYPES -- FILE TYPES
@ -54,6 +67,13 @@ vim.filetype.add {
vim.g.html_indent_autotags = 'html,body' vim.g.html_indent_autotags = 'html,body'
vim.g.html_indent_inctags = 'p' vim.g.html_indent_inctags = 'p'
-- In filetypes that use tab indentation, render tabs as 4 spaces
vim.api.nvim_create_autocmd('FileType', {
group = augroup,
pattern = 'go',
command = 'setlocal tabstop=4',
})
----------- -----------
-- MAPPINGS -- MAPPINGS
@ -61,22 +81,26 @@ vim.g.html_indent_inctags = 'p'
-- For keys that are safe to be mapped, see: https://vim.fandom.com/wiki/Unused_keys -- For keys that are safe to be mapped, see: https://vim.fandom.com/wiki/Unused_keys
-- Exit insert mode with jk -- Exit insert/command mode with jk
keymap.set('i', 'jk', '<Esc>') keymap.set('i', 'jk', '<Esc>')
keymap.set('c', 'jk', '<Esc>')
-- Quick exit with Ctrl-q -- Quick exit (:qall) with Ctrl-q
keymap.set('n', '<C-q>', ':q<CR>') keymap.set('n', '<C-q>', '<Cmd>qall<CR>')
-- Close current buffer (:q) with Alt-q
keymap.set('n', '<A-q>', '<Cmd>q<CR>')
-- Quick save all open buffers with Ctrl-s -- Quick save all open buffers with Ctrl-s
keymap.set('n', '<C-s>', ':wall<CR>') keymap.set('n', '<C-s>', '<Cmd>wall<CR>')
keymap.set('i', '<C-s>', '<C-o>:wall<CR>') keymap.set('i', '<C-s>', '<C-o><Cmd>wall<CR>')
-- Simple copy and paste to/from system clipboard with Ctrl-c in visual mode -- Simple copy and paste to/from system clipboard with Ctrl-c in visual mode
-- and Ctrl-v in insert mode -- and Ctrl-v in insert mode
keymap.set('v', '<C-c>', '"+y') keymap.set('v', '<C-c>', '"+y')
keymap.set('i', '<C-v>', '<C-\\><C-o>"+P') keymap.set('i', '<C-v>', '<C-\\><C-o>"+P')
-- Navigate between windows with Alt and hjkl -- Navigate between windows in normal mode with Alt and hjkl
keymap.set('n', '<A-h>', '<C-w>h') keymap.set('n', '<A-h>', '<C-w>h')
keymap.set('n', '<A-j>', '<C-w>j') keymap.set('n', '<A-j>', '<C-w>j')
keymap.set('n', '<A-k>', '<C-w>k') keymap.set('n', '<A-k>', '<C-w>k')
@ -92,32 +116,61 @@ keymap.set('n', '<A-Right>', '<C-w>4>')
keymap.set({'n', 'x'}, 'H', '^') keymap.set({'n', 'x'}, 'H', '^')
keymap.set({'n', 'x'}, 'L', '$') keymap.set({'n', 'x'}, 'L', '$')
-- Use comma (,) as a "modifier prefix" for alternative functions of regular -- Move cursor in insert mode with Alt and hjkl
-- commands (e.g. yank to system clipboard) or for random shortcuts. keymap.set('i', '<A-h>', '<Left>')
-- TODO: Comma or semicolon or single quote? keymap.set('i', '<A-j>', '<Down>')
keymap.set({'n', 'x'}, ',', '<Nop>') keymap.set('i', '<A-k>', '<Up>')
keymap.set('i', '<A-l>', '<Right>')
-- Prefix yank/delete/change/paste commands with "," to use system clipboard -- Visual mode: Extend selection to parent node with "."
keymap.set({'n', 'x'}, ',y', '"+y') -- ("an" will be remapped to "around next" by mini.ai)
keymap.set({'n', 'x'}, ',Y', '"+y$') local _an_keymap = vim.fn.maparg('an', 'x', false, true)
keymap.set({'n', 'x'}, ',d', '"+d') keymap.set('x', '.', _an_keymap.callback, { desc = 'Extend selection to parent node' })
keymap.set({'n', 'x'}, ',D', '"+D')
keymap.set({'n', 'x'}, ',c', '"+c') -- Visual mode: Move selected lines upwards/downwards with Alt-j/k
keymap.set({'n', 'x'}, ',C', '"+C') keymap.set('x', '<A-j>', ":m '>+1<CR>gv=gv")
keymap.set({'n', 'x'}, ',p', '"+p') keymap.set('x', '<A-k>', ":m '<-2<CR>gv=gv")
keymap.set({'n', 'x'}, ',P', '"+P')
-- Visual mode: Stay in visual mode when indenting
keymap.set('v', '<', '<gv')
keymap.set('v', '>', '>gv')
-- Use space as a "modifier prefix" for alternative functions of regular commands
-- (e.g. yank to system clipboard) or for random shortcuts.
keymap.set({'n', 'x'}, ' ', '<Nop>')
-- Prefix yank/delete/change/paste commands to use system clipboard
keymap.set({'n', 'x'}, ' y', '"+y', { desc = 'Yank (clipboard)' })
keymap.set({'n', 'x'}, ' Y', '"+y$', { desc = 'Yank rest of line (clipboard)' })
keymap.set({'n', 'x'}, ' d', '"+d', { desc = 'Delete (clipboard)' })
keymap.set({'n', 'x'}, ' D', '"+D', { desc = 'Delete rest of line (clipboard)' })
keymap.set({'n', 'x'}, ' c', '"+c', { desc = 'Change (clipboard)' })
keymap.set({'n', 'x'}, ' C', '"+C', { desc = 'Change rest of line (clipboard)' })
keymap.set({'n', 'x'}, ' p', '"+p', { desc = 'Paste after cursor (clipboard)' })
keymap.set({'n', 'x'}, ' P', '"+P', { desc = 'Paste before cursor (clipboard)' })
-- Paste from system clipboard on a new line (before/after the current line)
keymap.set('n', ' lp', '<Cmd>:put +<CR>', { desc = 'Paste on new line below cursor (clipboard)' })
keymap.set('n', ' lP', '<Cmd>:put! +<CR>', { desc = 'Paste on new line above cursor (clipboard)' })
-- Select previously changed or yanked text (e.g. pasted text) in visual mode
keymap.set('n', ' v', '`[v`]', { desc = 'Select previously changed/yanked text' })
-- Insert empty line(s) below or above current line without moving the cursor -- Insert empty line(s) below or above current line without moving the cursor
keymap.set('n', ',o', function() keymap.set('n', ' o', function()
local line = vim.api.nvim_win_get_cursor(0)[1] local line = vim.api.nvim_win_get_cursor(0)[1]
local repeated = vim.fn['repeat']({''}, vim.v.count1) local repeated = vim.fn['repeat']({''}, vim.v.count1)
vim.api.nvim_buf_set_lines(0, line, line, true, repeated) vim.api.nvim_buf_set_lines(0, line, line, true, repeated)
end) end, { desc = 'Insert empty line below cursor' })
keymap.set('n', ',O', function() keymap.set('n', ' O', function()
local line = vim.api.nvim_win_get_cursor(0)[1] - 1 local line = vim.api.nvim_win_get_cursor(0)[1] - 1
local repeated = vim.fn['repeat']({''}, vim.v.count1) local repeated = vim.fn['repeat']({''}, vim.v.count1)
vim.api.nvim_buf_set_lines(0, line, line, true, repeated) vim.api.nvim_buf_set_lines(0, line, line, true, repeated)
end) end, { desc = 'Insert empty line above cursor' })
-- LSP mappings (more in plugins.lua)
keymap.set('n', 'K', vim.lsp.buf.hover)
keymap.set('n', 'gq', vim.lsp.buf.format, { desc = 'Auto-format file (LSP)' })
---------- ----------

View file

@ -2,29 +2,128 @@
local keymap = vim.keymap local keymap = vim.keymap
local vr = vim.version.range local vr = vim.version.range
-- Autocommand group for this file to allow config reloading
local augroup = vim.api.nvim_create_augroup('init-plugins', { clear = true })
------------------ ------------------
-- INSTALL PLUGINS -- INSTALL PLUGINS
------------------ ------------------
-- Run commands to build or update things when installing/upgrading plugins
vim.api.nvim_create_autocmd('PackChanged', {
group = augroup,
callback = function(ev)
local name, kind = ev.data.spec.name, ev.data.kind
if kind == 'install' or kind == 'update' then
if name == 'nvim-treesitter' then
-- nvim-treesitter requires installed parsers to be updated when upgrading the plugin.
vim.cmd(':TSUpdate')
end
end
end,
})
vim.pack.add { vim.pack.add {
-- [ Libraries ]
-- Plenary: Library with helper functions (needed by neovim-session-manager)
'https://github.com/nvim-lua/plenary.nvim',
-- UI component library (needed by neo-tree)
'https://github.com/MunifTanjim/nui.nvim',
-- Nerd font icons (e.g. file types)
'https://github.com/nvim-tree/nvim-web-devicons',
-- [ General / plugin collections ]
-- mini.nvim plugin collection
{ src = 'https://github.com/nvim-mini/mini.nvim', version = 'stable' },
-- snacks.nvim plugin collection
'https://github.com/folke/snacks.nvim',
-- Session manager
'https://github.com/Shatur/neovim-session-manager',
-- File browser sidebar
{ src = 'https://github.com/nvim-neo-tree/neo-tree.nvim', version = vr '3.*' },
-- [ UI ]
-- Better status line
'https://github.com/nvim-lualine/lualine.nvim',
-- Better tab bar
'https://github.com/romgrk/barbar.nvim',
-- Breadcrumbs
'https://github.com/Bekaboo/dropbar.nvim',
-- Git integration for buffers (added/changed/deleted signs and more)
'https://github.com/lewis6991/gitsigns.nvim',
-- Code exploration picker
'https://github.com/error311/wayfinder.nvim',
-- Show keybindings while typing
'https://github.com/folke/which-key.nvim',
-- Easier window management/navigation
{ src = 'https://github.com/rvaccone/wind.nvim', version = vr '1.*' },
-- [ Editing ]
-- Better code completion -- Better code completion
{ src = 'https://github.com/saghen/blink.cmp', version = vr '1.*' }, { src = 'https://github.com/saghen/blink.cmp', version = vr '1.*' },
-- Better marks -- Auto-pairs
'https://github.com/chentoast/marks.nvim', 'https://github.com/ZhiyuanLck/smart-pairs',
-- Auto-close structures with "end" keyword (e.g. in Lua)
'https://github.com/RRethy/nvim-treesitter-endwise',
-- Substitute and exchange operator
'https://github.com/gbprod/substitute.nvim',
-- Surround selections with quotes etc. -- Surround selections with quotes etc.
{ src = 'https://github.com/kylechui/nvim-surround', version = vr '4.*' }, { src = 'https://github.com/kylechui/nvim-surround', version = vr '4.*' },
-- Substitute and exchange operator -- Snippet collection
'https://github.com/gbprod/substitute.nvim', 'https://github.com/rafamadriz/friendly-snippets',
-- [ Text rendering ]
-- Highlight word under cursor
'https://github.com/sontungexpt/stcursorword',
-- Highlight todo comments -- Highlight todo comments
'https://github.com/folke/todo-comments.nvim', 'https://github.com/folke/todo-comments.nvim',
-- Highlight colors (hex codes etc.) -- Highlight colors (hex codes etc.)
'https://github.com/brenoprata10/nvim-highlight-colors', 'https://github.com/brenoprata10/nvim-highlight-colors',
-- [ Language support ]
-- Treesitter parser manager
'https://github.com/nvim-treesitter/nvim-treesitter',
-- Collection of LSP configurations
'https://github.com/neovim/nvim-lspconfig',
-- LSP manager
'https://github.com/mason-org/mason.nvim',
-- Bridge between Mason and lspconfig
'https://github.com/mason-org/mason-lspconfig.nvim',
} }
@ -32,11 +131,273 @@ vim.pack.add {
-- INITIALIZE PLUGINS -- INITIALIZE PLUGINS
--------------------- ---------------------
-- Better code completion ------------
-- mini.nvim
------------
-- Extended a/i text objects
require('mini.ai').setup {}
-- Icon provider
require('mini.icons').setup {}
--------------
-- snacks.nvim
--------------
-- Enable and configure selected plugins
require('snacks').setup {
bigfile = { enabled = true },
git = { enabled = true },
indent = {
enabled = true,
animate = { enabled = false },
},
input = { enabled = true },
notifier = {
enabled = true,
timeout = 5000, -- milliseconds, default: 3000
},
picker = { enabled = true },
scroll = { enabled = true },
scratch = { enabled = true },
statuscolumn = { enabled = true },
terminal = { enabled = true },
}
-- Mappings for various pickers
-- See also: https://github.com/folke/snacks.nvim/blob/main/docs/picker.md#general
keymap.set('n', '<leader>fb', Snacks.picker.buffers, { desc = 'Buffers' })
keymap.set('n', '<leader>ff', Snacks.picker.files, { desc = 'Find files' })
keymap.set('n', '<leader>fg', Snacks.picker.grep, { desc = 'Live grep' })
keymap.set('n', '<leader>fj', Snacks.picker.jumps, { desc = 'Jump list' })
keymap.set('n', '<leader>fr', Snacks.picker.resume, { desc = 'Resume previous search' })
keymap.set('n', '<leader>fu', Snacks.picker.undo, { desc = 'Undo history' })
-- Mappings for LSP-related pickers
-- TODO: Add more LSP shortcuts
keymap.set('n', '<leader>dx', Snacks.picker.diagnostics, { desc = 'List diagnostics' })
keymap.set('n', 'gd', Snacks.picker.lsp_definitions, { desc = 'Go to definition' })
-- Mappings for scratchpads
keymap.set('n', '<leader>.', Snacks.scratch.open)
keymap.set('n', '<leader>scr', Snacks.scratch.select)
-- Mappings for git
keymap.set('n', '<leader>gg', Snacks.lazygit.open, { desc = 'Open lazygit' })
keymap.set('n', '<leader>gl', Snacks.lazygit.log, { desc = 'Open git log' })
keymap.set('n', '<leader>gL', Snacks.lazygit.log_file, { desc = 'Open git log for file' })
keymap.set('n', '<leader>gB', Snacks.gitbrowse.open, { desc = 'Open git repository in browser' })
-- Toggle terminal with Ctrl-/
keymap.set({ 'n', 't' }, '<C-_>', Snacks.terminal.toggle)
-------------------------
-- neovim-session-manager
-------------------------
local session_manager_config = require('session_manager.config')
require('session_manager').setup {
-- Only autoload session for the current directory or git repository if it exists.
-- (Default: Always load the last session)
autoload_mode = {
session_manager_config.AutoloadMode.CurrentDir,
session_manager_config.AutoloadMode.GitSession,
},
-- A list of directories where the session will not be autosaved.
autosave_ignore_dirs = {},
-- Only autosave if a session is active.
autosave_only_in_session = true,
-- List currently loaded session in the load_session UI.
load_include_current = true,
}
-- Keymaps (all with \ss prefix)
keymap.set('n', '<leader>ssl', '<Cmd>SessionManager load_session<CR>')
keymap.set('n', '<leader>ss0', '<Cmd>SessionManager load_last_session<CR>')
keymap.set('n', '<leader>ss.', '<Cmd>SessionManager load_current_dir_session<CR>')
keymap.set('n', '<leader>ssg', '<Cmd>SessionManager load_git_session<CR>')
keymap.set('n', '<leader>ssv', '<Cmd>SessionManager save_current_session<CR>')
----------------------------------
-- neo-tree (file browser sidebar)
----------------------------------
require('neo-tree').setup {
enable_cursor_hijack = true,
source_selector = {
statusline = true,
},
default_component_configs = {
indent = { with_expanders = true },
symlink_target = { enabled = true },
},
window = {
-- TODO: Mappings for h/l to open/close directories?
mappings = {},
},
filesystem = {
bind_to_cwd = false,
filtered_items = {
hide_dotfiles = false,
hide_gitignored = false,
hide_by_name = {
'.ansible',
'.cache',
'.idea',
'.git',
'node_modules',
},
always_show = {
'.gitignore',
},
},
follow_current_file = { enabled = true },
use_libuv_file_watcher = true,
},
buffers = {
bind_to_cwd = false,
},
}
-- Make symbolic link targets less visible
vim.cmd.highlight { "NeoTreeSymbolicLinkTarget", "guifg=#626262" }
-- Focus file explorer with space+e, toggle with uppercase E
keymap.set('n', ' e', '<Cmd>Neotree focus<CR>')
keymap.set('n', ' E', '<Cmd>Neotree toggle<CR>')
-------------------------------
-- lualine (better status line)
-------------------------------
local lualine_filename_component = {
'filename',
path = 1, -- Show relative paths
symbols = {
readonly = '[readonly]',
},
}
require('lualine').setup {
options = {
disabled_filetypes = {
'neo-tree',
},
},
sections = {
lualine_c = { lualine_filename_component },
lualine_x = {
'lsp_status',
-- Display warning if treesitter parser is missing
{ 'vim.b._treesitter_missing and "No Treesitter" or ""', color = { fg = '#cc6600' } },
'filetype',
},
},
inactive_sections = {
lualine_c = { lualine_filename_component },
},
}
-- Disable builtin mode indicator in bottom line since the statusline contains it too
vim.o.showmode = false
--------------------------
-- barbar (buffer/tab bar)
--------------------------
require('barbar').setup {}
-- Close tab
keymap.set('n', '<A-c>', '<Cmd>BufferClose<CR>')
-- Move to previous/next tab
keymap.set('n', '<A-,>', '<Cmd>BufferPrevious<CR>')
keymap.set('n', '<A-.>', '<Cmd>BufferNext<CR>')
-- Re-order tab
keymap.set('n', '<A-<>', '<Cmd>BufferMovePrevious<CR>')
keymap.set('n', '<A->>', '<Cmd>BufferMoveNext<CR>')
-- Jump to buffer by letter
keymap.set('n', '<A-p>', '<Cmd>BufferPick<CR>')
------------------------
-- dropbar (breadcrumbs)
------------------------
require('dropbar').setup {}
-----------------------------------------
-- gitsigns (git integration for buffers)
-----------------------------------------
require('gitsigns').setup {}
--------------------------------------
-- wayfinder (code exploration picker)
--------------------------------------
require('wayfinder').setup {}
-- Open wayfinder
keymap.set('n', '<leader>wf', '<Plug>(WayfinderOpen)', { desc = 'Wayfinder' })
-------------------------------
-- which-key (show keybindings)
-------------------------------
require('which-key').setup {
preset = 'modern',
}
-- Mapping for showing normal mode keymaps
keymap.set('n', '<leader>?', require('which-key').show)
----------------------------------
-- wind (easier window management)
----------------------------------
local wind = require('wind')
wind.setup {
windows = {
max = 4,
},
breaths = {
max = 4,
},
-- TODO: Adjust keymaps?
-- keymaps = false,
}
------------------------------
-- blink.cmp (code completion)
------------------------------
require('blink.cmp').setup { require('blink.cmp').setup {
keymap = { keymap = {
preset = 'super-tab', preset = 'super-tab',
}, },
completion = {
trigger = { show_in_snippet = false },
},
cmdline = { cmdline = {
keymap = { keymap = {
preset = 'inherit', preset = 'inherit',
@ -53,35 +414,75 @@ require('blink.cmp').setup {
} }
-- Better marks --------------
require('marks').setup { -- smart-pairs
-- Show builtin marks in gutter: last jump position (`), last change (.), --------------
-- last selection in visual mode (</>).
-- TODO: See which of those are really helpful and remove the others. require('pairs'):setup {
builtin_marks = { '`', '.', '<', '>' }, pairs = {
-- TODO: For now, disable auto-pairs for single quotes to avoid unnecessary quotes in
-- comments and strings (e.g. "don't"). Not a good solution though.
['*'] = {
{ '(', ')' },
{ '[', ']' },
{ '{', '}' },
{ "'", "'", { ignore_pre = '.*' }},
{ '"', '"' },
},
},
} }
-- Surround selections with quotes etc. ---------------------------------------------
require('nvim-surround').setup {} -- substitute (substitute/exchange operators)
---------------------------------------------
-- Substitute and exchange operator
local substitute = require('substitute') local substitute = require('substitute')
local substitute_exchange = require('substitute.exchange')
substitute.setup {} substitute.setup {}
-- ... Use "s" key for substitute (by default "s" is equivalent to "cl") -- Use "s" key for substitute (by default "s" is equivalent to "cl")
keymap.set('n', 's', substitute.operator) keymap.set('n', 's', substitute.operator)
keymap.set('n', 'ss', substitute.line) keymap.set('n', 'ss', substitute.line)
keymap.set('n', 'S', substitute.eol) keymap.set('n', 'S', substitute.eol)
keymap.set('x', 's', substitute.visual) keymap.set('x', 's', substitute.visual)
-- ... Prefix with "," to use system clipboard (remap to use the substitute mappings above) -- Use "sx" for exchange (use twice to swap text objects)
keymap.set({'n', 'x'}, ',s', '"+s', { remap = true }) -- TODO: Maybe actually use x/X or space+x for this?
keymap.set({'n', 'x'}, ',S', '"+S', { remap = true }) keymap.set('n', 'sx', substitute_exchange.operator)
keymap.set('n', 'sxx', substitute_exchange.line)
keymap.set('x', 'X', substitute_exchange.visual)
-- Prefix with space to use system clipboard (remap to use the substitute mappings above)
keymap.set({'n', 'x'}, ' s', '"+s', { remap = true, desc = 'Substitute (clipboard)' })
keymap.set({'n', 'x'}, ' S', '"+S', { remap = true, desc = 'Substitute rest of line (clipboard)' })
-- Highlight todo comments --------------------------------------
-- nvim-surround (surround selections)
--------------------------------------
require('nvim-surround').setup {}
---------------------------------------------
-- stcursorword (highlight word under cursor)
---------------------------------------------
require('stcursorword').setup {
excluded = {
filetypes = {
'neo-tree',
},
},
}
----------------
-- todo-comments
----------------
require('todo-comments').setup { require('todo-comments').setup {
-- Disable gutter icons -- Disable gutter icons
signs = false, signs = false,
@ -99,5 +500,74 @@ require('todo-comments').setup {
} }
-- Highlight colors (hex codes etc.) -------------------------------------------------
-- nvim-highlight-colors (display colors in code)
-------------------------------------------------
require('nvim-highlight-colors').setup {} require('nvim-highlight-colors').setup {}
----------------------------------------------
-- nvim-treesitter (manage treesitter parsers)
----------------------------------------------
-- Install Tree-sitter parsers
require('nvim-treesitter').install {
'bash',
'cmake',
'cpp',
'css',
'dockerfile',
'editorconfig',
'git_config',
'gitignore',
'go',
'html',
'jinja',
'json',
'python',
'sway',
'yaml',
}
-- Collect a list of all currently installed Tree-sitter parsers
local function get_installed_treesitter_parsers()
local parsers = {}
for _, path in pairs(vim.api.nvim_get_runtime_file('parser/*.so', true)) do
local name, _ = vim.fs.basename(path):gsub('%.so$', '')
table.insert(parsers, name)
end
return parsers
end
local treesitter_parsers = get_installed_treesitter_parsers()
-- Autocommand to load treesitter parser
vim.api.nvim_create_autocmd("FileType", {
group = augroup,
callback = function(args)
local lang = vim.treesitter.language.get_lang(args.match)
if vim.list_contains(treesitter_parsers, lang) then
vim.treesitter.start(args.buf)
-- TODO: Enable folds, indentation?
vim.b[args.buf]._treesitter_missing = false
else
vim.b[args.buf]._treesitter_missing = true
end
end
})
----------------------
-- mason (LSP manager)
----------------------
require('mason').setup {}
-------------------------------------------
-- mason-lspconfig (Mason/lspconfig bridge)
-------------------------------------------
require('mason-lspconfig').setup {}

View file

@ -5,6 +5,8 @@ vim.pack.add {
-- { src = 'https://github.com/nickkadutskyi/jb.nvim', name = 'jetbrains-theme' }, -- { src = 'https://github.com/nickkadutskyi/jb.nvim', name = 'jetbrains-theme' },
} }
local dim_inactive_windows = true
-- Initialize and customize themes -- Initialize and customize themes
require('kanagawa').setup { require('kanagawa').setup {
-- Compile colorscheme for fast startup times. -- Compile colorscheme for fast startup times.
@ -12,7 +14,7 @@ require('kanagawa').setup {
compile = true, compile = true,
-- Dim inactive windows -- Dim inactive windows
dimInactive = true, dimInactive = dim_inactive_windows,
-- Customize colors -- Customize colors
colors = { colors = {
@ -25,6 +27,18 @@ require('kanagawa').setup {
}, },
}, },
}, },
-- Add or modify highlight groups
overrides = function(colors)
local theme = colors.theme
return {
-- Make window separator more visible
WinSeparator = {
fg = theme.ui.bg_p1, -- default: bg_m3
bg = dim_inactive_windows and theme.ui.bg_dim or "NONE", -- default
},
}
end,
} }
--require('rose-pine').setup {} --require('rose-pine').setup {}

View file

@ -1,27 +1,101 @@
{ {
"plugins": { "plugins": {
"barbar.nvim": {
"rev": "337ecfadb8bf005050990bf2f624dc4fc828dabd",
"src": "https://github.com/romgrk/barbar.nvim"
},
"blink.cmp": { "blink.cmp": {
"rev": "78336bc89ee5365633bcf754d93df01678b5c08f", "rev": "78336bc89ee5365633bcf754d93df01678b5c08f",
"src": "https://github.com/saghen/blink.cmp", "src": "https://github.com/saghen/blink.cmp",
"version": "1.0.0 - 2.0.0" "version": "1.0.0 - 2.0.0"
}, },
"dropbar.nvim": {
"rev": "808ba31cde89aec8833e9789f5e04557cd31c9e1",
"src": "https://github.com/Bekaboo/dropbar.nvim"
},
"friendly-snippets": {
"rev": "6cd7280adead7f586db6fccbd15d2cac7e2188b9",
"src": "https://github.com/rafamadriz/friendly-snippets"
},
"gitsigns.nvim": {
"rev": "5be654f2232c10ddcad19c1607a67b6b4b78fc29",
"src": "https://github.com/lewis6991/gitsigns.nvim"
},
"kanagawa": { "kanagawa": {
"rev": "bb85e4bfc8d89b0e62c8fa53ccdd13d12e2f77b3", "rev": "bb85e4bfc8d89b0e62c8fa53ccdd13d12e2f77b3",
"src": "https://github.com/rebelot/kanagawa.nvim" "src": "https://github.com/rebelot/kanagawa.nvim"
}, },
"marks.nvim": { "lualine.nvim": {
"rev": "f353e8c08c50f39e99a9ed474172df7eddd89b72", "rev": "221ce6b2d999187044529f49da6554a92f740a96",
"src": "https://github.com/chentoast/marks.nvim" "src": "https://github.com/nvim-lualine/lualine.nvim"
},
"mason-lspconfig.nvim": {
"rev": "40276c4df7e6bdce6801d6c035c6227f9115a855",
"src": "https://github.com/mason-org/mason-lspconfig.nvim"
},
"mason.nvim": {
"rev": "2a6940af80375532e5e9e7c1f2fc6319a1b7a69d",
"src": "https://github.com/mason-org/mason.nvim"
},
"mini.nvim": {
"rev": "1345d191bb3da9c7b0e977f4387c5761f9bff68d",
"src": "https://github.com/nvim-mini/mini.nvim",
"version": "'stable'"
},
"neo-tree.nvim": {
"rev": "83e7a2982fd12b9c3d35bc39dd5877cd91a02a61",
"src": "https://github.com/nvim-neo-tree/neo-tree.nvim",
"version": "3.0.0 - 4.0.0"
},
"neovim-session-manager": {
"rev": "89d253a6c68af60b49570044591d5b8701866601",
"src": "https://github.com/Shatur/neovim-session-manager"
},
"nui.nvim": {
"rev": "10fc361835c856ba4233ef5ea135b919bf3dce97",
"src": "https://github.com/MunifTanjim/nui.nvim"
}, },
"nvim-highlight-colors": { "nvim-highlight-colors": {
"rev": "e4c7af0211866162d999ce0bdd6a029302e19139", "rev": "e4c7af0211866162d999ce0bdd6a029302e19139",
"src": "https://github.com/brenoprata10/nvim-highlight-colors" "src": "https://github.com/brenoprata10/nvim-highlight-colors"
}, },
"nvim-lspconfig": {
"rev": "16286347bdba1333c7d124d9de9fe6630731b2b2",
"src": "https://github.com/neovim/nvim-lspconfig"
},
"nvim-surround": { "nvim-surround": {
"rev": "2e93e154de9ff326def6480a4358bfc149d5da2c", "rev": "2e93e154de9ff326def6480a4358bfc149d5da2c",
"src": "https://github.com/kylechui/nvim-surround", "src": "https://github.com/kylechui/nvim-surround",
"version": "4.0.0 - 5.0.0" "version": "4.0.0 - 5.0.0"
}, },
"nvim-treesitter": {
"rev": "19071296d3d643b48615ee574a20e8a03ac40872",
"src": "https://github.com/nvim-treesitter/nvim-treesitter"
},
"nvim-treesitter-endwise": {
"rev": "8fe8a95630f4f2c72a87ba1927af649e0bfaa244",
"src": "https://github.com/RRethy/nvim-treesitter-endwise"
},
"nvim-web-devicons": {
"rev": "5f032a85be210cd1c6ac98861eb3b187ff3bd5eb",
"src": "https://github.com/nvim-tree/nvim-web-devicons"
},
"plenary.nvim": {
"rev": "74b06c6c75e4eeb3108ec01852001636d85a932b",
"src": "https://github.com/nvim-lua/plenary.nvim"
},
"smart-pairs": {
"rev": "ac18bf42ac653593ea97cc425596b01c8643662a",
"src": "https://github.com/ZhiyuanLck/smart-pairs"
},
"snacks.nvim": {
"rev": "882c996cf28183f4d63640de0b4c02ec886d01f2",
"src": "https://github.com/folke/snacks.nvim"
},
"stcursorword": {
"rev": "ab099f1682a0b251cda8f089d028a31426b83a06",
"src": "https://github.com/sontungexpt/stcursorword"
},
"substitute.nvim": { "substitute.nvim": {
"rev": "0d2077398552f069abccbd964a26dd7cd26882cd", "rev": "0d2077398552f069abccbd964a26dd7cd26882cd",
"src": "https://github.com/gbprod/substitute.nvim" "src": "https://github.com/gbprod/substitute.nvim"
@ -29,6 +103,19 @@
"todo-comments.nvim": { "todo-comments.nvim": {
"rev": "31e3c38ce9b29781e4422fc0322eb0a21f4e8668", "rev": "31e3c38ce9b29781e4422fc0322eb0a21f4e8668",
"src": "https://github.com/folke/todo-comments.nvim" "src": "https://github.com/folke/todo-comments.nvim"
},
"wayfinder.nvim": {
"rev": "2ce480d35626ddb533ba594fa7ca865d61184ec6",
"src": "https://github.com/error311/wayfinder.nvim"
},
"which-key.nvim": {
"rev": "3aab2147e74890957785941f0c1ad87d0a44c15a",
"src": "https://github.com/folke/which-key.nvim"
},
"wind.nvim": {
"rev": "89231ff08ce160c6d44a0b281a1663b676967147",
"src": "https://github.com/rvaccone/wind.nvim",
"version": "1.0.0 - 2.0.0"
} }
} }
} }