diff --git a/files/config/nvim/.vimrc b/files/config/nvim/.vimrc deleted file mode 100644 index 93a7db0..0000000 --- a/files/config/nvim/.vimrc +++ /dev/null @@ -1,64 +0,0 @@ -" Load plugins -filetype plugin indent on - -" Search -set ignorecase -set smartcase - -" Tab completion -set wildmode=list:longest,full -set wildignore=*.swp,*.o,*.so,*.exe,*.dll - -" Tab settings -set ts=2 -set sw=2 -set expandtab - -" Hud -set termguicolors -syntax on -"set colorcolumn=80 -set cursorline -set fillchars=vert:\│ -set hidden -set list -set listchars=tab:»·,trail:· -set nofoldenable -set nowrap -set number -set relativenumber -set ruler -set scrolloff=3 - -" Tags -set tags=./tags;/,tags;/ - -" Backup Directories -set backupdir=~/.config/nvim/backups,. -set directory=~/.config/nvim/swaps,. -if exists('&undodir') - set undodir=~/.config/nvim/undo,. -endif - -let mapleader=',' -let maplocalleader=',' - -" Jump key -nnoremap ` ' -nnoremap ' ` - -" Change pane -nnoremap <C-h> <C-w>h -nnoremap <C-j> <C-w>j -nnoremap <C-k> <C-w>k -nnoremap <C-l> <C-w>l - -" Turn off search highlight -nnoremap <localleader>/ :nohlsearch<CR> - -" Trim trailing whitespace -nnoremap <localleader>tw m`:%s/\s\+$//e<CR>:nohlsearch<CR>`` - -" Fancy macros -nnoremap Q @q -vnoremap Q :norm @q<cr> diff --git a/files/config/nvim/init.lua b/files/config/nvim/init.lua deleted file mode 100644 index 9aa1759..0000000 --- a/files/config/nvim/init.lua +++ /dev/null @@ -1,64 +0,0 @@ --- Load .vimrc -vim.cmd([[runtime .vimrc]]) - -vim.g.root_spec = { { ".git", ".jj", "lua" }, "lsp", "cwd" } - -vim.o.autochdir = true -vim.o.fillchars = "stl: ,stlnc: ,eob:░" -vim.o.list = false -vim.o.scrolloff = 7 -vim.o.splitkeep = "screen" -vim.o.updatetime = 50 -vim.o.timeout = true -vim.o.timeoutlen = 10 - --- Neovim specific settings -vim.o.icm = "split" --- vim.o.cia = 'kind,abbr,menu' wait for nightly to drop -vim.o.foldtext = "v:lua.vim.treesitter.foldtext()" - -vim.opt.foldmethod = "expr" -vim.opt.foldexpr = "nvim_treesitter#foldexpr()" - -vim.o.showmode = false - --- Use rg -vim.o.grepprg = [[rg --glob "!.git" --no-heading --vimgrep --follow $*]] -vim.opt.grepformat = vim.opt.grepformat ^ { "%f:%l:%c:%m" } - -vim.fn.sign_define( - "DiagnosticSignError", - { text = "", hl = "DiagnosticSignError", texthl = "DiagnosticSignError", culhl = "DiagnosticSignErrorLine" } -) -vim.fn.sign_define( - "DiagnosticSignWarn", - { text = "", hl = "DiagnosticSignWarn", texthl = "DiagnosticSignWarn", culhl = "DiagnosticSignWarnLine" } -) -vim.fn.sign_define( - "DiagnosticSignInfo", - { text = "", hl = "DiagnosticSignInfo", texthl = "DiagnosticSignInfo", culhl = "DiagnosticSignInfoLine" } -) -vim.fn.sign_define( - "DiagnosticSignHint", - { text = "", hl = "DiagnosticSignHint", texthl = "DiagnosticSignHint", culhl = "DiagnosticSignHintLine" } -) - --- Make <Tab> work for snippets -vim.keymap.set({ "i", "s" }, "<Tab>", function() - if vim.snippet.active({ direction = 1 }) then - return "<cmd>lua vim.snippet.jump(1)<cr>" - else - return "<Tab>" - end -end, { expr = true }) - --- Covenience macros --- fix ellipsis: "..." -> "…" -vim.keymap.set( - "n", - "<leader>fe", - "mc:%s,\\.\\.\\.,…,g<CR>:nohlsearch<CR>`c", - { noremap = true, silent = true, desc = "... -> …" } -) --- fix spelling: just an easier finger roll on 40% keyboard -vim.keymap.set("n", "<leader>fs", "1z=", { noremap = true, silent = true, desc = "Fix spelling under cursor" }) diff --git a/flake.lock b/flake.lock index 865246b..1d1dad0 100644 --- a/flake.lock +++ b/flake.lock @@ -29,11 +29,11 @@ "zig": "zig" }, "locked": { - "lastModified": 1730568249, - "narHash": "sha256-+yyQ2ORHK61Q69mu9/fILlHmrPd3Es8zUTnqlwiMy3o=", + "lastModified": 1730688195, + "narHash": "sha256-wXK1/gOImxv0vHpUc9qgno1AY8c64j17/UFIiT7zH1g=", "ref": "refs/heads/main", - "rev": "d47df211b03894427592851b0be3b528ff8221ff", - "revCount": 7864, + "rev": "737dc0896dc266a98c889e122b5c900636e589c9", + "revCount": 7874, "type": "git", "url": "ssh://git@github.com/ghostty-org/ghostty" }, @@ -64,11 +64,11 @@ ] }, "locked": { - "lastModified": 1730490306, - "narHash": "sha256-AvCVDswOUM9D368HxYD25RsSKp+5o0L0/JHADjLoD38=", + "lastModified": 1730633670, + "narHash": "sha256-ZFJqIXpvVKvzOVFKWNRDyIyAo+GYdmEPaYi1bZB6uf0=", "owner": "nix-community", "repo": "home-manager", - "rev": "1743615b61c7285976f85b303a36cdf88a556503", + "rev": "8f6ca7855d409aeebe2a582c6fd6b6a8d0bf5661", "type": "github" }, "original": { @@ -79,11 +79,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1730200266, - "narHash": "sha256-l253w0XMT8nWHGXuXqyiIC/bMvh1VRszGXgdpQlfhvU=", + "lastModified": 1730531603, + "narHash": "sha256-Dqg6si5CqIzm87sp57j5nTaeBbWhHFaVyG7V6L8k3lY=", "owner": "nixos", "repo": "nixpkgs", - "rev": "807e9154dcb16384b1b765ebe9cd2bba2ac287fd", + "rev": "7ffd9ae656aec493492b44d0ddfb28e79a1ea25d", "type": "github" }, "original": { diff --git a/home/common/nvim/default.nix b/home/common/nvim/default.nix index 91d22e5..ac0578f 100644 --- a/home/common/nvim/default.nix +++ b/home/common/nvim/default.nix @@ -1,11 +1,5 @@ { lib, pkgs, ... }: { - home.file.".config/nvim/.vimrc".source = ../../../files/config/nvim/.vimrc; - - home.activation.mkdirNvimFolders = lib.hm.dag.entryAfter [ "writeBoundary" ] '' - mkdir -p $HOME/.config/nvim/backups $HOME/.config/nvim/swaps $HOME/.config/nvim/undo - ''; - programs.neovim = { enable = true; defaultEditor = true; @@ -15,7 +9,7 @@ withPython3 = false; withRuby = false; - extraLuaConfig = lib.fileContents ../../../files/config/nvim/init.lua; + extraLuaConfig = lib.fileContents ./init.lua; extraPackages = with pkgs; [ black go @@ -121,5 +115,4 @@ } ]; }; - } diff --git a/home/common/nvim/init.lua b/home/common/nvim/init.lua new file mode 100644 index 0000000..ba179d8 --- /dev/null +++ b/home/common/nvim/init.lua @@ -0,0 +1,93 @@ +-- vim.g.mapleader = "<space>" +vim.g.maplocalleader = ',' + +-- UI + +vim.opt.cursorline = true +vim.opt.laststatus = 0 +vim.opt.number = true +vim.opt.relativenumber = true +vim.opt.ruler = true +vim.opt.rulerformat = "" -- FIXME: fancify! +vim.opt.rulerformat = "%36(%5l,%-6(%c%V%) %t%)%*" +vim.opt.syntax = "on" +vim.opt.termguicolors = true + +-- Search +vim.opt.ignorecase = true +vim.opt.smartcase = true + +-- Tab completion +-- vim.opt.wildmode="list:longest,full" +vim.opt.wildignore="*.swp,*.o,*.so,*.exe,*.dll" + +-- Whitespaces +vim.opt.breakindent = true +vim.opt.copyindent = true +vim.opt.expandtab = true +vim.opt.softtabstop = 2 +vim.opt.shiftround = true +vim.opt.shiftwidth = 2 +vim.opt.smartindent = true +vim.opt.tabstop = 2 +vim.opt.wrap = false +vim.opt.list = true +vim.opt.listchars="tab:»·,trail:·" + +-- Folds +vim.opt.foldenable = false +vim.opt.foldtext = "v:lua.vim.treesitter.foldtext()" +vim.opt.foldmethod = "expr" +vim.opt.foldexpr = "nvim_treesitter#foldexpr()" + +-- + +vim.o.autochdir = true +vim.o.fillchars = "stl: ,stlnc: ,eob:░,vert:│" +vim.o.list = false +vim.o.scrolloff = 7 +vim.o.splitkeep = "screen" +vim.o.updatetime = 50 +vim.o.timeout = true +vim.o.timeoutlen = 10 +vim.o.icm = "split" +-- vim.o.cia = 'kind,abbr,menu' wait for nightly to drop + +vim.o.showmode = false + + +-- Use rg +vim.o.grepprg = [[rg --glob "!.jj" --glob "!.git" --no-heading --vimgrep --follow $*]] +vim.opt.grepformat = vim.opt.grepformat ^ { "%f:%l:%c:%m" } + +vim.fn.sign_define( + "DiagnosticSignError", + { text = "", hl = "DiagnosticSignError", texthl = "DiagnosticSignError", culhl = "DiagnosticSignErrorLine" } +) +vim.fn.sign_define( + "DiagnosticSignWarn", + { text = "", hl = "DiagnosticSignWarn", texthl = "DiagnosticSignWarn", culhl = "DiagnosticSignWarnLine" } +) +vim.fn.sign_define( + "DiagnosticSignInfo", + { text = "", hl = "DiagnosticSignInfo", texthl = "DiagnosticSignInfo", culhl = "DiagnosticSignInfoLine" } +) +vim.fn.sign_define( + "DiagnosticSignHint", + { text = "", hl = "DiagnosticSignHint", texthl = "DiagnosticSignHint", culhl = "DiagnosticSignHintLine" } +) + +-- Make <Tab> work for snippets +vim.keymap.set({ "i", "s" }, "<Tab>", function() + if vim.snippet.active({ direction = 1 }) then + return "<cmd>lua vim.snippet.jump(1)<cr>" + else + return "<Tab>" + end +end, { expr = true }) + +vim.keymap.set({ "n" }, "<c-/>", "gcc", { remap = true }) +vim.keymap.set({ "v" }, "<c-/>", "gc", { remap = true }) +vim.keymap.set({ "n" }, "<c-_>", "gcc", { remap = true }) +vim.keymap.set({ "v" }, "<c-_>", "gc", { remap = true }) +vim.keymap.set("n", "zz", "zt", { remap = true }) diff --git a/home/common/nvim/mini.lua b/home/common/nvim/mini.lua index 6d9fb19..cba6c4c 100644 --- a/home/common/nvim/mini.lua +++ b/home/common/nvim/mini.lua @@ -9,8 +9,8 @@ require('mini.extra').setup() require('mini.icons').setup() require('mini.jump').setup() - require('mini.pairs').setup() - require('mini.statusline').setup() + -- require('mini.pairs').setup() + -- require('mini.statusline').setup() require('mini.surround').setup() require('mini.splitjoin').setup() @@ -43,20 +43,35 @@ } }) - require('mini.pick').setup() + require('mini.pick').setup({ + mappings = { + move_down = '<tab>' + }, + options = { + use_cache = true + } + }) MiniPick.registry.files_root = function(local_opts) - local root_patterns = { ".jj" } + local root_patterns = { ".jj", ".git" } local root_dir = vim.fs.dirname(vim.fs.find(root_patterns, { upward = true })[1]) - local opts = { source = { cwd = root_dir } } - local_opts.cwd = root_dir -- nil? + local opts = { source = { cwd = root_dir, tool = "rg" } } + local_opts.cwd = root_dir return MiniPick.builtin.files(local_opts, opts) end - vim.keymap.set('n', '<space>/', "<cmd>Pick grep_live<cr>", opts("Live Grep")) - vim.keymap.set('n', '<space>F', "<cmd>Pick files tool='git'<cr>", opts("Find Files in CWD")) - vim.keymap.set('n', '<space>ff', "<cmd>Pick files<cr>", opts("Find Files")) + MiniPick.registry.grep_live_root = function(local_opts) + local root_patterns = { ".jj", ".git" } + local root_dir = vim.fs.dirname(vim.fs.find(root_patterns, { upward = true })[1]) + local opts = { source = { cwd = root_dir } } + local_opts.cwd = root_dir + return MiniPick.builtin.grep_live(local_opts, opts) + end + vim.keymap.set('n', '<space>/', "<cmd>Pick grep_live_root<cr>", opts("Live Grep")) + vim.keymap.set('n', '<space>F', "<cmd>Pick files<cr>", opts("Find Files in CWD")) + vim.keymap.set('n', '<space>ff', "<cmd>Pick files_root<cr>", opts("Find Files")) vim.keymap.set('n', '<space>fr', "<cmd>Pick oldfiles<cr>", opts("Recent Files")) vim.keymap.set('n', '<space>b', "<cmd>Pick buffers<cr>", opts("Buffers")) - vim.keymap.set('n', '<tab>', "<cmd>Pick buffers<cr>", opts("Buffers")) + vim.keymap.set('n', '<space>d', "<cmd>Pick diagnostics<cr>", opts("Diagnostics")) + vim.keymap.set('n', '<tab>', "<cmd>Pick buffers include_current=false<cr>", opts("Buffers")) vim.keymap.set('n', "<space>'", "<cmd>Pick resume<cr>", opts("Last Picker")) vim.keymap.set('n', "<space>g", "<cmd>Pick git_commits<cr>", opts("Git Commits")) diff --git a/home/common/utils.nix b/home/common/utils.nix index 7d5fd93..0a608da 100644 --- a/home/common/utils.nix +++ b/home/common/utils.nix @@ -55,6 +55,8 @@ arguments = [ "--glob=!.git/*" "--glob=!.jj/*" + "--glob=!result/*" + "--glob=!target/*" ]; };