Release Notes
This section lists the release notes for tagged version of nvf and the current main current main branch
Release 0.1 {#sec-release-0.1}
This is the current master branch and information here is not final. These are changes from the v0.1 tag.
Special thanks to https://github.com/nix-community/home-manager/">home-manager for this release. Docs/manual generation, the new module evaluation system, and DAG implementation are from them.
Changelog {#sec-release-0.1-changelog}
https://github.com/jordanisaacs">jordanisaacs:
-
Removed hare language support (lsp/tree-sitter/etc).
vim.lsp.hare
is no longer defined. If you use hare and would like it added back, please file an issue. -
& are now an enum of
string
for options sourced from the flake inputs. Users can still provide vim plugin packages.- If you are contributing and adding a new plugin, add the plugin name to
availablePlugins
in [types-plugin.nix].
- If you are contributing and adding a new plugin, add the plugin name to
-
neovimBuilder
has been removed for configuration. Using an overlay is no longer required. See the manual for the new way to configuration.
-
Treesitter grammars are now configurable with . Utilizes the nixpkgs
nvim-treesitter
plugin rather than a custom input in order to take advantage of build support of pinned versions. See the https://discourse.nixos.org/t/psa-if-you-are-on-unstable-try-out-nvim-treesitter-withallgrammars/23321?u=snowytrees">relevant discourse post for more information. Packages can be found under thevimPlugins.nvim-treesitter.builtGrammars
namespace. -
vim.configRC
and are now of type DAG lines. This allows for ordering of the config. Usage is the same is in home-manager'shome.activation
option.
vim.luaConfigRC = lib.nvim.dag.entryAnywhere "config here"
https://github.com/MoritzBoehme">MoritzBoehme:
Release 0.2 {#sec-release-0.2}
Release notes for release 0.2
Changelog {#sec-release-0.2-changelog}
https://github.com/notashelf">notashelf:
-
Added two minimap plugins under
vim.minimap
.codewindow.nvim
is enabled by default, whileminimap.vim
is available with its code-minimap dependency. -
A complementary plugin,
obsidian.nvim
and the Neovim alternative for Emacs' orgmode withorgmode.nvim
have been added. Both will be disabled by default. -
Smooth scrolling for ANY movement command is now available with
cinnamon.nvim
-
You will now notice a dashboard on startup. This is provided by the
alpha.nvim
plugin. You can use any of the three available dashboard plugins, or disable them entirely. -
There is now a scrollbar on active buffers, which can highlight errors by hooking to your LSPs. This is on by default, but can be toggled off under
vim.visuals
if seen necessary. -
Discord Rich Presence has been added through
presence.nvim
for those who want to flex that they are using the superior text editor. -
An icon picker is now available with telescope integration. You can use
:IconPickerInsert
or:IconPickerYank
to add icons to your code. -
A general-purpose cheatsheet has been added through
cheatsheet.nvim
. Forget no longer! -
ccc.nvim
has been added to the default plugins to allow picking colors with ease. -
Most UI components of Neovim have been replaced through the help of
noice.nvim
. There are also notifications and custom UI elements available for Neovim messages and prompts. -
A (floating by default) terminal has been added through
toggleterm.nvim
. -
Harness the power of ethical (
tabnine.nvim
) and not-so-ethical (copilot.lua
) AI by those new assistant plugins. Both are off by default, TabNine needs to be wrapped before it's working. -
Experimental mouse gestures have been added through
gesture.nvim
. See plugin page and the relevant module for more details on how to use. -
Re-open last visited buffers via
nvim-session-manager
. Disabled by default as deleting buffers seems to be problematic at the moment. -
Most of NvimTree's configuration options have been changed with some options being toggled to off by default.
-
Lualine had its configuration simplified and style toned down. Less color, more info.
-
Modules where multiple plugin configurations were in the same directory have been simplified. Each plugin inside a single module gets its directory to be imported.
-
Separate config options with the same parent attribute have been merged into one for simplicity.
Release 0.3 {#sec-release-0.3}
Release 0.3 had to come out before I wanted it to due to Neovim 0.9 dropping into nixpkgs-unstable. The Treesitter changes have prompted a Treesitter rework, which was followed by reworking the languages system. Most of the changes to those are downstreamed from the original repository. The feature requests that was originally planned for 0.3 have been moved to 0.4, which should come out soon.
Changelog {#sec-release-0.3-changelog}
-
We have transitioned to flake-parts, from flake-utils to extend the flexibility of this flake. This means the flake structure is different than usual, but the functionality remains the same.
-
We now provide a home-manager module. Do note that it is still far from perfect, but it works.
-
nodejs_16
is now bundled withCopilot.lua
if the user has enabled Copilot assistant. -
which-key section titles have been fixed. This is to be changed once again in a possible keybind rewrite, but now it should display the correct titles instead of
+prefix
-
Most of
presence.nvim
's options have been made fully configurable through your configuration file. -
Most of the modules have been refactored to separate
config
andoptions
attributes. -
Darwin has been deprecated as the Zig package is marked as broken. We will attempt to use the Zig overlay to return Darwin support.
-
Fidget.nvim
has been added as a neat visual addition for LSP installations. -
diffview.nvim
has been added to provide a convenient diff utility. -
Treesitter grammars are now configurable with . Utilizes the nixpkgs
nvim-treesitter
plugin rather than a custom input in order to take advantage of build support of pinned versions. See https://discourse.nixos.org/t/psa-if-you-are-on-unstable-try-out-nvim-treesitter-withallgrammars/23321?u=snowytrees">discourse for more information. Packages can be found under thepkgs.vimPlugins.nvim-treesitter.builtGrammars
attribute. Treesitter grammars for supported languages should be enabled within the module. By default no grammars are installed, thus the following grammars which do not have a language section are not included anymore: comment, toml, make, html, css, graphql, json. -
A new section has been added for language support:
vim.languages.<language>
.- The options
enableLSP
, etc. will enable the respective section for all languages that have been enabled. - All LSP languages have been moved here
plantuml
andmarkdown
have been moved here- A new section has been added for
html
. The oldvim.treesitter.autotagHtml
can be found at .
- The options
-
vim.git.gitsigns.codeActions
has been added, allowing you to turn on Gitsigns' code actions. -
Removed the plugins document in the docs. Was too unwieldy to keep updated.
-
vim.visual.lspkind
has been moved to -
Improved handling of completion formatting. When setting
vim.autocomplete.sources
, can also include optional menu mapping. And can provide your own function withvim.autocomplete.formatting.format
. -
For
vim.visuals.indentBlankline.fillChar
andvim.visuals.indentBlankline.eolChar
options, turning them off should be done by usingnull
rather than""
now. -
Transparency has been made optional and has been disabled by default. option can be used to enable or disable transparency for your configuration.
-
Fixed deprecated configuration method for Tokyonight, and added new style "moon"
-
Dart language support as well as extended flutter support has been added. Thanks to @FlafyDev for his contributions towards Dart language support.
-
Elixir language support has been added through
elixir-tools.nvim
. -
modes.nvim
has been added to the UI plugins as a minor error highlighter. -
smartcollumn.nvim
has been added to dynamically display a colorcolumn when the limit has been exceeded, providing per-buftype column position and more. -
project.nvim
has been added for better project management inside Neovim. -
More configuration options have been added to
nvim-session-manager
. -
Editorconfig support has been added to the core functionality, with an enable option.
-
venn-nvim
has been dropped due to broken keybinds.
Release 0.4 {#sec-release-0.4}
Following the release of v0.3, I have decided to release v0.4 with a massive new
change: customizable keybinds. As of the 0.4 release, keybinds will no longer be
hardcoded and instead provided by each module's own keybinds section. The old
keybind system (vim.keybinds = {}
) is now considered deprecated and the new
lib functions are recommended to be used for adding keybinds for new plugins, or
adding keybinds to existing plugins.
Alongside customizable keybinds, there are a few quality of life updates, such
as lazygit
integration and the new experimental Lua loader of Neovim 0.9
thanks to our awesome contributors who made this update possible during my
absence.
Changelog {#sec-release-0.4-changelog}
https://github.com/n3oney">n3oney:
-
Streamlined keybind adding process towards new functions in extended stdlib.
-
Moved default keybinds into keybinds section of each module
-
Simplified luaConfigRC and configRC setting - they can now just take strings
-
Refactored the resolveDag function - you can just provide a string now, which will default to dag.entryAnywhere
-
Fixed formatting sometimes removing parts of files
-
Made formatting synchronous
-
Gave null-ls priority over other formatters
https://github.com/horriblename">horriblename:
-
Added
clangd
as alternative lsp for C/++. -
Added
toggleterm
integration forlazygit
. -
Added new option
enableluaLoader
to enable neovim's experimental module loader for faster startup time. -
Fixed bug where flutter-tools can't find
dart
LSP -
Added Debug Adapter (DAP) support for clang, rust, go, python and dart.
https://github.com/notashelf">notashelf:
-
Made Copilot's Node package configurable. It is recommended to keep as default, but providing a different NodeJS version is now possible.
-
Added
vim.cursorlineOpt
for configuring Neovim'svim.o.cursorlineopt
. -
Added
filetree.nvimTreeLua.view.cursorline
, default false, to enable cursorline in nvimtre. -
Added Fidget.nvim support for the Catppuccin theme.
-
Updated bundled NodeJS version used by
Copilot.lua
. v16 is now marked as insecure on Nixpkgs, and we updated to v18 -
Enabled Catppuccin modules for plugins available by default.
-
Added experimental Svelte support under
vim.languages
. -
Removed unnecessary scrollbar element from notifications and codeaction warning UI.
-
vim.utility.colorizer
has been renamed tovim.utility.ccc
after the plugin it uses -
Color preview via
nvim-colorizer.lua
-
Updated Lualine statusline UI
-
Added vim-illuminate for smart highlighting
-
Added a module for enabling Neovim's spellchecker
-
Added prettierd as an alternative formatter to prettier - currently defaults to prettier
-
Fixed presence.nvim inheriting the wrong client id
-
Cleaned up documentation
Release 0.5 {#sec-release-0.5}
Release notes for release 0.5
Changelog {#sec-release-0.5-changelog}
https://github.com/vagahbond">vagahbond:
-
Added phan language server for PHP
-
Added phpactor language server for PHP
https://github.com/horriblename">horriblename:
-
Added transparency support for tokyonight theme
-
Fixed a bug where cmp's close and scrollDocs mappings wasn't working
-
Streamlined and simplified extra plugin API with the addition of
-
Allow using command names in place of LSP packages to avoid automatic installation
-
Add lua LSP and Treesitter support, and neodev.nvim plugin support
https://github.com/amanse">amanse:
-
Added daily notes options for obsidian plugin
-
Added
jdt-language-server
for Java
https://github.com/yavko">yavko:
-
Added Deno Language Server for Javascript/Typescript
-
Added support for multiple languages under
vim.spellChecking.languages
, and added vim-dirtytalk throughvim.spellChecking.enableProgrammingWordList
https://github.com/FrothyMarrow">frothymarrow:
-
Renamed
vim.visuals.cursorWordline
tovim.visuals.cursorline.enable
-
Added
vim.visuals.cursorline.lineNumbersOnly
to display cursorline only in the presence of line numbers -
Added Oxocarbon to the list of available themes.
https://github.com/notashelf">notashelf:
-
Added GitHub Copilot to nvim-cmp completion sources.
-
Added for global and individual plugin border configuration.
-
LSP navigation helper with nvim-navbuddy, depends on nvim-navic (automatically enabled if navic is enabled)
-
Added nvim-navic integration for Catppuccin theme
-
Fixed mismatching Zig language description
-
Added
lsp_lines
plugin for showing diagnostic messages -
Added a configuration option for choosing the leader key
-
The package used for neovim is now customizable by the user, using . For best results, always use an unwrapped package
-
Added highlight-undo plugin for highlighting undo/redo targets
-
Added bash LSP and formatter support
-
Disabled Lualine LSP status indicator for Toggleterm buffer
-
Added
nvim-docs-view
, a plugin to display LSP hover documentation in a side panel -
Switched to
nixosOptionsDoc
in option documentation. To quote home-manager commit: "Output is mostly unchanged aside from some minor typographical and formatting changes, along with better source links." -
Updated indent-blankine.nvim to v3 - this comes with a few option changes, which will be migrated with
renamedOptionModule
https://poz.pet">poz:
-
Fixed scrollOffset not being used
-
Updated clangd to 16
-
Disabled
useSystemClipboard
by default
https://github.com/ksonj">ksonj:
-
Add support to change mappings to utility/surround
-
Add black-and-isort python formatter
-
Removed redundant "Enable ..." in
mkEnableOption
descriptions -
Add options to modify LSP key bindings and add proper which-key descriptions
-
Changed type of
statusline.lualine.activeSection
andstatusline.lualine.inactiveSection
fromattrsOf str
toattrsOf (listOf str)
-
Added
statusline.lualine.extraActiveSection
andstatusline.lualine.extraInactiveSection
Release 0.6 {#sec-release-0.6}
Release notes for release 0.6
Breaking Changes and Migration Guide
In v0.6 we are introducing setupOpts
: many plugin related options are moved
into their respective setupOpts
submodule, e.g. nvimTree.disableNetrw
is
renamed to nvimTree.setupOpts.disable_netrw
.
Why? in short, you can now pass in anything to setupOpts and it will be passed
to your require'plugin'.setup{...}
. No need to wait for us to support every
single plugin option.
The warnings when you rebuild your config should be enough to guide you through what you need to do, if there's an option that was renamed but wasn't listed in the warning, please file a bug report!
To make your migration process less annoying, here's a keybind that will help you with renaming stuff from camelCase to snake_case (you'll be doing that a lot):
-- paste this in a temp.lua file and load it in vim with :source /path/to/temp.lua
function camelToSnake()
-- Get the current word under the cursor
local word = vim.fn.expand("<cword>")
-- Replace each capital letter with an underscore followed by its lowercase equivalent
local snakeCase = string.gsub(word, "%u", function(match)
return "_" .. string.lower(match)
end)
-- Remove the leading underscore if present
if string.sub(snakeCase, 1, 1) == "_" then
snakeCase = string.sub(snakeCase, 2)
end
vim.fn.setreg(vim.v.register, snakeCase)
-- Select the word under the cursor and paste
vim.cmd("normal! viwP")
end
vim.api.nvim_set_keymap('n', '<leader>a', ':lua camelToSnake()<CR>', { noremap = true, silent = true })
Changelog {#sec-release-0.6-changelog}
https://github.com/ksonj">ksonj:
-
Added Terraform language support.
-
Added
ChatGPT.nvim
, which can be enabled with . Do keep in mind that this option requiresOPENAI_API_KEY
environment variable to be set.
https://github.com/donnerinoern">donnerinoern:
-
Added Gruvbox theme.
-
Added marksman LSP for Markdown.
-
Fixed markdown preview with Glow not working and added an option for changing the preview keybind.
-
colorizer.nvim: switched to a maintained fork.
-
Added
markdown-preview.nvim
, movedglow.nvim
to a brand newvim.utility.preview
category.
https://github.com/elijahimmer">elijahimmer
- Added rose-pine theme.
https://poz.pet">poz:
- Added
vim.autocomplete.alwaysComplete
. Allows users to have the autocomplete window popup only when manually activated.
https://github.com/horriblename">horriblename:
-
Fixed empty winbar when breadcrumbs are disabled.
-
Added custom
setupOpts
for various plugins. -
Removed support for deprecated plugin "nvim-compe".
-
Moved most plugins to
setupOpts
method.
https://github.com/frothymarrow">frothymarrow:
-
Added option
vim.luaPackages
to wrap neovim with extra Lua packages. -
Rewrote the entire
fidget.nvim
module to include extensive configuration options. Optionvim.fidget-nvim.align.bottom
has been removed in favor ofvim.fidget-nvim.notification.window.align
, which now supportstop
andbottom
values.vim.fidget-nvim.align.right
has no longer any equivalent and also has been removed. -
which-key.nvim
categories can now be customized through vim.binds.whichKey.register -
Added
magick
tovim.luaPackages
forimage.nvim
. -
Added
alejandra
to the default devShell. -
Migrated neovim-flake to
makeNeovimUnstable
wrapper.
https://github.com/notashelf">notashelf:
-
Finished moving to
nixosOptionsDoc
in the documentation and changelog. All documentation options and files are fully free of Asciidoc, and will now use Nixpkgs flavored markdown. -
Bumped plugin inputs to their latest versions.
-
Deprecated
presence.nvim
in favor ofneocord
. This meansvim.rich-presence.presence-nvim
is removed and will throw a warning if used. You are recommended to rewrite your neocord configuration from scratch based on the. https://github.com/IogaMaster/neocord">official documentation -
Removed Tabnine plugin due to the usage of imperative tarball downloads. If you'd like to see it back, please create an issue.
-
Added support for css and tailwindcss through vscode-language-servers-extracted & tailwind-language-server. Those can be enabled through
vim.languages.css
andvim.languages.tailwind
. -
Lualine module now allows customizing
always_divide_middle
,ignore_focus
anddisabled_filetypes
through the new options: vim.statusline.lualine.alwaysDivideMiddle, vim.statusline.lualine.ignoreFocus and vim.statusline.lualine.disabledFiletypes. -
Updated all plugin inputs to their latest versions (21.04.2024) - this brought minor color changes to the Catppuccin theme.
-
Moved home-manager module entrypoint to
flake/modules
and added an experimental Nixos module. This requires further testing before it can be considered ready for use. -
Made lib calls explicit. E.g.
lib.strings.optionalString
instead oflib.optionalString
. This is a pattern expected to be followed by all contributors in the future. -
Added
image.nvim
for image previews. -
The final neovim package is now exposed. This means you can build the neovim package that will be added to your package list without rebuilding your system to test if your configuration yields a broken package.
-
Changed the tree structure to distinguish between core options and plugin options.
-
Added plugin auto-discovery from plugin inputs. This is mostly from https://github.com/jordanisaacs/neovim-flake">JordanIsaac's neovim-flake. Allows contributors to add plugin inputs with the
plugin-
prefix to have them automatically discovered for theplugin
type inlib/types
. -
Moved internal
wrapLuaConfig
to the extended library, structured its arguments to takeluaBefore
,luaConfig
andluaAfter
as strings, which are then concatted inside a lua block. -
Added and for inserting verbatim Lua configuration before and after the resolved Lua DAG respectively. Both of those options take strings as the type, so you may read the contents of a Lua file from a given path.
-
Added
vim.spellchecking.ignoredFiletypes
andvim.spellChecking.programmingWordlist.enable
for ignoring certain filetypes in spellchecking and enablingvim-dirtytalk
respectively. The previously usedvim.spellcheck.vim-dirtytalk
aliases to the latter option. -
Exposed
withRuby
,withNodeJs
,withPython3
, andpython3Packages
from themakeNeovimConfig
function under their respective options. -
Added for appending additional packages to the wrapper PATH, making said packages available while inside the Neovim session.
-
Made Treesitter options configurable, and moved treesitter-context to
setupOpts
while it is enabled. -
Added which takes either a string of enum, or a Lua function. The default is "compact", but you may change it according to nvim-notify documentation.
Release 0.7 {#sec-release-0.7}
Release notes for release 0.7
Breaking Changes and Migration Guide
vim.configRC
removed
In v0.7 we are removing vim.configRC
in favor of making vim.luaConfigRC
the
top-level DAG, and thereby making the entire configuration Lua based. This
change introduces a few breaking changes:
vim.configRC
has been removed, which means that you have to convert all of your custom vimscript-based configuration to Lua. As for how to do that, you will have to consult the Neovim documentation and your search engine.- After migrating your Vimscript-based configuration to Lua, you might not be
able to use the same entry names in
vim.luaConfigRC
, because those have also slightly changed. See the new DAG entries in nvf manual for more details.
Why?
Neovim being an aggressive refactor of Vim, is designed to be mainly Lua based; making good use of its extensive Lua API. Additionally, Vimscript is slow and brings unnecessary performance overhead while working with different configuration formats.
vim.maps
rewrite
Instead of specifying map modes using submodules (e.g., vim.maps.normal
), a
new vim.keymaps
submodule with support for a mode
option has been
introduced. It can be either a string, or a list of strings, where a string
represents the short-name of the map mode(s), that the mapping should be set
for. See :help map-modes
for more information.
For example:
vim.maps.normal."<leader>m" = { ... };
has to be replaced by
vim.keymaps = [
{
key = "<leader>m";
mode = "n";
}
...
];
vim.lsp.nvimCodeActionMenu
removed in favor of vim.ui.fastaction
The nvim-code-action-menu plugin has been archived and broken for a long time,
so it's being replaced with a young, but better alternative called
fastaction.nvim. Simply remove everything set under
vim.lsp.nvimCodeActionMenu
, and set vim.ui.fastaction.enable
to true
.
Note that we are looking to add more alternatives in the future like dressing.nvim and actions-preview.nvim, in case fastaction doesn't work for everyone.
type
based modules removed
As part of the autocompletion rewrite, modules that used to use a type
option
have been replaced by per-plugin modules instead. Since both modules only had
one type, you can simply change
vim.autocomplete.*
->vim.autocomplete.nvim-cmp.*
vim.autopairs.enable
->vim.autopairs.nvim-autopairs.enable
nixpkgs-fmt
removed in favor of nixfmt
nixpkgs-fmt
has been archived for a while, and it's finally being removed in
favor of nixfmt (more information can be found
https://github.com/nix-community/nixpkgs-fmt?tab=readme-ov-file#nixpkgs-fmt---nix-code-formatter-for-nixpkgs">here.
To migrate to nixfmt
, simply change vim.languages.nix.format.type
to
nixfmt
.
leader changes
This has been deprecated in favor of using the more generic vim.globals
(you
can use vim.globals.mapleader
to change this instead).
Rust specific keymaps now use maplocalleader
instead of localleader
by
default. This is to avoid conflicts with other modules. You can change
maplocalleader
with vim.globals.maplocalleader
, but it's recommended to set
it to something other than mapleader
to avoid conflicts.
vim.*
changes
Inline with the leader changes, we have removed some
options that were under vim
as convenient shorthands for vim.o.*
options.
Warning
As v0.7 features the addition of , those options are now
considered as deprecated. You should migrate to the appropriate options in the
vim.options
submodule.
The changes are, in no particular order:
-
colourTerm
,mouseSupport
,cmdHeight
,updateTime
,mapTime
,cursorlineOpt
,splitBelow
,splitRight
,autoIndent
andwordWrap
have been mapped to their equivalents. Please see the module definition for the updated options. -
tabWidth
has been removed as it lead to confusing behaviour. You can replicate the same functionality by settingshiftwidth
,tabstop
andsofttabstop
undervim.options
as you see fit.
Changelog {#sec-release-0.7-changelog}
https://github.com/ItsSorae">ItsSorae:
- Add support for https://typst.app/">typst under
vim.languages.typst
This will enable thetypst-lsp
language server, and thetypstfmt
formatter
https://github.com/frothymarrow">frothymarrow:
-
Modified type for from
anything
to asubmodule
for better type checking. -
Fix null
vim.lsp.mappings
generating an error and not being filtered out. -
Add basic transparency support for
oxocarbon
theme by setting the highlight group forNormal
,NormalFloat
,LineNr
,SignColumn
and optionallyNvimTreeNormal
tonone
. -
Fix using the wrong type
int
instead of the expected typestring
.
https://github.com/horriblename">horriblename:
- Fix broken treesitter-context keybinds in visual mode
- Deprecate use of
__empty
to define empty tables in Lua. Empty attrset are no longer filtered and thus should be used instead. - Add dap-go for better dap configurations
- Make noice.nvim customizable
- Standardize border style options and add custom borders
- Remove
vim.disableDefaultRuntimePaths
in wrapper options.- As nvf uses
$ NVIM_APP_NAME
as of recent changes, we can safely assume any configuration in$ XDG_CONFIG_HOME/nvf
is intentional.
- As nvf uses
- Switch from https://github.com/simrat39/rust-tools.nvim">rust-tools.nvim to the more feature-packed https://github.com/mrcjkb/rustaceanvim">rustaceanvim. This switch entails a whole bunch of new features and options, so you are recommended to go through rustacean.nvim's README to take a closer look at its features and usage
- Add https://github.com/mrcjkb/lz.n">lz.n support and lazy-load some builtin plugins.
- Add simpler helper functions for making keymaps
https://poz.pet">poz:
-
Add https://github.com/ocaml/ocaml-lsp">ocaml-lsp support
-
Fix "Emac" typo
-
Add https://github.com/otavioschwanck/new-file-template.nvim">new-file-template.nvim to automatically fill new file contents using templates
-
Make https://github.com/nvim-neo-tree/neo-tree.nvim">neo-tree.nvim display file icons properly by enabling
visuals.nvimWebDevicons
https://github.com/diniamo">diniamo:
-
Move the
theme
dag entry to beforeluaScript
. -
Add rustfmt as the default formatter for Rust.
-
Enabled the terminal integration of catppuccin for theming Neovim's built-in terminal (this also affects toggleterm).
-
Migrate bufferline to setupOpts for more customizability
-
Use
clangd
as the default language server for C languages -
Expose
lib.nvim.types.pluginType
, which for example allows the user to create abstractions for adding plugins -
Migrate indent-blankline to setupOpts for more customizability. While the plugin's options can now be found under
indentBlankline.setupOpts
, the previous iteration of the module also included out of place/broken options, which have been removed for the time being. These are:listChar
- this was already unusedfillChar
- this had nothing to do with the plugin, please configure it yourself by addingvim.opt.listchars:append({ space = '<char>' })
to your lua configurationeolChar
- this also had nothing to do with the plugin, please configure it yourself by addingvim.opt.listchars:append({ eol = '<char>' })
to your lua configuration
-
Replace
vim.lsp.nvimCodeActionMenu
withvim.ui.fastaction
, see the breaking changes section above for more details -
Add a
setupOpts
option to nvim-surround, which allows modifying options that aren't defined in nvf. Move the alternate nvim-surround keybinds to usesetupOpts
. -
Remove
autopairs.type
, and renameautopairs.enable
toautopairs.nvim-autopairs.enable
. The new supportssetupOpts
format by default. -
Refactor of
nvim-cmp
and completion related modules- Remove
autocomplete.type
in favor of per-plugin enable options such as . - Deprecate legacy Vimsnip in favor of Luasnip, and integrate friendly-snippets for bundled snippets. can be used to toggle Luasnip.
- Add sorting function options for completion sources under
- Remove
-
Add C# support under
vim.languages.csharp
, with support for both omnisharp-roslyn and csharp-language-server. -
Add Julia support under
vim.languages.julia
. Note that the entirety of Julia is bundled with nvf, if you enable the module, since there is no way to provide only the LSP server. -
Add https://github.com/diniamo/run.nvim">
run.nvim
support for running code using cached commands.
-
Make Neovim's configuration file entirely Lua based. This comes with a few breaking changes:
vim.configRC
has been removed. You will need to migrate your entries to Neovim-compliant Lua code, and add them tovim.luaConfigRC
instead. Existing vimscript configurations may be preserved invim.cmd
functions. Please see https://neovim.io/doc/user/lua.html#vim.cmd()">Neovim documentation onvim.cmd
vim.luaScriptRC
is now the top-level DAG, and the internalvim.pluginRC
has been introduced for setting up internal plugins. See the "DAG entries in nvf" manual page for more information.
-
Rewrite
vim.maps
, see the breaking changes section above.
https://github.com/notashelf">NotAShelf:
-
Add
deno fmt
as the default Markdown formatter. This will be enabled automatically if you have autoformatting enabled, but can be disabled manually if you choose to. -
Add
vim.extraLuaFiles
for optionally sourcing additional lua files in your configuration. -
Refactor
programs.languages.elixir
to use lspconfig and none-ls for LSP and formatter setups respectively. Diagnostics support is considered, and may be added once the https://github.com/rrrene/credo">credo linter has been added to nixpkgs. A pull request is currently open. -
Remove vim-tidal and friends.
-
Clean up Lualine module to reduce theme dependency on Catppuccin, and fixed blending issues in component separators.
-
Add [ts-ereror-translator.nvim] extension of the TS language module, under
vim.languages.ts.extensions.ts-error-translator
to aid with Typescript development. -
Add https://github.com/nvim-neo-tree/neo-tree.nvim">neo-tree.nvim as an alternative file-tree plugin. It will be available under
vim.filetree.neo-tree
, similar to nvimtree. -
Add
nvf-print-config
&nvf-print-config-path
helper scripts to Neovim closure. Both of those scripts have been automatically added to your PATH upon using neovimConfig orprograms.nvf.enable
. -
Add
vim.ui.breadcrumbs.lualine
to allow fine-tuning breadcrumbs behaviour on Lualine. Onlyvim.ui.breadcrumbs.lualine.winbar
is supported for the time being.- has been added to allow
controlling the default behaviour of the
nvim-navic
component on Lualine, which used to occupywinbar.lualine_c
as long as breadcrumbs are enabled. vim.ui.breadcrumbs.alwaysRender
has been renamed to to be conform to the new format.
- has been added to allow
controlling the default behaviour of the
-
Add https://github.com/detachhead/basedpyright">basedpyright as a Python LSP server and make it default.
-
Add https://github.com/python-lsp/python-lsp-server">python-lsp-server as an additional Python LSP server.
-
Add to set
vim.o
values in in your nvf configuration without using additional Lua. See option documentation for more details. -
Add to allow user configuration for https://github.com/nvimdev/dashboard-nvim">dashboard.nvim
-
Update
lualine.nvim
input and add missing themes:- Adds
ayu
,gruvbox_dark
,iceberg
,moonfly
,onedark
,powerline_dark
andsolarized_light
themes.
- Adds
-
Add to allow adding arbitrary spellfiles to Neovim's runtime with ease.
-
Add combined nvf configuration (
config.vim
) into the final package'spassthru
aspassthru.neovimConfiguration
for easier debugging. -
Add support for https://github.com/rachartier/tiny-devicons-auto-colors.nvim">tiny-devicons-auto-colors under
vim.visuals.tiny-devicons-auto-colors
-
Move options that used to set
vim.o
values (e.g.vim.wordWrap
) intovim.options
as default values. Some are left as they don't have a direct equivalent, but expect a switch eventually.
https://github.com/ppenguin">ppenguin:
- Telescope:
- Fixed
project-nvim
command and keybinding - Added default ikeybind/command for
Telescope resume
(<leader>fr
)
- Fixed
- Add
hcl
lsp/formatter (not the same asterraform
, which is not useful for e.g.nomad
config files).
https://github.com/Soliprem">Soliprem:
- Add LSP and Treesitter support for R under
vim.languages.R
.- Add formatter support for R, with styler and formatR as options
- Add Otter support under
vim.lsp.otter
and an assert to prevent conflict with ccc - Fixed typo in Otter's setupOpts
- Add Neorg support under
vim.notes.neorg
- Add LSP, diagnostics, formatter and Treesitter support for Kotlin under
vim.languages.kotlin
- changed default keybinds for leap.nvim to avoid altering expected behavior
- Add LSP, formatter and Treesitter support for Vala under
vim.languages.vala
- Add [Tinymist](https://github.com/Myriad-Dreamin/tinymist] as a formatter for the Typst language module.
- Add LSP and Treesitter support for Assembly under
vim.languages.assembly
- Move https://github.com/folke/which-key.nvim">which-key to the new spec
- Add LSP and Treesitter support for Nushell under
vim.languages.nu
- Add LSP and Treesitter support for Gleam under
vim.languages.gleam
https://github.com/Bloxx12">Bloxx12
- Add support for https://github.com/RRethy/base16-nvim">base16 theming under
vim.theme
- Fix internal breakage in
elixir-tools
setup.
https://github.com/ksonj">ksonj:
- Add LSP support for Scala via https://github.com/scalameta/nvim-metals">nvim-metals
https://github.com/nezia1">nezia1:
- Add https://github.com/biomejs/biome">biome support for Typescript, CSS and Svelte. Enable them via , and respectively.
- Replace https://github.com/nix-community/nixpkgs-fmt">nixpkgs-fmt with https://github.com/NixOS/nixfmt">nixfmt (nixfmt-rfc-style).
https://github.com/Nowaaru">Nowaaru:
- Add
precognition-nvim
.
https://github.com/DamitusThyYeetus123">DamitusThyYeeticus123:
- Add support for https://astro.build/">Astro language server.