diff options
author | joe <rbo@gmx.us> | 2025-08-25 18:13:21 +0200 |
---|---|---|
committer | joe <rbo@gmx.us> | 2025-08-25 18:13:21 +0200 |
commit | 41682275d321b6b79ee4c07f25e819875519466e (patch) | |
tree | 301ee0175c17d2394a950ef7d11bffd0d47597ac /.config/nvim/lua/config | |
parent | up (diff) | |
download | dotfiles-bsd-41682275d321b6b79ee4c07f25e819875519466e.tar.gz dotfiles-bsd-41682275d321b6b79ee4c07f25e819875519466e.tar.bz2 dotfiles-bsd-41682275d321b6b79ee4c07f25e819875519466e.tar.xz dotfiles-bsd-41682275d321b6b79ee4c07f25e819875519466e.tar.zst dotfiles-bsd-41682275d321b6b79ee4c07f25e819875519466e.zip |
cool
Diffstat (limited to '.config/nvim/lua/config')
-rw-r--r-- | .config/nvim/lua/config/bindings.lua | 69 | ||||
-rw-r--r-- | .config/nvim/lua/config/hooks.lua | 8 | ||||
-rw-r--r-- | .config/nvim/lua/config/langs.lua | 11 | ||||
-rw-r--r-- | .config/nvim/lua/config/lazy.lua | 117 | ||||
-rw-r--r-- | .config/nvim/lua/config/settings.lua | 93 |
5 files changed, 298 insertions, 0 deletions
diff --git a/.config/nvim/lua/config/bindings.lua b/.config/nvim/lua/config/bindings.lua new file mode 100644 index 0000000..2c5f869 --- /dev/null +++ b/.config/nvim/lua/config/bindings.lua @@ -0,0 +1,69 @@ +vim.keymap.set('n', '<M-x>', ':', { noremap = true, silent = false }) +vim.keymap.set('n', '<M-k>', ':bprevious<CR>', { noremap = true, silent = true }) +-- vim.keymap.set('n', '<C-u>', '<C-u>zz', { noremap = true, silent = true }) +-- vim.keymap.set('n', '<C-d>', '<C-d>zz', { noremap = true, silent = true }) +-- vim.keymap.set('n', '<C-b>', '<C-b>zz', { noremap = true, silent = true }) +-- vim.keymap.set('n', '<C-f>', '<C-f>zz', { noremap = true, silent = true }) +vim.keymap.set('n', '<M-j>', ':bnext<CR>', { noremap = true, silent = true }) +vim.keymap.set('n', '<C-h>', '<C-w>h', { noremap = true, silent = false }) +vim.keymap.set('n', '<C-j>', '<C-w>j', { noremap = true, silent = false }) +vim.keymap.set('n', '<C-k>', '<C-w>k', { noremap = true, silent = false }) +vim.keymap.set('n', '<C-l>', '<C-w>l', { noremap = true, silent = false }) +vim.keymap.set('n', '<C-o>', '<C-w>o', { noremap = true, silent = false }) +vim.keymap.set('n', '<C-q>', '<C-w>q', { noremap = true, silent = false }) +vim.keymap.set('n', '*', '*zz', { noremap = true, silent = false }) +vim.keymap.set('i', '<C-j>', 'pumvisible() ? "<C-n>" : "<C-j>"', { expr = true }) +vim.keymap.set('i', '<C-k>', 'pumvisible() ? "<C-p>" : "<C-k>"', { expr = true }) +vim.keymap.set('i', '<CR>', 'pumvisible() ? asyncomplete#close_popup() : "\\<cr>"', { expr = true }) +vim.keymap.set('n', '<F2>', vim.cmd.NvimTreeToggle, { noremap = true, silent = true }) +vim.keymap.set('n', '<F4>', ':!make<space>-j9<space>', { noremap = true, silent = false }) +vim.keymap.set('n', '<F3>', ':Trouble diagnostics toggle focus=true<CR>', { noremap = true, silent = true }) +vim.keymap.set('n', '<F5>', vim.cmd.UndotreeToggle, { noremap = true, silent = true }) +vim.g.floaterm_keymap_toggle = '<F1>' +vim.g.floaterm_keymap_prev = '<F11>' +vim.g.floaterm_keymap_next = '<F12>' +vim.keymap.set('v', 'J', ":m '>+1<CR>gv=gv") +vim.keymap.set('v', 'K', ":m '<-2<CR>gv=gv") +vim.keymap.set('x', '<leader>p', "\"_dP") +vim.keymap.set('n', 'Q', '<nop>') +vim.keymap.set('n', '<leader><space>', vim.cmd.nohlsearch, { noremap = true, silent = true }) + +local ts = require('telescope.builtin') +require('telescope').load_extension('harpoon') +local harpoon = require('harpoon') +harpoon:setup() + +vim.keymap.set('n', '<M-1>', function() harpoon:list():select(1) end) +vim.keymap.set('n', '<M-2>', function() harpoon:list():select(2) end) +vim.keymap.set('n', '<M-3>', function() harpoon:list():select(3) end) +vim.keymap.set('n', '<M-4>', function() harpoon:list():select(4) end) + +-- normal +vim.keymap.set('n', '<leader>d', ':bn|:bd#<CR>', { noremap = true, silent = true }) +vim.keymap.set('n', '<leader>D', '"-ddk:put = strftime(\' * %a %b %d %T %Y\')<CR>', { noremap = true, silent = true }) +vim.keymap.set('n', '<leader>k', ':w<CR>:bp<CR>:bd #<CR>', { noremap = true, silent = true }) +vim.keymap.set('n', '<leader>u', vim.cmd.UndotreeToggle, { noremap = true, silent = true }) +vim.keymap.set('n', '<leader>u', ':w<CR>', { noremap = true, silent = true }) +-- harpoon +vim.keymap.set('n', '<leader>aa', function() harpoon:list():add() end, { noremap = true, silent = true }) +vim.keymap.set('n', '<leader>ae', function() harpoon.ui:toggle_quick_menu(harpoon:list()) end, { noremap = true, silent = true }) +vim.keymap.set('n', '<leader>af', ':Telescope harpoon marks<CR>', { noremap = true, silent = true }) +-- trouble +vim.keymap.set('n', '<leader>xx', ':Trouble diagnostics toggle focus=true<CR>', { noremap = true, silent = true }) +vim.keymap.set('n', '<leader>xw', ':Trouble diagnostics toggle focus=true<CR>', { noremap = true, silent = true }) +vim.keymap.set('n', '<leader>xd', ':Trouble diagnostics toggle focus=true filter.buf=0<CR>', { noremap = true, silent = true }) +vim.keymap.set('n', '<leader>xl', ':Trouble loclist toggle focus=true<CR>', { noremap = true, silent = true }) +vim.keymap.set('n', '<leader>xq', ':Trouble qflist toggle focus=true<CR>', { noremap = true, silent = true }) +vim.keymap.set('n', '<leader>xs', ':Trouble lsp toggle focus=true win.position=right<CR>', { noremap = true, silent = true }) +-- telescope +vim.keymap.set('n', '<leader>fb', ts.buffers, { noremap = true, silent = true }) +vim.keymap.set('n', '<leader>fd', ts.diagnostics, { noremap = true, silent = true }) +vim.keymap.set('n', '<leader>fe', ':Telescope harpoon marks<CR>', { noremap = true, silent = true }) +vim.keymap.set('n', '<leader>ff', ts.find_files, { noremap = true, silent = true }) +vim.keymap.set('n', '<leader>fs', ts.live_grep, { noremap = true, silent = true }) +vim.keymap.set('n', '<leader>fg', function() ts.grep_string({ search = vim.fn.input("Grep > ") }) end, { noremap = true, silent = true }) +vim.keymap.set('n', '<leader>ft', ':TodoTelescope keywords=TODO,HACK,WARN,PERF,NOTE,TEST,FIX<CR>', { noremap = true, silent = true }) +-- neovim +vim.keymap.set('n', '<leader>vu', vim.cmd.Lazy, { noremap = true, silent = true }) +vim.keymap.set('n', '<leader>vm', vim.cmd.Mason, { noremap = true, silent = true }) +vim.keymap.set('n', '<leader>vv', vim.cmd.Ex, { noremap = true, silent = true }) diff --git a/.config/nvim/lua/config/hooks.lua b/.config/nvim/lua/config/hooks.lua new file mode 100644 index 0000000..eaf0687 --- /dev/null +++ b/.config/nvim/lua/config/hooks.lua @@ -0,0 +1,8 @@ +vim.api.nvim_create_autocmd({"BufWritePre"}, { + pattern = "*", + callback = function(ev) + save_cursor = vim.fn.getpos(".") + vim.cmd([[%s/\s\+$//e]]) + vim.fn.setpos(".", save_cursor) + end, +}) diff --git a/.config/nvim/lua/config/langs.lua b/.config/nvim/lua/config/langs.lua new file mode 100644 index 0000000..64fe7ea --- /dev/null +++ b/.config/nvim/lua/config/langs.lua @@ -0,0 +1,11 @@ +vim.g.asmsyntax = 'asm' +vim.g.perl_include_pod = 1 +vim.g.perl_compiler_force_warnings = 1 + +-- vim.api.nvim_create_autocmd('BufNewFile,BufRead', { pattern = '*.c,*.h', command = 'set filetype=c'}) +-- vim.api.nvim_create_autocmd('BufNewFile,BufRead', { pattern = '*.cc,*.hh,*.cpp,*.hpp,*.cxx,*.hxx', command = 'set filetype=cpp'}) +-- vim.api.nvim_create_autocmd('BufNewFile,BufRead', { pattern = '*.ms,*.1,*.2,*.3,*.4,*.5,*.6,*.7,*.8,*.9', command = 'set filetype=groff'}) +-- vim.api.nvim_create_autocmd('BufNewFile,BufRead', { pattern = '*.conf', command = 'set filetype=conf'}) +vim.api.nvim_create_autocmd('BufWritePost', { pattern = '*.ms', command = "let pdf=fnamemodify(bufname('%'), ':r') . \".pdf\" | silent! execute \"!nroff % -ms -Tpdf -Kutf8 > \" . pdf"}) +-- vim.api.nvim_create_autocmd('FileType fish', { command = 'compiler fish'}) +-- vim.api.nvim_create_autocmd('FileType perl', { command = 'setlocal com-=:# kp=perldoc\\ -f | compiler perl'}) diff --git a/.config/nvim/lua/config/lazy.lua b/.config/nvim/lua/config/lazy.lua new file mode 100644 index 0000000..64d930a --- /dev/null +++ b/.config/nvim/lua/config/lazy.lua @@ -0,0 +1,117 @@ +local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" +if not (vim.uv or vim.loop).fs_stat(lazypath) then + local lazyrepo = "https://github.com/folke/lazy.nvim.git" + local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) + if vim.v.shell_error ~= 0 then + vim.api.nvim_echo({ + { "Failed to clone lazy.nvim:\n", "ErrorMsg" }, + { out, "WarningMsg" }, + { "\nPress any key to exit..." }, + }, true, {}) + vim.fn.getchar() + os.exit(1) + end +end + +vim.opt.rtp:prepend(lazypath) + +-- Make sure to setup `mapleader` and `maplocalleader` before +-- loading lazy.nvim so that mappings are correct. +-- This is also a good place to setup other settings (vim.opt) +vim.g.mapleader = "\\" +vim.g.maplocalleader = "\\" + +require('lazy').setup({ + spec = { + { + 'windwp/nvim-autopairs', + config = function() require('nvim-autopairs').setup {} end + }, + { + 'lewis6991/gitsigns.nvim', + config = function() require('gitsigns').setup {} end + }, + { + 'numToStr/Comment.nvim', + requires = { {'JoosepAlviste/nvim-ts-context-commentstring'} }, + config = function() + require('Comment').setup() + end + }, + { 'mbbill/undotree' }, + { 'chrisbra/csv.vim' }, + { + 'ThePrimeagen/harpoon', + branch = 'harpoon2', + requires = { {'nvim-lua/plenary.nvim'} } + }, + { + 'lukas-reineke/indent-blankline.nvim', + config = function() + local highlight = { + "Whitespace", + } + require('ibl').setup { + debounce = 100, + indent = { highlight = highlight, char = '┊', }, + scope = { show_start = false, show_end = false }, + } + end, + }, + { + 'folke/todo-comments.nvim', + requires = { {'nvim-lua/plenary.nvim'} }, + config = function() + require('todo-comments.config').setup{ + highlight = { + multiline = false, + }, + } + require('todo-comments') + end + }, + { + 'lcheylus/overlength.nvim', + config = function() + require('overlength').setup{ + enabled = true, + colors = { + ctermfg = nil, + ctermbg = 'darkgrey', + fg = nil, + bg = '#8B0000', + }, + textwidth_mode = 0, + default_overlength = 80, + grace_length = 1, + highlight_to_eol = true, + disable_ft = { 'qf', 'help', 'man', 'checkhealth', 'lazy', 'packer', 'NvimTree', 'Telescope', 'WhichKey', 'text', 'csv', 'lua', '' } + } + end + }, + { + 'kylechui/nvim-surround', + version = "^3.0.0", + event = "VeryLazy", + config = function() + require('nvim-surround').setup() + end + }, + { + 'ggandor/leap.nvim', + requires = {'tpope/vim-repeat'}, + config = function() + require('leap').setup({}) + vim.keymap.set({'n', 'x', 'o'}, '<leader>s', '<Plug>(leap-forward-to)') + vim.keymap.set({'n', 'x', 'o'}, '<leader>S', '<Plug>(leap-backward-to)') + vim.keymap.set({'n', 'x', 'o'}, '<C-s>', '<Plug>(leap-forward-till)') + vim.keymap.set({'n', 'x', 'o'}, '<C-S-s>', '<Plug>(leap-backward-till)') + end + }, + { import = "plugins" }, + }, +}) + +-- use 'preservim/tagbar' +-- use 'sainnhe/gruvbox-material' +-- use 'savq/melange-nvim' diff --git a/.config/nvim/lua/config/settings.lua b/.config/nvim/lua/config/settings.lua new file mode 100644 index 0000000..e578062 --- /dev/null +++ b/.config/nvim/lua/config/settings.lua @@ -0,0 +1,93 @@ +vim.opt.autochdir = false +vim.opt.cindent = true +vim.cmd [[ +set cinoptions=>s,e0,n0,f0,{0,}0,^0,L-1,:s,=s,l1,b0,gs,h0,N0,E0,p0,t0,i0,+s +set cinoptions+=c1,C0,/0,(s,us,U0,w1,Ws,k0,m0,M1,)20,*70,#0 +set clipboard^=unnamedplus +set path+=** +set shortmess+=c +]] +vim.opt.completeopt = 'menuone,noinsert,noselect,preview' +vim.opt.cursorline = true +vim.opt.encoding = 'utf-8' +-- vim.opt.go = 'a' +vim.opt.hidden = true +vim.opt.makeprg = 'make' +vim.opt.mouse = 'a' +vim.opt.compatible = false +vim.opt.expandtab = false +vim.opt.hlsearch = true +vim.opt.incsearch = true +vim.opt.number = true +vim.opt.shiftwidth = 4 +vim.opt.softtabstop = 4 +vim.opt.ruler = true +vim.opt.tabstop = 4 +vim.opt.textwidth = 0 +vim.opt.timeoutlen = 1500 +vim.opt.undodir = '/tmp/nvim_undo' +vim.opt.undofile = true +vim.opt.wildmode = 'longest,list,full' +vim.opt.directory = '/tmp/nvim_swap' +vim.opt.colorcolumn = "80" +vim.opt.scrolloff = 5 +vim.opt.signcolumn = "yes" +vim.o.ignorecase = true +vim.o.smartcase = true +vim.opt.fillchars = {eob = " "} +vim.opt.wrap = true +vim.opt.termguicolors = true +vim.opt.bg = 'dark' + +vim.g.gruvbox_material_background = 'medium' +vim.g.gruvbox_material_foreground = 'original' +vim.g.gruvbox_material_better_performance = 1 + +vim.cmd [[ +syntax on + +" let &t_8f = "\<Esc>[38;2;%lu;%lu;%lum" +" let &t_8b = "\<Esc>[48;2;%lu;%lu;%lum" +" let g:deus_termcolors=256 +" colorscheme deus + +" colorscheme gruvbox-material + +" colorscheme gruvbox + +" colorscheme melange + +" let g:onedark_config = { +" \ 'style': 'warmer', +" \} +" colorscheme onedark + + +let &colorcolumn = join(range(80, 400), ',') +filetype plugin indent on +highlight Normal ctermbg=none guibg=none +highlight NonText ctermbg=none guibg=none +highlight LineNr ctermbg=none guibg=none +highlight EndOfBuffer ctermbg=none guibg=none +highlight FloatermBorder guibg=none guifg='#ebdbb2' +highlight SignColumn ctermbg=none guibg=none +" highlight DiagnosticError guifg='#f25942' guibg=none ctermbg=none +" highlight DiagnosticVirtualTextError guifg='#f25942' guibg=none ctermbg=none +" highlight TroubleError guifg='#f25942' guibg=none ctermbg=none +" highlight TroubleSignError guifg='#f25942' guibg=none ctermbg=none +" highlight DiagnosticWarn guifg='#e9b143' guibg=none ctermbg=none +" highlight DiagnosticVirtualTextWarn guifg='#e9b143' guibg=none ctermbg=none +" highlight TroubleWarn guifg='#e9b143' guibg=none ctermbg=none +" highlight TroubleSignWarn guifg='#e9b143' guibg=none ctermbg=none +autocmd FileType * setlocal formatoptions-=c formatoptions-=r formatoptions-=o +]] +vim.g.mapleader = '\\' +vim.g.maplocalleader = '\\' +local highlight_group = vim.api.nvim_create_augroup('YankHighlight', { clear = true }) +vim.api.nvim_create_autocmd('TextYankPost', { + callback = function() + vim.highlight.on_yank() + end, + group = highlight_group, + pattern = '*', +}) |