mirror of
https://github.com/NotAShelf/nvf.git
synced 2025-09-06 10:21:31 +00:00
treewide: make the entire generated config lua based (#333)
* modules: switch to gerg's neovim-wrapper * modules: use initViml instead of writing the file * treewide: make the entire generated config lua based * docs: remove mentions of configRC * plugins/treesitter: remove vim.cmd hack * treewide: move resolveDag to lib * modules/wrapper(rc): fix typo * treewide: migrate to pluginRC for correct DAG order The "new" DAG order is as follows: - (luaConfigPre) - globalsScript - basic - theme - pluginConfigs - extraPluginConfigs - mappings - (luaConfigPost) * plugins/theme: fix theme DAG place * plugins/theme: fix fixed theme DAG place * modules/wrapper(rc): add removed option module for configRC * docs: add dag-entries chapter, add release note entry * fix: formatting CI * languages/nix: add missing `local` * docs: fix page link * docs: add mention of breaking changes at the start of the release notes * plugins/neo-tree: convert to pluginRC * modules/wrapper(rc): add back entryAnywhere * modules/wrapper(rc): expose pluginRC * apply raf patch --------- Co-authored-by: NotAShelf <raf@notashelf.dev>
This commit is contained in:
parent
cbff0e4715
commit
f9789432f9
84 changed files with 389 additions and 404 deletions
|
@ -5,4 +5,5 @@ configuring/custom-package.md
|
|||
configuring/custom-plugins.md
|
||||
configuring/languages.md
|
||||
configuring/dags.md
|
||||
configuring/dag-entries.md
|
||||
```
|
||||
|
|
|
@ -1,16 +1,38 @@
|
|||
# Configuring {#sec-configuring-plugins}
|
||||
|
||||
Just making the plugin to your Neovim configuration available might not always
|
||||
be enough. In that case, you can write custom vimscript or lua config, using
|
||||
either `config.vim.configRC` or `config.vim.luaConfigRC` respectively. Both of
|
||||
these options are attribute sets, and you need to give the configuration you're
|
||||
adding some name, like this:
|
||||
be enough. In that case, you can write custom lua config using either
|
||||
`config.vim.extraPlugins` (which has the `setup` field) or
|
||||
`config.vim.luaConfigRC`. The first option uses an attribute set, which maps DAG
|
||||
section names to a custom type, which has the fields `package`, `after`,
|
||||
`setup`. They allow you to set the package of the plugin, the sections its setup
|
||||
code should be after (note that the `extraPlugins` option has its own DAG
|
||||
scope), and the its setup code respectively. For example:
|
||||
|
||||
```nix
|
||||
config.vim.extraPlugins = with pkgs.vimPlugins; {
|
||||
aerial = {
|
||||
package = aerial-nvim;
|
||||
setup = "require('aerial').setup {}";
|
||||
};
|
||||
|
||||
harpoon = {
|
||||
package = harpoon;
|
||||
setup = "require('harpoon').setup {}";
|
||||
after = ["aerial"]; # place harpoon configuration after aerial
|
||||
};
|
||||
}
|
||||
```
|
||||
|
||||
The second option also uses an attribute set, but this one is resolved as a DAG
|
||||
directly. The attribute names denote the section names, and the values lua code.
|
||||
For example:
|
||||
|
||||
```nix
|
||||
{
|
||||
# this will create an "aquarium" section in your init.vim with the contents of your custom config
|
||||
# this will create an "aquarium" section in your init.lua with the contents of your custom config
|
||||
# which will be *appended* to the rest of your configuration, inside your init.vim
|
||||
config.vim.configRC.aquarium = "colorscheme aquiarum";
|
||||
config.vim.luaConfigRC.aquarium = "vim.cmd('colorscheme aquiarum')";
|
||||
}
|
||||
```
|
||||
|
||||
|
|
20
docs/manual/configuring/dag-entries.md
Normal file
20
docs/manual/configuring/dag-entries.md
Normal file
|
@ -0,0 +1,20 @@
|
|||
# DAG entries in nvf {#ch-dag-entries}
|
||||
|
||||
From the previous chapter, it should be clear that DAGs are useful, because you
|
||||
can add code that relies on other code. However, if you don't know what the
|
||||
entries are called, it's hard to do that, so here is a list of the internal
|
||||
entries in nvf:
|
||||
|
||||
`vim.luaConfigRC` (top-level DAG):
|
||||
|
||||
1. (`luaConfigPre`) - not a part of the actual DAG, instead, it's simply
|
||||
inserted before the rest of the DAG
|
||||
2. `globalsScript` - used to set globals defined in `vim.globals`
|
||||
3. `basic` - used to set basic configuration options
|
||||
4. `theme` - used to set up the theme, which has to be done before other plugins
|
||||
5. `pluginConfigs` - the result of the nested `vim.pluginRC` (internal option,
|
||||
see the [Custom Plugins](/index.xhtml#ch-custom-plugins) page for adding your own
|
||||
plugins) DAG, used to set up internal plugins
|
||||
6. `extraPluginConfigs` - the result of `vim.extraPlugins`, which is not a
|
||||
direct DAG, but is converted to, and resolved as one internally
|
||||
7. `mappings` - the result of `vim.maps`
|
|
@ -6,8 +6,8 @@ addition for certain options is the [**DAG
|
|||
type which is borrowed from home-manager's extended library. This type is most
|
||||
used for topologically sorting strings. The DAG type allows the attribute set
|
||||
entries to express dependency relations among themselves. This can, for
|
||||
example, be used to control the order of configuration sections in your
|
||||
`configRC` or `luaConfigRC`.
|
||||
example, be used to control the order of configuration sections in your
|
||||
`luaConfigRC`.
|
||||
|
||||
The below section, mostly taken from the [home-manager
|
||||
manual](https://raw.githubusercontent.com/nix-community/home-manager/master/docs/manual/writing-modules/types.md)
|
||||
|
|
|
@ -2,6 +2,28 @@
|
|||
|
||||
Release notes for release 0.7
|
||||
|
||||
## Breaking Changes and Migration Guide {#sec-breaking-changes-and-migration-guide-0-7}
|
||||
|
||||
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.
|
||||
|
||||
## Changelog {#sec-release-0.7-changelog}
|
||||
|
||||
[ItsSorae](https://github.com/ItsSorae):
|
||||
|
@ -12,8 +34,8 @@ Release notes for release 0.7
|
|||
[frothymarrow](https://github.com/frothymarrow):
|
||||
|
||||
- Modified type for
|
||||
[vim.visuals.fidget-nvim.setupOpts.progress.display.overrides](#opt-vim.visuals.fidget-nvim.setupOpts.progress.display.overrides)
|
||||
from `anything` to a `submodule` for better type checking.
|
||||
[](#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.
|
||||
|
||||
|
@ -21,30 +43,34 @@ Release notes for release 0.7
|
|||
group for `Normal`, `NormalFloat`, `LineNr`, `SignColumn` and optionally
|
||||
`NvimTreeNormal` to `none`.
|
||||
|
||||
- Fix
|
||||
[vim.ui.smartcolumn.setupOpts.custom_colorcolumn](#opt-vim.ui.smartcolumn.setupOpts.custom_colorcolumn)
|
||||
using the wrong type `int` instead of the expected type `string`.
|
||||
- Fix [](#opt-vim.ui.smartcolumn.setupOpts.custom_colorcolumn) using the wrong
|
||||
type `int` instead of the expected type `string`.
|
||||
|
||||
- Fix unused src and version attributes in `buildPlug`.
|
||||
|
||||
[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
|
||||
- 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](https://github.com/simrat39/rust-tools.nvim)
|
||||
to the more feature-packed [rustacean.nvim](https://github.com/mrcjkb/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.
|
||||
|
||||
[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
|
||||
|
||||
[jacekpoz](https://github.com/jacekpoz):
|
||||
|
||||
- Add [ocaml-lsp](https://github.com/ocaml/ocaml-lsp) support.
|
||||
[ocaml-lsp]: https://github.com/ocaml/ocaml-lsp
|
||||
|
||||
- Fix Emac typo
|
||||
- Add [ocaml-lsp] support
|
||||
|
||||
- Fix "Emac" typo
|
||||
|
||||
[diniamo](https://github.com/diniamo):
|
||||
|
||||
|
@ -66,6 +92,7 @@ Release notes for release 0.7
|
|||
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
|
||||
|
@ -74,9 +101,22 @@ Release notes for release 0.7
|
|||
yourself by adding `vim.opt.listchars:append({ eol = '<char>' })` to your
|
||||
lua configuration
|
||||
|
||||
[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.
|
||||
|
||||
[NotAShelf](https://github.com/notashelf):
|
||||
|
||||
[ts-error-translator.nvim]: https://github.com/dmmulroy/ts-error-translator.nvim
|
||||
[credo]: https://github.com/rrrene/credo
|
||||
|
||||
- Add `deno fmt` as the default Markdown formatter. This will be enabled
|
||||
automatically if you have autoformatting enabled, but can be disabled manually
|
||||
|
@ -87,8 +127,8 @@ Release notes for release 0.7
|
|||
|
||||
- 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](https://github.com/rrrene/credo) linter has been added
|
||||
to nixpkgs. A pull request is currently open.
|
||||
added once the [credo] linter has been added to nixpkgs. A pull request is
|
||||
currently open.
|
||||
|
||||
- Remove vim-tidal and friends.
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue