Cleanup: Sorted sections alphabetically, utilized inherrits where appropriate

This commit is contained in:
isaacST08 2025-01-30 14:37:30 -07:00
commit 650775ec52

View file

@ -23,51 +23,44 @@ in {
description = "texlab package"; description = "texlab package";
}; };
forwardSearch = { chktex = {
enable = mkBool false '' enable = mkBool false "Whether to enable linting via chktex";
Whether to enable forward search.
Enable this option if you want to have the compiled document appear in your chosen PDF viewer.
For some options see [here](https://github.com/latex-lsp/texlab/wiki/Previewing).
Note this is not all the options, but can act as a guide to help you allong with custom configs.
'';
package = mkOption { package = mkOption {
type = package; type = package;
default = pkgs.okular; default = pkgs.texlive.withPackages (ps: [ps.chktex]);
description = '' description = ''
The package to use as your PDF viewer. The chktex package to use.
This viewer needs to support Synctex. Must have the `chktex` executable.
''; '';
}; };
executable = mkOption { onOpenAndSave = mkBool false "Lint using chktex after opening and saving a file.";
type = str;
default = "okular";
description = ''
Defines the executable of the PDF previewer. The previewer needs to support SyncTeX.
'';
};
args = mkOption { onEdit = mkBool false "Lint using chktex after editing a file.";
additionalArgs = mkOption {
type = listOf str; type = listOf str;
default = [ default = [];
"--unique"
"file:%p#src:%l%f"
];
description = '' description = ''
Defines additional arguments that are passed to the configured previewer to perform the forward search. Additional command line arguments that are passed to chktex after editing a file.
The placeholders %f, %p, %l will be replaced by the server. Don't redefine the `-I` and `-f` flags as they are set by the server.
Placeholders:
- %f: The path of the current TeX file.
- %p: The path of the current PDF file.
- %l: The current line number.
''; '';
}; };
}; };
completion.matcher = mkOption {
type = enum ["fuzzy" "fuzzy-ignore-case" "prefix" "prefix-ignore-case"];
default = "fuzzy-ignore-case";
description = ''
Modifies the algorithm used to filter the completion items returned to the client. Possibles values are:
- fuzzy: Fuzzy string matching (case sensitive)
- fuzzy-ignore-case: Fuzzy string matching (case insensitive)
- prefix: Filter out items that do not start with the search text (case sensitive)
- prefix-ignore-case: Filter out items that do not start with the search text (case insensitive)
'';
};
diagnostics = { diagnostics = {
delay = mkOption { delay = mkOption {
type = ints.positive; type = ints.positive;
@ -101,166 +94,6 @@ in {
}; };
}; };
chktex = {
enable = mkBool false "Whether to enable linting via chktex";
package = mkOption {
type = package;
default = pkgs.texlive.withPackages (ps: [ps.chktex]);
description = ''
The chktex package to use.
Must have the `chktex` executable.
'';
};
onOpenAndSave = mkBool false "Lint using chktex after opening and saving a file.";
onEdit = mkBool false "Lint using chktex after editing a file.";
additionalArgs = mkOption {
type = listOf str;
default = [];
description = ''
Additional command line arguments that are passed to chktex after editing a file.
Don't redefine the `-I` and `-f` flags as they are set by the server.
'';
};
};
symbols = {
enable = mkBool false "Whether to enable setting symbols config.";
allowedPatterns = mkOption {
type = listOf str;
default = [];
description = ''
A list of regular expressions used to filter the list of reported document symbols.
If specified, only symbols that match at least one of the specified patterns are sent to the client.
Symbols are filtered recursively so nested symbols can still be sent to the client even though the
parent node is removed from the results.
See also `texlab.symbols.ignoredPatterns`.
Hint: If both allowedPatterns and ignoredPatterns are set, then allowed patterns are applied first.
Afterwards, the results are filtered with the ignored patterns.
'';
};
ignoredPatterns = mkOption {
type = listOf str;
default = [];
description = ''
A list of regular expressions used to filter the list of reported document symbols.
If specified, only symbols that match none of the specified patterns are sent to the client.
See also `texlab.symbols.allowedPatterns`.
'';
};
customEnvironments = mkOption {
type = listOf (submodule {
options = {
name = mkOption {
type = str;
description = "The name of the environment.";
};
displayName = mkOption {
type = nullOr str;
default = null;
description = "The name shown in the document symbols. Defaults to the value of `name`.";
};
label = mkBool false ''
If set, the server will try to match a label to environment and append its number.
'';
};
});
default = [];
example = [
{
name = "foo";
displayName = "bar";
label = false;
}
];
description = ''
A list of objects that allows extending the list of environments that are part of the document symbols.
See also texlab.symbols.allowedPatterns.
Type: listOf submodule:
- name:
- type: str
- description: The name of the environment.
- required
- displayName:
- type: nullOr str
- description: The name shown in the document symbols.
- default: <name>
- label:
- type: boolean
- description: If set, the server will try to match a label to environment and append its number.
- default: false
Note: This functionallity may not be working, please follow https://github.com/latex-lsp/texlab/pull/1311
for status updates.
'';
};
};
latexindent = {
local = mkOption {
type = nullOr (either str path);
default = null;
description = ''
Defines the path of a file containing the latexindent configuration.
This corresponds to the --local=file.yaml flag of latexindent.
By default the configuration inside the project root directory is used.
'';
};
modifyLineBreaks = mkBool false ''
Modifies linebreaks before, during, and at the end of code blocks when formatting with latexindent.
This corresponds to the --modifylinebreaks flag of latexindent.
'';
replacement = mkOption {
type = nullOr (enum ["-r" "-rv" "-rr"]);
default = null;
description = ''
Defines an additional replacement flag that is added when calling latexindent. This can be one of the following:
- "-r"
- "-rv"
- "-rr"
- null
By default no replacement flag is passed.
'';
};
};
completion.matcher = mkOption {
type = enum ["fuzzy" "fuzzy-ignore-case" "prefix" "prefix-ignore-case"];
default = "fuzzy-ignore-case";
description = ''
Modifies the algorithm used to filter the completion items returned to the client. Possibles values are:
- fuzzy: Fuzzy string matching (case sensitive)
- fuzzy-ignore-case: Fuzzy string matching (case insensitive)
- prefix: Filter out items that do not start with the search text (case sensitive)
- prefix-ignore-case: Filter out items that do not start with the search text (case insensitive)
'';
};
inlayHints = {
labelDefinitions = mkBool true "When enabled, the server will return inlay hints for `\\label-like` commands.";
labelReferences = mkBool true "When enabled, the server will return inlay hints for `\\ref``-like commands.";
maxLength = mkOption {
type = nullOr ints.positive;
default = null;
description = "When set, the server will truncate the text of the inlay hints to the specified length.";
};
};
experimental = { experimental = {
followPackageLinks = mkBool false "If set to true, dependencies of custom packages are resolved and included in the dependency graph."; followPackageLinks = mkBool false "If set to true, dependencies of custom packages are resolved and included in the dependency graph.";
@ -348,31 +181,6 @@ in {
}; };
}; };
formatterLineLength = mkOption {
type = ints.positive;
default = 80;
description = "Defines the maximum amount of characters per line (0 = disable) when formatting BibTeX files.";
};
bibtexFormatter = mkOption {
type = enum ["texlab" "latexindent"];
default = "texlab";
description = ''
Defines the formatter to use for BibTeX formatting.
Possible values are either texlab or latexindent.
'';
};
latexFormatter = mkOption {
type = enum ["texlab" "latexindent"];
default = "latexindent";
description = ''
Defines the formatter to use for LaTeX formatting.
Possible values are either texlab or latexindent.
Note that texlab is not implemented yet.
'';
};
extraLuaSettings = mkOption { extraLuaSettings = mkOption {
type = attrs; type = attrs;
default = {}; default = {};
@ -399,6 +207,200 @@ in {
``` ```
''; '';
}; };
forwardSearch = {
enable = mkBool false ''
Whether to enable forward search.
Enable this option if you want to have the compiled document appear in your chosen PDF viewer.
For some options see [here](https://github.com/latex-lsp/texlab/wiki/Previewing).
Note this is not all the options, but can act as a guide to help you allong with custom configs.
'';
package = mkOption {
type = package;
default = pkgs.okular;
description = ''
The package to use as your PDF viewer.
This viewer needs to support Synctex.
'';
};
executable = mkOption {
type = str;
default = "okular";
description = ''
Defines the executable of the PDF previewer. The previewer needs to support SyncTeX.
'';
};
args = mkOption {
type = listOf str;
default = [
"--unique"
"file:%p#src:%l%f"
];
description = ''
Defines additional arguments that are passed to the configured previewer to perform the forward search.
The placeholders %f, %p, %l will be replaced by the server.
Placeholders:
- %f: The path of the current TeX file.
- %p: The path of the current PDF file.
- %l: The current line number.
'';
};
};
formatter = {
formatterLineLength = mkOption {
type = ints.positive;
default = 80;
description = "Defines the maximum amount of characters per line (0 = disable) when formatting BibTeX files.";
};
bibtexFormatter = mkOption {
type = enum ["texlab" "latexindent"];
default = "texlab";
description = ''
Defines the formatter to use for BibTeX formatting.
Possible values are either texlab or latexindent.
'';
};
latexFormatter = mkOption {
type = enum ["texlab" "latexindent"];
default = "latexindent";
description = ''
Defines the formatter to use for LaTeX formatting.
Possible values are either texlab or latexindent.
Note that texlab is not implemented yet.
'';
};
};
inlayHints = {
labelDefinitions = mkBool true "When enabled, the server will return inlay hints for `\\label-like` commands.";
labelReferences = mkBool true "When enabled, the server will return inlay hints for `\\ref``-like commands.";
maxLength = mkOption {
type = nullOr ints.positive;
default = null;
description = "When set, the server will truncate the text of the inlay hints to the specified length.";
};
};
latexindent = {
local = mkOption {
type = nullOr (either str path);
default = null;
description = ''
Defines the path of a file containing the latexindent configuration.
This corresponds to the --local=file.yaml flag of latexindent.
By default the configuration inside the project root directory is used.
'';
};
modifyLineBreaks = mkBool false ''
Modifies linebreaks before, during, and at the end of code blocks when formatting with latexindent.
This corresponds to the --modifylinebreaks flag of latexindent.
'';
replacement = mkOption {
type = nullOr (enum ["-r" "-rv" "-rr"]);
default = null;
description = ''
Defines an additional replacement flag that is added when calling latexindent. This can be one of the following:
- "-r"
- "-rv"
- "-rr"
- null
By default no replacement flag is passed.
'';
};
};
symbols = {
enable = mkBool false "Whether to enable setting symbols config.";
allowedPatterns = mkOption {
type = listOf str;
default = [];
description = ''
A list of regular expressions used to filter the list of reported document symbols.
If specified, only symbols that match at least one of the specified patterns are sent to the client.
Symbols are filtered recursively so nested symbols can still be sent to the client even though the
parent node is removed from the results.
See also `texlab.symbols.ignoredPatterns`.
Hint: If both allowedPatterns and ignoredPatterns are set, then allowed patterns are applied first.
Afterwards, the results are filtered with the ignored patterns.
'';
};
ignoredPatterns = mkOption {
type = listOf str;
default = [];
description = ''
A list of regular expressions used to filter the list of reported document symbols.
If specified, only symbols that match none of the specified patterns are sent to the client.
See also `texlab.symbols.allowedPatterns`.
'';
};
customEnvironments = mkOption {
type = listOf (submodule {
options = {
name = mkOption {
type = str;
description = "The name of the environment.";
};
displayName = mkOption {
type = nullOr str;
default = null;
description = "The name shown in the document symbols. Defaults to the value of `name`.";
};
label = mkBool false ''
If set, the server will try to match a label to environment and append its number.
'';
};
});
default = [];
example = [
{
name = "foo";
displayName = "bar";
label = false;
}
];
description = ''
A list of objects that allows extending the list of environments that are part of the document symbols.
See also texlab.symbols.allowedPatterns.
Type: listOf submodule:
- name:
- type: str
- description: The name of the environment.
- required
- displayName:
- type: nullOr str
- description: The name shown in the document symbols.
- default: <name>
- label:
- type: boolean
- description: If set, the server will try to match a label to environment and append its number.
- default: false
Note: This functionallity may not be working, please follow https://github.com/latex-lsp/texlab/pull/1311
for status updates.
'';
};
};
}; };
config = mkIf cfg.enable ( config = mkIf cfg.enable (
@ -410,40 +412,45 @@ in {
# Create texlab settings section # Create texlab settings section
setupConfig.settings.texlab = ( setupConfig.settings.texlab = (
{ {
# -- General Settings -- # -- Completion --
formatterLineLength = texlabCfg.formatterLineLength; completion.matcher = texlabCfg.completion.matcher;
# -- Formatters --
bibtexFormatter = texlabCfg.bibtexFormatter;
latexFormatter = texlabCfg.latexFormatter;
# -- Diagnostics -- # -- Diagnostics --
diagnosticsDelay = texlabCfg.diagnostics.delay; diagnosticsDelay = texlabCfg.diagnostics.delay;
diagnostics = { diagnostics = {
allowedPatterns = texlabCfg.diagnostics.allowedPatterns; inherit (texlabCfg.diagnostics) allowedPatterns ignoredPatterns;
ignoredPatterns = texlabCfg.diagnostics.ignoredPatterns;
}; };
# -- Latex Indent -- # -- Experimental --
latexindent = texlabCfg.latexindent; experimental = texlabCfg.experimental;
# -- Completion -- # -- Formatters --
completion.matcher = texlabCfg.completion.matcher; inherit (texlabCfg.formatter) formatterLineLength bibtexFormatter latexFormatter;
# -- Inlay Hints -- # -- Inlay Hints --
inlayHints = texlabCfg.inlayHints; inlayHints = texlabCfg.inlayHints;
# -- Experimental -- # -- Latex Indent --
experimental = texlabCfg.experimental; latexindent = texlabCfg.latexindent;
} }
# #
# -- Forward Search -- # -- Build --
// ( // (
if texlabCfg.forwardSearch.enable if cfg.build.enable
then { then {
forwardSearch = { build = {
executable = "${texlabCfg.forwardSearch.package}/bin/${texlabCfg.forwardSearch.executable}"; inherit
args = texlabCfg.forwardSearch.args; (cfg.build)
onSave
useFileList
auxDirectory
logDirectory
pdfDirectory
filename
forwardSearchAfter
;
inherit (builderCfg) args;
executable = "${builderCfg.package}/bin/${builderCfg.executable}";
}; };
} }
else {} else {}
@ -460,6 +467,18 @@ in {
else {} else {}
) )
# #
# -- Forward Search --
// (
if texlabCfg.forwardSearch.enable
then {
forwardSearch = {
executable = "${texlabCfg.forwardSearch.package}/bin/${texlabCfg.forwardSearch.executable}";
args = texlabCfg.forwardSearch.args;
};
}
else {}
)
#
# -- Symbols -- # -- Symbols --
// ( // (
if texlabCfg.symbols.enable if texlabCfg.symbols.enable
@ -481,25 +500,6 @@ in {
else {} else {}
) )
# #
# -- Build --
// (
if cfg.build.enable
then {
build = {
executable = "${builderCfg.package}/bin/${builderCfg.executable}";
args = builderCfg.args;
forwardSearchAfter = cfg.build.forwardSearchAfter;
onSave = cfg.build.onSave;
useFileList = cfg.build.useFileList;
auxDirectory = cfg.build.auxDirectory;
logDirectory = cfg.build.logDirectory;
pdfDirectory = cfg.build.pdfDirectory;
filename = cfg.build.filename;
};
}
else {}
)
#
# -- Extra Settings -- # -- Extra Settings --
// texlabCfg.extraLuaSettings // texlabCfg.extraLuaSettings
); );