mirror of
				https://github.com/NotAShelf/nvf.git
				synced 2025-10-31 11:02:37 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			390 lines
		
	
	
	
		
			16 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			390 lines
		
	
	
	
		
			16 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # Release 0.7 {#sec-release-0.7}
 | |
| 
 | |
| Release notes for release 0.7
 | |
| 
 | |
| ## Breaking Changes and Migration Guide {#sec-breaking-changes-and-migration-guide-0-7}
 | |
| 
 | |
| ### `vim.configRC` removed {#sec-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:
 | |
| 
 | |
| [DAG entries in nvf manual]: /index.xhtml#ch-dag-entries
 | |
| 
 | |
| - `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 {#sec-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:
 | |
| 
 | |
| ```nix
 | |
| vim.maps.normal."<leader>m" = { ... };
 | |
| ```
 | |
| 
 | |
| has to be replaced by
 | |
| 
 | |
| ```nix
 | |
| vim.keymaps = [
 | |
|   {
 | |
|     key = "<leader>m";
 | |
|     mode = "n";
 | |
|   }
 | |
|   ...
 | |
| ];
 | |
| ```
 | |
| 
 | |
| ### `vim.lsp.nvimCodeActionMenu` removed in favor of `vim.ui.fastaction` {#sec-nvim-code-action-menu-deprecation}
 | |
| 
 | |
| 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 {#sec-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` {#sec-nixpkgs-fmt-deprecation}
 | |
| 
 | |
| `nixpkgs-fmt` has been archived for a while, and it's finally being removed in
 | |
| favor of nixfmt (more information can be found
 | |
| [here](https://github.com/nix-community/nixpkgs-fmt?tab=readme-ov-file#nixpkgs-fmt---nix-code-formatter-for-nixpkgs).
 | |
| 
 | |
| To migrate to `nixfmt`, simply change `vim.languages.nix.format.type` to
 | |
| `nixfmt`.
 | |
| 
 | |
| ### leader changes {#sec-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 {#sec-vim-opt-changes}
 | |
| 
 | |
| Inline with the [leader changes](#sec-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 [](#opt-vim.options), 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` and `wordWrap` have
 | |
|   been mapped to their [](#opt-vim.options) 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 setting `shiftwidth`, `tabstop` and
 | |
|   `softtabstop` under `vim.options` as you see fit.
 | |
| 
 | |
| ## Changelog {#sec-release-0.7-changelog}
 | |
| 
 | |
| [ItsSorae](https://github.com/ItsSorae):
 | |
| 
 | |
| - Add support for [typst](https://typst.app/) under `vim.languages.typst` This
 | |
|   will enable the `typst-lsp` language server, and the `typstfmt` formatter
 | |
| 
 | |
| [frothymarrow](https://github.com/frothymarrow):
 | |
| 
 | |
| - Modified type for
 | |
|   [](#opt-vim.visuals.fidget-nvim.setupOpts.progress.display.overrides) from
 | |
|   `anything` to a `submodule` 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 for `Normal`, `NormalFloat`, `LineNr`, `SignColumn` and optionally
 | |
|   `NvimTreeNormal` to `none`.
 | |
| 
 | |
| - Fix [](#opt-vim.ui.smartcolumn.setupOpts.custom_colorcolumn) using the wrong
 | |
|   type `int` instead of the expected type `string`.
 | |
| 
 | |
| [horriblename](https://github.com/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.
 | |
| 
 | |
| [rust-tools.nvim]: https://github.com/simrat39/rust-tools.nvim
 | |
| [rustaceanvim]: https://github.com/mrcjkb/rustaceanvim
 | |
| 
 | |
| - 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
 | |
| 
 | |
| [lz.n]: https://github.com/mrcjkb/lz.n
 | |
| 
 | |
| - Add [lz.n] support and lazy-load some builtin plugins.
 | |
| - Add simpler helper functions for making keymaps
 | |
| 
 | |
| [poz](https://poz.pet):
 | |
| 
 | |
| [ocaml-lsp]: https://github.com/ocaml/ocaml-lsp
 | |
| [new-file-template.nvim]: https://github.com/otavioschwanck/new-file-template.nvim
 | |
| [neo-tree.nvim]: https://github.com/nvim-neo-tree/neo-tree.nvim
 | |
| 
 | |
| - 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`
 | |
| 
 | |
| [diniamo](https://github.com/diniamo):
 | |
| 
 | |
| - Move the `theme` dag entry to before `luaScript`.
 | |
| 
 | |
| - 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 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.nvimCodeActionMenu` with `vim.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 use
 | |
|   `setupOpts`.
 | |
| 
 | |
| - Remove `autopairs.type`, and rename `autopairs.enable` to
 | |
|   `autopairs.nvim-autopairs.enable`. The new
 | |
|   [](#opt-vim.autopairs.nvim-autopairs.enable) supports `setupOpts` format by
 | |
|   default.
 | |
| 
 | |
| - Refactor of `nvim-cmp` and completion related modules
 | |
| 
 | |
|   - Remove `autocomplete.type` in favor of per-plugin enable options such as
 | |
|     [](#opt-vim.autocomplete.nvim-cmp.enable).
 | |
|   - Deprecate legacy Vimsnip in favor of Luasnip, and integrate
 | |
|     friendly-snippets for bundled snippets. [](#opt-vim.snippets.luasnip.enable)
 | |
|     can be used to toggle Luasnip.
 | |
|   - Add sorting function options for completion sources under
 | |
|     [](#opt-vim.autocomplete.nvim-cmp.setupOpts.sorting.comparators)
 | |
| 
 | |
| - 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.nvim`](https://github.com/diniamo/run.nvim) support for running code
 | |
|   using cached commands.
 | |
| 
 | |
| [Neovim documentation on `vim.cmd`]: https://neovim.io/doc/user/lua.html#vim.cmd()
 | |
| 
 | |
| - 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 to `vim.luaConfigRC` instead.
 | |
|     Existing vimscript configurations may be preserved in `vim.cmd` functions.
 | |
|     Please see [Neovim documentation on `vim.cmd`]
 | |
|   - `vim.luaScriptRC` is now the top-level DAG, and the internal `vim.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.
 | |
| 
 | |
| [NotAShelf](https://github.com/notashelf):
 | |
| 
 | |
| [ts-error-translator.nvim]: https://github.com/dmmulroy/ts-error-translator.nvim
 | |
| [credo]: https://github.com/rrrene/credo
 | |
| [tiny-devicons-auto-colors]: https://github.com/rachartier/tiny-devicons-auto-colors.nvim
 | |
| 
 | |
| - 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 `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 or `programs.nvf.enable`.
 | |
| 
 | |
|   - `nvf-print-config` will display your `init.lua`, in full.
 | |
|   - `nvf-print-config-path` will 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.lualine` to allow fine-tuning breadcrumbs behaviour on
 | |
|   Lualine. Only `vim.ui.breadcrumbs.lualine.winbar` is supported for the time
 | |
|   being.
 | |
| 
 | |
|   - [](#opt-vim.ui.breadcrumbs.lualine.winbar.enable) has been added to allow
 | |
|     controlling the default behaviour of the `nvim-navic` component on Lualine,
 | |
|     which used to occupy `winbar.lualine_c` as long as breadcrumbs are enabled.
 | |
|   - `vim.ui.breadcrumbs.alwaysRender` has been renamed to
 | |
|     [](#opt-vim.ui.breadcrumbs.lualine.winbar.alwaysRender) to be conform to the
 | |
|     new format.
 | |
| 
 | |
| - Add [basedpyright](https://github.com/detachhead/basedpyright) as a Python LSP
 | |
|   server and make it default.
 | |
| 
 | |
| - Add [python-lsp-server](https://github.com/python-lsp/python-lsp-server) as an
 | |
|   additional Python LSP server.
 | |
| 
 | |
| - Add [](#opt-vim.options) to set `vim.o` values in in your nvf configuration
 | |
|   without using additional Lua. See option documentation for more details.
 | |
| 
 | |
| - Add [](#opt-vim.dashboard.dashboard-nvim.setupOpts) to allow user
 | |
|   configuration for [dashboard.nvim](https://github.com/nvimdev/dashboard-nvim)
 | |
| 
 | |
| - Update `lualine.nvim` input and add missing themes:
 | |
| 
 | |
|   - Adds `ayu`, `gruvbox_dark`, `iceberg`, `moonfly`, `onedark`,
 | |
|     `powerline_dark` and `solarized_light` themes.
 | |
| 
 | |
| - Add [](#opt-vim.spellcheck.extraSpellWords) to allow adding arbitrary
 | |
|   spellfiles to Neovim's runtime with ease.
 | |
| 
 | |
| - Add combined nvf configuration (`config.vim`) into the final package's
 | |
|   `passthru` as `passthru.neovimConfiguration` for easier debugging.
 | |
| 
 | |
| - Add support for [tiny-devicons-auto-colors] under
 | |
|   `vim.visuals.tiny-devicons-auto-colors`
 | |
| 
 | |
| - Move options that used to set `vim.o` values (e.g. `vim.wordWrap`) into
 | |
|   `vim.options` as default values. Some are left as they don't have a direct
 | |
|   equivalent, but expect a switch eventually.
 | |
| 
 | |
| [ppenguin](https://github.com/ppenguin):
 | |
| 
 | |
| - Telescope:
 | |
|   - Fixed `project-nvim` command and keybinding
 | |
|   - Added default ikeybind/command for `Telescope resume` (`<leader>fr`)
 | |
| - Add `hcl` lsp/formatter (not the same as `terraform`, which is not useful for
 | |
|   e.g. `nomad` config files).
 | |
| 
 | |
| [Soliprem](https://github.com/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 [which-key](https://github.com/folke/which-key.nvim) 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`
 | |
| 
 | |
| [Bloxx12](https://github.com/Bloxx12)
 | |
| 
 | |
| - Add support for [base16 theming](https://github.com/RRethy/base16-nvim) under
 | |
|   `vim.theme`
 | |
| - Fix internal breakage in `elixir-tools` setup.
 | |
| 
 | |
| [ksonj](https://github.com/ksonj):
 | |
| 
 | |
| - Add LSP support for Scala via
 | |
|   [nvim-metals](https://github.com/scalameta/nvim-metals)
 | |
| 
 | |
| [nezia1](https://github.com/nezia1):
 | |
| 
 | |
| - Add [biome](https://github.com/biomejs/biome) support for Typescript, CSS and
 | |
|   Svelte. Enable them via [](#opt-vim.languages.ts.format.type),
 | |
|   [](#opt-vim.languages.css.format.type) and
 | |
|   [](#opt-vim.languages.svelte.format.type) respectively.
 | |
| - Replace [nixpkgs-fmt](https://github.com/nix-community/nixpkgs-fmt) with
 | |
|   [nixfmt](https://github.com/NixOS/nixfmt) (nixfmt-rfc-style).
 | |
| 
 | |
| [Nowaaru](https://github.com/Nowaaru):
 | |
| 
 | |
| - Add `precognition-nvim`.
 | |
| 
 | |
| [DamitusThyYeeticus123](https://github.com/DamitusThyYeetus123):
 | |
| 
 | |
| - Add support for [Astro](https://astro.build/) language server.
 | 
