16 KiB
		
	
	
	
	
	
	
	
			
		
		
	
	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.configRChas 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
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,autoIndentandwordWraphave been mapped to their equivalents. Please see the module definition for the updated options.
- 
tabWidthhas been removed as it lead to confusing behaviour. You can replicate the same functionality by settingshiftwidth,tabstopandsofttabstopundervim.optionsas you see fit.
Changelog
- Add support for typst under vim.languages.typstThis will enable thetypst-lsplanguage server, and thetypstfmtformatter
- 
Modified type for from anythingto asubmodulefor better type checking.
- 
Fix null vim.lsp.mappingsgenerating an error and not being filtered out.
- 
Add basic transparency support for oxocarbontheme by setting the highlight group forNormal,NormalFloat,LineNr,SignColumnand optionallyNvimTreeNormaltonone.
- 
Fix using the wrong type intinstead of the expected typestring.
- Fix broken treesitter-context keybinds in visual mode
- Deprecate use of __emptyto 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.disableDefaultRuntimePathsin wrapper options.- As nvf uses $NVIM_APP_NAMEas of recent changes, we can safely assume any configuration in$XDG_CONFIG_HOME/nvfis intentional.
 
- As nvf uses 
- Switch from rust-tools.nvim to the more feature-packed 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 lz.n support and lazy-load some builtin plugins.
- Add simpler helper functions for making keymaps
poz:
- 
Add ocaml-lsp support 
- 
Fix "Emac" typo 
- 
Add new-file-template.nvim to automatically fill new file contents using templates 
- 
Make neo-tree.nvim display file icons properly by enabling visuals.nvimWebDevicons
- 
Move the themedag 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 clangdas 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 unused
- fillChar- this had nothing to do with the plugin, please configure it yourself by adding- vim.opt.listchars:append({ space = '<char>' })to your lua configuration
- eolChar- this also had nothing to do with the plugin, please configure it yourself by adding- vim.opt.listchars:append({ eol = '<char>' })to your lua configuration
 
- 
Replace vim.lsp.nvimCodeActionMenuwithvim.ui.fastaction, see the breaking changes section above for more details
- 
Add a setupOptsoption 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.enabletoautopairs.nvim-autopairs.enable. The new supportssetupOptsformat by default.
- 
Refactor of nvim-cmpand completion related modules
- 
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 run.nvimsupport for running code using cached commands.
- 
Make Neovim's configuration file entirely Lua based. This comes with a few breaking changes: - vim.configRChas been removed. You will need to migrate your entries to Neovim-compliant Lua code, and add them to- vim.luaConfigRCinstead. Existing vimscript configurations may be preserved in- vim.cmdfunctions. Please see Neovim documentation on- vim.cmd
- vim.luaScriptRCis now the top-level DAG, and the internal- vim.pluginRChas 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.
- 
Add deno fmtas 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.extraLuaFilesfor optionally sourcing additional lua files in your configuration.
- 
Refactor programs.languages.elixirto use lspconfig and none-ls for LSP and formatter setups respectively. Diagnostics support is considered, and may be added once the 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-translatorto aid with Typescript development.
- 
Add 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-pathhelper scripts to Neovim closure. Both of those scripts have been automatically added to your PATH upon using neovimConfig orprograms.nvf.enable.- nvf-print-configwill display your- init.lua, in full.
- nvf-print-config-pathwill display the path to a clone of your- init.lua. This is not the path used by the Neovim wrapper, but an identical clone.
 
- 
Add vim.ui.breadcrumbs.lualineto allow fine-tuning breadcrumbs behaviour on Lualine. Onlyvim.ui.breadcrumbs.lualine.winbaris supported for the time being.
- 
Add basedpyright as a Python LSP server and make it default. 
- 
Add python-lsp-server as an additional Python LSP server. 
- 
Add to set vim.ovalues in in your nvf configuration without using additional Lua. See option documentation for more details.
- 
Add to allow user configuration for dashboard.nvim 
- 
Update lualine.nviminput and add missing themes:- Adds ayu,gruvbox_dark,iceberg,moonfly,onedark,powerline_darkandsolarized_lightthemes.
 
- Adds 
- 
Add to allow adding arbitrary spellfiles to Neovim's runtime with ease. 
- 
Add combined nvf configuration ( config.vim) into the final package'spassthruaspassthru.neovimConfigurationfor easier debugging.
- 
Add support for tiny-devicons-auto-colors under vim.visuals.tiny-devicons-auto-colors
- 
Move options that used to set vim.ovalues (e.g.vim.wordWrap) intovim.optionsas default values. Some are left as they don't have a direct equivalent, but expect a switch eventually.
- Telescope:
- Fixed project-nvimcommand and keybinding
- Added default ikeybind/command for Telescope resume(<leader>fr)
 
- Fixed 
- Add hcllsp/formatter (not the same asterraform, which is not useful for e.g.nomadconfig files).
- 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.otterand 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 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
- Add support for base16 theming under
vim.theme
- Fix internal breakage in elixir-toolssetup.
- Add LSP support for Scala via nvim-metals
- Add biome support for Typescript, CSS and Svelte. Enable them via , and respectively.
- Replace nixpkgs-fmt with nixfmt (nixfmt-rfc-style).
- Add precognition-nvim.
- Add support for Astro language server.
