Compare commits

...

15 commits

Author SHA1 Message Date
f160a5b4a7
nvim: Update zk-nvim
Changes filetypes option placement in configuration.
2025-06-06 22:30:35 +02:00
0a927afe60
repo: Remove quarto snippets file from being linked 2025-06-06 22:30:34 +02:00
21e80aeb87
nvim: Fix markdown rendering in codecompanion buffers 2025-06-06 15:58:45 +02:00
e912c3f535
nvim: Add vue language LSP/Treesitter/formatting setup 2025-06-06 15:58:44 +02:00
1f05e0775d
nvim: Add mason env utility function
Should return the mason environment for lsp servers to be able to set it
in the 'core/languages.lua' list.

However, currently it is initialized too early (I think), before
mason.nvim, and thus never gets the initialized env var.
2025-06-06 15:58:44 +02:00
9900750e81
nvim: Change creating lsp servers into local function 2025-06-06 15:58:43 +02:00
d2432e0039
nvim: Extend lsp configuration with multiple declarations
So far if LSP declarations in 'core/languages.lua' were duplicated (e.g.
the 'astro' filetype and the 'vue' filetype both declare the
'typescript' lsp), one would simply overwrite the other. That is fine as
long as there is no custom setup, but if there is one of them is lost.

This commit changes it so that the different configurations extend each
other. The 'latter' one still overwrites the former but this is just
what must happen if there should be conflicting setups. 

May increase loading time slightly.
2025-06-06 15:58:43 +02:00
1d5fbef0fb
nvim: Use new non-programmatic lspconfig interface for 0.11 2025-06-06 15:58:42 +02:00
b22334c442
jj: Add tug alias to move forward most recent bookmark 2025-06-06 15:58:42 +02:00
5913948705
nvim: Check linter existence before setting options
We only change 'markdownlint' arguments if it actually exists in the
nvim-lint 'linters' table.
2025-06-06 15:58:41 +02:00
cf9a25d1c6
nvim: Use uv for running python coverage
Still needs to be improved and less hardcoded but for now at least we
use the tool that I use every day.
2025-06-06 15:58:41 +02:00
59223d1003
wezterm: By default connect mux to domain called unix
If we start wezterm muxing we now always connect to the same default
domain. This is a tiny step toward true multiplexing with wezterm.
2025-06-06 15:58:40 +02:00
4d8f554197
jj: Move git_head display to end of single-log line
It was moving about the change dates too much and not super necessary
for information, so moved it further down the line.
2025-06-06 15:58:39 +02:00
86d358627c
papis: Use new formatter configuration option
Replaces deprecated 'formater'.
2025-06-06 15:58:39 +02:00
2bdfb291ae
nvim: Add jj source to neotree 2025-06-06 15:58:38 +02:00
12 changed files with 145 additions and 53 deletions

View file

@ -24,7 +24,6 @@ vcs = "~"
[nvim.files]
"nvim/.config/nvim/spell/de.utf-8.add.spl" = { target = "~/.config/nvim/spell/de.utf-8.add.spl", type = "symbolic" }
"nvim/.config/nvim/spell/en.utf-8.add.spl" = { target = "~/.config/nvim/spell/en.utf-8.add.spl", type = "symbolic" }
"nvim/.config/nvim/snippets/quarto.snippets" = { target = "~/.config/nvim/snippets/quarto.snippets", type = "symbolic" }
nvim = "~"
[scripts.files]

View file

