Compare commits

..

No commits in common. "master" and "getting-rid-of-nvchad" have entirely different histories.

16 changed files with 594 additions and 1007 deletions

149
init.lua
View File

@ -1,87 +1,88 @@
vim.g.mapleader = ' '
vim.g.maplocalleader = ';'
-- vim.g.python3_host_prog = '/usr/bin/python3'
local opt = vim.opt
local g = vim.g
vim.opt.mouse = 'a' -- mouse does annoying things for me if it's not 'a'
vim.opt.signcolumn = 'yes'
vim.opt.clipboard = '' -- don't just use the system clipboard
vim.opt.wrap = false
vim.opt.breakindent = false
vim.opt.conceallevel = 2
vim.opt.concealcursor = 'c'
vim.opt.undofile = true
vim.opt.undolevels = 10000
vim.opt.writebackup = false
vim.opt.history = 5000
vim.opt.shada = { "'1000", '<50', 's10', 'h' }
vim.g.syntax = true
g.mapleader = ' '
g.maplocalleader = ';'
g.python3_host_prog = '/usr/bin/python3'
opt.mouse = 'a' -- mouse does annoying things for me if it's not 'a'
opt.signcolumn = 'yes'
opt.clipboard = '' -- don't just use the system clipboard
opt.wrap = false
opt.breakindent = false
opt.spell = false
opt.conceallevel = 2
opt.undofile = true
opt.undolevels = 10000
opt.writebackup = false
opt.history = 5000
opt.shada = { "'1000", '<50', 's10', 'h' }
-- Tabs and Indents
-- ===
vim.opt.textwidth = 80 -- Text width maximum chars before wrapping
vim.opt.tabstop = 4 -- The number of spaces a tab is
vim.opt.shiftwidth = 4 -- Number of spaces to use in auto(indent)
vim.opt.smarttab = true -- Tab insert blanks according to 'shiftwidth'
vim.opt.autoindent = true -- Use same indenting on new lines
vim.opt.smartindent = true -- Smart autoindenting on new lines
vim.opt.shiftround = true -- Round indent to multiple of 'shiftwidth'
opt.textwidth = 80 -- Text width maximum chars before wrapping
opt.tabstop = 4 -- The number of spaces a tab is
opt.shiftwidth = 4 -- Number of spaces to use in auto(indent)
opt.smarttab = true -- Tab insert blanks according to 'shiftwidth'
opt.autoindent = true -- Use same indenting on new lines
opt.smartindent = true -- Smart autoindenting on new lines
opt.shiftround = true -- Round indent to multiple of 'shiftwidth'
-- Timing
-- ===
vim.opt.ttimeout = true
vim.opt.timeoutlen = 500 -- Time out on mappings
vim.opt.ttimeoutlen = 10 -- Time out on key codes
vim.opt.updatetime = 250 -- Idle time to write swap and trigger CursorHold
opt.ttimeout = true
opt.timeoutlen = 500 -- Time out on mappings
opt.ttimeoutlen = 10 -- Time out on key codes
opt.updatetime = 250 -- Idle time to write swap and trigger CursorHold
-- Searching
-- ===
vim.opt.ignorecase = true -- Search ignoring case
vim.opt.smartcase = true -- Keep case when searching with *
vim.opt.infercase = true -- Adjust case in insert completion mode
vim.opt.incsearch = true -- Incremental search
opt.ignorecase = true -- Search ignoring case
opt.smartcase = true -- Keep case when searching with *
opt.infercase = true -- Adjust case in insert completion mode
opt.incsearch = true -- Incremental search
vim.opt.hlsearch = true -- highlight searched stuff
-- Formatting
-- ===
vim.opt.wrap = false -- No wrap by default
vim.opt.linebreak = true -- Break long lines at 'breakat'
vim.opt.breakat = '\\ \\ ;:,!?' -- Long lines break chars
vim.opt.startofline = false -- Cursor in same column for few commands
vim.opt.splitbelow = true -- Splits open bottom right
vim.opt.splitright = true
vim.opt.breakindentopt = { shift = 2, min = 20 }
vim.opt.formatoptions = 'trowcnlm1jp' -- see :h fo-table & :h formatoptions
opt.wrap = false -- No wrap by default
opt.linebreak = true -- Break long lines at 'breakat'
opt.breakat = '\\ \\ ;:,!?' -- Long lines break chars
opt.startofline = false -- Cursor in same column for few commands
opt.splitbelow = true -- Splits open bottom right
opt.splitright = true
opt.breakindentopt = { shift = 2, min = 20 }
opt.formatoptions = '' -- see :h fo-table & :h formatoptions
vim.opt.breakindent = true
-- Diff
-- ===
vim.opt.diffopt:append { 'iwhite', 'indent-heuristic', 'algorithm:patience' }
vim.opt.wildmode = 'longest:full,full' -- Command-line completion mode
opt.diffopt:append { 'iwhite', 'indent-heuristic', 'algorithm:patience' }
opt.wildmode = 'longest:full,full' -- Command-line completion mode
-- Folds
-- ===
vim.opt.foldlevelstart = 60
vim.opt.foldlevel = 60
vim.opt.foldminlines = 5
opt.foldlevel = 10 -- start with all folds open
-- Editor UI
-- ===
vim.o.guifont = 'FiraCode Nerd Font:h15'
vim.opt.termguicolors = true
vim.opt.shortmess = 'xsTOInfFitloCaAs'
vim.opt.showmode = true -- Show mode in cmd window
vim.opt.scrolloff = 6 -- Keep at least n lines above/below
vim.opt.sidescrolloff = 10 -- Keep at least n lines left/right
vim.opt.numberwidth = 2 -- Minimum number of columns to use for the line number
vim.opt.number = true -- Show line numbers
vim.opt.relativenumber = true -- Show relative line numbers
vim.opt.ruler = true -- Default status ruler
vim.opt.showtabline = 1 -- Don't change this, goes back to a vanilla vim default
vim.opt.laststatus = 3 -- Always show laststatus
opt.termguicolors = true
opt.shortmess = 'xsTOInfFitloCaAs'
opt.showmode = true -- Show mode in cmd window
opt.scrolloff = 10 -- Keep at least n lines above/below
opt.sidescrolloff = 10 -- Keep at least n lines left/right
opt.numberwidth = 2 -- Minimum number of columns to use for the line number
opt.number = true -- Show line numbers
opt.relativenumber = true -- Show relative line numbers
opt.ruler = true -- Default status ruler
opt.showtabline = 1 -- Don't change this, goes back to a vanilla vim default
opt.laststatus = 3 -- Always show laststatus
-- Sets how neovim will display certain whitespace characters in the editor.
-- See `:help 'list'`
@ -115,31 +116,31 @@ if vim.g.neovide == true then
vim.g.neovide_fullscreen = true
end
vim.opt.helpheight = 0 -- Disable help window resizing
vim.opt.winwidth = 30 -- Minimum width for active window
vim.opt.winminwidth = 1 -- Minimum width for inactive windows
vim.opt.winheight = 1 -- Minimum height for active window
vim.opt.winminheight = 1 -- Minimum height for inactive window
opt.helpheight = 0 -- Disable help window resizing
opt.winwidth = 30 -- Minimum width for active window
opt.winminwidth = 1 -- Minimum width for inactive windows
opt.winheight = 1 -- Minimum height for active window
opt.winminheight = 1 -- Minimum height for inactive window
vim.opt.showcmd = false -- show command in status line
vim.opt.cmdheight = 0
vim.opt.cmdwinheight = 5 -- Command-line lines
vim.opt.equalalways = true -- Resize windows on split or close
vim.opt.colorcolumn = '80' -- Column highlight at textwidth's max character-limit
opt.showcmd = false -- show command in status line
opt.cmdheight = 0
opt.cmdwinheight = 5 -- Command-line lines
opt.equalalways = true -- Resize windows on split or close
opt.colorcolumn = '+0' -- Column highlight at textwidth's max character-limit
vim.opt.cursorline = true
vim.opt.cursorlineopt = { 'number', 'screenline' }
opt.cursorline = true
opt.cursorlineopt = { 'number', 'screenline' }
vim.opt.pumheight = 10 -- Maximum number of items to show in the popup menu
vim.opt.pumwidth = 10 -- Minimum width for the popup menu
vim.opt.pumblend = 10 -- Popup blend
opt.pumheight = 10 -- Maximum number of items to show in the popup menu
opt.pumwidth = 10 -- Minimum width for the popup menu
opt.pumblend = 10 -- Popup blend
-- Spelling correction
-- ===
vim.opt.spell = true -- manually enable spell with `set spell` or `<leader>ts`
vim.opt.spelllang = 'en,de_de'
vim.opt.spellsuggest = 'double,50,timeout:5000'
opt.spell = false -- manually enable spell with `set spell` or `<leader>ts`
opt.spelllang = 'en,de_de,'
opt.spellsuggest = 'double,50,timeout:5000'
-- autocommands
-- ===
@ -174,10 +175,8 @@ end ---@diagnostic disable-next-line: undefined-field
vim.opt.rtp:prepend(lazypath)
require 'custom.maps'
require 'custom.autocmds'
require('lazy').setup({
{ import = 'custom.plugins' },
{ import = 'kickstart.plugins.debug' },
}, {
ui = {
-- If you are using a Nerd Font: set icons to an empty table which will use the

View File

@ -1,106 +0,0 @@
local augroup = vim.api.nvim_create_augroup('plex_generic_autocmds', {})
-- enable text wrapping for text filetypes
vim.api.nvim_create_autocmd('FileType', {
group = augroup,
pattern = {
'tex',
'text',
'markdown',
'help',
'typst',
},
callback = function()
vim.opt_local.wrap = true
end,
})
-- use html for htmldjango
vim.api.nvim_create_autocmd('FileType', {
group = augroup,
pattern = {
'html',
},
callback = function()
vim.bo.filetype = 'html'
end,
})
-- always use the tex filetype for latex things, as those are most supported by
-- latex language servers.
vim.api.nvim_create_autocmd('FileType', {
group = augroup,
pattern = {
'latex',
'plaintex',
},
callback = function()
vim.bo.filetype = 'tex'
end,
})
-- conceallevel is what converts things like **bold** to be displayed as bold
-- without the stars. This is useful, but we might not want it for some
-- filetypes.
vim.api.nvim_create_autocmd('FileType', {
group = augroup,
pattern = {
'latex',
'markdown',
'plaintex',
'tex',
'typst',
},
callback = function()
vim.opt_local.conceallevel = 0
vim.opt_local.concealcursor = ''
end,
})
-- Enable spellcheck for some types
vim.api.nvim_create_autocmd('FileType', {
group = augroup,
pattern = {
'latex',
'markdown',
'typst',
'plaintex',
'tex',
},
callback = function()
vim.cmd [[set spell]]
end,
})
-- disable auto formatting for some filetypes
vim.api.nvim_create_autocmd('FileType', {
group = augroup,
pattern = {
'TelescopePrompt',
},
callback = function()
vim.opt_local.formatoptions = ''
end,
})
-- tweak colorschemes and highlights after loading a new colorscheme
vim.api.nvim_create_autocmd('ColorScheme', {
group = augroup,
callback = function()
vim.cmd [[highlight Comment gui=NONE]] -- no italics for comments
end,
})
-- pin main.typ for typst projects
vim.api.nvim_create_autocmd('FileType', {
group = augroup,
pattern = {
'typst',
},
callback = function()
-- pin the main file
vim.lsp.buf.execute_command { command = 'tinymist.pinMain', arguments = { vim.api.nvim_buf_get_name(0) } }
-- -- unpin the main file
-- vim.lsp.buf.execute_command { command = 'tinymist.pinMain', arguments = { nil } }
end,
})

View File

@ -20,27 +20,48 @@ vim.keymap.set({ 't', 'i', 'v', 'n' }, '<A-k>', '<C-u>', { desc = 'move a many l
vim.keymap.set({ 'v', 'n' }, 'H', '<Home>', { desc = 'move to start of line' })
vim.keymap.set({ 'v', 'n' }, 'L', '<End>', { desc = 'move to end of line' })
-- make j and k move by visual lines, not actual lines
vim.keymap.set({ 'v', 'n' }, 'j', 'gj', { desc = 'move up' })
vim.keymap.set({ 'v', 'n' }, 'k', 'gk', { desc = 'move down' })
-- move+scroll
vim.keymap.set({ 'v', 'n' }, 'zk', '<C-e>', { desc = 'move and scroll up' })
vim.keymap.set({ 'v', 'n' }, 'zj', '<C-y>', { desc = 'move and scroll down' })
-- go to beginning and end in insert mode
vim.keymap.set('i', '<C-S-h>', '<esc>^i', { desc = 'Go to the start of the line' })
vim.keymap.set('i', '<C-S-l>', '<End>', { desc = 'Go to the end of the line' })
vim.keymap.set('i', '<C-w>', '<esc>lwi', { desc = 'Go a word further' })
vim.keymap.set('i', '<C-b>', '<esc>lbi', { desc = 'Go a word backward' })
vim.keymap.set('i', '<C-e>', '<esc>lea', { desc = 'Go a to next word end' })
vim.keymap.set('i', '<C-s>', '<esc>^i', { desc = 'Go to the start of the line' })
vim.keymap.set('i', '<C-e>', '<End>', { desc = 'Go to the end of the line' })
vim.keymap.set('i', '<C-w>', '<esc>wa', { desc = 'Go a word further' })
vim.keymap.set('i', '<C-b>', '<esc>ba', { desc = 'Go a word backward' })
-- navigate hjkl in insert mode
vim.keymap.set('i', '<C-h>', '<Left>', { desc = 'Move left' })
vim.keymap.set('i', '<C-j>', '<Down>', { desc = 'Move down' })
vim.keymap.set('i', '<C-k>', '<Up>', { desc = 'Move up' })
vim.keymap.set('i', '<C-l>', '<Right>', { desc = 'Move right' })
vim.keymap.set('i', '<C-j>', '<Right>', { desc = 'Move right' })
vim.keymap.set('i', '<C-k>', '<Down>', { desc = 'Move down' })
vim.keymap.set('i', '<C-l>', '<Up>', { desc = 'Move up' })
--------------------------------------------------------------------------------
-- Workspace, buffer and window manipulation
--------------------------------------------------------------------------------
-- split windows
vim.keymap.set('n', '<leader>"', '<cmd>vsplit<cr>', { desc = 'Split the window vertically' })
vim.keymap.set('n', '<leader>%', '<cmd>split<cr>', { desc = 'Split the window horizontally' })
-- window actions
vim.keymap.set('n', '<leader>wbn', '<cmd>enew<cr>', { desc = 'Open a [N]ew [B]uffer' })
vim.keymap.set('n', '<leader>wbc', '<cmd>bw<cr>', { desc = '[C]lose current [B]uffer' }) -- :bd would keep in background
vim.keymap.set('n', '<C-Up>', '<cmd>resize +1<cr>', { desc = 'Resize window' })
vim.keymap.set('n', '<C-Down>', '<cmd>resize -1<cr>', { desc = 'Resize window' })
vim.keymap.set('n', '<C-Left>', '<cmd>vertical resize +1<cr>', { desc = 'Resize window vertically' })
vim.keymap.set('n', '<C-Right>', '<cmd>vertical resize -1<cr>', { desc = 'Resize window vertically' })
-- tabs/workspaces
vim.keymap.set('n', '<leader>wn', '<cmd>tabnew<cr>', { desc = 'Open a [N]ew [W]orkspace/Tab' })
vim.keymap.set('n', '<leader>wc', '<cmd>tabclose<cr>', { desc = '[C]lose a [W]orkspace/Tab' })
vim.keymap.set('n', '<leader>wk', '<cmd>tabnext<cr>', { desc = 'Next [W]orkspace/Tab' })
vim.keymap.set('n', '<leader>wj', '<cmd>tabprevious<cr>', { desc = 'Last [W]orkspace/Tab' })
vim.keymap.set('t', '<C-w>', vim.api.nvim_replace_termcodes('<C-\\><C-N>', true, true, true), { desc = 'Leave terminal mode' })
--------------------------------------------------------------------------------
-- Move to things
--------------------------------------------------------------------------------
-- move to window
-- See `:help wincmd` for a list of all window commands
vim.keymap.set('n', '<C-h>', '<C-w><C-h>', { desc = 'Move focus to the left window' })
@ -52,40 +73,6 @@ vim.keymap.set('n', '<C-k>', '<C-w><C-k>', { desc = 'Move focus to the upper win
vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, { desc = 'Go to previous [D]iagnostic message' })
vim.keymap.set('n', ']d', vim.diagnostic.goto_next, { desc = 'Go to next [D]iagnostic message' })
-- let me out!!!
vim.keymap.set({ 'n', 'v' }, 'qqq', '<cmd>bnext<cr><cmd>bd #<cr>', { desc = '[Q]uit the current window' })
vim.keymap.set({ 'n', 'v' }, '<A-c>', '<cmd>bnext<cr><cmd>bd #<cr>', { desc = '[Q]uit the current window' })
vim.keymap.set({ 'n' }, '#', "'", { desc = '[Q]uit the current window' })
--------------------------------------------------------------------------------
-- Workspace, buffer and window manipulation
--------------------------------------------------------------------------------
-- split windows
vim.keymap.set('n', '<leader>"', '<cmd>vsplit<cr>', { desc = 'Split the window vertically' })
vim.keymap.set('n', '<leader>%', '<cmd>split<cr>', { desc = 'Split the window horizontally' })
vim.keymap.set('n', '<leader>w"', '<cmd>vnew<cr>', { desc = 'Split the window vertically (new buffer)' })
vim.keymap.set('n', '<leader>w%', '<cmd>new<cr>', { desc = 'Split the window horizontally (new buffer)' })
-- window actions
vim.keymap.set('n', '<leader>wbn', '<cmd>enew<cr>', { desc = 'Open a [N]ew buffer' })
vim.keymap.set('n', '<leader>wbc', '<cmd>bw<cr>', { desc = '[C]lose current buffer' }) -- :bd would keep in background
vim.keymap.set('n', '<C-Up>', '<cmd>resize +1<cr>', { desc = 'Resize window' })
vim.keymap.set('n', '<C-Down>', '<cmd>resize -1<cr>', { desc = 'Resize window' })
vim.keymap.set('n', '<C-Left>', '<cmd>vertical resize +1<cr>', { desc = 'Resize window vertically' })
vim.keymap.set('n', '<C-Right>', '<cmd>vertical resize -1<cr>', { desc = 'Resize window vertically' })
-- tabs/workspaces
vim.keymap.set('n', '<Tab>', '<cmd>bnext<cr>', { desc = 'Next Buffer' })
vim.keymap.set('n', '<S-Tab>', '<cmd>bprev<cr>', { desc = 'Last Buffer' })
vim.keymap.set('n', '<leader>wn', '<cmd>tabnew<cr>', { desc = 'Open a [N]ew [W]orkspace/Tab' })
vim.keymap.set('n', '<leader>wc', '<cmd>tabclose<cr>', { desc = '[C]lose a [W]orkspace/Tab' })
vim.keymap.set('n', '<leader>wk', '<cmd>tabnext<cr>', { desc = 'Next [W]orkspace/Tab' })
vim.keymap.set('n', '<leader>wj', '<cmd>tabprevious<cr>', { desc = 'Last [W]orkspace/Tab' })
vim.keymap.set('n', '<leader>n', '<cmd>enew<cr>', { desc = '[N]ew Buffer' })
vim.keymap.set('t', '<C-w>', vim.api.nvim_replace_termcodes('<C-\\><C-N>', true, true, true), { desc = 'Leave terminal mode' })
--------------------------------------------------------------------------------
-- Editing
--------------------------------------------------------------------------------
@ -93,41 +80,22 @@ vim.keymap.set('t', '<C-w>', vim.api.nvim_replace_termcodes('<C-\\><C-N>', true,
vim.keymap.set({ 'n', 'v' }, '<leader>y', '"+y', { desc = '[Y]ank to system' })
vim.keymap.set({ 'n', 'v' }, '<leader>Y', '"+Y', { desc = '[Y]ank to system' })
vim.keymap.set({ 'n', 'v' }, '<leader>yy', '"+yy', { desc = '[Y]ank to system' })
-- paste from system clipboard
vim.keymap.set({ 'n', 'v' }, '<leader>p', '"+p', { desc = '[P]aste from system' })
vim.keymap.set({ 't', 'n', 'v' }, '<C-S-v>', '<C-w>"+pi', { desc = 'Paste the system clipboard' })
-- do not overwrite the register when pasting (kept defaults)
vim.keymap.set({ 'v' }, 'P', 'P', { desc = '[P]aste to selected' })
vim.keymap.set({ 'v' }, 'p', 'p', { desc = '[p]aste to selected and copy to register' })
-- add lines from normal and visual, without insert mode
vim.keymap.set({ 'n', 'v' }, 'OO', 'O<Esc>', { desc = 'Insert a line above' })
vim.keymap.set({ 'n', 'v' }, 'oo', 'o<Esc>', { desc = 'Insert a line below' })
-- add lines from normal and visual, with insert mode
vim.keymap.set({ 'n', 'v' }, 'O', 'O', { desc = 'Insert a line above and insert' })
vim.keymap.set({ 'n', 'v' }, 'o', 'o', { desc = 'Insert a line below and insert' })
vim.keymap.set({ 'n', 'v' }, 'Oi', 'O', { desc = 'Insert a line above and insert' })
vim.keymap.set({ 'n', 'v' }, 'oi', 'o', { desc = 'Insert a line below and insert' })
-- make current line a blank line
vim.keymap.set({ 'n', 'v' }, 'do', 'Vc<Esc>', { desc = '[D]o [O]ver / Rewrite line' })
-- substitute, normally on 's', but the leap plugin is more useful on 's'
vim.keymap.set({ 'n' }, '<leader>s', 's', { desc = '[S]ubstitute hovered text' })
-- do something useful with the arrow keys:
-- move lines up/down and change indentation
vim.keymap.set({ 'n', 'v' }, '<Up>', '<cmd> move-2<cr>', { desc = 'Move line up' })
vim.keymap.set({ 'n', 'v' }, '<Down>', '<cmd> move+1<cr>', { desc = 'Move line down' })
vim.keymap.set({ 'n', 'v' }, '<Down>', '<cmd> move+2<cr>', { desc = 'Move line down' })
vim.keymap.set({ 'n', 'v' }, '<Left>', '<<', { desc = 'Less indentation' })
vim.keymap.set({ 'n', 'v' }, '<Right>', '>>', { desc = 'More indentation' })
-- format a long line into multiple with length 80
vim.keymap.set({ 'v' }, '<leader>fl', ':!fmt -w80<CR>', { desc = '[F]ormat long [L]ines into smaller ones' })
--------------------------------------------------------------------------------
-- Formating
--------------------------------------------------------------------------------
@ -141,16 +109,3 @@ end, { desc = '[F]ormat buffer (no plugin)' })
vim.keymap.set('n', '<leader>fw', function()
require('mini.trailspace').trim()
end, { desc = '[F]ormat remove [W]hitespace' })
--------------------------------------------------------------------------------
-- Formating
--------------------------------------------------------------------------------
-- discard F15
vim.keymap.set({ 'i', 't', 'x', 'n', 'v' }, '<F15>', '<Nop>')
vim.keymap.set({ 'i', 't', 'x', 'n', 'v' }, '<S-F15>', '<Nop>')
vim.keymap.set({ 'i', 't', 'x', 'n', 'v' }, '<A-F15>', '<Nop>')
vim.keymap.set({ 'i', 't', 'x', 'n', 'v' }, '<C-F15>', '<Nop>')
vim.keymap.set({ 'i', 't', 'x', 'n', 'v' }, '<C-S-F15>', '<Nop>')
vim.keymap.set({ 'i', 't', 'x', 'n', 'v' }, '<C-A-F15>', '<Nop>')
vim.keymap.set({ 'i', 't', 'x', 'n', 'v' }, '<A-S-F15>', '<Nop>')
vim.keymap.set({ 'i', 't', 'x', 'n', 'v' }, '<C-A-S-F15>', '<Nop>')

View File

@ -53,11 +53,11 @@ vim.api.nvim_create_autocmd('LspAttach', {
-- Rename the variable under your cursor.
-- Most Language Servers support renaming across files, etc.
map('<leader>cr', vim.lsp.buf.rename, '[R]ename')
map('<leader>rn', vim.lsp.buf.rename, '[R]e[n]ame')
-- Execute a code action, usually your cursor needs to be on top of an error
-- or a suggestion from your LSP for this to activate.
map('<leader>ca', vim.lsp.buf.code_action, '[A]ction')
map('<leader>ca', vim.lsp.buf.code_action, '[C]ode [A]ction')
-- Opens a popup that displays documentation about the word under your cursor
-- See `:help K` for why this keymap.
@ -138,14 +138,29 @@ local servers = {
-- tsserver = {},
--
tinymist = {},
html = {},
cssls = {},
tsserver = {},
clangd = {},
pyright = {},
bashls = {},
cmake = {},
yamlls = {},
texlab = {},
basedpyright = {
root_dir = vim.loop.cwd,
flags = { debounce_text_changes = 300 },
single_file_support = true,
settings = {
python = {
analysis = {
autoSearchPaths = true,
diagnosticMode = 'openFilesOnly',
useLibraryCodeForTypes = true,
typeCheckingMode = 'basic',
},
},
},
},
rust_analyzer = {
settings = {
['rust-analyzer'] = {
@ -159,7 +174,6 @@ local servers = {
prefix = 'self',
},
cargo = {
features = 'all',
buildScripts = {
enable = true,
},
@ -171,9 +185,7 @@ local servers = {
},
},
ltex = {
use_spellfile = true,
autostart = false,
filetypes = { 'latex', 'tex', 'markdown', 'typst' },
use_spellfile = false,
settings = {
ltex = {
checkFrequency = 'save', -- shut up while i'm just editing, see <https://github.com/folke/noice.nvim/issues/166>
@ -183,7 +195,6 @@ local servers = {
enabled = {
'bibtex',
'tex',
'typst',
'latex',
'gitcommit',
'markdown',
@ -241,8 +252,7 @@ require('mason').setup()
-- for you, so that they are available from within Neovim.
local ensure_installed = vim.tbl_keys(servers or {})
vim.list_extend(ensure_installed, {
'stylua',
'typstfmt',
'stylua', -- Used to format Lua code
})
require('mason-tool-installer').setup { ensure_installed = ensure_installed }

View File

@ -13,19 +13,9 @@ return {
function()
require('Comment.api').toggle.linewise.current()
end,
mode = { 'n' },
mode = { 'n', 'v' },
desc = 'Comment toggle current line',
},
{
'<leader>v',
function()
local esc = vim.api.nvim_replace_termcodes('<ESC>', true, false, true)
vim.api.nvim_feedkeys(esc, 'nx', false)
require('Comment.api').toggle.linewise(vim.fn.visualmode())
end,
mode = { 'x' },
desc = 'Comment toggle selected lines',
},
},
config = function(_, opts)
vim.keymap.set('n', '<leader>c', function()
@ -62,34 +52,12 @@ return {
{
'ziontee113/icon-picker.nvim',
keys = {
{ '<localleader>fi', '<cmd>IconPickerNormal<CR>', desc = 'pick icon' },
{ '<C-I>', '<cmd>IconPickerNormal<CR>', desc = 'pick icon' },
{ 'y<C-I>', '<cmd>IconPickerYank<CR>', desc = 'yank icon' },
},
cmd = { 'IconPickerInsert', 'IconPickerYank', 'IconPickerNormal' },
config = function()
require('icon-picker').setup { disable_legacy_commands = true }
end,
},
{
'windwp/nvim-autopairs',
event = 'InsertEnter',
-- Optional dependency
dependencies = { 'hrsh7th/nvim-cmp' },
config = function()
require('nvim-autopairs').setup {}
-- WARN: this is kind of anoying with rust, so I have disabeld it
-- -- If you want to automatically add `(` after selecting a function or method
-- local cmp_autopairs = require 'nvim-autopairs.completion.cmp'
-- local cmp = require 'cmp'
-- cmp.event:on('confirm_done', cmp_autopairs.on_confirm_done())
end,
},
{
'mbbill/undotree',
config = function()
vim.keymap.set({ 'n', 'v' }, '<leader>u', vim.cmd.UndotreeToggle, { desc = '[U]ndo menu' })
vim.g.undotree_WindowLayout = 3
vim.g.undotree_SplitWidth = 32
vim.g.undotree_DiffAutoOpen = false
end,
},
}

View File

@ -1,4 +1,6 @@
return {
'tpope/vim-sleuth', -- Detect tabstop and shiftwidth automatically
-- NOTE: Plugins can specify dependencies.
--
-- The dependencies are proper plugin specifications as well - anything
@ -25,7 +27,7 @@ return {
-- Disable "format_on_save lsp_fallback" for languages that don't
-- have a well standardized coding style. You can add additional
-- languages here or re-enable it for the disabled ones.
local disable_filetypes = { c = false, cpp = false, json = true, bib = true }
local disable_filetypes = { c = true, cpp = true }
return {
timeout_ms = 500,
lsp_fallback = not disable_filetypes[vim.bo[bufnr].filetype],

View File

@ -11,9 +11,9 @@ return {
-- NOTE: `opts = {}` is the same as calling `require('fidget').setup({})`
{ 'j-hui/fidget.nvim', opts = {} },
-- `lazydev` configures Lua LSP for your Neovim config, runtime and plugins
-- `neodev` configures Lua LSP for your Neovim config, runtime and plugins
-- used for completion, annotations and signatures of Neovim apis
{ 'folke/lazydev.nvim' },
{ 'folke/neodev.nvim', opts = {} },
},
config = function()
require 'custom.plugins.configs.lsp'
@ -36,37 +36,37 @@ return {
'folke/trouble.nvim',
cmd = 'Trouble',
opts = { use_diagnostic_signs = true },
keys = {
{ '<leader>ctb', '<cmd>Trouble diagnostics toggle filter.buf=0<cr>', desc = 'Document Diagnostics (Trouble)' },
{ '<leader>ctr', '<cmd>Trouble diagnostics toggle<cr>', desc = 'Workspace Diagnostics (Trouble)' },
{ '<leader>ctq', '<cmd>Trouble qflist toggle<cr>', desc = 'Quickfix List (Trouble)' },
{ '<leader>ctl', '<cmd>Trouble loclist toggle<cr>', desc = 'Location List (Trouble)' },
{ '<leader>ctd', '<cmd>Trouble symbols<cr>', desc = 'LSP symbols (Trouble)' },
{ '<leader>ctt', '<cmd>Trouble todo<cr>', desc = 'Todos (Trouble)' },
{ '<leader>cts', '<cmd>Trouble lsp_document_symbols toggle win.position=right<cr>', desc = 'Document [S]ymbols side (Trouble)' },
{
'[q',
function()
if require('trouble').is_open() then
require('trouble').previous { skip_groups = true, jump = true }
else
vim.cmd.cprev()
end
end,
desc = 'Previous trouble/quickfix item',
},
{
']q',
function()
if require('trouble').is_open() then
require('trouble').next { skip_groups = true, jump = true }
else
vim.cmd.cnext()
end
end,
desc = 'Next trouble/quickfix item',
},
},
-- stylua: ignore
keys = {
{ '<leader>rb', "<cmd>Trouble diagnostics toggle filter.buf=0<cr>", desc = 'Document Diagnostics (Trouble)' },
{ '<leader>rr', '<cmd>Trouble diagnostics toggle<cr>', desc = 'Workspace Diagnostics (Trouble)' },
{ '<leader>rq', "<cmd>Trouble qflist toggle<cr>", desc = 'Quickfix List (Trouble)' },
{ '<leader>rl', "<cmd>Trouble loclist toggle<cr>", desc = 'Location List (Trouble)' },
{ '<leader>rd', "<cmd>Trouble symbols<cr>", desc = 'LSP symbols (Trouble)' },
{ '<leader>rt', "<cmd>Trouble todo<cr>", desc = 'Todos (Trouble)' },
{
'[q',
function()
if require('trouble').is_open() then
require('trouble').previous({ skip_groups = true, jump = true })
else
vim.cmd.cprev()
end
end,
desc = 'Previous trouble/quickfix item',
},
{
']q',
function()
if require('trouble').is_open() then
require('trouble').next({ skip_groups = true, jump = true })
else
vim.cmd.cnext()
end
end,
desc = 'Next trouble/quickfix item',
},
},
},
{ -- Autocompletion
'hrsh7th/nvim-cmp',
@ -157,16 +157,16 @@ return {
--
-- <c-l> will move you to the right of each of the expansion locations.
-- <c-h> is similar, except moving you backwards.
--['<C-l>'] = cmp.mapping(function()
-- if luasnip.expand_or_locally_jumpable() then
-- luasnip.expand_or_jump()
-- end
--end, { 'i', 's' }),
--['<C-h>'] = cmp.mapping(function()
-- if luasnip.locally_jumpable(-1) then
-- luasnip.jump(-1)
-- end
--end, { 'i', 's' }),
['<C-l>'] = cmp.mapping(function()
if luasnip.expand_or_locally_jumpable() then
luasnip.expand_or_jump()
end
end, { 'i', 's' }),
['<C-h>'] = cmp.mapping(function()
if luasnip.locally_jumpable(-1) then
luasnip.jump(-1)
end
end, { 'i', 's' }),
-- For more advanced Luasnip keymaps (e.g. selecting choice nodes, expansion) see:
-- https://github.com/L3MON4D3/LuaSnip?tab=readme-ov-file#keymaps
@ -313,6 +313,177 @@ return {
},
},
{ 'kosayoda/nvim-lightbulb', event = { 'BufReadPre', 'BufNewFile' } },
{
'mfussenegger/nvim-dap',
lazy = false,
keys = {
{
'<leader>db',
function()
require('dap').toggle_breakpoint()
end,
desc = 'Set [D]ebug [B]reakpoint',
},
{
'<leader>dc',
function()
require('dap').continue()
end,
desc = '[D]ebug [C]ontinue',
},
{
'<leader>ds',
function()
require('dap').step_over()
end,
desc = 'Set [D]ebug [S]tep over',
},
{
'<leader>di',
function()
require('dap').step_into()
end,
desc = 'Set [D]ebug step [I]nto',
},
},
config = function()
local dap = require 'dap'
local mason_registry = require 'mason-registry'
local codelldb_root = mason_registry.get_package('codelldb'):get_install_path() .. '/extension/'
local codelldb_path = codelldb_root .. 'adapter/codelldb'
local liblldb_path = codelldb_root .. 'lldb/lib/liblldb.so'
dap.defaults.fallback.external_terminal = {
command = '/home/plex/.local/bin/kitty',
args = {},
}
dap.adapters.gdb = {
type = 'executable',
command = 'gdb',
args = { '-i', 'dap' },
}
dap.adapters.codelldb = {
type = 'server',
port = '30333',
executable = {
command = codelldb_path,
args = { '--port', '30333' },
detached = false,
},
}
dap.configurations.cpp = {
{
name = 'Launch file',
type = 'codelldb',
request = 'launch',
program = function()
return vim.fn.input('Path to executable: ', vim.fn.getcwd() .. '/', 'file')
end,
args = function()
return require('custom.utils').tokenize_args(vim.fn.input 'args: ')
end,
cwd = '${workspaceFolder}',
-- FIXME: perhaps we can put the stdio somewhere more practical
stopOnEntry = false,
},
}
dap.configurations.c = dap.configurations.cpp
dap.configurations.rust = dap.configurations.cpp
end,
},
{
'rcarriga/nvim-dap-ui',
keys = {
{
'<leader>du',
function()
require('dapui').toggle()
end,
desc = 'Open [D]ebug [U]i',
},
{
'<leader>dK',
function()
require('dap.ui.widgets').hover()
end,
desc = 'Open [D]ebug [K] hover',
},
{
'<leader>du',
function()
require('dapui').toggle()
end,
desc = 'Open [D]ebug [U]i',
},
{
'<leader>dws',
function()
local widgets = require 'dap.ui.widgets'
local my_sidebar = widgets.sidebar(widgets.scopes)
my_sidebar.open()
end,
desc = 'Open [D]ebug [W]indow [S]copes',
},
{
'<leader>dwf',
function()
local widgets = require 'dap.ui.widgets'
local my_sidebar = widgets.sidebar(widgets.frames)
my_sidebar.open()
end,
desc = 'Open [D]ebug [W]indow [F]rames',
},
{
'<leader>dwi',
function()
local widgets = require 'dap.ui.widgets'
local my_sidebar = widgets.sidebar(widgets.sessions)
my_sidebar.open()
end,
desc = 'Open [D]ebug [W]indow sess[I]ons',
},
{
'<leader>dwt',
function()
local widgets = require 'dap.ui.widgets'
local my_sidebar = widgets.sidebar(widgets.threads)
my_sidebar.open()
end,
desc = 'Open [D]ebug [W]indow [T]hreads',
},
{
'<leader>dwe',
function()
local widgets = require 'dap.ui.widgets'
local my_sidebar = widgets.sidebar(widgets.expression)
my_sidebar.open()
end,
desc = 'Open [D]ebug [W]indow [E]xpression',
},
},
dependencies = {
'mfussenegger/nvim-dap',
'nvim-neotest/nvim-nio',
},
config = function(_, opts)
local dap = require 'dap'
local dapui = require 'dapui'
dapui.setup(opts)
dap.listeners.after.event_initialized['dapui_config'] = function()
dapui.open {}
end
dap.listeners.before.event_terminated['dapui_config'] = function()
-- dapui.close {}
end
dap.listeners.before.event_exited['dapui_config'] = function()
-- dapui.close {}
end
end,
},
{
'folke/lazydev.nvim',
ft = 'lua', -- only load on lua files
@ -325,4 +496,48 @@ return {
},
},
{ 'Bilal2453/luvit-meta', lazy = true }, -- optional `vim.uv` typings
{
'mrcjkb/rustaceanvim',
enabled = false,
version = '^4', -- Recommended
ft = { 'rust' },
config = function()
local dap = require 'dap'
vim.g.rustaceanvim = {
enable_clippy = true,
-- Plugin configuration
tools = {
enable_clippy = true,
},
-- LSP configuration
server = {
on_attach = function(client, bufnr)
-- you can also put keymaps in here
end,
settings = {
-- rust-analyzer language server configuration
['rust-analyzer'] = {
cargo = {
features = 'all',
},
},
},
},
-- DAP configuration
dap = {
-- FIXME: the rustaceanvim debug config does not map the stdout/stderr to the
-- opened terminal, effectively rendering debugging with it useless. Luckily,
-- we can use the regular nvim-dap and nvim-dap-ui.
adapter = dap.adapters.codelldb,
},
}
end,
},
{
'theHamsta/nvim-dap-virtual-text',
lazy = false, -- PERF: this can be done more elegant
config = function()
require('nvim-dap-virtual-text').setup()
end,
},
}

View File

@ -80,20 +80,20 @@ return {
-- See `:help telescope.builtin`
local builtin = require 'telescope.builtin'
vim.keymap.set('n', '<localleader>fh', builtin.help_tags, { desc = '[H]elp' })
vim.keymap.set('n', '<localleader>fk', builtin.keymaps, { desc = '[K]eymaps' })
vim.keymap.set('n', '<localleader>ff', builtin.find_files, { desc = '[F]iles' })
vim.keymap.set('n', '<localleader>fe', builtin.builtin, { desc = 't[E]lescope' })
vim.keymap.set('n', '<localleader>fw', builtin.live_grep, { desc = 'a [W]ord interactively' })
vim.keymap.set('n', '<localleader>fcw', builtin.grep_string, { desc = '[C]urrent [W]ord' })
vim.keymap.set('n', '<localleader>fd', builtin.diagnostics, { desc = '[D]iagnostics' })
vim.keymap.set('n', '<localleader>fr', builtin.resume, { desc = '[R]esume' })
vim.keymap.set('n', '<localleader>fo', builtin.oldfiles, { desc = '[O]ld Files ("." for repeat)' })
vim.keymap.set('n', '<localleader>fh', builtin.help_tags, { desc = '[F]ind [H]elp' })
vim.keymap.set('n', '<localleader>fk', builtin.keymaps, { desc = '[F]ind [K]eymaps' })
vim.keymap.set('n', '<localleader>ff', builtin.find_files, { desc = '[F]ind [F]iles' })
vim.keymap.set('n', '<localleader>ft', builtin.builtin, { desc = '[F]ind [T]elescope' })
vim.keymap.set('n', '<localleader>fw', builtin.live_grep, { desc = '[F]ind a [W]ord interactively' })
vim.keymap.set('n', '<localleader>fcw', builtin.grep_string, { desc = '[F]ind [C]urrent [W]ord' })
vim.keymap.set('n', '<localleader>fd', builtin.diagnostics, { desc = '[F]ind [D]iagnostics' })
vim.keymap.set('n', '<localleader>fr', builtin.resume, { desc = '[F]ind [R]esume' })
vim.keymap.set('n', '<localleader>fof.', builtin.oldfiles, { desc = '[F]ind [O]ld Files ("." for repeat)' })
vim.keymap.set('n', '<localleader><leader>', builtin.buffers, { desc = '[ ] Find existing buffers' })
vim.keymap.set('n', '<localleader>fb', builtin.buffers, { desc = 'existing [B]uffers' })
vim.keymap.set('n', '<localleader>fm', builtin.marks, { desc = 'book[M]arks' })
vim.keymap.set('n', '<localleader>fd', builtin.diagnostics, { desc = '[D]iagnostigs' })
vim.keymap.set('n', '<localleader>fs', builtin.lsp_dynamic_workspace_symbols, { desc = 'LSP [S]ymbols' })
vim.keymap.set('n', '<localleader>fb', builtin.buffers, { desc = '[F]ind existing [B]uffers' })
vim.keymap.set('n', '<localleader>fm', builtin.marks, { desc = '[F]ind book[M]arks' })
vim.keymap.set('n', '<localleader>fd', builtin.diagnostics, { desc = '[F]ind LSP [D]iagnostigs' })
vim.keymap.set('n', '<localleader>fs', builtin.lsp_dynamic_workspace_symbols, { desc = '[F]ind LSP [S]ymbols' })
-- spelling
vim.keymap.set('n', 'z<space>', builtin.spell_suggest, { desc = '[F]ind spelling' })
@ -118,7 +118,7 @@ return {
end, { desc = '[F]ind [/] in Open Files' })
-- Shortcut for searching your Neovim configuration files
vim.keymap.set('n', '<localleader>fnf', function()
vim.keymap.set('n', '<leader>fnf', function()
builtin.find_files { cwd = vim.fn.stdpath 'config' }
end, { desc = '[F]ind [N]eovim [F]iles' })
end,
@ -127,7 +127,6 @@ return {
'jvgrootveld/telescope-zoxide',
dependencies = 'nvim-telescope/telescope.nvim',
config = function()
vim.keymap.set('n', '<localleader>cd', '<cmd> Telescope zoxide list<cr>', { desc = '[C]hange [D]irectory' })
-- Useful for easily creating commands
local z_utils = require 'telescope._extensions.zoxide.utils'
@ -135,7 +134,7 @@ return {
-- (other Telescope configuration...)
extensions = {
zoxide = {
prompt_title = '[ Recently visited directories (zoxide) ]',
prompt_title = '[ Walking on the shoulders of TJ ]',
mappings = {
default = {
after_action = function(selection)

View File

@ -1,122 +0,0 @@
return {
{
'zaldih/themery.nvim',
priority = 1000, -- Make sure to load this before all the other start plugins.
cmd = 'Themery',
keys = {
{ ';ft', '<cmd> Themery <cr>', desc = '[F]ind [T]heme' },
},
init = function()
require 'settings.theme'
end,
config = function()
require('themery').setup {
themes = {
-- Dark Themes
{
name = '==========Dark Themes==========',
colorscheme = '', -- this actually keeps the selected theme, but it wont work with persistence
},
{
name = 'nvim default',
colorscheme = 'default',
},
{
name = 'nvim lunaperche',
colorscheme = 'lunaperche',
},
{
name = 'nvim quiet',
colorscheme = 'quiet',
},
{
name = 'nvim retrobox',
colorscheme = 'retrobox',
},
{
name = 'nvim slate',
colorscheme = 'slate',
},
{
name = 'nvim vim',
colorscheme = 'vim',
},
{
name = 'tokyonight',
colorscheme = 'tokyonight',
},
{
name = 'tokyonight-moon',
colorscheme = 'tokyonight-moon',
},
{
name = 'tokyonight-storm',
colorscheme = 'tokyonight-storm',
},
{
name = 'kanagawa',
colorscheme = 'kanagawa',
},
{
name = 'kanagawa-dragon',
colorscheme = 'kanagawa-dragon',
},
{
name = 'kanagawa-wave',
colorscheme = 'kanagawa-wave',
},
{
name = 'zenbones',
colorscheme = 'zenbones',
before = [[
-- It's a major hack from the themery guys that this is a string
vim.opt.background = "dark"
]],
},
{
name = 'tokyobones',
colorscheme = 'tokyobones',
before = [[
-- It's a major hack from the themery guys that this is a string
vim.opt.background = "dark"
]],
},
{
name = 'kanagawabones',
colorscheme = 'kanagawabones',
before = [[
-- It's a major hack from the themery guys that this is a string
vim.opt.background = "dark"
]],
},
-- Light themes
{
name = '==========Light Themes==========',
colorscheme = '', -- this actually keeps the selected theme, but it wont work with persistence
},
{
name = 'tokyonight-day',
colorscheme = 'tokyonight-day',
},
{
name = 'kanagawa-lotus',
colorscheme = 'kanagawa-lotus',
},
{
name = 'zenbones',
colorscheme = 'zenbones',
before = [[
-- It's a major hack from the themery guys that this is a string
vim.opt.background = "light"
]],
},
},
themeConfigFile = '~/.config/nvim/lua/settings/theme.lua',
livePreview = true, -- Apply theme while browsing. Default to true.
}
end,
},
'folke/tokyonight.nvim',
'rebelot/kanagawa.nvim',
{ 'zenbones-theme/zenbones.nvim', dependencies = { 'rktjmp/lush.nvim' } },
}

View File

@ -1,13 +0,0 @@
return {
{
'kdheepak/lazygit.nvim',
keys = {
{ '<leader>gg', '<cmd>LazyGit<cr>', desc = 'Open LazyGit' },
},
cmd = 'LazyGit',
-- optional for floating window border decoration
dependencies = {
'nvim-lua/plenary.nvim',
},
},
}

View File

@ -1,19 +1,3 @@
local custom_headers = {
sharp = {
[[ ]],
[[ █ ████████ █████ ███████ ████ ]],
[[ ███ ██████ █████ █████████ ██████ ]],
[[ █████ ██████████████████████ ████ ███████████████ ]],
[[ ██ ██ █████ █████████████ ████ ████████████████ ]],
[[ ████ ███████████████ █████████ ████ █████ ██████ ████ ]],
[[ ██████ ██████ ███ █████████ ████ █████ █████ ████ ]],
[[ ████████ ███████████████████ ████ ████ █████ ████ ████ ]],
[[ ]],
[[ 🛠️ Sharp tools make good work 🖥️ ]],
[[ ]],
},
}
return {
{
'nvim-tree/nvim-tree.lua',
@ -100,33 +84,16 @@ return {
keys = {
{ '<F5>', '<cmd> NvimTreeToggle <cr>', desc = '[T]oggle [F]ile explorer' },
{ '<leader>tf', '<cmd> NvimTreeToggle <cr>', desc = '[T]oggle [F]ile explorer' },
-- TODO: better map for cd
},
},
{
'ggandor/leap.nvim',
lazy = false,
opts = {},
keys = {
{ 's', '<plug>(leap-forward)', desc = 'leap forward' },
{ 'S', '<plug>(leap-backward)', desc = 'leap backward' },
{ 'gs', '<plug>(leap-from-window)', desc = 'leap from window' },
},
config = function()
-- idk why it doesn't work when I just define an opts table, but that is
-- so
local leap = require 'leap'
leap.opts.safe_labels = 'asfghjkliztrewb'
leap.opts.labels = 'sfnjklhodweimbuyvrgtaqpcxz'
leap.opts.special_keys = {
next_target = '<enter>',
prev_target = '<tab>',
next_group = '<space>',
prev_group = '<tab>',
}
end,
},
{
'ggandor/flit.nvim',
@ -143,10 +110,35 @@ return {
}
end,
},
{ 'echasnovski/mini.trailspace', lazy = false, version = false, opts = { only_in_normal_buffers = true } },
{
'kdheepak/lazygit.nvim',
keys = {
{ '<leader>gg', '<cmd>LazyGit<cr>', desc = 'Open LazyGit' },
},
cmd = 'LazyGit',
-- optional for floating window border decoration
dependencies = {
'nvim-lua/plenary.nvim',
},
},
{
'folke/which-key.nvim',
event = 'VimEnter', -- Sets the loading event to 'VimEnter'
keys = { '<leader>', '<localleader>', '<c-r>', '<c-w>', '"', "'", '`', 'c', 'v', 'g' },
defaults = {
mode = { 'n', 'v' },
[';'] = { name = '+telescope' },
[';f'] = { name = '+find' },
['g'] = { name = '+goto' },
[']'] = { name = '+next' },
['['] = { name = '+prev' },
['<leader>d'] = { name = '+lsp/debug' },
['<leader>r'] = { name = '+diagnostics/quickfix' },
['<leader>c'] = { name = '+code' },
['<leader>g'] = { name = '+git' },
['<leader>t'] = { name = '+toggle/tools' },
['<leader>w'] = { name = '+window/which' },
['<leader>f'] = { name = '+formatting' },
},
opts = {
triggers_nowait = {
-- marks
@ -169,62 +161,13 @@ return {
v = { 'j', 'k' },
n = { 'o', 'O' },
},
-- plugins = {
-- marks = true, -- shows a list of your marks on ' and `
-- registers = true, -- shows your registers on " in NORMAL or <C-r> in INSERT mode
-- -- the presets plugin, adds help for a bunch of default keybindings in Neovim
-- -- No actual key bindings are created
-- spelling = {
-- enabled = true, -- enabling this will show WhichKey when pressing z= to select spelling suggestions
-- suggestions = 20, -- how many suggestions should be shown in the list?
-- },
-- presets = {
-- operators = true, -- adds help for operators like d, y, ...
-- motions = true, -- adds help for motions
-- text_objects = true, -- help for text objects triggered after entering an operator
-- windows = true, -- default bindings on <c-w>
-- nav = true, -- misc bindings to work with windows
-- z = true, -- bindings for folds, spelling and others prefixed with z
-- g = true, -- bindings for prefixed with g
-- },
-- },
icons = {
breadcrumb = '»', -- symbol used in the command line area that shows your active key combo
separator = '', -- symbol used between a key and it's label
group = '+', -- symbol prepended to a group
},
},
config = function(opts)
local wk = require 'which-key'
local defaults = {
mode = { 'n', 'v' },
{ '<leader>c', group = '[C]ode/[C]olor' },
{ '<leader>ct', group = '[T]rouble' },
{ '<leader>d', group = '[D]ebug' },
{ '<leader>dc', group = '[C]hange' },
{ '<leader>dw', group = '[W]indow' },
{ '<leader>f', group = '[F]ormatting' },
{ '<leader>g', group = '[G]ood tools' },
{ '<leader>r', group = '[R]ename' },
{ '<leader>t', group = '[T]oggle' },
{ '<leader>w', group = '[W]orkspace' },
{ '<leader>wb', group = 'buffer' },
{ '<localleader>', group = 'select' },
{ '<localleader>f', group = '[F]ind' },
{ '[', group = 'prev' },
{ ']', group = 'next' },
{ 'g', group = 'goto' },
}
wk.add(defaults, opts)
end,
},
{
'echasnovski/mini.trailspace',
lazy = false,
event = { 'BufReadPost', 'BufNewFile' },
opts = {
only_in_normal_buffers = true,
},
opts = {},
},
{
'itchyny/vim-cursorword',
@ -271,20 +214,35 @@ return {
})
end,
},
{ -- Useful plugin to show you pending keybinds.
'folke/which-key.nvim',
event = 'VimEnter', -- Sets the loading event to 'VimEnter'
config = function() -- This is the function that runs, AFTER loading
require('which-key').setup()
-- Document existing key chains
require('which-key').register {
['<leader>c'] = { name = '[C]ode', _ = 'which_key_ignore' },
['<leader>d'] = { name = '[D]ocument', _ = 'which_key_ignore' },
['<leader>r'] = { name = '[R]ename', _ = 'which_key_ignore' },
['<localleader>f'] = { name = '[F]ind', _ = 'which_key_ignore' },
['<leader>w'] = { name = '[W]orkspace', _ = 'which_key_ignore' },
['<leader>t'] = { name = '[T]oggle', _ = 'which_key_ignore' },
['<leader>h'] = { name = 'Git [H]unk', _ = 'which_key_ignore' },
}
-- visual mode
require('which-key').register({
['<leader>h'] = { 'Git [H]unk' },
}, { mode = 'v' })
end,
},
{
'RRethy/vim-illuminate',
lazy = false,
event = { 'BufReadPost', 'BufNewFile' },
opts = {
-- providers: provider used to get references in the buffer, ordered by priority
providers = {
'lsp', -- useless for tex but still used
'treesitter',
'regex',
},
large_file_cutoff = 50000,
delay = 200,
under_cursor = true,
under_cursor = false,
modes_allowlist = { 'n', 'no', 'nt' },
filetypes_denylist = {
'DiffviewFileHistory',
@ -294,48 +252,50 @@ return {
'git',
'minifiles',
'neo-tree',
'NvimTree_1',
'dashboard',
},
},
-- looks weird but is useful: put your cursor on a word and other occurences
-- of the word in your buffer will be highlighted. You can then use
-- '[[' and ']]' to go to the next or previous occurence.
--
-- Try it:
--
-- word #### word ###########
-- ############## word ######
-- #### word #### word word #
--
-- (Does only work if the regex source is currently active, otherwise the
-- references are those your language server or treesitter gives out, so
-- syntax aware)
keys = {
{ ']]', desc = 'Next Reference' },
{ '[[', desc = 'Prev Reference' },
},
config = function(_, opts)
local illuminate = require 'illuminate'
illuminate.configure(opts)
vim.keymap.set('n', '[[', function()
illuminate.goto_prev_reference() -- try putting your cursor on `illuminate`
end, { desc = 'Goto last occurence of current word' })
vim.keymap.set('n', ']]', function()
illuminate.goto_next_reference()
end, { desc = 'Goto next occurence of current word' })
require('illuminate').configure(opts)
local function map(key, dir, buffer)
vim.keymap.set('n', key, function()
require('illuminate')['goto_' .. dir .. '_reference'](false)
end, {
desc = dir:sub(1, 1):upper() .. dir:sub(2) .. ' Reference',
buffer = buffer,
})
end
map(']]', 'next')
map('[[', 'prev')
-- also set it after loading ftplugins, since a lot overwrite [[ and ]]
vim.api.nvim_create_autocmd('FileType', {
group = vim.api.nvim_create_augroup('plex_illuminate', {}),
callback = function()
local buffer = vim.api.nvim_get_current_buf()
map(']]', 'next', buffer)
map('[[', 'prev', buffer)
end,
})
end,
},
{
'folke/todo-comments.nvim',
lazy = false,
dependencies = 'nvim-telescope/telescope.nvim',
-- stylua: ignore
keys = {
{ ']t', function() require('todo-comments').jump_next() end, desc = 'Next todo comment' },
{ '[t', function() require('todo-comments').jump_prev() end, desc = 'Previous todo comment' },
{ '<LocalLeader>fdt', '<cmd>TodoTelescope<CR>', desc = 'todo' },
},
-- stylua: ignore
keys = {
{ ']t', function() require('todo-comments').jump_next() end, desc = 'Next todo comment' },
{ '[t', function() require('todo-comments').jump_prev() end, desc = 'Previous todo comment' },
{ '<LocalLeader>dt', '<cmd>TodoTelescope<CR>', desc = 'todo' },
{ '<leader>xt', '<cmd>TodoTrouble<CR>', desc = 'Todo (Trouble)' },
{ '<leader>xT', '<cmd>TodoTrouble keywords=TODO,FIX,FIXME<cr>', desc = 'Todo/Fix/Fixme (Trouble)' },
},
opts = {
signs = true,
keywords = {
@ -349,7 +309,7 @@ return {
SECURITY = { icon = '󰒃 ', color = 'security' },
WARN = { icon = '', color = 'warning', alt = { 'WARNING', 'XXX' } },
PERF = { icon = '', color = 'perf', alt = { 'OPTIM', 'PERFORMANCE', 'OPTIMIZE' } },
NOTE = { icon = '', color = 'hint', alt = { 'INFO', 'IDEA' } },
NOTE = { icon = '', color = 'hint', alt = { 'INFO' } },
TEST = { icon = '', color = 'test', alt = { 'TESTING', 'PASSED', 'FAILED' } },
},
colors = {
@ -391,6 +351,23 @@ return {
},
},
},
{ -- You can easily change to a different colorscheme.
-- Change the name of the colorscheme plugin below, and then
-- change the command in the config to whatever the name of that colorscheme is.
--
-- If you want to see what colorschemes are already installed, you can use `:Telescope colorscheme`.
'folke/tokyonight.nvim',
priority = 1000, -- Make sure to load this before all the other start plugins.
init = function()
-- Load the colorscheme here.
-- Like many other themes, this one has different styles, and you could load
-- any other, such as 'tokyonight-storm', 'tokyonight-moon', or 'tokyonight-day'.
vim.cmd.colorscheme 'tokyonight-night'
-- You can configure highlights by doing something like:
vim.cmd.hi 'Comment gui=none'
end,
},
{
'folke/noice.nvim',
enabled = not vim.g.started_by_firenvim,
@ -606,101 +583,12 @@ return {
lazy = false,
dependencies = {
'nvim-tree/nvim-web-devicons',
'yavorski/lualine-macro-recording.nvim',
'NvChad/ui', -- load after nvchad ui
},
config = function()
require('lualine').setup {
options = {
theme = 'horizon',
},
sections = {
lualine_a = { 'mode' },
lualine_b = { 'branch', 'diff', 'diagnostics' },
lualine_c = { { 'macro_recording', color = { fg = '#ff9e3b' } }, 'filename', 'locatoin' },
lualine_x = { 'encoding', 'fileformat', 'filetype' },
lualine_y = { 'progress' },
lualine_z = { 'location' },
},
}
end,
},
{
'akinsho/bufferline.nvim',
dependencies = {
'nvim-tree/nvim-web-devicons',
{
'tiagovla/scope.nvim',
config = function()
require('scope').setup {}
require('telescope').load_extension 'scope'
end,
},
},
config = function()
vim.opt.termguicolors = true
require('bufferline').setup {}
end,
},
{
'MeanderingProgrammer/dashboard.nvim',
enable = true,
event = 'VimEnter',
dependencies = {
'MaximilianLloyd/ascii.nvim',
},
init = function()
vim.api.nvim_create_autocmd({ 'BufWinEnter', 'VimEnter' }, {
pattern = { 'dashboard', 'text', 'help', '*' },
callback = function()
vim.b.minitrailspace_disable = true
vim.opt_local.list = false
vim.opt_local.colorcolumn = '0'
vim.opt_local.spell = false
end,
})
end,
config = function()
-- Do not show trailing space in unmodifiable types
require('dashboard').setup {
-- Dashboard header
header = custom_headers.sharp,
-- List of directory paths, or functions that return paths
directories = {
'~/.config/nvim',
'~/Documents/code',
'~/Documents/novel',
},
-- Format to display date in
date_format = '%Y-%m-%d %H:%M:%S',
-- Sections to add at bottom, these can be string references to
-- functions in sections.lua, custom strings, or custom functions
footer = {
[[ ]],
[[  Theme ;ft ]],
[[  Git ␣gg ]],
[[  Find File ;ff ]],
[[ 󰈚 Recent Files ;fo ]],
[[  Find Word ;fw ]],
[[  Bookmarks ;fm ]],
[[ ]],
[[  Change Directory ;cd ]],
[[  Files F5 ]],
[[  Terminal F12 ]],
},
-- Gets called after directory is changed and is provided with the
-- directory path as an argument
on_load = function(path)
-- Do nothing
end,
-- Highlight groups to use for various components
highlight_groups = {
header = 'Constant',
icon = 'Type',
directory = 'Delimiter',
hotkey = 'Statement',
},
}
-- TODO: add lsp module for lualine
-- Maybe we can steal modules from the nvchad ui
require('lualine').setup()
end,
},
}

View File

@ -7,206 +7,90 @@
-- kickstart.nvim and not kitchen-sink.nvim ;)
return {
{
-- NOTE: Yes, you can install new plugins here!
'mfussenegger/nvim-dap',
-- NOTE: And you can specify dependencies as well
dependencies = {
-- Creates a beautiful debugger UI
-- Required dependency for nvim-dap-ui
'nvim-neotest/nvim-nio',
-- Installs the debug adapters for you
'williamboman/mason.nvim',
'jay-babu/mason-nvim-dap.nvim',
'theHamsta/nvim-dap-virtual-text',
},
config = function()
local dap = require 'dap'
local dapui = require 'dapui'
require('mason-nvim-dap').setup {
-- Makes a best effort to setup the various debuggers with
-- reasonable debug configurations
automatic_installation = true,
-- You can provide additional configuration to the handlers,
-- see mason-nvim-dap README for more information
handlers = {},
-- You'll need to check that you have the required things installed
-- online, please don't ask me how to install them :)
ensure_installed = {
-- Update this to ensure that you have the debuggers for the langs you want
'codelldb',
'debugpy',
},
}
-- Basic debugging keymaps, feel free to change to your liking!
vim.keymap.set('n', '<leader>dB', function() end, { desc = 'Debug: Set Breakpoint' })
-- Dap UI setup
-- For more information, see |:help nvim-dap-ui|
dapui.setup {
-- Set icons to characters that are more likely to work in every terminal.
-- Feel free to remove or use ones that you like more! :)
-- Don't feel like these are good choices.
icons = { expanded = '', collapsed = '', current_frame = '*' },
controls = {
icons = {
pause = '',
play = '',
step_into = '',
step_over = '',
step_out = '',
step_back = 'b',
run_last = '▶▶',
terminate = '',
disconnect = '',
},
},
}
dap.listeners.after.event_initialized['dapui_config'] = dapui.open
dap.listeners.before.event_terminated['dapui_config'] = dapui.close
dap.listeners.before.event_exited['dapui_config'] = dapui.close
end,
},
{
-- NOTE: Yes, you can install new plugins here!
'mfussenegger/nvim-dap',
-- NOTE: And you can specify dependencies as well
dependencies = {
-- Creates a beautiful debugger UI
'rcarriga/nvim-dap-ui',
keys = {
{
'<leader>du',
function()
require('dapui').toggle()
end,
desc = 'Open [D]ebug [U]i',
},
{
'<leader>dso',
function()
require('dap').step_over()
end,
-- Required dependency for nvim-dap-ui
'nvim-neotest/nvim-nio',
desc = 'Toggle [D]ebug [S]tep [O]ver',
},
{
'<leader>dsi',
function()
require('dap').step_into()
end,
-- Installs the debug adapters for you
'williamboman/mason.nvim',
'jay-babu/mason-nvim-dap.nvim',
desc = 'Toggle [D]ebug [S]tep [I]nto',
},
{
'<leader>dc',
function()
require('dap').continue()
end,
desc = 'Toggle [D]ebug [C]ontinue / Start',
},
{
'<leader>db',
function()
require('dap').toggle_breakpoint()
end,
desc = 'Toggle [D]ebug [B]reakpoint',
},
{
'<leader>dB',
function()
require('dap').set_breakpoint(vim.fn.input 'Breakpoint condition: ')
end,
desc = 'Toggle [D]ebug [B]reakpoint condition',
},
{
'<leader>dK',
function()
require('dap.ui.widgets').hover()
end,
desc = 'Open [D]ebug [K] hover',
},
{
'<leader>dws',
function()
local widgets = require 'dap.ui.widgets'
local my_sidebar = widgets.sidebar(widgets.scopes)
my_sidebar.open()
end,
desc = 'Open [D]ebug [W]indow [S]copes',
},
{
'<leader>dwr',
function()
require('dap').repl.toggle()
end,
desc = 'Open [D]ebug [W]indow [R]epl',
},
{
'<leader>dwf',
function()
local widgets = require 'dap.ui.widgets'
local my_sidebar = widgets.sidebar(widgets.frames)
my_sidebar.open()
end,
desc = 'Open [D]ebug [W]indow [F]rames',
},
{
'<leader>dwi',
function()
local widgets = require 'dap.ui.widgets'
local my_sidebar = widgets.sidebar(widgets.sessions)
my_sidebar.open()
end,
desc = 'Open [D]ebug [W]indow sess[I]ons',
},
{
'<leader>dwt',
function()
local widgets = require 'dap.ui.widgets'
local my_sidebar = widgets.sidebar(widgets.threads)
my_sidebar.open()
end,
desc = 'Open [D]ebug [W]indow [T]hreads',
},
{
'<leader>dwe',
function()
local widgets = require 'dap.ui.widgets'
local my_sidebar = widgets.sidebar(widgets.expression)
my_sidebar.open()
end,
desc = 'Open [D]ebug [W]indow [E]xpression',
},
},
dependencies = {
'mfussenegger/nvim-dap',
'nvim-neotest/nvim-nio',
},
config = function(_, opts)
local dap = require 'dap'
local dapui = require 'dapui'
dapui.setup(opts)
dap.listeners.after.event_initialized['dapui_config'] = function()
dapui.open {}
end
dap.listeners.before.event_terminated['dapui_config'] = function()
-- dapui.close {}
end
dap.listeners.before.event_exited['dapui_config'] = function()
-- dapui.close {}
end
end,
-- Add your own debuggers here
'leoluz/nvim-dap-go',
},
config = function()
local dap = require 'dap'
local dapui = require 'dapui'
require('mason-nvim-dap').setup {
-- Makes a best effort to setup the various debuggers with
-- reasonable debug configurations
automatic_installation = true,
-- You can provide additional configuration to the handlers,
-- see mason-nvim-dap README for more information
handlers = {},
-- You'll need to check that you have the required things installed
-- online, please don't ask me how to install them :)
ensure_installed = {
-- Update this to ensure that you have the debuggers for the langs you want
'delve',
},
}
-- Basic debugging keymaps, feel free to change to your liking!
vim.keymap.set('n', '<F5>', dap.continue, { desc = 'Debug: Start/Continue' })
vim.keymap.set('n', '<F1>', dap.step_into, { desc = 'Debug: Step Into' })
vim.keymap.set('n', '<F2>', dap.step_over, { desc = 'Debug: Step Over' })
vim.keymap.set('n', '<F3>', dap.step_out, { desc = 'Debug: Step Out' })
vim.keymap.set('n', '<leader>b', dap.toggle_breakpoint, { desc = 'Debug: Toggle Breakpoint' })
vim.keymap.set('n', '<leader>B', function()
dap.set_breakpoint(vim.fn.input 'Breakpoint condition: ')
end, { desc = 'Debug: Set Breakpoint' })
-- Dap UI setup
-- For more information, see |:help nvim-dap-ui|
dapui.setup {
-- Set icons to characters that are more likely to work in every terminal.
-- Feel free to remove or use ones that you like more! :)
-- Don't feel like these are good choices.
icons = { expanded = '', collapsed = '', current_frame = '*' },
controls = {
icons = {
pause = '',
play = '',
step_into = '',
step_over = '',
step_out = '',
step_back = 'b',
run_last = '▶▶',
terminate = '',
disconnect = '',
},
},
}
-- Toggle to see last session result. Without this, you can't see session output in case of unhandled exception.
vim.keymap.set('n', '<F7>', dapui.toggle, { desc = 'Debug: See last session result.' })
dap.listeners.after.event_initialized['dapui_config'] = dapui.open
dap.listeners.before.event_terminated['dapui_config'] = dapui.close
dap.listeners.before.event_exited['dapui_config'] = dapui.close
-- Install golang specific config
require('dap-go').setup {
delve = {
-- On Windows delve must be run attached or it crashes.
-- See https://github.com/leoluz/nvim-dap-go/blob/main/README.md#configuring
detached = vim.fn.has 'win32' == 0,
},
}
end,
}

View File

@ -4,24 +4,6 @@ return {
-- Enable `lukas-reineke/indent-blankline.nvim`
-- See `:help ibl`
main = 'ibl',
opts = {
indentLine_enabled = 1,
filetype_exclude = {
'help',
'terminal',
'lazy',
'lspinfo',
'TelescopePrompt',
'TelescopeResults',
'mason',
'dashboard',
'',
},
buftype_exclude = { 'terminal' },
show_trailing_blankline_indent = false,
show_first_indent_level = false,
show_current_context = true,
show_current_context_start = true,
},
opts = {},
},
}

View File

@ -1,7 +0,0 @@
-- Use `git update-index --assume-unchanged <file>` to ignore changes in this file
--
-- Themery block
-- This block will be replaced by Themery.
vim.cmd("colorscheme tokyonight-storm")
vim.g.theme_id = 10
-- end themery block

View File

@ -367,70 +367,3 @@ Glänzer
postgres
sqlite
REPL
nested19
GMs
Yusuf
nenoECC
Nonadekagonic
#ediverse
fediverse
nested19's
Navier
Poincaré
Swinnerton
lemmy
selfhosting
ELO
FIDE
BDD
Pentesting
Typst
Multivariable
envvar
Featurefile
maschinen
menschenlesbar
thiserror
WSL
verbindungen/!
acl
Metadatum
Serve/!
Featurefiles
#orallem/!
#orallem/!
newglossaryentry
CVE
QUIC
#orallem/!
vorallem/!
#roßteile/!
großteile/!
großteile
Konfuguration/!
typ
Wooly
addr
adress
tokio
address/!
i32
C3
TOTP
Panta/!
Panta
kauma
α
XEX
unintuitively
sea128
u8
Base64
ffield
α's
Vec
u128
number1
number2
i64

Binary file not shown.