Compare commits

...

11 commits

Author SHA1 Message Date
Ching Pei Yang
957b3606dd
Merge 8154c3e68f into 3299facbaa 2024-10-05 17:44:45 +00:00
Ching Pei Yang
8154c3e68f
fixup! mappings: impl keymap option 2024-10-05 19:44:39 +02:00
Ching Pei Yang
f4ff635a65
map: remove redundant variable 2024-10-05 19:44:39 +02:00
Ching Pei Yang
40e5e5079e
map: fix misinformation 2024-10-05 19:21:00 +02:00
raf
3299facbaa
Merge branch 'main' into v0.7 2024-10-05 13:48:20 +00:00
Charlie Root
bdf777dc8a
feature: add base16 support (#389)
* modules: add base16 Theming support

theme/theme.nix: fix formatting

supported-themes.nix: formatting

clean up base16-colors.nix

theme: fix plugin setup, change base16 flake input

* theme/theme.nix: fix formatting

* types/theme.nix: add check regex matching

types/theme.nix: fixed regex matching

* lib/types: rename custom.nix to types.nix, mov theme.nix into types.nix

* plugins/theme: apply requested changes

types/types.nix: remove unneeded inherit

theme/theme.nix: remove commented inherit

* theme/theme.nix: fix up base16 helper func

Co-authored-by: diniamo <55629891+diniamo@users.noreply.github.com>

* theme/theme.nix: move listToAttrs inheriting, fix base16-colors declaration

* theme/theme.nix: add documentation to vim.theme.name

* release-notes/rl-0.7.md: add changelog entry for base16

* theme/theme.nix: fix documentation rendering

---------

Co-authored-by: diniamo <55629891+diniamo@users.noreply.github.com>
2024-10-05 16:47:33 +03:00
poz
cc14a1c1f6
plugins/neo-tree: fix file icons (#397)
Some checks failed
Set up binary cache / cachix (default) (push) Has been cancelled
Set up binary cache / cachix (maximal) (push) Has been cancelled
Set up binary cache / cachix (nix) (push) Has been cancelled
Validate flake & check documentation / Validate Flake Documentation (docs) (push) Has been cancelled
Validate flake & check documentation / Validate Flake Documentation (docs-html) (push) Has been cancelled
Validate flake & check documentation / Validate Flake Documentation (docs-json) (push) Has been cancelled
Validate flake & check documentation / Validate Flake Documentation (docs-manpages) (push) Has been cancelled
Validate flake & check formatting / Validate Flake (push) Has been cancelled
Validate flake & check formatting / Formatting via Alejandra (push) Has been cancelled
Build and deploy documentation / Check latest commit (push) Has been cancelled
Build and deploy documentation / publish (push) Has been cancelled
2024-10-04 17:00:17 +03:00
diniamo
108cfd8383
themes/catppuccin: enable navic integration (#395)
Some checks failed
Set up binary cache / cachix (default) (push) Has been cancelled
Set up binary cache / cachix (maximal) (push) Has been cancelled
Set up binary cache / cachix (nix) (push) Has been cancelled
Validate flake & check formatting / Validate Flake (push) Has been cancelled
Validate flake & check formatting / Formatting via Alejandra (push) Has been cancelled
Build and deploy documentation / Check latest commit (push) Has been cancelled
Build and deploy documentation / publish (push) Has been cancelled
2024-10-02 19:21:45 +03:00
raf
9ea9995b92
statusline/lualine: update & add missing themes (#393)
Some checks failed
Set up binary cache / cachix (default) (push) Has been cancelled
Set up binary cache / cachix (maximal) (push) Has been cancelled
Set up binary cache / cachix (nix) (push) Has been cancelled
Validate flake & check documentation / Validate Flake Documentation (docs) (push) Has been cancelled
Validate flake & check documentation / Validate Flake Documentation (docs-html) (push) Has been cancelled
Validate flake & check documentation / Validate Flake Documentation (docs-json) (push) Has been cancelled
Validate flake & check documentation / Validate Flake Documentation (docs-manpages) (push) Has been cancelled
Validate flake & check formatting / Validate Flake (push) Has been cancelled
Validate flake & check formatting / Formatting via Alejandra (push) Has been cancelled
Build and deploy documentation / Check latest commit (push) Has been cancelled
Build and deploy documentation / publish (push) Has been cancelled
* statusline/lualine: update & add missing themes

* docs: document lualine update
2024-10-01 08:18:29 +03:00
7417c6e4f3
docs: fix missing documentation link in README 2024-10-01 08:12:06 +03:00
3cba3ca30c
statusline/lualine: disable LSP indicator on neo-tree
Some checks failed
Set up binary cache / cachix (default) (push) Has been cancelled
Set up binary cache / cachix (maximal) (push) Has been cancelled
Set up binary cache / cachix (nix) (push) Has been cancelled
Validate flake & check formatting / Validate Flake (push) Has been cancelled
Validate flake & check formatting / Formatting via Alejandra (push) Has been cancelled
Build and deploy documentation / Check latest commit (push) Has been cancelled
Build and deploy documentation / publish (push) Has been cancelled
2024-09-30 01:10:33 +03:00
12 changed files with 119 additions and 41 deletions

8
.github/README.md vendored
View file

@ -124,10 +124,16 @@ The _recommended_ way of installing **nvf** is using either the NixOS or the
Home-Manager module, though it is completely possible and no less supported to Home-Manager module, though it is completely possible and no less supported to
install **nvf** as a standalone package, or a flake output. install **nvf** as a standalone package, or a flake output.
See the [**nvf** manual] for detailed and up-to-date installation guides, See the rendered [nvf manual] for detailed and up-to-date installation guides,
configurations, available options, release notes and more. Tips for installing configurations, available options, release notes and more. Tips for installing
userspace plugins is also contained in the documentation. userspace plugins is also contained in the documentation.
> [!TIP]
> While using NixOS or Home-Manager modules,
> `programs.nvf.enableManpages = true;` will allow you to view option
> documentation from the comfort of your terminal via `man 5 nvf`. The more you
> know.
Please create an issue on the [issue tracker] if you find the documentation Please create an issue on the [issue tracker] if you find the documentation
lacking or confusing. Any improvements to the documentation through pull lacking or confusing. Any improvements to the documentation through pull
requests are also welcome, and appreciated. requests are also welcome, and appreciated.

View file

@ -106,13 +106,16 @@ everyone.
[ocaml-lsp]: https://github.com/ocaml/ocaml-lsp [ocaml-lsp]: https://github.com/ocaml/ocaml-lsp
[new-file-template.nvim]: https://github.com/otavioschwanck/new-file-template.nvim [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 - Add [ocaml-lsp] support
- Fix "Emac" typo - Fix "Emac" typo
- Add [new-file-template.nvim] to automatically fill new file contents using - Add [new-file-template.nvim] to automatically fill new file contents using
templates. templates
- Make [neo-tree.nvim] display file icons properly by enabling `visuals.nvimWebDevicons`
[diniamo](https://github.com/diniamo): [diniamo](https://github.com/diniamo):
@ -221,6 +224,10 @@ everyone.
- Add [](#opt-vim.dashboard.dashboard-nvim.setupOpts) to allow user - Add [](#opt-vim.dashboard.dashboard-nvim.setupOpts) to allow user
configuration for [dashboard.nvim](https://github.com/nvimdev/dashboard-nvim) 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.
[ppenguin](https://github.com/ppenguin): [ppenguin](https://github.com/ppenguin):
- Telescope: - Telescope:
@ -232,3 +239,8 @@ everyone.
- Add LSP and Treesitter support for R under `vim.languages.R`. - Add LSP and Treesitter support for R under `vim.languages.R`.
- Add Otter support under `vim.lsp.otter` and an assert to prevent conflict with - Add Otter support under `vim.lsp.otter` and an assert to prevent conflict with
ccc ccc
[Bloxx12](https://github.com/Bloxx12)
- Add support for [base16 theming](https://github.com/RRethy/base16-nvim) under
`vim.theme`

23
flake.lock generated
View file

@ -172,6 +172,22 @@
"type": "github" "type": "github"
} }
}, },
"plugin-base16": {
"flake": false,
"locked": {
"lastModified": 1716483968,
"narHash": "sha256-GRF/6AobXHamw8TZ3FjL7SI6ulcpwpcohsIuZeCSh2A=",
"owner": "rrethy",
"repo": "base16-nvim",
"rev": "6ac181b5733518040a33017dde654059cd771b7c",
"type": "github"
},
"original": {
"owner": "rrethy",
"repo": "base16-nvim",
"type": "github"
}
},
"plugin-bufdelete-nvim": { "plugin-bufdelete-nvim": {
"flake": false, "flake": false,
"locked": { "locked": {
@ -799,11 +815,11 @@
"plugin-lualine": { "plugin-lualine": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1712310396, "lastModified": 1723473562,
"narHash": "sha256-WcH2dWdRDgMkwBQhcgT+Z/ArMdm+VbRhmQftx4t2kNI=", "narHash": "sha256-gCm7m96PkZyrgjmt7Efc+NMZKStAq1zr7JRCYOgGDuE=",
"owner": "hoob3rt", "owner": "hoob3rt",
"repo": "lualine.nvim", "repo": "lualine.nvim",
"rev": "0a5a66803c7407767b799067986b4dc3036e1983", "rev": "b431d228b7bbcdaea818bdc3e25b8cdbe861f056",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -1802,6 +1818,7 @@
"nixpkgs": "nixpkgs", "nixpkgs": "nixpkgs",
"nmd": "nmd", "nmd": "nmd",
"plugin-alpha-nvim": "plugin-alpha-nvim", "plugin-alpha-nvim": "plugin-alpha-nvim",
"plugin-base16": "plugin-base16",
"plugin-bufdelete-nvim": "plugin-bufdelete-nvim", "plugin-bufdelete-nvim": "plugin-bufdelete-nvim",
"plugin-catppuccin": "plugin-catppuccin", "plugin-catppuccin": "plugin-catppuccin",
"plugin-ccc": "plugin-ccc", "plugin-ccc": "plugin-ccc",

View file

@ -349,6 +349,11 @@
}; };
# Themes # Themes
plugin-base16 = {
url = "github:rrethy/base16-nvim";
flake = false;
};
plugin-tokyonight = { plugin-tokyonight = {
url = "github:folke/tokyonight.nvim"; url = "github:folke/tokyonight.nvim";
flake = false; flake = false;

View file

@ -6,10 +6,10 @@
typesDag = import ./dag.nix {inherit lib;}; typesDag = import ./dag.nix {inherit lib;};
typesPlugin = import ./plugins.nix {inherit inputs lib;}; typesPlugin = import ./plugins.nix {inherit inputs lib;};
typesLanguage = import ./languages.nix {inherit lib;}; typesLanguage = import ./languages.nix {inherit lib;};
typesCustom = import ./custom.nix {inherit lib;}; typesTypes = import ./types.nix {inherit lib;};
in { in {
inherit (typesDag) dagOf; inherit (typesDag) dagOf;
inherit (typesPlugin) pluginsOpt extraPluginType mkPluginSetupOption luaInline pluginType borderType; inherit (typesPlugin) pluginsOpt extraPluginType mkPluginSetupOption luaInline pluginType borderType;
inherit (typesLanguage) diagnostics mkGrammarOption; inherit (typesLanguage) diagnostics mkGrammarOption;
inherit (typesCustom) anythingConcatLists char; inherit (typesTypes) anythingConcatLists char hexColor;
} }

View file

@ -1,8 +1,9 @@
{lib}: let {lib}: let
inherit (lib) isStringLike showOption showFiles getFiles mergeOneOption mergeEqualOption mkOptionType; inherit (lib) isStringLike showOption showFiles getFiles mergeOneOption mergeEqualOption mkOptionType;
inherit (lib.strings) isString;
inherit (lib.types) anything attrsOf; inherit (lib.types) anything attrsOf;
inherit (lib.nvim.types) anythingConcatLists; inherit (lib.nvim.types) anythingConcatLists;
inherit (builtins) typeOf isAttrs any head concatLists stringLength; inherit (builtins) typeOf isAttrs any head concatLists stringLength match;
in { in {
# HACK: Does this break anything in our case? # HACK: Does this break anything in our case?
# A modified version of the nixpkgs anything type that concatenates lists # A modified version of the nixpkgs anything type that concatenates lists
@ -58,4 +59,11 @@ in {
check = value: stringLength value < 2; check = value: stringLength value < 2;
merge = mergeEqualOption; merge = mergeEqualOption;
}; };
hexColor = mkOptionType {
name = "hex-color";
descriptionClass = "noun";
description = "RGB color in hex format";
check = v: isString v && (match "#?[0-9a-fA-F]{6}" v) != null;
};
} }

View file

@ -1,6 +1,6 @@
{lib, ...}: let {lib, ...}: let
inherit (lib.options) mkOption; inherit (lib.options) mkOption;
inherit (lib.types) either str listOf attrsOf nullOr submodule bool; inherit (lib.types) either str listOf attrsOf nullOr submodule;
inherit (lib.nvim.config) mkBool; inherit (lib.nvim.config) mkBool;
mapConfigOptions = { mapConfigOptions = {
@ -33,9 +33,7 @@
// { // {
key = mkOption { key = mkOption {
type = str; type = str;
description = '' description = "The key that triggers this keybind.";
Key that triggers this keybind.
'';
}; };
mode = mkOption { mode = mkOption {
type = either str (listOf str); type = either str (listOf str);
@ -44,20 +42,17 @@
See `:help map-modes` for a list of modes. See `:help map-modes` for a list of modes.
''; '';
example = ''"nvc" for normal, visual and command mode''; example = ''`["n" "v" "c"]` for normal, visual and command mode'';
}; };
}; };
}; };
# legacy stuff legacyMapOption = mode:
legacyMapOption = submodule {
options = mapConfigOptions;
};
mapOptions = mode:
mkOption { mkOption {
description = "Mappings for ${mode} mode"; description = "Mappings for ${mode} mode";
type = attrsOf legacyMapOption; type = attrsOf (submodule {
options = mapConfigOptions;
});
default = {}; default = {};
}; };
in { in {
@ -85,18 +80,18 @@ in {
}; };
maps = { maps = {
normal = mapOptions "normal"; normal = legacyMapOption "normal";
insert = mapOptions "insert"; insert = legacyMapOption "insert";
select = mapOptions "select"; select = legacyMapOption "select";
visual = mapOptions "visual and select"; visual = legacyMapOption "visual and select";
terminal = mapOptions "terminal"; terminal = legacyMapOption "terminal";
normalVisualOp = mapOptions "normal, visual, select and operator-pending (same as plain 'map')"; normalVisualOp = legacyMapOption "normal, visual, select and operator-pending (same as plain 'map')";
visualOnly = mapOptions "visual only"; visualOnly = legacyMapOption "visual only";
operator = mapOptions "operator-pending"; operator = legacyMapOption "operator-pending";
insertCommand = mapOptions "insert and command-line"; insertCommand = legacyMapOption "insert and command-line";
lang = mapOptions "insert, command-line and lang-arg"; lang = legacyMapOption "insert, command-line and lang-arg";
command = mapOptions "command-line"; command = legacyMapOption "command-line";
}; };
}; };
} }

View file

@ -20,6 +20,8 @@ in {
"neo-tree-nvim" "neo-tree-nvim"
]; ];
visuals.nvimWebDevicons.enable = true;
pluginRC.neo-tree = entryAnywhere '' pluginRC.neo-tree = entryAnywhere ''
require("neo-tree").setup(${toLuaObject cfg.setupOpts}) require("neo-tree").setup(${toLuaObject cfg.setupOpts})
''; '';

View file

@ -17,29 +17,36 @@
"ayu_dark" "ayu_dark"
"ayu_light" "ayu_light"
"ayu_mirage" "ayu_mirage"
"ayu"
"codedark" "codedark"
"dracula" "dracula"
"everforest" "everforest"
"gruvbox" "gruvbox"
"gruvbox_dark"
"gruvbox_light" "gruvbox_light"
"gruvbox_material" "gruvbox_material"
"horizon" "horizon"
"iceberg_dark" "iceberg_dark"
"iceberg_light" "iceberg_light"
"iceberg"
"jellybeans" "jellybeans"
"material" "material"
"modus_vivendi" "modus_vivendi"
"molokai" "molokai"
"moonfly"
"nightfly" "nightfly"
"nord" "nord"
"oceanicnext" "oceanicnext"
"onedark"
"onelight" "onelight"
"palenight" "palenight"
"papercolor_dark" "papercolor_dark"
"papercolor_light" "papercolor_light"
"powerline_dark"
"powerline" "powerline"
"seoul256" "seoul256"
"solarized_dark" "solarized_dark"
"solarized_light"
"tomorrow" "tomorrow"
"wombat" "wombat"
]; ];
@ -224,7 +231,7 @@ in {
local buf_ft = vim.api.nvim_get_option_value('filetype', {}) local buf_ft = vim.api.nvim_get_option_value('filetype', {})
-- List of buffer types to exclude -- List of buffer types to exclude
local excluded_buf_ft = {"toggleterm", "NvimTree", "TelescopePrompt"} local excluded_buf_ft = {"toggleterm", "NvimTree", "neo-tree", "TelescopePrompt"}
-- Check if the current buffer type is in the excluded list -- Check if the current buffer type is in the excluded list
for _, excluded_type in ipairs(excluded_buf_ft) do for _, excluded_type in ipairs(excluded_buf_ft) do

View file

@ -4,7 +4,14 @@
}: let }: let
inherit (lib.strings) optionalString; inherit (lib.strings) optionalString;
inherit (lib.trivial) boolToString warnIf; inherit (lib.trivial) boolToString warnIf;
inherit (lib.nvim.lua) toLuaObject;
in { in {
base16 = {
setup = {base16-colors, ...}: ''
-- Base16 theme
require('base16-colorscheme').setup(${toLuaObject base16-colors})
'';
};
onedark = { onedark = {
setup = {style ? "dark", ...}: '' setup = {style ? "dark", ...}: ''
-- OneDark theme -- OneDark theme
@ -20,6 +27,7 @@ in {
setup = { setup = {
style ? "night", style ? "night",
transparent, transparent,
...
}: '' }: ''
require('tokyonight').setup { require('tokyonight').setup {
transparent = ${boolToString transparent}; transparent = ${boolToString transparent};
@ -42,6 +50,7 @@ in {
setup = { setup = {
style ? "mocha", style ? "mocha",
transparent ? false, transparent ? false,
...
}: '' }: ''
-- Catppuccin theme -- Catppuccin theme
require('catppuccin').setup { require('catppuccin').setup {
@ -69,7 +78,7 @@ in {
notify = true, -- nvim-notify notify = true, -- nvim-notify
which_key = true, which_key = true,
navic = { navic = {
enabled = false, enabled = true,
custom_bg = "NONE", -- "lualine" will set background to mantle custom_bg = "NONE", -- "lualine" will set background to mantle
}, },
}, },

View file

@ -4,32 +4,51 @@
... ...
}: let }: let
inherit (lib.options) mkOption; inherit (lib.options) mkOption;
inherit (lib.attrsets) attrNames; inherit (lib.attrsets) attrNames listToAttrs;
inherit (lib.strings) hasPrefix;
inherit (lib.types) bool lines enum; inherit (lib.types) bool lines enum;
inherit (lib.modules) mkIf; inherit (lib.modules) mkIf;
inherit (lib.nvim.dag) entryBefore; inherit (lib.nvim.dag) entryBefore;
inherit (lib.nvim.types) hexColor;
cfg = config.vim.theme; cfg = config.vim.theme;
supportedThemes = import ./supported-themes.nix { supportedThemes = import ./supported-themes.nix {
inherit lib config; inherit lib config;
}; };
numbers = ["0" "1" "2" "3" "4" "5" "6" "7" "8" "9" "A" "B" "C" "D" "E" "F"];
base16Options = listToAttrs (map (n: {
name = "base0${n}";
value = mkOption {
description = "The base0${n} color to use";
type = hexColor;
apply = v:
if hasPrefix "#" v
then v
else "#${v}";
};
})
numbers);
in { in {
options.vim.theme = { options.vim.theme = {
enable = mkOption { enable = mkOption {
type = bool; type = bool;
description = "Enable theming"; description = "Enable theming";
}; };
name = mkOption { name = mkOption {
type = enum (attrNames supportedThemes); type = enum (attrNames supportedThemes);
description = "Supported themes can be found in `supportedThemes.nix`"; description = ''
Supported themes can be found in {file}`supportedThemes.nix`.
Setting the theme to "base16" enables base16 theming and
requires all of the colors in {option}`vim.theme.base16-colors` to be set.
'';
}; };
base16-colors = base16Options;
style = mkOption { style = mkOption {
type = enum supportedThemes.${cfg.name}.styles; type = enum supportedThemes.${cfg.name}.styles;
description = "Specific style for theme if it supports it"; description = "Specific style for theme if it supports it";
}; };
transparent = mkOption { transparent = mkOption {
type = bool; type = bool;
default = false; default = false;
@ -47,7 +66,7 @@ in {
startPlugins = [cfg.name]; startPlugins = [cfg.name];
luaConfigRC.theme = entryBefore ["pluginConfigs"] '' luaConfigRC.theme = entryBefore ["pluginConfigs"] ''
${cfg.extraConfig} ${cfg.extraConfig}
${supportedThemes.${cfg.name}.setup {inherit (cfg) style transparent;}} ${supportedThemes.${cfg.name}.setup {inherit (cfg) style transparent base16-colors;}}
''; '';
}; };
}; };

View file

@ -43,9 +43,7 @@ in {
toLuaKeymap = bind: "vim.keymap.set(${toLuaObject bind.mode}, ${toLuaObject bind.key}, ${toLuaObject (getAction bind)}, ${toLuaObject (getOpts bind)})"; toLuaKeymap = bind: "vim.keymap.set(${toLuaObject bind.mode}, ${toLuaObject bind.key}, ${toLuaObject (getAction bind)}, ${toLuaObject (getOpts bind)})";
maps = concatLines (map toLuaKeymap cfg.keymaps); keymaps = concatLines (map toLuaKeymap cfg.keymaps);
keymaps = maps;
in { in {
vim = { vim = {
luaConfigRC = { luaConfigRC = {