@ -35,13 +35,14 @@
"magick": { "branch": "master", "commit": "aa96e77b6d08983707941727a574752445de0d70" },
"markdown-preview.nvim": { "branch": "master", "commit": "a923f5fc5ba36a3b17e289dc35dc17f66d0548ee" },
"markmap.nvim": { "branch": "main", "commit": "5fb6755cf5434511cc23a4936c9eb76b9142fba5" },
"mason-conform.nvim": { "branch": "main", "commit": "1983f353b29d8716751665c18d57e1ac0473a59a" },
"mason-lspconfig.nvim": { "branch": "main", "commit": "1a31f824b9cd5bc6f342fc29e9a53b60d74af245" },
"mason-conform.nvim": { "branch": "main", "commit": "f3b96fa2217fcb1513301eefbe10ea0e765e33eb" },
"mason-lspconfig.nvim": { "branch": "main", "commit": "5477d67a5ca12b704f2a8a55a057fc79750f3dbb" },
"mason-nvim-lint": { "branch": "main", "commit": "b579a00ee39dcd590b1023028dc8fb3d203a67b0" },
"mason.nvim": { "branch": "main", "commit": "fc98833b6da5de5a9c5b1446ac541577059555be" },
"mason.nvim": { "branch": "main", "commit": "7f265cd6ae56cecdd0aa50c8c73fc593b0604801" },
"mdeval.nvim": { "branch": "master", "commit": "0e1b248db174a9659a9ab16eb8c90ff3aec55264" },
"mini.nvim": { "branch": "main", "commit": "0420076298c4457f200c2de468f65d080597a347" },
"molten-nvim": { "branch": "main", "commit": "a286aa914d9a154bc359131aab788b5a077a5a99" },
"neo-tree-jj.nvim": { "branch": "main", "commit": "c6534930c6f79893e12eafbb722ee23e6a83e80e" },
"neo-tree.nvim": { "branch": "main", "commit": "1ef260eb4f54515fe121a2267b477efb054d108a" },
"neogen": { "branch": "main", "commit": "b2e78708876f4da507839726816010a68e33fec8" },
"neotest": { "branch": "master", "commit": "d66cf4e05a116957f0d3a7755a24291c7d1e1f72" },
@ -52,7 +53,7 @@
"nvim-colorizer.lua": { "branch": "master", "commit": "517df88cf2afb36652830df2c655df2da416a0ae" },
"nvim-coverage": { "branch": "main", "commit": "a939e425e363319d952a6c35fb3f38b34041ded2" },
"nvim-lint": { "branch": "master", "commit": "9dfb77ef6c5092a19502883c02dc5a02ec648729" },
"nvim-lspconfig": { "branch": "master", "commit": "fa2662510d30b06168b6e2e6915518decde6bbac" },
"nvim-lspconfig": { "branch": "master", "commit": "3ea99227e316c5028f57a4d86a1a7fd01dd876d0" },
"nvim-nio": { "branch": "master", "commit": "21f5324bfac14e22ba26553caf69ec76ae8a7662" },
"nvim-surround": { "branch": "main", "commit": "0e62500b98f4513feaaf7425c135472457ea5b7d" },
"nvim-toggleterm.lua": { "branch": "main", "commit": "50ea089fc548917cc3cc16b46a8211833b9e3c7c" },
@ -87,5 +88,5 @@
"which-key.nvim": { "branch": "main", "commit": "fcbf4eea17cb299c02557d576f0d568878e354a4" },
"wrapping.nvim": { "branch": "master", "commit": "3a823200c297885b70515fa8d974e1763c578e26" },
"zen-mode.nvim": { "branch": "main", "commit": "04b52674b8c800f8b7d4609e8bd8d0212e3ffa79" },
"zk-nvim": { "branch": "main", "commit": "8fdd7032633045ece559273370fc0ec75ee8ffce" }
"zk-nvim": { "branch": "main", "commit": "fd1ab2239ed85ca51051c094a49a280f4ed76bb2" }
}

View file

@ -1,8 +1,8 @@
-- A list of all languages for which I have support for any of:
-- an LSP
-- Treesitter
-- linting
-- formatting
-- an LSP (lsp)
-- Treesitter (ts)
-- linting (lint)
-- formatting (format)
--
-- with their respective names used by lspconfig, nvim-treesitter, nvim-lint and conform.
--
@ -12,6 +12,16 @@ if vim.fn.executable("nufmt") == 1 then
nushell.format = { nu = { "nufmt" } }
end
-- FIXME: This does not work for populating LSP config,
-- never gets set MASON env var. Executing too early?
local function mason_dir()
local dir = vim.fn.getenv("MASON")
if dir ~= vim.NIL then
return dir
end
return vim.fn.getenv("HOME") .. "/.local/share/nvim/mason"
end
local languages = {
arduino = { lsp = { arduino_language_server = {} }, ts = { "arduino" } },
awk = { ts = { "awk" }, format = { awk = { "gawk" } } },
@ -107,7 +117,11 @@ local languages = {
lsp = { tinymist = { settings = { formatterMode = "typstyle" } } },
ts = { "typst" },
},
vue = { format = { vue = { "prettier", "rustywind" } } },
vue = {
lsp = { vue_ls = {} },
ts = { "typescript", "vue" },
format = { vue = { "prettier", "rustywind" } },
},
yaml = { lsp = { yamlls = {}, ansiblels = {} }, ts = { "yaml" }, format = { yaml = { "prettier" } } },
zsh = { format = { zsh = { "shfmt" } } },
@ -358,7 +372,6 @@ local languages = {
"vim",
"vimdoc",
"vrl",
"vue",
"wgsl",
"wgsl_bevy",
"wing",

View file

@ -1,15 +1,4 @@
return {
{
"julienvincent/hunk.nvim",
dependencies = {
"MunifTanjim/nui.nvim",
{ "nvim-tree/nvim-web-devicons", optional = true },
},
cmd = { "DiffEditor" },
config = function()
require("hunk").setup()
end,
},
{
"akinsho/git-conflict.nvim",
event = { "InsertEnter", "CursorHold", "VeryLazy" },
@ -106,4 +95,17 @@ return {
})
end,
},
-- jj diffing
{
"julienvincent/hunk.nvim",
dependencies = {
"MunifTanjim/nui.nvim",
{ "nvim-tree/nvim-web-devicons", optional = true },
},
cmd = { "DiffEditor" },
config = function()
require("hunk").setup()
end,
},
}

View file

@ -19,7 +19,9 @@ return {
"mfussenegger/nvim-lint",
config = function()
require("lint").linters_by_ft = linters
require("lint").linters.markdownlint.args = { "--stdin", "--disable", "MD013", "--" }
if require("lint").linters["markdownlint"] ~= nil then
require("lint").linters.markdownlint.args = { "--stdin", "--disable", "MD013", "--" }
end
vim.api.nvim_create_autocmd({ "BufWritePost", "InsertLeave" }, {
callback = function()
if not vim.g.disable_autolint then

View file

@ -1,12 +1,15 @@
local servers = {}
for _, lang in pairs(Languages) do
if not lang.lsp then
goto continue
local function get_all_servers()
local servers = {}
for _, lang in pairs(Languages) do
if not lang.lsp then
goto continue
end
for name, conf in pairs(lang.lsp) do
servers[name] = vim.tbl_deep_extend("force", servers[name] or {}, conf)
end
::continue::
end
for name, conf in pairs(lang.lsp) do
servers[name] = conf
end
::continue::
return servers
end
local lsp = {
@ -27,10 +30,8 @@ local lsp = {
{ "saghen/blink.cmp", optional = true },
},
event = { "BufReadPost", "BufNewFile", "BufWritePre" },
opts = { servers = servers },
opts = { servers = get_all_servers() },
config = function(_, lspconfig_opts)
local lspconfig = require("lspconfig")
-- Display diagnostics as virtual text only if not in insert mode
-- /r/neovim/comments/12inp4c/disable_diagnostics_virtual_text_when_in_insert/jqqifwk/
vim.diagnostic.config({ virtual_text = true })
@ -50,16 +51,22 @@ local lsp = {
vim.fn.sign_define("DiagnosticSignInfo", { text = "", texthl = "DiagnosticSignInfo" })
vim.fn.sign_define("DiagnosticSignHint", { text = "", texthl = "DiagnosticSignHint" })
for server, config in pairs(lspconfig_opts.servers) do
if vim.fn.has("nvim-0.11") == false then
config.capabilities = require("blink.cmp").get_lsp_capabilities(config.capabilities)
local function register(server_name, config)
if vim.fn.has("nvim-0.11") == 1 then
vim.lsp.config(server_name, config)
else
require("lspconfig")[server_name].setup(config)
end
lspconfig[server].setup(config)
end
lspconfig.nushell.setup({})
for server_name, config in pairs(lspconfig_opts.servers) do
register(server_name, config)
if vim.fn.has("nvim-0.11") == 0 then
config.capabilities = require("blink.cmp").get_lsp_capabilities(config.capabilities)
end
end
lspconfig.marksman.setup({
register("marksman", {
filetypes = { "markdown", "quarto" },
on_attach = function(client, _)
-- TODO: for some reason this stays true even after rootdir switch?
@ -112,7 +119,7 @@ local lsp = {
local python_path
-- ensure python virtualenv is determined automatically on lsp start
-- we primarily use pyright for cmp lsp completion & hover info
lspconfig.basedpyright.setup({
register("basedpyright", {
on_attach = function(client, _)
require("core.util").set_python_env()
if python_path == nil then
@ -134,7 +141,7 @@ local lsp = {
},
},
})
lspconfig.ruff.setup({
register("ruff", {
on_attach = function(client, _)
require("core.util").set_python_env()
client.server_capabilities.hoverProvider = false -- we use pyright for hover info
@ -148,16 +155,33 @@ local lsp = {
-- set up arduino with the help of arduino.nvim plugin
if require("core.util").is_available("arduino") then
lspconfig.arduino_language_server.setup({
register("arduino_language_server", {
on_new_config = require("arduino").on_new_config,
})
end
if vim.lsp.is_enabled("vue_ls") then
register("ts_ls", {
init_options = {
plugins = {
{
name = "@vue/typescript-plugin",
location = vim.fn.expand("$MASON/packages")
.. "/vue-language-server"
.. "/node_modules/@vue/language-server",
languages = { "vue" },
},
},
},
filetypes = { "typescript", "javascript", "javascriptreact", "typescriptsreact", "vue" },
})
end
-- attach ltex for fitting ft only when spell checking becomes enabled
vim.api.nvim_create_autocmd("User", {
pattern = "SpellEnable",
callback = function()
lspconfig.ltex.setup({
register("ltex", {
on_attach = function(_, _)
if require("core.util").is_available("ltex_extra") then
require("ltex_extra").setup()

View file

@ -38,13 +38,54 @@ return { -- file/item pickers and managers
})
end,
cmd = "Neotree",
opts = {
source_selector = { winbar = true },
},
opts = function(_, opts)
opts.sources = { "filesystem", "git_status", "buffers" }
opts.source_selector = {
winbar = true,
sources = {
{ source = "filesystem" },
{ source = "git_status" },
},
}
opts.close_if_last_window = true
opts.enable_cursor_hijack = true
end,
keys = {
{ "<leader>se", "<cmd>Neotree toggle left<cr>", desc = "filetree", silent = true },
},
},
{ -- substituting git tree listing with jj listing if in jj repo
dependencies = { "Cretezy/neo-tree-jj.nvim" },
"nvim-neo-tree/neo-tree.nvim",
optional = true,
opts = function(_, opts)
opts.sources = opts.sources or {}
opts.source_selector = opts.source_selector or {}
-- Add jj source as available
table.insert(opts.sources, "jj")
-- If there is a git tab in neo-tree replace it when in jj repo
if require("neo-tree.sources.jj.utils").get_repository_root() then
-- Remove git tab
if opts.source_selector.sources then
for i, source in ipairs(opts.source_selector.sources) do
if source.source == "git_status" then
table.remove(opts.source_selector.sources, i)
break
end
end
else
opts.source_selector.sources = {}
end
-- Add jj tab
table.insert(opts.source_selector.sources, {
display_name = "󰊢 JJ",
source = "jj",
})
end
end,
},
{ "MagicDuck/grug-far.nvim", opts = {}, cmd = "GrugFar" },
{
"ibhagwan/fzf-lua",

View file

@ -70,6 +70,7 @@ local prose_plugs = {
"MeanderingProgrammer/render-markdown.nvim",
main = "render-markdown",
opts = {
file_types = { "markdown", "codecompanion" },
render_modes = { "n", "c", "i" },
code = {
sign = false,
@ -212,9 +213,11 @@ local prose_plugs = {
require("zk").setup({
picker = picker,
lsp = {
config = {
filetypes = { "markdown", "quarto", "djot" },
},
auto_attach = {
enabled = true,
filteypes = { "markdown", "quarto", "djot" },
},
},
})

View file

@ -104,7 +104,7 @@ return {
},
},
-- TODO: needs to pick up poetry env for python,
-- currently just hard-codes running through poetry
-- currently just hard-codes running through uv
{
"andythigpen/nvim-coverage",
dependencies = {
@ -112,7 +112,7 @@ return {
},
config = function()
require("coverage").setup({
lang = { python = { coverage_command = "poetry run coverage json -q -o -" } },
lang = { python = { coverage_command = "uv run coverage json -q -o -" } },
})
end,
ft = { "python" },

View file

@ -24,6 +24,9 @@ if file_exists(colorsfile) == true then
end
local settings = {
unix_domains = {
{ name = "unix" },
},
enable_wayland = true, -- sadface :-(
xcursor_theme = "Adwaita",
enable_tab_bar = true,

View file

@ -18,6 +18,10 @@ pager = "delta"
[ui.diff]
format = "git" # for the time being to use delta well
[aliases]
# see: https://shaddy.dev/notes/jj-tug/, update most recent bookmark
tug = ["bookmark", "move", "--from", "heads(::@- & bookmarks())", "--to", "@-"]
[templates]
# Add git diffs to commit drafts
draft_commit_description = '''
@ -46,7 +50,6 @@ if(root,
if(conflict, label("conflict", "conflict")),
bookmarks,
tags,
if(git_head, label("git_head", "git_head()")),
if(description,
description.first_line(),
label(if(empty, "empty"), description_placeholder),
@ -58,6 +61,7 @@ if(root,
if(config("ui.show-cryptographic-signatures").as_boolean(),
format_short_cryptographic_signature(signature)),
if(empty, label("empty", "(empty)")),
if(git_head, label("git_head", "git_head()")),
) ++ "\n",
),
)

View file

@ -1,6 +1,6 @@
[settings]
default-library = main
formater = bbt
formatter = bbt
local-config-file = .papis.config
opentool = sioyek