mirror of
https://github.com/nix-community/nixvim.git
synced 2025-06-21 08:35:43 +02:00
plugins/lsp/lua-ls: refactor settings options
This commit is contained in:
parent
adf7bb1301
commit
7c3ae8c718
2 changed files with 877 additions and 51 deletions
|
@ -284,57 +284,7 @@ let
|
|||
description = "lua-ls for Lua";
|
||||
package = pkgs.lua-language-server;
|
||||
serverName = "lua_ls";
|
||||
|
||||
# All available settings are documented here:
|
||||
# https://github.com/LuaLS/lua-language-server/wiki/Settings
|
||||
settingsOptions = {
|
||||
runtime = {
|
||||
version = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
description = ''
|
||||
Tell the language server which version of Lua you're using
|
||||
(most likely LuaJIT in the case of Neovim)
|
||||
'';
|
||||
default = "LuaJIT";
|
||||
};
|
||||
};
|
||||
diagnostics = {
|
||||
globals = mkOption {
|
||||
type = types.nullOr (types.listOf types.str);
|
||||
description = ''
|
||||
An array of variable names that will be declared as global.
|
||||
'';
|
||||
default = [ "vim" ];
|
||||
};
|
||||
};
|
||||
workspace = {
|
||||
library = mkOption {
|
||||
type = with types; nullOr (listOf (either str helpers.nixvimTypes.rawLua));
|
||||
description = ''
|
||||
An array of abosolute or workspace-relative paths that will be added to the workspace
|
||||
diagnosis - meaning you will get completion and context from these library files.
|
||||
Can be a file or directory.
|
||||
Files included here will have some features disabled such as renaming fields to
|
||||
prevent accidentally renaming your library files.
|
||||
'';
|
||||
default = [ (helpers.mkRaw "vim.api.nvim_get_runtime_file('', true)") ];
|
||||
};
|
||||
checkThirdParty = mkOption {
|
||||
type = types.nullOr types.bool;
|
||||
description = ''
|
||||
Whether third party libraries can be automatically detected and applied.
|
||||
Third party libraries can set up the environment to be as close as possible to your
|
||||
target runtime environment.
|
||||
'';
|
||||
# prevents an annoying warning
|
||||
# https://github.com/LuaLS/lua-language-server/discussions/1688#discussioncomment-4185003
|
||||
default = false;
|
||||
};
|
||||
};
|
||||
telemetry = {
|
||||
enable = mkEnableOption "telemetry";
|
||||
};
|
||||
};
|
||||
settingsOptions = import ./lua-ls-settings.nix { inherit lib helpers; };
|
||||
settings = cfg: { Lua = cfg; };
|
||||
}
|
||||
{
|
||||
|
|
876
plugins/lsp/language-servers/lua-ls-settings.nix
Normal file
876
plugins/lsp/language-servers/lua-ls-settings.nix
Normal file
|
@ -0,0 +1,876 @@
|
|||
# All available settings are documented here:
|
||||
# https://luals.github.io/wiki/settings/
|
||||
{ lib, helpers }:
|
||||
with lib;
|
||||
{
|
||||
addonManager = {
|
||||
enable = helpers.defaultNullOpts.mkBool true ''
|
||||
Set the on/off state of the addon manager.
|
||||
Disabling the addon manager prevents it from registering its command.
|
||||
'';
|
||||
};
|
||||
|
||||
completion = {
|
||||
autoRequire = helpers.defaultNullOpts.mkBool true ''
|
||||
When the input looks like a file name, automatically require the file.
|
||||
'';
|
||||
|
||||
callSnippet =
|
||||
helpers.defaultNullOpts.mkEnumFirstDefault
|
||||
[
|
||||
"Disable"
|
||||
"Both"
|
||||
"Replace"
|
||||
]
|
||||
''
|
||||
- `"Disable"` - Only show function name
|
||||
- `"Both"` - Show function name and snippet
|
||||
- `"Replace"` - Only show the call snippet
|
||||
|
||||
Whether to show call snippets or not.
|
||||
When disabled, only the function name will be completed.
|
||||
When enabled, a "more complete" snippet will be offered.
|
||||
'';
|
||||
|
||||
displayContext = helpers.defaultNullOpts.mkUnsignedInt 0 ''
|
||||
When a snippet is being suggested, this setting will set the amount of lines around the
|
||||
snippet to preview to help you better understand its usage.
|
||||
|
||||
Setting to `0` will disable this feature.
|
||||
'';
|
||||
|
||||
enable = helpers.defaultNullOpts.mkBool true ''
|
||||
Enable/disable completion.
|
||||
Completion works like any autocompletion you already know of.
|
||||
It helps you type less and get more done.
|
||||
'';
|
||||
|
||||
keywordSnippet =
|
||||
helpers.defaultNullOpts.mkEnum
|
||||
[
|
||||
"Disable"
|
||||
"Both"
|
||||
"Replace"
|
||||
]
|
||||
"Replace"
|
||||
''
|
||||
- `"Disable"` - Only completes the keyword
|
||||
- `"Both"` - Offers a completion for the keyword and snippet
|
||||
- `"Replace"` - Only shows a snippet
|
||||
|
||||
Whether to show a snippet for key words like `if`, `while`, etc. When disabled, only the keyword will be completed. When enabled, a "more complete" snippet will be offered.
|
||||
'';
|
||||
|
||||
postfix = helpers.defaultNullOpts.mkStr "@" ''
|
||||
The character to use for triggering a "postfix suggestion".
|
||||
A postfix allows you to write some code and then trigger a snippet after (post) to "fix" the
|
||||
code you have written.
|
||||
This can save some time as instead of typing `table.insert(myTable, )`, you can just type
|
||||
`myTable@`.
|
||||
'';
|
||||
|
||||
requireSeparator = helpers.defaultNullOpts.mkStr "." ''
|
||||
The separator to use when `require`-ing a file.
|
||||
'';
|
||||
|
||||
showParams = helpers.defaultNullOpts.mkBool true ''
|
||||
Display a function's parameters in the list of completions.
|
||||
When a function has multiple definitions, they will be displayed separately.
|
||||
'';
|
||||
|
||||
showWord =
|
||||
helpers.defaultNullOpts.mkEnum
|
||||
[
|
||||
"Enable"
|
||||
"Fallback"
|
||||
"Disable"
|
||||
]
|
||||
"Fallback"
|
||||
''
|
||||
- `"Enable"` - Always show contextual words in completion suggestions
|
||||
- `"Fallback"` - Only show contextual words when smart suggestions based on semantics cannot be provided
|
||||
- `"Disable"` - Never show contextual words
|
||||
|
||||
Show "contextual words" that have to do with Lua but are not suggested based on their
|
||||
usefulness in the current semantic context.
|
||||
'';
|
||||
|
||||
workspaceWord = helpers.defaultNullOpts.mkBool true ''
|
||||
Whether words from other files in the workspace should be suggested as "contextual words".
|
||||
This can be useful for completing similar strings.
|
||||
`completion.showWord` must not be disabled for this to have an effect.
|
||||
'';
|
||||
};
|
||||
|
||||
diagnostics = {
|
||||
disable = helpers.defaultNullOpts.mkListOf types.str [ ] ''
|
||||
Disable certain diagnostics globally.
|
||||
For example, if you want all warnings for `lowercase-global` to be disabled, the value for
|
||||
`diagnostics.disable` would be `["lowercase-global"]`.
|
||||
'';
|
||||
|
||||
disableScheme = helpers.defaultNullOpts.mkListOf types.str [ "git" ] ''
|
||||
Disable diagnosis of Lua files that have the set schemes.
|
||||
'';
|
||||
|
||||
enable = helpers.defaultNullOpts.mkBool true ''
|
||||
Whether all diagnostics should be enabled or not.
|
||||
'';
|
||||
|
||||
globals = helpers.defaultNullOpts.mkListOf types.str [ ] ''
|
||||
An array of variable names that will be declared as global.
|
||||
'';
|
||||
|
||||
groupFileStatus =
|
||||
helpers.defaultNullOpts.mkAttrsOf
|
||||
(types.enum [
|
||||
"Any"
|
||||
"Opened"
|
||||
"None"
|
||||
"Fallback"
|
||||
])
|
||||
{
|
||||
ambiguity = "Fallback";
|
||||
await = "Fallback";
|
||||
codestyle = "Fallback";
|
||||
duplicate = "Fallback";
|
||||
global = "Fallback";
|
||||
luadoc = "Fallback";
|
||||
redefined = "Fallback";
|
||||
strict = "Fallback";
|
||||
strong = "Fallback";
|
||||
type-check = "Fallback";
|
||||
unbalanced = "Fallback";
|
||||
unused = "Fallback";
|
||||
}
|
||||
''
|
||||
Set the file status required for each diagnostic group.
|
||||
This setting is an `Object` of `key`-`value` pairs where the `key` is the name of the
|
||||
diagnostic group and the `value` is the state that a file must be in in order for the
|
||||
diagnostic group to apply.
|
||||
|
||||
Valid state values:
|
||||
- `"Any"` - Any loaded file (workspace, library, etc.) will use this diagnostic group
|
||||
- `"Opened"` - Only opened files will use this diagnostic group
|
||||
- `"None"` - This diagnostic group will be disabled
|
||||
- `"Fallback"` - The diagnostics in this group are controlled individually by [`diagnostics.neededFileStatus`](https://github.com/LuaLS/lua-language-server/wiki/Settings#diagnosticsneededfilestatus)
|
||||
'';
|
||||
|
||||
groupSeverity =
|
||||
helpers.defaultNullOpts.mkAttrsOf
|
||||
(types.enum [
|
||||
"Error"
|
||||
"Warning"
|
||||
"Information"
|
||||
"Hint"
|
||||
"Fallback"
|
||||
])
|
||||
{
|
||||
ambiguity = "Fallback";
|
||||
await = "Fallback";
|
||||
codestyle = "Fallback";
|
||||
duplicate = "Fallback";
|
||||
global = "Fallback";
|
||||
luadoc = "Fallback";
|
||||
redefined = "Fallback";
|
||||
strict = "Fallback";
|
||||
strong = "Fallback";
|
||||
type-check = "Fallback";
|
||||
unbalanced = "Fallback";
|
||||
unused = "Fallback";
|
||||
}
|
||||
''
|
||||
Maps diagnostic groups to severity levels.
|
||||
|
||||
Valid severity values:
|
||||
- `"Error"` - An error will be raised
|
||||
- `"Warning"` - A warning will be raised
|
||||
- `"Information"` - An information or note will be raised
|
||||
- `"Hint"` - The affected code will be "hinted" at
|
||||
- `"Fallback"` - The diagnostics in this group will be controlled individually by [`diagnostics.severity`](https://github.com/LuaLS/lua-language-server/wiki/Settings#diagnosticsseverity)
|
||||
'';
|
||||
|
||||
ignoredFiles =
|
||||
helpers.defaultNullOpts.mkEnum
|
||||
[
|
||||
"Enable"
|
||||
"Opened"
|
||||
"Disable"
|
||||
]
|
||||
"Opened"
|
||||
''
|
||||
Set how files that have been ignored should be diagnosed.
|
||||
|
||||
- `"Enable"` - Always diagnose ignored files... kind of defeats the purpose of ignoring them.
|
||||
- `"Opened"` - Only diagnose ignored files when they are open
|
||||
- `"Disable"` - Ignored files are fully ignored
|
||||
'';
|
||||
|
||||
libraryFiles =
|
||||
helpers.defaultNullOpts.mkEnum
|
||||
[
|
||||
"Enable"
|
||||
"Opened"
|
||||
"Disable"
|
||||
]
|
||||
"Opened"
|
||||
''
|
||||
Set how files loaded with [`workspace.library`](https://github.com/LuaLS/lua-language-server/wiki/Settings#workspacelibrary) are diagnosed.
|
||||
|
||||
- `"Enable"` - Always diagnose library files
|
||||
- `"Opened"` - Only diagnose library files when they are open
|
||||
- `"Disable"` - Never diagnose library files
|
||||
'';
|
||||
|
||||
neededFileStatus =
|
||||
helpers.defaultNullOpts.mkAttrsOf
|
||||
(types.enum [
|
||||
"Any"
|
||||
"Opened"
|
||||
"None"
|
||||
"Any!"
|
||||
"Opened!"
|
||||
"None!"
|
||||
])
|
||||
{
|
||||
ambiguity-1 = "Any";
|
||||
assign-type-mismatch = "Opened";
|
||||
await-in-sync = "None";
|
||||
cast-local-type = "Opened";
|
||||
cast-type-mismatch = "Any";
|
||||
circle-doc-class = "Any";
|
||||
close-non-object = "Any";
|
||||
code-after-break = "Opened";
|
||||
codestyle-check = "None";
|
||||
count-down-loop = "Any";
|
||||
deprecated = "Any";
|
||||
different-requires = "Any";
|
||||
discard-returns = "Any";
|
||||
doc-field-no-class = "Any";
|
||||
duplicate-doc-alias = "Any";
|
||||
duplicate-doc-field = "Any";
|
||||
duplicate-doc-param = "Any";
|
||||
duplicate-index = "Any";
|
||||
duplicate-set-field = "Any";
|
||||
empty-block = "Opened";
|
||||
global-in-nil-env = "Any";
|
||||
lowercase-global = "Any";
|
||||
missing-parameter = "Any";
|
||||
missing-return = "Any";
|
||||
missing-return-value = "Any";
|
||||
need-check-nil = "Opened";
|
||||
newfield-call = "Any";
|
||||
newline-call = "Any";
|
||||
no-unknown = "None";
|
||||
not-yieldable = "None";
|
||||
param-type-mismatch = "Opened";
|
||||
redefined-local = "Opened";
|
||||
redundant-parameter = "Any";
|
||||
redundant-return = "Opened";
|
||||
redundant-return-value = "Any";
|
||||
redundant-value = "Any";
|
||||
return-type-mismatch = "Opened";
|
||||
spell-check = "None";
|
||||
trailing-space = "Opened";
|
||||
unbalanced-assignments = "Any";
|
||||
undefined-doc-class = "Any";
|
||||
undefined-doc-name = "Any";
|
||||
undefined-doc-param = "Any";
|
||||
undefined-env-child = "Any";
|
||||
undefined-field = "Opened";
|
||||
undefined-global = "Any";
|
||||
unknown-cast-variable = "Any";
|
||||
unknown-diag-code = "Any";
|
||||
unknown-operator = "Any";
|
||||
unreachable-code = "Opened";
|
||||
unused-function = "Opened";
|
||||
unused-label = "Opened";
|
||||
unused-local = "Opened";
|
||||
unused-vararg = "Opened";
|
||||
}
|
||||
''
|
||||
Maps diagnostic groups to file states.
|
||||
|
||||
Valid states:
|
||||
- `"Any"` - Any loaded file (workspace, library, etc.) will use this diagnostic group
|
||||
- `"Opened"` - Only opened files will use this diagnostic group
|
||||
- `"None"` - This diagnostic group will be disabled
|
||||
- `"Any!"` - Like `"Any"` but overrides `diagnostics.groupFileStatus`
|
||||
- `"Opened!"` - Like `"Opened"` but overrides `diagnostics.groupFileStatus`
|
||||
- `"None!"` - Like `"None"` but overrides `diagnostics.groupFileStatus`
|
||||
'';
|
||||
|
||||
severity =
|
||||
helpers.defaultNullOpts.mkAttrsOf
|
||||
(types.enum [
|
||||
"Error"
|
||||
"Warning"
|
||||
"Information"
|
||||
"Hint"
|
||||
"Error!"
|
||||
"Warning!"
|
||||
"Information!"
|
||||
"Hint!"
|
||||
])
|
||||
{
|
||||
ambiguity-1 = "Warning";
|
||||
assign-type-mismatch = "Warning";
|
||||
await-in-sync = "Warning";
|
||||
cast-local-type = "Warning";
|
||||
cast-type-mismatch = "Warning";
|
||||
circle-doc-class = "Warning";
|
||||
close-non-object = "Warning";
|
||||
code-after-break = "Hint";
|
||||
codestyle-check = "Warning";
|
||||
count-down-loop = "Warning";
|
||||
deprecated = "Warning";
|
||||
different-requires = "Warning";
|
||||
discard-returns = "Warning";
|
||||
doc-field-no-class = "Warning";
|
||||
duplicate-doc-alias = "Warning";
|
||||
duplicate-doc-field = "Warning";
|
||||
duplicate-doc-param = "Warning";
|
||||
duplicate-index = "Warning";
|
||||
duplicate-set-field = "Warning";
|
||||
empty-block = "Hint";
|
||||
global-in-nil-env = "Warning";
|
||||
lowercase-global = "Information";
|
||||
missing-parameter = "Warning";
|
||||
missing-return = "Warning";
|
||||
missing-return-value = "Warning";
|
||||
need-check-nil = "Warning";
|
||||
newfield-call = "Warning";
|
||||
newline-call = "Warning";
|
||||
no-unknown = "Warning";
|
||||
not-yieldable = "Warning";
|
||||
param-type-mismatch = "Warning";
|
||||
redefined-local = "Hint";
|
||||
redundant-parameter = "Warning";
|
||||
redundant-return = "Hint";
|
||||
redundant-return-value = "Warning";
|
||||
redundant-value = "Warning";
|
||||
return-type-mismatch = "Warning";
|
||||
spell-check = "Information";
|
||||
trailing-space = "Hint";
|
||||
unbalanced-assignments = "Warning";
|
||||
undefined-doc-class = "Warning";
|
||||
undefined-doc-name = "Warning";
|
||||
undefined-doc-param = "Warning";
|
||||
undefined-env-child = "Information";
|
||||
undefined-field = "Warning";
|
||||
undefined-global = "Warning";
|
||||
unknown-cast-variable = "Warning";
|
||||
unknown-diag-code = "Warning";
|
||||
unknown-operator = "Warning";
|
||||
unreachable-code = "Hint";
|
||||
unused-function = "Hint";
|
||||
unused-label = "Hint";
|
||||
unused-local = "Hint";
|
||||
unused-vararg = "Hint";
|
||||
}
|
||||
''
|
||||
Maps diagnostic groups to severity levels.
|
||||
- `"Error"` - An error will be raised
|
||||
- `"Warning"` - A warning will be raised
|
||||
- `"Information"` - An information or note will be raised
|
||||
- `"Hint"` - The affected code will be "hinted" at
|
||||
- `"Error!"` - Like `"Error"` but overrides `diagnostics.groupSeverity`
|
||||
- `"Warning!"` -Like `"Warning"` but overrides `diagnostics.groupSeverity`
|
||||
- `"Information!"` - Like `"Information"` but overrides `diagnostics.groupSeverity`
|
||||
- `"Hint!"` - Like `"Hint"` but overrides `diagnostics.groupSeverity`
|
||||
'';
|
||||
|
||||
unusedLocalExclude = helpers.defaultNullOpts.mkListOf types.str [ ] ''
|
||||
Define variable names that will not be reported as an unused local by
|
||||
[`unused-local`](https://github.com/LuaLS/lua-language-server/wiki/Diagnostics#unused-local).
|
||||
'';
|
||||
|
||||
workspaceDelay = helpers.defaultNullOpts.mkUnsignedInt 3000 ''
|
||||
Define the delay between diagnoses of the workspace in milliseconds.
|
||||
Every time a file is edited, created, deleted, etc. the workspace will be re-diagnosed in the
|
||||
background after this delay.
|
||||
Setting to a negative number will disable workspace diagnostics.
|
||||
'';
|
||||
|
||||
workspaceEvent =
|
||||
helpers.defaultNullOpts.mkEnum
|
||||
[
|
||||
"OnChange"
|
||||
"OnSave"
|
||||
"None"
|
||||
]
|
||||
"OnSave"
|
||||
''
|
||||
Set when the workspace diagnostics should be analyzed.
|
||||
It can be performed after each change, after a save, or never automatically triggered.
|
||||
|
||||
Valid events:
|
||||
- `"OnChange"`
|
||||
- `"OnSave"`
|
||||
- `"None"`
|
||||
'';
|
||||
|
||||
workspaceRate = helpers.defaultNullOpts.mkUnsignedInt 100 ''
|
||||
Define the rate at which the workspace will be diagnosed as a percentage.
|
||||
`100` is 100% speed so the workspace will be diagnosed as fast as possible.
|
||||
The rate can be lowered to reduce CPU usage, but the diagnosis speed will also become slower.
|
||||
The currently opened file will always be diagnosed at `100`% speed, regardless of this setting.
|
||||
'';
|
||||
};
|
||||
|
||||
doc = {
|
||||
packageName = helpers.defaultNullOpts.mkListOf types.str [ ] ''
|
||||
The pattern used for matching field names as a package-private field.
|
||||
Fields that match any of the patterns provided will be package-private.
|
||||
'';
|
||||
|
||||
privateName = helpers.defaultNullOpts.mkListOf types.str [ ] ''
|
||||
The pattern used for matching field names as a private field.
|
||||
Fields that match any of the patterns provided will be private to that class.
|
||||
'';
|
||||
|
||||
protectedName = helpers.defaultNullOpts.mkListOf types.str [ ] ''
|
||||
The pattern used for matching field names as a protected field.
|
||||
Fields that match any of the patterns provided will be private to that class and its child classes.
|
||||
'';
|
||||
};
|
||||
|
||||
format = {
|
||||
defaultConfig = helpers.defaultNullOpts.mkAttrsOf types.str { } ''
|
||||
The default configuration for the formatter.
|
||||
If there is a `.editorconfig` in the workspace, it will take priority.
|
||||
Read more on the [formatter's GitHub page](https://github.com/CppCXY/EmmyLuaCodeStyle/tree/master/docs).
|
||||
'';
|
||||
|
||||
enable = helpers.defaultNullOpts.mkBool true ''
|
||||
Whether the built-in formatted should be enabled or not.
|
||||
'';
|
||||
};
|
||||
|
||||
hint = {
|
||||
arrayIndex =
|
||||
helpers.defaultNullOpts.mkEnum
|
||||
[
|
||||
"Enable"
|
||||
"Auto"
|
||||
"Disable"
|
||||
]
|
||||
"Auto"
|
||||
''
|
||||
- `"Enable"` - Show hint in all tables
|
||||
- `"Auto"` - Only show hint when there is more than 3 items or the table is mixed (indexes and keys)
|
||||
- `"Disable"` - Disable array index hints
|
||||
'';
|
||||
|
||||
await = helpers.defaultNullOpts.mkBool true ''
|
||||
If a function has been defined as [`@async`](https://github.com/LuaLS/lua-language-server/wiki/Annotations#async),
|
||||
display an `await` hint when it is being called.
|
||||
'';
|
||||
|
||||
enable = helpers.defaultNullOpts.mkBool false ''
|
||||
Whether inline hints should be enabled or not.
|
||||
'';
|
||||
|
||||
paramName =
|
||||
helpers.defaultNullOpts.mkEnumFirstDefault
|
||||
[
|
||||
"All"
|
||||
"Literal"
|
||||
"Disable"
|
||||
]
|
||||
''
|
||||
Whether parameter names should be hinted when typing out a function call.
|
||||
|
||||
- `"All"` - All parameters are hinted
|
||||
- `"Literal"` - Only literal type parameters are hinted
|
||||
- `"Disable"` - No parameter hints are shown
|
||||
'';
|
||||
|
||||
paramType = helpers.defaultNullOpts.mkBool true ''
|
||||
Show a hint for parameter types at a function definition.
|
||||
Requires the parameters to be defined with [`@param`](https://github.com/LuaLS/lua-language-server/wiki/Annotations#param).
|
||||
'';
|
||||
|
||||
semicolon =
|
||||
helpers.defaultNullOpts.mkEnum
|
||||
[
|
||||
"All"
|
||||
"SameLine"
|
||||
"Disable"
|
||||
]
|
||||
"SameLine"
|
||||
''
|
||||
Whether to show a hint to add a semicolon to the end of a statement.
|
||||
|
||||
- `"All"` - Show on every line
|
||||
- `"SameLine"` - Show between two statements on one line
|
||||
- `"Disable"` - Never hint a semicolon
|
||||
'';
|
||||
|
||||
setType = helpers.defaultNullOpts.mkBool false ''
|
||||
Show a hint to display the type being applied at assignment operations.
|
||||
'';
|
||||
};
|
||||
|
||||
hover = {
|
||||
enable = helpers.defaultNullOpts.mkBool true ''
|
||||
Whether to enable hover tooltips or not.
|
||||
'';
|
||||
|
||||
enumsLimit = helpers.defaultNullOpts.mkUnsignedInt 5 ''
|
||||
When a value has multiple possible types, hovering it will display them.
|
||||
This setting limits how many will be displayed in the tooltip before they are truncated.
|
||||
'';
|
||||
|
||||
expandAlias = helpers.defaultNullOpts.mkBool true ''
|
||||
When hovering a value with an [`@alias`](https://github.com/LuaLS/lua-language-server/wiki/Annotations#alias)
|
||||
for its type, should the alias be expanded into its values.
|
||||
When enabled, `---@alias myType boolean|number` appears as `boolean|number`, otherwise it will
|
||||
appear as `myType`.
|
||||
'';
|
||||
|
||||
previewFields = helpers.defaultNullOpts.mkUnsignedInt 50 ''
|
||||
When a table is hovered, its fields will be displayed in the tooltip.
|
||||
This setting limits how many fields can be seen in the tooltip.
|
||||
Setting to `0` will disable this feature.
|
||||
'';
|
||||
|
||||
viewNumber = helpers.defaultNullOpts.mkBool true ''
|
||||
Enable hovering a non-decimal value to see its numeric value.
|
||||
'';
|
||||
|
||||
viewString = helpers.defaultNullOpts.mkBool true ''
|
||||
Enable hovering a string that contains an escape character to see its true string value.
|
||||
For example, hovering `"\x48"` will display `"H"`.
|
||||
'';
|
||||
|
||||
viewStringMax = helpers.defaultNullOpts.mkUnsignedInt 1000 ''
|
||||
The maximum number of characters that can be previewed by hovering a string before it is
|
||||
truncated.
|
||||
'';
|
||||
};
|
||||
|
||||
misc = {
|
||||
parameters = helpers.defaultNullOpts.mkListOf types.str [ ] ''
|
||||
[Command line parameters](https://github.com/LuaLS/lua-language-server/wiki/Getting-Started#run)
|
||||
to be passed along to the server `exe` when starting through Visual Studio Code.
|
||||
'';
|
||||
|
||||
executablePath = helpers.defaultNullOpts.mkStr "" ''
|
||||
Manually specify the path for the Lua Language Server executable file.
|
||||
'';
|
||||
};
|
||||
|
||||
runtime = {
|
||||
builtin =
|
||||
helpers.defaultNullOpts.mkAttrsOf
|
||||
(types.enum [
|
||||
"default"
|
||||
"enable"
|
||||
"disable"
|
||||
])
|
||||
{
|
||||
basic = "default";
|
||||
bit = "default";
|
||||
bit32 = "default";
|
||||
builtin = "default";
|
||||
coroutine = "default";
|
||||
debug = "default";
|
||||
ffi = "default";
|
||||
io = "default";
|
||||
jit = "default";
|
||||
math = "default";
|
||||
os = "default";
|
||||
package = "default";
|
||||
string = "default";
|
||||
table = "default";
|
||||
"table.clear" = "default";
|
||||
"table.new" = "default";
|
||||
utf8 = "default";
|
||||
}
|
||||
''
|
||||
Set whether each of the builtin Lua libraries is available in the current runtime environment.
|
||||
|
||||
Valid `library` options:
|
||||
- `"basic"`
|
||||
- `"bit"`
|
||||
- `"bit32"`
|
||||
- `"builtin"`
|
||||
- `"coroutine"`
|
||||
- `"debug"`
|
||||
- `"ffi"`
|
||||
- `"io"`
|
||||
- `"jit"`
|
||||
- `"math"`
|
||||
- `"os"`
|
||||
- `"package"`
|
||||
- `"string"`
|
||||
- `"table"`
|
||||
- `"table.clear"`
|
||||
- `"table.new"`
|
||||
- `"utf8"`
|
||||
|
||||
Valid `status` values:
|
||||
- `"default"` - The library will be enabled if it is a part of the current [`runtime.version`](https://github.com/LuaLS/lua-language-server/wiki/Settings#runtimeversion).
|
||||
- `"enable"` - Always enable this library
|
||||
- `"disable"` - Always disable this library
|
||||
'';
|
||||
|
||||
fileEncoding =
|
||||
helpers.defaultNullOpts.mkEnumFirstDefault
|
||||
[
|
||||
"utf8"
|
||||
"ansi"
|
||||
"utf16le"
|
||||
"utf16be"
|
||||
]
|
||||
''
|
||||
- `"utf8"`
|
||||
- `"ansi"` (only available on Windows)
|
||||
- `"utf16le"`
|
||||
- `"utf16be"`
|
||||
'';
|
||||
|
||||
meta = helpers.defaultNullOpts.mkStr "$\{version} $\{language} $\{encoding}" ''
|
||||
Specify the template that should be used for naming the folders that contain the generated
|
||||
definitions for the various Lua versions, languages, and encodings.
|
||||
'';
|
||||
|
||||
nonstandardSymbol =
|
||||
helpers.defaultNullOpts.mkListOf
|
||||
(types.enum [
|
||||
"//"
|
||||
"/**/"
|
||||
"`"
|
||||
"+="
|
||||
"-="
|
||||
"*="
|
||||
"/="
|
||||
"%="
|
||||
"^="
|
||||
"//="
|
||||
"|="
|
||||
"&="
|
||||
"<<="
|
||||
">>="
|
||||
"||"
|
||||
"&&"
|
||||
"!"
|
||||
"!="
|
||||
"continue"
|
||||
])
|
||||
[ ]
|
||||
''
|
||||
Add support for non-standard symbols.
|
||||
Make sure to double check that your runtime environment actually supports the symbols you are
|
||||
permitting as standard Lua does not.
|
||||
'';
|
||||
|
||||
path =
|
||||
helpers.defaultNullOpts.mkListOf types.str
|
||||
[
|
||||
"?.lua"
|
||||
"?/init.lua"
|
||||
]
|
||||
''
|
||||
Defines the paths to use when using `require`.
|
||||
For example, setting to `?/start.lua` will search for `<workspace>/myFile/start.lua` from the
|
||||
loaded files when doing `require"myFile"`.
|
||||
If [`runtime.pathStrict`](https://github.com/LuaLS/lua-language-server/wiki/Settings#runtimepathstrict)
|
||||
is `false`, `<workspace>/**/myFile/start.lua` will also be searched.
|
||||
To load files that are not in the current workspace, they will first need to be loaded using
|
||||
[`workspace.library`](https://github.com/LuaLS/lua-language-server/wiki/Settings#workspacelibrary).
|
||||
'';
|
||||
|
||||
pathStrict = helpers.defaultNullOpts.mkBool false ''
|
||||
When enabled, [`runtime.path`](https://github.com/LuaLS/lua-language-server/wiki/Settings#runtimepath)
|
||||
will only search the first level of directories.
|
||||
See the description of `runtime.path` for more info.
|
||||
'';
|
||||
|
||||
plugin = helpers.defaultNullOpts.mkStr "" ''
|
||||
The path to the [plugin](https://github.com/LuaLS/lua-language-server/wiki/Plugins) to use.
|
||||
Blank by default for security reasons.
|
||||
'';
|
||||
|
||||
pluginArgs = helpers.defaultNullOpts.mkListOf types.str [ ] ''
|
||||
Additional arguments that will be passed to the active
|
||||
[plugin](https://github.com/LuaLS/lua-language-server/wiki/Plugins).
|
||||
'';
|
||||
|
||||
special = helpers.defaultNullOpts.mkAttrsOf types.str { } ''
|
||||
Special variables can be set to be treated as other variables. For example, specifying `"include" : "require"` will result in `include` being treated like `require`.
|
||||
'';
|
||||
|
||||
unicodeName = helpers.defaultNullOpts.mkBool false ''
|
||||
Whether unicode characters should be allowed in variable names or not.
|
||||
'';
|
||||
|
||||
version = helpers.defaultNullOpts.mkStr "Lua 5.4" ''
|
||||
The Lua runtime version to use in this environment.
|
||||
'';
|
||||
};
|
||||
|
||||
semantic = {
|
||||
annotation = helpers.defaultNullOpts.mkBool true ''
|
||||
Whether semantic colouring should be enabled for type annotations.
|
||||
'';
|
||||
|
||||
enable = helpers.defaultNullOpts.mkBool true ''
|
||||
Whether semantic colouring should be enabled.
|
||||
You may need to set `editor.semanticHighlighting.enabled` to true in order for this setting to
|
||||
take effect.
|
||||
'';
|
||||
|
||||
keyword = helpers.defaultNullOpts.mkBool false ''
|
||||
Whether the server should provide semantic colouring of keywords, literals, and operators.
|
||||
You should only need to enable this setting if your editor is unable to highlight Lua's syntax.
|
||||
'';
|
||||
|
||||
variable = helpers.defaultNullOpts.mkBool true ''
|
||||
Whether the server should provide semantic colouring of variables, fields, and parameters.
|
||||
'';
|
||||
};
|
||||
|
||||
signatureHelp = {
|
||||
enable = helpers.defaultNullOpts.mkBool true ''
|
||||
The signatureHelp group contains settings for helping understand signatures.
|
||||
'';
|
||||
};
|
||||
|
||||
spell = {
|
||||
dict = helpers.defaultNullOpts.mkListOf types.str [ ] ''
|
||||
A custom dictionary of words that you know are spelt correctly but are being reported as incorrect.
|
||||
Adding words to this dictionary will make them exempt from spell checking.
|
||||
'';
|
||||
};
|
||||
|
||||
telemetry = {
|
||||
enable = helpers.defaultNullOpts.mkBool null ''
|
||||
The language server comes with opt-in telemetry to help improve the language server.
|
||||
It would be greatly appreciated if you enable this setting.
|
||||
Read the [privacy policy](https://github.com/LuaLS/lua-language-server/wiki/Home#privacy)
|
||||
before enabling.
|
||||
'';
|
||||
};
|
||||
|
||||
type = {
|
||||
castNumberToInteger = helpers.defaultNullOpts.mkBool false ''
|
||||
Whether casting a `number` to an `integer` is allowed.
|
||||
'';
|
||||
|
||||
weakNilCheck = helpers.defaultNullOpts.mkBool false ''
|
||||
Whether it is permitted to assign a union type that contains `nil` to a variable that does not
|
||||
permit it.
|
||||
When `false`, the following will throw an error because `number|nil` cannot be assigned to
|
||||
`number`.
|
||||
|
||||
```lua
|
||||
---@alias unionType number|nil
|
||||
|
||||
---@type number
|
||||
local num
|
||||
|
||||
---@cast num unionType
|
||||
```
|
||||
'';
|
||||
|
||||
weakUnionCheck = helpers.defaultNullOpts.mkBool false ''
|
||||
Whether it is permitted to assign a union type which only has one matching type to a variable.
|
||||
When `false`, the following will throw an error because `string|boolean` cannot be assigned to
|
||||
`string`.
|
||||
|
||||
```lua
|
||||
---@alias unionType string|boolean
|
||||
|
||||
---@type string
|
||||
local str = false
|
||||
```
|
||||
'';
|
||||
};
|
||||
|
||||
window = {
|
||||
progressBar = helpers.defaultNullOpts.mkBool true ''
|
||||
Show a progress bar in the bottom status bar that shows how the workspace loading is progressing.
|
||||
'';
|
||||
|
||||
statusBar = helpers.defaultNullOpts.mkBool true ''
|
||||
Show a `Lua 😺` entry in the bottom status bar that can be clicked to manually perform a
|
||||
workspace diagnosis.
|
||||
'';
|
||||
};
|
||||
|
||||
workspace = {
|
||||
checkThirdParty = helpers.defaultNullOpts.mkBool true ''
|
||||
Whether [third party libraries](https://github.com/LuaLS/lua-language-server/wiki/Libraries)
|
||||
can be automatically detected and applied.
|
||||
Third party libraries can set up the environment to be as close as possible to your target
|
||||
runtime environment.
|
||||
See [`meta/3rd`](https://github.com/LuaLS/lua-language-server/tree/master/meta/3rd)
|
||||
to view what third party libraries are currently supported.
|
||||
'';
|
||||
|
||||
ignoreDir = helpers.defaultNullOpts.mkListOf types.str [ ".vscode" ] ''
|
||||
An array of paths that will be ignored and not included in the workspace diagnosis.
|
||||
Uses `.gitignore` grammar. Can be a file or directory.
|
||||
'';
|
||||
|
||||
ignoreSubmodules = helpers.defaultNullOpts.mkBool true ''
|
||||
Whether [git submodules](https://github.blog/2016-02-01-working-with-submodules/)
|
||||
should be ignored and not included in the workspace diagnosis.
|
||||
'';
|
||||
|
||||
library = helpers.defaultNullOpts.mkListOf types.str [ ] ''
|
||||
An array of abosolute or workspace-relative paths that will be added to the workspace
|
||||
diagnosis - meaning you will get completion and context from these library files.
|
||||
Can be a file or directory.
|
||||
Files included here will have some features disabled such as renaming fields to prevent
|
||||
accidentally renaming your library files.
|
||||
Read more on the [Libraries page](https://github.com/LuaLS/lua-language-server/wiki/Libraries).
|
||||
'';
|
||||
|
||||
maxPreload = helpers.defaultNullOpts.mkUnsignedInt 5000 ''
|
||||
The maximum amount of files that can be diagnosed.
|
||||
More files will require more RAM.
|
||||
'';
|
||||
|
||||
preloadFileSize = helpers.defaultNullOpts.mkUnsignedInt 500 ''
|
||||
Files larger than this value (in KB) will be skipped when loading for workspace diagnosis.
|
||||
'';
|
||||
|
||||
supportScheme =
|
||||
helpers.defaultNullOpts.mkListOf types.str
|
||||
[
|
||||
"file"
|
||||
"untitled"
|
||||
"git"
|
||||
]
|
||||
''
|
||||
Lua file schemes to enable the language server for.
|
||||
'';
|
||||
|
||||
useGitIgnore = helpers.defaultNullOpts.mkBool true ''
|
||||
Whether files that are in `.gitignore` should be ignored by the language server when
|
||||
performing workspace diagnosis.
|
||||
'';
|
||||
|
||||
userThirdParty = helpers.defaultNullOpts.mkListOf types.str [ ] ''
|
||||
An array of paths to
|
||||
[custom third party libraries](https://github.com/LuaLS/lua-language-server/wiki/Libraries#custom).
|
||||
This path should point to a directory where **all** of your custom libraries are, not just to
|
||||
one of the libraries.
|
||||
If the below is your file structure, this setting should be `"myLuaLibraries"` - of course
|
||||
this should be an absolute path though.
|
||||
|
||||
```txt
|
||||
📦 myLuaLibraries/
|
||||
├── 📂 myCustomLibrary/
|
||||
│ ├── 📂 library/
|
||||
│ └── 📜 config.lua
|
||||
└── 📂 anotherCustomLibrary/
|
||||
├── 📂 library/
|
||||
└── 📜 config.lua
|
||||
```
|
||||
'';
|
||||
};
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue