mirror of
https://github.com/NotAShelf/nvf.git
synced 2026-05-19 05:24:22 +00:00
languages/asm: add asmfmt and nasmfmt
This commit is contained in:
parent
0f7a1ff6ec
commit
190cb762f9
2 changed files with 74 additions and 3 deletions
|
|
@ -388,6 +388,8 @@
|
||||||
|
|
||||||
- Fix `languages.ts` registration of formatters.
|
- Fix `languages.ts` registration of formatters.
|
||||||
|
|
||||||
|
- Added `asmfmt` and `nasmfmt` formatters to `languages.asm`.
|
||||||
|
|
||||||
- Added `biome-check` and `biome-organize-imports` formatters to `languages.ts`.
|
- Added `biome-check` and `biome-organize-imports` formatters to `languages.ts`.
|
||||||
|
|
||||||
- Added [`biomejs`](https://biomejs.dev/) as extra diagnostics provider to
|
- Added [`biomejs`](https://biomejs.dev/) as extra diagnostics provider to
|
||||||
|
|
|
||||||
|
|
@ -4,15 +4,36 @@
|
||||||
lib,
|
lib,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
inherit (lib.options) mkEnableOption mkOption literalExpression;
|
|
||||||
inherit (lib.modules) mkIf mkMerge;
|
inherit (lib.modules) mkIf mkMerge;
|
||||||
|
inherit (lib.options) mkEnableOption mkOption literalExpression;
|
||||||
inherit (lib.types) enum listOf;
|
inherit (lib.types) enum listOf;
|
||||||
inherit (lib) genAttrs;
|
inherit (lib.attrsets) attrNames genAttrs;
|
||||||
|
inherit (lib.generators) mkLuaInline;
|
||||||
|
inherit (lib.meta) getExe;
|
||||||
|
inherit (lib.nvim.attrsets) mapListToAttrs;
|
||||||
inherit (lib.nvim.types) mkGrammarOption;
|
inherit (lib.nvim.types) mkGrammarOption;
|
||||||
|
|
||||||
cfg = config.vim.languages.assembly;
|
cfg = config.vim.languages.assembly;
|
||||||
defaultServers = ["asm-lsp"];
|
defaultServers = ["asm-lsp"];
|
||||||
servers = ["asm-lsp"];
|
servers = ["asm-lsp"];
|
||||||
|
|
||||||
|
defaultFormat = ["asmfmt"];
|
||||||
|
formats = {
|
||||||
|
asmfmt = {
|
||||||
|
command = getExe pkgs.asmfmt;
|
||||||
|
};
|
||||||
|
nasmfmt = {
|
||||||
|
command = getExe pkgs.nasmfmt;
|
||||||
|
args = mkLuaInline ''
|
||||||
|
function(self, ctx)
|
||||||
|
return {
|
||||||
|
"--ii", ctx.shiftwidth,
|
||||||
|
"$FILENAME",
|
||||||
|
}
|
||||||
|
end
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
in {
|
in {
|
||||||
options.vim.languages.assembly = {
|
options.vim.languages.assembly = {
|
||||||
enable = mkEnableOption "Assembly support";
|
enable = mkEnableOption "Assembly support";
|
||||||
|
|
@ -42,6 +63,20 @@ in {
|
||||||
description = "Assembly LSP server to use";
|
description = "Assembly LSP server to use";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
format = {
|
||||||
|
enable =
|
||||||
|
mkEnableOption "Assembly formatting"
|
||||||
|
// {
|
||||||
|
default = config.vim.languages.enableFormat;
|
||||||
|
defaultText = literalExpression "config.vim.languages.enableFormat";
|
||||||
|
};
|
||||||
|
type = mkOption {
|
||||||
|
type = listOf (enum (attrNames formats));
|
||||||
|
default = defaultFormat;
|
||||||
|
description = "Assembly formatter to use";
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
config = mkIf cfg.enable (mkMerge [
|
config = mkIf cfg.enable (mkMerge [
|
||||||
(mkIf cfg.treesitter.enable {
|
(mkIf cfg.treesitter.enable {
|
||||||
|
|
@ -57,9 +92,43 @@ in {
|
||||||
vim.lsp = {
|
vim.lsp = {
|
||||||
presets = genAttrs cfg.lsp.servers (_: {enable = true;});
|
presets = genAttrs cfg.lsp.servers (_: {enable = true;});
|
||||||
servers = genAttrs cfg.lsp.servers (_: {
|
servers = genAttrs cfg.lsp.servers (_: {
|
||||||
filetypes = ["asm" "nasm" "masm" "vmasm" "fasm" "tasm" "tiasm" "asm68k" "asm8300"];
|
filetypes = [
|
||||||
|
"asm"
|
||||||
|
"nasm"
|
||||||
|
"masm"
|
||||||
|
"vmasm"
|
||||||
|
"fasm"
|
||||||
|
"tasm"
|
||||||
|
"tiasm"
|
||||||
|
"asm68k"
|
||||||
|
"asmh8300"
|
||||||
|
];
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
})
|
})
|
||||||
|
|
||||||
|
(mkIf cfg.format.enable {
|
||||||
|
vim.formatter.conform-nvim = {
|
||||||
|
enable = true;
|
||||||
|
setupOpts = {
|
||||||
|
formatters_by_ft = {
|
||||||
|
asm = cfg.format.type;
|
||||||
|
nasm = cfg.format.type;
|
||||||
|
masm = cfg.format.type;
|
||||||
|
vmasm = cfg.format.type;
|
||||||
|
tasm = cfg.format.type;
|
||||||
|
tiasm = cfg.format.type;
|
||||||
|
asm68k = cfg.format.type;
|
||||||
|
asmh8300 = cfg.format.type;
|
||||||
|
};
|
||||||
|
formatters =
|
||||||
|
mapListToAttrs (name: {
|
||||||
|
inherit name;
|
||||||
|
value = formats.${name};
|
||||||
|
})
|
||||||
|
cfg.format.type;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
})
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue