refactor(nvim): move config out of module
This commit is contained in:
@@ -1,6 +0,0 @@
|
||||
# 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,37 +0,0 @@
|
||||
vim.cmd([[
|
||||
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
|
||||
\ }
|
||||
\ ]
|
||||
]])
|
||||
@@ -1,3 +0,0 @@
|
||||
require("auto-session").setup({
|
||||
auto_session_enabled = vim.env.KITTY_SCROLLBACK_NVIM ~= "true", -- See kitty-scrollback.nvim
|
||||
})
|
||||
@@ -1,26 +0,0 @@
|
||||
require("claudecode").setup({
|
||||
-- terminal = {
|
||||
-- provider = "snacks",
|
||||
-- snacks_win_opts = {
|
||||
-- position = "float",
|
||||
-- width = 0.8,
|
||||
-- height = 0.8,
|
||||
-- border = "rounded",
|
||||
-- },
|
||||
-- },
|
||||
-- diff_opts = {
|
||||
-- layout = "vertical",
|
||||
-- },
|
||||
})
|
||||
|
||||
local map = vim.keymap.set
|
||||
|
||||
map({ "n", "t" }, "<C-_>", "<cmd>ClaudeCode<cr>", { desc = "Toggle Claude Code" })
|
||||
map("n", "<leader>cf", "<cmd>ClaudeCodeFocus<cr>", { desc = "Focus Claude Code" })
|
||||
map("n", "<leader>cC", "<cmd>ClaudeCode --continue<cr>", { desc = "Claude Code (continue)" })
|
||||
map("n", "<leader>cr", "<cmd>ClaudeCode --resume<cr>", { desc = "Claude Code (resume)" })
|
||||
map("n", "<leader>cm", "<cmd>ClaudeCodeSelectModel<cr>", { desc = "Claude Code select model" })
|
||||
map("n", "<leader>cb", "<cmd>ClaudeCodeAdd %<cr>", { desc = "Add buffer to Claude Code" })
|
||||
map("v", "<leader>cs", "<cmd>ClaudeCodeSend<cr>", { desc = "Send selection to Claude Code" })
|
||||
map("n", "<leader>co", "<cmd>ClaudeCodeDiffAccept<cr>", { desc = "Accept Claude Code diff" })
|
||||
map("n", "<leader>cd", "<cmd>ClaudeCodeDiffDeny<cr>", { desc = "Deny Claude Code diff" })
|
||||
@@ -1,7 +0,0 @@
|
||||
require("codecompanion").setup({
|
||||
ignore_warnings = true,
|
||||
strategies = {
|
||||
chat = { adapter = "openai" },
|
||||
inline = { adapter = "openai" },
|
||||
},
|
||||
})
|
||||
@@ -1,30 +0,0 @@
|
||||
require("conform").setup({
|
||||
format_after_save = {
|
||||
lsp_fallback = false,
|
||||
async = false,
|
||||
timeout_ms = 500,
|
||||
},
|
||||
formatters_by_ft = {
|
||||
awk = { "awk" },
|
||||
bash = { "shellcheck" },
|
||||
c = { "clang-format" },
|
||||
cpp = { "clang-format" },
|
||||
css = { "prettierd", "prettier", stop_after_first = true },
|
||||
gdscript = { "gdformat" },
|
||||
haskell = { "ormolu" },
|
||||
html = { "prettierd", "prettier", stop_after_first = true },
|
||||
javascript = { "eslint_d", "eslint", "prettierd", "prettier", stop_after_first = true },
|
||||
javascriptreact = { "eslint_d", "eslint", "prettierd", "prettier", stop_after_first = true },
|
||||
json = { "prettierd", "prettier", stop_after_first = true },
|
||||
jsonc = { "prettierd", "prettier", stop_after_first = true },
|
||||
lua = { "stylua" }, -- configured in stylua.toml
|
||||
markdown = { "prettierd", "prettier", stop_after_first = true },
|
||||
nix = { "nixfmt" },
|
||||
python = { "isort", "black" },
|
||||
rust = { "rustfmt", lsp_fallback = "fallback" },
|
||||
svelte = { "eslint_d", "prettierd", "prettier", stop_after_first = true },
|
||||
typescript = { "eslint_d", "prettierd", "prettier", stop_after_first = true },
|
||||
typescriptreact = { "eslint_d", "eslint", "prettierd", "prettier", stop_after_first = true },
|
||||
-- yaml = { "prettierd", "prettier", stop_after_first = true },
|
||||
},
|
||||
})
|
||||
@@ -1,7 +0,0 @@
|
||||
require("eyeliner").setup({
|
||||
highlight_on_key = true,
|
||||
dim = true,
|
||||
})
|
||||
|
||||
vim.api.nvim_set_hl(0, "EyelinerPrimary", { bold = true, underline = true })
|
||||
vim.api.nvim_set_hl(0, "EyelinerSecondary", { underline = true })
|
||||
@@ -1 +0,0 @@
|
||||
require("fidget").setup()
|
||||
@@ -1,16 +0,0 @@
|
||||
local fzf = require("fzf-lua")
|
||||
|
||||
fzf.setup({ "max-perf" })
|
||||
|
||||
vim.keymap.set("n", "<leader>f<leader>", fzf.builtin) -- Help
|
||||
vim.keymap.set("n", "<leader>fc", fzf.commands)
|
||||
vim.keymap.set("n", "<leader>ff", fzf.files)
|
||||
vim.keymap.set("n", "<leader>fg", fzf.live_grep_native)
|
||||
vim.keymap.set("n", "<leader>fb", fzf.buffers)
|
||||
vim.keymap.set("n", "<leader>fd", fzf.diagnostics_workspace)
|
||||
vim.keymap.set("n", "<leader>fhe", fzf.help_tags)
|
||||
vim.keymap.set("n", "<leader>fhi", fzf.search_history)
|
||||
vim.keymap.set("n", "<leader>fma", fzf.marks)
|
||||
vim.keymap.set("n", "<leader>fmp", fzf.man_pages)
|
||||
|
||||
vim.keymap.set("i", "<c-f>", fzf.complete_path)
|
||||
@@ -1,12 +0,0 @@
|
||||
local gitsigns = require("gitsigns")
|
||||
|
||||
gitsigns.setup({
|
||||
current_line_blame_formatter = "<author>, <author_time:%R> - <summary>",
|
||||
-- linehl = true,
|
||||
current_line_blame_opts = {
|
||||
delay = 0,
|
||||
virt_text_pos = "right_align",
|
||||
},
|
||||
})
|
||||
|
||||
vim.api.nvim_create_user_command("Blame", gitsigns.toggle_current_line_blame, { nargs = "?" })
|
||||
@@ -1,35 +0,0 @@
|
||||
local hydra_repl = "hydra-repl"
|
||||
|
||||
if not vim.fn.executable(hydra_repl) then
|
||||
return
|
||||
end
|
||||
|
||||
local function send(lines)
|
||||
vim.system({ hydra_repl, table.concat(lines, "\n") })
|
||||
end
|
||||
|
||||
local function get_paragraph(buf)
|
||||
local start_ = vim.fn.search("^$", "bnW")
|
||||
local end_ = vim.fn.search("^$", "nW") - 1
|
||||
if end_ < vim.api.nvim_win_get_cursor(0)[1] then
|
||||
end_ = vim.api.nvim_buf_line_count(buf)
|
||||
end
|
||||
return vim.api.nvim_buf_get_lines(buf, start_, end_, false)
|
||||
end
|
||||
|
||||
local function get_selection(buf)
|
||||
return vim.api.nvim_buf_get_lines(buf, vim.fn.line("'<") - 1, vim.fn.line("'>"), false)
|
||||
end
|
||||
|
||||
vim.api.nvim_create_autocmd("FileType", {
|
||||
pattern = "javascript",
|
||||
callback = function(e)
|
||||
if vim.fn.fnamemodify(vim.api.nvim_buf_get_name(e.buf), ":e") ~= "hydra" then
|
||||
return
|
||||
end
|
||||
|
||||
local buf = e.buf
|
||||
vim.keymap.set("n", "<CR>", function() send(get_paragraph(buf)) end, { buffer = buf, desc = "hydra: send block" })
|
||||
vim.keymap.set("v", "<CR>", function() send(get_selection(buf)) end, { buffer = buf, desc = "hydra: send selection" })
|
||||
end,
|
||||
})
|
||||
@@ -1,12 +0,0 @@
|
||||
if not vim.env.KITTY_WINDOW_ID then return end
|
||||
|
||||
require("image").setup({
|
||||
backend = "kitty",
|
||||
kitty_method = "normal",
|
||||
processor = "magick_cli",
|
||||
integrations = {
|
||||
markdown = {
|
||||
filetypes = { "markdown", "pandoc" },
|
||||
},
|
||||
},
|
||||
})
|
||||
@@ -1 +0,0 @@
|
||||
require("kitty-scrollback").setup()
|
||||
@@ -1,7 +0,0 @@
|
||||
require("lsp_lines").setup()
|
||||
|
||||
vim.diagnostic.config({
|
||||
virtual_text = false,
|
||||
})
|
||||
|
||||
vim.keymap.set("", "<leader>dd", require("lsp_lines").toggle, { desc = "Toggle lsp_lines" })
|
||||
@@ -1,196 +0,0 @@
|
||||
require("neodev").setup() -- should setup before lspconfig
|
||||
|
||||
local cmp_nvim_lsp = require("cmp_nvim_lsp")
|
||||
local capabilities = cmp_nvim_lsp.default_capabilities()
|
||||
|
||||
local servers = {
|
||||
bashls = {},
|
||||
eslint = {
|
||||
settings = {
|
||||
--Assuming prettier/prettierd will handle formatting, we don't need to see these errors
|
||||
rulesCustomizations = {
|
||||
{ rule = "prettier/prettier", severity = "off" },
|
||||
},
|
||||
format = false,
|
||||
},
|
||||
},
|
||||
emmet_language_server = {},
|
||||
gdscript = {},
|
||||
helm_ls = {
|
||||
filetypes = { "yaml", "helm", "yaml.helm-values" },
|
||||
},
|
||||
hls = { filetypes = { "haskell", "lhaskell", "cabal" } },
|
||||
html = {},
|
||||
jsonls = {
|
||||
settings = {
|
||||
json = {
|
||||
schemas = require("schemastore").json.schemas(),
|
||||
validate = { enable = true },
|
||||
},
|
||||
},
|
||||
},
|
||||
lua_ls = {
|
||||
on_init = function(client)
|
||||
if client.workspace_folders then
|
||||
local path = client.workspace_folders[1].name
|
||||
if
|
||||
path ~= vim.fn.stdpath("config")
|
||||
and (vim.uv.fs_stat(path .. "/.luarc.json") or vim.uv.fs_stat(path .. "/.luarc.jsonc"))
|
||||
then
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
client.config.settings.Lua = vim.tbl_deep_extend("force", client.config.settings.Lua, {
|
||||
runtime = {
|
||||
version = "LuaJIT",
|
||||
path = {
|
||||
"lua/?.lua",
|
||||
"lua/?/init.lua",
|
||||
},
|
||||
},
|
||||
workspace = {
|
||||
checkThirdParty = false,
|
||||
library = {
|
||||
vim.env.VIMRUNTIME,
|
||||
},
|
||||
},
|
||||
})
|
||||
end,
|
||||
settings = {
|
||||
Lua = {},
|
||||
},
|
||||
},
|
||||
nixd = {
|
||||
settings = {
|
||||
nixd = {
|
||||
nixpkgs = {
|
||||
expr = "import <nixpkgs> { }",
|
||||
expr = 'import (builtins.getFlake ("git+file://" + toString ../../../../../.)).inputs.nixpkgs { }',
|
||||
},
|
||||
},
|
||||
options = {
|
||||
nixos = {
|
||||
expr = '(builtins.getFlake ("git+file://" + toString ../../../../../.)).nixosConfigurations."'
|
||||
.. vim.fn.hostname()
|
||||
.. '".options',
|
||||
},
|
||||
home_manager = {
|
||||
expr = '(builtins.getFlake ("git+file://" + toString ../../../../../.)).homeConfigurations."'
|
||||
.. vim.fn.expand("$USER")
|
||||
.. "@"
|
||||
.. vim.fn.hostname()
|
||||
.. '".options',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
openscad_ls = {},
|
||||
pyright = {},
|
||||
svelte = {
|
||||
plugin = {
|
||||
svelte = {
|
||||
defaultScriptLanguage = "ts",
|
||||
},
|
||||
},
|
||||
},
|
||||
tailwindcss = {},
|
||||
ts_ls = {},
|
||||
-- vtsls = {
|
||||
-- maxTsServerMemory = 16384,
|
||||
-- filetypes = {
|
||||
-- "javascript",
|
||||
-- "javascriptreact",
|
||||
-- "javascript.jsx",
|
||||
-- "typescript",
|
||||
-- "typescriptreact",
|
||||
-- "typescript.tsx",
|
||||
-- },
|
||||
-- settings = {
|
||||
-- complete_function_calls = true,
|
||||
-- vtsls = {
|
||||
-- enableMoveToFileCodeAction = true,
|
||||
-- autoUseWorkspaceTsdk = true,
|
||||
-- experimental = {
|
||||
-- completion = {
|
||||
-- enableServerSideFuzzyMatch = true,
|
||||
-- },
|
||||
-- },
|
||||
-- },
|
||||
-- typescript = {
|
||||
-- updateImportsOnFileMove = { enabled = "always" },
|
||||
-- suggest = {
|
||||
-- completeFunctionCalls = true,
|
||||
-- },
|
||||
-- inlayHints = {
|
||||
-- enumMemberValues = { enabled = true },
|
||||
-- functionLikeReturnTypes = { enabled = true },
|
||||
-- parameterNames = { enabled = "literals" },
|
||||
-- parameterTypes = { enabled = true },
|
||||
-- propertyDeclarationTypes = { enabled = true },
|
||||
-- variableTypes = { enabled = false },
|
||||
-- },
|
||||
-- },
|
||||
-- },
|
||||
-- },
|
||||
yamlls = {
|
||||
settings = {
|
||||
yaml = {
|
||||
schemaStore = {
|
||||
-- You must disable built-in schemaStore support if you want to use
|
||||
-- this plugin and its advanced options like `ignore`.
|
||||
enable = false,
|
||||
-- Avoid TypeError: Cannot read properties of undefined (reading 'length')
|
||||
url = "",
|
||||
},
|
||||
schemas = require("schemastore").yaml.schemas(),
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
for server, config in pairs(servers) do
|
||||
config.capabilities = capabilities
|
||||
vim.lsp.config(server, config)
|
||||
end
|
||||
|
||||
vim.lsp.enable(vim.tbl_keys(servers))
|
||||
|
||||
vim.api.nvim_create_autocmd("LspAttach", {
|
||||
callback = function(e)
|
||||
local opts = { buffer = e.bufnr }
|
||||
local set = vim.keymap.set
|
||||
local lsp_buf = vim.lsp.buf
|
||||
set("n", "gD", lsp_buf.declaration, opts)
|
||||
set("n", "gd", lsp_buf.definition, opts)
|
||||
set("n", "K", lsp_buf.hover, opts)
|
||||
set("n", "gi", lsp_buf.implementation, opts)
|
||||
set("n", "<C-k>", lsp_buf.signature_help, opts)
|
||||
set("n", "<space>wa", lsp_buf.add_workspace_folder, opts)
|
||||
set("n", "<space>wr", lsp_buf.remove_workspace_folder, opts)
|
||||
set("n", "<space>wl", function()
|
||||
print(vim.inspect(lsp_buf.list_workspace_folders()))
|
||||
end, opts)
|
||||
set("n", "<space>D", lsp_buf.type_definition, opts)
|
||||
set("n", "<space>rn", lsp_buf.rename, opts)
|
||||
set({ "n", "v" }, "<space>ca", lsp_buf.code_action, opts)
|
||||
set("n", "gr", lsp_buf.references, opts)
|
||||
|
||||
-- Taken from https://blog.viktomas.com/graph/neovim-lsp-rename-normal-mode-keymaps/
|
||||
set("n", "<leader>r", vim.lsp.buf.rename)
|
||||
-- function()
|
||||
-- -- Automatically switch to `cmdwin` for normal mode renaming
|
||||
-- -- (normally you would have to press <C-f> to open the `cmdwin`)
|
||||
-- vim.api.nvim_create_autocmd({ "CmdlineEnter" }, {
|
||||
-- callback = function()
|
||||
-- local key = vim.api.nvim_replace_termcodes("<C-f>", true, false, true)
|
||||
-- vim.api.nvim_feedkeys(key, "c", false)
|
||||
-- vim.api.nvim_feedkeys("0", "n", false)
|
||||
-- return true
|
||||
-- end,
|
||||
-- })
|
||||
-- vim.lsp.buf.rename()
|
||||
-- end, bufoptsWithDesc("Rename symbol")
|
||||
-- )
|
||||
end,
|
||||
})
|
||||
@@ -1,13 +0,0 @@
|
||||
local ls = require("luasnip")
|
||||
|
||||
ls.config.set_config({
|
||||
history = true,
|
||||
update_events = "TextChanged,TextChangedI",
|
||||
delete_check_events = "TextChanged",
|
||||
ext_prio_increase = 1,
|
||||
enable_autosnippets = true,
|
||||
store_selection_keys = "<Tab>",
|
||||
})
|
||||
|
||||
require("luasnip.loaders.from_lua").lazy_load({ paths = { "~/.config/nvim/snips" } })
|
||||
require("luasnip.loaders.from_vscode").lazy_load({ paths = { "~/.config/Code - Insiders/User/snippets" } })
|
||||
@@ -1,5 +0,0 @@
|
||||
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,94 +0,0 @@
|
||||
local cmp = require("cmp")
|
||||
local luasnip = require("luasnip")
|
||||
|
||||
-- TODO: Fix command mode completion (should behave similar to insert mode)
|
||||
|
||||
local c_j = cmp.mapping(function()
|
||||
if cmp.visible() then
|
||||
cmp.select_next_item()
|
||||
else
|
||||
cmp.complete()
|
||||
cmp.select_next_item()
|
||||
end
|
||||
end, { "i", "s" })
|
||||
|
||||
local c_k = cmp.mapping(function(fallback)
|
||||
if cmp.visible() then
|
||||
cmp.select_prev_item()
|
||||
else
|
||||
-- NOTE: Keep <C-k> fallback for digraphs
|
||||
-- ```lua
|
||||
-- cmp.complete()
|
||||
-- cmp.select_prev_item()
|
||||
-- ```
|
||||
fallback()
|
||||
end
|
||||
end, { "i", "s" })
|
||||
|
||||
local c_h = cmp.mapping(function(fallback)
|
||||
if luasnip.jumpable(-1) then
|
||||
luasnip.jump(-1)
|
||||
else
|
||||
fallback()
|
||||
end
|
||||
end, { "i", "s" })
|
||||
|
||||
local c_l = cmp.mapping(function(fallback)
|
||||
if cmp.visible() and cmp.get_active_entry() then
|
||||
cmp.confirm()
|
||||
elseif luasnip.expand_or_jumpable() then
|
||||
luasnip.expand_or_jump()
|
||||
else
|
||||
fallback()
|
||||
end
|
||||
end, { "i", "s" })
|
||||
|
||||
cmp.setup({
|
||||
completion = {
|
||||
autocomplete = false,
|
||||
},
|
||||
snippet = {
|
||||
expand = function(args)
|
||||
luasnip.lsp_expand(args.body)
|
||||
end,
|
||||
},
|
||||
-- See `:h luasnip` for the commands
|
||||
-- Note: have not added choice note mappings yet
|
||||
mapping = cmp.mapping.preset.insert({
|
||||
["<C-j>"] = c_j,
|
||||
["<C-k>"] = c_k,
|
||||
["<C-h>"] = c_h,
|
||||
["<C-l>"] = c_l,
|
||||
["<CR>"] = c_l,
|
||||
}),
|
||||
sources = {
|
||||
{ name = "zk" },
|
||||
{ name = "nvim_lsp" },
|
||||
{ name = "luasnip", max_item_count = 16 },
|
||||
{ name = "path" },
|
||||
{ name = "buffer", max_item_count = 8 },
|
||||
},
|
||||
window = {
|
||||
completion = cmp.config.window.bordered({ border = { "┌", "─", "┐", "│", "┘", "─", "└", "│" } }),
|
||||
documentation = cmp.config.window.bordered({ border = { "┌", "─", "┐", "│", "┘", "─", "└", "│" } }),
|
||||
},
|
||||
formatting = {
|
||||
fields = {
|
||||
"abbr",
|
||||
"menu",
|
||||
"kind",
|
||||
},
|
||||
format = function(entry, item)
|
||||
-- Rename kind to shorthand
|
||||
item.menu = ({
|
||||
nvim_lsp = "[lsp]",
|
||||
luasnip = "[snip]",
|
||||
path = "[path]",
|
||||
buffer = "[buf]",
|
||||
})[entry.source.name]
|
||||
|
||||
return item
|
||||
end,
|
||||
expandable_indicator = true,
|
||||
},
|
||||
})
|
||||
@@ -1 +0,0 @@
|
||||
require("dbee").setup()
|
||||
@@ -1 +0,0 @@
|
||||
require("nvim-highlight-colors").setup({})
|
||||
@@ -1,35 +0,0 @@
|
||||
vim.env.ESLINT_D_PPID = vim.fn.getpid()
|
||||
|
||||
local eslint_linter = "eslint_d"
|
||||
|
||||
require("lint").linters_by_ft = {
|
||||
bash = { "shellcheck" },
|
||||
c = { "clangtidy", "flawfinder" },
|
||||
cmake = { "cmakelint" },
|
||||
cpp = { "clangtidy", "flawfinder" }, -- "cpplint", "cppcheck", "flawfinder"
|
||||
css = { "stylelint" },
|
||||
dockerfile = { "hadolint" },
|
||||
editorconfig = { "editorconfig-checker" },
|
||||
haskell = { "hlint" },
|
||||
-- html = { "htmlhint" },
|
||||
-- javascript = { eslint_linter },
|
||||
-- javascriptreact = { eslint_linter },
|
||||
gdscript = { "gdlint" },
|
||||
latex = { "chktex" },
|
||||
-- lua = { "luacheck", "selene" },
|
||||
make = { "checkmake" },
|
||||
-- pandoc = { "proselint", "woke" },
|
||||
-- python = { "pylint" },
|
||||
sh = { "shellcheck" },
|
||||
svelte = { eslint_linter },
|
||||
systemd = { "systemdlint" },
|
||||
-- typescript = { eslint_linter },
|
||||
-- typescriptreact = { eslint_linter },
|
||||
yaml = { "yamllint" },
|
||||
}
|
||||
|
||||
vim.api.nvim_create_autocmd({ "BufEnter", "BufWritePost", "InsertLeave" }, {
|
||||
callback = function()
|
||||
require("lint").try_lint()
|
||||
end,
|
||||
})
|
||||
@@ -1,8 +0,0 @@
|
||||
require("ts_context_commentstring").setup({ enable_autocmd = false })
|
||||
|
||||
-- https://github.com/JoosepAlviste/nvim-ts-context-commentstring/issues/109
|
||||
local get_option = vim.filetype.get_option
|
||||
vim.filetype.get_option = function(filetype, option)
|
||||
return option == "commentstring" and require("ts_context_commentstring.internal").calculate_commentstring()
|
||||
or get_option(filetype, option)
|
||||
end
|
||||
@@ -1,5 +0,0 @@
|
||||
vim.cmd([[
|
||||
nmap s <Nop>
|
||||
xmap s <Nop>
|
||||
let g:sandwich#recipes = deepcopy(g:sandwich#default_recipes)
|
||||
]])
|
||||
@@ -1,4 +0,0 @@
|
||||
require("sniprun").setup({
|
||||
selected_interpreters = { "JS_TS_deno" },
|
||||
repl_enable = { "JS_TS_deno" },
|
||||
})
|
||||
@@ -1 +0,0 @@
|
||||
require("tailwind-fold").setup({ ft = { "html", "svelte", "tsx" } })
|
||||
@@ -1,125 +0,0 @@
|
||||
local vim = vim
|
||||
local api = vim.api
|
||||
local keymap = vim.keymap
|
||||
local opt = vim.opt
|
||||
local treesitter = require("nvim-treesitter")
|
||||
local textobjects = require("nvim-treesitter-textobjects")
|
||||
local select = require("nvim-treesitter-textobjects.select")
|
||||
local treesj = require("treesj")
|
||||
|
||||
local is_nix = require("nixCatsUtils").isNixCats
|
||||
|
||||
if not is_nix then
|
||||
treesitter.install({
|
||||
"awk",
|
||||
"bash",
|
||||
"bibtex",
|
||||
"c",
|
||||
"cmake",
|
||||
"comment",
|
||||
"cpp",
|
||||
"css",
|
||||
"csv",
|
||||
"diff",
|
||||
"dockerfile",
|
||||
"dot",
|
||||
"gdscript",
|
||||
"gdshader",
|
||||
"git_config",
|
||||
"git_rebase",
|
||||
"gitattributes",
|
||||
"gitcommit",
|
||||
"gitignore",
|
||||
"glsl",
|
||||
"gnuplot",
|
||||
"go",
|
||||
"godot_resource",
|
||||
"gpg",
|
||||
"graphql",
|
||||
"haskell",
|
||||
"html",
|
||||
"java",
|
||||
"javascript",
|
||||
"jq",
|
||||
"jsdoc",
|
||||
"json",
|
||||
"jsonc",
|
||||
"latex",
|
||||
"lua",
|
||||
"luadoc",
|
||||
"make",
|
||||
"python",
|
||||
"query",
|
||||
"r",
|
||||
"racket",
|
||||
"readline",
|
||||
"regex",
|
||||
"requirements",
|
||||
"scheme",
|
||||
"scss",
|
||||
"sql",
|
||||
"ssh_config",
|
||||
"supercollider",
|
||||
"svelte",
|
||||
"tmux",
|
||||
"toml",
|
||||
"tsv",
|
||||
"tsx",
|
||||
"typescript",
|
||||
"udev",
|
||||
"vim",
|
||||
"vimdoc",
|
||||
"xml",
|
||||
"yaml",
|
||||
"zathurarc",
|
||||
})
|
||||
end
|
||||
|
||||
-- https://github.com/MeanderingProgrammer/treesitter-modules.nvim#implementing-yourself
|
||||
api.nvim_create_autocmd("FileType", {
|
||||
group = api.nvim_create_augroup("treesitter.setup", {}),
|
||||
callback = function(args)
|
||||
local buf = args.buf
|
||||
local filetype = args.match
|
||||
local language = vim.treesitter.language.get_lang(filetype) or filetype
|
||||
if not (language and vim.treesitter.language.add(language)) then
|
||||
return
|
||||
end
|
||||
-- fold
|
||||
vim.wo.foldmethod = "expr"
|
||||
vim.wo.foldexpr = "v:lua.vim.treesitter.foldexpr()"
|
||||
-- highlight
|
||||
vim.treesitter.start(buf, language)
|
||||
-- indent
|
||||
vim.bo[buf].indentexpr = "v:lua.require'nvim-treesitter'.indentexpr()"
|
||||
vim.bo[buf].indentexpr = "v:lua.require'nvim-treesitter'.indentexpr()"
|
||||
end,
|
||||
})
|
||||
|
||||
opt.foldmethod = "expr"
|
||||
opt.foldexpr = "v:lua.vim.treesitter.foldexpr()"
|
||||
opt.foldenable = false
|
||||
|
||||
-- https://github.com/nvim-treesitter/nvim-treesitter-textobjects/blob/main/README.md#text-objects-select
|
||||
textobjects.setup({
|
||||
select = {
|
||||
lookahead = true,
|
||||
},
|
||||
})
|
||||
|
||||
local function select_textobject(capture)
|
||||
return function()
|
||||
select.select_textobject(capture, "textobjects")
|
||||
end
|
||||
end
|
||||
|
||||
keymap.set({ "x", "o" }, "if", select_textobject("@function.inner"), { desc = "Inner function" })
|
||||
keymap.set({ "x", "o" }, "af", select_textobject("@function.outer"), { desc = "A function" })
|
||||
keymap.set({ "x", "o" }, "ip", select_textobject("@parameter.inner"), { desc = "Inner parameter" })
|
||||
keymap.set({ "x", "o" }, "ap", select_textobject("@parameter.outer"), { desc = "A parameter" })
|
||||
|
||||
treesj.setup({
|
||||
use_default_keymaps = false,
|
||||
})
|
||||
|
||||
keymap.set("n", ";", treesj.toggle, { desc = "Toggle join/split (TreeSJ)" })
|
||||
@@ -1 +0,0 @@
|
||||
require("trouble").setup()
|
||||
@@ -1,8 +0,0 @@
|
||||
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,17 +0,0 @@
|
||||
vim.cmd([[
|
||||
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=[]
|
||||
]])
|
||||
@@ -1,9 +0,0 @@
|
||||
vim.cmd([[
|
||||
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"]
|
||||
]])
|
||||
@@ -1,28 +0,0 @@
|
||||
vim.g.tidal_default_config = { socket_name = "default", target_pane = "tidal:1.1" }
|
||||
vim.g.tidal_no_mappings = 1
|
||||
|
||||
vim.api.nvim_create_autocmd("FileType", {
|
||||
pattern = "tidal",
|
||||
callback = function(e)
|
||||
local buf = e.buf
|
||||
vim.keymap.set("n", "<leader>ep", "<Plug>TidalParagraphSend", { buffer = buf, desc = "Tidal: send paragraph" })
|
||||
vim.keymap.set("n", "<leader>ee", "<Plug>TidalLineSend", { buffer = buf, desc = "Tidal: send line" })
|
||||
vim.keymap.set("n", "<leader>h", ":TidalHush<cr>", { buffer = buf, desc = "Tidal: hush" })
|
||||
vim.api.nvim_buf_create_user_command(buf, "S", "TidalSilence <args>", { nargs = 1 })
|
||||
vim.api.nvim_buf_create_user_command(buf, "P", "TidalPlay <args>", { nargs = 1 })
|
||||
vim.api.nvim_buf_create_user_command(buf, "H", "TidalHush", { nargs = 0 })
|
||||
end,
|
||||
})
|
||||
|
||||
-- SuperCollider
|
||||
vim.api.nvim_create_autocmd({ "BufEnter", "BufWinEnter", "BufNewFile", "BufRead" }, {
|
||||
pattern = { "*.sc", "*.scd" },
|
||||
callback = function()
|
||||
vim.bo.filetype = "supercollider"
|
||||
end,
|
||||
})
|
||||
|
||||
vim.api.nvim_create_autocmd("FileType", {
|
||||
pattern = "supercollider",
|
||||
command = "packadd scvim",
|
||||
})
|
||||
@@ -1,6 +0,0 @@
|
||||
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,14 +0,0 @@
|
||||
local function overrides()
|
||||
local colors = require("vscode.colors").get_colors()
|
||||
vim.api.nvim_set_hl(0, "NormalFloat", { bg = colors.vscLeftDark })
|
||||
vim.api.nvim_set_hl(0, "FloatBorder", { fg = colors.vscSplitDark, bg = colors.vscLeftDark })
|
||||
end
|
||||
|
||||
vim.api.nvim_create_autocmd("ColorScheme", {
|
||||
pattern = "vscode",
|
||||
callback = overrides,
|
||||
})
|
||||
|
||||
if vim.g.colors_name == "vscode" then
|
||||
overrides()
|
||||
end
|
||||
@@ -1,117 +0,0 @@
|
||||
require("zk.utils")
|
||||
|
||||
vim.cmd([[
|
||||
" Change local buffer to directory of current file after the plugin has loaded
|
||||
execute 'autocmd BufEnter' g:zk_path . '/*.md' 'silent 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)
|
||||
|
||||
function! ZKContextualEcho()
|
||||
let l:name = expand('%:t')
|
||||
if l:name =~ '_' | echo 'hierarchical relation'
|
||||
elseif l:name =~ '--' | echo 'relation'
|
||||
elseif l:name =~ '<>' | echo 'dichotomy'
|
||||
elseif l:name =~ 'my-' | echo 'personal file'
|
||||
elseif l:name =~ 'project_' | echo 'project file'
|
||||
endif
|
||||
endfunction
|
||||
execute 'autocmd BufEnter' g:zk_path . '/*.md' 'call ZKContextualEcho()'
|
||||
|
||||
" 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=g:zk_path
|
||||
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
|
||||
" ...
|
||||
]])
|
||||
@@ -1,7 +0,0 @@
|
||||
vim.cmd([[
|
||||
syn match Todo /TODO/
|
||||
syn match Todo /FIXME/
|
||||
syn match Todo /FIX/
|
||||
syn match Todo /QUESTION/
|
||||
syn match Todo /NOTE/
|
||||
]])
|
||||
@@ -1,19 +0,0 @@
|
||||
vim.cmd([[
|
||||
" 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
|
||||
|
||||
" 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
|
||||
]])
|
||||
|
||||
vim.cmd.runtime("syntax/_comment_keywords.lua")
|
||||
@@ -1,7 +0,0 @@
|
||||
vim.cmd([[
|
||||
syn keyword Operator \+ conceal cchar=¬
|
||||
syn keyword Operator , conceal cchar=∧
|
||||
syn keyword Operator ; conceal cchar=∨
|
||||
]])
|
||||
|
||||
vim.cmd.runtime("syntax/_comment_keywords.lua")
|
||||
@@ -1,41 +0,0 @@
|
||||
vim.cmd([[
|
||||
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=ω
|
||||
]])
|
||||
|
||||
vim.cmd.runtime("syntax/_comment_keywords.lua")
|
||||
Generated
-111
@@ -1,111 +0,0 @@
|
||||
{
|
||||
"nodes": {
|
||||
"nixCats": {
|
||||
"locked": {
|
||||
"lastModified": 1777273601,
|
||||
"narHash": "sha256-xBUa8Tl9V7IXI+VmLEuDc81La/EhoSn1C3EVSnJ3cfU=",
|
||||
"owner": "BirdeeHub",
|
||||
"repo": "nixCats-nvim",
|
||||
"rev": "f69ea013e328841a7def7037ed59788a76be8816",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "BirdeeHub",
|
||||
"repo": "nixCats-nvim",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1787424095,
|
||||
"narHash": "sha256-dWLO5AHhKaw6rdWCtTes8hnntT1r0/J5yhQGm0f0ZgU=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "174eb786fb68e3a13e4e535a3deea479a0c07a6a",
|
||||
"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-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": 1766077142,
|
||||
"narHash": "sha256-SwcDLlygXUSV/dytPXA5Y45OpUhjnExc8SZg5a8MZ2k=",
|
||||
"owner": "razak17",
|
||||
"repo": "tailwind-fold.nvim",
|
||||
"rev": "e2ba5ee1ca9b74208709fe9d7314b8aa753b26a7",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "razak17",
|
||||
"repo": "tailwind-fold.nvim",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"nixCats": "nixCats",
|
||||
"nixpkgs": "nixpkgs",
|
||||
"plugins-beancount-nvim": "plugins-beancount-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
|
||||
}
|
||||
@@ -1,292 +0,0 @@
|
||||
{
|
||||
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-m-taskwarrior-d-nvim = {
|
||||
# url = "github:huantrinh1802/m_taskwarrior_d.nvim";
|
||||
# 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;
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
outputs =
|
||||
{
|
||||
nixpkgs,
|
||||
nixCats,
|
||||
...
|
||||
}@inputs:
|
||||
let
|
||||
inherit (nixCats) utils;
|
||||
luaPath = ./.;
|
||||
forEachSystem = utils.eachSystem nixpkgs.lib.platforms.all;
|
||||
extra_pkg_config = {
|
||||
allowUnfreePredicate =
|
||||
pkg:
|
||||
builtins.elem (nixpkgs.lib.getName pkg) [
|
||||
"vim-sandwich"
|
||||
"jupytext.nvim"
|
||||
"eyeliner.nvim"
|
||||
"context_filetype.vim"
|
||||
"editorconfig-vim"
|
||||
"unicode.vim"
|
||||
"quarto-nvim"
|
||||
"vim-openscad"
|
||||
"lsp_lines.nvim"
|
||||
"nvim-highlight-colors"
|
||||
"nvim-lint"
|
||||
];
|
||||
};
|
||||
|
||||
mkDependencyOverlays = [
|
||||
(utils.standardPluginOverlay inputs)
|
||||
(_: prev: {
|
||||
luajitPackages = prev.luajitPackages.overrideScope (
|
||||
_: lprev: {
|
||||
neotest = lprev.neotest.overrideAttrs (_: {
|
||||
doCheck = false;
|
||||
});
|
||||
}
|
||||
);
|
||||
})
|
||||
];
|
||||
|
||||
categoryDefinitions =
|
||||
{
|
||||
pkgs,
|
||||
categories,
|
||||
...
|
||||
}:
|
||||
let
|
||||
themes = import ./themes.nix pkgs;
|
||||
in
|
||||
{
|
||||
lspsAndRuntimeDeps = with pkgs; {
|
||||
general = [
|
||||
nodejs_24
|
||||
black
|
||||
clang
|
||||
clang-tools
|
||||
curl # → plenary-nvim
|
||||
delta
|
||||
emmet-language-server
|
||||
eslint_d
|
||||
fd
|
||||
gawk
|
||||
gdtoolkit_4
|
||||
hadolint
|
||||
helm-ls
|
||||
isort
|
||||
lua-language-server
|
||||
nixd
|
||||
nixfmt
|
||||
prettier
|
||||
typescript-language-server
|
||||
ormolu
|
||||
prettierd
|
||||
rust-analyzer
|
||||
rustfmt
|
||||
shellcheck-minimal
|
||||
stylelint
|
||||
stylua
|
||||
tree-sitter
|
||||
tailwindcss-language-server
|
||||
typescript-language-server
|
||||
vscode-langservers-extracted
|
||||
vtsls
|
||||
yaml-language-server
|
||||
yamllint
|
||||
];
|
||||
};
|
||||
|
||||
startupPlugins = {
|
||||
general =
|
||||
with pkgs.vimPlugins;
|
||||
[
|
||||
## plug
|
||||
vim-plug
|
||||
vim-sandwich
|
||||
context_filetype-vim
|
||||
editorconfig-vim
|
||||
vim-snippets
|
||||
unicode-vim
|
||||
vim-css-color
|
||||
quarto-nvim
|
||||
vimtex
|
||||
wiki-vim
|
||||
vim-pandoc
|
||||
vim-pandoc-syntax
|
||||
# TODO: ferrine/md-img-paste.vim
|
||||
# TODO: supercollider/scvim
|
||||
# TODO: tidalcycles/vim-tidal
|
||||
vim-glsl
|
||||
# TODO: timtro/glslView-nvim
|
||||
# TODO: sirtaj/vim-openscad
|
||||
jupytext-nvim
|
||||
vim-openscad
|
||||
## paq
|
||||
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
|
||||
lush-nvim
|
||||
pkgs.neovimPlugins.shipwright-nvim
|
||||
nvim-treesitter.withAllGrammars
|
||||
nvim-treesitter-textobjects
|
||||
# nvim-treesitter-context
|
||||
nvim-ts-context-commentstring
|
||||
# theHamsta/crazy-node-movement
|
||||
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
|
||||
helm-ls-nvim
|
||||
kitty-scrollback-nvim
|
||||
fidget-nvim
|
||||
rustaceanvim
|
||||
# pkgs.neovimPlugins.m-taskwarrior-d-nvim
|
||||
claudecode-nvim
|
||||
snacks-nvim
|
||||
]
|
||||
++ themes.${categories.colorscheme or "zenwritten"};
|
||||
};
|
||||
|
||||
optionalPlugins = {
|
||||
general = with pkgs.vimPlugins; [
|
||||
];
|
||||
};
|
||||
|
||||
sharedLibraries = {
|
||||
general = [ ];
|
||||
};
|
||||
|
||||
environmentVariables = { };
|
||||
};
|
||||
|
||||
packageDefinitions = {
|
||||
nvim = _: {
|
||||
settings = {
|
||||
suffix-path = true;
|
||||
suffix-LD = true;
|
||||
wrapRc = true;
|
||||
aliases = [ "vim" ];
|
||||
};
|
||||
categories = {
|
||||
general = true;
|
||||
colorscheme = "zenwritten";
|
||||
};
|
||||
};
|
||||
};
|
||||
defaultPackageName = "nvim";
|
||||
in
|
||||
|
||||
forEachSystem (
|
||||
system:
|
||||
let
|
||||
dependencyOverlays = mkDependencyOverlays;
|
||||
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
|
||||
luaPath
|
||||
categoryDefinitions
|
||||
packageDefinitions
|
||||
extra_pkg_config
|
||||
nixpkgs
|
||||
;
|
||||
dependencyOverlays = mkDependencyOverlays;
|
||||
};
|
||||
homeModule = utils.mkHomeModules {
|
||||
moduleNamespace = [ defaultPackageName ];
|
||||
inherit
|
||||
defaultPackageName
|
||||
luaPath
|
||||
categoryDefinitions
|
||||
packageDefinitions
|
||||
extra_pkg_config
|
||||
nixpkgs
|
||||
;
|
||||
dependencyOverlays = mkDependencyOverlays;
|
||||
};
|
||||
in
|
||||
{
|
||||
|
||||
overlays = utils.makeOverlays luaPath {
|
||||
inherit nixpkgs extra_pkg_config;
|
||||
dependencyOverlays = mkDependencyOverlays;
|
||||
} categoryDefinitions packageDefinitions defaultPackageName;
|
||||
|
||||
nixosModules.default = nixosModule;
|
||||
homeModules.default = homeModule;
|
||||
|
||||
inherit utils nixosModule homeModule;
|
||||
inherit (utils) templates;
|
||||
}
|
||||
);
|
||||
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
vim.opt.matchpairs:append("=:;")
|
||||
@@ -1,16 +0,0 @@
|
||||
local json_newline = function()
|
||||
local line = vim.api.nvim_get_current_line()
|
||||
if line == "" then
|
||||
return "o"
|
||||
elseif string.byte(line, -1) == string.byte(",") then
|
||||
return "o"
|
||||
elseif string.byte(line, -1) == string.byte("{") then
|
||||
return "o"
|
||||
elseif string.byte(line, -1) == string.byte("}") then
|
||||
return "o"
|
||||
else
|
||||
return "A,<CR>"
|
||||
end
|
||||
end
|
||||
|
||||
vim.keymap.set("n", "o", json_newline, { buffer = true, expr = true })
|
||||
@@ -1,24 +0,0 @@
|
||||
vim.cmd([[
|
||||
" 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
|
||||
]])
|
||||
@@ -1,36 +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, {})
|
||||
|
||||
vim.cmd([[
|
||||
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()
|
||||
]])
|
||||
@@ -1,27 +0,0 @@
|
||||
vim.cmd([[
|
||||
"
|
||||
" 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
|
||||
]])
|
||||
@@ -1,19 +0,0 @@
|
||||
require("nixCatsUtils").setup({ non_nix_value = true }) -- https://github.com/BirdeeHub/nixCats-nvim/blob/77dffad8235eb77684fcb7599487c8e9f23d5b8f/templates/example/init.lua
|
||||
|
||||
vim.opt.termguicolors = true
|
||||
vim.api.nvim_set_hl(0, "Normal", { ctermbg = "NONE", bg = "NONE" })
|
||||
|
||||
require("base")
|
||||
require("cursor")
|
||||
require("fold")
|
||||
require("netrw")
|
||||
require("ftdetect")
|
||||
require("pandoc")
|
||||
require("keymaps")
|
||||
require("highlight")
|
||||
require("statusline")
|
||||
require("diagnostic")
|
||||
require("utils")
|
||||
require("zk")
|
||||
require("reload")
|
||||
require("theme")
|
||||
@@ -1,29 +0,0 @@
|
||||
vim.cmd([[
|
||||
" Tip: acronyms for overview, use `:h` for a quick lookup.
|
||||
set nocp " Disable vi incompatibility
|
||||
filetype plugin indent on " Filetype recognition
|
||||
set enc=utf8 " Default to UTF-8 encoding
|
||||
set hid " Allow hiding unsaved buffers
|
||||
set tf " Fast tty
|
||||
set ut=300 " 300ms for update time
|
||||
set to tm=200 ttm=5 " Timeouts
|
||||
set shm+=c " ...
|
||||
set ul=500 hi=500 " History and undo
|
||||
set nu rnu scl=number " Line numbers & signs
|
||||
set nowrap
|
||||
set bs=indent,eol,start " Indentation
|
||||
set ai ts=2 sts=2 sw=2 et " Indentation
|
||||
set is ic scs hls " Search
|
||||
set lz " Only essential redraws
|
||||
set nobk nowb noswf " No backups
|
||||
set vi='20,\"101 " Max 100 lines in registers
|
||||
set novb " Bell
|
||||
set cole=0 cocu="" " Conceal
|
||||
set cb=unnamedplus " Clipboard
|
||||
set fcs+=vert:│ " Cleaner split separator (tmux style)
|
||||
set list
|
||||
set lcs=trail:·,tab:→\ ,nbsp:␣ " Whitespace rendering
|
||||
set ar " Autoread
|
||||
set spellsuggest+=5 " Limit spell suggestions
|
||||
set wildignore+=*/node_modules/*,*/tmp/*,*.so,*.swp,*.zip
|
||||
]])
|
||||
@@ -1,16 +0,0 @@
|
||||
vim.cmd([[
|
||||
" Taken from /usr/share/vim/vim90/defaults.vim
|
||||
augroup vimStartup
|
||||
au!
|
||||
|
||||
" When editing a file, always jump to the last known cursor position.
|
||||
" Don't do it when the position is invalid, when inside an event handler
|
||||
" (happens when dropping a file on gvim) and for a commit message (it's
|
||||
" likely a different one than last time).
|
||||
autocmd BufReadPost *
|
||||
\ if line("'\"") >= 1 && line("'\"") <= line("$") && &ft !~# 'commit'
|
||||
\ | exe "normal! g`\""
|
||||
\ | endif
|
||||
|
||||
augroup END
|
||||
]])
|
||||
@@ -1,10 +0,0 @@
|
||||
-- Source: <https://vonheikemen.github.io/devlog/tools/neovim-lsp-client-guide/>
|
||||
vim.diagnostic.config({
|
||||
signs = true,
|
||||
underline = false,
|
||||
severity_sort = true,
|
||||
})
|
||||
|
||||
vim.keymap.set("n", "<leader>dl", vim.diagnostic.open_float)
|
||||
vim.keymap.set("n", "<leader>dj", vim.diagnostic.goto_prev)
|
||||
vim.keymap.set("n", "<leader>dk", vim.diagnostic.goto_next)
|
||||
@@ -1,26 +0,0 @@
|
||||
vim.cmd([[
|
||||
" Folds {{{
|
||||
set foldmethod=marker
|
||||
|
||||
augroup filetype_vim
|
||||
autocmd!
|
||||
autocmd FileType vim setlocal foldmethod=marker
|
||||
augroup END
|
||||
|
||||
augroup filetype_python
|
||||
autocmd!
|
||||
autocmd FileType python setlocal foldmethod=indent
|
||||
augroup END
|
||||
|
||||
augroup filetype_sh
|
||||
autocmd!
|
||||
autocmd FileType sh setlocal foldmethod=marker
|
||||
augroup END
|
||||
|
||||
augroup filetype_snippets
|
||||
autocmd!
|
||||
autocmd FileType snippets setlocal foldmethod=marker
|
||||
augroup END
|
||||
|
||||
" }}}
|
||||
]])
|
||||
@@ -1,14 +0,0 @@
|
||||
vim.filetype.add({
|
||||
filename = {
|
||||
[".lintstagedrc"] = "json",
|
||||
},
|
||||
pattern = {
|
||||
["tsconfig.*.json"] = "jsonc",
|
||||
[".*/%.vscode/.*%.json"] = "jsonc",
|
||||
[".*/%.ssh/config%.d/.*"] = "sshconfig",
|
||||
["%.env.*"] = "dotenv",
|
||||
["%.pl$"] = "prolog",
|
||||
[".*.containerfile.*"] = "dockerfile",
|
||||
["%.hydra$"] = "javascript",
|
||||
},
|
||||
})
|
||||
@@ -1,14 +0,0 @@
|
||||
local autocmd = vim.api.nvim_create_autocmd
|
||||
local augroup = vim.api.nvim_create_augroup
|
||||
|
||||
local function yank_highlight()
|
||||
vim.highlight.on_yank({ higroup = "Visual", timeout = 150 })
|
||||
end
|
||||
|
||||
-- Yanked text highlight feedback (source: https://github.com/nvim-lua/kickstart.nvim/blob/master/init.lua)
|
||||
augroup("YankHighlight", { clear = true })
|
||||
autocmd("TextYankPost", {
|
||||
desc = "Highlight when yanking (copying) text",
|
||||
group = "YankHighlight",
|
||||
callback = yank_highlight,
|
||||
})
|
||||
@@ -1,55 +0,0 @@
|
||||
vim.g.mapleader = " "
|
||||
vim.g.maplocalleader = ";"
|
||||
|
||||
local set = vim.keymap.set
|
||||
|
||||
-- splits & navigation
|
||||
set("n", "s", "<c-w>", { desc = "window prefix" })
|
||||
set("n", "ss", ":sp<CR><c-w>w", { desc = "split horizontal" })
|
||||
set("n", "sv", ":vs<CR><c-w>w", { desc = "split vertical" })
|
||||
set("n", "sw", "<c-w>w", { desc = "navigate splits" })
|
||||
set("n", "sh", "<c-w>h", { desc = "focus left split" })
|
||||
set("n", "sj", "<c-w>j", { desc = "focus below split" })
|
||||
set("n", "sk", "<c-w>k", { desc = "focus above split" })
|
||||
set("n", "sl", "<c-w>l", { desc = "focus right split" })
|
||||
set("n", "sH", "<c-w>8<", { desc = "shrink split left" })
|
||||
set("n", "sJ", "<c-w>8-", { desc = "shrink split down" })
|
||||
set("n", "sK", "<c-w>8+", { desc = "grow split up" })
|
||||
set("n", "sL", "<c-w>8>", { desc = "grow split right" })
|
||||
set("n", "s=", "<c-w>=", { desc = "equalize splits" })
|
||||
|
||||
-- open
|
||||
set("n", "sb", ":Lex<cr>", { desc = "file tree" })
|
||||
set("n", "<leader><leader>", ":noh<cr>", { desc = "clear highlights" })
|
||||
set("n", "<leader>t", ":term<cr>", { desc = "open terminal" })
|
||||
set("n", "<leader>w", "<cmd>w<cr>", { desc = ":w" })
|
||||
|
||||
-- remaps
|
||||
set("i", "jj", "<esc>", { nowait = true, desc = "exit insert mode" })
|
||||
set("n", "<left>", "<nop>")
|
||||
set("n", "<down>", "<nop>")
|
||||
set("n", "<up>", "<nop>")
|
||||
set("n", "<right>", "<nop>")
|
||||
set("i", "<left>", "<nop>")
|
||||
set("i", "<down>", "<nop>")
|
||||
set("i", "<up>", "<nop>")
|
||||
set("i", "<right>", "<nop>")
|
||||
|
||||
-- line numbers
|
||||
set("n", "<leader>n", ":set nu! rnu!<cr>", { desc = "toggle line numbers" })
|
||||
|
||||
-- vim configuration
|
||||
set("n", "<leader>ec", ":vs $MYVIMRC<cr>", { desc = "edit vimrc" })
|
||||
set("n", "<leader>so", ":so %<cr>", { desc = "source current file" })
|
||||
|
||||
set("n", "<leader>cx", "<cmd>!chmod +x %<CR>", { silent = true, desc = "run `chmod +x` on current file" })
|
||||
set("n", "yp", "<cmd>let @+ = expand('%r')<CR>:p<CR>", { silent = true, desc = "yank path" })
|
||||
|
||||
-- remap native NeoVim comment keymaps
|
||||
set({ "n", "x" }, "<leader>c", "gc", { remap = true, desc = "toggle comment" })
|
||||
set("n", "<leader>cc", "gcc", { remap = true, desc = "toggle comment line" })
|
||||
set("o", "<leader>c", "gc", { remap = true, desc = "comment textobject" })
|
||||
|
||||
-- move lines
|
||||
set("v", "K", ": '<,'>move '<-2<cr>gv", { desc = "move selection up" })
|
||||
set("v", "J", ": '<,'>move '>+1<cr>gv", { desc = "move selection down" })
|
||||
@@ -1,5 +0,0 @@
|
||||
vim.cmd([[
|
||||
let g:netrw_winsize = 30
|
||||
let g:netrw_liststyle=3
|
||||
let g:netrw_banner = 0
|
||||
]])
|
||||
@@ -1,136 +0,0 @@
|
||||
-- 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,12 +0,0 @@
|
||||
vim.cmd([[
|
||||
fu! Compile()
|
||||
if expand('%:e') == "md"
|
||||
:silent exec "!pandoc % -s -o /tmp/op.pdf &"
|
||||
endif
|
||||
endfu
|
||||
|
||||
fu! Preview()
|
||||
:call Compile()
|
||||
:silent exec "!zathura /tmp/op.pdf &"
|
||||
endfu
|
||||
]])
|
||||
@@ -1,7 +0,0 @@
|
||||
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,11 +0,0 @@
|
||||
local autocmd = vim.api.nvim_create_autocmd
|
||||
|
||||
autocmd("BufNewFile", {
|
||||
pattern = "shell.nix",
|
||||
command = "0r ~/.config/nvim/skeletons/shell.nix.skeleton",
|
||||
})
|
||||
|
||||
autocmd("BufNewFile", {
|
||||
pattern = "flake.nix",
|
||||
command = "0r ~/.config/nvim/skeletons/flake.nix.skeleton",
|
||||
})
|
||||
@@ -1,10 +0,0 @@
|
||||
vim.opt.laststatus = 3
|
||||
|
||||
vim.cmd([[
|
||||
se stl=\ %0*%n
|
||||
se stl+=\ %m
|
||||
se stl+=\ %y%0*
|
||||
se stl+=\ %<%F
|
||||
se stl+=\ %0*%=%5l%*
|
||||
se stl+=%0*/%L%*
|
||||
]])
|
||||
@@ -1,8 +0,0 @@
|
||||
vim.opt.background = "dark"
|
||||
|
||||
if vim.g.vscode then
|
||||
return
|
||||
end
|
||||
|
||||
vim.g.zenwritten_compat = 1
|
||||
vim.cmd.colorscheme(require("nixCatsUtils").getCatOrDefault("colorscheme", "zenwritten"))
|
||||
@@ -1,8 +0,0 @@
|
||||
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,52 +0,0 @@
|
||||
local cmp = require("cmp")
|
||||
|
||||
local source = {}
|
||||
|
||||
local function get_markdown_files(base)
|
||||
local items = {}
|
||||
local pattern = base .. "/**/*.md"
|
||||
local files = vim.fn.glob(pattern, false, true)
|
||||
for _, file in ipairs(files) do
|
||||
local label = file:gsub("^%./", ""):gsub("%.md$", "")
|
||||
table.insert(items, { label = label })
|
||||
end
|
||||
return items
|
||||
end
|
||||
|
||||
function source:get_keyword_pattern()
|
||||
return "[%w%./%-]*"
|
||||
end
|
||||
|
||||
function source:complete(params, callback)
|
||||
local cursor_before_line = params.context.cursor_before_line
|
||||
local cursor_after_line = params.context.cursor_after_line or ""
|
||||
|
||||
if not cursor_before_line:match("%[[^%]]*%]%(") then
|
||||
callback({})
|
||||
return
|
||||
end
|
||||
|
||||
local items = get_markdown_files(".")
|
||||
local next_char = cursor_after_line:sub(1, 1)
|
||||
|
||||
for _, item in ipairs(items) do
|
||||
if next_char == ")" then
|
||||
item.insertText = item.label
|
||||
else
|
||||
item.insertText = item.label .. ")"
|
||||
end
|
||||
end
|
||||
|
||||
callback(items)
|
||||
end
|
||||
|
||||
function source:get_trigger_characters()
|
||||
return { "(" }
|
||||
end
|
||||
|
||||
function source:is_available()
|
||||
local ft = vim.bo.filetype
|
||||
return ft == "markdown" or ft == "pandoc"
|
||||
end
|
||||
|
||||
cmp.register_source("zk", source)
|
||||
@@ -1,25 +0,0 @@
|
||||
require("zk.cmp")
|
||||
require("zk.utils")
|
||||
|
||||
vim.cmd([[
|
||||
let s:zk_preview_enabled = 0
|
||||
let s:live_server_job = -1
|
||||
execute 'au BufEnter' g:zk_path . '/*.md' 'silent exe "!echo %" ">" g:zk_path . "/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=' . g:zk_path . '/current-zettel-content.html --open=current-zettel-content.html --port=8080')
|
||||
augroup ZKPreview
|
||||
execute 'au BufEnter' g:zk_path . '/*.md' 'silent exe "!cat %:r.html" ">" g:zk_path . "/current-zettel-content.html"'
|
||||
execute 'au BufWritePost' g:zk_path . '/*.md' 'silent exe "!make && cat %:r.html" ">" g:zk_path . "/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>
|
||||
]])
|
||||
@@ -1,2 +0,0 @@
|
||||
vim.g.zk_path = os.getenv("ZK_PATH") or (os.getenv("HOME") .. "/.zk")
|
||||
return vim.g.zk_path
|
||||
@@ -1,10 +0,0 @@
|
||||
{
|
||||
inputs = {
|
||||
nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable";
|
||||
};
|
||||
|
||||
outputs =
|
||||
{ self, nixpkgs }:
|
||||
{
|
||||
};
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
{
|
||||
pkgs ? import <nixpkgs> { },
|
||||
}:
|
||||
pkgs.mkShell { nativeBuildInputs = with pkgs.buildPackages; [ ]; }
|
||||
@@ -1,27 +0,0 @@
|
||||
local ls = require("luasnip")
|
||||
local s = ls.snippet
|
||||
local t = ls.text_node
|
||||
local f = ls.function_node
|
||||
|
||||
local TM_FILENAME = function(_, snip)
|
||||
return snip.env.TM_FILENAME
|
||||
end
|
||||
|
||||
local TM_FILENAME_BASE = function(_, snip)
|
||||
return snip.env.TM_FILENAME_BASE
|
||||
end
|
||||
|
||||
local NAME = "Hektor Misplon"
|
||||
local LOCALHOST = "localhost"
|
||||
local LOCALHOST_IP = "127.0.0.1"
|
||||
|
||||
return {
|
||||
s({ trig = "fn", desc = "Filename" }, { f(TM_FILENAME_BASE) }),
|
||||
s({ trig = "fne", desc = "Filename (+extension)" }, { f(TM_FILENAME) }),
|
||||
s({ trig = "hm" }, { t(NAME) }),
|
||||
s({ trig = "loho" }, { t(LOCALHOST) }),
|
||||
s({ trig = "lohoi" }, { t(LOCALHOST_IP) }),
|
||||
s({ trig = "date" }, { f(function()
|
||||
return os.date("%Y-%m-%d")
|
||||
end) }),
|
||||
}
|
||||
@@ -1,119 +0,0 @@
|
||||
local ls = require("luasnip")
|
||||
local s = ls.snippet
|
||||
local t = ls.text_node
|
||||
local i = ls.insert_node
|
||||
|
||||
return {
|
||||
-- Flex
|
||||
s({ trig = "b1", desc = "Add 'border: 1px <color>;'" }, {
|
||||
t("border: 1px solid "),
|
||||
i(1),
|
||||
t(";"),
|
||||
i(0),
|
||||
}),
|
||||
s({ trig = "dfl", desc = "Add 'display: flex;'" }, {
|
||||
t("display: flex;"),
|
||||
i(0),
|
||||
}),
|
||||
s({ trig = "flr", desc = "Add 'flex-direction: row;'" }, {
|
||||
t("flex-direction: row;"),
|
||||
i(0),
|
||||
}),
|
||||
s({ trig = "flc", desc = "Add 'flex-direction: column;'" }, {
|
||||
t("flex-direction: column;"),
|
||||
i(0),
|
||||
}),
|
||||
s({ trig = "flw", desc = "Add 'flex-wrap: wrap;'" }, {
|
||||
t("flex-wrap: wrap;"),
|
||||
i(0),
|
||||
}),
|
||||
s({ trig = "dfc", desc = "Add 'flex-direction: column;'" }, {
|
||||
t("display: flex;"),
|
||||
t("flex-direction: column;"),
|
||||
i(0),
|
||||
}),
|
||||
-- Grid
|
||||
s({ trig = "dg", desc = "Add 'display: grid;'" }, {
|
||||
t("display: grid;"),
|
||||
i(0),
|
||||
}),
|
||||
-- Block
|
||||
s({ trig = "db", desc = "Add 'display: block;'" }, {
|
||||
t("display: block;"),
|
||||
i(0),
|
||||
}),
|
||||
-- None
|
||||
s({ trig = "dn", desc = "Add 'display: none;'" }, {
|
||||
t("display: none;"),
|
||||
i(0),
|
||||
}),
|
||||
-- CSS Variables
|
||||
s({ trig = "v", desc = "Add CSS variable" }, {
|
||||
t("var(--"),
|
||||
i(1),
|
||||
t(")"),
|
||||
i(0),
|
||||
}),
|
||||
-- Margin
|
||||
s({ trig = "m", desc = "Add 'margin: ;'" }, {
|
||||
t("margin: "),
|
||||
i(1),
|
||||
t(";"),
|
||||
i(0),
|
||||
}),
|
||||
s({ trig = "mt", desc = "Add 'margin-top: ;'" }, {
|
||||
t("margin-top: "),
|
||||
i(1),
|
||||
t(";"),
|
||||
i(0),
|
||||
}),
|
||||
s({ trig = "mr", desc = "Add 'margin-right: ;'" }, {
|
||||
t("margin-right: "),
|
||||
i(1),
|
||||
t(";"),
|
||||
i(0),
|
||||
}),
|
||||
s({ trig = "mb", desc = "Add 'margin-bottom: ;'" }, {
|
||||
t("margin-bottom: "),
|
||||
i(1),
|
||||
t(";"),
|
||||
i(0),
|
||||
}),
|
||||
s({ trig = "ml", desc = "Add 'margin-left: ;'" }, {
|
||||
t("margin-left: "),
|
||||
i(1),
|
||||
t(";"),
|
||||
i(0),
|
||||
}),
|
||||
-- Padding
|
||||
s({ trig = "p", desc = "Add 'padding: ;'" }, {
|
||||
t("padding: "),
|
||||
i(1),
|
||||
t(";"),
|
||||
i(0),
|
||||
}),
|
||||
s({ trig = "pt", desc = "Add 'padding-top: ;'" }, {
|
||||
t("padding-top: "),
|
||||
i(1),
|
||||
t(";"),
|
||||
i(0),
|
||||
}),
|
||||
s({ trig = "pr", desc = "Add 'padding-right: ;'" }, {
|
||||
t("padding-right: "),
|
||||
i(1),
|
||||
t(";"),
|
||||
i(0),
|
||||
}),
|
||||
s({ trig = "pb", desc = "Add 'padding-bottom: ;'" }, {
|
||||
t("padding-bottom: "),
|
||||
i(1),
|
||||
t(";"),
|
||||
i(0),
|
||||
}),
|
||||
s({ trig = "pl", desc = "Add 'padding-left: ;'" }, {
|
||||
t("padding-left: "),
|
||||
i(1),
|
||||
t(";"),
|
||||
i(0),
|
||||
}),
|
||||
}
|
||||
@@ -1,67 +0,0 @@
|
||||
local ls = require("luasnip")
|
||||
local s = ls.snippet
|
||||
local t = ls.text_node
|
||||
local i = ls.insert_node
|
||||
|
||||
return {
|
||||
s({ trig = "ifdef" }, {
|
||||
t("#ifdef GL_ES"),
|
||||
t("precision mediump float;"),
|
||||
i(1),
|
||||
t("#endif"),
|
||||
}),
|
||||
s({ trig = "defpi" }, {
|
||||
t("#define PI 3.14159265359"),
|
||||
}),
|
||||
s({ trig = "main" }, {
|
||||
t("void main() {"),
|
||||
i(1),
|
||||
t("}"),
|
||||
}),
|
||||
s({ trig = "uni" }, {
|
||||
t("uniform "),
|
||||
i(1),
|
||||
t(";"),
|
||||
}),
|
||||
s({ trig = "unif" }, {
|
||||
t("uniform float "),
|
||||
i(1),
|
||||
t(";"),
|
||||
}),
|
||||
s({ trig = "univ" }, {
|
||||
t("uniform vec"),
|
||||
i(1),
|
||||
t(" float "),
|
||||
i(2),
|
||||
t(";"),
|
||||
}),
|
||||
s({ trig = "univ2" }, {
|
||||
t("uniform vec2 float "),
|
||||
i(1),
|
||||
t(";"),
|
||||
}),
|
||||
s({ trig = "univ3" }, {
|
||||
t("uniform vec3 float "),
|
||||
i(1),
|
||||
t(";"),
|
||||
}),
|
||||
s({ trig = "univ4" }, {
|
||||
t("uniform vec4 float "),
|
||||
i(1),
|
||||
t(";"),
|
||||
}),
|
||||
s({ trig = "f" }, {
|
||||
t("float "),
|
||||
i(1),
|
||||
t(";"),
|
||||
}),
|
||||
s({ trig = "v" }, {
|
||||
t("vec"),
|
||||
}),
|
||||
s({ trig = "ss" }, {
|
||||
t("smoothstep("),
|
||||
i(1),
|
||||
t(")"),
|
||||
i(2),
|
||||
}),
|
||||
}
|
||||
@@ -1,25 +0,0 @@
|
||||
local ls = require("luasnip")
|
||||
local s = ls.snippet
|
||||
local t = ls.text_node
|
||||
local i = ls.insert_node
|
||||
|
||||
return {
|
||||
s({ trig = "clg", desc = "console.log" }, {
|
||||
t("console.log("),
|
||||
i(1),
|
||||
t(")"),
|
||||
i(0),
|
||||
}),
|
||||
s({ trig = "Js", desc = "JSON.stringify" }, {
|
||||
t("JSON.stringify("),
|
||||
i(1),
|
||||
t(")"),
|
||||
i(0),
|
||||
}),
|
||||
s({ trig = "Jsf", desc = "JSON.stringify (formatted)" }, {
|
||||
t("JSON.stringify("),
|
||||
i(1),
|
||||
t(", 0, 2)"),
|
||||
i(0),
|
||||
}),
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
local ls = require("luasnip")
|
||||
local s = ls.snippet
|
||||
local t = ls.text_node
|
||||
local i = ls.insert_node
|
||||
|
||||
return {
|
||||
s({ trig = "^M.", regTrig = true, snippetType = "autosnippet" }, {
|
||||
t("local M = {"),
|
||||
i(1),
|
||||
t({ "}", "", "", "return M" }),
|
||||
}),
|
||||
}
|
||||
@@ -1,938 +0,0 @@
|
||||
local ls = require("luasnip")
|
||||
local s = ls.snippet
|
||||
local i = ls.insert_node
|
||||
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 "(\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
|
||||
return sn(nil, i(1, parent.snippet.env.LS_SELECT_RAW))
|
||||
else
|
||||
return sn(nil, i(1))
|
||||
end
|
||||
end
|
||||
|
||||
return {
|
||||
s(
|
||||
{ trig = "^h", regTrig = true, desc = "Markdown header" },
|
||||
fmta("# <><>", {
|
||||
d(1, get_visual),
|
||||
i(0),
|
||||
})
|
||||
),
|
||||
s(
|
||||
{ trig = "^sec", regTrig = true, desc = "Markdown header" },
|
||||
fmta("## <><>", {
|
||||
d(1, get_visual),
|
||||
i(0),
|
||||
})
|
||||
),
|
||||
s(
|
||||
{ trig = "^ssec", regTrig = true, desc = "Markdown header" },
|
||||
fmta("### <><>", {
|
||||
d(1, get_visual),
|
||||
i(0),
|
||||
})
|
||||
),
|
||||
}
|
||||
@@ -1,24 +0,0 @@
|
||||
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("))"),
|
||||
}),
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
local ls = require("luasnip")
|
||||
local s = ls.snippet
|
||||
local t = ls.text_node
|
||||
local i = ls.insert_node
|
||||
|
||||
return {
|
||||
s("host", {
|
||||
t("Host "),
|
||||
i(1, "alias"),
|
||||
t({ "", "\tHostName " }),
|
||||
i(2, "name"),
|
||||
t({ "", "\tUser " }),
|
||||
i(3, "user"),
|
||||
}),
|
||||
}
|
||||
@@ -1,30 +0,0 @@
|
||||
local ls = require("luasnip")
|
||||
local s = ls.snippet
|
||||
local t = ls.text_node
|
||||
local i = ls.insert_node
|
||||
|
||||
-- TODO: extends html, javascript, css
|
||||
|
||||
return {
|
||||
s("oM", {
|
||||
t({ "onMount(() => {" }),
|
||||
i(0),
|
||||
t({ "})" }),
|
||||
}),
|
||||
s("oD", {
|
||||
t({ "onDestroy(() => {" }),
|
||||
i(0),
|
||||
t({ "})" }),
|
||||
}),
|
||||
s("preJsf", {
|
||||
t({ "<pre>" }),
|
||||
i(0),
|
||||
t({ "{JSON.stringify($0, 0, 2)}" }),
|
||||
t({ "</pre>" }),
|
||||
}),
|
||||
s(":g", {
|
||||
t({ ":global(" }),
|
||||
i(0),
|
||||
t({ ")" }),
|
||||
}),
|
||||
}
|
||||
@@ -1,69 +0,0 @@
|
||||
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("}")),
|
||||
})
|
||||
@@ -1,12 +0,0 @@
|
||||
local ls = require("luasnip")
|
||||
local s = ls.snippet
|
||||
local t = ls.text_node
|
||||
local i = ls.insert_node
|
||||
|
||||
return {
|
||||
s("preJ", {
|
||||
t("<pre>{JSON.stringify("),
|
||||
i(1, "object"), -- first tab stop
|
||||
t(", null, 2)}</pre>"),
|
||||
}),
|
||||
}
|
||||
@@ -1,2 +0,0 @@
|
||||
indent_type = "Spaces"
|
||||
indent_width = 2
|
||||
@@ -1,4 +0,0 @@
|
||||
pkgs: {
|
||||
vscode = [ pkgs.vimPlugins.vscode-nvim ];
|
||||
zenwritten = [ pkgs.vimPlugins.zenbones-nvim ];
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
local map = vim.keymap.set
|
||||
|
||||
require("keymaps")
|
||||
|
||||
map({ "n", "v" }, "<leader>p", '<cmd>call VSCodeNotify("workbench.action.quickOpen")<cr>')
|
||||
map({ "n", "v" }, "<leader>f", '<cmd>call VSCodeNotify("workbench.action.findInFiles")<cr>')
|
||||
map({ "n", "v" }, "<leader>b", '<cmd>call VSCodeNotify("workbench.action.toggleSidebarVisibility")<cr>')
|
||||
map({ "n", "v" }, "<leader>t", '<cmd>call VSCodeNotify("workbench.action.togglePanel")<cr>')
|
||||
map({ "n", "v" }, "<leader>ca", "<cmd>call VSCodeNotify('editor.action.quickFix')<cr>")
|
||||
Reference in New Issue
Block a user