Add 'dots/' from commit '357b97a7692c8d5ec9666d8d7d7c98d81cb51cf0'

git-subtree-dir: dots
git-subtree-mainline: 2ad98cde17
git-subtree-split: 357b97a769
This commit is contained in:
2025-10-04 18:28:04 +02:00
232 changed files with 11175 additions and 0 deletions

View File

@@ -0,0 +1,35 @@
function GetClozeNumber()
let REGEX_CLOZE_START = '{{c\d\+::'
" Find previous cloze match
let prev_match = searchpos(REGEX_CLOZE_START, 'bW', line("gg"))
" Only get number if cloze was matched (i.e. when cursor does not end up at
" start of file)
if max(prev_match) != 0
" Get word under cursor (ignoring curly braces and `::`),
" get the second character of the word and cast it to an int
" add one for the next cloze number
return str2nr(expand("<cword>")[1]) + 1
else
return 1
endif
endfunction
" Wrap the next cloze number
function GetClozeStart()
return "{{c" . GetClozeNumber() . "::"
endfunction
function GetClozeEnd()
return "}}"
endfunction
let g:sandwich#recipes += [
\ {
\ 'buns': ['GetClozeStart()', 'GetClozeEnd()'],
\ 'expr' : 1,
\ 'filetype': ['pandoc'],
\ 'input': ['c'],
\ 'nesting': 1
\ }
\ ]

View File

@@ -0,0 +1,3 @@
" 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>

View File

@@ -0,0 +1,3 @@
nmap s <Nop>
xmap s <Nop>
let g:sandwich#recipes = deepcopy(g:sandwich#default_recipes)

View File

@@ -0,0 +1,4 @@
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

View File

@@ -0,0 +1,6 @@
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

View File

@@ -0,0 +1,15 @@
let g:pandoc#syntax#conceal#urls=1
let g:pandoc#syntax#codeblocks#embeds#langs=[
\ 'python',
\ 'bash',
\ 'javascript',
\ 'typescript',
\ 'html',
\ 'css',
\ 'scss',
\ 'json',
\ 'yaml'
\ ]
let g:pandoc#syntax#style#emphases=0 " Bug workaround
let g:pandoc#syntax#conceal#cchar_overrides = { "atx": " ", "li": "·" }
let g:pandoc#syntax#conceal#blacklist=[]

View File

@@ -0,0 +1,7 @@
au FileType pandoc call pandoc#completion#Init()
let g:pandoc#filetypes#pandoc_markdown=0
let g:pandoc#spell#enabled=0
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"]

View File

@@ -0,0 +1,14 @@
" Tidalcycles (sclang and vim-tidal)
let g:tidal_default_config = {"socket_name": "default", "target_pane": "tidal:1.1"}
let g:tidal_no_mappings = 1
au FileType tidal nm <buffer> <leader>ep <Plug>TidalParagraphSend
au FileType tidal nm <buffer> <leader>ee <Plug>TidalLineSend
au FileType tidal nnoremap <buffer> <leader>h :TidalHush<cr>
au FileType tidal com! -nargs=1 S :TidalSilence <args>
au FileType tidal com! -nargs=1 P :TidalPlay <args>
au FileType tidal com! -nargs=0 H :TidalHush
" SuperCollider
au BufEnter,BufWinEnter,BufNewFile,BufRead *.sc,*.scd se filetype=supercollider
au Filetype supercollider packadd scvim

View File

@@ -0,0 +1,4 @@
let g:vimtex_view_method='zathura'
let g:tex_flavor='latex'
let g:tex_conceal='abdmgs'
let g:vimtex_quickfix_mode=0

View File

