Squashed 'dots/' changes from f64b634..24ce8f3
main24ce8f3Migrate '.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 flakec901a1ctest6113c08Merge commit '490998275cbdc5ff032d4a39794bf850f4bfefec'470f69fAdd neovim 'auto-session' plugin setupd3a67abAdd minimal readme to my neovim configurationf79bc54Add minimal readme to my neovim configuration4fe60cfRemove neovim lazy load related config211da54Fall back to 'paq.nvim' only when not on 'nixCats'b6d3015Add 'nixCatsUtils' from 'nixCats'139089fAdd neovim packages to 'nixCats' flakea54e745Add minimal 'nixCats' flake template6e48621Link NixOS repo in dotfiles repository git-subtree-dir: dots git-subtree-split:24ce8f39af
							parent
							
								
									f64b634dd8
								
							
						
					
					
						commit
						f035c9318b
					
				| 
						 | 
				
			
			@ -34,6 +34,7 @@ alias fzfpac="pacman -Slq | fzf -m --preview 'pacman -Si {1}' | xargs -ro sudo p
 | 
			
		|||
alias path='echo -e ${PATH//:/\\n}' # Pretty print path variables
 | 
			
		||||
 | 
			
		||||
# Programs
 | 
			
		||||
alias h="history"
 | 
			
		||||
alias o="xdg-open"
 | 
			
		||||
alias v="nvim"
 | 
			
		||||
alias g='git'
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,4 +0,0 @@
 | 
			
		|||
# shellcheck shell=bash
 | 
			
		||||
# vim: set ft=bash :
 | 
			
		||||
 | 
			
		||||
alias jira-me='jira issue list -a$(jira me)'
 | 
			
		||||
							
								
								
									
										1
									
								
								.bashrc
								
								
								
								
							
							
						
						
									
										1
									
								
								.bashrc
								
								
								
								
							| 
						 | 
				
			
			@ -15,7 +15,6 @@
 | 
			
		|||
[ -f "$HOME/.bash_aliases/hosts/$HOSTNAME" ] && . "$HOME/.bash_aliases/hosts/$HOSTNAME"
 | 
			
		||||
[ -f "$HOME/.bash_aliases/private" ] && . "$HOME/.bash_aliases/private"
 | 
			
		||||
[ -f "$HOME/.bash_aliases/lang-js" ] && . "$HOME/.bash_aliases/lang-js"
 | 
			
		||||
command -v jira >/dev/null && [ -f "$HOME/.bash_aliases/jira" ] && . "$HOME/.bash_aliases/jira"
 | 
			
		||||
 | 
			
		||||
# Completions {{{
 | 
			
		||||
