A Glimer of Sunshine
The weather looks promising, so maybe a couple of rides during the week 🤞
At the end of March I planned to start testing AstroNvim v6 and :fontawesome-brands-neovim: Neovim 0.12 (for its up coming release). Looking at the migration guide though, it was so simple I started already. Now I am using AstroNvim v6 and Neovim nightly as the day to day setup.
I added the Markdown language pack to the Astronvim v6 config, which automatically installs treesitter parsers for markdown and the marksman language server. Marksman provides completion for heading when typing the # character, so correct in-page links are easy to create.
I finalised the Debian Linux Post Install scripts, separating each tool into its own script.
Neovimλ︎
AstroNvim is used as the base configuration for Neovim. AstroNvim turns Neovim in to a feature rich editor (IDE) whist still keeping the editor extremely fast and with near instant startup.
There is a pull request containing AstroNvim v6 changes along with a migration guide
Preparing to Testing AstroNvim v6λ︎
The dra tool was used to download and install the Neovim AppImage from the Neovim GitHub repository releases.
As its a pre-release, the binary was installed for the current user in their ~/.local/bin directory (which should already be on the execution path).
Shell script to install Nightly Neovim release for current user
#!/usr/bin/env bash
# Install the pre-release version of Neovim from GitHub, for the current user
echo "# ---------------------------------------"
echo "Neovim hyper-configurable editor - installed for all users in `/usr/local/bin`"
# remove the existing nvim binary as DRA fails to override the file
# sudo rm -f /usr/local/bin/nvim
# Install nvim.appimage nightly release tag and rename to nvim-nightly
dra download --tag nightly --select nvim-linux-x86_64.appimage --install --output ~/.local/bin/nvim-nightly neovim/neovim
echo "# ---------------------------------------"
echo ""
Clone a separate copy of practicalli nvim-astro5
Change into the nvim-astro6 directory and create a new git branch.
Example
❯ git branch nvim-astro6
❯ git branches
* main 3341c1d snippet: update to year 2026 in post header
nvim-astro6 3341c1d snippet: update to year 2026 in post header
remotes/origin/HEAD -> origin/main
remotes/origin/main 3341c1d snippet: update to year 2026 in post header
❯ git checkout nvim-astro6
Switched to branch 'nvim-astro6'
Create a shell alias to launch neovim nightly with the astronvim v6 branch. This simplifies the command needed (and means I dont have to remember it).
I added the shell alias to the practicalli/dotfiles shell-aliases file
Launch Neovim nightly with AstroNvim v6 config to test Practicalli customisations
Update Configλ︎
Edited lua/lazy_setup.lua and commented line 4 which defined a version key for AstroNvim/AstroNvim plugin
Comment the version key and value (it will be changed to version = ^6 once AstroNvim v6 is released).
Add a branch key with the value of v6.
Configure Astronvim plugin to use branch v6
Initiall the branch was not set correctly, causing errors
Testing AstroNvim v6 highlights errors that were caused because the branch was not set to v6.
AstroNvim v6 uses newer versions of its three core plugins. A new plugin config is created to ensure the new versions are installed.
Created astronvim plugin file with specific versions
EDIT: Updated the AstroCommunity plugin spec to use v6.
Add branch v6 to AstroCommunity plugin spec
Testing AstroNvim v6λ︎
The AstroNvim branch was not set correctly, causing the following errors
Testing AstroNvim v6 highlights errors that were caused because the branch was not set to v6.
AstroNvim v5 was installed due to the misconfiguration and had incompatibilities with the new implementation of Treesitter.
Ran astro6 and then SPC p a to let neovim automatically update plugins and supporting development tools.
Ran a second update, U, from the Lazy popup to ensure everything was up to date.
Error in User Autocommands
Error in User Autocommands for "LazyLoad":
Lua callback: .../nvim-astro6/lazy/astrocore/lua/astrocore/treesitter.lua:38: attempt to call field 'get_installed' (a nil value)
stack traceback:
.../nvim-astro6/lazy/astrocore/lua/astrocore/treesitter.lua:38: in function 'installed'
.../nvim-astro6/lazy/astrocore/lua/astrocore/treesitter.lua:128: in function 'load_op'
.../share/nvim-astro6/lazy/astrocore/lua/astrocore/init.lua:232: in function <.../share/nvim-astro6/lazy/astrocore/lua/astrocore/init.lua:230>
[C]: in function 'nvim_exec_autocmds'
...hare/nvim-astro6/lazy/lazy.nvim/lua/lazy/core/loader.lua:368: in function <...hare/nvim-astro6/lazy/lazy.nvim/lua/lazy/core/loader.lua:367>
My initial assumption is a package that doesnt like the new version of treesitter. Probably something from AstroCommunity.
Although I have a couple of other plugins from their GitHub repository.
Error in User Autocommands for "LazyLoad":
Error on Neovim startup - with many additional plugins
Lua callback: .../nvim-astro6/lazy/astrocore/lua/astrocore/treesitter.lua:38: attempt to call field 'get_installed' (a nil value)
stack traceback:
.../nvim-astro6/lazy/astrocore/lua/astrocore/treesitter.lua:38: in function 'installed'
.../nvim-astro6/lazy/astrocore/lua/astrocore/treesitter.lua:128: in function 'load_op'
.../share/nvim-astro6/lazy/astrocore/lua/astrocore/init.lua:232: in function <.../share/nvim-astro6/lazy/astrocore/lua/astrocore/init.lua:230>
[C]: in function 'nvim_exec_autocmds'
...hare/nvim-astro6/lazy/lazy.nvim/lua/lazy/core/loader.lua:368: in function <...hare/nvim-astro6/lazy/lazy.nvim/lua/lazy/core/loader.lua:367>
Asking in the Next channel on the AstroNvim discord community, the believed I should run :Lazy update
When using astro6 to open the Practicalli dotfiles project, opening the dev-.sh file caused the following error.
Failed to run `config` for mason-lspconfig.nvim
...roNvim/lua/astronvim/plugins/configs/mason-lspconfig.lua:4: module 'astrolsp.mason-lspconfig' not found:
no field package.preload['astrolsp.mason-lspconfig']
cache_loader: module 'astrolsp.mason-lspconfig' not found
cache_loader_lib: module 'astrolsp.mason-lspconfig' not found
no file './astrolsp/mason-lspconfig.lua'
no file '/home/runner/work/neovim/neovim/.deps/usr/share/luajit-2.1/astrolsp/mason-lspconfig.lua'
no file '/usr/local/share/lua/5.1/astrolsp/mason-lspconfig.lua'
no file '/usr/local/share/lua/5.1/astrolsp/mason-lspconfig/init.lua'
no file '/home/runner/work/neovim/neovim/.deps/usr/share/lua/5.1/astrolsp/mason-lspconfig.lua'
no file '/home/runner/work/neovim/neovim/.deps/usr/share/lua/5.1/astrolsp/mason-lspconfig/init.lua'
no file './astrolsp/mason-lspconfig.so'
no file '/usr/local/lib/lua/5.1/astrolsp/mason-lspconfig.so'
no file '/home/runner/work/neovim/neovim/.deps/usr/lib/lua/5.1/astrolsp/mason-lspconfig.so'
no file '/usr/local/lib/lua/5.1/loadall.so'
no file './astrolsp.so'
no file '/usr/local/lib/lua/5.1/astrolsp.so'
no file '/home/runner/work/neovim/neovim/.deps/usr/lib/lua/5.1/astrolsp.so'
no file '/usr/local/lib/lua/5.1/loadall.so'
# stacktrace:
- /AstroNvim/lua/astronvim/plugins/configs/mason-lspconfig.lua:4
- /AstroNvim/lua/astronvim/plugins/lspconfig.lua:25 _in_ **config**
- /astrocore/lua/astrocore/init.lua:119
Fixing my configλ︎
I made a typo. in lua/lazy_setup.lua I added branch = ^6 when I should have added branch = v6.
Everything seems to work now. There may be issues with specific plugins though. More time to test during the week.
Testing Extra Plugins and Toolsλ︎
Using AstroNvim v6 for my every day tasks a simple way to start testing all the extra plugins and tools I use are working correctly.
As there have been changes in Treesitter, it is probable that those plugins would need updating.
Issues:
- Neogit: two popup dialogs shown when deleting a hunk in the git status window
Resolved:
- Marksman: I forgot to install the tool via Mason
Working correctly:
- VM Visual Cursors
Debian Linuxλ︎
Refining disk use by the default install.
Remove unneeded localsλ︎
Its not at all clear how to do this correctly. There are many suggestions on Stack Exchange, but most of them have some risk attached.
On disk, locales takes up nearly 600 Mb and has files for many different languages.
Current Locale configuration
❯ locale
LANG=en_GB.UTF-8
LANGUAGE=en_GB:en
LC_CTYPE="en_GB.UTF-8"
LC_NUMERIC="en_GB.UTF-8"
LC_TIME="en_GB.UTF-8"
LC_COLLATE="en_GB.UTF-8"
LC_MONETARY="en_GB.UTF-8"
LC_MESSAGES="en_GB.UTF-8"
LC_PAPER="en_GB.UTF-8"
LC_NAME="en_GB.UTF-8"
LC_ADDRESS="en_GB.UTF-8"
LC_TELEPHONE="en_GB.UTF-8"
LC_MEASUREMENT="en_GB.UTF-8"
LC_IDENTIFICATION="en_GB.UTF-8"
LC_ALL=
❯ cat /etc/default/locale
# File generated by update-locale
LANG="en_GB.UTF-8"
LANGUAGE="en_GB:en"
The localepurge package is often suggested. This is some kind of script or service that once installed should prevent new package install from adding unnecessary languages.
Localepurge does not remove locales installed before it was installed.
It may be a case of installing localepurge package and then either reinstalling packages that added the extra locales or (safely) deleting unwanted locales and using localepurge to block them being added again.
I should experiment on a computer that I am not using for day to day use.
Bash scriptingλ︎
There are a long list of tests that can be used within an if statement when writing a bash script.
The Gnu Bash Manual describes Conditional Expressions in detail, as does the test manual page.
Commonly used tests include:
- ! expression: True if the expression is false.
- -n string: True if the length of the string is greater than zero.
- -z string: True if the length of the string is zero. That is, it's an empty string.
- string1 = string2: True if string1 is the same as string2.
- string1 != string2: True if string1 is not the same as string2.
- integer1 -eq integer2: True if integer1 is numerically equal to integer2
- integer1 -qt integer2: True if integer1 is numerically greater than integer2
- integer1 -lt integer2: True if integer1 is numerically less than integer2
- -d directory: True if the directory exists.
- -e file: True if the file exists.
- -s file: True if the file exists with a size of more than zero.
- -r file: True if the file exists and the read permission is set.
- -w file: True if the file exists and the write permission is set.
- -x file: True if the file exists and the execute permission is set.
Bash Conditional Expressions - Gnu Bash Manual
Shellcheckλ︎
The Shellcheck tool is a handy way to check the quality of the bash shell scripts I have been writing, to automate the post install of my Debian Linux setup.
I've learned some very useful things and re-remembered many things I had forgotten.
- if elif ... else structure of the if statement
- wraping $ENV_VARS in double quotes to prevent globing
Thank you.