Squashed 'dots/' changes from 357b97a..24ce8f3
24ce8f3Migrate '.vim/plugin' to neovime3d9612Remove vim yin/yang colorschemes05986a3Migrate '.vim/ftplugin' to neovim05bc2ecMigrate vim snippets to neovim (LuaSnip)128ae8eMigrate '.vim/ftdetect/prolog' to neovimf3188f7Migrate '.vim/after/syntax' to neovim85d56f9Migrate vim init config to neovimafca2caMigrate '.vim/after' to neovimd6875c9Add 'eslint_d' PID to 'nvim-lint' config568e45fRemove jira aliases78fa170Disable 'xdg-user-dirs' by default5216f79Alias bash 'history' command to 'h'0f29dc3Add neovim dependencies to flakec901a1ctestdc4ebfcMerge commit '490998275cbdc5ff032d4a39794bf850f4bfefec'73fd4afAdd neovim 'auto-session' plugin setupff47da9Add minimal readme to my neovim configuration6dff3ebAdd minimal readme to my neovim configurationc94ccd3Remove neovim lazy load related config75ca003Fall back to 'paq.nvim' only when not on 'nixCats'78094a0Add 'nixCatsUtils' from 'nixCats'6e81624Add neovim packages to 'nixCats' flake6ded0b1Add minimal 'nixCats' flake templated0550b3Link NixOS repo in dotfiles repository git-subtree-dir: dots git-subtree-split:24ce8f39af
This commit is contained in:
30
.config/nvim/lua/base.lua
Normal file
30
.config/nvim/lua/base.lua
Normal file
@@ -0,0 +1,30 @@
|
||||
vim.cmd([[
|
||||
" Tip: acronyms for overview, use `:h` for a quick lookup.
|
||||
set nocp " Disable vi incompatibility
|
||||
filetype plugin indent on " Filetype recognition
|
||||
set enc=utf8 " Default to UTF-8 encoding
|
||||
set hid " Allow hiding unsaved buffers
|
||||
set tf " Fast tty
|
||||
set ut=300 " 300ms for update time
|
||||
set to tm=200 ttm=5 " Timeouts
|
||||
set shm+=c " ...
|
||||
set ul=500 hi=500 " History and undo
|
||||
set nu rnu scl=number " Line numbers & signs
|
||||
set nowrap
|
||||
set bs=indent,eol,start " Indentation
|
||||
set ai ts=2 sts=2 sw=2 et " Indentation
|
||||
set is ic scs hls " Search
|
||||
set lz " Only essential redraws
|
||||
set nobk nowb noswf " No backups
|
||||
set vi='20,\"101 " Max 100 lines in registers
|
||||
set novb " Bell
|
||||
set cole=0 cocu="" " Conceal
|
||||
set cb=unnamedplus " Clipboard
|
||||
set fcs+=vert:│ " Cleaner split separator (tmux style)
|
||||
set list
|
||||
set lcs=trail:·,tab:→\ ,nbsp:␣ " Whitespace rendering
|
||||
set ar " Autoread
|
||||
set spellsuggest+=5 " Limit spell suggestions
|
||||
set wildignore+=*/node_modules/*,*/tmp/*,*.so,*.swp,*.zip
|
||||
" set thesaurus+=./thesaurus/mthesaur.txt " FIXME
|
||||
]])
|
||||
16
.config/nvim/lua/cursor.lua
Normal file
16
.config/nvim/lua/cursor.lua
Normal file
@@ -0,0 +1,16 @@
|
||||
vim.cmd([[
|
||||
" Taken from /usr/share/vim/vim90/defaults.vim
|
||||
augroup vimStartup
|
||||
au!
|
||||
|
||||
" When editing a file, always jump to the last known cursor position.
|
||||
" Don't do it when the position is invalid, when inside an event handler
|
||||
" (happens when dropping a file on gvim) and for a commit message (it's
|
||||
" likely a different one than last time).
|
||||
autocmd BufReadPost *
|
||||
\ if line("'\"") >= 1 && line("'\"") <= line("$") && &ft !~# 'commit'
|
||||
\ | exe "normal! g`\""
|
||||
\ | endif
|
||||
|
||||
augroup END
|
||||
]])
|
||||
26
.config/nvim/lua/fold.lua
Normal file
26
.config/nvim/lua/fold.lua
Normal file
@@ -0,0 +1,26 @@
|
||||
vim.cmd([[
|
||||
" Folds {{{
|
||||
set foldmethod=marker
|
||||
|
||||
augroup filetype_vim
|
||||
autocmd!
|
||||
autocmd FileType vim setlocal foldmethod=marker
|
||||
augroup END
|
||||
|
||||
augroup filetype_python
|
||||
autocmd!
|
||||
autocmd FileType python setlocal foldmethod=indent
|
||||
augroup END
|
||||
|
||||
augroup filetype_sh
|
||||
autocmd!
|
||||
autocmd FileType sh setlocal foldmethod=marker
|
||||
augroup END
|
||||
|
||||
augroup filetype_snippets
|
||||
autocmd!
|
||||
autocmd FileType snippets setlocal foldmethod=marker
|
||||
augroup END
|
||||
|
||||
" }}}
|
||||
]])
|
||||
@@ -7,5 +7,6 @@ vim.filetype.add({
|
||||
[".*/%.vscode/.*%.json"] = "jsonc",
|
||||
[".*/%.ssh/config%.d/.*"] = "sshconfig",
|
||||
["%.env.*"] = "dotenv",
|
||||
["%.pl$"] = "prolog",
|
||||
},
|
||||
})
|
||||
|
||||
@@ -1,3 +1,50 @@
|
||||
vim.cmd([[
|
||||
" Leader keys
|
||||
let mapleader = " "
|
||||
let maplocalleader = ";"
|
||||
|
||||
" Splits & navigation
|
||||
nm s <c-w> " Split horizontal
|
||||
nm ss :sp<CR><c-w>w| " Split horizontal
|
||||
nm sv :vs<CR><c-w>w| " Split vertical
|
||||
nm sw <c-w>w| " Navigate splits
|
||||
nm sh <c-w>h| "
|
||||
nm sj <c-w>j| "
|
||||
nm sk <c-w>k| "
|
||||
nm sl <c-w>l| "
|
||||
nn sH <c-w>8<| " Resize splits
|
||||
nn sJ <c-w>8-| "
|
||||
nn sK <c-w>8+| "
|
||||
nn sL <c-w>8>| "
|
||||
nn s= <c-w>=| " Equalize splits
|
||||
|
||||
" Open
|
||||
nn sb :Lex<cr>| " File tree
|
||||
nn <leader><leader> :noh<cr> |"
|
||||
nn <leader>t :term<cr>| " Open terminal
|
||||
|
||||
" Remaps
|
||||
ino <nowait> jj <esc>| " Normal now
|
||||
nn <left> <nop>| " Hard mode
|
||||
nn <down> <nop>| " "
|
||||
nn <up> <nop>| " "
|
||||
nn <right> <nop>| " "
|
||||
ino <left> <nop>| " "
|
||||
ino <down> <nop>| " "
|
||||
ino <up> <nop>| " "
|
||||
ino <right> <nop>| " "
|
||||
|
||||
" Search
|
||||
nn <c-_> :noh<cr>| " map 'ctrl + /'
|
||||
|
||||
" Line numbers
|
||||
nn <leader>n :set nu! rnu!<cr>
|
||||
|
||||
" Vim configuration
|
||||
nn <leader>ec :vs $MYVIMRC<cr>
|
||||
nn <leader>so :so %<cr>
|
||||
]])
|
||||
|
||||
local set = vim.keymap.set
|
||||
|
||||
set("n", "<leader>cx", "<cmd>!chmod +x %<CR>", { silent = true, desc = "Run `chmod +x` on current file" })
|
||||
|
||||
5
.config/nvim/lua/netrw.lua
Normal file
5
.config/nvim/lua/netrw.lua
Normal file
@@ -0,0 +1,5 @@
|
||||
vim.cmd([[
|
||||
let g:netrw_winsize = 30
|
||||
let g:netrw_liststyle=3
|
||||
let g:netrw_banner = 0
|
||||
]])
|
||||
53
.config/nvim/lua/nixCatsUtils/catPacker.lua
Normal file
53
.config/nvim/lua/nixCatsUtils/catPacker.lua
Normal file
@@ -0,0 +1,53 @@
|
||||
-- Source: https://github.com/BirdeeHub/nixCats-nvim/blob/main/templates/example/lua/nixCatsUtils/catPacker.lua
|
||||
--[[
|
||||
This directory is the luaUtils template.
|
||||
You can choose what things from it that you would like to use.
|
||||
And then delete the rest.
|
||||
Everything in this directory is optional.
|
||||
--]]
|
||||
|
||||
local M = {}
|
||||
-- NOTE: This function is for defining a paq.nvim fallback method of downloading plugins
|
||||
-- when nixCats was not used to install your config.
|
||||
-- If you only ever load your config using nixCats, you don't need this file.
|
||||
|
||||
-- it literally just only runs it when not on nixCats
|
||||
-- all neovim package managers that use the regular plugin loading scheme
|
||||
-- can be used this way, just do whatever the plugin manager needs to put it in the
|
||||
-- opt directory for lazy loading, and add the build steps so that when theres no nix the steps are ran
|
||||
function M.setup(v)
|
||||
if not vim.g[ [[nixCats-special-rtp-entry-nixCats]] ] then
|
||||
local function clone_paq()
|
||||
local path = vim.fn.stdpath("data") .. "/site/pack/paqs/start/paq-nvim"
|
||||
local is_installed = vim.fn.empty(vim.fn.glob(path)) == 0
|
||||
if not is_installed then
|
||||
vim.fn.system({ "git", "clone", "--depth=1", "https://github.com/savq/paq-nvim.git", path })
|
||||
return true
|
||||
end
|
||||
end
|
||||
local function bootstrap_paq(packages)
|
||||
local first_install = clone_paq()
|
||||
vim.cmd.packadd("paq-nvim")
|
||||
local paq = require("paq")
|
||||
if first_install then
|
||||
vim.notify("Installing plugins... If prompted, hit Enter to continue.")
|
||||
end
|
||||
paq(packages)
|
||||
paq.install()
|
||||
end
|
||||
|
||||
vim.api.nvim_create_autocmd("VimEnter", {
|
||||
once = true,
|
||||
callback = function()
|
||||
local pkgs_count = #require("paq").query("to_install")
|
||||
if pkgs_count < 1 then
|
||||
return
|
||||
end
|
||||
vim.notify(string.format("There are %d to install", pkgs_count))
|
||||
end,
|
||||
})
|
||||
|
||||
bootstrap_paq(vim.list_extend({ "savq/paq-nvim" }, v))
|
||||
end
|
||||
end
|
||||
return M
|
||||
136
.config/nvim/lua/nixCatsUtils/init.lua
Normal file
136
.config/nvim/lua/nixCatsUtils/init.lua
Normal file
@@ -0,0 +1,136 @@
|
||||
-- Source: https://github.com/BirdeeHub/nixCats-nvim/blob/main/templates/example/lua/nixCatsUtils/init.lua
|
||||
--[[
|
||||
This directory is the luaUtils template.
|
||||
You can choose what things from it that you would like to use.
|
||||
And then delete the rest.
|
||||
Everything in this directory is optional.
|
||||
--]]
|
||||
|
||||
local M = {}
|
||||
|
||||
--[[
|
||||
This file is for making your config still work WITHOUT nixCats.
|
||||
When you don't use nixCats to load your config,
|
||||
you wont have the nixCats plugin.
|
||||
|
||||
The setup function defined here defines a mock nixCats plugin when nixCats wasnt used to load the config.
|
||||
This will help avoid indexing errors when the nixCats plugin doesnt exist.
|
||||
|
||||
NOTE: If you only ever use nixCats to load your config, you don't need this file.
|
||||
--]]
|
||||
|
||||
---@type boolean
|
||||
M.isNixCats = vim.g[ [[nixCats-special-rtp-entry-nixCats]] ] ~= nil
|
||||
|
||||
---@class nixCatsSetupOpts
|
||||
---@field non_nix_value boolean|nil
|
||||
|
||||
---This function will setup a mock nixCats plugin when not using nix
|
||||
---It will help prevent you from running into indexing errors without a nixCats plugin from nix.
|
||||
---If you loaded the config via nix, it does nothing
|
||||
---non_nix_value defaults to true if not provided or is not a boolean.
|
||||
---@param v nixCatsSetupOpts
|
||||
function M.setup(v)
|
||||
if not M.isNixCats then
|
||||
local nixCats_default_value
|
||||
if type(v) == "table" and type(v.non_nix_value) == "boolean" then
|
||||
nixCats_default_value = v.non_nix_value
|
||||
else
|
||||
nixCats_default_value = true
|
||||
end
|
||||
local mk_with_meta = function(tbl)
|
||||
return setmetatable(tbl, {
|
||||
__call = function(_, attrpath)
|
||||
local strtable = {}
|
||||
if type(attrpath) == "table" then
|
||||
strtable = attrpath
|
||||
elseif type(attrpath) == "string" then
|
||||
for key in attrpath:gmatch("([^%.]+)") do
|
||||
table.insert(strtable, key)
|
||||
end
|
||||
else
|
||||
print("function requires a table of strings or a dot separated string")
|
||||
return
|
||||
end
|
||||
return vim.tbl_get(tbl, unpack(strtable))
|
||||
end,
|
||||
})
|
||||
end
|
||||
package.preload["nixCats"] = function()
|
||||
local ncsub = {
|
||||
get = function(_)
|
||||
return nixCats_default_value
|
||||
end,
|
||||
cats = mk_with_meta({
|
||||
nixCats_config_location = vim.fn.stdpath("config"),
|
||||
wrapRc = false,
|
||||
}),
|
||||
settings = mk_with_meta({
|
||||
nixCats_config_location = vim.fn.stdpath("config"),
|
||||
configDirName = os.getenv("NVIM_APPNAME") or "nvim",
|
||||
wrapRc = false,
|
||||
}),
|
||||
petShop = mk_with_meta({}),
|
||||
extra = mk_with_meta({}),
|
||||
pawsible = mk_with_meta({
|
||||
allPlugins = {
|
||||
start = {},
|
||||
opt = {},
|
||||
},
|
||||
}),
|
||||
configDir = vim.fn.stdpath("config"),
|
||||
packageBinPath = os.getenv("NVIM_WRAPPER_PATH_NIX") or vim.v.progpath,
|
||||
}
|
||||
return setmetatable(ncsub, {
|
||||
__call = function(_, cat)
|
||||
return ncsub.get(cat)
|
||||
end,
|
||||
})
|
||||
end
|
||||
_G.nixCats = require("nixCats")
|
||||
end
|
||||
end
|
||||
|
||||
---allows you to guarantee a boolean is returned, and also declare a different
|
||||
---default value than specified in setup when not using nix to load the config
|
||||
---@overload fun(v: string|string[]): boolean
|
||||
---@overload fun(v: string|string[], default: boolean): boolean
|
||||
function M.enableForCategory(v, default)
|
||||
if M.isNixCats or default == nil then
|
||||
if nixCats(v) then
|
||||
return true
|
||||
else
|
||||
return false
|
||||
end
|
||||
else
|
||||
return default
|
||||
end
|
||||
end
|
||||
|
||||
---if nix, return value of nixCats(v) else return default
|
||||
---Exists to specify a different non_nix_value than the one in setup()
|
||||
---@param v string|string[]
|
||||
---@param default any
|
||||
---@return any
|
||||
function M.getCatOrDefault(v, default)
|
||||
if M.isNixCats then
|
||||
return nixCats(v)
|
||||
else
|
||||
return default
|
||||
end
|
||||
end
|
||||
|
||||
---for conditionally disabling build steps on nix, as they are done via nix
|
||||
---I should probably have named it dontAddIfCats or something.
|
||||
---@overload fun(v: any): any|nil
|
||||
---Will return the second value if nix, otherwise the first
|
||||
---@overload fun(v: any, o: any): any
|
||||
function M.lazyAdd(v, o)
|
||||
if M.isNixCats then
|
||||
return o
|
||||
else
|
||||
return v
|
||||
end
|
||||
end
|
||||
|
||||
return M
|
||||
12
.config/nvim/lua/pandoc.lua
Normal file
12
.config/nvim/lua/pandoc.lua
Normal file
@@ -0,0 +1,12 @@
|
||||
vim.cmd([[
|
||||
fu! Compile()
|
||||
if expand('%:e') == "md"
|
||||
:silent exec "!pandoc % -s -o /tmp/op.pdf &"
|
||||
endif
|
||||
endfu
|
||||
|
||||
fu! Preview()
|
||||
:call Compile()
|
||||
:silent exec "!zathura /tmp/op.pdf &"
|
||||
endfu
|
||||
]])
|
||||
@@ -1,38 +1,4 @@
|
||||
-- Automate paq installation {{{
|
||||
local function clone_paq()
|
||||
local path = vim.fn.stdpath("data") .. "/site/pack/paqs/start/paq-nvim"
|
||||
local is_installed = vim.fn.empty(vim.fn.glob(path)) == 0
|
||||
if not is_installed then
|
||||
vim.fn.system({ "git", "clone", "--depth=1", "https://github.com/savq/paq-nvim.git", path })
|
||||
return true
|
||||
end
|
||||
end
|
||||
local function bootstrap_paq(packages)
|
||||
local first_install = clone_paq()
|
||||
vim.cmd.packadd("paq-nvim")
|
||||
local paq = require("paq")
|
||||
if first_install then
|
||||
vim.notify("Installing plugins... If prompted, hit Enter to continue.")
|
||||
end
|
||||
paq(packages)
|
||||
paq.install()
|
||||
end
|
||||
|
||||
vim.api.nvim_create_autocmd("VimEnter", {
|
||||
once = true,
|
||||
callback = function()
|
||||
local pkgs_count = #require("paq").query("to_install")
|
||||
if pkgs_count < 1 then
|
||||
return
|
||||
end
|
||||
vim.notify(string.format("There are %d to install", pkgs_count))
|
||||
end,
|
||||
})
|
||||
|
||||
-- }}}
|
||||
|
||||
-- Set up paq plugins {{{
|
||||
bootstrap_paq({
|
||||
require("nixCatsUtils.catPacker").setup({
|
||||
{ "savq/paq-nvim" },
|
||||
{ "jinh0/eyeliner.nvim" },
|
||||
{ "ibhagwan/fzf-lua" },
|
||||
@@ -77,4 +43,3 @@ bootstrap_paq({
|
||||
{ "zbirenbaum/copilot-cmp" },
|
||||
{ "qvalentin/helm-ls.nvim", ft = "helm" },
|
||||
})
|
||||
-- }}}
|
||||
|
||||
31
.config/nvim/lua/plug.lua
Normal file
31
.config/nvim/lua/plug.lua
Normal file
@@ -0,0 +1,31 @@
|
||||
vim.cmd([[
|
||||
call plug#begin()
|
||||
Plug 'machakann/vim-sandwich'
|
||||
Plug 'Shougo/context_filetype.vim'
|
||||
Plug 'editorconfig/editorconfig-vim'
|
||||
Plug 'honza/vim-snippets'
|
||||
Plug 'chrisbra/unicode.vim'
|
||||
Plug 'ap/vim-css-color'
|
||||
" Jupyter
|
||||
Plug 'quarto-dev/quarto-vim'
|
||||
" LaTeX
|
||||
Plug 'lervag/vimtex'
|
||||
" Wiki
|
||||
Plug 'lervag/wiki.vim'
|
||||
Plug 'hektor/taskwiki'
|
||||
" Markdown
|
||||
Plug 'vim-pandoc/vim-pandoc'
|
||||
Plug 'vim-pandoc/vim-pandoc-syntax'
|
||||
Plug 'ferrine/md-img-paste.vim'
|
||||
" TidalCycles
|
||||
Plug 'supercollider/scvim'
|
||||
Plug 'tidalcycles/vim-tidal'
|
||||
" GLSL
|
||||
Plug 'tikhomirov/vim-glsl'
|
||||
Plug 'timtro/glslView-nvim'
|
||||
" Jupyter notebooks
|
||||
Plug 'goerz/jupytext.vim'
|
||||
" OpenSCAD
|
||||
Plug 'sirtaj/vim-openscad'
|
||||
call plug#end()
|
||||
]])
|
||||
7
.config/nvim/lua/reload.lua
Normal file
7
.config/nvim/lua/reload.lua
Normal file
@@ -0,0 +1,7 @@
|
||||
vim.cmd([[
|
||||
augroup Vim
|
||||
au!
|
||||
" Reload vim config when ~/.vimrc is changed
|
||||
au BufWritePost $HOME/.vimrc so $MYVIMRC | redraw | echo "Reloaded vimrc"
|
||||
augroup END
|
||||
]])
|
||||
9
.config/nvim/lua/statusline.lua
Normal file
9
.config/nvim/lua/statusline.lua
Normal file
@@ -0,0 +1,9 @@
|
||||
vim.cmd([[
|
||||
se ls=2
|
||||
se stl=\ %0*%n
|
||||
se stl+=\ %m
|
||||
se stl+=\ %y%0*
|
||||
se stl+=\ %<%F
|
||||
se stl+=\ %0*%=%5l%*
|
||||
se stl+=%0*/%L%*
|
||||
]])
|
||||
8
.config/nvim/lua/utils.lua
Normal file
8
.config/nvim/lua/utils.lua
Normal file
@@ -0,0 +1,8 @@
|
||||
vim.cmd([[
|
||||
function! SynGroup()
|
||||
let l:s = synID(line('.'), col('.'), 1)
|
||||
echo synIDattr(l:s, 'name') . ' -> ' . synIDattr(synIDtrans(l:s), 'name')
|
||||
endfun
|
||||
|
||||
com! -nargs=0 Syn :call SynGroup()
|
||||
]])
|
||||
@@ -1,5 +0,0 @@
|
||||
vim.cmd([[
|
||||
set runtimepath^=~/.vim runtimepath+=~/.vim/after
|
||||
let &packpath = &runtimepath
|
||||
source ~/.vimrc"
|
||||
]])
|
||||
22
.config/nvim/lua/zk.lua
Normal file
22
.config/nvim/lua/zk.lua
Normal file
@@ -0,0 +1,22 @@
|
||||
vim.cmd([[
|
||||
let s:zk_preview_enabled = 0
|
||||
let s:live_server_job = -1
|
||||
au BufEnter /home/h/.zk/*.md silent exe '!echo "%" > /home/h/.zk/current-zettel.txt'
|
||||
function! ToggleZKPreview()
|
||||
if s:zk_preview_enabled == 1
|
||||
let s:zk_preview_enabled = 0
|
||||
call jobstop(s:live_server_job)
|
||||
au! ZKPreview
|
||||
else
|
||||
let s:zk_preview_enabled = 1
|
||||
let s:live_server_job = jobstart('live-server --watch=/home/h/.zk/current-zettel-content.html --open=current-zettel-content.html --port=8080')
|
||||
augroup ZKPreview
|
||||
au BufEnter /home/h/.zk/*.md silent exe '!cat "%:r.html" > /home/h/.zk/current-zettel-content.html'
|
||||
au BufWritePost /home/h/.zk/*.md silent exe '!make && cat "%:r.html" > /home/h/.zk/current-zettel-content.html'
|
||||
augroup END
|
||||
endif
|
||||
endfunction
|
||||
command! ToggleZKPreview call ToggleZKPreview()
|
||||
|
||||
nn <leader>o :ToggleZKPreview<cr> :!xdg-open http://localhost:8080/%:t:r.html & <cr>
|
||||
]])
|
||||
Reference in New Issue
Block a user