[ -d "$HOME/.bash_completions" ] && for file in "$HOME/.bash_completions"/*; do
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,6 @@
 | 
			
		|||
# Neovim configuration
 | 
			
		||||
 | 
			
		||||
My neovim configuration. Available as a Nix flake [^nixcats]. When installing manually,
 | 
			
		||||
`paq.nvim` is used as a fallback plugin manager.
 | 
			
		||||
 | 
			
		||||
[^nixcats]: Based on [this nixCats `example` template](https://github.com/BirdeeHub/nixCats-nvim/tree/77dffad8235eb77684fcb7599487c8e9f23d5b8f/templates/example)
 | 
			
		||||
| 
						 | 
				
			
			@ -1,3 +1,4 @@
 | 
			
		|||
vim.cmd([[
 | 
			
		||||
function GetClozeNumber()
 | 
			
		||||
  let REGEX_CLOZE_START = '{{c\d\+::'
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -33,3 +34,4 @@ let g:sandwich#recipes += [
 | 
			
		|||
      \     'nesting':  1
 | 
			
		||||
      \   }
 | 
			
		||||
      \ ]
 | 
			
		||||
]])
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1 @@
 | 
			
		|||
require("auto-session").setup({})
 | 
			
		||||
| 
						 | 
				
			
			@ -1,3 +1,5 @@
 | 
			
		|||
vim.cmd([[
 | 
			
		||||
" Paste clipboard images
 | 
			
		||||
au FileType pandoc nmap <buffer><silent> <leader>v :call mdip#MarkdownClipboardImage()<CR>
 | 
			
		||||
au FileType markdown nmap <buffer><silent> <leader>v :call mdip#MarkdownClipboardImage()<CR>
 | 
			
		||||
]])
 | 
			
		||||
| 
						 | 
				
			
			@ -1,3 +1,5 @@
 | 
			
		|||
vim.env.ESLINT_D_PPID = vim.fn.getpid()
 | 
			
		||||
 | 
			
		||||
local eslint_linter = "eslint_d"
 | 
			
		||||
 | 
			
		||||
require("lint").linters_by_ft = {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,3 +1,5 @@
 | 
			
		|||
vim.cmd([[
 | 
			
		||||
nmap s <Nop>
 | 
			
		||||
xmap s <Nop>
 | 
			
		||||
let g:sandwich#recipes = deepcopy(g:sandwich#default_recipes)
 | 
			
		||||
]])
 | 
			
		||||
| 
						 | 
				
			
			@ -1,4 +1,6 @@
 | 
			
		|||
vim.cmd([[
 | 
			
		||||
let g:taskwiki_taskrc_location='/home/h/.config/task/taskrc'
 | 
			
		||||
let g:taskwiki_disable_concealcursor=1
 | 
			
		||||
let g:taskwiki_dont_preserve_folds=1
 | 
			
		||||
let g:taskwiki_dont_fold=1
 | 
			
		||||
]])
 | 
			
		||||
| 
						 | 
				
			
			@ -1,6 +1,8 @@
 | 
			
		|||
vim.cmd([[
 | 
			
		||||
let g:javascript_plugin_jsdoc = 1 " jsdoc syntax highlighting
 | 
			
		||||
let g:javascript_plugin_flow = 1 " flow syntax highlighting
 | 
			
		||||
let g:javascript_conceal_function = "ƒ"
 | 
			
		||||
let g:javascript_conceal_return = "⇖"
 | 
			
		||||
let g:svelte_indent_script = 0
 | 
			
		||||
let g:svelte_indent_style = 0
 | 
			
		||||
]])
 | 
			
		||||
| 
						 | 
				
			
			@ -1,3 +1,4 @@
 | 
			
		|||
vim.cmd([[
 | 
			
		||||
let g:pandoc#syntax#conceal#urls=1
 | 
			
		||||
let g:pandoc#syntax#codeblocks#embeds#langs=[
 | 
			
		||||
  \ 'python',
 | 
			
		||||
| 
						 | 
				
			
			@ -13,3 +14,4 @@ let g:pandoc#syntax#codeblocks#embeds#langs=[
 | 
			
		|||
let g:pandoc#syntax#style#emphases=0 " Bug workaround
 | 
			
		||||
let g:pandoc#syntax#conceal#cchar_overrides = { "atx": " ", "li": "·" }
 | 
			
		||||
let g:pandoc#syntax#conceal#blacklist=[]
 | 
			
		||||
]])
 | 
			
		||||
| 
						 | 
				
			
			@ -1,3 +1,4 @@
 | 
			
		|||
vim.cmd([[
 | 
			
		||||
au FileType pandoc call pandoc#completion#Init()
 | 
			
		||||
let g:pandoc#filetypes#pandoc_markdown=0
 | 
			
		||||
let g:pandoc#spell#enabled=0
 | 
			
		||||
| 
						 | 
				
			
			@ -5,3 +6,4 @@ let g:pandoc#spell#default_langs=['en_us', 'nl_be']
 | 
			
		|||
let g:pandoc#formatting#mode='a'
 | 
			
		||||
let g:pandoc#formatting#textwidth=90
 | 
			
		||||
let g:pandoc#modules#disabled = ["formatting", "dashes", "yaml", "metadata"]
 | 
			
		||||
]])
 | 
			
		||||
| 
						 | 
				
			
			@ -1,3 +1,4 @@
 | 
			
		|||
vim.cmd([[
 | 
			
		||||
" Tidalcycles (sclang and vim-tidal)
 | 
			
		||||
let g:tidal_default_config = {"socket_name": "default", "target_pane": "tidal:1.1"}
 | 
			
		||||
let g:tidal_no_mappings = 1
 | 
			
		||||
| 
						 | 
				
			
			@ -12,3 +13,4 @@ au FileType tidal com! -nargs=0 H :TidalHush
 | 
			
		|||
" SuperCollider
 | 
			
		||||
au BufEnter,BufWinEnter,BufNewFile,BufRead *.sc,*.scd se filetype=supercollider
 | 
			
		||||
au Filetype supercollider packadd scvim
 | 
			
		||||
]])
 | 
			
		||||
| 
						 | 
				
			
			@ -1,4 +1,6 @@
 | 
			
		|||
vim.cmd([[
 | 
			
		||||
let g:vimtex_view_method='zathura'
 | 
			
		||||
let g:tex_flavor='latex'
 | 
			
		||||
let g:tex_conceal='abdmgs'
 | 
			
		||||
let g:vimtex_quickfix_mode=0
 | 
			
		||||
]])
 | 
			
		||||
| 
						 | 
				
			
			@ -1,3 +1,4 @@
 | 
			
		|||
vim.cmd([[
 | 
			
		||||
" Change local buffer to directory of current file after the plugin has loaded
 | 
			
		||||
autocmd VimEnter * lcd %:p:h
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -106,3 +107,4 @@ let g:wiki_write_on_nav=1
 | 
			
		|||
let g:wiki_zotero_root='~/.local/share/zotero'
 | 
			
		||||
" ... mappings and commands
 | 
			
		||||
" ...
 | 
			
		||||
]])
 | 
			
		||||
| 
						 | 
				
			
			@ -1,5 +1,7 @@
 | 
			
		|||
vim.cmd([[
 | 
			
		||||
syn match Todo /TODO/
 | 
			
		||||
syn match Todo /FIXME/
 | 
			
		||||
syn match Todo /FIX/
 | 
			
		||||
syn match Todo /QUESTION/
 | 
			
		||||
syn match Todo /NOTE/
 | 
			
		||||
]])
 | 
			
		||||
| 
						 | 
				
			
			@ -1,3 +1,4 @@
 | 
			
		|||
vim.cmd([[
 | 
			
		||||
" Override the pandoc-syntax highlighting colors for more subtle citations
 | 
			
		||||
hi! link pandocPCite Comment
 | 
			
		||||
hi! link pandocICite Comment
 | 
			
		||||
| 
						 | 
				
			
			@ -5,9 +6,6 @@ hi! link pandocCiteKey Comment
 | 
			
		|||
hi! link pandocCiteAnchor Comment
 | 
			
		||||
hi! link pandocCiteLocator Comment
 | 
			
		||||
 | 
			
		||||
" Don't show the CiteKey within the CiteLocator
 | 
			
		||||
syn match pandocCiteKey /\v\[[^]]+\]/ contained
 | 
			
		||||
 | 
			
		||||
" Match cloze delimiters e.g. `{{c1::` and `}}`
 | 
			
		||||
syn match ClozeDelimiter /{{c\d\+::/ conceal containedin=pandocUListItem,pandocListItem
 | 
			
		||||
syn match ClozeDelimiter /}}/ conceal containedin=pandocUListItem,pandocListItem
 | 
			
		||||
| 
						 | 
				
			
			@ -23,4 +21,6 @@ syn match TaskWikiTaskUuid containedin=TaskWikiTask /\v#([A-Z]:)?[0-9a-fA-F]{8}-
 | 
			
		|||
syn match TaskWikiTaskUuid containedin=TaskWikiTask /\v#([A-Z]:)?[0-9a-fA-F]{8}$/
 | 
			
		||||
highlight link TaskWikiTaskUuid Comment
 | 
			
		||||
 | 
			
		||||
:runtime! syntax/_comment_keywords.vim
 | 
			
		||||
]])
 | 
			
		||||
 | 
			
		||||
vim.cmd.runtime("syntax/_comment_keywords.lua")
 | 
			
		||||
| 
						 | 
				
			
			@ -1,5 +1,7 @@
 | 
			
		|||
vim.cmd([[
 | 
			
		||||
syn keyword Operator \+ conceal cchar=¬
 | 
			
		||||
syn keyword Operator ,  conceal cchar=∧
 | 
			
		||||
syn keyword Operator ;  conceal cchar=∨
 | 
			
		||||
]])
 | 
			
		||||
 | 
			
		||||
:runtime! syntax/_comment_keywords.vim
 | 
			
		||||
vim.cmd.runtime("syntax/_comment_keywords.lua")
 | 
			
		||||
| 
						 | 
				
			
			@ -1,3 +1,4 @@
 | 
			
		|||
vim.cmd([[
 | 
			
		||||
syntax keyword Statement define conceal cchar=≔
 | 
			
		||||
 | 
			
		||||
syn keyword Operator not conceal cchar=¬
 | 
			
		||||
| 
						 | 
				
			
			@ -35,5 +36,6 @@ syn keyword Operator phi     conceal cchar=φ
 | 
			
		|||
syn keyword Operator chi     conceal cchar=χ
 | 
			
		||||
syn keyword Operator psi     conceal cchar=ψ
 | 
			
		||||
syn keyword Operator omega   conceal cchar=ω
 | 
			
		||||
]])
 | 
			
		||||
 | 
			
		||||
:runtime! syntax/_comment_keywords.vim
 | 
			
		||||
vim.cmd.runtime("syntax/_comment_keywords.lua")
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,162 @@
 | 
			
		|||
{
 | 
			
		||||
  "nodes": {
 | 
			
		||||
    "nixCats": {
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1759730664,
 | 
			
		||||
        "narHash": "sha256-boRlBQ/c4CaHsK/z04QL6+t81mcar37Io94HBX2GflY=",
 | 
			
		||||
        "owner": "BirdeeHub",
 | 
			
		||||
        "repo": "nixCats-nvim",
 | 
			
		||||
        "rev": "77dffad8235eb77684fcb7599487c8e9f23d5b8f",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
        "owner": "BirdeeHub",
 | 
			
		||||
        "repo": "nixCats-nvim",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "nixpkgs": {
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1760256791,
 | 
			
		||||
        "narHash": "sha256-uTpzDHRASEDeFUuToWSQ46Re8beXyG9dx4W36FQa0/c=",
 | 
			
		||||
        "owner": "nixos",
 | 
			
		||||
        "repo": "nixpkgs",
 | 
			
		||||
        "rev": "832e3b6db48508ae436c2c7bfc0cf914eac6938e",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
        "owner": "nixos",
 | 
			
		||||
        "ref": "nixpkgs-unstable",
 | 
			
		||||
        "repo": "nixpkgs",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "plugins-beancount-nvim": {
 | 
			
		||||
      "flake": false,
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1707748314,
 | 
			
		||||
        "narHash": "sha256-LuACGVB3kiaiJqoGtvFy6kbPNtqoGliKLDeR+Z7Wzbw=",
 | 
			
		||||
        "owner": "polarmutex",
 | 
			
		||||
        "repo": "beancount.nvim",
 | 
			
		||||
        "rev": "869564aba3087ee5df8f282aa37555e314aa2152",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
        "owner": "polarmutex",
 | 
			
		||||
        "repo": "beancount.nvim",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "plugins-crazy-node-movement": {
 | 
			
		||||
      "flake": false,
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1693654676,
 | 
			
		||||
        "narHash": "sha256-hQcQEp39zFN2zphMfcr97yRVcuHhBsSkzKO7XNloDpQ=",
 | 
			
		||||
        "owner": "theHamsta",
 | 
			
		||||
        "repo": "crazy-node-movement",
 | 
			
		||||
        "rev": "d5cf01cc44c5715501d3d6fe439af7c8b7fa5df2",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
        "owner": "theHamsta",
 | 
			
		||||
        "repo": "crazy-node-movement",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "plugins-helm-ls-nvim": {
 | 
			
		||||
      "flake": false,
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1757598429,
 | 
			
		||||
        "narHash": "sha256-nzuJxAAaEmuVYg9k0B8OKslxsihhg6RKlhz6E7xJTQU=",
 | 
			
		||||
        "owner": "qvalentin",
 | 
			
		||||
        "repo": "helm-ls.nvim",
 | 
			
		||||
        "rev": "f36ecbd3e7b0b2ac8358a9d6a3213888e29943db",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
        "owner": "qvalentin",
 | 
			
		||||
        "repo": "helm-ls.nvim",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "plugins-mcphub-nvim": {
 | 
			
		||||
      "flake": false,
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1759035242,
 | 
			
		||||
        "narHash": "sha256-I6EbgY/2sAdtrxtmH0qbAAQvMCHhOsfolJfblV0fXOk=",
 | 
			
		||||
        "owner": "ravitemer",
 | 
			
		||||
        "repo": "mcphub.nvim",
 | 
			
		||||
        "rev": "8ff40b5edc649959bb7e89d25ae18e055554859a",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
        "owner": "ravitemer",
 | 
			
		||||
        "repo": "mcphub.nvim",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "plugins-nvimkit-nvim": {
 | 
			
		||||
      "flake": false,
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1721393835,
 | 
			
		||||
        "narHash": "sha256-MdmrhLHMxrn6upu1chjKyitPZ5WkCQtpI465AKJXDOA=",
 | 
			
		||||
        "owner": "jamesblckwell",
 | 
			
		||||
        "repo": "nvimkit.nvim",
 | 
			
		||||
        "rev": "af363d22699760f66988e8d36539a5753039217a",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
        "owner": "jamesblckwell",
 | 
			
		||||
        "repo": "nvimkit.nvim",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "plugins-shipwright-nvim": {
 | 
			
		||||
      "flake": false,
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1711725275,
 | 
			
		||||
        "narHash": "sha256-xh/2m//Cno5gPucjOYih79wVZj3X1Di/U3/IQhKXjc0=",
 | 
			
		||||
        "owner": "rktjmp",
 | 
			
		||||
        "repo": "shipwright.nvim",
 | 
			
		||||
        "rev": "e596ab48328c31873f4f4d2e070243bf9de16ff3",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
        "owner": "rktjmp",
 | 
			
		||||
        "repo": "shipwright.nvim",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "plugins-tailwind-fold-nvim": {
 | 
			
		||||
      "flake": false,
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1752559116,
 | 
			
		||||
        "narHash": "sha256-8uefZIVsn9USEd6FyiO3m3TRKAS/vigU4t9Tk5ijd3c=",
 | 
			
		||||
        "owner": "razak17",
 | 
			
		||||
        "repo": "tailwind-fold.nvim",
 | 
			
		||||
        "rev": "d9e7ca11691d252b35795726dff087bf013b2ebf",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
        "owner": "razak17",
 | 
			
		||||
        "repo": "tailwind-fold.nvim",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "root": {
 | 
			
		||||
      "inputs": {
 | 
			
		||||
        "nixCats": "nixCats",
 | 
			
		||||
        "nixpkgs": "nixpkgs",
 | 
			
		||||
        "plugins-beancount-nvim": "plugins-beancount-nvim",
 | 
			
		||||
        "plugins-crazy-node-movement": "plugins-crazy-node-movement",
 | 
			
		||||
        "plugins-helm-ls-nvim": "plugins-helm-ls-nvim",
 | 
			
		||||
        "plugins-mcphub-nvim": "plugins-mcphub-nvim",
 | 
			
		||||
        "plugins-nvimkit-nvim": "plugins-nvimkit-nvim",
 | 
			
		||||
        "plugins-shipwright-nvim": "plugins-shipwright-nvim",
 | 
			
		||||
        "plugins-tailwind-fold-nvim": "plugins-tailwind-fold-nvim"
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  "root": "root",
 | 
			
		||||
  "version": 7
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,223 @@
 | 
			
		|||
{
 | 
			
		||||
  inputs = {
 | 
			
		||||
    nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
 | 
			
		||||
    nixCats.url = "github:BirdeeHub/nixCats-nvim";
 | 
			
		||||
 | 
			
		||||
    plugins-shipwright-nvim = {
 | 
			
		||||
      url = "github:rktjmp/shipwright.nvim";
 | 
			
		||||
      flake = false;
 | 
			
		||||
    };
 | 
			
		||||
    plugins-crazy-node-movement = {
 | 
			
		||||
      url = "github:theHamsta/crazy-node-movement";
 | 
			
		||||
      flake = false;
 | 
			
		||||
    };
 | 
			
		||||
    plugins-beancount-nvim = {
 | 
			
		||||
      url = "github:polarmutex/beancount.nvim";
 | 
			
		||||
      flake = false;
 | 
			
		||||
    };
 | 
			
		||||
    plugins-tailwind-fold-nvim = {
 | 
			
		||||
      url = "github:razak17/tailwind-fold.nvim";
 | 
			
		||||
      flake = false;
 | 
			
		||||
    };
 | 
			
		||||
    plugins-nvimkit-nvim = {
 | 
			
		||||
      url = "github:jamesblckwell/nvimkit.nvim";
 | 
			
		||||
      flake = false;
 | 
			
		||||
    };
 | 
			
		||||
    plugins-mcphub-nvim = {
 | 
			
		||||
      url = "github:ravitemer/mcphub.nvim";
 | 
			
		||||
      flake = false;
 | 
			
		||||
    };
 | 
			
		||||
    plugins-helm-ls-nvim = {
 | 
			
		||||
      url = "github:qvalentin/helm-ls.nvim";
 | 
			
		||||
      flake = false;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  outputs =
 | 
			
		||||
    {
 | 
			
		||||
      self,
 | 
			
		||||
      nixpkgs,
 | 
			
		||||
      nixCats,
 | 
			
		||||
      ...
 | 
			
		||||
    }@inputs:
 | 
			
		||||
    let
 | 
			
		||||
      inherit (nixCats) utils;
 | 
			
		||||
      luaPath = ./.;
 | 
			
		||||
      forEachSystem = utils.eachSystem nixpkgs.lib.platforms.all;
 | 
			
		||||
      extra_pkg_config = { };
 | 
			
		||||
 | 
			
		||||
      dependencyOverlays = [
 | 
			
		||||
        (utils.standardPluginOverlay inputs)
 | 
			
		||||
      ];
 | 
			
		||||
 | 
			
		||||
      categoryDefinitions =
 | 
			
		||||
        {
 | 
			
		||||
          pkgs,
 | 
			
		||||
          ...
 | 
			
		||||
        }:
 | 
			
		||||
        {
 | 
			
		||||
          lspsAndRuntimeDeps = with pkgs; {
 | 
			
		||||
            general = [
 | 
			
		||||
              black
 | 
			
		||||
              clang
 | 
			
		||||
              clang-tools
 | 
			
		||||
              gawk
 | 
			
		||||
              gdtoolkit_4
 | 
			
		||||
              isort
 | 
			
		||||
              tree-sitter
 | 
			
		||||
              ormolu
 | 
			
		||||
              nodePackages.prettier
 | 
			
		||||
              prettierd
 | 
			
		||||
              shellcheck-minimal
 | 
			
		||||
              stylua
 | 
			
		||||
            ];
 | 
			
		||||
          };
 | 
			
		||||
 | 
			
		||||
          startupPlugins = {
 | 
			
		||||
            general = with pkgs.vimPlugins; [
 | 
			
		||||
              eyeliner-nvim
 | 
			
		||||
              fzf-lua
 | 
			
		||||
              ltex_extra-nvim
 | 
			
		||||
              nvim-lspconfig
 | 
			
		||||
              lsp_lines-nvim
 | 
			
		||||
              lsp-progress-nvim
 | 
			
		||||
              neodev-nvim
 | 
			
		||||
              SchemaStore-nvim
 | 
			
		||||
              nvim-lint
 | 
			
		||||
              conform-nvim
 | 
			
		||||
              luasnip
 | 
			
		||||
              cmp_luasnip
 | 
			
		||||
              nvim-cmp
 | 
			
		||||
              cmp-nvim-lsp
 | 
			
		||||
              cmp-buffer
 | 
			
		||||
              cmp-path
 | 
			
		||||
              plenary-nvim
 | 
			
		||||
              nui-nvim
 | 
			
		||||
              trouble-nvim
 | 
			
		||||
              pkgs.neovimPlugins.shipwright-nvim
 | 
			
		||||
              lush-nvim
 | 
			
		||||
              zenbones-nvim
 | 
			
		||||
              pkgs.neovimPlugins.crazy-node-movement
 | 
			
		||||
              nvim-treesitter.withAllGrammars
 | 
			
		||||
              nvim-treesitter-textobjects
 | 
			
		||||
              # nvim-treesitter-context
 | 
			
		||||
              nvim-ts-context-commentstring
 | 
			
		||||
              treesj
 | 
			
		||||
              sniprun
 | 
			
		||||
              gitsigns-nvim
 | 
			
		||||
              nvim-highlight-colors
 | 
			
		||||
              pkgs.neovimPlugins.tailwind-fold-nvim
 | 
			
		||||
              auto-session
 | 
			
		||||
              nvim-dbee
 | 
			
		||||
              image-nvim
 | 
			
		||||
              pkgs.neovimPlugins.beancount-nvim
 | 
			
		||||
              pkgs.neovimPlugins.nvimkit-nvim
 | 
			
		||||
              codecompanion-nvim
 | 
			
		||||
              pkgs.neovimPlugins.mcphub-nvim
 | 
			
		||||
              copilot-lua
 | 
			
		||||
              copilot-cmp
 | 
			
		||||
              pkgs.neovimPlugins.helm-ls-nvim
 | 
			
		||||
            ];
 | 
			
		||||
          };
 | 
			
		||||
 | 
			
		||||
          optionalPlugins = {
 | 
			
		||||
            general = with pkgs.vimPlugins; [
 | 
			
		||||
            ];
 | 
			
		||||
          };
 | 
			
		||||
 | 
			
		||||
          sharedLibraries = {
 | 
			
		||||
            general = [ ];
 | 
			
		||||
          };
 | 
			
		||||
 | 
			
		||||
          environmentVariables = { };
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
      packageDefinitions = {
 | 
			
		||||
        nvim =
 | 
			
		||||
          { ... }:
 | 
			
		||||
          {
 | 
			
		||||
            settings = {
 | 
			
		||||
              suffix-path = true;
 | 
			
		||||
              suffix-LD = true;
 | 
			
		||||
              wrapRc = true;
 | 
			
		||||
              aliases = [ "vim" ];
 | 
			
		||||
            };
 | 
			
		||||
            categories = {
 | 
			
		||||
              general = true;
 | 
			
		||||
            };
 | 
			
		||||
          };
 | 
			
		||||
      };
 | 
			
		||||
      defaultPackageName = "nvim";
 | 
			
		||||
    in
 | 
			
		||||
 | 
			
		||||
    forEachSystem (
 | 
			
		||||
      system:
 | 
			
		||||
      let
 | 
			
		||||
        nixCatsBuilder = utils.baseBuilder luaPath {
 | 
			
		||||
          inherit
 | 
			
		||||
            nixpkgs
 | 
			
		||||
            system
 | 
			
		||||
            dependencyOverlays
 | 
			
		||||
            extra_pkg_config
 | 
			
		||||
            ;
 | 
			
		||||
        } categoryDefinitions packageDefinitions;
 | 
			
		||||
        defaultPackage = nixCatsBuilder defaultPackageName;
 | 
			
		||||
        pkgs = import nixpkgs { inherit system; };
 | 
			
		||||
      in
 | 
			
		||||
      {
 | 
			
		||||
        packages = utils.mkAllWithDefault defaultPackage;
 | 
			
		||||
 | 
			
		||||
        devShells = {
 | 
			
		||||
          default = pkgs.mkShell {
 | 
			
		||||
            name = defaultPackageName;
 | 
			
		||||
            packages = [ defaultPackage ];
 | 
			
		||||
            inputsFrom = [ ];
 | 
			
		||||
            shellHook = '''';
 | 
			
		||||
          };
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
      }
 | 
			
		||||
    )
 | 
			
		||||
    // (
 | 
			
		||||
      let
 | 
			
		||||
        nixosModule = utils.mkNixosModules {
 | 
			
		||||
          moduleNamespace = [ defaultPackageName ];
 | 
			
		||||
          inherit
 | 
			
		||||
            defaultPackageName
 | 
			
		||||
            dependencyOverlays
 | 
			
		||||
            luaPath
 | 
			
		||||
            categoryDefinitions
 | 
			
		||||
            packageDefinitions
 | 
			
		||||
            extra_pkg_config
 | 
			
		||||
            nixpkgs
 | 
			
		||||
            ;
 | 
			
		||||
        };
 | 
			
		||||
        homeModule = utils.mkHomeModules {
 | 
			
		||||
          moduleNamespace = [ defaultPackageName ];
 | 
			
		||||
          inherit
 | 
			
		||||
            defaultPackageName
 | 
			
		||||
            dependencyOverlays
 | 
			
		||||
            luaPath
 | 
			
		||||
            categoryDefinitions
 | 
			
		||||
            packageDefinitions
 | 
			
		||||
            extra_pkg_config
 | 
			
		||||
            nixpkgs
 | 
			
		||||
            ;
 | 
			
		||||
        };
 | 
			
		||||
      in
 | 
			
		||||
      {
 | 
			
		||||
 | 
			
		||||
        overlays = utils.makeOverlays luaPath {
 | 
			
		||||
          inherit nixpkgs dependencyOverlays extra_pkg_config;
 | 
			
		||||
        } categoryDefinitions packageDefinitions defaultPackageName;
 | 
			
		||||
 | 
			
		||||
        nixosModules.default = nixosModule;
 | 
			
		||||
        homeModules.default = homeModule;
 | 
			
		||||
 | 
			
		||||
        inherit utils nixosModule homeModule;
 | 
			
		||||
        inherit (utils) templates;
 | 
			
		||||
      }
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1 @@
 | 
			
		|||
vim.opt.matchpairs:append("=:;")
 | 
			
		||||
| 
						 | 
				
			
			@ -1,15 +0,0 @@
 | 
			
		|||
-- NOTE: May want to move this, as it is more specific to wiki than to pandoc
 | 
			
		||||
vim.api.nvim_create_user_command("AnkiDeck", function()
 | 
			
		||||
  local handle = io.popen("get-anki-decks")
 | 
			
		||||
  local decks = {}
 | 
			
		||||
  for line in handle:lines() do
 | 
			
		||||
    table.insert(decks, line)
 | 
			
		||||
  end
 | 
			
		||||
  handle:close()
 | 
			
		||||
 | 
			
		||||
  vim.ui.select(decks, { prompt = "Select Anki deck" }, function(choice)
 | 
			
		||||
    if choice then
 | 
			
		||||
      vim.api.nvim_put({ choice }, "", true, true)
 | 
			
		||||
    end
 | 
			
		||||
  end)
 | 
			
		||||
end, {})
 | 
			
		||||
| 
						 | 
				
			
			@ -1,3 +1,4 @@
 | 
			
		|||
vim.cmd([[
 | 
			
		||||
" Anki helper functions
 | 
			
		||||
 | 
			
		||||
" Convert cloze note to regular text
 | 
			
		||||
| 
						 | 
				
			
			@ -20,3 +21,4 @@
 | 
			
		|||
 | 
			
		||||
au FileType pandoc com! -range AnkiRemoveAllClozes :%s/\%V{{c\d\+:://ge | :%s/\%V}}//ge | :%s/\%VSTART\nCloze\n//ge | :%s/\%VEND\n//ge
 | 
			
		||||
au FileType pandoc com! -range AnkiRemoveSelectedClozes :%s/\%V{{c\d\+:://ge | :%s/\%V}}//ge | :%s/\%VSTART\nCloze\n//ge | :%s/\%VEND\n//ge
 | 
			
		||||
]])
 | 
			
		||||
| 
						 | 
				
			
			@ -1,3 +1,20 @@
 | 
			
		|||
-- NOTE: May want to move this, as it is more specific to wiki than to pandoc
 | 
			
		||||
vim.api.nvim_create_user_command("AnkiDeck", function()
 | 
			
		||||
  local handle = io.popen("get-anki-decks")
 | 
			
		||||
  local decks = {}
 | 
			
		||||
  for line in handle:lines() do
 | 
			
		||||
    table.insert(decks, line)
 | 
			
		||||
  end
 | 
			
		||||
  handle:close()
 | 
			
		||||
 | 
			
		||||
  vim.ui.select(decks, { prompt = "Select Anki deck" }, function(choice)
 | 
			
		||||
    if choice then
 | 
			
		||||
      vim.api.nvim_put({ choice }, "", true, true)
 | 
			
		||||
    end
 | 
			
		||||
  end)
 | 
			
		||||
end, {})
 | 
			
		||||
 | 
			
		||||
vim.cmd([[
 | 
			
		||||
set cc=81
 | 
			
		||||
set cocu=""
 | 
			
		||||
func! GetContext()
 | 
			
		||||
| 
						 | 
				
			
			@ -17,3 +34,4 @@ func! GetContext()
 | 
			
		|||
  endif
 | 
			
		||||
endfunc
 | 
			
		||||
com! -nargs=0 GetContext :call GetContext()
 | 
			
		||||
]])
 | 
			
		||||
| 
						 | 
				
			
			@ -1,3 +1,4 @@
 | 
			
		|||
vim.cmd([[
 | 
			
		||||
"
 | 
			
		||||
" Source: https://wiki.call-cc.org/vim / Jonathan Palardy
 | 
			
		||||
"
 | 
			
		||||
| 
						 | 
				
			
			@ -23,3 +24,4 @@ fun! Scheme_eval_defun()
 | 
			
		|||
    call Scheme_send_sexp(@")
 | 
			
		||||
    call setpos('.', pos)
 | 
			
		||||
endfun
 | 
			
		||||
]])
 | 
			
		||||
| 
						 | 
				
			
			@ -1,9 +1,28 @@
 | 
			
		|||
require("vim")
 | 
			
		||||
require("nixCatsUtils").setup({ non_nix_value = true }) -- https://github.com/BirdeeHub/nixCats-nvim/blob/77dffad8235eb77684fcb7599487c8e9f23d5b8f/templates/example/init.lua
 | 
			
		||||
 | 
			
		||||
vim.cmd([[
 | 
			
		||||
set termguicolors
 | 
			
		||||
set bg=light
 | 
			
		||||
hi Normal ctermbg=none guibg=NONE
 | 
			
		||||
]])
 | 
			
		||||
 | 
			
		||||
require("base")
 | 
			
		||||
require("cursor")
 | 
			
		||||
require("fold")
 | 
			
		||||
require("netrw")
 | 
			
		||||
require("ftdetect")
 | 
			
		||||
require("plug")
 | 
			
		||||
require("pandoc")
 | 
			
		||||
require("keymaps")
 | 
			
		||||
require("highlight")
 | 
			
		||||
require("paq-setup")
 | 
			
		||||
require("statusline")
 | 
			
		||||
require("diagnostic")
 | 
			
		||||
require("utils")
 | 
			
		||||
require("zk")
 | 
			
		||||
require("reload")
 | 
			
		||||
 | 
			
		||||
require("paq-setup") -- when not on nixCats
 | 
			
		||||
 | 
			
		||||
-- vim.opt.background = "dark"
 | 
			
		||||
-- vim.opt.laststatus = 3
 | 
			
		||||
vim.opt.laststatus = 3
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,7 +1,5 @@
 | 
			
		|||
" General config {{{
 | 
			
		||||
"
 | 
			
		||||
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
 | 
			
		||||
| 
						 | 
				
			
			@ -28,6 +26,5 @@ 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+=~/.vim/thesaurus/mthesaur.txt
 | 
			
		||||
 | 
			
		||||
" }}}
 | 
			
		||||
" set thesaurus+=./thesaurus/mthesaur.txt " FIXME
 | 
			
		||||
]])
 | 
			
		||||
| 
						 | 
				
			
			@ -1,3 +1,4 @@
 | 
			
		|||
vim.cmd([[
 | 
			
		||||
" Taken from /usr/share/vim/vim90/defaults.vim
 | 
			
		||||
augroup vimStartup
 | 
			
		||||
  au!
 | 
			
		||||
| 
						 | 
				
			
			@ -12,3 +13,4 @@ augroup vimStartup
 | 
			
		|||
    \ | endif
 | 
			
		||||
 | 
			
		||||
augroup END
 | 
			
		||||
]])
 | 
			
		||||
| 
						 | 
				
			
			@ -1,3 +1,4 @@
 | 
			
		|||
vim.cmd([[
 | 
			
		||||
" Folds {{{
 | 
			
		||||
set foldmethod=marker
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -22,3 +23,4 @@ augroup filetype_snippets
 | 
			
		|||
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" })
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,3 +1,5 @@
 | 
			
		|||
vim.cmd([[
 | 
			
		||||
let g:netrw_winsize = 30
 | 
			
		||||
let g:netrw_liststyle=3
 | 
			
		||||
let g:netrw_banner = 0
 | 
			
		||||
]])
 | 
			
		||||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			@ -1,3 +1,4 @@
 | 
			
		|||
vim.cmd([[
 | 
			
		||||
fu! Compile()
 | 
			
		||||
  if expand('%:e') == "md" 
 | 
			
		||||
    :silent exec "!pandoc % -s -o /tmp/op.pdf &"
 | 
			
		||||
| 
						 | 
				
			
			@ -8,3 +9,4 @@ 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" },
 | 
			
		||||
})
 | 
			
		||||
-- }}}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,7 +1,4 @@
 | 
			
		|||
" Plugins {{{
 | 
			
		||||
 | 
			
		||||
" Plug setup {{{
 | 
			
		||||
 | 
			
		||||
vim.cmd([[
 | 
			
		||||
call plug#begin()
 | 
			
		||||
Plug 'machakann/vim-sandwich'
 | 
			
		||||
Plug 'Shougo/context_filetype.vim'
 | 
			
		||||
| 
						 | 
				
			
			@ -31,4 +28,4 @@ Plug 'goerz/jupytext.vim'
 | 
			
		|||
" OpenSCAD
 | 
			
		||||
Plug 'sirtaj/vim-openscad'
 | 
			
		||||
call plug#end()
 | 
			
		||||
" }}}
 | 
			
		||||
]])
 | 
			
		||||
| 
						 | 
				
			
			@ -1,5 +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
 | 
			
		||||
]])
 | 
			
		||||
| 
						 | 
				
			
			@ -1,3 +1,4 @@
 | 
			
		|||
vim.cmd([[
 | 
			
		||||
se ls=2
 | 
			
		||||
se stl=\ %0*%n
 | 
			
		||||
se stl+=\ %m
 | 
			
		||||
| 
						 | 
				
			
			@ -5,3 +6,4 @@ se stl+=\ %y%0*
 | 
			
		|||
se stl+=\ %<%F
 | 
			
		||||
se stl+=\ %0*%=%5l%*
 | 
			
		||||
se stl+=%0*/%L%*
 | 
			
		||||
]])
 | 
			
		||||
| 
						 | 
				
			
			@ -1,6 +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"
 | 
			
		||||
]])
 | 
			
		||||
| 
						 | 
				
			
			@ -1,3 +1,4 @@
 | 
			
		|||
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'
 | 
			
		||||
| 
						 | 
				
			
			@ -18,3 +19,4 @@ endfunction
 | 
			
		|||
command! ToggleZKPreview call ToggleZKPreview()
 | 
			
		||||
 | 
			
		||||
nn <leader>o :ToggleZKPreview<cr> :!xdg-open http://localhost:8080/%:t:r.html & <cr>
 | 
			
		||||
]])
 | 
			
		||||
| 
						 | 
				
			
			@ -27,7 +27,7 @@ return {
 | 
			
		|||
    t("flex-wrap: wrap;"),
 | 
			
		||||
    i(0),
 | 
			
		||||
  }),
 | 
			
		||||
  s({ trig = "dfc", dscr = "Display flex column" }, {
 | 
			
		||||
  s({ trig = "dfc", dscr = "Add 'flex-direction: column;'" }, {
 | 
			
		||||
    t("display: flex;"),
 | 
			
		||||
    t("flex-direction: column;"),
 | 
			
		||||
    i(0),
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -5,6 +5,909 @@ local d = ls.dynamic_node
 | 
			
		|||
local sn = ls.snippet_node
 | 
			
		||||
local fmta = require("luasnip.extras.fmt").fmta
 | 
			
		||||
 | 
			
		||||
-- Original .snippets file - TODO: Migrate to lua snippets
 | 
			
		||||
-- ```viml
 | 
			
		||||
-- global !p
 | 
			
		||||
-- from datetime import datetime
 | 
			
		||||
-- from math import factorial
 | 
			
		||||
-- import subprocess
 | 
			
		||||
-- import re
 | 
			
		||||
-- import sys
 | 
			
		||||
--
 | 
			
		||||
-- ZOTERO_BASE = "http://127.0.0.1:23119/better-bibtex/cayw"
 | 
			
		||||
-- FENCES = {
 | 
			
		||||
-- 	"i": "idea",
 | 
			
		||||
-- 	"q": "question",
 | 
			
		||||
-- 	"n": "note",
 | 
			
		||||
-- 	"t": "thought",
 | 
			
		||||
-- }
 | 
			
		||||
--
 | 
			
		||||
-- def math_inline():
 | 
			
		||||
-- 	return vim.command_output('GetContext') == 'math_inline'
 | 
			
		||||
--
 | 
			
		||||
-- def math_block():
 | 
			
		||||
-- 	return vim.command_output('GetContext') == 'math_block'
 | 
			
		||||
--
 | 
			
		||||
-- def math():
 | 
			
		||||
-- 	return math_inline() or math_block()
 | 
			
		||||
--
 | 
			
		||||
-- def code_block():
 | 
			
		||||
-- 	return vim.command_output('GetContext') == 'pandocDelimitedCodeBlock'
 | 
			
		||||
--
 | 
			
		||||
-- def code_inline():
 | 
			
		||||
-- 	return vim.command_output('GetContext') == 'pandocNoFormatted'
 | 
			
		||||
--
 | 
			
		||||
-- def code():
 | 
			
		||||
-- 	return code_inline() or code_block()
 | 
			
		||||
--
 | 
			
		||||
-- def slugify(text):
 | 
			
		||||
-- 	return re.sub('\s+', '-', text.lower())
 | 
			
		||||
--
 | 
			
		||||
-- def linkify(text, link):
 | 
			
		||||
-- 	return f"[{text}]({link})"
 | 
			
		||||
--
 | 
			
		||||
-- def zot(action):
 | 
			
		||||
-- 		if action == "get_title":
 | 
			
		||||
-- 			cmd = f"curl -s '{ZOTERO_BASE}?format=json&selected=1' | jq '.[].title' -r"
 | 
			
		||||
-- 		elif action == "get_citekey":
 | 
			
		||||
-- 			cmd = f"curl -s '{ZOTERO_BASE}?format=pandoc&selected=1'"
 | 
			
		||||
-- 		elif action == "get_citekey_brackets":
 | 
			
		||||
-- 			cmd = f"curl -s '{ZOTERO_BASE}?format=pandoc&selected=1&brackets=1'"
 | 
			
		||||
-- 		elif action == "get_link":
 | 
			
		||||
-- 			link_path = re.sub("^@", "", zot("get_citekey"))
 | 
			
		||||
-- 			link_title = zot("get_title")
 | 
			
		||||
-- 			link = linkify(link_title, link_path)
 | 
			
		||||
-- 			return link
 | 
			
		||||
-- 		elif action == "get_file":
 | 
			
		||||
-- 			link_path = re.sub("^@", "", zot("get_citekey"))
 | 
			
		||||
-- 			link_title = zot("get_title")
 | 
			
		||||
-- 			link = linkify(link_title, f"file://{link_path}.pdf")
 | 
			
		||||
-- 			return link
 | 
			
		||||
-- 		else:
 | 
			
		||||
-- 			return "Zotero action not found"
 | 
			
		||||
-- 		return subprocess.check_output(cmd, shell=True).decode("utf-8").strip()
 | 
			
		||||
-- endglobal
 | 
			
		||||
--
 | 
			
		||||
-- snippet ctx "Context" i
 | 
			
		||||
-- `!p snip.rv = vim.command_output('GetContext')`
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- # General markdown
 | 
			
		||||
--
 | 
			
		||||
-- snippet ^h "Markdown header" r
 | 
			
		||||
-- # $1
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet ^sec "Markdown section" r
 | 
			
		||||
-- ## $1
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet ^ssec "Markdown subsection" r
 | 
			
		||||
-- ### $1
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet ^sex "Markdown example section" r
 | 
			
		||||
-- ## Example: $1
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet ^ssex "Markdown example subsection" r
 | 
			
		||||
-- ### Example: $1
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- # Zettelkasten templating
 | 
			
		||||
--
 | 
			
		||||
-- snippet nl
 | 
			
		||||
-- *nld*: $1
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet eng
 | 
			
		||||
-- *eng*: $1
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet fr
 | 
			
		||||
-- *fra*: $1
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet (de
 | 
			
		||||
-- *deu*: $1
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet (nl
 | 
			
		||||
-- (*nld*: $1)
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet (eng
 | 
			
		||||
-- (*eng*: $1)
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet (fr
 | 
			
		||||
-- (*fra*: $1)
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet (de
 | 
			
		||||
-- (*deu*: $1)
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet in
 | 
			
		||||
-- (In [$1]($2))$3
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet liwhat "What?" A
 | 
			
		||||
-- `!p snip.rv = "* [What?](" + snip.basename + "_what)"`$1
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet liwhy "Why?" A
 | 
			
		||||
-- `!p snip.rv = "* [Why?](" + snip.basename + "_why)"`$1
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet < "Comment (html)"
 | 
			
		||||
-- <!-- $1 -->$2
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet <. "Comment (html) ..." i
 | 
			
		||||
-- <!-- ... -->$1
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet <t "Thought (html)" i
 | 
			
		||||
-- <!--:::thought
 | 
			
		||||
-- $1
 | 
			
		||||
-- :::-->
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet <q "Question (html)" i
 | 
			
		||||
-- <!--:::question
 | 
			
		||||
-- $1
 | 
			
		||||
-- :::-->
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet <i "Idea (html)" i
 | 
			
		||||
-- <!--:::idea
 | 
			
		||||
-- $1
 | 
			
		||||
-- :::-->
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet <n "Note (html)" i
 | 
			
		||||
-- <!--:::note
 | 
			
		||||
-- $1
 | 
			
		||||
-- :::-->
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet td "Todo"
 | 
			
		||||
-- TODO${1:: $2}
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet ref "References"
 | 
			
		||||
-- <!--references-->
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet sort "Sort"
 | 
			
		||||
-- <!--sort-->
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet foot "Footnotes"
 | 
			
		||||
-- <!--footnotes-->
 | 
			
		||||
-- [^0]:
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet def "Definition"
 | 
			
		||||
-- **Definition${1:: $2}**${3: [${4:citation}${5:, ${6:pointer}}]}
 | 
			
		||||
--
 | 
			
		||||
-- $7
 | 
			
		||||
--
 | 
			
		||||
-- ___
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet theo "Theorem"
 | 
			
		||||
-- **Theorem${1:: $2}**${3: [${4:citation}${5:, ${6:pointer}}]}
 | 
			
		||||
--
 | 
			
		||||
-- $7
 | 
			
		||||
--
 | 
			
		||||
-- ${8/(\w+).*/**Theorem** \n\n.../}
 | 
			
		||||
--
 | 
			
		||||
-- ___
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet prop "Property"
 | 
			
		||||
-- **Property $1** [@]
 | 
			
		||||
--
 | 
			
		||||
-- $2
 | 
			
		||||
--
 | 
			
		||||
-- ___
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet lemm "Lemma"
 | 
			
		||||
-- **Lemma $1** [@]
 | 
			
		||||
--
 | 
			
		||||
-- $2
 | 
			
		||||
--
 | 
			
		||||
-- ___
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet coro "Corollary"
 | 
			
		||||
-- **Corollary $1** [@]
 | 
			
		||||
--
 | 
			
		||||
-- $2
 | 
			
		||||
--
 | 
			
		||||
-- ___
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- # Greek symbols
 | 
			
		||||
--
 | 
			
		||||
-- context "math()"
 | 
			
		||||
-- snippet alpha "Alpha"
 | 
			
		||||
-- \\alpha
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- context "math()"
 | 
			
		||||
-- snippet beta "Beta"
 | 
			
		||||
-- \\beta
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- context "math()"
 | 
			
		||||
-- snippet gamma "Gamma"
 | 
			
		||||
-- \\gamma
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- context "math()"
 | 
			
		||||
-- snippet delta "Delta"
 | 
			
		||||
-- \\delta
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- context "math()"
 | 
			
		||||
-- snippet epsilon "Epsilon"
 | 
			
		||||
-- \\epsilonilon
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- context "math()"
 | 
			
		||||
-- snippet zeta "Zeta"
 | 
			
		||||
-- \\zeta
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- context "math()"
 | 
			
		||||
-- snippet eta "Eta"
 | 
			
		||||
-- \\eta
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- context "math()"
 | 
			
		||||
-- snippet theta "Theta"
 | 
			
		||||
-- \\theta
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- context "math()"
 | 
			
		||||
-- snippet iota "Iota"
 | 
			
		||||
-- \\iota
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- context "math()"
 | 
			
		||||
-- snippet kappa "Kappa"
 | 
			
		||||
-- \\kappa
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- context "math()"
 | 
			
		||||
-- snippet lambda "Lambda" i
 | 
			
		||||
-- \\lambda
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- context "math()"
 | 
			
		||||
-- snippet mu "Mu"
 | 
			
		||||
-- \\mu
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- context "math()"
 | 
			
		||||
-- snippet nu "Nu"
 | 
			
		||||
-- \\nu
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- context "math()"
 | 
			
		||||
-- snippet xi "Xi"
 | 
			
		||||
-- \\xi
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- context "math()"
 | 
			
		||||
-- snippet omicron "Omicron"
 | 
			
		||||
-- \\omicron
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- context "math()"
 | 
			
		||||
-- snippet pi "Pi"
 | 
			
		||||
-- \\pi
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- context "math()"
 | 
			
		||||
-- snippet rho "Rho"
 | 
			
		||||
-- \\rho
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- context "math()"
 | 
			
		||||
-- snippet sigma "Sigma"
 | 
			
		||||
-- \\sigma
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- context "math()"
 | 
			
		||||
-- snippet tau "Tau"
 | 
			
		||||
-- \\tau
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- context "math()"
 | 
			
		||||
-- snippet upsilon "Upsilon"
 | 
			
		||||
-- \\upsilon
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- context "math()"
 | 
			
		||||
-- snippet phi "Phi"
 | 
			
		||||
-- \\phi
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- context "math()"
 | 
			
		||||
-- snippet chi "Chi"
 | 
			
		||||
-- \\chi
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- context "math()"
 | 
			
		||||
-- snippet psi "Psi"
 | 
			
		||||
-- \\psi
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- context "math()"
 | 
			
		||||
-- snippet omega "Omega"
 | 
			
		||||
-- \\omega
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- context "math()"
 | 
			
		||||
-- snippet Gamma "Gamma"
 | 
			
		||||
-- \\Gamma
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- context "math()"
 | 
			
		||||
-- snippet Delta "Delta"
 | 
			
		||||
-- \\Delta
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- context "math()"
 | 
			
		||||
-- snippet Theta "Theta"
 | 
			
		||||
-- \\Theta
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- context "math()"
 | 
			
		||||
-- snippet Lambda "Lambda"
 | 
			
		||||
-- \\Lambda
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- context "math()"
 | 
			
		||||
-- snippet Xi "Xi"
 | 
			
		||||
-- \\Xi
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- context "math()"
 | 
			
		||||
-- snippet Pi "Pi"
 | 
			
		||||
-- \\Pi
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- context "math()"
 | 
			
		||||
-- snippet Sigma "Sigma"
 | 
			
		||||
-- \\Sigma
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- context "math()"
 | 
			
		||||
-- snippet Upsilon "Upsilon"
 | 
			
		||||
-- \\Upsilon
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- context "math()"
 | 
			
		||||
-- snippet Phi "Phi"
 | 
			
		||||
-- \\Phi
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- context "math()"
 | 
			
		||||
-- snippet Psi "Psi"
 | 
			
		||||
-- \\Psi
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- context "math()"
 | 
			
		||||
-- snippet Omega "Omega"
 | 
			
		||||
-- \\Omega
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet asaw "Als en slechts als (woorden)" i
 | 
			
		||||
-- als en slechts als
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet iffw "If and only if (words)" i
 | 
			
		||||
-- if and only if
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet asas "Als en slechts als (shorthand)" i
 | 
			
		||||
-- **asa**
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet iffs "If and only if (shorthand)" i
 | 
			
		||||
-- **iff**
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet beg "Begin"
 | 
			
		||||
-- \begin{$1}
 | 
			
		||||
-- $2
 | 
			
		||||
-- \end{$1}
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet align "" i
 | 
			
		||||
-- \begin{align}
 | 
			
		||||
-- $1
 | 
			
		||||
-- \end{align}
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet cases "" i
 | 
			
		||||
-- \begin{cases}
 | 
			
		||||
-- $1 \\\\
 | 
			
		||||
-- $2
 | 
			
		||||
-- \end{cases}
 | 
			
		||||
-- $3
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet tik "Tikzpicture" i
 | 
			
		||||
-- \begin{tikzpicture}
 | 
			
		||||
-- $1
 | 
			
		||||
-- \end{tikzpicture}
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet matrix "Matrix" i
 | 
			
		||||
-- \begin{bmatrix}
 | 
			
		||||
-- $1
 | 
			
		||||
-- \end{bmatrix}
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- # Insert anything after m/M in math mode
 | 
			
		||||
--
 | 
			
		||||
-- snippet "(\b)m(.*)" "MathJax" r
 | 
			
		||||
-- `!p snip.rv = match.group(1) + "$" + match.group(2) + "$"`
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet (\b)M(.*) "MathJax block" irw
 | 
			
		||||
-- $$
 | 
			
		||||
-- `!p snip.rv = match.group(2)`
 | 
			
		||||
-- $$
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- # Calligraphic letters
 | 
			
		||||
--
 | 
			
		||||
-- context "math()"
 | 
			
		||||
-- snippet c([A-z]) "Calligraphic A" r
 | 
			
		||||
-- `!p snip.rv = "\\mathcal{" + match.group(1) + "}"`$1
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- # Subscripts
 | 
			
		||||
--
 | 
			
		||||
-- context "math()"
 | 
			
		||||
-- snippet '([A-z])(\w+)' "Subscripts" irw
 | 
			
		||||
-- `!p snip.rv = match.group(1) + '_' + match.group(2) if len(match.group(2)) == 1 else match.group(1) + '_{' + match.group(2) + '}'`$1
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- # MathJax
 | 
			
		||||
--
 | 
			
		||||
-- snippet fa "For all" i
 | 
			
		||||
-- \forall
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet frac "" i
 | 
			
		||||
-- \frac{$1}{$2}$3
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet set "" i
 | 
			
		||||
-- \\{$1\\}$2
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet N "" i
 | 
			
		||||
-- \mathbb{N}
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet N0 "" i
 | 
			
		||||
-- \mathbb{N}_0
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet N+ "" i
 | 
			
		||||
-- \mathbb{N}^+
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet Z "" i
 | 
			
		||||
-- \mathbb{Z}
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet Z0 "" i
 | 
			
		||||
-- \mathbb{Z}_0
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet Z+ "" i
 | 
			
		||||
-- \mathbb{Z}^+
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet R "" i
 | 
			
		||||
-- \mathbb{R}
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet R0 "" i
 | 
			
		||||
-- \mathbb{R}_0
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet R+ "" i
 | 
			
		||||
-- \mathbb{R}^+
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet C "" i
 | 
			
		||||
-- \mathbb{C}
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet lim "" i
 | 
			
		||||
-- \lim_{$1}$2
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet limn "" i
 | 
			
		||||
-- \lim_{n \to \infty}$2
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet binom "" i
 | 
			
		||||
-- \binom{$1}{$2}$3
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet andmath "description" i
 | 
			
		||||
-- \text{ and }
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet enmath "description" i
 | 
			
		||||
-- \text{ en }
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet lra "MathJax: long right arrow" i
 | 
			
		||||
-- \longrightarrow
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet Ra "MathJax: right arrow" i
 | 
			
		||||
-- \Rightarrow
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet Im "MathJax: image operator" i
 | 
			
		||||
-- \operatorname{Im}
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet ggd "Grootste gemene deler" i
 | 
			
		||||
-- \operatorname{ggd}
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet fl "Floating point" i
 | 
			
		||||
-- \operatorname{fl}
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet Var "Variance" i
 | 
			
		||||
-- \operatorname{Var}
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet E "Expectation" i
 | 
			
		||||
-- \operatorname{E}
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet Cov "Covariance" i
 | 
			
		||||
-- \operatorname{Cov}
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- context "math()" i
 | 
			
		||||
-- snippet ntup "Alpha"
 | 
			
		||||
-- (x_1, \ldots, x_n)
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet mxn "Matrix" i
 | 
			
		||||
-- m \times n
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet mxn- "Matrix" i
 | 
			
		||||
-- $m \times n$-matrix
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet nxn "Matrix" i
 | 
			
		||||
-- n \times n
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet det "Determinant" i
 | 
			
		||||
-- \operatorname{det}(${1:A})$2
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet det| "Determinant alternative notation" i
 | 
			
		||||
-- |${1:A}|$2
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet Span "Span" i
 | 
			
		||||
-- \operatorname{Span}\\{$1\\}$2
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet Nul "Null" i
 | 
			
		||||
-- \operatorname{Nul}($1)$2
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet Col "Column space" i
 | 
			
		||||
-- \operatorname{Col}($1)$2
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet kern "Kernel" i
 | 
			
		||||
-- \operatorname{kern}($1)$2
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- context "math()"
 | 
			
		||||
-- snippet vec "Vector" i
 | 
			
		||||
-- \mathbf{$1}$2
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- context "math()"
 | 
			
		||||
-- snippet vec([A-z]) "Vector ..." r
 | 
			
		||||
-- `!p snip.rv = "\\mathbf{" + match.group(1) + "}"`$1
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet v1tovp "Vectors v indexed from 1 to p"
 | 
			
		||||
-- \mathbf{v_1},...,\mathbf{v_p}$2
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet a1toan "Vectors a indexed from 1 to n"
 | 
			
		||||
-- \mathbf{a_1},...,\mathbf{v_n}$2
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet .. "Dot dot dot" i
 | 
			
		||||
-- \dots $1
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet text "MathJax text" i
 | 
			
		||||
-- \text{$1}$2
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet leq "Less than or equal to" i
 | 
			
		||||
-- \leq
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet leq "Greater than or equal to" i
 | 
			
		||||
-- \geq
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet eat "Evaluated at" i
 | 
			
		||||
-- {\biggr\rvert}_{$1}$2
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet sketch "Link a sketch" i
 | 
			
		||||
-- [$1](file:///home/h/sketches/$2)
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet deck "Get anki deck"
 | 
			
		||||
-- `get-anki-decks`
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- # snippet ` "Inline code" i
 | 
			
		||||
-- # `$1`
 | 
			
		||||
-- # endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- # Escape backticks
 | 
			
		||||
-- snippet `` "Code block" bA
 | 
			
		||||
-- \`\`\`$1
 | 
			
		||||
-- $2
 | 
			
		||||
-- \`\`\`
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet `tex "Latex block (see latex filter)" bA
 | 
			
		||||
-- \`\`\`{.tex}
 | 
			
		||||
-- $1
 | 
			
		||||
-- \`\`\`
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet `tik "Tikz block (see tikz filter)" bA
 | 
			
		||||
-- \`\`\`{.tex}
 | 
			
		||||
-- \\begin{tikzpicture}
 | 
			
		||||
-- $1
 | 
			
		||||
-- \\end{tikzpicture}
 | 
			
		||||
-- \`\`\`
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet task "Task" i
 | 
			
		||||
-- * [ ] $1 -- pro:$2
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet "(\b)fn(\d+)" "" ir
 | 
			
		||||
-- `!p snip.rv = snip.basename + "_" + match.group(2).zfill(2)`$1
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet "ch(\d+)" "Link chapter" ir
 | 
			
		||||
-- `!p
 | 
			
		||||
-- num_str = match.group(1).zfill(2)
 | 
			
		||||
-- title = 3*"."
 | 
			
		||||
-- link = snip.basename + "_" + num_str
 | 
			
		||||
-- snip.rv = num_str + ". " + linkify(title, link)
 | 
			
		||||
-- `
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet "ch(\d+)to(\d+)" "Link chapters ... to ..." irA
 | 
			
		||||
-- `!p
 | 
			
		||||
-- for i in range(int(match.group(1)), int(match.group(2)) + 1):
 | 
			
		||||
-- 	num_str = str(i).zfill(2)
 | 
			
		||||
-- 	title = 3*"."
 | 
			
		||||
-- 	link = snip.basename + "_" + num_str
 | 
			
		||||
-- 	snip.rv += num_str + ". " + linkify(title, link) + "\n"
 | 
			
		||||
-- `
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet "sec([\sA-z]+)" "Link section titled ..." r
 | 
			
		||||
-- `!p
 | 
			
		||||
-- snip.rv = "* " + linkify(match.group(1), f"{snip.basename}_{slugify(match.group(1))}")
 | 
			
		||||
-- `
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet cp(\d+) "Comment current page (and date)" r
 | 
			
		||||
-- `!p snip.rv = "<!--" + datetime.now().strftime("%Y-%m-%d") + " p. " + match.group(1) + "-->"`
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet (\d+)! "Factorial of ..." r
 | 
			
		||||
-- `!p snip.rv = factorial(int(match.group(1)))`
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet d "Date"
 | 
			
		||||
-- `!p snip.rv = datetime.now().strftime("%Y-%m-%d")`
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet :(\w*) "Fence" r
 | 
			
		||||
-- `!p snip.rv += ":::" + FENCES.get(match.group(1) or "", "") + "\n" `$1
 | 
			
		||||
-- `!p snip.rv += ":::"`$2
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet \[(\w*) "Fence inline" ir
 | 
			
		||||
-- `!p snip.rv += "["`$1`!p snip.rv += "]{." + FENCES.get(match.group(1) or "", "") + "}"`$2
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet ^eg "Example" r
 | 
			
		||||
-- E.g. $1
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- # E.g. after list (or list preceded by space)
 | 
			
		||||
-- snippet (\*\s|\*)eg "Example" r
 | 
			
		||||
-- * E.g. $1
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- # E.g. after dot (or dot preceded by space)
 | 
			
		||||
-- snippet (\.\s|\.)eg "Example" r
 | 
			
		||||
-- . E.g. $1
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet (?<!^|\*\s|\*|\.\s|\.)eg "Example" r
 | 
			
		||||
-- e.g. $1
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- # Zettelkasten to Anki
 | 
			
		||||
--
 | 
			
		||||
-- snippet td "TARGET DECK: <Deck name>"
 | 
			
		||||
-- TARGET DECK: $1::$2
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet clo "Cloze"
 | 
			
		||||
-- START
 | 
			
		||||
-- Cloze
 | 
			
		||||
-- ${0:${VISUAL}}$1
 | 
			
		||||
-- END
 | 
			
		||||
-- $2
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet clos "Cloze start"
 | 
			
		||||
-- START
 | 
			
		||||
-- Cloze
 | 
			
		||||
-- $1
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet cloe "Cloze end"
 | 
			
		||||
-- END
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet clod
 | 
			
		||||
-- START
 | 
			
		||||
-- Cloze
 | 
			
		||||
-- **Definition$1**
 | 
			
		||||
--
 | 
			
		||||
-- $2
 | 
			
		||||
-- END
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet clop
 | 
			
		||||
-- START
 | 
			
		||||
-- Cloze
 | 
			
		||||
-- **Property$1**
 | 
			
		||||
--
 | 
			
		||||
-- $2
 | 
			
		||||
-- END
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet clot
 | 
			
		||||
-- START
 | 
			
		||||
-- Cloze
 | 
			
		||||
-- **Theorem$1**
 | 
			
		||||
--
 | 
			
		||||
-- $2
 | 
			
		||||
-- END
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet clol
 | 
			
		||||
-- START
 | 
			
		||||
-- Cloze
 | 
			
		||||
-- **Lemma$1**
 | 
			
		||||
--
 | 
			
		||||
-- $2
 | 
			
		||||
-- END
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet "c(\d+)" "Cloze <number>" r
 | 
			
		||||
-- {{c`!p snip.rv = int(match.group(1))`::${0:${VISUAL}}$1}}$2
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- # Match preceded by whitespace or start of line
 | 
			
		||||
-- snippet (?<!\S)z($|t|l|z|o|\.) "Zotero" r
 | 
			
		||||
-- `!p
 | 
			
		||||
--
 | 
			
		||||
-- ACTIONS = {
 | 
			
		||||
-- 	"": "get_citekey",
 | 
			
		||||
-- 	"t": "get_title",
 | 
			
		||||
-- 	"l": "get_link",
 | 
			
		||||
-- 	"z": "get_citekey_brackets",
 | 
			
		||||
-- 	"o": "get_file",
 | 
			
		||||
-- }
 | 
			
		||||
--
 | 
			
		||||
-- snip.rv = zot(ACTIONS.get(match.group(1)))
 | 
			
		||||
-- `
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet zq "Zotero quote" r
 | 
			
		||||
-- `!p snip.rv = '>\n> --' + zot("get_citekey_brackets")`
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet acz "According to ..."
 | 
			
		||||
-- `!p snip.rv = "According to " + zot("get_citekey")`
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet azex "As ... explains"
 | 
			
		||||
-- `!p snip.rv = "As " + zot("get_citekey") + " explains, "`
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet iz "In ..."
 | 
			
		||||
-- `!p snip.rv = "In " + zot("get_citekey")`
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet izd "In ...'s definition"
 | 
			
		||||
-- `!p snip.rv = "In " + zot("get_citekey") + "'s definition, "`
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet zintends "... intends to ..." A
 | 
			
		||||
-- `!p snip.rv = zot("get_citekey") + " intends to "`
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet tfol "The following" wA
 | 
			
		||||
-- the following
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet tfolt "It follows that" wA
 | 
			
		||||
-- it follows that
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet ntfol "In the following" wA
 | 
			
		||||
-- in the following
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet algos "algorithms" wA
 | 
			
		||||
-- algorithms
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- snippet algo "algorithm" wA
 | 
			
		||||
-- algorithm
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- # TODO: Make only available in tikzpicture
 | 
			
		||||
-- context "code()"
 | 
			
		||||
-- snippet q "State" w
 | 
			
		||||
-- \node[state] ($1) [] {$2};
 | 
			
		||||
-- endsnippet
 | 
			
		||||
--
 | 
			
		||||
-- context "code()"
 | 
			
		||||
-- snippet q0 "Initial state" w
 | 
			
		||||
-- \node[initial,state] ($1) {$2};
 | 
			
		||||
-- endsnippet
 | 
			
		||||
-- ```
 | 
			
		||||
 | 
			
		||||
-- Taken from https://ejmastnak.com/tutorials/vim-latex/luasnip/#anatomy
 | 
			
		||||
local get_visual = function(_, parent)
 | 
			
		||||
  if #parent.snippet.env.LS_SELECT_RAW > 0 then
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,24 @@
 | 
			
		|||
local ls = require("luasnip")
 | 
			
		||||
local s = ls.snippet
 | 
			
		||||
local t = ls.text_node
 | 
			
		||||
local i = ls.insert_node
 | 
			
		||||
 | 
			
		||||
return {
 | 
			
		||||
  s("reqtrace", t({ "(#%require racket/trace)" })),
 | 
			
		||||
  s("strln", t({ "(string-length " }), i(1), t({ ")" })),
 | 
			
		||||
  s("impb", t({ "(import (rnrs base (6))", "        (rnrs io simple" }), i(0), t({ ")" })),
 | 
			
		||||
  s("def", {
 | 
			
		||||
    t("(define "),
 | 
			
		||||
    i(1),
 | 
			
		||||
    t(" "),
 | 
			
		||||
    i(2),
 | 
			
		||||
    t(")"),
 | 
			
		||||
  }),
 | 
			
		||||
  s("defp", {
 | 
			
		||||
    t("(define ("),
 | 
			
		||||
    i(1),
 | 
			
		||||
    t(" "),
 | 
			
		||||
    i(2),
 | 
			
		||||
    t("))"),
 | 
			
		||||
  }),
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,69 @@
 | 
			
		|||
local ls = require("luasnip")
 | 
			
		||||
local s = ls.snippet
 | 
			
		||||
local i = ls.insert_node
 | 
			
		||||
local t = ls.text_node
 | 
			
		||||
local f = ls.function_node
 | 
			
		||||
 | 
			
		||||
-- Inspired by https://castel.dev/post/lecture-notes-1/
 | 
			
		||||
 | 
			
		||||
ls.add_snippets("tex", {
 | 
			
		||||
  s("beg", {
 | 
			
		||||
    t("\\begin{"),
 | 
			
		||||
    i(1),
 | 
			
		||||
    t({ "}", "\t" }),
 | 
			
		||||
    i(0),
 | 
			
		||||
    t({ "", "\\end{" }),
 | 
			
		||||
    f(function(args)
 | 
			
		||||
      return args[1][1]
 | 
			
		||||
    end, { 1 }),
 | 
			
		||||
    t("}"),
 | 
			
		||||
  }),
 | 
			
		||||
 | 
			
		||||
  s("def", {
 | 
			
		||||
    t("\\begin{definition}"),
 | 
			
		||||
    t({ "", "\t" }),
 | 
			
		||||
    i(0),
 | 
			
		||||
    t({ "", "\\end{definition}" }),
 | 
			
		||||
  }),
 | 
			
		||||
 | 
			
		||||
  s("fig", {
 | 
			
		||||
    t("\\begin{figure}"),
 | 
			
		||||
    t({ "", "\t" }),
 | 
			
		||||
    i(0),
 | 
			
		||||
    t({ "", "\\end{figure}" }),
 | 
			
		||||
  }),
 | 
			
		||||
 | 
			
		||||
  s(
 | 
			
		||||
    "time",
 | 
			
		||||
    f(function()
 | 
			
		||||
      return os.date("%H:%M")
 | 
			
		||||
    end)
 | 
			
		||||
  ),
 | 
			
		||||
 | 
			
		||||
  s("i", t("\\textit{"), i(0), t("}")),
 | 
			
		||||
 | 
			
		||||
  s("b", t("\\textbf{"), i(0), t("}")),
 | 
			
		||||
 | 
			
		||||
  s("center", {
 | 
			
		||||
    t("\\begin{center}"),
 | 
			
		||||
    t({ "", "" }),
 | 
			
		||||
    i(0),
 | 
			
		||||
    t({ "", "\\end{center}" }),
 | 
			
		||||
  }),
 | 
			
		||||
 | 
			
		||||
  s("pac", t("\\usepackage{"), i(0), t("}")),
 | 
			
		||||
 | 
			
		||||
  s("foot", t("\\footnote{"), i(0), t("}")),
 | 
			
		||||
 | 
			
		||||
  s("dm", {
 | 
			
		||||
    t({ "\\[", "" }),
 | 
			
		||||
    i(1),
 | 
			
		||||
    t({ "", "\\]" }),
 | 
			
		||||
    i(0),
 | 
			
		||||
  }),
 | 
			
		||||
 | 
			
		||||
  s("ch", t("\\chapter{"), i(0), t("}")),
 | 
			
		||||
  s("sec", t("\\section{"), i(0), t("}")),
 | 
			
		||||
  s("ssec", t("\\subsection{"), i(0), t("}")),
 | 
			
		||||
  s("sssec", t("\\subsubsection{"), i(0), t("}")),
 | 
			
		||||
})
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1 @@
 | 
			
		|||
enabled=False
 | 
			
		||||
| 
						 | 
				
			
			@ -1,210 +0,0 @@
 | 
			
		|||
" YinYang - black/white color scheme
 | 
			
		||||
 | 
			
		||||
if (&background ==# "dark" && get(g:, "colors_name", "") ==# "yang")
 | 
			
		||||
    runtime! colors/yin.vim
 | 
			
		||||
    finish
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
highlight clear
 | 
			
		||||
 | 
			
		||||
if exists("syntax_on")
 | 
			
		||||
    syntax reset
 | 
			
		||||
endif
 | 
			
		||||
let g:colors_name = "yang"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
let s:palette = {}
 | 
			
		||||
 | 
			
		||||
let s:palette.white = [254, '#f7f7f7']
 | 
			
		||||
let s:palette.gray15 = [253, '#e4e4e4']
 | 
			
		||||
let s:palette.gray14 = [250, '#bcbcbc']
 | 
			
		||||
let s:palette.gray13 = [249, '#b2b2b2']
 | 
			
		||||
let s:palette.gray12 = [248, '#a8a8a8']
 | 
			
		||||
let s:palette.gray11 = [247, '#9e9e9e']
 | 
			
		||||
let s:palette.gray10 = [246, '#949494']
 | 
			
		||||
let s:palette.gray09 = [245, '#8a8a8a']
 | 
			
		||||
let s:palette.gray08 = [244, '#808080']
 | 
			
		||||
let s:palette.gray07 = [243, '#767676']
 | 
			
		||||
let s:palette.gray06 = [242, '#666666']
 | 
			
		||||
let s:palette.gray05 = [241, '#606060']
 | 
			
		||||
let s:palette.gray04 = [240, '#585858']
 | 
			
		||||
let s:palette.gray03 = [239, '#4e4e4e']
 | 
			
		||||
let s:palette.gray02 = [238, '#444444']
 | 
			
		||||
let s:palette.gray01 = [235, '#262626']
 | 
			
		||||
let s:palette.black = [233, '#121212']
 | 
			
		||||
 | 
			
		||||
let s:palette.purple = [98, '#875fd7']
 | 
			
		||||
let s:palette.brown = [130, '#af5f00']
 | 
			
		||||
let s:palette.blue = [67, '#5f87af']
 | 
			
		||||
let s:palette.darkblue = [27, '#005fff']
 | 
			
		||||
let s:palette.green = [65, '#5f875f']
 | 
			
		||||
let s:palette.red = [88, '#870000']
 | 
			
		||||
let s:palette.orange = [166, '#5f5fd7']
 | 
			
		||||
 | 
			
		||||
if has("nvim")
 | 
			
		||||
    let g:terminal_color_0 = s:palette.gray01[1]
 | 
			
		||||
    let g:terminal_color_1 = s:palette.gray06[1]
 | 
			
		||||
    let g:terminal_color_2 = s:palette.gray03[1]
 | 
			
		||||
    let g:terminal_color_3 = s:palette.gray11[1]
 | 
			
		||||
    let g:terminal_color_4 = s:palette.gray02[1]
 | 
			
		||||
    let g:terminal_color_5 = s:palette.gray08[1]
 | 
			
		||||
    let g:terminal_color_6 = s:palette.gray09[1]
 | 
			
		||||
    let g:terminal_color_7 = s:palette.gray13[1]
 | 
			
		||||
    let g:terminal_color_8 = s:palette.gray03[1]
 | 
			
		||||
    let g:terminal_color_9 = s:palette.gray10[1]
 | 
			
		||||
    let g:terminal_color_10 = s:palette.gray07[1]
 | 
			
		||||
    let g:terminal_color_11 = s:palette.gray13[1]
 | 
			
		||||
    let g:terminal_color_12 = s:palette.gray05[1]
 | 
			
		||||
    let g:terminal_color_13 = s:palette.gray12[1]
 | 
			
		||||
    let g:terminal_color_14 = s:palette.gray14[1]
 | 
			
		||||
    let g:terminal_color_15 = s:palette.white[1]
 | 
			
		||||
elseif has("terminal")
 | 
			
		||||
    let g:terminal_ansi_colors = [
 | 
			
		||||
                \ s:palette.gray01[1],
 | 
			
		||||
                \ s:palette.gray06[1],
 | 
			
		||||
                \ s:palette.gray03[1],
 | 
			
		||||
                \ s:palette.gray11[1],
 | 
			
		||||
                \ s:palette.gray02[1],
 | 
			
		||||
                \ s:palette.gray08[1],
 | 
			
		||||
                \ s:palette.gray09[1],
 | 
			
		||||
                \ s:palette.gray13[1],
 | 
			
		||||
                \ s:palette.gray03[1],
 | 
			
		||||
                \ s:palette.gray10[1],
 | 
			
		||||
                \ s:palette.gray07[1],
 | 
			
		||||
                \ s:palette.gray13[1],
 | 
			
		||||
                \ s:palette.gray05[1],
 | 
			
		||||
                \ s:palette.gray12[1],
 | 
			
		||||
                \ s:palette.gray14[1],
 | 
			
		||||
                \ s:palette.white[1]
 | 
			
		||||
                \ ]
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
function! s:hi(group, fg_color, bg_color, style)
 | 
			
		||||
    let highlight_command = ['hi', a:group]
 | 
			
		||||
    if !empty(a:fg_color)
 | 
			
		||||
        let [ctermfg, guifg] = a:fg_color
 | 
			
		||||
        call add(highlight_command, printf('ctermfg=%d guifg=%s', ctermfg, guifg))
 | 
			
		||||
    endif
 | 
			
		||||
    if !empty(a:bg_color)
 | 
			
		||||
        let [ctermbg, guibg] = a:bg_color
 | 
			
		||||
        call add(highlight_command, printf('ctermbg=%d guibg=%s', ctermbg, guibg))
 | 
			
		||||
    endif
 | 
			
		||||
    if !empty(a:style)
 | 
			
		||||
        call add(highlight_command, printf('cterm=%s gui=%s', a:style, a:style))
 | 
			
		||||
    endif
 | 
			
		||||
    execute join(highlight_command, ' ')
 | 
			
		||||
endfunction
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
call s:hi('Normal', s:palette.gray05, s:palette.white, '')
 | 
			
		||||
set background=light
 | 
			
		||||
 | 
			
		||||
call s:hi('Constant', s:palette.gray11, [], 'bold')
 | 
			
		||||
call s:hi('String', s:palette.gray08, [], '')
 | 
			
		||||
call s:hi('Number', s:palette.gray10, [], '')
 | 
			
		||||
 | 
			
		||||
call s:hi('Identifier', s:palette.gray06, [], 'none')
 | 
			
		||||
call s:hi('Function', s:palette.gray06, [], '')
 | 
			
		||||
 | 
			
		||||
call s:hi('Statement', s:palette.gray08, [], 'bold')
 | 
			
		||||
call s:hi('Operator', s:palette.gray03, [], 'none')
 | 
			
		||||
call s:hi('Keyword', s:palette.gray10, [], '')
 | 
			
		||||
 | 
			
		||||
call s:hi('PreProc', s:palette.gray10, [], 'none')
 | 
			
		||||
 | 
			
		||||
call s:hi('Type', s:palette.gray09, [], 'bold')
 | 
			
		||||
 | 
			
		||||
call s:hi('Special', s:palette.gray10, [], '')
 | 
			
		||||
call s:hi('SpecialComment', s:palette.gray12, [], 'bold')
 | 
			
		||||
 | 
			
		||||
call s:hi('Title', s:palette.gray10, [], 'bold')
 | 
			
		||||
call s:hi('Todo', s:palette.purple, s:palette.white, '')
 | 
			
		||||
if has("nvim") || has("gui_running")
 | 
			
		||||
    call s:hi('Comment', s:palette.gray12, [], 'italic')
 | 
			
		||||
else
 | 
			
		||||
    call s:hi('Comment', s:palette.gray12, [], '')
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
call s:hi('LineNr', s:palette.gray13, s:palette.gray15, 'none')
 | 
			
		||||
call s:hi('FoldColumn', s:palette.gray08, s:palette.gray15, 'none')
 | 
			
		||||
call s:hi('CursorLine', [], s:palette.gray15, 'none')
 | 
			
		||||
call s:hi('CursorLineNr', s:palette.gray06, s:palette.gray15, 'none')
 | 
			
		||||
 | 
			
		||||
call s:hi('Visual', s:palette.white, s:palette.gray06, '')
 | 
			
		||||
call s:hi('Search', s:palette.gray15, s:palette.gray03, 'none')
 | 
			
		||||
call s:hi('IncSearch', s:palette.white, s:palette.gray11, 'bold')
 | 
			
		||||
 | 
			
		||||
call s:hi('SpellBad', s:palette.red, s:palette.white, 'undercurl')
 | 
			
		||||
call s:hi('SpellCap', s:palette.red, s:palette.white, 'undercurl')
 | 
			
		||||
call s:hi('SpellLocal', s:palette.red, s:palette.white, 'undercurl')
 | 
			
		||||
call s:hi('SpellRare', s:palette.brown, s:palette.white, 'undercurl')
 | 
			
		||||
 | 
			
		||||
call s:hi('Error', s:palette.red, s:palette.white, 'bold')
 | 
			
		||||
call s:hi('ErrorMsg', s:palette.red, s:palette.white, '')
 | 
			
		||||
call s:hi('WarningMsg', s:palette.brown, s:palette.white, '')
 | 
			
		||||
call s:hi('ModeMsg', s:palette.gray10, [], '')
 | 
			
		||||
call s:hi('MoreMsg', s:palette.gray10, [], '')
 | 
			
		||||
 | 
			
		||||
call s:hi('MatchParen', s:palette.orange, s:palette.white, '')
 | 
			
		||||
 | 
			
		||||
call s:hi('Cursor', [], s:palette.gray12, '')
 | 
			
		||||
call s:hi('Underlined', s:palette.gray08, [], 'underline')
 | 
			
		||||
call s:hi('SpecialKey', s:palette.gray13, [], '')
 | 
			
		||||
call s:hi('NonText', s:palette.gray13, [], '')
 | 
			
		||||
call s:hi('Directory', s:palette.gray08, [], '')
 | 
			
		||||
 | 
			
		||||
call s:hi('Pmenu', s:palette.gray05, s:palette.gray14, 'none')
 | 
			
		||||
call s:hi('PmenuSbar', s:palette.white, s:palette.gray01, 'none')
 | 
			
		||||
call s:hi('PmenuSel', s:palette.gray14, s:palette.gray05, '')
 | 
			
		||||
call s:hi('PmenuThumb', s:palette.gray14, s:palette.gray03, 'none')
 | 
			
		||||
 | 
			
		||||
call s:hi('StatusLine', s:palette.gray03, s:palette.gray13, 'none')
 | 
			
		||||
call s:hi('StatusLineNC', s:palette.gray13, s:palette.gray15, 'none')
 | 
			
		||||
call s:hi('WildMenu', s:palette.gray08, [], '')
 | 
			
		||||
call s:hi('VertSplit', s:palette.gray13, s:palette.white, 'none')
 | 
			
		||||
 | 
			
		||||
call s:hi('DiffAdd', s:palette.white, s:palette.green, '')
 | 
			
		||||
call s:hi('DiffChange', s:palette.white, s:palette.blue, '')
 | 
			
		||||
call s:hi('DiffDelete', s:palette.white, s:palette.red, '')
 | 
			
		||||
call s:hi('DiffText', s:palette.white, s:palette.darkblue, '')
 | 
			
		||||
call s:hi('DiffAdded', s:palette.green, s:palette.white, '')
 | 
			
		||||
call s:hi('DiffChanged', s:palette.blue, s:palette.white, '')
 | 
			
		||||
call s:hi('DiffRemoved', s:palette.red, s:palette.white, '')
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
highlight! link Character Constant
 | 
			
		||||
highlight! link Float Number
 | 
			
		||||
highlight! link Boolean Number
 | 
			
		||||
 | 
			
		||||
highlight! link SignColumn FoldColumn
 | 
			
		||||
highlight! link ColorColumn FoldColumn
 | 
			
		||||
highlight! link CursorColumn CursorLine
 | 
			
		||||
 | 
			
		||||
highlight! link Folded LineNr
 | 
			
		||||
highlight! link Conceal Normal
 | 
			
		||||
highlight! link ErrorMsg Error
 | 
			
		||||
 | 
			
		||||
highlight! link Conditional Statement
 | 
			
		||||
highlight! link Repeat Statement
 | 
			
		||||
highlight! link Label Statement
 | 
			
		||||
highlight! link Exception Statement
 | 
			
		||||
 | 
			
		||||
highlight! link Include PreProc
 | 
			
		||||
highlight! link Define PreProc
 | 
			
		||||
highlight! link Macro PreProc
 | 
			
		||||
highlight! link PreCondit PreProc
 | 
			
		||||
 | 
			
		||||
highlight! link StorageClass Type
 | 
			
		||||
highlight! link Structure Type
 | 
			
		||||
highlight! link Typedef Type
 | 
			
		||||
 | 
			
		||||
highlight! link SpecialChar Special
 | 
			
		||||
highlight! link Tag Special
 | 
			
		||||
highlight! link Delimiter Special
 | 
			
		||||
highlight! link Debug Special
 | 
			
		||||
highlight! link Question Special
 | 
			
		||||
 | 
			
		||||
highlight! link VisualNOS Visual
 | 
			
		||||
highlight! link TabLine StatusLineNC
 | 
			
		||||
highlight! link TabLineFill StatusLineNC
 | 
			
		||||
highlight! link TabLineSel StatusLine
 | 
			
		||||
| 
						 | 
				
			
			@ -1,212 +0,0 @@
 | 
			
		|||
" YinYang - black/white color scheme
 | 
			
		||||
 | 
			
		||||
if (&background ==# "light" && get(g:, "colors_name", "") ==# "yin")
 | 
			
		||||
    runtime! colors/yang.vim
 | 
			
		||||
    finish
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
highlight clear
 | 
			
		||||
 | 
			
		||||
if exists("syntax_on")
 | 
			
		||||
    syntax reset
 | 
			
		||||
endif
 | 
			
		||||
let g:colors_name = "yin"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
let s:palette = {}
 | 
			
		||||
 | 
			
		||||
let s:palette.blackest = [0, '#0c0c0c']
 | 
			
		||||
let s:palette.black = [233, '#111111']
 | 
			
		||||
let s:palette.gray01 = [235, '#1e1e1e']
 | 
			
		||||
let s:palette.gray02 = [238, '#444444']
 | 
			
		||||
let s:palette.gray03 = [239, '#4e4e4e']
 | 
			
		||||
let s:palette.gray04 = [240, '#585858']
 | 
			
		||||
let s:palette.gray05 = [242, '#666666']
 | 
			
		||||
let s:palette.gray06 = [243, '#767676']
 | 
			
		||||
let s:palette.gray07 = [244, '#808080']
 | 
			
		||||
let s:palette.gray08 = [245, '#8a8a8a']
 | 
			
		||||
let s:palette.gray09 = [246, '#949494']
 | 
			
		||||
let s:palette.gray10 = [247, '#9e9e9e']
 | 
			
		||||
let s:palette.gray11 = [248, '#a8a8a8']
 | 
			
		||||
let s:palette.gray12 = [249, '#b2b2b2']
 | 
			
		||||
let s:palette.gray13 = [250, '#bcbcbc']
 | 
			
		||||
let s:palette.gray14 = [251, '#c6c6c6']
 | 
			
		||||
let s:palette.gray15 = [254, '#e4e4e4']
 | 
			
		||||
let s:palette.white = [255, '#eeeeee']
 | 
			
		||||
 | 
			
		||||
let s:palette.comments = copy(s:palette.gray03)
 | 
			
		||||
 | 
			
		||||
let s:palette.purple = [62, '#5f5fd7']
 | 
			
		||||
let s:palette.brown = [94, '#875f00']
 | 
			
		||||
let s:palette.blue = [24, '#005f87']
 | 
			
		||||
let s:palette.lightblue = [31, '#00afff']
 | 
			
		||||
let s:palette.green = [29, '#00875f']
 | 
			
		||||
let s:palette.red = [88, '#870000']
 | 
			
		||||
let s:palette.orange = [166, '#5f5fd7']
 | 
			
		||||
 | 
			
		||||
if has("nvim")
 | 
			
		||||
    let g:terminal_color_0 = s:palette.gray01[1]
 | 
			
		||||
    let g:terminal_color_1 = s:palette.gray06[1]
 | 
			
		||||
    let g:terminal_color_2 = s:palette.gray03[1]
 | 
			
		||||
    let g:terminal_color_3 = s:palette.gray11[1]
 | 
			
		||||
    let g:terminal_color_4 = s:palette.gray02[1]
 | 
			
		||||
    let g:terminal_color_5 = s:palette.gray08[1]
 | 
			
		||||
    let g:terminal_color_6 = s:palette.gray09[1]
 | 
			
		||||
    let g:terminal_color_7 = s:palette.gray13[1]
 | 
			
		||||
    let g:terminal_color_8 = s:palette.gray03[1]
 | 
			
		||||
    let g:terminal_color_9 = s:palette.gray10[1]
 | 
			
		||||
    let g:terminal_color_10 = s:palette.gray07[1]
 | 
			
		||||
    let g:terminal_color_11 = s:palette.gray15[1]
 | 
			
		||||
    let g:terminal_color_12 = s:palette.gray05[1]
 | 
			
		||||
    let g:terminal_color_13 = s:palette.gray12[1]
 | 
			
		||||
    let g:terminal_color_14 = s:palette.gray14[1]
 | 
			
		||||
    let g:terminal_color_15 = s:palette.white[1]
 | 
			
		||||
elseif has("terminal")
 | 
			
		||||
    let g:terminal_ansi_colors = [
 | 
			
		||||
                \ s:palette.gray01[1],
 | 
			
		||||
                \ s:palette.gray06[1],
 | 
			
		||||
                \ s:palette.gray03[1],
 | 
			
		||||
                \ s:palette.gray11[1],
 | 
			
		||||
                \ s:palette.gray02[1],
 | 
			
		||||
                \ s:palette.gray08[1],
 | 
			
		||||
                \ s:palette.gray09[1],
 | 
			
		||||
                \ s:palette.gray13[1],
 | 
			
		||||
                \ s:palette.gray03[1],
 | 
			
		||||
                \ s:palette.gray10[1],
 | 
			
		||||
                \ s:palette.gray07[1],
 | 
			
		||||
                \ s:palette.gray15[1],
 | 
			
		||||
                \ s:palette.gray05[1],
 | 
			
		||||
                \ s:palette.gray12[1],
 | 
			
		||||
                \ s:palette.gray14[1],
 | 
			
		||||
                \ s:palette.white[1]
 | 
			
		||||
                \ ]
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
function! s:hi(group, fg_color, bg_color, style)
 | 
			
		||||
    let highlight_command = ['hi', a:group]
 | 
			
		||||
    if !empty(a:fg_color)
 | 
			
		||||
        let [ctermfg, guifg] = a:fg_color
 | 
			
		||||
        call add(highlight_command, printf('ctermfg=%d guifg=%s', ctermfg, guifg))
 | 
			
		||||
    endif
 | 
			
		||||
    if !empty(a:bg_color)
 | 
			
		||||
        let [ctermbg, guibg] = a:bg_color
 | 
			
		||||
        call add(highlight_command, printf('ctermbg=%d guibg=%s', ctermbg, guibg))
 | 
			
		||||
    endif
 | 
			
		||||
    if !empty(a:style)
 | 
			
		||||
        call add(highlight_command, printf('cterm=%s gui=%s', a:style, a:style))
 | 
			
		||||
    endif
 | 
			
		||||
    execute join(highlight_command, ' ')
 | 
			
		||||
endfunction
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
call s:hi('Normal', s:palette.gray11, s:palette.black, '')
 | 
			
		||||
set background=dark
 | 
			
		||||
 | 
			
		||||
call s:hi('Constant', s:palette.gray05, [], 'bold')
 | 
			
		||||
call s:hi('String', s:palette.gray10, [], '')
 | 
			
		||||
call s:hi('Number', s:palette.gray06, [], '')
 | 
			
		||||
 | 
			
		||||
call s:hi('Identifier', s:palette.gray08, [], 'none')
 | 
			
		||||
call s:hi('Function', s:palette.gray08, [], '')
 | 
			
		||||
 | 
			
		||||
call s:hi('Statement', s:palette.gray05, [], 'bold')
 | 
			
		||||
call s:hi('Operator', s:palette.gray05, [], 'none')
 | 
			
		||||
call s:hi('Keyword', s:palette.gray05, [], '')
 | 
			
		||||
 | 
			
		||||
call s:hi('PreProc', s:palette.gray07, [], 'none')
 | 
			
		||||
 | 
			
		||||
call s:hi('Type', s:palette.gray05, [], 'bold')
 | 
			
		||||
 | 
			
		||||
call s:hi('Special', s:palette.gray05, [], '')
 | 
			
		||||
call s:hi('SpecialComment', s:palette.comments, [], 'bold')
 | 
			
		||||
 | 
			
		||||
call s:hi('Title', s:palette.gray07, [], 'bold')
 | 
			
		||||
call s:hi('Todo', s:palette.purple, s:palette.black, '')
 | 
			
		||||
if has("nvim") || has("gui_running")
 | 
			
		||||
    call s:hi('Comment', s:palette.comments, [], 'italic')
 | 
			
		||||
else
 | 
			
		||||
    call s:hi('Comment', s:palette.comments, [], '')
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
call s:hi('LineNr', s:palette.gray02, s:palette.black, 'none')
 | 
			
		||||
call s:hi('FoldColumn', s:palette.gray07, s:palette.gray01, 'none')
 | 
			
		||||
call s:hi('CursorLine', [], s:palette.gray01, 'none')
 | 
			
		||||
call s:hi('CursorLineNr', s:palette.gray14, s:palette.gray01, 'none')
 | 
			
		||||
 | 
			
		||||
call s:hi('Visual', s:palette.black, s:palette.gray06, '')
 | 
			
		||||
call s:hi('Search', s:palette.gray01, s:palette.gray11, 'none')
 | 
			
		||||
call s:hi('IncSearch', s:palette.black, s:palette.gray07, 'bold')
 | 
			
		||||
 | 
			
		||||
call s:hi('SpellBad', s:palette.red, s:palette.black, 'undercurl')
 | 
			
		||||
call s:hi('SpellCap', s:palette.red, s:palette.black, 'undercurl')
 | 
			
		||||
call s:hi('SpellLocal', s:palette.red, s:palette.black, 'undercurl')
 | 
			
		||||
call s:hi('SpellRare', s:palette.brown, s:palette.black, 'undercurl')
 | 
			
		||||
 | 
			
		||||
call s:hi('Error', s:palette.red, s:palette.black, 'bold')
 | 
			
		||||
call s:hi('ErrorMsg', s:palette.red, s:palette.black, '')
 | 
			
		||||
call s:hi('WarningMsg', s:palette.brown, s:palette.black, '')
 | 
			
		||||
call s:hi('ModeMsg', s:palette.gray10, [], '')
 | 
			
		||||
call s:hi('MoreMsg', s:palette.gray10, [], '')
 | 
			
		||||
 | 
			
		||||
call s:hi('MatchParen', s:palette.orange, s:palette.black, '')
 | 
			
		||||
 | 
			
		||||
call s:hi('Cursor', [], s:palette.gray12, '')
 | 
			
		||||
call s:hi('Underlined', s:palette.gray08, [], 'underline')
 | 
			
		||||
call s:hi('SpecialKey', s:palette.gray04, [], '')
 | 
			
		||||
call s:hi('NonText', s:palette.gray04, [], '')
 | 
			
		||||
call s:hi('Directory', s:palette.gray08, [], '')
 | 
			
		||||
 | 
			
		||||
call s:hi('Pmenu', s:palette.gray10, s:palette.gray03, 'none')
 | 
			
		||||
call s:hi('PmenuSbar', s:palette.black, s:palette.gray15, 'none')
 | 
			
		||||
call s:hi('PmenuSel', s:palette.gray03, s:palette.gray10, '')
 | 
			
		||||
call s:hi('PmenuThumb', s:palette.gray03, s:palette.gray09, 'none')
 | 
			
		||||
 | 
			
		||||
call s:hi('StatusLine', s:palette.gray12, s:palette.gray01, 'none')
 | 
			
		||||
call s:hi('StatusLineNC', s:palette.black, s:palette.black, 'none')
 | 
			
		||||
call s:hi('WildMenu', s:palette.gray08, [], '')
 | 
			
		||||
call s:hi('VertSplit', s:palette.gray03, s:palette.black, 'none')
 | 
			
		||||
 | 
			
		||||
call s:hi('DiffAdd', s:palette.blackest, s:palette.green, '')
 | 
			
		||||
call s:hi('DiffChange', s:palette.blackest, s:palette.blue, '')
 | 
			
		||||
call s:hi('DiffDelete', s:palette.blackest, s:palette.red, '')
 | 
			
		||||
call s:hi('DiffText', s:palette.black, s:palette.lightblue, '')
 | 
			
		||||
call s:hi('DiffAdded', s:palette.green, s:palette.black, '')
 | 
			
		||||
call s:hi('DiffChanged', s:palette.blue, s:palette.black, '')
 | 
			
		||||
call s:hi('DiffRemoved', s:palette.red, s:palette.black, '')
 | 
			
		||||
 | 
			
		||||
highlight! link Character Constant
 | 
			
		||||
highlight! link Float Number
 | 
			
		||||
highlight! link Boolean Number
 | 
			
		||||
 | 
			
		||||
highlight! link SignColumn FoldColumn
 | 
			
		||||
highlight! link ColorColumn FoldColumn
 | 
			
		||||
highlight! link CursorColumn CursorLine
 | 
			
		||||
 | 
			
		||||
highlight! link Folded LineNr
 | 
			
		||||
highlight! link Conceal Normal
 | 
			
		||||
highlight! link ErrorMsg Error
 | 
			
		||||
 | 
			
		||||
highlight! link Conditional Statement
 | 
			
		||||
highlight! link Repeat Statement
 | 
			
		||||
highlight! link Label Statement
 | 
			
		||||
highlight! link Exception Statement
 | 
			
		||||
 | 
			
		||||
highlight! link Include PreProc
 | 
			
		||||
highlight! link Define PreProc
 | 
			
		||||
highlight! link Macro PreProc
 | 
			
		||||
highlight! link PreCondit PreProc
 | 
			
		||||
 | 
			
		||||
highlight! link StorageClass Type
 | 
			
		||||
highlight! link Structure Type
 | 
			
		||||
highlight! link Typedef Type
 | 
			
		||||
 | 
			
		||||
highlight! link SpecialChar Special
 | 
			
		||||
highlight! link Tag Special
 | 
			
		||||
highlight! link Delimiter Special
 | 
			
		||||
highlight! link Debug Special
 | 
			
		||||
highlight! link Question Special
 | 
			
		||||
 | 
			
		||||
highlight! link VisualNOS Visual
 | 
			
		||||
highlight! link TabLine StatusLineNC
 | 
			
		||||
highlight! link TabLineFill StatusLineNC
 | 
			
		||||
highlight! link TabLineSel StatusLine
 | 
			
		||||
| 
						 | 
				
			
			@ -1 +0,0 @@
 | 
			
		|||
autocmd BufNewFile,BufReadPost *.pl set filetype=prolog
 | 
			
		||||
| 
						 | 
				
			
			@ -1 +0,0 @@
 | 
			
		|||
set mps+==:;
 | 
			
		||||
| 
						 | 
				
			
			@ -1,3 +0,0 @@
 | 
			
		|||
set termguicolors
 | 
			
		||||
set bg=light
 | 
			
		||||
hi Normal ctermbg=none guibg=NONE
 | 
			
		||||
| 
						 | 
				
			
			@ -1,44 +0,0 @@
 | 
			
		|||
" 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>
 | 
			
		||||
| 
						 | 
				
			
			@ -1,7 +0,0 @@
 | 
			
		|||
snippet fne "Filename (+extension)" i
 | 
			
		||||
`!p snip.rv = snip.fn`
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
# snippet ^fn "Filename basename" ir
 | 
			
		||||
# `!p snip.rv = snip.basename`
 | 
			
		||||
endsnippet
 | 
			
		||||
| 
						 | 
				
			
			@ -1,72 +0,0 @@
 | 
			
		|||
snippet b1(\w+) "Border (1px)" r
 | 
			
		||||
`!p
 | 
			
		||||
import re
 | 
			
		||||
colors = {
 | 
			
		||||
		'r': 'red',
 | 
			
		||||
		'g': 'green',
 | 
			
		||||
		'b': 'blue',
 | 
			
		||||
		'y': 'yellow',
 | 
			
		||||
		'o': 'orange',
 | 
			
		||||
		'p': 'purple',
 | 
			
		||||
		'c': 'cyan',
 | 
			
		||||
		'm': 'magenta',
 | 
			
		||||
		'w': 'white',
 | 
			
		||||
}
 | 
			
		||||
color = colors.get(match.group(1), 'black')
 | 
			
		||||
snip.rv = f"border: 1px solid {color};"
 | 
			
		||||
`$0
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet df "Use flexbox layout"
 | 
			
		||||
display: flex;
 | 
			
		||||
$0
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet fr "Use row direction (flex)"
 | 
			
		||||
flex-direction: row;
 | 
			
		||||
$0
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet fc "Use column direction (flex)"
 | 
			
		||||
flex-direction: column;
 | 
			
		||||
$0
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet dfr "Use flexbox layout in row direction"
 | 
			
		||||
display: flex;
 | 
			
		||||
flex-direction: row;
 | 
			
		||||
$0
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet dfr "Use flexbox layout in column direction"
 | 
			
		||||
display: flex;
 | 
			
		||||
flex-direction: column;
 | 
			
		||||
$0
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet dg "Use CSS grid layout"
 | 
			
		||||
display: grid;
 | 
			
		||||
$0
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet db "Use block layout"
 | 
			
		||||
display: block;
 | 
			
		||||
$0
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet dn "Set display to 'none'"
 | 
			
		||||
display: none;
 | 
			
		||||
$0
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet var "Use CSS variable"
 | 
			
		||||
var(--$1)$0
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet m
 | 
			
		||||
margin: $0;
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet p
 | 
			
		||||
padding: $0;
 | 
			
		||||
endsnippet
 | 
			
		||||
| 
						 | 
				
			
			@ -1,51 +0,0 @@
 | 
			
		|||
snippet ifdef
 | 
			
		||||
#ifdef GL_ES
 | 
			
		||||
precision mediump float;
 | 
			
		||||
#endif
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet defpi
 | 
			
		||||
#define PI 3.14159265359
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet main
 | 
			
		||||
void main() {
 | 
			
		||||
  $1
 | 
			
		||||
}
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet uni
 | 
			
		||||
uniform $1;
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet unif
 | 
			
		||||
uniform float $1;
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet univ
 | 
			
		||||
uniform vec$1 float $2;
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet univ2
 | 
			
		||||
uniform vec2 float $1;
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet univ3
 | 
			
		||||
uniform vec3 float $1;
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet univ4
 | 
			
		||||
uniform vec4 float $1;
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet f
 | 
			
		||||
float
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet v
 | 
			
		||||
vec
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet ss
 | 
			
		||||
smoothstep($1)$2
 | 
			
		||||
endsnippet
 | 
			
		||||
| 
						 | 
				
			
			@ -1,11 +0,0 @@
 | 
			
		|||
snippet clg "console.log"
 | 
			
		||||
console.log($0)
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet Js "JSON.stringify"
 | 
			
		||||
JSON.stringify($0)
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet Jsf "JSON.stringify (formatted)"
 | 
			
		||||
JSON.stringify($0, 0, 2)
 | 
			
		||||
endsnippet
 | 
			
		||||
| 
						 | 
				
			
			@ -1,900 +0,0 @@
 | 
			
		|||
 | 
			
		||||
global !p
 | 
			
		||||
from datetime import datetime
 | 
			
		||||
from math import factorial
 | 
			
		||||
import subprocess
 | 
			
		||||
import re
 | 
			
		||||
import sys
 | 
			
		||||
 | 
			
		||||
ZOTERO_BASE = "http://127.0.0.1:23119/better-bibtex/cayw"
 | 
			
		||||
FENCES = {
 | 
			
		||||
	"i": "idea",
 | 
			
		||||
	"q": "question",
 | 
			
		||||
	"n": "note",
 | 
			
		||||
	"t": "thought",
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
def math_inline():
 | 
			
		||||
	return vim.command_output('GetContext') == 'math_inline'
 | 
			
		||||
 | 
			
		||||
def math_block():
 | 
			
		||||
	return vim.command_output('GetContext') == 'math_block'
 | 
			
		||||
 | 
			
		||||
def math():
 | 
			
		||||
	return math_inline() or math_block()
 | 
			
		||||
 | 
			
		||||
def code_block():
 | 
			
		||||
	return vim.command_output('GetContext') == 'pandocDelimitedCodeBlock'
 | 
			
		||||
 | 
			
		||||
def code_inline():
 | 
			
		||||
	return vim.command_output('GetContext') == 'pandocNoFormatted'
 | 
			
		||||
 | 
			
		||||
def code():
 | 
			
		||||
	return code_inline() or code_block()
 | 
			
		||||
 | 
			
		||||
def slugify(text):
 | 
			
		||||
	return re.sub('\s+', '-', text.lower())
 | 
			
		||||
 | 
			
		||||
def linkify(text, link):
 | 
			
		||||
	return f"[{text}]({link})"
 | 
			
		||||
 | 
			
		||||
def zot(action):
 | 
			
		||||
		if action == "get_title":
 | 
			
		||||
			cmd = f"curl -s '{ZOTERO_BASE}?format=json&selected=1' | jq '.[].title' -r"
 | 
			
		||||
		elif action == "get_citekey":
 | 
			
		||||
			cmd = f"curl -s '{ZOTERO_BASE}?format=pandoc&selected=1'"
 | 
			
		||||
		elif action == "get_citekey_brackets":
 | 
			
		||||
			cmd = f"curl -s '{ZOTERO_BASE}?format=pandoc&selected=1&brackets=1'"
 | 
			
		||||
		elif action == "get_link":
 | 
			
		||||
			link_path = re.sub("^@", "", zot("get_citekey"))
 | 
			
		||||
			link_title = zot("get_title")
 | 
			
		||||
			link = linkify(link_title, link_path)
 | 
			
		||||
			return link
 | 
			
		||||
		elif action == "get_file":
 | 
			
		||||
			link_path = re.sub("^@", "", zot("get_citekey"))
 | 
			
		||||
			link_title = zot("get_title")
 | 
			
		||||
			link = linkify(link_title, f"file://{link_path}.pdf")
 | 
			
		||||
			return link
 | 
			
		||||
		else:
 | 
			
		||||
			return "Zotero action not found"
 | 
			
		||||
		return subprocess.check_output(cmd, shell=True).decode("utf-8").strip()
 | 
			
		||||
endglobal
 | 
			
		||||
 | 
			
		||||
snippet ctx "Context" i
 | 
			
		||||
`!p snip.rv = vim.command_output('GetContext')`
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
# General markdown
 | 
			
		||||
 | 
			
		||||
snippet ^h "Markdown header" r
 | 
			
		||||
# $1
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet ^sec "Markdown section" r
 | 
			
		||||
## $1
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet ^ssec "Markdown subsection" r
 | 
			
		||||
### $1
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet ^sex "Markdown example section" r
 | 
			
		||||
## Example: $1
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet ^ssex "Markdown example subsection" r
 | 
			
		||||
### Example: $1
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
# Zettelkasten templating
 | 
			
		||||
 | 
			
		||||
snippet nl
 | 
			
		||||
*nld*: $1
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet eng
 | 
			
		||||
*eng*: $1
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet fr
 | 
			
		||||
*fra*: $1
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet (de
 | 
			
		||||
*deu*: $1
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet (nl
 | 
			
		||||
(*nld*: $1)
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet (eng
 | 
			
		||||
(*eng*: $1)
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet (fr
 | 
			
		||||
(*fra*: $1)
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet (de
 | 
			
		||||
(*deu*: $1)
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet in
 | 
			
		||||
(In [$1]($2))$3
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet liwhat "What?" A
 | 
			
		||||
`!p snip.rv = "* [What?](" + snip.basename + "_what)"`$1
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet liwhy "Why?" A
 | 
			
		||||
`!p snip.rv = "* [Why?](" + snip.basename + "_why)"`$1
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet < "Comment (html)"
 | 
			
		||||
<!-- $1 -->$2
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet <. "Comment (html) ..." i
 | 
			
		||||
<!-- ... -->$1
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet <t "Thought (html)" i
 | 
			
		||||
<!--:::thought
 | 
			
		||||
$1
 | 
			
		||||
:::-->
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet <q "Question (html)" i
 | 
			
		||||
<!--:::question
 | 
			
		||||
$1
 | 
			
		||||
:::-->
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet <i "Idea (html)" i
 | 
			
		||||
<!--:::idea
 | 
			
		||||
$1
 | 
			
		||||
:::-->
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet <n "Note (html)" i
 | 
			
		||||
<!--:::note
 | 
			
		||||
$1
 | 
			
		||||
:::-->
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet td "Todo"
 | 
			
		||||
TODO${1:: $2}
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet ref "References"
 | 
			
		||||
<!--references-->
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet sort "Sort"
 | 
			
		||||
<!--sort-->
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet foot "Footnotes"
 | 
			
		||||
<!--footnotes-->
 | 
			
		||||
[^0]:
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet def "Definition"
 | 
			
		||||
**Definition${1:: $2}**${3: [${4:citation}${5:, ${6:pointer}}]}
 | 
			
		||||
 | 
			
		||||
$7
 | 
			
		||||
 | 
			
		||||
___
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet theo "Theorem"
 | 
			
		||||
**Theorem${1:: $2}**${3: [${4:citation}${5:, ${6:pointer}}]}
 | 
			
		||||
 | 
			
		||||
$7
 | 
			
		||||
 | 
			
		||||
${8/(\w+).*/**Theorem** \n\n.../}
 | 
			
		||||
 | 
			
		||||
___
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet prop "Property"
 | 
			
		||||
**Property $1** [@]
 | 
			
		||||
 | 
			
		||||
$2
 | 
			
		||||
 | 
			
		||||
___
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet lemm "Lemma"
 | 
			
		||||
**Lemma $1** [@]
 | 
			
		||||
 | 
			
		||||
$2
 | 
			
		||||
 | 
			
		||||
___
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet coro "Corollary"
 | 
			
		||||
**Corollary $1** [@]
 | 
			
		||||
 | 
			
		||||
$2
 | 
			
		||||
 | 
			
		||||
___
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
# Greek symbols
 | 
			
		||||
 | 
			
		||||
context "math()"
 | 
			
		||||
snippet alpha "Alpha"
 | 
			
		||||
\\alpha
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
context "math()"
 | 
			
		||||
snippet beta "Beta"
 | 
			
		||||
\\beta
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
context "math()"
 | 
			
		||||
snippet gamma "Gamma"
 | 
			
		||||
\\gamma
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
context "math()"
 | 
			
		||||
snippet delta "Delta"
 | 
			
		||||
\\delta
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
context "math()"
 | 
			
		||||
snippet epsilon "Epsilon"
 | 
			
		||||
\\epsilonilon
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
context "math()"
 | 
			
		||||
snippet zeta "Zeta"
 | 
			
		||||
\\zeta
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
context "math()"
 | 
			
		||||
snippet eta "Eta"
 | 
			
		||||
\\eta
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
context "math()"
 | 
			
		||||
snippet theta "Theta"
 | 
			
		||||
\\theta
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
context "math()"
 | 
			
		||||
snippet iota "Iota"
 | 
			
		||||
\\iota
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
context "math()"
 | 
			
		||||
snippet kappa "Kappa"
 | 
			
		||||
\\kappa
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
context "math()"
 | 
			
		||||
snippet lambda "Lambda" i
 | 
			
		||||
\\lambda
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
context "math()"
 | 
			
		||||
snippet mu "Mu"
 | 
			
		||||
\\mu
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
context "math()"
 | 
			
		||||
snippet nu "Nu"
 | 
			
		||||
\\nu
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
context "math()"
 | 
			
		||||
snippet xi "Xi"
 | 
			
		||||
\\xi
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
context "math()"
 | 
			
		||||
snippet omicron "Omicron"
 | 
			
		||||
\\omicron
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
context "math()"
 | 
			
		||||
snippet pi "Pi"
 | 
			
		||||
\\pi
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
context "math()"
 | 
			
		||||
snippet rho "Rho"
 | 
			
		||||
\\rho
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
context "math()"
 | 
			
		||||
snippet sigma "Sigma"
 | 
			
		||||
\\sigma
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
context "math()"
 | 
			
		||||
snippet tau "Tau"
 | 
			
		||||
\\tau
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
context "math()"
 | 
			
		||||
snippet upsilon "Upsilon"
 | 
			
		||||
\\upsilon
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
context "math()"
 | 
			
		||||
snippet phi "Phi"
 | 
			
		||||
\\phi
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
context "math()"
 | 
			
		||||
snippet chi "Chi"
 | 
			
		||||
\\chi
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
context "math()"
 | 
			
		||||
snippet psi "Psi"
 | 
			
		||||
\\psi
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
context "math()"
 | 
			
		||||
snippet omega "Omega"
 | 
			
		||||
\\omega
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
context "math()"
 | 
			
		||||
snippet Gamma "Gamma"
 | 
			
		||||
\\Gamma
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
context "math()"
 | 
			
		||||
snippet Delta "Delta"
 | 
			
		||||
\\Delta
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
context "math()"
 | 
			
		||||
snippet Theta "Theta"
 | 
			
		||||
\\Theta
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
context "math()"
 | 
			
		||||
snippet Lambda "Lambda"
 | 
			
		||||
\\Lambda
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
context "math()"
 | 
			
		||||
snippet Xi "Xi"
 | 
			
		||||
\\Xi
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
context "math()"
 | 
			
		||||
snippet Pi "Pi"
 | 
			
		||||
\\Pi
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
context "math()"
 | 
			
		||||
snippet Sigma "Sigma"
 | 
			
		||||
\\Sigma
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
context "math()"
 | 
			
		||||
snippet Upsilon "Upsilon"
 | 
			
		||||
\\Upsilon
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
context "math()"
 | 
			
		||||
snippet Phi "Phi"
 | 
			
		||||
\\Phi
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
context "math()"
 | 
			
		||||
snippet Psi "Psi"
 | 
			
		||||
\\Psi
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
context "math()"
 | 
			
		||||
snippet Omega "Omega"
 | 
			
		||||
\\Omega
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet asaw "Als en slechts als (woorden)" i
 | 
			
		||||
als en slechts als 
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet iffw "If and only if (words)" i
 | 
			
		||||
if and only if
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet asas "Als en slechts als (shorthand)" i
 | 
			
		||||
**asa**
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet iffs "If and only if (shorthand)" i
 | 
			
		||||
**iff**
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet beg "Begin"
 | 
			
		||||
\begin{$1}
 | 
			
		||||
$2
 | 
			
		||||
\end{$1}
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet align "" i
 | 
			
		||||
\begin{align}
 | 
			
		||||
$1
 | 
			
		||||
\end{align}
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet cases "" i
 | 
			
		||||
\begin{cases}
 | 
			
		||||
$1 \\\\
 | 
			
		||||
$2
 | 
			
		||||
\end{cases}
 | 
			
		||||
$3
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet tik "Tikzpicture" i
 | 
			
		||||
\begin{tikzpicture}
 | 
			
		||||
$1
 | 
			
		||||
\end{tikzpicture}
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet matrix "Matrix" i
 | 
			
		||||
\begin{bmatrix}
 | 
			
		||||
$1
 | 
			
		||||
\end{bmatrix}
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
# Insert anything after m/M in math mode
 | 
			
		||||
 | 
			
		||||
snippet "(\b)m(.*)" "MathJax" r
 | 
			
		||||
`!p snip.rv = match.group(1) + "$" + match.group(2) + "$"`
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet (\b)M(.*) "MathJax block" irw
 | 
			
		||||
$$
 | 
			
		||||
`!p snip.rv = match.group(2)`
 | 
			
		||||
$$
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
# Calligraphic letters
 | 
			
		||||
 | 
			
		||||
context "math()"
 | 
			
		||||
snippet c([A-z]) "Calligraphic A" r
 | 
			
		||||
`!p snip.rv = "\\mathcal{" + match.group(1) + "}"`$1
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
# Subscripts
 | 
			
		||||
 | 
			
		||||
context "math()"
 | 
			
		||||
snippet '([A-z])(\w+)' "Subscripts" irw
 | 
			
		||||
`!p snip.rv = match.group(1) + '_' + match.group(2) if len(match.group(2)) == 1 else match.group(1) + '_{' + match.group(2) + '}'`$1
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
# MathJax
 | 
			
		||||
 | 
			
		||||
snippet fa "For all" i
 | 
			
		||||
\forall
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet frac "" i
 | 
			
		||||
\frac{$1}{$2}$3
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet set "" i
 | 
			
		||||
\\{$1\\}$2
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet N "" i
 | 
			
		||||
\mathbb{N}
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet N0 "" i
 | 
			
		||||
\mathbb{N}_0
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet N+ "" i
 | 
			
		||||
\mathbb{N}^+
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet Z "" i
 | 
			
		||||
\mathbb{Z}
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet Z0 "" i
 | 
			
		||||
\mathbb{Z}_0
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet Z+ "" i
 | 
			
		||||
\mathbb{Z}^+
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet R "" i
 | 
			
		||||
\mathbb{R}
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet R0 "" i
 | 
			
		||||
\mathbb{R}_0
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet R+ "" i
 | 
			
		||||
\mathbb{R}^+
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet C "" i
 | 
			
		||||
\mathbb{C}
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet lim "" i
 | 
			
		||||
\lim_{$1}$2
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet limn "" i
 | 
			
		||||
\lim_{n \to \infty}$2
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet binom "" i
 | 
			
		||||
\binom{$1}{$2}$3
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet andmath "description" i
 | 
			
		||||
\text{ and }
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet enmath "description" i
 | 
			
		||||
\text{ en }
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet lra "MathJax: long right arrow" i
 | 
			
		||||
\longrightarrow
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet Ra "MathJax: right arrow" i
 | 
			
		||||
\Rightarrow
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet Im "MathJax: image operator" i
 | 
			
		||||
\operatorname{Im}
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet ggd "Grootste gemene deler" i
 | 
			
		||||
\operatorname{ggd}
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet fl "Floating point" i
 | 
			
		||||
\operatorname{fl}
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet Var "Variance" i
 | 
			
		||||
\operatorname{Var}
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet E "Expectation" i
 | 
			
		||||
\operatorname{E}
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet Cov "Covariance" i
 | 
			
		||||
\operatorname{Cov}
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
context "math()" i
 | 
			
		||||
snippet ntup "Alpha"
 | 
			
		||||
(x_1, \ldots, x_n)
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet mxn "Matrix" i
 | 
			
		||||
m \times n
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet mxn- "Matrix" i
 | 
			
		||||
$m \times n$-matrix
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet nxn "Matrix" i
 | 
			
		||||
n \times n
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet det "Determinant" i
 | 
			
		||||
\operatorname{det}(${1:A})$2
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet det| "Determinant alternative notation" i
 | 
			
		||||
|${1:A}|$2
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet Span "Span" i
 | 
			
		||||
\operatorname{Span}\\{$1\\}$2
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet Nul "Null" i
 | 
			
		||||
\operatorname{Nul}($1)$2
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet Col "Column space" i
 | 
			
		||||
\operatorname{Col}($1)$2
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet kern "Kernel" i
 | 
			
		||||
\operatorname{kern}($1)$2
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
context "math()"
 | 
			
		||||
snippet vec "Vector" i
 | 
			
		||||
\mathbf{$1}$2
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
context "math()"
 | 
			
		||||
snippet vec([A-z]) "Vector ..." r
 | 
			
		||||
`!p snip.rv = "\\mathbf{" + match.group(1) + "}"`$1
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet v1tovp "Vectors v indexed from 1 to p"
 | 
			
		||||
\mathbf{v_1},...,\mathbf{v_p}$2
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet a1toan "Vectors a indexed from 1 to n"
 | 
			
		||||
\mathbf{a_1},...,\mathbf{v_n}$2
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet .. "Dot dot dot" i
 | 
			
		||||
\dots $1
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet text "MathJax text" i
 | 
			
		||||
\text{$1}$2
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet leq "Less than or equal to" i
 | 
			
		||||
\leq
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet leq "Greater than or equal to" i
 | 
			
		||||
\geq
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet eat "Evaluated at" i
 | 
			
		||||
{\biggr\rvert}_{$1}$2
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet sketch "Link a sketch" i
 | 
			
		||||
[$1](file:///home/h/sketches/$2)
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet deck "Get anki deck"
 | 
			
		||||
`get-anki-decks`
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
# snippet ` "Inline code" i
 | 
			
		||||
# `$1`
 | 
			
		||||
# endsnippet
 | 
			
		||||
 | 
			
		||||
# Escape backticks
 | 
			
		||||
snippet `` "Code block" bA
 | 
			
		||||
\`\`\`$1
 | 
			
		||||
$2
 | 
			
		||||
\`\`\`
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet `tex "Latex block (see latex filter)" bA
 | 
			
		||||
\`\`\`{.tex}
 | 
			
		||||
$1
 | 
			
		||||
\`\`\`
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet `tik "Tikz block (see tikz filter)" bA
 | 
			
		||||
\`\`\`{.tex}
 | 
			
		||||
\\begin{tikzpicture}
 | 
			
		||||
$1
 | 
			
		||||
\\end{tikzpicture}
 | 
			
		||||
\`\`\`
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet task "Task" i
 | 
			
		||||
* [ ] $1 -- pro:$2
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet "(\b)fn(\d+)" "" ir
 | 
			
		||||
`!p snip.rv = snip.basename + "_" + match.group(2).zfill(2)`$1
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet "ch(\d+)" "Link chapter" ir
 | 
			
		||||
`!p
 | 
			
		||||
num_str = match.group(1).zfill(2)
 | 
			
		||||
title = 3*"."
 | 
			
		||||
link = snip.basename + "_" + num_str
 | 
			
		||||
snip.rv = num_str + ". " + linkify(title, link)
 | 
			
		||||
`
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet "ch(\d+)to(\d+)" "Link chapters ... to ..." irA
 | 
			
		||||
`!p
 | 
			
		||||
for i in range(int(match.group(1)), int(match.group(2)) + 1):
 | 
			
		||||
	num_str = str(i).zfill(2)
 | 
			
		||||
	title = 3*"."
 | 
			
		||||
	link = snip.basename + "_" + num_str
 | 
			
		||||
	snip.rv += num_str + ". " + linkify(title, link) + "\n"
 | 
			
		||||
`
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet "sec([\sA-z]+)" "Link section titled ..." r
 | 
			
		||||
`!p
 | 
			
		||||
snip.rv = "* " + linkify(match.group(1), f"{snip.basename}_{slugify(match.group(1))}")
 | 
			
		||||
`
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet cp(\d+) "Comment current page (and date)" r
 | 
			
		||||
`!p snip.rv = "<!--" + datetime.now().strftime("%Y-%m-%d") + " p. " + match.group(1) + "-->"`
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet (\d+)! "Factorial of ..." r
 | 
			
		||||
`!p snip.rv = factorial(int(match.group(1)))`
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet d "Date"
 | 
			
		||||
`!p snip.rv = datetime.now().strftime("%Y-%m-%d")`
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet :(\w*) "Fence" r
 | 
			
		||||
`!p snip.rv += ":::" + FENCES.get(match.group(1) or "", "") + "\n" `$1
 | 
			
		||||
`!p snip.rv += ":::"`$2
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet \[(\w*) "Fence inline" ir
 | 
			
		||||
`!p snip.rv += "["`$1`!p snip.rv += "]{." + FENCES.get(match.group(1) or "", "") + "}"`$2
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet ^eg "Example" r
 | 
			
		||||
E.g. $1
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
# E.g. after list (or list preceded by space)
 | 
			
		||||
snippet (\*\s|\*)eg "Example" r
 | 
			
		||||
* E.g. $1
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
# E.g. after dot (or dot preceded by space)
 | 
			
		||||
snippet (\.\s|\.)eg "Example" r
 | 
			
		||||
. E.g. $1
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet (?<!^|\*\s|\*|\.\s|\.)eg "Example" r
 | 
			
		||||
e.g. $1
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
# Zettelkasten to Anki
 | 
			
		||||
 | 
			
		||||
snippet td "TARGET DECK: <Deck name>"
 | 
			
		||||
TARGET DECK: $1::$2
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet clo "Cloze"
 | 
			
		||||
START
 | 
			
		||||
Cloze
 | 
			
		||||
${0:${VISUAL}}$1
 | 
			
		||||
END
 | 
			
		||||
$2
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet clos "Cloze start"
 | 
			
		||||
START
 | 
			
		||||
Cloze
 | 
			
		||||
$1
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet cloe "Cloze end"
 | 
			
		||||
END
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet clod
 | 
			
		||||
START
 | 
			
		||||
Cloze
 | 
			
		||||
**Definition$1**
 | 
			
		||||
 | 
			
		||||
$2
 | 
			
		||||
END
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet clop
 | 
			
		||||
START
 | 
			
		||||
Cloze
 | 
			
		||||
**Property$1**
 | 
			
		||||
 | 
			
		||||
$2
 | 
			
		||||
END
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet clot
 | 
			
		||||
START
 | 
			
		||||
Cloze
 | 
			
		||||
**Theorem$1**
 | 
			
		||||
 | 
			
		||||
$2
 | 
			
		||||
END
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet clol
 | 
			
		||||
START
 | 
			
		||||
Cloze
 | 
			
		||||
**Lemma$1**
 | 
			
		||||
 | 
			
		||||
$2
 | 
			
		||||
END
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet "c(\d+)" "Cloze <number>" r
 | 
			
		||||
{{c`!p snip.rv = int(match.group(1))`::${0:${VISUAL}}$1}}$2
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
# Match preceded by whitespace or start of line
 | 
			
		||||
snippet (?<!\S)z($|t|l|z|o|\.) "Zotero" r
 | 
			
		||||
`!p
 | 
			
		||||
 | 
			
		||||
ACTIONS = {
 | 
			
		||||
	"": "get_citekey",
 | 
			
		||||
	"t": "get_title",
 | 
			
		||||
	"l": "get_link",
 | 
			
		||||
	"z": "get_citekey_brackets",
 | 
			
		||||
	"o": "get_file",
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
snip.rv = zot(ACTIONS.get(match.group(1)))
 | 
			
		||||
`
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet zq "Zotero quote" r
 | 
			
		||||
`!p snip.rv = '>\n> --' + zot("get_citekey_brackets")`
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet acz "According to ..."
 | 
			
		||||
`!p snip.rv = "According to " + zot("get_citekey")`
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet azex "As ... explains"
 | 
			
		||||
`!p snip.rv = "As " + zot("get_citekey") + " explains, "`
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet iz "In ..."
 | 
			
		||||
`!p snip.rv = "In " + zot("get_citekey")`
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet izd "In ...'s definition"
 | 
			
		||||
`!p snip.rv = "In " + zot("get_citekey") + "'s definition, "`
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet zintends "... intends to ..." A
 | 
			
		||||
`!p snip.rv = zot("get_citekey") + " intends to "`
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet tfol "The following" wA
 | 
			
		||||
the following
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet tfolt "It follows that" wA
 | 
			
		||||
it follows that
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet ntfol "In the following" wA
 | 
			
		||||
in the following
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet algos "algorithms" wA
 | 
			
		||||
algorithms
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet algo "algorithm" wA
 | 
			
		||||
algorithm
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
# TODO: Make only available in tikzpicture
 | 
			
		||||
context "code()"
 | 
			
		||||
snippet q "State" w
 | 
			
		||||
\node[state] ($1) [] {$2};
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
context "code()"
 | 
			
		||||
snippet q0 "Initial state" w
 | 
			
		||||
\node[initial,state] ($1) {$2};
 | 
			
		||||
endsnippet
 | 
			
		||||
| 
						 | 
				
			
			@ -1,20 +0,0 @@
 | 
			
		|||
snippet reqtrace "(#%require racket/trace)" b
 | 
			
		||||
(#%require racket/trace)
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet strln "(string-length <string>)" b
 | 
			
		||||
(string-length $0)
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet impb "Import rnrs base libraries" b
 | 
			
		||||
(import (rnrs base (6))
 | 
			
		||||
        (rnrs io simple)$0)
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet def "(define <name> <variable>)" b
 | 
			
		||||
(define $0 $1)
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet defp "(define (<procedure-name> <arguments>))" b
 | 
			
		||||
(define ($0 $1))
 | 
			
		||||
endsnippet
 | 
			
		||||
| 
						 | 
				
			
			@ -1,19 +0,0 @@
 | 
			
		|||
extends html, javascript, css
 | 
			
		||||
 | 
			
		||||
snippet oM
 | 
			
		||||
onMount(() => $0)
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet oD
 | 
			
		||||
onDestroy(() => $0)
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet preJsf "JSON.stringify (formatted and wrapped)"
 | 
			
		||||
<pre>
 | 
			
		||||
{JSON.stringify($0, 0, 2)}
 | 
			
		||||
</pre>
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet :g "Open :global("
 | 
			
		||||
:global(
 | 
			
		||||
endsnippet
 | 
			
		||||
| 
						 | 
				
			
			@ -1,78 +0,0 @@
 | 
			
		|||
#
 | 
			
		||||
# Inspired by https://castel.dev/post/lecture-notes-1/
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
snippet beg "begin{} / end{}" b
 | 
			
		||||
\begin{$1}
 | 
			
		||||
	$0
 | 
			
		||||
\end{$1}
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet def "begin{definition} / end{definition}" b
 | 
			
		||||
\begin{definition}
 | 
			
		||||
	$0
 | 
			
		||||
\end{defintion}
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet fig "begin{figure} / end{figure}" b
 | 
			
		||||
\begin{figure}
 | 
			
		||||
	$0
 | 
			
		||||
\end{figure}
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet time "Time"
 | 
			
		||||
`date +%R`
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet i
 | 
			
		||||
\textit{$0}
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet b
 | 
			
		||||
\textbf{$0}
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet center
 | 
			
		||||
\begin{center}
 | 
			
		||||
$0
 | 
			
		||||
\end{center}
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet pac
 | 
			
		||||
\usepackage{$0}
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet foot
 | 
			
		||||
\footnote{$0}
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
# snippet m "Math" wA
 | 
			
		||||
# $${1}$`!p
 | 
			
		||||
# if t[2] and t[2][0] not in [',', '.', '?', '-', ' ']:
 | 
			
		||||
#		snip.rv = ' '
 | 
			
		||||
# else:
 | 
			
		||||
#		snip.rv = ''
 | 
			
		||||
# `$2
 | 
			
		||||
# endsnippet
 | 
			
		||||
 | 
			
		||||
snippet dm "Math" wA
 | 
			
		||||
\[
 | 
			
		||||
$1
 | 
			
		||||
\]$0
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet ch
 | 
			
		||||
\chapter{$0}
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet sec
 | 
			
		||||
\section{$0}
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet ssec
 | 
			
		||||
\subsection{$0}
 | 
			
		||||
endsnippet
 | 
			
		||||
 | 
			
		||||
snippet sssec
 | 
			
		||||
\subsubsection{$0}
 | 
			
		||||
endsnippet
 | 
			
		||||
							
								
								
									
										4
									
								
								.vimrc
								
								
								
								
							
							
						
						
									
										4
									
								
								.vimrc
								
								
								
								
							| 
						 | 
				
			
			@ -1,4 +0,0 @@
 | 
			
		|||
source ~/.vim/init/base.vim
 | 
			
		||||
source ~/.vim/init/mappings.vim
 | 
			
		||||
source ~/.vim/init/plugins.vim
 | 
			
		||||
source ~/.vim/init/colors.vim
 | 
			
		||||
| 
						 | 
				
			
			@ -8,3 +8,6 @@ bash <(curl -s https://git.hektormisplon.xyz/hektor/dots/raw/branch/master/.bin/
 | 
			
		|||
 | 
			
		||||
Note: will not set up *everything* (e.g. `/etc` configs, dependencies...), but
 | 
			
		||||
should get you up and running.
 | 
			
		||||
 | 
			
		||||
2025-10-04: I am migrating from Arch Linux to NixOS. For this transition, these
 | 
			
		||||
dotfiles are currently included as a subtree in my [NixOS repository](https://git.hektormisplon.xyz/hektor/nix).
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue