mirror of
https://github.com/NotAShelf/nvf.git
synced 2025-12-08 13:13:55 +00:00
Compare commits
2 commits
dde524f7cc
...
3e48f13c3c
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3e48f13c3c |
||
|
|
3ace0780dd |
9 changed files with 60 additions and 98 deletions
1
.github/typos.toml
vendored
1
.github/typos.toml
vendored
|
|
@ -9,5 +9,6 @@ default.extend-ignore-words-re = [
|
||||||
"edn",
|
"edn",
|
||||||
"esy",
|
"esy",
|
||||||
"BA", # somehow "BANanaD3V" is valid, but BA is not...
|
"BA", # somehow "BANanaD3V" is valid, but BA is not...
|
||||||
|
"Emac"
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -170,7 +170,7 @@ The changes are, in no particular order:
|
||||||
|
|
||||||
- Add [ocaml-lsp] support
|
- Add [ocaml-lsp] support
|
||||||
|
|
||||||
- Fix "Emac" typo
|
- Fix misspelled "Emacs"
|
||||||
|
|
||||||
- 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
|
||||||
|
|
|
||||||
|
|
@ -569,8 +569,7 @@
|
||||||
[typst-concealer]: https://github.com/PartyWumpus/typst-concealer
|
[typst-concealer]: https://github.com/PartyWumpus/typst-concealer
|
||||||
|
|
||||||
- Add inline typst concealing support under `vim.languages.typst` using
|
- Add inline typst concealing support under `vim.languages.typst` using
|
||||||
[typst-concealer].
|
[typst-concealer]. [simon-wg](https://github.com/simon-wg):
|
||||||
[simon-wg](https://github.com/simon-wg):
|
|
||||||
|
|
||||||
- Update `python` language module to use correct lsp binary.
|
- Update `python` language module to use correct lsp binary.
|
||||||
- Fix `python` pyright and basedpyright language servers not using default on
|
- Fix `python` pyright and basedpyright language servers not using default on
|
||||||
|
|
|
||||||
130
lib/lua.nix
130
lib/lua.nix
|
|
@ -1,92 +1,52 @@
|
||||||
# Helpers for converting values to lua
|
# Helpers for converting values to lua
|
||||||
{lib}: let
|
{lib}: let
|
||||||
inherit (builtins) hasAttr head throw typeOf isList isAttrs isBool isInt isString isPath isFloat toJSON;
|
|
||||||
inherit (lib.attrsets) mapAttrsToList filterAttrs;
|
|
||||||
inherit (lib.strings) concatStringsSep concatMapStringsSep stringToCharacters;
|
|
||||||
inherit (lib.trivial) boolToString warn;
|
|
||||||
in rec {
|
|
||||||
# Convert a null value to lua's nil
|
|
||||||
nullString = value:
|
|
||||||
if value == null
|
|
||||||
then "nil"
|
|
||||||
else "'${value}'";
|
|
||||||
|
|
||||||
# convert an expression to lua
|
|
||||||
expToLua = exp:
|
|
||||||
if isList exp
|
|
||||||
then listToLuaTable exp # if list, convert to lua table
|
|
||||||
else if isAttrs exp
|
|
||||||
then attrsetToLuaTable exp # if attrs, convert to table
|
|
||||||
else if isBool exp
|
|
||||||
then boolToString exp # if bool, convert to string
|
|
||||||
else if isInt exp
|
|
||||||
then toString exp # if int, convert to string
|
|
||||||
else if exp == null
|
|
||||||
then "nil"
|
|
||||||
else (toJSON exp); # otherwise jsonify the value and print as is
|
|
||||||
|
|
||||||
# convert list to a lua table
|
|
||||||
listToLuaTable = list:
|
|
||||||
"{ " + (concatStringsSep ", " (map expToLua list)) + " }";
|
|
||||||
|
|
||||||
# convert attrset to a lua table
|
|
||||||
attrsetToLuaTable = attrset:
|
|
||||||
"{ "
|
|
||||||
+ (
|
|
||||||
concatStringsSep ", "
|
|
||||||
(
|
|
||||||
mapAttrsToList (
|
|
||||||
name: value:
|
|
||||||
name
|
|
||||||
+ " = "
|
|
||||||
+ (expToLua value)
|
|
||||||
)
|
|
||||||
attrset
|
|
||||||
)
|
|
||||||
)
|
|
||||||
+ " }";
|
|
||||||
# Convert a list of lua expressions to a lua table. The difference to listToLuaTable is that the elements here are expected to be lua expressions already, whereas listToLuaTable converts from nix types to lua first
|
|
||||||
luaTable = items: ''{${concatStringsSep "," items}}'';
|
|
||||||
|
|
||||||
isLuaInline = object: (object._type or null) == "lua-inline";
|
isLuaInline = object: (object._type or null) == "lua-inline";
|
||||||
|
|
||||||
toLuaObject = args:
|
toLuaObject = args:
|
||||||
if isAttrs args
|
{
|
||||||
then
|
int = toString args;
|
||||||
if isLuaInline args
|
float = toString args;
|
||||||
|
|
||||||
|
# escapes \ and quotes
|
||||||
|
string = builtins.toJSON args;
|
||||||
|
path = builtins.toJSON args;
|
||||||
|
|
||||||
|
bool = lib.boolToString args;
|
||||||
|
null = "nil";
|
||||||
|
|
||||||
|
list = "{${lib.concatMapStringsSep ",\n" toLuaObject args}}";
|
||||||
|
|
||||||
|
set =
|
||||||
|
if lib.isDerivation args
|
||||||
|
then ''"${args}"''
|
||||||
|
else if isLuaInline args
|
||||||
then args.expr
|
then args.expr
|
||||||
else if hasAttr "__empty" args
|
else "{${
|
||||||
then
|
lib.pipe args [
|
||||||
warn ''
|
(lib.filterAttrs (_: v: v != null))
|
||||||
Using `__empty` to define an empty lua table is deprecated. Use an empty attrset instead.
|
(builtins.mapAttrs (
|
||||||
'' "{ }"
|
n: v:
|
||||||
else
|
if lib.hasPrefix "@" n
|
||||||
"{"
|
|
||||||
+ (concatStringsSep ","
|
|
||||||
(mapAttrsToList
|
|
||||||
(n: v:
|
|
||||||
if head (stringToCharacters n) == "@"
|
|
||||||
then toLuaObject v
|
then toLuaObject v
|
||||||
else "[${toLuaObject n}] = " + (toLuaObject v))
|
else "[${toLuaObject n}] = ${toLuaObject v}"
|
||||||
(filterAttrs
|
))
|
||||||
(_: v: v != null)
|
builtins.attrValues
|
||||||
args)))
|
(lib.concatStringsSep ",\n")
|
||||||
+ "}"
|
]
|
||||||
else if isList args
|
}}";
|
||||||
then "{" + concatMapStringsSep "," toLuaObject args + "}"
|
}
|
||||||
else if isString args
|
.${
|
||||||
then
|
builtins.typeOf args
|
||||||
# This should be enough!
|
}
|
||||||
toJSON args
|
or (builtins.throw "Could not convert object of type `${builtins.typeOf args}` to lua object");
|
||||||
else if isPath args
|
in
|
||||||
then toJSON (toString args)
|
{
|
||||||
else if isBool args
|
inherit isLuaInline toLuaObject;
|
||||||
then "${boolToString args}"
|
luaTable = x: (toLuaObject (map lib.mkLuaInline x));
|
||||||
else if isFloat args
|
}
|
||||||
then "${toString args}"
|
// lib.genAttrs [
|
||||||
else if isInt args
|
"nullString"
|
||||||
then "${toString args}"
|
"expToLua"
|
||||||
else if (args == null)
|
"listToLuaTable"
|
||||||
then "nil"
|
"attrsetToLuaTable"
|
||||||
else throw "could not convert object of type `${typeOf args}` to lua object";
|
] (name: lib.warn "${name} is deprecated use toLuaObject instead" toLuaObject)
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@
|
||||||
inherit (lib.strings) concatLines concatStringsSep optionalString;
|
inherit (lib.strings) concatLines concatStringsSep optionalString;
|
||||||
inherit (lib.attrsets) mapAttrsToList;
|
inherit (lib.attrsets) mapAttrsToList;
|
||||||
inherit (lib.types) listOf str attrsOf;
|
inherit (lib.types) listOf str attrsOf;
|
||||||
inherit (lib.nvim.lua) listToLuaTable;
|
inherit (lib.nvim.lua) toLuaObject;
|
||||||
inherit (lib.nvim.dag) entryAfter;
|
inherit (lib.nvim.dag) entryAfter;
|
||||||
|
|
||||||
cfg = config.vim.spellcheck;
|
cfg = config.vim.spellcheck;
|
||||||
|
|
@ -152,7 +152,7 @@ in {
|
||||||
vim.api.nvim_create_augroup("nvf_autocmds", {clear = false})
|
vim.api.nvim_create_augroup("nvf_autocmds", {clear = false})
|
||||||
vim.api.nvim_create_autocmd({ "FileType" }, {
|
vim.api.nvim_create_autocmd({ "FileType" }, {
|
||||||
group = "nvf_autocmds",
|
group = "nvf_autocmds",
|
||||||
pattern = ${listToLuaTable cfg.ignoredFiletypes},
|
pattern = ${toLuaObject cfg.ignoredFiletypes},
|
||||||
callback = function()
|
callback = function()
|
||||||
vim.opt_local.spell = false
|
vim.opt_local.spell = false
|
||||||
end,
|
end,
|
||||||
|
|
|
||||||
|
|
@ -93,7 +93,7 @@ in {
|
||||||
accept = mkOption {
|
accept = mkOption {
|
||||||
type = nullOr str;
|
type = nullOr str;
|
||||||
default = "<M-l>";
|
default = "<M-l>";
|
||||||
description = "Accept suggetion";
|
description = "Accept suggestion";
|
||||||
};
|
};
|
||||||
|
|
||||||
acceptWord = mkOption {
|
acceptWord = mkOption {
|
||||||
|
|
|
||||||
|
|
@ -11,11 +11,10 @@
|
||||||
inherit (lib.modules) mkIf mkMerge;
|
inherit (lib.modules) mkIf mkMerge;
|
||||||
inherit (lib.nvim.types) mkGrammarOption;
|
inherit (lib.nvim.types) mkGrammarOption;
|
||||||
inherit (lib.nvim.dag) entryAfter;
|
inherit (lib.nvim.dag) entryAfter;
|
||||||
inherit (lib.nvim.lua) expToLua;
|
inherit (lib.nvim.lua) toLuaObject;
|
||||||
inherit (lib.meta) getExe';
|
inherit (lib.meta) getExe';
|
||||||
inherit (lib.generators) mkLuaInline;
|
inherit (lib.generators) mkLuaInline;
|
||||||
inherit (pkgs) haskellPackages;
|
inherit (pkgs) haskellPackages;
|
||||||
inherit (lib.nvim.lua) toLuaObject;
|
|
||||||
|
|
||||||
cfg = config.vim.languages.haskell;
|
cfg = config.vim.languages.haskell;
|
||||||
|
|
||||||
|
|
@ -120,7 +119,7 @@ in {
|
||||||
dap = {
|
dap = {
|
||||||
cmd = ${
|
cmd = ${
|
||||||
if isList cfg.dap.package
|
if isList cfg.dap.package
|
||||||
then expToLua cfg.dap.package
|
then toLuaObject cfg.dap.package
|
||||||
else ''{"${cfg.dap.package}/bin/haskell-debug-adapter"}''
|
else ''{"${cfg.dap.package}/bin/haskell-debug-adapter"}''
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@
|
||||||
inherit (lib.lists) isList;
|
inherit (lib.lists) isList;
|
||||||
inherit (lib.types) bool package str listOf either enum;
|
inherit (lib.types) bool package str listOf either enum;
|
||||||
inherit (lib.nvim.types) mkGrammarOption;
|
inherit (lib.nvim.types) mkGrammarOption;
|
||||||
inherit (lib.nvim.lua) expToLua;
|
inherit (lib.nvim.lua) toLuaObject;
|
||||||
inherit (lib.nvim.dag) entryAfter entryAnywhere;
|
inherit (lib.nvim.dag) entryAfter entryAnywhere;
|
||||||
|
|
||||||
cfg = config.vim.languages.rust;
|
cfg = config.vim.languages.rust;
|
||||||
|
|
@ -153,7 +153,7 @@ in {
|
||||||
server = {
|
server = {
|
||||||
cmd = ${
|
cmd = ${
|
||||||
if isList cfg.lsp.package
|
if isList cfg.lsp.package
|
||||||
then expToLua cfg.lsp.package
|
then toLuaObject cfg.lsp.package
|
||||||
else ''{"${cfg.lsp.package}/bin/rust-analyzer"}''
|
else ''{"${cfg.lsp.package}/bin/rust-analyzer"}''
|
||||||
},
|
},
|
||||||
default_settings = {
|
default_settings = {
|
||||||
|
|
|
||||||
|
|
@ -130,6 +130,9 @@
|
||||||
# In systems where we only have a package and no module, this can be used
|
# In systems where we only have a package and no module, this can be used
|
||||||
# to access the built init.lua
|
# to access the built init.lua
|
||||||
initLua = dummyInit;
|
initLua = dummyInit;
|
||||||
|
|
||||||
|
mnwConfig = neovim-wrapped.passthru.config;
|
||||||
|
mnwConfigDir = neovim-wrapped.passthru.configDir;
|
||||||
};
|
};
|
||||||
|
|
||||||
meta =
|
meta =
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue