From 92ab28953711b1dca953138d2c408db8a07a6232 Mon Sep 17 00:00:00 2001 From: Marty Oehme Date: Wed, 7 Jun 2023 10:05:16 +0200 Subject: [PATCH 01/14] nvim: Update plugins --- nvim/.config/nvim/lazy-lock.json | 44 ++++++++++++++++---------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/nvim/.config/nvim/lazy-lock.json b/nvim/.config/nvim/lazy-lock.json index 7020220..688743d 100644 --- a/nvim/.config/nvim/lazy-lock.json +++ b/nvim/.config/nvim/lazy-lock.json @@ -21,52 +21,52 @@ "cmp_luasnip": { "branch": "master", "commit": "18095520391186d634a0045dacaa346291096566" }, "completion-vcard": { "branch": "master", "commit": "2220fd517a985ececed1adcf0e5be8f2815564c7" }, "dial.nvim": { "branch": "master", "commit": "54b503f906bc9e5ab85288414840a1b86d40769f" }, - "dressing.nvim": { "branch": "master", "commit": "66e4990240f92e31b0d5e4df6deb6bb0160ae832" }, + "dressing.nvim": { "branch": "master", "commit": "f16d7586fcdd8b2e3850d0abb7e46f944125cc25" }, "easyread.nvim": { "branch": "main", "commit": "0b07e315a4cd7d700c4a794bdddbec79fdc2628b" }, "fidget.nvim": { "branch": "main", "commit": "0ba1e16d07627532b6cae915cc992ecac249fb97" }, "formatter.nvim": { "branch": "master", "commit": "fa4f2729cc2909db599169f22d8e55632d4c8d59" }, - "friendly-snippets": { "branch": "main", "commit": "1d0dac346de7c6895ac72528df3276386c6b149b" }, + "friendly-snippets": { "branch": "main", "commit": "b471f5419155ce832eff71ad8920ea8cfbd54840" }, "fwatch.nvim": { "branch": "main", "commit": "a691f7349dc66285cd75a1a698dd28bca45f2bf8" }, "gitsigns.nvim": { "branch": "main", "commit": "bb808fc7376ed7bac0fbe8f47b83d4bf01738167" }, "jupyter-kernel.nvim": { "branch": "main", "commit": "5b409598033884a3d819e2a3bcd1fe340bc8d783" }, - "lazy.nvim": { "branch": "main", "commit": "aba872ec78ffe7f7367764ab0fff6f0170421fde" }, + "lazy.nvim": { "branch": "main", "commit": "f145e6f42a56306c5536e9efbfe41f7efbec285d" }, "lightspeed.nvim": { "branch": "main", "commit": "299eefa6a9e2d881f1194587c573dad619fdb96f" }, "lsp-format.nvim": { "branch": "master", "commit": "ca0df5c8544e51517209ea7b86ecc522c98d4f0a" }, - "lsp-zero.nvim": { "branch": "v2.x", "commit": "56a50ebe9b0f46ecfabca3f1613084c74fd45414" }, + "lsp-zero.nvim": { "branch": "v2.x", "commit": "8fda9a849d6ab4196ecf129905764ddefdfb64b5" }, "lsp_signature.nvim": { "branch": "master", "commit": "4665921ff8e30601c7c1328625b3abc1427a6143" }, "lualine.nvim": { "branch": "master", "commit": "05d78e9fd0cdfb4545974a5aa14b1be95a86e9c9" }, "magma-nvim-goose": { "branch": "main", "commit": "5d916c39c1852e09fcd39eab174b8e5bbdb25f8f" }, "markdown-preview.nvim": { "branch": "master", "commit": "9becceee5740b7db6914da87358a183ad11b2049" }, - "mason-lspconfig.nvim": { "branch": "main", "commit": "90a8bbf106b85b76951a34c542058ffa807de2b1" }, - "mason.nvim": { "branch": "main", "commit": "253961cfe9b0a63b2524088be294acd7522366e5" }, + "mason-lspconfig.nvim": { "branch": "main", "commit": "5230617372e656d4a2e1e236e03bf7e7b4b97273" }, + "mason.nvim": { "branch": "main", "commit": "7d7efc738e08fc5bee822857db45cb6103f0b0c1" }, "mini.nvim": { "branch": "main", "commit": "889be69623395ad183ae6f3c21c8efe006350226" }, "nabla.nvim": { "branch": "master", "commit": "8c143ad2b3ab3b8ffbd51e238ccfcbd246452a7e" }, "neural": { "branch": "main", "commit": "155618730b87a67655bdde373ee27bfce8b07ac9" }, - "nui.nvim": { "branch": "main", "commit": "698e75814cd7c56b0dd8af4936bcef2d13807f3c" }, + "nui.nvim": { "branch": "main", "commit": "7a524120a7a70761b5a65b602fd235a65cb005aa" }, "nvim-base16": { "branch": "master", "commit": "4f3aa29f49b38edb6db1c52cea57e64ce3de2373" }, - "nvim-cmp": { "branch": "main", "commit": "d153771162bd9795d9f7142df5c674b61066a585" }, + "nvim-cmp": { "branch": "main", "commit": "fc0f694af1a742ada77e5b1c91ff405c746f4a26" }, "nvim-colorizer.lua": { "branch": "master", "commit": "dde3084106a70b9a79d48f426f6d6fec6fd203f7" }, - "nvim-lspconfig": { "branch": "master", "commit": "df58d91c9351a9dc5be6cf8d54f49ab0d9a64e73" }, - "nvim-notify": { "branch": "master", "commit": "bdd647f61a05c9b8a57c83b78341a0690e9c29d7" }, - "nvim-surround": { "branch": "main", "commit": "e6047128e57c1aff1566fb9f627521d2887fc77a" }, - "nvim-toggleterm.lua": { "branch": "main", "commit": "026dff5e2b504941cf172691561a67ea362596aa" }, - "nvim-tree.lua": { "branch": "master", "commit": "89816ace70642e9d3db0dab3dc68918f8979ec31" }, + "nvim-lspconfig": { "branch": "master", "commit": "458fa2ee2115c693ca48a04afa65f6de6b40a2db" }, + "nvim-notify": { "branch": "master", "commit": "ea9c8ce7a37f2238f934e087c255758659948e0f" }, + "nvim-surround": { "branch": "main", "commit": "211eaad7c6d01ef4ac02cba9052b3082ec232101" }, + "nvim-toggleterm.lua": { "branch": "main", "commit": "95204ece0f2a54c89c4395295432f9aeedca7b5f" }, + "nvim-tree.lua": { "branch": "master", "commit": "f5d970d4506f385b29534252d8c15a782fa53034" }, "nvim-treesitter": { "branch": "master", "commit": "cc360a9beb1b30d172438f640e2c3450358c4086" }, - "nvim-treesitter-context": { "branch": "master", "commit": "f24a86c32238867f24fbff49913db0068f8488d2" }, + "nvim-treesitter-context": { "branch": "master", "commit": "e2ea37627c0681421ccf4a3cf19d68bb958e1817" }, "nvim-treesitter-textsubjects": { "branch": "master", "commit": "b913508f503527ff540f7fe2dcf1bf1d1f259887" }, "nvim-ts-context-commentstring": { "branch": "main", "commit": "0bf8fbc2ca8f8cdb6efbd0a9e32740d7a991e4c3" }, - "nvim-ts-rainbow2": { "branch": "master", "commit": "cee4601ff8aac73dee4afa1074814343bb5a0b80" }, - "nvim-web-devicons": { "branch": "master", "commit": "986875b7364095d6535e28bd4aac3a9357e91bbe" }, - "otter.nvim": { "branch": "main", "commit": "4630e71b3e94552b7b33ddbfca061d92d0b466c2" }, + "nvim-ts-rainbow2": { "branch": "master", "commit": "c00d61ab7517530c49457ba49186776e6611a3e1" }, + "nvim-web-devicons": { "branch": "master", "commit": "2a125024a137677930efcfdf720f205504c97268" }, + "otter.nvim": { "branch": "main", "commit": "242d180e7f23cc2af6b5d5193bc50909408caef7" }, "playground": { "branch": "master", "commit": "2b81a018a49f8e476341dfcb228b7b808baba68b" }, "plenary.nvim": { "branch": "master", "commit": "253d34830709d690f013daf2853a9d21ad7accab" }, "popup.nvim": { "branch": "master", "commit": "b7404d35d5d3548a82149238289fa71f7f6de4ac" }, - "quarto-nvim": { "branch": "main", "commit": "43898e09b5f49dee35ff01ff0f873e7d600376be" }, + "quarto-nvim": { "branch": "main", "commit": "b299266c6287d74b60480fae348d629ec1dc02bb" }, "significant.nvim": { "branch": "main", "commit": "5450e9d5917dc6aa9afb0fcbe32355799b8303fb" }, "smartcolumn.nvim": { "branch": "main", "commit": "0c572e3eae48874f25b74394a486f38cadb5c958" }, "spellsitter.nvim": { "branch": "master", "commit": "4af8640d9d706447e78c13150ef7475ea2c16b30" }, "symbols-outline.nvim": { "branch": "master", "commit": "512791925d57a61c545bc303356e8a8f7869763c" }, - "telescope-fzf-native.nvim": { "branch": "main", "commit": "580b6c48651cabb63455e97d7e131ed557b8c7e2" }, + "telescope-fzf-native.nvim": { "branch": "main", "commit": "9bc8237565ded606e6c366a71c64c0af25cd7a50" }, "telescope.nvim": { "branch": "master", "commit": "c1a2af0af69e80e14e6b226d3957a064cd080805" }, "twilight.nvim": { "branch": "main", "commit": "8bb7fa7b918baab1ca81b977102ddb54afa63512" }, "vifm.vim": { "branch": "master", "commit": "a8130c37d144b51d84bee19f0532abcd3583383f" }, @@ -77,9 +77,9 @@ "vim-oscyank": { "branch": "main", "commit": "ffe827a27dae98aa826e2295336c650c9a434da0" }, "vim-pandoc-syntax": { "branch": "master", "commit": "4268535e1d33117a680a91160d845cd3833dfe28" }, "vim-spellsync": { "branch": "master", "commit": "3d6dd50de9c4d953cc16638112a6ae196df41463" }, - "which-key.nvim": { "branch": "main", "commit": "912ef1a9b018bbe45df1529345e42ae0ac896d63" }, - "wrapping.nvim": { "branch": "master", "commit": "c04a7163dc692d80a2907d06a3af8df1fedffec2" }, + "which-key.nvim": { "branch": "main", "commit": "e271c28118998c93a14d189af3395812a1aa646c" }, + "wrapping.nvim": { "branch": "master", "commit": "5e87f1424c86c50d3bc205830aa56ed1cad45467" }, "zen-mode.nvim": { "branch": "main", "commit": "6e6c963d70a8e47854fa656987666bfb863f9c4e" }, "zettelkasten.nvim": { "branch": "main", "commit": "0e77624689b470410f5355b613d45219c9350264" }, - "zk-nvim": { "branch": "main", "commit": "275578853dc76d282ee5b31f86cd3a4f02d91f2f" } + "zk-nvim": { "branch": "main", "commit": "5ddb53688035d115f941f0c8255f6e6618e608ac" } } \ No newline at end of file From de15382415b665b937b544f2852ecfc9fea07263 Mon Sep 17 00:00:00 2001 From: Marty Oehme Date: Wed, 7 Jun 2023 10:06:10 +0200 Subject: [PATCH 02/14] nvim: Remove spellsitter Spellsitter funcitonality is long deprecated and included in the mainline neovim project. So we might as well remove it from our plugins. --- nvim/.config/nvim/lazy-lock.json | 1 - 1 file changed, 1 deletion(-) diff --git a/nvim/.config/nvim/lazy-lock.json b/nvim/.config/nvim/lazy-lock.json index 688743d..d803c6e 100644 --- a/nvim/.config/nvim/lazy-lock.json +++ b/nvim/.config/nvim/lazy-lock.json @@ -64,7 +64,6 @@ "quarto-nvim": { "branch": "main", "commit": "b299266c6287d74b60480fae348d629ec1dc02bb" }, "significant.nvim": { "branch": "main", "commit": "5450e9d5917dc6aa9afb0fcbe32355799b8303fb" }, "smartcolumn.nvim": { "branch": "main", "commit": "0c572e3eae48874f25b74394a486f38cadb5c958" }, - "spellsitter.nvim": { "branch": "master", "commit": "4af8640d9d706447e78c13150ef7475ea2c16b30" }, "symbols-outline.nvim": { "branch": "master", "commit": "512791925d57a61c545bc303356e8a8f7869763c" }, "telescope-fzf-native.nvim": { "branch": "main", "commit": "9bc8237565ded606e6c366a71c64c0af25cd7a50" }, "telescope.nvim": { "branch": "master", "commit": "c1a2af0af69e80e14e6b226d3957a064cd080805" }, From e35dec9f9f6022ad5ae04d81d0aa1fde09252083 Mon Sep 17 00:00:00 2001 From: Marty Oehme Date: Wed, 7 Jun 2023 10:06:20 +0200 Subject: [PATCH 03/14] nvim: Update spellfile --- nvim/.config/nvim/spell/en.utf-8.add | 2 ++ 1 file changed, 2 insertions(+) diff --git a/nvim/.config/nvim/spell/en.utf-8.add b/nvim/.config/nvim/spell/en.utf-8.add index 36a166d..12456c1 100644 --- a/nvim/.config/nvim/spell/en.utf-8.add +++ b/nvim/.config/nvim/spell/en.utf-8.add @@ -181,3 +181,5 @@ positivity dataset endogeneity outliers +GitLab +Gitea From 681c48d4f7d7fd17605f9198181de139e649ffaa Mon Sep 17 00:00:00 2001 From: Marty Oehme Date: Wed, 7 Jun 2023 10:06:32 +0200 Subject: [PATCH 04/14] nvim: Format plugins file --- nvim/.config/nvim/lua/plugins.lua | 62 ++++++++++++++----------------- 1 file changed, 27 insertions(+), 35 deletions(-) diff --git a/nvim/.config/nvim/lua/plugins.lua b/nvim/.config/nvim/lua/plugins.lua index 4264323..a6f2598 100644 --- a/nvim/.config/nvim/lua/plugins.lua +++ b/nvim/.config/nvim/lua/plugins.lua @@ -8,9 +8,7 @@ return { { 'ggandor/lightspeed.nvim', event = "VeryLazy" }, -- jump between letters with improved fFtT quicksearch, mimics sneak { 'lewis6991/gitsigns.nvim', -- show vcs changes on left-hand gutter - config = function() - require('plug._gitsigns') - end, + config = function() require('plug._gitsigns') end, event = "BufRead" }, { "m4xshen/smartcolumn.nvim", config = true }, -- auto-hiding colorcolumn -- files @@ -29,9 +27,7 @@ return { 'NvChad/nvim-colorizer.lua', -- color hex, named colors in the correct preview scheme config = function() require('colorizer').setup({ - user_default_options = { - mode = 'virtualtext' - } + user_default_options = { mode = 'virtualtext' } }) end, event = "VeryLazy" @@ -211,36 +207,32 @@ return { end, event = "BufReadPre" }, { - 'lewis6991/spellsitter.nvim', -- uses treesitter to highlight spelling errors - config = function() require('spellsitter').setup() end, - event = "BufReadPre" -}, -- lsp - { - "VonHeikemen/lsp-zero.nvim", + -- lsp + "VonHeikemen/lsp-zero.nvim", + dependencies = { + { "neovim/nvim-lspconfig", branch = "master" }, + "williamboman/mason.nvim", "williamboman/mason-lspconfig.nvim", { + "hrsh7th/nvim-cmp", + branch = "main", dependencies = { - { "neovim/nvim-lspconfig", branch = "master" }, - "williamboman/mason.nvim", "williamboman/mason-lspconfig.nvim", { - "hrsh7th/nvim-cmp", - branch = "main", - dependencies = { - "andersevenrud/cmp-tmux", "cbarrete/completion-vcard", - "f3fora/cmp-spell", "hrsh7th/cmp-nvim-lsp", - "hrsh7th/cmp-path", "hrsh7th/cmp-buffer", - "hrsh7th/cmp-calc", "hrsh7th/cmp-cmdline", - "hrsh7th/cmp-nvim-lua", "dmitmel/cmp-digraphs", - "jc-doyle/cmp-pandoc-references", - "kdheepak/cmp-latex-symbols", "lukas-reineke/cmp-rg", - "crispgm/cmp-beancount", "ray-x/cmp-treesitter", - "saadparwaiz1/cmp_luasnip" - } - }, "L3MON4D3/LuaSnip", "rafamadriz/friendly-snippets", - { "lukas-reineke/lsp-format.nvim", config = true }, - { "j-hui/fidget.nvim", config = true } -- loading animations for some LSP - }, - config = function() require('plug._lsp') end, - branch = "v2.x" - }, { 'simrat39/symbols-outline.nvim', config = true, event = "VeryLazy" }, -- vista-like outline view for code - { 'ray-x/lsp_signature.nvim', config = true }, -- UI improvements + "andersevenrud/cmp-tmux", "cbarrete/completion-vcard", + "f3fora/cmp-spell", "hrsh7th/cmp-nvim-lsp", + "hrsh7th/cmp-path", "hrsh7th/cmp-buffer", + "hrsh7th/cmp-calc", "hrsh7th/cmp-cmdline", + "hrsh7th/cmp-nvim-lua", "dmitmel/cmp-digraphs", + "jc-doyle/cmp-pandoc-references", + "kdheepak/cmp-latex-symbols", "lukas-reineke/cmp-rg", + "crispgm/cmp-beancount", "ray-x/cmp-treesitter", + "saadparwaiz1/cmp_luasnip" + } + }, "L3MON4D3/LuaSnip", "rafamadriz/friendly-snippets", + { "lukas-reineke/lsp-format.nvim", config = true }, + { "j-hui/fidget.nvim", config = true } -- loading animations for some LSP + }, + config = function() require('plug._lsp') end, + branch = "v2.x" +}, { 'simrat39/symbols-outline.nvim', config = true, event = "VeryLazy" }, -- vista-like outline view for code + { 'ray-x/lsp_signature.nvim', config = true }, -- UI improvements { 'stevearc/dressing.nvim', config = true }, { 'rcarriga/nvim-notify', config = function() vim.notify = require("notify") end From bd555608b1f49c45903e61fdbeb0a68970e55783 Mon Sep 17 00:00:00 2001 From: Marty Oehme Date: Wed, 7 Jun 2023 10:08:35 +0200 Subject: [PATCH 05/14] waybar: Update event icons --- desktop/.config/waybar/config | 5 +---- desktop/.config/waybar/modules/khal.py | 4 ++-- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/desktop/.config/waybar/config b/desktop/.config/waybar/config index ccb3871..81d4e74 100644 --- a/desktop/.config/waybar/config +++ b/desktop/.config/waybar/config @@ -51,9 +51,6 @@ "custom/events": { "format": "{}", "interval": 300, - "format-icons": { - "default": "" - }, "exec": "~/.config/waybar/modules/khal.py 2>/dev/null", "exec-if": "command -v khal >/dev/null 2>&1", "return-type": "json", @@ -144,7 +141,7 @@ "format": "{} 󱐁", }, "river/window": { - "format": " {}", + "format": " {}", "max-length": 70 }, "temperature": { diff --git a/desktop/.config/waybar/modules/khal.py b/desktop/.config/waybar/modules/khal.py index a5f0117..ba96199 100755 --- a/desktop/.config/waybar/modules/khal.py +++ b/desktop/.config/waybar/modules/khal.py @@ -26,9 +26,9 @@ for line in lines: output = "\n".join(new_lines).strip() if today in output: - data["text"] = " " + output.split("\n")[1] + data["text"] = " " + output.split("\n")[1] else: - data["text"] = "" + data["text"] = " " data["tooltip"] = output From bce567579599327369c37bcef724432fd048b47f Mon Sep 17 00:00:00 2001 From: Marty Oehme Date: Wed, 7 Jun 2023 10:27:17 +0200 Subject: [PATCH 06/14] bootstrap: Remove unclutter package Removed long overdue unclutter package which is used on X11 but we switched to wayland around two years ago now. For this setup, the river window manager takes care of hiding and showing the mouse pointer. --- bootstrap/packages_stable.tsv | 1 - 1 file changed, 1 deletion(-) diff --git a/bootstrap/packages_stable.tsv b/bootstrap/packages_stable.tsv index ba437ae..e78a7f0 100644 --- a/bootstrap/packages_stable.tsv +++ b/bootstrap/packages_stable.tsv @@ -307,7 +307,6 @@ tut A TUI for Mastodon with vim inspired keys A typescript-language-server Language Server Protocol (LSP) implementation for TypeScript using tsserver R udiskie Removable disk automounter using udisks R ufw Uncomplicated and easy to use CLI tool for managing a netfilter firewall R -unclutter A small program for hiding the mouse cursor R unrar The RAR uncompression program R unrtf Command-line program which converts RTF documents to other formats R urlview-xdg-git A curses URL parser for text files. Git version, adds support for QUITONLAUNCH option and XDG Base Directory specification compliance. A From 60b89b6d3022967e182ff1d026cd11373f7a5041 Mon Sep 17 00:00:00 2001 From: Marty Oehme Date: Wed, 7 Jun 2023 10:29:15 +0200 Subject: [PATCH 07/14] githook: Fix showing pkgs in commit message Quick fix to show difference in committed and installed packages in the commit editor window again. Due to Arch moving the base-devel package from a group to a meta-package we can not just remove all packages that are in the group anymore - it will simply error out instead. This removes the check and thus provides a quick and dirty fix for the time being. --- .githooks/prepare-commit-msg | 2 +- bootstrap/update_package_list.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.githooks/prepare-commit-msg b/.githooks/prepare-commit-msg index c8a6b77..a643c00 100755 --- a/.githooks/prepare-commit-msg +++ b/.githooks/prepare-commit-msg @@ -5,7 +5,7 @@ COMMIT_SOURCE="$2" BOOTSTRAPDIR="bootstrap" pkg_committed="$(cat "$(git rev-parse --show-toplevel)"/$BOOTSTRAPDIR/packages*.tsv | grep -v -e '^Name Description Source Target' | cut -f1 | sort)" -pkg_onsystem=$(pacman -Qqett | grep -v "$(pacman -Qqg base-devel)" | sort) +pkg_onsystem=$(pacman -Qqett | sort) # get files only in repo, and only on machine only_committed=$(comm -23 <(echo "$pkg_committed") <(echo "$pkg_onsystem")) diff --git a/bootstrap/update_package_list.sh b/bootstrap/update_package_list.sh index bb37f4d..7010b38 100755 --- a/bootstrap/update_package_list.sh +++ b/bootstrap/update_package_list.sh @@ -3,7 +3,7 @@ BOOTSTRAP_DIR=${BOOTSTRAP_DIR:-$(pwd)/bootstrap} INPUTFILES=$(find "${BOOTSTRAP_DIR}" -type f -name 'packages*.tsv') OUTPUTFILE=${BOOTSTRAP_DIR}/packages_testing.tsv -pkg_all=$(pacman -Qqett | grep -v "$(pacman -Qqg base-devel)") +pkg_all=$(pacman -Qqett) pkg_repo=$(pacman -Qqn) pkg_aur=$(pacman -Qqm) From a43e2cc4bd168ba8b49cbb86fd880c2e5aa943f6 Mon Sep 17 00:00:00 2001 From: Marty Oehme Date: Wed, 7 Jun 2023 10:32:26 +0200 Subject: [PATCH 08/14] river: Switch call to terminal to be more general Switched the calls for the term variable mappings (opening term, floating term, calculator, and so on) to make use of the pretty much standard 'terminal -e' invocation to start the terminal and execute something within it. This newly works for wezterm since any release after 2022-12-26, which are now also on the Arch repositories and will make the river init a tiny bit more portable whenever wanting to switch to a different terminal. --- desktop/.config/river/init | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/desktop/.config/river/init b/desktop/.config/river/init index 33cc3e7..b8afca1 100755 --- a/desktop/.config/river/init +++ b/desktop/.config/river/init @@ -39,7 +39,7 @@ riverctl map normal $mod+Shift C close # Open terminal riverctl map normal $mod Return spawn "$term" # Open floating terminal -riverctl map normal $mod+Control Return spawn "$term start --class float" +riverctl map normal $mod+Control Return spawn "$term -e --class float" # Open run menu riverctl map normal $mod Space spawn "bemenu-run" @@ -61,7 +61,7 @@ riverctl map normal $mod+Shift O spawn "qutedmenu" riverctl map normal $mod+Shift Space spawn "clipman pick --tool=bemenu" # Open floating calculator -riverctl map normal $mod+Shift R spawn "$term start --class float -e qalc" +riverctl map normal $mod+Shift R spawn "$term -e --class float qalc" # Open emoji picker riverctl map normal $mod+Shift E spawn "bemoji -nt" @@ -77,7 +77,7 @@ riverctl map normal $mod+Shift S spawn 'flavourchoose' riverctl map normal $mod+Shift P spawn "pass-pick" # File upload -riverctl map normal $mod+Shift U spawn "$term start --class float -e sharefile | xargs notify-send" +riverctl map normal $mod+Shift U spawn "$term -e --class float sharefile | xargs notify-send" # # Screenshot riverctl map normal None Print spawn "screenshot" From 79910b8bf1ba0ae2a2b52f8131806b756d2b6487 Mon Sep 17 00:00:00 2001 From: Marty Oehme Date: Thu, 8 Jun 2023 13:02:45 +0200 Subject: [PATCH 09/14] bootstrap: Fix package installer file path --- bootstrap/install_packages.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bootstrap/install_packages.sh b/bootstrap/install_packages.sh index 4608b6e..50a77f3 100755 --- a/bootstrap/install_packages.sh +++ b/bootstrap/install_packages.sh @@ -7,9 +7,9 @@ # DESCRIPTION: Display usage information for this script. # PARAMETERS: see usage function #============================================================================== -PKG_TSV_FILE=${PKG_TSV_FILE:-bootstrap/packages.tsv} packages_repo="${BOOTSTRAP_PACKAGES:-$(grep -e ' R ' "$PKG_TSV_FILE" | cut -f1 -d' ' )}" packages_aur="${BOOTSTRAP_PACKAGES_AUR:-$(grep -e ' A ' "$PKG_TSV_FILE" | cut -f1 -d' ' )}" +PKG_TSV_FILE=${PKG_TSV_FILE:-bootstrap/packages_stable.tsv} main() { local cmd="" From bfe7e7790cf79fb4b68716974e60e98bcc3f8bc4 Mon Sep 17 00:00:00 2001 From: Marty Oehme Date: Thu, 8 Jun 2023 13:03:27 +0200 Subject: [PATCH 10/14] bootstrap: Change yay to paru for pkg installation --- bootstrap/install_packages.sh | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/bootstrap/install_packages.sh b/bootstrap/install_packages.sh index 50a77f3..19a2a6f 100755 --- a/bootstrap/install_packages.sh +++ b/bootstrap/install_packages.sh @@ -36,16 +36,16 @@ main() { exit $ret } -install_yay() { - # check for existing yay installation - if type yay >/dev/null 2>&1; then - echo "Existing yay installation found ..........................................." +install_paru() { + # check for existing paru installation + if type paru >/dev/null 2>&1; then + echo "Existing paru installation found ..........................................." return fi - # use tmp dir to make yay + # use tmp dir to make paru target=$(mktemp -d) - git clone https://aur.archlinux.org/yay.git "$target" + git clone https://aur.archlinux.org/paru.git "$target" cd "$target" || exit makepkg -si } @@ -53,27 +53,27 @@ install_yay() { update_repos() { unattended="$1" if "$unattended"; then - yay -Sqyy --noconfirm + paru -Sqyy --noconfirm else - yay -Syy + paru -Syy fi } install_packages() { unattended="$1" if "$unattended"; then - echo "$packages_repo" "$packages_aur" | yay -Squ --noconfirm --needed - + echo "$packages_repo" "$packages_aur" | paru -Squ --noconfirm --needed - else - echo "$packages_repo" | yay -Squ --needed - - echo "$packages_aur" | yay -S --needed - + echo "$packages_repo" | paru -Squ --needed - + echo "$packages_aur" | paru -S --needed - fi } install() { unattended=$1 echo "Beginning package bootstrap ..............................................." - echo "Installing yay ............................................................" - install_yay + echo "Installing paru ............................................................" + install_paru echo "Installing apps ..........................................................." update_repos "$unattended" install_packages "$unattended" From 29cb20efcbbbbdeda8648ae2149f5aa25b070b7b Mon Sep 17 00:00:00 2001 From: Marty Oehme Date: Thu, 8 Jun 2023 13:05:01 +0200 Subject: [PATCH 11/14] bootstrap: Add pipx managed package installation Packages managed through pipx (and pipx itself) are now also installed in the initial process. They are marked as coming from 'P' source in the package TSV. There is a special field for these packages which declares any injections made by pipx which will also automatically get injected into the pipx environment on installation. --- bootstrap/install_packages.sh | 35 +++++++++++++++++++++++++++++++++-- bootstrap/packages_stable.tsv | 8 +++++++- 2 files changed, 40 insertions(+), 3 deletions(-) diff --git a/bootstrap/install_packages.sh b/bootstrap/install_packages.sh index 19a2a6f..86c1315 100755 --- a/bootstrap/install_packages.sh +++ b/bootstrap/install_packages.sh @@ -7,9 +7,10 @@ # DESCRIPTION: Display usage information for this script. # PARAMETERS: see usage function #============================================================================== -packages_repo="${BOOTSTRAP_PACKAGES:-$(grep -e ' R ' "$PKG_TSV_FILE" | cut -f1 -d' ' )}" -packages_aur="${BOOTSTRAP_PACKAGES_AUR:-$(grep -e ' A ' "$PKG_TSV_FILE" | cut -f1 -d' ' )}" PKG_TSV_FILE=${PKG_TSV_FILE:-bootstrap/packages_stable.tsv} +packages_repo="${BOOTSTRAP_PACKAGES:-$(grep -e ' R ' "$PKG_TSV_FILE" | cut -f1 -d' ')}" +packages_aur="${BOOTSTRAP_PACKAGES_AUR:-$(grep -e ' A ' "$PKG_TSV_FILE" | cut -f1 -d' ')}" +packages_pipx="${BOOTSTRAP_PACKAGES_PIPX:-$(grep -e ' P ' "$PKG_TSV_FILE" | cut -f1,5 -d' ')}" main() { local cmd="" @@ -69,6 +70,31 @@ install_packages() { fi } +install_pipx() { + if type pipx >/dev/null 2>&1; then + echo "Existing pipx installation found .........................................." + return + fi + if "$unattended"; then + paru -S --noconfirm python-pipx + else + paru -S python-pipx + fi +} + +install_pipx_pkgs() { + while IFS= read -r line; do + if [ -z "$line" ]; then return; fi + prog=$(echo "$line" | cut -f1 -d' ') + pipx install "$prog" + + injections=$(echo "$line" | cut -f2 -d' ') + for inject_args in ${injections//,/ }; do + pipx inject "$prog" "$inject_args" + done + done <<<"$packages_pipx" +} + install() { unattended=$1 echo "Beginning package bootstrap ..............................................." @@ -78,6 +104,11 @@ install() { update_repos "$unattended" install_packages "$unattended" echo "Done ......................................................................" + echo "Installing pipx ..........................................................." + install_pipx + echo "Installing pipx packages .................................................." + install_pipx_pkgs + echo "Done ......................................................................" } main "$@" diff --git a/bootstrap/packages_stable.tsv b/bootstrap/packages_stable.tsv index e78a7f0..e92a3a5 100644 --- a/bootstrap/packages_stable.tsv +++ b/bootstrap/packages_stable.tsv @@ -25,7 +25,9 @@ bash-completion Programmable completion for the bash shell R bash-language-server Bash language server implementation based on Tree Sitter and its grammar for Bash R bat Cat clone with syntax highlighting and git integration R bc An arbitrary precision calculator language R +beancount A personal double entry accounting and budgeting software P beancount-categorizer,beancount-dkb,fava,python-magic,smart-importer bearssl Implementation of the SSL/TLS protocol (RFC 5246) written in C R +beets Organize your music collection from the command line P beetcamp bemoji-git Emoji picker that remembers your favorites. A bibclean BibTeX and Scribe bibliography prettyprinter and syntax checker A biber A Unicode-capable BibTeX replacement for biblatex users R @@ -61,6 +63,7 @@ dust A more intuitive version of du in rust R efm-langserver General purpose Language Server A enca Charset analyser and converter R entr Run arbitrary commands when files change R +euporie View and work with ipnb Python notebooks from the cli P exa ls replacement R exercism-bin Command line client for exercism.io A exfat-utils Utilities for exFAT file system R @@ -107,6 +110,7 @@ imv Image viewer for Wayland and X11 R intel-ucode Microcode update files for Intel CPUs R iputils Network monitoring tools, including ping R ipython An enhanced Interactive Python shell. R +isbntools A variety of tools to work with isbn addresses P iucode-tool Tool to manipulate Intel® IA-32/X86-64 microcode bundles R iwd Internet Wireless Daemon R jiq-bin Interactive JSON query tool using jq expressions A @@ -148,6 +152,7 @@ maim Utility to take a screenshot using imlib2 R mako Lightweight notification daemon for Wayland R man-db A utility for reading man pages R man-pages Linux man pages R +markdown-anki-decks Construct and modify anki decks directly with markdown P markdownlint-cli MarkdownLint Command Line Interface A masterpdfeditor-free A complete solution for creation and editing PDF files - Free version without watermark A mbsync-git free (GPL) mailbox synchronization program A @@ -198,6 +203,7 @@ offpunk-git Fork of the command-line Gemini client AV-98 with added offline capa oh-my-zsh-git A community-driven framework for managing your zsh configuration. Includes 180+ optional plugins and over 120 themes to spice up your morning, and an auto-update tool so that makes it easy to keep up with the latest updates from the community A os-prober Utility to detect other OSes on a set of drives R pacman-contrib Contributed scripts and tools for pacman systems R +papis-tui A tui interface for papis bibliography manager P whoosh parallel A shell tool for executing jobs in parallel R parsec-bin Remotely connect to a gaming pc for a low latency remote computing experience A paru-bin Feature packed AUR helper A @@ -342,9 +348,9 @@ xdg-user-dirs Manage user directories like ~/Desktop and ~/Music R xsv A CLI for indexing, slicing, analyzing, splitting and joining CSV files R yaml-language-server YAML Language Server R yarn Fast, reliable, and secure dependency management R -yubikey-manager Python library and command line tool for configuring a YubiKey R yt-dlp A youtube-dl fork with additional features and fixes R ytfzf A POSIX script to find and watch youtube videos from the terminal R +yubikey-manager Python library and command line tool for configuring a YubiKey R zathura-cb Adds comic book support to zathura R zathura-djvu DjVu support for Zathura R zathura-pdf-mupdf PDF support for Zathura (MuPDF backend) (Supports PDF, ePub, and OpenXPS) R From 3a709bb45027f57eb519d6086091f68037843a51 Mon Sep 17 00:00:00 2001 From: Marty Oehme Date: Thu, 15 Jun 2023 09:43:10 +0200 Subject: [PATCH 12/14] nvim: Replace live grep key chord with fw Moved the old, a little more cumbersome, mapping fF to be fw instead to start live grepping with telescope. --- nvim/.config/nvim/lua/maps.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nvim/.config/nvim/lua/maps.lua b/nvim/.config/nvim/lua/maps.lua index 2597fd5..c57495e 100644 --- a/nvim/.config/nvim/lua/maps.lua +++ b/nvim/.config/nvim/lua/maps.lua @@ -155,7 +155,7 @@ map('n', 'fh', ":lua require 'telescope.builtin'.find_files({hidden=true})", { desc = 'find hidden files' }) -- general full-text search in cwd with rg -map('n', 'fF', ":lua require 'telescope.builtin'.live_grep()", +map('n', 'fw', ":lua require 'telescope.builtin'.live_grep()", { desc = 'grep search' }) -- git status From 41968e1361c6521c1b86bec1c5721e3cfef5e9d8 Mon Sep 17 00:00:00 2001 From: Marty Oehme Date: Thu, 15 Jun 2023 09:46:38 +0200 Subject: [PATCH 13/14] nvim: Integrate null_ls for formatting and linting Formatting and linting should from now be done with null_ls instead of formatter.nvim (and nothing for linting so far). This will still take a little to fully transition, for now we use null_ls for eslint linting and prettier formatting for a variety of javascript/typescript and astro files. null_ls uses Mason installations under the hood and any tool it uses also gets installed by Mason. --- nvim/.config/nvim/lazy-lock.json | 4 +- nvim/.config/nvim/lua/plug/_format.lua | 64 ---- nvim/.config/nvim/lua/plug/_lsp.lua | 493 +++++++++++++++---------- nvim/.config/nvim/lua/plugins.lua | 72 ++-- 4 files changed, 333 insertions(+), 300 deletions(-) delete mode 100644 nvim/.config/nvim/lua/plug/_format.lua diff --git a/nvim/.config/nvim/lazy-lock.json b/nvim/.config/nvim/lazy-lock.json index d803c6e..f541e4b 100644 --- a/nvim/.config/nvim/lazy-lock.json +++ b/nvim/.config/nvim/lazy-lock.json @@ -24,25 +24,25 @@ "dressing.nvim": { "branch": "master", "commit": "f16d7586fcdd8b2e3850d0abb7e46f944125cc25" }, "easyread.nvim": { "branch": "main", "commit": "0b07e315a4cd7d700c4a794bdddbec79fdc2628b" }, "fidget.nvim": { "branch": "main", "commit": "0ba1e16d07627532b6cae915cc992ecac249fb97" }, - "formatter.nvim": { "branch": "master", "commit": "fa4f2729cc2909db599169f22d8e55632d4c8d59" }, "friendly-snippets": { "branch": "main", "commit": "b471f5419155ce832eff71ad8920ea8cfbd54840" }, "fwatch.nvim": { "branch": "main", "commit": "a691f7349dc66285cd75a1a698dd28bca45f2bf8" }, "gitsigns.nvim": { "branch": "main", "commit": "bb808fc7376ed7bac0fbe8f47b83d4bf01738167" }, "jupyter-kernel.nvim": { "branch": "main", "commit": "5b409598033884a3d819e2a3bcd1fe340bc8d783" }, "lazy.nvim": { "branch": "main", "commit": "f145e6f42a56306c5536e9efbfe41f7efbec285d" }, "lightspeed.nvim": { "branch": "main", "commit": "299eefa6a9e2d881f1194587c573dad619fdb96f" }, - "lsp-format.nvim": { "branch": "master", "commit": "ca0df5c8544e51517209ea7b86ecc522c98d4f0a" }, "lsp-zero.nvim": { "branch": "v2.x", "commit": "8fda9a849d6ab4196ecf129905764ddefdfb64b5" }, "lsp_signature.nvim": { "branch": "master", "commit": "4665921ff8e30601c7c1328625b3abc1427a6143" }, "lualine.nvim": { "branch": "master", "commit": "05d78e9fd0cdfb4545974a5aa14b1be95a86e9c9" }, "magma-nvim-goose": { "branch": "main", "commit": "5d916c39c1852e09fcd39eab174b8e5bbdb25f8f" }, "markdown-preview.nvim": { "branch": "master", "commit": "9becceee5740b7db6914da87358a183ad11b2049" }, "mason-lspconfig.nvim": { "branch": "main", "commit": "5230617372e656d4a2e1e236e03bf7e7b4b97273" }, + "mason-null-ls.nvim": { "branch": "main", "commit": "cfbd83909cbc56e2f07cb3f8a03157e069c5c91c" }, "mason.nvim": { "branch": "main", "commit": "7d7efc738e08fc5bee822857db45cb6103f0b0c1" }, "mini.nvim": { "branch": "main", "commit": "889be69623395ad183ae6f3c21c8efe006350226" }, "nabla.nvim": { "branch": "master", "commit": "8c143ad2b3ab3b8ffbd51e238ccfcbd246452a7e" }, "neural": { "branch": "main", "commit": "155618730b87a67655bdde373ee27bfce8b07ac9" }, "nui.nvim": { "branch": "main", "commit": "7a524120a7a70761b5a65b602fd235a65cb005aa" }, + "null-ls.nvim": { "branch": "main", "commit": "a138b14099e9623832027ea12b4631ddd2a49256" }, "nvim-base16": { "branch": "master", "commit": "4f3aa29f49b38edb6db1c52cea57e64ce3de2373" }, "nvim-cmp": { "branch": "main", "commit": "fc0f694af1a742ada77e5b1c91ff405c746f4a26" }, "nvim-colorizer.lua": { "branch": "master", "commit": "dde3084106a70b9a79d48f426f6d6fec6fd203f7" }, diff --git a/nvim/.config/nvim/lua/plug/_format.lua b/nvim/.config/nvim/lua/plug/_format.lua deleted file mode 100644 index 88c461b..0000000 --- a/nvim/.config/nvim/lua/plug/_format.lua +++ /dev/null @@ -1,64 +0,0 @@ --- for each filetype autoformat on save --- TODO can automatically gather from formatter table keys? -local prettierfmt = { - function() - local set_quotes = "--single-quote" - if vim.bo.filetype == "json" then set_quotes = "--double-quote" end - return { - exe = "prettier", - args = { - "--stdin-filepath", vim.api.nvim_buf_get_name(0), set_quotes - }, - stdin = true - } - end -} -local shfmt = { - function() return { exe = "shfmt", args = { "-i 4" }, stdin = true } end -} - -local formatters = { - bash = shfmt, - cpp = { - function() - return { - exe = "clang-format", - args = {}, - stdin = true, - cwd = vim.fn.expand('%:p:h') -- Run clang-format in cwd of the file. - } - end - }, - go = { function() return { exe = "goimports", stdin = true } end }, - html = prettierfmt, - javascript = prettierfmt, - json = prettierfmt, - lua = { - function() - return { exe = "lua-format", args = { "--indent-width", 4 }, stdin = true } - end - }, - python = { function() return { exe = "black", args = { "-" }, stdin = true } end }, - rust = { - function() - return { exe = "rustfmt", args = { "--emit=stdout" }, stdin = true } - end - }, - sh = shfmt, - typescript = prettierfmt, - zsh = shfmt -} - -require('formatter').setup({ logging = false, filetype = formatters }) - --- Format on save: --- DISABLED FOR NOW, due to messing with git contributions if they --- do not use a formatter. Instead, formatting with key mapping used. --- gather filetypes to autocorrect for each activated formatter above --- for k, _ in pairs(formatters) do --- vim.api.nvim_create_autocmd({"Filetype " .. k}, { --- command = "autocmd BufWritePost FormatWrite", --- desc = "Automatically format on write", --- group = vim.api.nvim_create_augroup('formatonsave', {clear = true}) --- }) --- end diff --git a/nvim/.config/nvim/lua/plug/_lsp.lua b/nvim/.config/nvim/lua/plug/_lsp.lua index b56c75f..f86153f 100644 --- a/nvim/.config/nvim/lua/plug/_lsp.lua +++ b/nvim/.config/nvim/lua/plug/_lsp.lua @@ -1,234 +1,329 @@ local lsp = require("lsp-zero") -vim.diagnostic.config { virtual_text = true } +vim.diagnostic.config({ virtual_text = true }) vim.fn.sign_define("DiagnosticSignError", { text = "✘", texthl = "DiagnosticSignError" }) vim.fn.sign_define("DiagnosticSignWarn", { text = "", texthl = "DiagnosticSignWarn" }) vim.fn.sign_define("DiagnosticSignInfo", { text = "", texthl = "DiagnosticSignInfo" }) vim.fn.sign_define("DiagnosticSignHint", { text = "", texthl = "DiagnosticSignHint" }) lsp.ensure_installed({ - 'arduino_language_server', - 'bashls', - 'beancount', - 'clangd', - 'dockerls', - 'docker_compose_language_service', - 'lua_ls', - 'pyright', - 'ruff_lsp', - 'taplo', - 'yamlls', + "astro", + "arduino_language_server", + "bashls", + "beancount", + "clangd", + "dockerls", + "docker_compose_language_service", + "lua_ls", + "pyright", + "ruff_lsp", + "taplo", + "yamlls", + "tsserver", + "cssls", + "tailwindcss", }) lsp.preset({ name = "recommended", set_lsp_keymaps = false }) lsp.on_attach(function(client, bufnr) - require("lsp-format").on_attach(client, bufnr) + local map = vim.keymap.set + map("n", "[d", "lua vim.diagnostic.goto_prev()", { buffer = bufnr, desc = "Previous diagnostic" }) + map("n", "]d", "lua vim.diagnostic.goto_next()", { buffer = bufnr, desc = "Next diagnostic" }) + map( + "n", + "[e", + "lua vim.diagnostic.goto_prev({severity = vim.diagnostic.severity.ERROR})", + { buffer = bufnr, desc = "Previous error" } + ) + map( + "n", + "]e", + "lua vim.diagnostic.goto_next({severity = vim.diagnostic.severity.ERROR})", + { buffer = bufnr, desc = "Next error" } + ) - local map = vim.keymap.set - map('n', '[d', 'lua vim.diagnostic.goto_prev()', - { buffer = bufnr, desc = 'Previous diagnostic' }) - map('n', ']d', 'lua vim.diagnostic.goto_next()', - { buffer = bufnr, desc = 'Next diagnostic' }) - map('n', '[e', - 'lua vim.diagnostic.goto_prev({severity = vim.diagnostic.severity.ERROR})', - { buffer = bufnr, desc = 'Previous error' }) - map('n', ']e', - 'lua vim.diagnostic.goto_next({severity = vim.diagnostic.severity.ERROR})', - { buffer = bufnr, desc = 'Next error' }) + local prefix = require("which-key").register + prefix({ ["l"] = { name = "+lsp" } }) + map("n", "li", "LspInfo", { buffer = bufnr, desc = "Lsp Info" }) + map( + "n", + "ld", + "lua vim.diagnostic.open_float()", + { buffer = bufnr, desc = "Line diagnostics" } + ) + map("n", "la", "lua vim.lsp.buf.code_action()", { buffer = bufnr, desc = "Codeactions" }) + map("n", "ln", "lua vim.lsp.buf.rename()", { buffer = bufnr, desc = "Rename element" }) + if vim.fn.exists(":Telescope") then + map("n", "lr", "Telescope lsp_references()", { buffer = bufnr, desc = "References" }) + map("n", "lf", "Telescope lsp_definitions", { buffer = bufnr, desc = "Definition" }) + map( + "n", + "lt", + "Telescope lsp_type_definitions", + { buffer = bufnr, desc = "Type definition" } + ) + map( + "n", + "lm", + "Telescope lsp_implementations", + { buffer = bufnr, desc = "Implementation" } + ) + else + map("n", "lr", "lua vim.lsp.buf.references()", { buffer = bufnr, desc = "References" }) + map("n", "lf", "lua vim.lsp.buf.definition()", { buffer = bufnr, desc = "Definition" }) + map( + "n", + "lt", + "lua vim.lsp.buf.type_definition()", + { buffer = bufnr, desc = "Type definition" } + ) + map( + "n", + "lm", + "lua vim.lsp.buf.implementation()", + { buffer = bufnr, desc = "Implementation" } + ) + end + if client.server_capabilities.document_formatting then + map( + "n", + "lf", + "lua vim.lsp.buf.formatting()", + { buffer = bufnr, desc = "Format document" } + ) + end - local prefix = require('which-key').register - prefix({ ['l'] = { name = "+lsp" } }) - map('n', 'li', 'LspInfo', - { buffer = bufnr, desc = 'Lsp Info' }) - map('n', 'ld', 'lua vim.diagnostic.open_float()', - { buffer = bufnr, desc = 'Line diagnostics' }) - map('n', 'la', 'lua vim.lsp.buf.code_action()', - { buffer = bufnr, desc = 'Codeactions' }) - map('n', 'ln', 'lua vim.lsp.buf.rename()', - { buffer = bufnr, desc = 'Rename element' }) - if vim.fn.exists(':Telescope') then - map('n', 'lr', 'Telescope lsp_references()', - { buffer = bufnr, desc = 'References' }) - map('n', 'lf', 'Telescope lsp_definitions', - { buffer = bufnr, desc = 'Definition' }) - map('n', 'lt', 'Telescope lsp_type_definitions', - { buffer = bufnr, desc = 'Type definition' }) - map('n', 'lm', 'Telescope lsp_implementations', - { buffer = bufnr, desc = 'Implementation' }) - else - map('n', 'lr', 'lua vim.lsp.buf.references()', - { buffer = bufnr, desc = 'References' }) - map('n', 'lf', 'lua vim.lsp.buf.definition()', - { buffer = bufnr, desc = 'Definition' }) - map('n', 'lt', 'lua vim.lsp.buf.type_definition()', - { buffer = bufnr, desc = 'Type definition' }) - map('n', 'lm', 'lua vim.lsp.buf.implementation()', - { buffer = bufnr, desc = 'Implementation' }) - end - if client.server_capabilities.document_formatting then - map('n', 'lf', "lua vim.lsp.buf.formatting()", - { buffer = bufnr, desc = 'Format document' }) - end - - map('n', 'K', 'lua vim.lsp.buf.hover()', - { buffer = bufnr, desc = 'Hover definition' }) - map('n', 'lc', 'lua vim.lsp.buf.declaration()', - { buffer = bufnr, desc = 'Declaration' }) - map('n', 'ls', 'lua vim.lsp.buf.signature_help()', - { buffer = bufnr, desc = 'Signature help' }) + map("n", "K", "lua vim.lsp.buf.hover()", { buffer = bufnr, desc = "Hover definition" }) + map("n", "lc", "lua vim.lsp.buf.declaration()", { buffer = bufnr, desc = "Declaration" }) + map( + "n", + "ls", + "lua vim.lsp.buf.signature_help()", + { buffer = bufnr, desc = "Signature help" } + ) end) lsp.nvim_workspace() -- ensure python virtualenv is determined automatically on lsp start -lsp.configure("pyright", { - on_attach = function(client, _) - local python_path, msg = require('util.pyenv').get_path(client.config - .root_dir) - vim.notify(string.format('%s\n%s', msg, python_path)) - client.config.settings.python.pythonPath = python_path - end +require("lspconfig").pyright.setup({ + on_attach = function(client, _) + local python_path, msg = require("util.pyenv").get_path(client.config.root_dir) + vim.notify(string.format("%s\n%s", msg, python_path)) + client.config.settings.python.pythonPath = python_path + end, }) -- set up arduino with the help of arduino.nvim plugin -require('lspconfig').arduino_language_server.setup({ - on_new_config = require('arduino').on_new_config +require("lspconfig").arduino_language_server.setup({ + on_new_config = require("arduino").on_new_config, +}) +require("lspconfig").lua_ls.setup(lsp.nvim_lua_ls()) + +-- map filetypes (rhs) to individual servers (lhs) +-- most will presumably use null_ls however +local format_servers = { + ["null-ls"] = { + "astro", + "javascript", + "javascriptreact", + "typescript", + "typescriptreact", + "vue", + "css", + "scss", + "less", + "html", + "json", + "jsonc", + "yaml", + "markdown", + "markdown.mdx", + "graphql", + "handlebars", + "python", + "sh", + "zsh", + "bash", + "lua", + "luau", + }, +} +lsp.format_on_save({ + format_opts = { + async = true, + }, + servers = format_servers, +}) +lsp.format_mapping("gq", { + format_opts = { + async = false, + }, + servers = format_servers, }) -require('lspconfig').lua_ls.setup(lsp.nvim_lua_ls()) lsp.setup() +local null_ls = require("null-ls") +null_ls.setup({}) +require("mason-null-ls").setup({ + ensure_installed = { "black", "prettier", "shfmt", "eslint-lsp", "stylua", "jq" }, + automatic_installation = false, + handlers = { + shfmt = function(_, _) + null_ls.register(null_ls.builtins.formatting.shfmt.with({ + extra_filetypes = { "bash", "zsh" }, + })) + end, + prettier = function(_, _) + null_ls.register(null_ls.builtins.formatting.prettier.with({ + extra_filetypes = { "astro" }, + })) + end, + eslint = function(_, _) + null_ls.register(null_ls.builtins.diagnostics.eslint.with({ + extra_filetypes = { "astro" }, + })) + null_ls.register(null_ls.builtins.code_actions.eslint.with({ + extra_filetypes = { "astro" }, + })) + end, + }, +}) local luasnip = require("luasnip") local has_words_before = function() - local line, col = unpack(vim.api.nvim_win_get_cursor(0)) - return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match("%s") == nil + local line, col = unpack(vim.api.nvim_win_get_cursor(0)) + return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match("%s") == nil end local kind_icons = { - Text = "", - Method = "", - Function = "", - Constructor = "", - Field = "", - Variable = "", - Class = "ﴯ", - Interface = "", - Module = "", - Property = "ﰠ", - Unit = "", - Value = "", - Enum = "", - Keyword = "", - Snippet = "", - Color = "", - File = "", - Reference = "", - Folder = "", - EnumMember = "", - Constant = "", - Struct = "", - Event = "", - Operator = "", - TypeParameter = "" + Text = "", + Method = "", + Function = "", + Constructor = "", + Field = "", + Variable = "", + Class = "ﴯ", + Interface = "", + Module = "", + Property = "ﰠ", + Unit = "", + Value = "", + Enum = "", + Keyword = "", + Snippet = "", + Color = "", + File = "", + Reference = "", + Folder = "", + EnumMember = "", + Constant = "", + Struct = "", + Event = "", + Operator = "", + TypeParameter = "", } -local cmp = require 'cmp' +local cmp = require("cmp") cmp.setup({ - window = { - documentation = cmp.config.window.bordered() - }, - snippet = { - expand = function(args) - require('luasnip').lsp_expand(args.body) - end - }, - sources = { - { name = 'nvim_lsp' }, - { name = 'otter' }, - { name = 'luasnip', keyword_length = 2 }, - { name = 'pandoc_references' }, - { name = 'nvim_lua' }, - { - name = 'beancount', - option = { - account = vim.env["HOME"] .. '/documents/records/budget/main.beancount' -- TODO implement dynamically - } - }, - { name = 'calc' }, - { name = 'path' }, - { name = 'buffer', keyword_length = 3 }, - { name = 'digraphs' }, - { name = 'latex_symbols' }, - { name = 'spell', keyword_length = 3 }, - { name = 'tmux' }, - --{ name = 'rg', keyword_length = 5 }, - { name = 'vCard' }, - }, - mapping = cmp.mapping.preset.insert({ - [''] = cmp.mapping.scroll_docs(-4), - [''] = cmp.mapping.scroll_docs(4), - [""] = cmp.mapping({ - i = function(fallback) - if cmp.visible() and cmp.get_active_entry() then - cmp.confirm({ behavior = cmp.ConfirmBehavior.Replace, select = false }) - else - fallback() - end - end, - s = cmp.mapping.confirm({ select = true }), - c = cmp.mapping.confirm({ behavior = cmp.ConfirmBehavior.Replace, select = false }), -- disable selection in cmd mode - }), - [""] = cmp.mapping(function(fallback) - if cmp.visible() then - cmp.select_next_item() - -- You could replace the expand_or_jumpable() calls with expand_or_locally_jumpable() - -- they way you will only jump inside the snippet region - elseif luasnip.expand_or_jumpable() then - luasnip.expand_or_jump() - elseif has_words_before() then - cmp.complete() - else - fallback() - end - end, { "i", "s" }), - [""] = cmp.mapping(function(fallback) - if cmp.visible() then - cmp.select_prev_item() - elseif luasnip.jumpable(-1) then - luasnip.jump(-1) - else - fallback() - end - end, { "i", "s" }), - }), - formatting = { - fields = { "kind", "abbr", "menu" }, - format = function(entry, vim_item) - -- Kind icons, removing kind text leaving only icon - -- vim_item.kind = string.format('%s %s', kind_icons[vim_item.kind], vim_item.kind) - vim_item.kind = string.format('%s', kind_icons[vim_item.kind]) - -- Source - vim_item.menu = ({ - buffer = "[Buf]", - calc = "[Cal]", - digraphs = "[Dig]", - latex_symbols = "[LaTeX]", - luasnip = "[Snip]", - nvim_lsp = "[Lsp]", - nvim_lua = "[Lua]", - pandoc_references = "[Bib]", - spell = "[Spl]", - vCard = "[vCrd]", - })[entry.source.name] - return vim_item - end - }, + window = { documentation = cmp.config.window.bordered() }, + snippet = { + expand = function(args) + require("luasnip").lsp_expand(args.body) + end, + }, + sources = { + { name = "nvim_lsp" }, + { name = "otter" }, + { name = "luasnip", keyword_length = 2 }, + { name = "pandoc_references" }, + { name = "nvim_lua" }, + { + name = "beancount", + option = { + account = vim.env["HOME"] .. "/documents/records/budget/main.beancount", -- TODO implement dynamically + }, + }, + { name = "calc" }, + { name = "path" }, + { name = "buffer", keyword_length = 3 }, + { name = "digraphs" }, + { name = "latex_symbols" }, + { name = "spell", keyword_length = 3 }, + { name = "tmux" }, -- { name = 'rg', keyword_length = 5 }, + { name = "vCard" }, + }, + mapping = cmp.mapping.preset.insert({ + [""] = cmp.mapping.scroll_docs(-4), + [""] = cmp.mapping.scroll_docs(4), + [""] = cmp.mapping({ + i = function(fallback) + if cmp.visible() and cmp.get_active_entry() then + cmp.confirm({ + behavior = cmp.ConfirmBehavior.Replace, + select = false, + }) + else + fallback() + end + end, + s = cmp.mapping.confirm({ select = true }), + c = cmp.mapping.confirm({ + behavior = cmp.ConfirmBehavior.Replace, + select = false, + }), -- disable selection in cmd mode + }), + [""] = cmp.mapping(function(fallback) + if cmp.visible() then + cmp.select_next_item() + -- You could replace the expand_or_jumpable() calls with expand_or_locally_jumpable() + -- they way you will only jump inside the snippet region + elseif luasnip.expand_or_jumpable() then + luasnip.expand_or_jump() + elseif has_words_before() then + cmp.complete() + else + fallback() + end + end, { "i", "s" }), + [""] = cmp.mapping(function(fallback) + if cmp.visible() then + cmp.select_prev_item() + elseif luasnip.jumpable(-1) then + luasnip.jump(-1) + else + fallback() + end + end, { "i", "s" }), + }), + formatting = { + fields = { "kind", "abbr", "menu" }, + format = function(entry, vim_item) + -- Kind icons, removing kind text leaving only icon + -- vim_item.kind = string.format('%s %s', kind_icons[vim_item.kind], vim_item.kind) + vim_item.kind = string.format("%s", kind_icons[vim_item.kind]) + -- Source + vim_item.menu = ({ + buffer = "[Buf]", + calc = "[Cal]", + digraphs = "[Dig]", + latex_symbols = "[LaTeX]", + luasnip = "[Snip]", + nvim_lsp = "[Lsp]", + nvim_lua = "[Lua]", + pandoc_references = "[Bib]", + spell = "[Spl]", + vCard = "[vCrd]", + })[entry.source.name] + return vim_item + end, + }, }) -- `/` cmdline setup. -cmp.setup.cmdline('/', { - mapping = cmp.mapping.preset.cmdline(), - sources = { { name = 'buffer' } } +cmp.setup.cmdline("/", { + mapping = cmp.mapping.preset.cmdline(), + sources = { { name = "buffer" } }, }) -- `:` cmdline setup. -cmp.setup.cmdline(':', { - mapping = cmp.mapping.preset.cmdline(), - sources = cmp.config.sources({ { name = 'path' } }, { - { name = 'cmdline', option = { ignore_cmds = { 'Man', '!' } } } - }) +cmp.setup.cmdline(":", { + mapping = cmp.mapping.preset.cmdline(), + sources = cmp.config.sources({ { name = "path" } }, { + { name = "cmdline", option = { ignore_cmds = { "Man", "!" } } }, + }), }) diff --git a/nvim/.config/nvim/lua/plugins.lua b/nvim/.config/nvim/lua/plugins.lua index a6f2598..4ac28a7 100644 --- a/nvim/.config/nvim/lua/plugins.lua +++ b/nvim/.config/nvim/lua/plugins.lua @@ -3,18 +3,18 @@ local writing_ft = { "quarto", "pandoc", "markdown", "text", "tex" } return { -- essential { 'numToStr/Navigator.nvim', branch = "master", config = true }, -- allow seamless navigation between vim buffers and tmux/wezterm splits - { 'jeffkreeftmeijer/vim-numbertoggle', event = "BufEnter" }, -- toggles numbers to absolute for all buffers but the current which is relative - { 'ojroques/vim-oscyank', event = "VeryLazy" }, -- yank from *anywhere* (even ssh session) to clipboard, using :OSCYank - { 'ggandor/lightspeed.nvim', event = "VeryLazy" }, -- jump between letters with improved fFtT quicksearch, mimics sneak + { 'jeffkreeftmeijer/vim-numbertoggle', event = "BufEnter" }, -- toggles numbers to absolute for all buffers but the current which is relative + { 'ojroques/vim-oscyank', event = "VeryLazy" }, -- yank from *anywhere* (even ssh session) to clipboard, using :OSCYank + { 'ggandor/lightspeed.nvim', event = "VeryLazy" }, -- jump between letters with improved fFtT quicksearch, mimics sneak { - 'lewis6991/gitsigns.nvim', -- show vcs changes on left-hand gutter + 'lewis6991/gitsigns.nvim', -- show vcs changes on left-hand gutter config = function() require('plug._gitsigns') end, event = "BufRead" }, { "m4xshen/smartcolumn.nvim", config = true }, -- auto-hiding colorcolumn -- files - { 'vifm/vifm.vim' }, -- integrate file manager + { 'vifm/vifm.vim' }, -- integrate file manager { - 'nvim-tree/nvim-tree.lua', -- integrate file tree + 'nvim-tree/nvim-tree.lua', -- integrate file tree config = true, dependencies = { 'nvim-tree/nvim-web-devicons', config = true }, cmd = "NvimTreeToggle" @@ -24,21 +24,17 @@ return { event = "BufWinEnter", dependencies = { 'rktjmp/fwatch.nvim' } }, { - 'NvChad/nvim-colorizer.lua', -- color hex, named colors in the correct preview scheme + 'NvChad/nvim-colorizer.lua', -- color hex, named colors in the correct preview scheme config = function() require('colorizer').setup({ user_default_options = { mode = 'virtualtext' } }) end, event = "VeryLazy" -}, { - 'mhartington/formatter.nvim', -- auto formatting on save - config = function() require('plug._format') end, - event = "VeryLazy" -}, -- editing +}, -- editing { 'kylechui/nvim-surround', version = '*', config = true, event = "VeryLazy" }, -- surround things with other things using ys/cs/ds { - 'monaqa/dial.nvim', -- extend the ^a / ^x possibilities to dates, hex, alphabets, markdown headers + 'monaqa/dial.nvim', -- extend the ^a / ^x possibilities to dates, hex, alphabets, markdown headers config = function() local augend = require("dial.augend") require("dial.config").augends:register_group { @@ -54,8 +50,8 @@ return { augend.constant.alias.Alpha, augend.constant.alias.alpha, augend.hexcolor.new { case = "lower" }, augend.constant.new { elements = { "and", "or" }, - word = true, -- if false, "sand" is incremented into "sor", "doctor" into "doctand", etc. - cyclic = true -- "or" is incremented into "and". + word = true, -- if false, "sand" is incremented into "sor", "doctor" into "doctand", etc. + cyclic = true -- "or" is incremented into "and". }, augend.constant .new { @@ -68,12 +64,12 @@ return { end, event = "VeryLazy" }, { - 'tommcdo/vim-exchange', -- adds exchange operator with cx. common use: cxiw . on 2 words to switch + 'tommcdo/vim-exchange', -- adds exchange operator with cx. common use: cxiw . on 2 words to switch event = "VeryLazy" }, { - 'junegunn/vim-easy-align', -- Align tables and other alignable things + 'junegunn/vim-easy-align', -- Align tables and other alignable things event = "VeryLazy" -}, { 'edKotinsky/Arduino.nvim', ft = 'arduino', config = true }, -- statusline +}, { 'edKotinsky/Arduino.nvim', ft = 'arduino', config = true }, -- statusline { 'nvim-lualine/lualine.nvim', requires = { 'nvim-tree/nvim-web-devicons', config = true }, @@ -126,22 +122,22 @@ return { desc = "Inspect object in kernel" } } -}, { 'micarmst/vim-spellsync', event = "VeryLazy" }, -- personal dict improvements for git sync +}, { 'micarmst/vim-spellsync', event = "VeryLazy" }, -- personal dict improvements for git sync { 'folke/zen-mode.nvim', config = true, event = "VeryLazy" }, -- provide distraction free writing - { 'folke/twilight.nvim', event = "VeryLazy" }, -- provide even distraction free-er writing (lowlight paragraphs) + { 'folke/twilight.nvim', event = "VeryLazy" }, -- provide even distraction free-er writing (lowlight paragraphs) { 'JellyApple102/easyread.nvim', config = true, ft = writing_ft, cmd = 'EasyreadToggle' - }, -- enable 'speed-reading' mode (bionic reading) - { 'marty-oehme/zettelkasten.nvim', ft = writing_ft, event = "VeryLazy" }, -- simple static markdown linking + }, -- enable 'speed-reading' mode (bionic reading) + { 'marty-oehme/zettelkasten.nvim', ft = writing_ft, event = "VeryLazy" }, -- simple static markdown linking { - "iamcco/markdown-preview.nvim", -- generate an auto-updating html preview for md files + "iamcco/markdown-preview.nvim", -- generate an auto-updating html preview for md files build = function() vim.fn["mkdp#util#install"]() end, ft = writing_ft - }, -- languages - { 'euclidianAce/BetterLua.vim', ft = 'lua' }, -- better syntax highlighting for lua + }, -- languages + { 'euclidianAce/BetterLua.vim', ft = 'lua' }, -- better syntax highlighting for lua { 'aliou/bats.vim', ft = { "bash", "sh", "zsh", "bats" } }, -- enable syntax for bats shell-code testing library -- REPL work @@ -157,7 +153,7 @@ return { version = '*', config = function() require('plug._mini') end }, { - "akinsho/nvim-toggleterm.lua", -- simpler, programmable and multiple terminal toggling for nvim + "akinsho/nvim-toggleterm.lua", -- simpler, programmable and multiple terminal toggling for nvim config = function() require('plug._toggleterm') end }, { @@ -176,7 +172,7 @@ return { source = { openai = { api_key = vim.env.OPENAI_API_KEY } } }) end -}, -- treesitter +}, -- treesitter { 'nvim-treesitter/nvim-treesitter', build = ':TSUpdate', @@ -190,10 +186,9 @@ return { { 'romgrk/nvim-treesitter-context', config = true }, 'JoosepAlviste/nvim-ts-context-commentstring' } - }, - { 'nvim-treesitter/playground', cmd = "TSPlaygroundToggle" }, -- interactively view and query the treesitter tree + }, { 'nvim-treesitter/playground', cmd = "TSPlaygroundToggle" }, -- interactively view and query the treesitter tree { - 'RRethy/nvim-treesitter-textsubjects', -- allows using . and ; to target treesitter branches + 'RRethy/nvim-treesitter-textsubjects', -- allows using . and ; to target treesitter branches config = function() require 'nvim-treesitter.configs'.setup { textsubjects = { @@ -210,7 +205,7 @@ return { -- lsp "VonHeikemen/lsp-zero.nvim", dependencies = { - { "neovim/nvim-lspconfig", branch = "master" }, + { "neovim/nvim-lspconfig", branch = "master" }, "williamboman/mason.nvim", "williamboman/mason-lspconfig.nvim", { "hrsh7th/nvim-cmp", branch = "main", @@ -226,13 +221,20 @@ return { "saadparwaiz1/cmp_luasnip" } }, "L3MON4D3/LuaSnip", "rafamadriz/friendly-snippets", - { "lukas-reineke/lsp-format.nvim", config = true }, - { "j-hui/fidget.nvim", config = true } -- loading animations for some LSP + -- { "lukas-reineke/lsp-format.nvim", config = true }, + { "j-hui/fidget.nvim", config = true }, -- loading animations for some LSP + { + "jay-babu/mason-null-ls.nvim", + event = { "BufReadPre", "BufNewFile" }, + dependencies = { + "williamboman/mason.nvim", "jose-elias-alvarez/null-ls.nvim" + }, + } }, config = function() require('plug._lsp') end, branch = "v2.x" -}, { 'simrat39/symbols-outline.nvim', config = true, event = "VeryLazy" }, -- vista-like outline view for code - { 'ray-x/lsp_signature.nvim', config = true }, -- UI improvements +}, { 'simrat39/symbols-outline.nvim', config = true, event = "VeryLazy" }, -- vista-like outline view for code + { 'ray-x/lsp_signature.nvim', config = true }, -- UI improvements { 'stevearc/dressing.nvim', config = true }, { 'rcarriga/nvim-notify', config = function() vim.notify = require("notify") end From 6fdf1cc2e450d078768fd98049eda9681138f780 Mon Sep 17 00:00:00 2001 From: Marty Oehme Date: Thu, 15 Jun 2023 09:47:56 +0200 Subject: [PATCH 14/14] writing: Update jrnl version --- writing/.config/jrnl/jrnl.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/writing/.config/jrnl/jrnl.yaml b/writing/.config/jrnl/jrnl.yaml index 55bf761..36762e6 100644 --- a/writing/.config/jrnl/jrnl.yaml +++ b/writing/.config/jrnl/jrnl.yaml @@ -16,4 +16,4 @@ linewrap: 79 tagsymbols: '#@' template: false timeformat: '%F %r' -version: v3.3 +version: v4.0