From 84a0b26d874c6669ca73269d478f23e13e105195 Mon Sep 17 00:00:00 2001 From: Danielle McLean Date: Sat, 4 Nov 2023 15:17:24 +1100 Subject: [PATCH 01/12] Drop vim-eunuch since I don't use it --- dot-config/vim/plugins.vim | 1 - 1 file changed, 1 deletion(-) diff --git a/dot-config/vim/plugins.vim b/dot-config/vim/plugins.vim index e217e04..e5d04b6 100644 --- a/dot-config/vim/plugins.vim +++ b/dot-config/vim/plugins.vim @@ -63,7 +63,6 @@ minpac#add('lifepillar/vim-mucomplete') minpac#add('tpope/vim-apathy') minpac#add('tpope/vim-commentary') minpac#add('tpope/vim-endwise') -minpac#add('tpope/vim-eunuch') minpac#add('tpope/vim-repeat') minpac#add('tpope/vim-sleuth') minpac#add('tpope/vim-surround') From 72ec9f0ed4fc7ecf8b285b0610a0c5a453bc715b Mon Sep 17 00:00:00 2001 From: Danielle McLean Date: Sat, 4 Nov 2023 15:21:25 +1100 Subject: [PATCH 02/12] Organise + explain tpope's plugins, since they often have odd names --- dot-config/vim/plugins.vim | 35 ++++++++++++++++++++++++++++------- 1 file changed, 28 insertions(+), 7 deletions(-) diff --git a/dot-config/vim/plugins.vim b/dot-config/vim/plugins.vim index e5d04b6..edbff7c 100644 --- a/dot-config/vim/plugins.vim +++ b/dot-config/vim/plugins.vim @@ -36,6 +36,34 @@ minpac#add('tpope/vim-fugitive') minpac#add('tpope/vim-rhubarb') minpac#add('mhinz/vim-signify') +# Tpope makes a *lot* of Vim plugins. Here're the others I use! + +# Mapping stuff: +# Repeat a supporting plugin's custom mapping with Vim's . command. This +# functionality is invoked by many other plugins to get repeat support. +minpac#add('tpope/vim-repeat') +# Comment/uncomment operator, mapped to gc. +minpac#add('tpope/vim-commentary') +# Adjust "surroundings", like quotes and brackets. +minpac#add('tpope/vim-surround') +# Paired mappings (encode/decode, next/prev, etc.) +minpac#add('tpope/vim-unimpaired') + +# Filetype support stuff: +# Set Vim's 'path' for various filetypes, so commands like gf work. +minpac#add('tpope/vim-apathy') +# Automatically insert end keywords for various filetypes. +minpac#add('tpope/vim-endwise') + +# Configure indentation and related file-local settings automatically. Sleuth +# supports Editorconfig files and uses them when it can, just like the +# editorconfig-vim plugin does. However, there are some Editorconfig +# properties which editorconfig-vim supports and Sleuth doesn't, and Sleuth +# can still infer indentation settings when you don't have an .editorconfig +# file, so running both plugins side-by-side is useful. +minpac#add('tpope/vim-sleuth') + + minpac#add('lifepillar/vim-gruvbox8') # Project handling. Direnv is a tool for setting project-local environment @@ -60,13 +88,6 @@ minpac#add('lotabout/skim.vim') minpac#add('godlygeek/tabular') minpac#add('jamessan/vim-gnupg') minpac#add('lifepillar/vim-mucomplete') -minpac#add('tpope/vim-apathy') -minpac#add('tpope/vim-commentary') -minpac#add('tpope/vim-endwise') -minpac#add('tpope/vim-repeat') -minpac#add('tpope/vim-sleuth') -minpac#add('tpope/vim-surround') -minpac#add('tpope/vim-unimpaired') minpac#add('wincent/loupe') minpac#add('wincent/terminus') From 602a834c9b84baa0b9c4476db34ec345d7b7bc30 Mon Sep 17 00:00:00 2001 From: Danielle McLean Date: Sat, 4 Nov 2023 15:22:08 +1100 Subject: [PATCH 03/12] Group + explain lifepillar's plugins --- dot-config/vim/plugins.vim | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/dot-config/vim/plugins.vim b/dot-config/vim/plugins.vim index edbff7c..87f2800 100644 --- a/dot-config/vim/plugins.vim +++ b/dot-config/vim/plugins.vim @@ -64,8 +64,17 @@ minpac#add('tpope/vim-endwise') minpac#add('tpope/vim-sleuth') +# My preferred colorscheme! gruvbox8 is a variant of the popular Gruvbox theme +# with better support for Vim 8+ features like :terminal, along with various +# other niceties. It also gracefully degrades from true colour all the way +# down to *two* colours if necessary, which is kind of impressive. minpac#add('lifepillar/vim-gruvbox8') +# Sensible tab completion support. MUcomplete is ridiculously simple and +# basically just translates to Vim's standard completion bindings, and +# it's *great* for my purposes. +minpac#add('lifepillar/vim-mucomplete') + # Project handling. Direnv is a tool for setting project-local environment # variables as you cd around, and Editorconfig is a generic format telling # text editors what your preferred indent size and stuff are for the given @@ -87,7 +96,6 @@ minpac#add('lotabout/skim.vim') minpac#add('godlygeek/tabular') minpac#add('jamessan/vim-gnupg') -minpac#add('lifepillar/vim-mucomplete') minpac#add('wincent/loupe') minpac#add('wincent/terminus') From 20fb504ce868a4d61c8b17cae4410852be023c51 Mon Sep 17 00:00:00 2001 From: Danielle McLean Date: Sat, 4 Nov 2023 15:54:52 +1100 Subject: [PATCH 04/12] Explain what wincent's plugins do --- dot-config/vim/plugins.vim | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/dot-config/vim/plugins.vim b/dot-config/vim/plugins.vim index 87f2800..0d07bcb 100644 --- a/dot-config/vim/plugins.vim +++ b/dot-config/vim/plugins.vim @@ -97,7 +97,21 @@ minpac#add('lotabout/skim.vim') minpac#add('godlygeek/tabular') minpac#add('jamessan/vim-gnupg') +# Improved in-file search behaviour: highlight the current match separately, +# default to very magic /\v regular expressions, and configure Vim's standard +# search-related settings to be a bit more intuitive. minpac#add('wincent/loupe') +# Enhance Vim's behaviour when running in a terminal, which is the main way I +# use it. Terminus does the following: +# - sets the cursor shape according to current mode, +# - turns on full mouse support in all modes, +# - enables Vim's standard FocusGained and FocusLost events, by requesting +# focus reporting from the terminal, and +# - binds those events to calling :checktime, so that Vim will +# automatically reload unmodified files if they're changed externally (say, +# by a Git checkout). +# Terminus also used to be required for bracketed paste to work properly, but +# I think Vim supports that by default now. minpac#add('wincent/terminus') minpac#add('w0rp/ale') From 180e968f4b7db5bea3c60b5f7a4ae80310dddacc Mon Sep 17 00:00:00 2001 From: Danielle McLean Date: Sat, 4 Nov 2023 15:56:09 +1100 Subject: [PATCH 05/12] Drop Tabular, since I haven't needed to align stuff in ages --- dot-config/vim/plugins.vim | 1 - 1 file changed, 1 deletion(-) diff --git a/dot-config/vim/plugins.vim b/dot-config/vim/plugins.vim index 0d07bcb..43a11de 100644 --- a/dot-config/vim/plugins.vim +++ b/dot-config/vim/plugins.vim @@ -94,7 +94,6 @@ endif minpac#add('lotabout/skim') minpac#add('lotabout/skim.vim') -minpac#add('godlygeek/tabular') minpac#add('jamessan/vim-gnupg') # Improved in-file search behaviour: highlight the current match separately, From e3ca643e93f044dea4c0919ebfdf27e36f9ed948 Mon Sep 17 00:00:00 2001 From: Danielle McLean Date: Sat, 4 Nov 2023 15:56:33 +1100 Subject: [PATCH 06/12] Explain how I use vim-gnupg --- dot-config/vim/plugins.vim | 3 +++ 1 file changed, 3 insertions(+) diff --git a/dot-config/vim/plugins.vim b/dot-config/vim/plugins.vim index 43a11de..e4b598d 100644 --- a/dot-config/vim/plugins.vim +++ b/dot-config/vim/plugins.vim @@ -94,6 +94,9 @@ endif minpac#add('lotabout/skim') minpac#add('lotabout/skim.vim') +# Transparently view and edit GPG-encrypted files in Vim. I find this most +# useful when working with my password-store, but obviously it's helpful +# anywhere you're using GnuPG. minpac#add('jamessan/vim-gnupg') # Improved in-file search behaviour: highlight the current match separately, From 2624cdf3c9c28b38f79c3bad49274c07ec195a2a Mon Sep 17 00:00:00 2001 From: Danielle McLean Date: Sat, 4 Nov 2023 16:10:16 +1100 Subject: [PATCH 07/12] Group + explain LSP-related plugins --- dot-config/vim/plugins.vim | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/dot-config/vim/plugins.vim b/dot-config/vim/plugins.vim index e4b598d..0277945 100644 --- a/dot-config/vim/plugins.vim +++ b/dot-config/vim/plugins.vim @@ -115,9 +115,21 @@ minpac#add('wincent/loupe') # Terminus also used to be required for bracketed paste to work properly, but # I think Vim supports that by default now. minpac#add('wincent/terminus') -minpac#add('w0rp/ale') +# Asynchronous Linter Engine: supports a huge range of linters for various +# filetypes, runs them in the background, and reports issues to you in the +# left margin. Many language plugins bundle their own ale_linters, making it a +# cool choice for maximum linter support. +minpac#add('dense-analysis/ale') +# A client for the Language Server Protocol. ALE provides an LSP client as +# well, but I prefer the way yegappan/lsp is configured and the two plugins +# play quite nicely together. My servers are configured in the ./lsp.vim +# module. minpac#add('yegappan/lsp') +# The catalog of JSON Schema definitions available at https://SchemaStore.org. +# I use this to configure the JSON language server with schema validation and +# completion support, since unlike the YAML server I can't just tell it to +# please use SchemaStore.org for some reason. minpac#add('00dani/SchemaStore.vim') minpac#add('rbong/vim-crystalline') From 80d6a1840d2f84829112ae3df94d0708015a12fd Mon Sep 17 00:00:00 2001 From: Danielle McLean Date: Sat, 4 Nov 2023 16:10:45 +1100 Subject: [PATCH 08/12] Explain statusline plugins --- dot-config/vim/plugins.vim | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/dot-config/vim/plugins.vim b/dot-config/vim/plugins.vim index 0277945..d7d269c 100644 --- a/dot-config/vim/plugins.vim +++ b/dot-config/vim/plugins.vim @@ -132,10 +132,14 @@ minpac#add('yegappan/lsp') # please use SchemaStore.org for some reason. minpac#add('00dani/SchemaStore.vim') +# vim-crystalline is a utility library to aid in writing your own Vim +# statusline and tabline functions. I've used it extensively in my +# ./statusline.vim module. The plugins below it provide stuff I like to have +# displayed in the statusline. minpac#add('rbong/vim-crystalline') -minpac#add('lambdalisue/battery.vim') -minpac#add('lambdalisue/glyph-palette.vim') -minpac#add('lambdalisue/nerdfont.vim') +minpac#add('lambdalisue/battery.vim') # System's current battery level +minpac#add('lambdalisue/glyph-palette.vim') # Appropriate colours for filetypes +minpac#add('lambdalisue/nerdfont.vim') # Icons for filetypes minpac#add('lambdalisue/fern.vim') minpac#add('lambdalisue/fern-hijack.vim') From 1eb081f86cab3b2dfaf5859f70428ee552027540 Mon Sep 17 00:00:00 2001 From: Danielle McLean Date: Sat, 4 Nov 2023 16:11:08 +1100 Subject: [PATCH 09/12] Explain Fern and its hijack plugin --- dot-config/vim/plugins.vim | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/dot-config/vim/plugins.vim b/dot-config/vim/plugins.vim index d7d269c..bd8b929 100644 --- a/dot-config/vim/plugins.vim +++ b/dot-config/vim/plugins.vim @@ -141,8 +141,11 @@ minpac#add('lambdalisue/battery.vim') # System's current battery level minpac#add('lambdalisue/glyph-palette.vim') # Appropriate colours for filetypes minpac#add('lambdalisue/nerdfont.vim') # Icons for filetypes +# fern.vim is a lightweight and asychronous tree viewer that serves as a +# delightful little file browser. It's kinda like the popular NERDtree plugin, +# but much simpler. minpac#add('lambdalisue/fern.vim') -minpac#add('lambdalisue/fern-hijack.vim') +minpac#add('lambdalisue/fern-hijack.vim') # Replace Netrw with Fern! minpac#add('lambdalisue/fern-renderer-nerdfont.vim') minpac#add('lambdalisue/fern-git-status.vim') minpac#add('lambdalisue/fern-ssh') From 65cc65b4366191e75d0d509db074717ca639c54a Mon Sep 17 00:00:00 2001 From: Danielle McLean Date: Sat, 4 Nov 2023 16:11:35 +1100 Subject: [PATCH 10/12] Explain miscellaneous language support plugins --- dot-config/vim/plugins.vim | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/dot-config/vim/plugins.vim b/dot-config/vim/plugins.vim index bd8b929..f827c8a 100644 --- a/dot-config/vim/plugins.vim +++ b/dot-config/vim/plugins.vim @@ -150,13 +150,25 @@ minpac#add('lambdalisue/fern-renderer-nerdfont.vim') minpac#add('lambdalisue/fern-git-status.vim') minpac#add('lambdalisue/fern-ssh') +# Automatically close XML tags when you type the opening tag. Kinda like +# vim-endwise for XML. Very nice to have when working on HTML documents. minpac#add('alvan/vim-closetag') +# Syntax highlighting for scripts written in jq's filter language. minpac#add('vito-c/jq.vim') + +# Syntax highlighting for justfiles, which are very similar to Makefiles, but +# different enough that using a separate filetype does make sense. minpac#add('NoahTheDuke/vim-just') +# Syntax highlighting for kitty.conf, which is really helpful because +# kovidgoyal/kitty is my daily driver terminal emulator. Yay! minpac#add('fladson/vim-kitty') +# Syntax highlighting for .neon files, like phpstan.neon. Nette is actually a +# full-blown PHP web framework and this plugin provides other Nette tooling +# too, but I don't use Nette so it's really just providing syntax for the +# PHPStan config file in my case. minpac#add('fpob/nette.vim') if executable('task') From ca579f3cc16ea82d56b009dce0937e6803e2b34b Mon Sep 17 00:00:00 2001 From: Danielle McLean Date: Sat, 4 Nov 2023 16:12:18 +1100 Subject: [PATCH 11/12] Explain YAML folds plugin --- dot-config/vim/plugins.vim | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/dot-config/vim/plugins.vim b/dot-config/vim/plugins.vim index f827c8a..1996787 100644 --- a/dot-config/vim/plugins.vim +++ b/dot-config/vim/plugins.vim @@ -171,12 +171,14 @@ minpac#add('fladson/vim-kitty') # PHPStan config file in my case. minpac#add('fpob/nette.vim') +# Really good semantic folding for YAML and YAML-like files. If you're +# curious: https://pedrohdz.com/posts/programming/yaml_vim_folds/ +minpac#add('pedrohdz/vim-yaml-folds') + if executable('task') minpac#add('blindFS/vim-taskwarrior') endif -minpac#add('pedrohdz/vim-yaml-folds') - if has('macunix') minpac#add('rizzatti/dash.vim') minpac#add('itspriddle/vim-marked') From 152dac0e42bfe35f6573daf38c4ace9ce5741be4 Mon Sep 17 00:00:00 2001 From: Danielle McLean Date: Sat, 4 Nov 2023 16:12:35 +1100 Subject: [PATCH 12/12] Explain conditionally-installed plugins --- dot-config/vim/plugins.vim | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/dot-config/vim/plugins.vim b/dot-config/vim/plugins.vim index 1996787..88946f1 100644 --- a/dot-config/vim/plugins.vim +++ b/dot-config/vim/plugins.vim @@ -175,11 +175,21 @@ minpac#add('fpob/nette.vim') # curious: https://pedrohdz.com/posts/programming/yaml_vim_folds/ minpac#add('pedrohdz/vim-yaml-folds') +# An interactive mode for Taskwarrior, built as a Vim plugin. It's obviously +# only useful if Taskwarrior is installed. if executable('task') minpac#add('blindFS/vim-taskwarrior') endif +# Integrations with MacOS apps, which are useless if Vim's running on +# something other than MacOS. if has('macunix') + # Dash is a developer documentation viewer, and this plugin makes it easy to + # search up the relevant Dash docs from inside Vim. minpac#add('rizzatti/dash.vim') + + # Marked is a Markdown preview window. It's nice to run this alongside your + # Vim window when writing in Markdown, especially if you need to do weird + # things with the syntax. minpac#add('itspriddle/vim-marked') endif