mirror of
https://github.com/NotAShelf/nvf.git
synced 2024-12-29 06:02:23 +00:00
NotAShelf
0650aa31ac
Deprecate shorthand EditorConfig toggle, and encourage the more powerful `vim.globals` option.
394 lines
16 KiB
Markdown
394 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
|
|
|
|
[jacekpoz](https://jacekpoz.pl):
|
|
|
|
[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.
|
|
|
|
- Deprecated `vim.enableEditorconfig` in favor of
|
|
[](#opt-vim.globals.editorconfig).
|
|
|
|
[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.
|