* feat: rewrite vim.maps * modules/mappings: enable silent by default * docs: add entry for vim.maps rewrite * lib/binds: improve code, adjust functions to new api
6.8 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.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 (eg.: vim.maps.normal
), a new
mode
option has mode 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.maps."<leader>m" = {
mode = "n";
...
};
Changelog
- Add support for typst under
vim.languages.typst
This will enable thetypst-lsp
language server, and thetypstfmt
formatter
-
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
.
- 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
- 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 ocaml-lsp support
-
Fix "Emac" typo
-
Add new-file-template.nvim to automatically fill new file contents using templates.
-
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
-
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 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.
-
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 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 [neo-tree.nvim] as an alternative file-tree plugin. It will be available under
vim.filetree.neo-tree
, similar to nvimtree. -
Add
print-nvf-config
&print-nvf-config-path
helper scripts to Neovim closure. Both of those scripts have been automatically added to your PATH upon using neovimConfig orprograms.nvf.enable
.print-nvf-config
will display yourinit.lua
, in full.print-nvf-config-path
will display the path to a clone of yourinit.lua
. This is not the path used by the Neovim wrapper, but an identical clone.