Compare commits

..

1 commit

Author SHA1 Message Date
ef5ec33e4f
WIP: nvim: Experimental minimized setup 2024-11-05 01:13:47 +01:00
7 changed files with 131 additions and 156 deletions

View file

@ -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>

View file

@ -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" })

20
flake.lock generated
View file

@ -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": {

View file

@ -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 @@
}
];
};
}

93
home/common/nvim/init.lua Normal file
View file

@ -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 })

View file

@ -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"))

View file

@ -55,6 +55,8 @@
arguments = [
"--glob=!.git/*"
"--glob=!.jj/*"
"--glob=!result/*"
"--glob=!target/*"
];
};