@@ -0,0 +1,108 @@
" Change local buffer to directory of current file after the plugin has loaded
autocmd VimEnter * lcd %:p:h
" " Override wiki index mapping to also cd into the wiki
nm <leader>ww <plug>(wiki-index)
" nm <leader>l <plug>(wiki-next-link)
" nm <leader>h <plug>(wiki-prev-link)
" nm <leader>j <plug>(wiki-link-follow)
" nm <leader>k <plug>(wiki-link-return)
" nm <leader>s <plug>(wiki-link-follow-split)
" nm <leader>v <plug>(wiki-link-follow-vsplit)
autocmd BufEnter *.md if expand('%:t') =~ '_' | echo 'hierarchical relation' | endif
autocmd BufEnter *.md if expand('%:t') =~ '--' | echo 'relation' | endif
autocmd BufEnter *.md if expand('%:t') =~ '<>' | echo 'dichotomy' | endif
autocmd BufEnter *.md if expand('%:t') =~ 'my-' | echo 'personal file' | endif
autocmd BufEnter *.md if expand('%:t') =~ 'project_' | echo 'project file' | endif
" Only load wiki.vim for zk directory
let g:wiki_index_name='index'
" Links
let g:wiki_link_extension=''
" Do not automatically transform to link, use `<leader>wf` for this
let g:wiki_link_target_type='md'
vmap <leader>wf <plug>(wiki-link-toggle-visual)
"
" Links
"
"
" Options
"
"
" Events
"
"
" Mappings and commands
"
"
" Completion
"
let g:wiki_completion_enabled=1
let g:wiki_completion_case_sensitive=0
"
" Tags
"
"
" Templates
"
let g:wiki_templates = [
\ { 'match_re': '^my-',
\ 'source_filename': '.my.md'},
\ { 'match_re': '^project[-_]',
\ 'source_filename': '.project.md'},
\ { 'match_re': '^blog[-_]',
\ 'source_filename': '.blog.md'},
\ { 'match_re': '^journal[-_]',
\ 'source_filename': '.journal.md'},
\ { 'match_func': { x -> v:true },
\ 'source_filename': '.md'},
\]
"
" Advanced configuration
"
let g:wiki_filetypes=['md']
let g:wiki_root='~/.zk'
let g:wiki_global_load=0
let g:wiki_link_creation = {
\ 'md': {
\ 'link_type': 'md',
\ 'url_extension': '',
\ 'url_transform': { x -> substitute(tolower(x), '\s\+', '-', 'g') },
\ },
\ '_': {
\ 'link_type': 'wiki',
\ 'url_extension': '',
\ },
\}
" let g:wiki_link_default_schemes
" let g:wiki_link_schemes
let g:wiki_link_toggle_on_follow=0
" let g:wiki_link_transforms
" let g:wiki_mappings_use_defaults
" let g:wiki_mappings_global
" let g:wiki_mappings_local
" let g:wiki_mappings_local_journal
" ... tags
" let g:wiki_template_month_names
" let g:wiki_template_title_month =
" let g:wiki_template_title_week
" let g:wiki_ui_method
let g:wiki_write_on_nav=1
let g:wiki_zotero_root='~/.local/share/zotero'
" ... mappings and commands
" ...

View File

@@ -0,0 +1,5 @@
syn match Todo /TODO/
syn match Todo /FIXME/
syn match Todo /FIX/
syn match Todo /QUESTION/
syn match Todo /NOTE/

View File

@@ -0,0 +1,26 @@
" Override the pandoc-syntax highlighting colors for more subtle citations
hi! link pandocPCite Comment
hi! link pandocICite Comment
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
" Match text between cloze delimiters
syn match Cloze /\({{c\d\+::\)\@<=\(\_[A-Za-z0-9$\ \\\-\*,_`()]*\)\(}}\)\@=/ containedin=pandocUListItem,pandocListItem
hi! link ClozeDelimiter Special
hi! link Cloze Special
" Fix task UUIDs not being highlighted correctly in pandoc lists
syn match pandocUListItem /^>\=\s*[*+-]\s\+-\@!.*$/ nextgroup=pandocUListItem,pandocLaTeXMathBlock,pandocLaTeXInlineMath,pandocEscapedDollar,pandocDelimitedCodeBlock,pandocListItemContinuation contains=@Spell,pandocEmphasis,pandocStrong,pandocNoFormatted,pandocStrikeout,pandocSubscript,pandocSuperscript,pandocStrongEmphasis,pandocStrongEmphasis,pandocPCite,pandocICite,pandocCiteKey,pandocReferenceLabel,pandocLaTeXCommand,pandocLaTeXMathBlock,pandocLaTeXInlineMath,pandocEscapedDollar,pandocReferenceURL,pandocAutomaticLink,pandocFootnoteDef,pandocFootnoteBlock,pandocFootnoteID,pandocAmpersandEscape,TaskWikiTaskUuid skipempty display
syn match TaskWikiTaskUuid containedin=TaskWikiTask /\v#([A-Z]:)?[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/
syn match TaskWikiTaskUuid containedin=TaskWikiTask /\v#([A-Z]:)?[0-9a-fA-F]{8}$/
highlight link TaskWikiTaskUuid Comment
:runtime! syntax/_comment_keywords.vim

View File

@@ -0,0 +1,5 @@
syn keyword Operator \+ conceal cchar=¬
syn keyword Operator , conceal cchar=
syn keyword Operator ; conceal cchar=
:runtime! syntax/_comment_keywords.vim

View File

@@ -0,0 +1,39 @@
syntax keyword Statement define conceal cchar=
syn keyword Operator not conceal cchar=¬
syn keyword Operator and conceal cchar=
syn keyword Operator or conceal cchar=
syn keyword Operator mod conceal cchar=%
syn keyword Operator exp conceal cchar=^
syn keyword Operator sqrt conceal cchar=
syn keyword Operator quote conceal cchar='
" Conceal greek letters
syn keyword Operator alpha conceal cchar=α
syn keyword Operator beta conceal cchar=β
syn keyword Operator gamma conceal cchar=γ
syn keyword Operator delta conceal cchar=δ
syn keyword Operator epsilon conceal cchar=ε
syn keyword Operator zeta conceal cchar=ζ
syn keyword Operator eta conceal cchar=η
syn keyword Operator theta conceal cchar=θ
syn keyword Operator iota conceal cchar=ι
syn keyword Operator kappa conceal cchar=κ
syn keyword Operator lambda conceal cchar=λ
syn keyword Operator mu conceal cchar=μ
syn keyword Operator nu conceal cchar=ν
syn keyword Operator xi conceal cchar=ξ
syn keyword Operator omicron conceal cchar=ο
syn keyword Operator pi conceal cchar=π
syn keyword Operator rho conceal cchar=ρ
syn keyword Operator sigma conceal cchar=σ
syn keyword Operator tau conceal cchar=τ
syn keyword Operator upsilon conceal cchar=υ
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

210
dots/.vim/colors/yang.vim Normal file
View File

@@ -0,0 +1,210 @@
" 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

212
dots/.vim/colors/yin.vim Normal file
View File

@@ -0,0 +1,212 @@
" 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

View File

@@ -0,0 +1 @@
autocmd BufNewFile,BufReadPost *.pl set filetype=prolog

View File

@@ -0,0 +1 @@
set mps+==:;

View File

@@ -0,0 +1,22 @@
" Anki helper functions
" Convert cloze note to regular text
"
" * `AnkiRemoveAllClozes` all cloze notes in file
" * `AnkiRemoveSelectedClozes` all clozes in selected range
"
" E.g.
"
" ```markdown
" START
" Cloze
" In this sentence {{c1::this word}} was closed.
" END
" ```
"
" ```markdown
" In this sentence this word was closed.
" ```
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

View File

@@ -0,0 +1,19 @@
set cc=81
set cocu=""
func! GetContext()
" https://stackoverflow.com/questions/9464844/how-to-get-group-name-of-highlighting-under-cursor-in-vim
if !exists("*synstack")
return
endif
let matches = map(synstack(line('.'), col('.')), 'synIDattr(v:val, "name")')
if index(matches, 'pandocLaTeXInlineMath') >= 0
echo 'math_inline'
elseif index(matches, 'pandocLaTeXMathBlock') >= 0
echo 'math_block'
elseif !empty(matches)
echo matches[0]
else
echo ''
endif
endfunc
com! -nargs=0 GetContext :call GetContext()

View File

@@ -0,0 +1,25 @@
"
" Source: https://wiki.call-cc.org/vim / Jonathan Palardy
"
" Note, this is assuming you have an R5RS Scheme REPL runnning in the second
" TMUX pane.
" Send `(load <current-file>)` to tmux pane
nmap <leader>rf :call Scheme_send_sexp("(#%require xrepl)(load \"" . expand("%:p") . "\")\n")<cr>
nmap <leader>re :call Scheme_eval_defun()<cr>
" Send s-expression to TMUX buffer
fun! Scheme_send_sexp(sexp)
let ss = escape(a:sexp, '\"')
" Send to second tmux pane
call system("tmux send-keys -t 1 \"" . ss . "\n\"")
endfun
" Send s-expression under cursor to TMUX buffer
fun! Scheme_eval_defun()
let pos = getpos('.')
silent! exec "normal! 99[(yab"
call Scheme_send_sexp(@")
call setpos('.', pos)
endfun

33
dots/.vim/init/base.vim Normal file
View File

@@ -0,0 +1,33 @@
" General config {{{
"
" Tip: acronyms for overview, use `:h` for a quick lookup.
set nocp " Disable vi incompatibility
filetype plugin indent on " Filetype recognition
set enc=utf8 " Default to UTF-8 encoding
set hid " Allow hiding unsaved buffers
set tf " Fast tty
set ut=300 " 300ms for update time
set to tm=200 ttm=5 " Timeouts
set shm+=c " ...
set ul=500 hi=500 " History and undo
set nu rnu scl=number " Line numbers & signs
set nowrap
set bs=indent,eol,start " Indentation
set ai ts=2 sts=2 sw=2 et " Indentation
set is ic scs hls " Search
set lz " Only essential redraws
set nobk nowb noswf " No backups
set vi='20,\"101 " Max 100 lines in registers
set novb " Bell
set cole=0 cocu="" " Conceal
set cb=unnamedplus " Clipboard
set fcs+=vert:│ " Cleaner split separator (tmux style)
set list
set lcs=trail,tab:→\ ,nbsp:␣ " Whitespace rendering
set ar " Autoread
set spellsuggest+=5 " Limit spell suggestions
set wildignore+=*/node_modules/*,*/tmp/*,*.so,*.swp,*.zip
set thesaurus+=~/.vim/thesaurus/mthesaur.txt
" }}}

View File

@@ -0,0 +1,3 @@
set termguicolors
set bg=light
hi Normal ctermbg=none guibg=NONE

View File

@@ -0,0 +1,44 @@
" 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>

View File

@@ -0,0 +1,34 @@
" Plugins {{{
" Plug setup {{{
call plug#begin()
Plug 'machakann/vim-sandwich'
Plug 'Shougo/context_filetype.vim'
Plug 'editorconfig/editorconfig-vim'
Plug 'honza/vim-snippets'
Plug 'chrisbra/unicode.vim'
Plug 'ap/vim-css-color'
" Jupyter
Plug 'quarto-dev/quarto-vim'
" LaTeX
Plug 'lervag/vimtex'
" Wiki
Plug 'lervag/wiki.vim'
Plug 'hektor/taskwiki'
" Markdown
Plug 'vim-pandoc/vim-pandoc'
Plug 'vim-pandoc/vim-pandoc-syntax'
Plug 'ferrine/md-img-paste.vim'
" TidalCycles
Plug 'supercollider/scvim'
Plug 'tidalcycles/vim-tidal'
" GLSL
Plug 'tikhomirov/vim-glsl'
Plug 'timtro/glslView-nvim'
" Jupyter notebooks
Plug 'goerz/jupytext.vim'
" OpenSCAD
Plug 'sirtaj/vim-openscad'
call plug#end()
" }}}

View File

@@ -0,0 +1,14 @@
" Taken from /usr/share/vim/vim90/defaults.vim
augroup vimStartup
au!
" When editing a file, always jump to the last known cursor position.
" Don't do it when the position is invalid, when inside an event handler
" (happens when dropping a file on gvim) and for a commit message (it's
" likely a different one than last time).
autocmd BufReadPost *
\ if line("'\"") >= 1 && line("'\"") <= line("$") && &ft !~# 'commit'
\ | exe "normal! g`\""
\ | endif
augroup END

24
dots/.vim/plugin/fold.vim Normal file
View File

@@ -0,0 +1,24 @@
" Folds {{{
set foldmethod=marker
augroup filetype_vim
autocmd!
autocmd FileType vim setlocal foldmethod=marker
augroup END
augroup filetype_python
autocmd!
autocmd FileType python setlocal foldmethod=indent
augroup END
augroup filetype_sh
autocmd!
autocmd FileType sh setlocal foldmethod=marker
augroup END
augroup filetype_snippets
autocmd!
autocmd FileType snippets setlocal foldmethod=marker
augroup END
" }}}

View File

@@ -0,0 +1,3 @@
let g:netrw_winsize = 30
let g:netrw_liststyle=3
let g:netrw_banner = 0

View File

@@ -0,0 +1,10 @@
fu! Compile()
if expand('%:e') == "md"
:silent exec "!pandoc % -s -o /tmp/op.pdf &"
endif
endfu
fu! Preview()
:call Compile()
:silent exec "!zathura /tmp/op.pdf &"
endfu

View File

@@ -0,0 +1,5 @@
augroup Vim
au!
" Reload vim config when ~/.vimrc is changed
au BufWritePost $HOME/.vimrc so $MYVIMRC | redraw | echo "Reloaded vimrc"
augroup END

View File

@@ -0,0 +1,7 @@
se ls=2
se stl=\ %0*%n
se stl+=\ %m
se stl+=\ %y%0*
se stl+=\ %<%F
se stl+=\ %0*%=%5l%*
se stl+=%0*/%L%*

View File

@@ -0,0 +1,6 @@
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()

20
dots/.vim/plugin/zk.vim Normal file
View File

@@ -0,0 +1,20 @@
let s:zk_preview_enabled = 0
let s:live_server_job = -1
au BufEnter /home/h/.zk/*.md silent exe '!echo "%" > /home/h/.zk/current-zettel.txt'
function! ToggleZKPreview()
if s:zk_preview_enabled == 1
let s:zk_preview_enabled = 0
call jobstop(s:live_server_job)
au! ZKPreview
else
let s:zk_preview_enabled = 1
let s:live_server_job = jobstart('live-server --watch=/home/h/.zk/current-zettel-content.html --open=current-zettel-content.html --port=8080')
augroup ZKPreview
au BufEnter /home/h/.zk/*.md silent exe '!cat "%:r.html" > /home/h/.zk/current-zettel-content.html'
au BufWritePost /home/h/.zk/*.md silent exe '!make && cat "%:r.html" > /home/h/.zk/current-zettel-content.html'
augroup END
endif
endfunction
command! ToggleZKPreview call ToggleZKPreview()
nn <leader>o :ToggleZKPreview<cr> :!xdg-open http://localhost:8080/%:t:r.html & <cr>

View File

@@ -0,0 +1,7 @@
snippet fne "Filename (+extension)" i
`!p snip.rv = snip.fn`
endsnippet
# snippet ^fn "Filename basename" ir
# `!p snip.rv = snip.basename`
endsnippet

View File

@@ -0,0 +1,72 @@
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

View File

@@ -0,0 +1,51 @@
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

View File

@@ -0,0 +1,11 @@
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

View File

@@ -0,0 +1,900 @@
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

View File

@@ -0,0 +1,20 @@
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

View File

@@ -0,0 +1,19 @@
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

View File

@@ -0,0 +1,78 @@
#
# 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