mirror of
https://github.com/NotAShelf/nvf.git
synced 2025-10-02 15:03:32 +00:00
docs: restructure to allow a clean migration to new documentation util
Signed-off-by: NotAShelf <raf@notashelf.dev> Change-Id: I6a6a6964afba43bdda6a2cbf037404ca3fa4f8c9
This commit is contained in:
parent
6e1d539712
commit
b9dd1b816a
27 changed files with 760 additions and 898 deletions
390
docs/manual/release-notes/rl-0.7.md
Normal file
390
docs/manual/release-notes/rl-0.7.md
Normal file
|
@ -0,0 +1,390 @@
|
|||
# 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.
|
Loading…
Add table
Add a link
Reference in a new issue