mirror of
https://github.com/NotAShelf/nvf.git
synced 2025-11-10 07:25:30 +00:00
113 lines
3.6 KiB
Nix
113 lines
3.6 KiB
Nix
{
|
|
config,
|
|
lib,
|
|
...
|
|
}: let
|
|
inherit (lib.options) mkOption;
|
|
inherit (lib.types) str nullOr;
|
|
inherit (builtins) filter isAttrs hasAttr attrNames length elemAt;
|
|
inherit (lib.nvim.config) mkBool;
|
|
|
|
cfg = config.vim.languages.tex;
|
|
|
|
enabledBuildersCount = let
|
|
# This function will sort through the builder options and count how many
|
|
# builders have been enabled.
|
|
getEnabledBuildersCount = {
|
|
enabledBuildersCount ? 0,
|
|
index ? 0,
|
|
builderNamesList ? (
|
|
filter (
|
|
x: let
|
|
y = cfg.build.builders.${x};
|
|
in (isAttrs y && hasAttr "enable" y)
|
|
) (attrNames cfg.build.builders)
|
|
),
|
|
}: let
|
|
currentBuilderName = elemAt builderNamesList index;
|
|
currentBuilder = cfg.build.builders.${currentBuilderName};
|
|
nextIndex = index + 1;
|
|
newEnabledBuildersCount =
|
|
if currentBuilder.enable
|
|
then enabledBuildersCount + 1
|
|
else enabledBuildersCount;
|
|
in
|
|
if length builderNamesList > nextIndex
|
|
then
|
|
getEnabledBuildersCount {
|
|
inherit builderNamesList;
|
|
enabledBuildersCount = newEnabledBuildersCount;
|
|
index = nextIndex;
|
|
}
|
|
else newEnabledBuildersCount;
|
|
in (getEnabledBuildersCount {});
|
|
in {
|
|
imports = [
|
|
./builders
|
|
];
|
|
|
|
options.vim.languages.tex.build = {
|
|
enable =
|
|
mkBool (
|
|
if enabledBuildersCount > 1
|
|
then throw "nvf-tex-language does not support having more than 1 builders enabled!"
|
|
else (enabledBuildersCount == 1)
|
|
) ''
|
|
Whether to enable configuring the builder.
|
|
|
|
By enabling any of the builders, this option will be automatically set.
|
|
If you enable more than one builder then an error will be thrown.
|
|
'';
|
|
|
|
forwardSearchAfter = mkBool false "Set this property to true if you want to execute a forward search after a build.";
|
|
|
|
onSave = mkBool false "Set this property to true if you want to compile the project after saving a file.";
|
|
|
|
useFileList = mkBool false ''
|
|
When set to true, the server will use the .fls files produced by the TeX engine as an additional input for the project detection.
|
|
|
|
Note that enabling this property might have an impact on performance.
|
|
'';
|
|
|
|
auxDirectory = mkOption {
|
|
type = str;
|
|
default = ".";
|
|
description = ''
|
|
When not using latexmk, provides a way to define the directory containing the .aux files.
|
|
Note that you need to set the aux directory in latex.build.args too.
|
|
|
|
When using a latexmkrc file, texlab will automatically infer the correct setting.
|
|
'';
|
|
};
|
|
|
|
logDirectory = mkOption {
|
|
type = str;
|
|
default = ".";
|
|
description = ''
|
|
When not using latexmk, provides a way to define the directory containing the build log files.
|
|
Note that you need to change the output directory in your build arguments too.
|
|
|
|
When using a latexmkrc file, texlab will automatically infer the correct setting.
|
|
'';
|
|
};
|
|
|
|
pdfDirectory = mkOption {
|
|
type = str;
|
|
default = ".";
|
|
description = ''
|
|
When not using latexmk, provides a way to define the directory containing the output files.
|
|
Note that you need to set the output directory in latex.build.args too.
|
|
|
|
When using a latexmkrc file, texlab will automatically infer the correct setting.
|
|
'';
|
|
};
|
|
|
|
filename = mkOption {
|
|
type = nullOr str;
|
|
default = null;
|
|
description = ''
|
|
Allows overriding the default file name of the build artifact. This setting is used to find the correct PDF file to open during forward search.
|
|
'';
|
|
};
|
|
};
|
|
}
|