Compare commits

..

No commits in common. "4c3d2839a70cec4b6cb7671a2b64c83d11902b22" and "1545fa0517836b2807cc06a07ebdcec6a6a2a428" have entirely different histories.

6 changed files with 22 additions and 60 deletions

View file

@ -5,19 +5,16 @@ 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 are called, it's hard to do that, so here is a list of the internal
entries in nvf: entries in nvf:
## `vim.luaConfigRC` (top-level DAG) {#ch-vim-luaconfigrc} `vim.luaConfigRC` (top-level DAG):
1. (`luaConfigPre`) - not a part of the actual DAG, instead, it's simply 1. (`luaConfigPre`) - not a part of the actual DAG, instead, it's simply
inserted before the rest of the DAG inserted before the rest of the DAG
2. `globalsScript` - used to set globals defined in `vim.globals` 2. `globalsScript` - used to set globals defined in `vim.globals`
3. `basic` - used to set basic configuration options 3. `basic` - used to set basic configuration options
4. `optionsScript` - used to set options defined in `vim.o` 4. `theme` (this is simply placed before `pluginConfigs`, meaning that surrounding entries don't depend on it) - used to set up the theme, which has to be done before other plugins
5. `theme` (this is simply placed before `pluginConfigs`, meaning that 5. `pluginConfigs` - the result of the nested `vim.pluginRC` (internal option,
surrounding entries don't depend on it) - used to set up the theme, which has see the [Custom Plugins](/index.xhtml#ch-custom-plugins) page for adding your own
to be done before other plugins plugins) DAG, used to set up internal plugins
6. `pluginConfigs` - the result of the nested `vim.pluginRC` (internal option, 6. `extraPluginConfigs` - the result of `vim.extraPlugins`, which is not a
see the [Custom Plugins](/index.xhtml#ch-custom-plugins) page for adding your
own plugins) DAG, used to set up internal plugins
7. `extraPluginConfigs` - the result of `vim.extraPlugins`, which is not a
direct DAG, but is converted to, and resolved as one internally direct DAG, but is converted to, and resolved as one internally
8. `mappings` - the result of `vim.maps` 7. `mappings` - the result of `vim.maps`

View file

@ -187,12 +187,6 @@ everyone.
- Add [python-lsp-server](https://github.com/python-lsp/python-lsp-server) as an - Add [python-lsp-server](https://github.com/python-lsp/python-lsp-server) as an
additional Python LSP server. 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)
[ppenguin](https://github.com/ppenguin): [ppenguin](https://github.com/ppenguin):
- Telescope: - Telescope:

View file

@ -5,17 +5,16 @@
}: let }: let
inherit (lib.modules) mkIf; inherit (lib.modules) mkIf;
inherit (lib.nvim.dag) entryAnywhere; inherit (lib.nvim.dag) entryAnywhere;
inherit (lib.nvim.lua) toLuaObject;
cfg = config.vim.dashboard.dashboard-nvim; cfg = config.vim.dashboard.dashboard-nvim;
in { in {
config = mkIf cfg.enable { config = mkIf cfg.enable {
vim = { vim.startPlugins = [
startPlugins = ["dashboard-nvim"]; "dashboard-nvim"
];
pluginRC.dashboard-nvim = entryAnywhere '' vim.pluginRC.dashboard-nvim = entryAnywhere ''
require("dashboard").setup(${toLuaObject cfg.setupOpts}) require("dashboard").setup{}
''; '';
};
}; };
} }

View file

@ -1,9 +1,7 @@
{lib, ...}: let {lib, ...}: let
inherit (lib.options) mkEnableOption; inherit (lib.options) mkEnableOption;
inherit (lib.nvim.types) mkPluginSetupOption;
in { in {
options.vim.dashboard.dashboard-nvim = { options.vim.dashboard.dashboard-nvim = {
enable = mkEnableOption "Fancy and Blazing Fast start screen plugin of neovim [dashboard.nvim]"; enable = mkEnableOption "Fancy and Blazing Fast start screen plugin of neovim [dashboard.nvim]";
setupOpts = mkPluginSetupOption "dashboard.nvim" {};
}; };
} }

View file

@ -80,11 +80,10 @@
maps); maps);
in { in {
config = let config = let
filterNonNull = attrs: filterAttrs (_: value: value != null) attrs;
globalsScript = globalsScript =
mapAttrsToList (name: value: "vim.g.${name} = ${toLuaObject value}") cfg.globals; mapAttrsToList (name: value: "vim.g.${name} = ${toLuaObject value}")
(filterNonNull cfg.globals);
optionsScript =
mapAttrsToList (name: value: "vim.o.${name} = ${toLuaObject value}") cfg.options;
extraPluginConfigs = resolveDag { extraPluginConfigs = resolveDag {
name = "extra plugin configs"; name = "extra plugin configs";
@ -133,12 +132,9 @@ in {
in { in {
vim = { vim = {
luaConfigRC = { luaConfigRC = {
# `vim.g` and `vim.o`
globalsScript = entryAnywhere (concatLines globalsScript); globalsScript = entryAnywhere (concatLines globalsScript);
optionsScript = entryAfter ["basic"] (concatLines optionsScript); # basic
pluginConfigs = entryAfter ["basic"] pluginConfigs;
# Basic
pluginConfigs = entryAfter ["optionsScript"] pluginConfigs;
extraPluginConfigs = entryAfter ["pluginConfigs"] extraPluginConfigs; extraPluginConfigs = entryAfter ["pluginConfigs"] extraPluginConfigs;
mappings = entryAfter ["extraPluginConfigs"] mappings; mappings = entryAfter ["extraPluginConfigs"] mappings;
}; };

View file

@ -129,38 +129,16 @@ in {
globals = mkOption { globals = mkOption {
type = attrs; type = attrs;
default = {}; default = {};
example = {"some_variable" = 42;};
description = '' description = ''
An attribute set containing global variable values An attribute set containing global variable values
for storing vim variables as early as possible. If for storing vim variables as early as possible. If
populated, this option will set vim variables in the populated, this option will set vim variables in the
built luaConfigRC as the first item. built luaConfigRC as the first item.
::: {.note} E.g. {foo = "bar"} will set `vim.g.foo` to "bar" where
`{foo = "bar";}` will set `vim.g.foo` to "bar", where the type of `bar` in the resulting vimscript will be
the type of `bar` in the resulting Lua value will be infered from the type of the value in the `{name = value}`
inferred from the type of the value in the `{name = value;}` pair.
pair passed to the option.
:::
'';
};
options = mkOption {
type = attrs;
default = {};
example = {visualbell = true;};
description = ''
An attribute set containing vim options to be set
as early as possible. If populated, this option will
set vim options in the built luaConfigRC after `basic`
and before `pluginConfigs` DAG entries.
::: {.note}
`{foo = "bar";}` will set `vim.o.foo` to "bar", where
the type of `bar` in the resulting Lua value will be
inferred from the type of the value in the`{name = value;}`
pair passed to the option.
:::
''; '';
}; };