From 41682275d321b6b79ee4c07f25e819875519466e Mon Sep 17 00:00:00 2001 From: joe Date: Mon, 25 Aug 2025 18:13:21 +0200 Subject: cool --- .config/nvim/lua/config/bindings.lua | 69 +++++++++++++++++++++ .config/nvim/lua/config/hooks.lua | 8 +++ .config/nvim/lua/config/langs.lua | 11 ++++ .config/nvim/lua/config/lazy.lua | 117 +++++++++++++++++++++++++++++++++++ .config/nvim/lua/config/settings.lua | 93 ++++++++++++++++++++++++++++ 5 files changed, 298 insertions(+) create mode 100644 .config/nvim/lua/config/bindings.lua create mode 100644 .config/nvim/lua/config/hooks.lua create mode 100644 .config/nvim/lua/config/langs.lua create mode 100644 .config/nvim/lua/config/lazy.lua create mode 100644 .config/nvim/lua/config/settings.lua (limited to '.config/nvim/lua/config') 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', '', ':', { noremap = true, silent = false }) +vim.keymap.set('n', '', ':bprevious', { noremap = true, silent = true }) +-- vim.keymap.set('n', '', 'zz', { noremap = true, silent = true }) +-- vim.keymap.set('n', '', 'zz', { noremap = true, silent = true }) +-- vim.keymap.set('n', '', 'zz', { noremap = true, silent = true }) +-- vim.keymap.set('n', '', 'zz', { noremap = true, silent = true }) +vim.keymap.set('n', '', ':bnext', { noremap = true, silent = true }) +vim.keymap.set('n', '', 'h', { noremap = true, silent = false }) +vim.keymap.set('n', '', 'j', { noremap = true, silent = false }) +vim.keymap.set('n', '', 'k', { noremap = true, silent = false }) +vim.keymap.set('n', '', 'l', { noremap = true, silent = false }) +vim.keymap.set('n', '', 'o', { noremap = true, silent = false }) +vim.keymap.set('n', '', 'q', { noremap = true, silent = false }) +vim.keymap.set('n', '*', '*zz', { noremap = true, silent = false }) +vim.keymap.set('i', '', 'pumvisible() ? "" : ""', { expr = true }) +vim.keymap.set('i', '', 'pumvisible() ? "" : ""', { expr = true }) +vim.keymap.set('i', '', 'pumvisible() ? asyncomplete#close_popup() : "\\"', { expr = true }) +vim.keymap.set('n', '', vim.cmd.NvimTreeToggle, { noremap = true, silent = true }) +vim.keymap.set('n', '', ':!make-j9', { noremap = true, silent = false }) +vim.keymap.set('n', '', ':Trouble diagnostics toggle focus=true', { noremap = true, silent = true }) +vim.keymap.set('n', '', vim.cmd.UndotreeToggle, { noremap = true, silent = true }) +vim.g.floaterm_keymap_toggle = '' +vim.g.floaterm_keymap_prev = '' +vim.g.floaterm_keymap_next = '' +vim.keymap.set('v', 'J', ":m '>+1gv=gv") +vim.keymap.set('v', 'K', ":m '<-2gv=gv") +vim.keymap.set('x', 'p', "\"_dP") +vim.keymap.set('n', 'Q', '') +vim.keymap.set('n', '', 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', '', function() harpoon:list():select(1) end) +vim.keymap.set('n', '', function() harpoon:list():select(2) end) +vim.keymap.set('n', '', function() harpoon:list():select(3) end) +vim.keymap.set('n', '', function() harpoon:list():select(4) end) + +-- normal +vim.keymap.set('n', 'd', ':bn|:bd#', { noremap = true, silent = true }) +vim.keymap.set('n', 'D', '"-ddk:put = strftime(\' * %a %b %d %T %Y\')', { noremap = true, silent = true }) +vim.keymap.set('n', 'k', ':w:bp:bd #', { noremap = true, silent = true }) +vim.keymap.set('n', 'u', vim.cmd.UndotreeToggle, { noremap = true, silent = true }) +vim.keymap.set('n', 'u', ':w', { noremap = true, silent = true }) +-- harpoon +vim.keymap.set('n', 'aa', function() harpoon:list():add() end, { noremap = true, silent = true }) +vim.keymap.set('n', 'ae', function() harpoon.ui:toggle_quick_menu(harpoon:list()) end, { noremap = true, silent = true }) +vim.keymap.set('n', 'af', ':Telescope harpoon marks', { noremap = true, silent = true }) +-- trouble +vim.keymap.set('n', 'xx', ':Trouble diagnostics toggle focus=true', { noremap = true, silent = true }) +vim.keymap.set('n', 'xw', ':Trouble diagnostics toggle focus=true', { noremap = true, silent = true }) +vim.keymap.set('n', 'xd', ':Trouble diagnostics toggle focus=true filter.buf=0', { noremap = true, silent = true }) +vim.keymap.set('n', 'xl', ':Trouble loclist toggle focus=true', { noremap = true, silent = true }) +vim.keymap.set('n', 'xq', ':Trouble qflist toggle focus=true', { noremap = true, silent = true }) +vim.keymap.set('n', 'xs', ':Trouble lsp toggle focus=true win.position=right', { noremap = true, silent = true }) +-- telescope +vim.keymap.set('n', 'fb', ts.buffers, { noremap = true, silent = true }) +vim.keymap.set('n', 'fd', ts.diagnostics, { noremap = true, silent = true }) +vim.keymap.set('n', 'fe', ':Telescope harpoon marks', { noremap = true, silent = true }) +vim.keymap.set('n', 'ff', ts.find_files, { noremap = true, silent = true }) +vim.keymap.set('n', 'fs', ts.live_grep, { noremap = true, silent = true }) +vim.keymap.set('n', 'fg', function() ts.grep_string({ search = vim.fn.input("Grep > ") }) end, { noremap = true, silent = true }) +vim.keymap.set('n', 'ft', ':TodoTelescope keywords=TODO,HACK,WARN,PERF,NOTE,TEST,FIX', { noremap = true, silent = true }) +-- neovim +vim.keymap.set('n', 'vu', vim.cmd.Lazy, { noremap = true, silent = true }) +vim.keymap.set('n', 'vm', vim.cmd.Mason, { noremap = true, silent = true }) +vim.keymap.set('n', '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'}, 's', '(leap-forward-to)') + vim.keymap.set({'n', 'x', 'o'}, 'S', '(leap-backward-to)') + vim.keymap.set({'n', 'x', 'o'}, '', '(leap-forward-till)') + vim.keymap.set({'n', 'x', 'o'}, '', '(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 = "\[38;2;%lu;%lu;%lum" +" let &t_8b = "\[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 = '*', +}) -- cgit v1.2.3