{ "$schema": "http://json-schema.org/draft-07/schema#", "description": "Configuration file for coc.nvim", "additionalProperties": false, "definitions": { "float": { "type": "object", "properties": { "border": { "type": "boolean", "default": false, "description": "Set to true to use borders." }, "rounded": { "type": "boolean", "default": false, "description": "Use rounded borders when border is true." }, "highlight": { "type": "string", "default": "CocFloating", "description": "Background highlight group of float window." }, "title": { "type": "string", "default": "", "description": "Title used by float window." }, "borderhighlight": { "type": "string", "default": "CocFloating", "description": "Border highlight group of float window." }, "close": { "type": "boolean", "default": false, "description": "Set to true to draw close icon" }, "maxWidth": { "type": "integer", "description": "Maximum width of float window, include border." }, "maxHeight": { "type": "integer", "minimum": 2, "description": "Maximum height of float window, include border." }, "focusable": { "type": "boolean", "default": true, "description": "Enable focus by user actions (wincmds, mouse events), neovim only." }, "shadow": { "type": "boolean", "default": false, "description": "Drop shadow effect by blending with the background, neovim only." }, "winblend": { "type": "integer", "default": 0, "minimum": 0, "maximum": 100, "description": "Enables pseudo-transparency by set 'winblend' option of window, neovim only." } } }, "languageServerBase": { "type": "object", "properties": { "enable": { "type": "boolean", "default": true }, "cwd": { "type": "string", "default": "", "description": "Working directory of languageserver, absolute path or relative to workspace folder, use workspace root by default" }, "disableDynamicRegister": { "type": "boolean", "default": false, "description": "Disable dynamic registerCapability feature for this languageserver to avoid duplicate feature registration." }, "disableSnippetCompletion": { "type": "boolean", "default": false, "description": "Disable completion snippet feature for this languageserver, the languageserver may not respect it." }, "disabledFeatures": { "type": "array", "default": [], "description": "Disabled features for this languageserver.", "items": { "type": "string", "enum": [ "completion", "configuration", "workspaceFolders", "diagnostics", "willSave", "willSaveUntil", "didSaveTextDocument", "fileSystemWatcher", "hover", "signatureHelp", "definition", "references", "documentHighlight", "documentSymbol", "workspaceSymbol", "codeAction", "codeLens", "formatting", "documentFormatting", "documentRangeFormatting", "documentOnTypeFormatting", "rename", "documentLink", "executeCommand", "pullConfiguration", "typeDefinition", "implementation", "declaration", "color", "foldingRange", "selectionRange", "progress", "callHierarchy", "linkedEditing", "inlayHint", "inlineValue", "typeHierarchy", "pullDiagnostic", "fileEvents", "semanticTokens" ] } }, "formatterPriority": { "type": "number", "default": 0, "description": "Priority of this languageserver's formatter." }, "env": { "type": "object", "default": null, "description": "Environment variables for child process." }, "stdioEncoding": { "type": "string", "default": "utf8", "description": "Encoding used for stdio of child process." }, "rootPatterns": { "type": "array", "default": [], "description": "Root patterns used to resolve rootPath from current file, default to workspace root", "items": { "type": "string" } }, "requireRootPattern": { "type": "boolean", "default": false, "description": "If true, doesn't start server when root pattern not found." }, "ignoredRootPaths": { "type": "array", "default": [], "description": "Absolute root paths that language server should not use as rootPath, higher priority than rootPatterns.", "items": { "type": "string" } }, "filetypes": { "type": "array", "default": [], "description": "Supported filetypes, add * in array for all filetypes.", "items": { "type": "string" } }, "additionalSchemes": { "type": "array", "default": [], "description": "Additional URI schemes, default schemes including file & untitled.", "items": { "type": "string" } }, "revealOutputChannelOn": { "type": "string", "default": "never", "description": "Configure message level to show the output channel buffer", "enum": ["info", "warn", "error", "never"] }, "progressOnInitialization": { "type": "boolean", "default": false, "description": "Enable progress report on languageserver initialize." }, "initializationOptions": { "type": "object", "default": {}, "description": "initializationOptions passed to languageserver" }, "settings": { "type": "object", "default": {}, "description": "Settings of languageserver" }, "trace.server": { "type": "string", "default": "off", "enum": ["off", "messages", "verbose"], "description": "Trace level of communication between server and client" }, "trace.server.verbosity": { "type": "string", "default": "off", "enum": ["off", "messages", "verbose"], "description": "Trace level of communication between server and client" }, "trace.server.format": { "type": "string", "default": "text", "enum": ["text", "json"], "description": "Text format of trace messages." } } }, "languageServerSocket": { "type": "object", "allOf": [{ "$ref": "#/definitions/languageServerBase" }], "required": ["port", "filetypes"], "additionalProperties": false, "properties": { "port": { "type": "integer", "description": "Port number of socket server" }, "host": { "type": "string", "default": "127.0.0.1", "description": "Host of server" }, "disableSnippetCompletion": {}, "disableDynamicRegister": {}, "disabledFeatures": {}, "formatterPriority": {}, "enable": {}, "rootPatterns": {}, "requireRootPattern": {}, "ignoredRootPaths": {}, "filetypes": {}, "additionalSchemes": {}, "revealOutputChannelOn": {}, "progressOnInitialization": {}, "initializationOptions": {}, "settings": {}, "stdioEncoding": {}, "trace.server": {}, "trace.server.verbosity": {}, "trace.server.format": {} } }, "languageServerModule": { "type": "object", "allOf": [{ "$ref": "#/definitions/languageServerBase" }], "required": ["module", "filetypes"], "additionalProperties": false, "properties": { "module": { "type": "string", "default": "", "description": "Absolute path of Javascript file, should works in IPC mode" }, "args": { "type": "array", "default": [], "description": "Extra arguments of module", "items": { "type": "string" } }, "runtime": { "type": "string", "default": "", "description": "Absolute path of node runtime." }, "execArgv": { "type": "array", "default": [], "description": "ARGV passed to node when using module, normally used for debugging, ex: [\"--nolazy\", \"--inspect-brk=6045\"]", "items": { "type": "string" } }, "transport": { "type": "string", "default": "ipc", "description": "Transport kind used by server, could be 'ipc', 'stdio', 'socket' and 'pipe'", "enum": ["ipc", "stdio", "socket", "pipe"] }, "transportPort": { "type": "integer", "description": "Port number used when transport is 'socket'" }, "cwd": {}, "env": {}, "enable": {}, "disableDynamicRegister": {}, "disableSnippetCompletion": {}, "disabledFeatures": {}, "formatterPriority": {}, "rootPatterns": {}, "requireRootPattern": {}, "ignoredRootPaths": {}, "filetypes": {}, "additionalSchemes": {}, "revealOutputChannelOn": {}, "progressOnInitialization": {}, "initializationOptions": {}, "stdioEncoding": {}, "settings": {}, "trace.server": {}, "trace.server.verbosity": {}, "trace.server.format": {} } }, "languageServerCommand": { "type": "object", "required": ["command", "filetypes"], "allOf": [{ "$ref": "#/definitions/languageServerBase" }], "additionalProperties": false, "properties": { "command": { "type": "string", "default": "", "description": "Executable in $PATH to start languageserver, should not used with module" }, "args": { "type": "array", "default": [], "description": "Arguments of command", "items": { "type": "string" } }, "detached": { "type": "boolean", "default": false, "description": "Detach the languageserver process" }, "shell": { "type": "boolean", "default": false, "description": "Use shell for process" }, "cwd": {}, "env": {}, "enable": {}, "disableDynamicRegister": {}, "disableSnippetCompletion": {}, "disabledFeatures": {}, "formatterPriority": {}, "rootPatterns": {}, "requireRootPattern": {}, "ignoredRootPaths": {}, "filetypes": {}, "additionalSchemes": {}, "revealOutputChannelOn": {}, "progressOnInitialization": {}, "initializationOptions": {}, "stdioEncoding": {}, "settings": {}, "trace.server": {}, "trace.server.verbosity": {}, "trace.server.format": {} } } }, "properties": { "callHierarchy.enableTooltip": { "type": "boolean", "scope": "application", "default": true, "description": "Enable tooltip to show relative filepath of call hierarchy." }, "callHierarchy.openCommand": { "type": "string", "scope": "application", "default": "edit", "description": "Open command for callHierarchy tree view." }, "callHierarchy.splitCommand": { "type": "string", "scope": "application", "default": "botright 30vs", "description": "Window split command used by callHierarchy tree view." }, "coc.preferences.bracketEnterImprove": { "type": "boolean", "scope": "language-overridable", "description": "Improve enter inside bracket `<> {} [] ()` by add new empty line below and place cursor to it. Works with `coc#on_enter()`", "default": true }, "coc.preferences.currentFunctionSymbolAutoUpdate": { "type": "boolean", "scope": "language-overridable", "description": "Automatically update the value of b:coc_current_function on CursorHold event", "default": false }, "coc.preferences.enableLinkedEditing": { "type": "boolean", "scope": "language-overridable", "default": false, "description": "Enable linked editing support." }, "coc.preferences.enableMarkdown": { "type": "boolean", "scope": "application", "description": "Tell the language server that markdown text format is supported, note that markdown text may not rendered as expected.", "default": true }, "coc.preferences.enableMessageDialog": { "type": "boolean", "scope": "application", "default": false, "description": "Enable messages shown in notification dialog." }, "coc.preferences.excludeImageLinksInMarkdownDocument": { "type": "boolean", "description": "Exclude image links from markdown text in float window.", "scope": "application", "default": true }, "coc.preferences.extensionUpdateCheck": { "type": "string", "scope": "application", "default": "never", "description": "Interval for check extension update, could be daily, weekly, never", "enum": ["daily", "weekly", "never"] }, "coc.preferences.floatActions": { "type": "boolean", "scope": "application", "description": "Set to false to disable float/popup support for actions menu.", "default": true }, "coc.preferences.formatOnSaveFiletypes": { "type": "array", "scope": "resource", "default": [], "description": "Filetypes that should run format on save.", "items": { "type": "string" } }, "coc.preferences.formatOnType": { "type": "boolean", "scope": "language-overridable", "description": "Set to true to enable formatting on typing", "default": false }, "coc.preferences.formatOnTypeFiletypes": { "type": "array", "default": [], "scope": "resource", "description": "Filetypes that should run format on typing. Only take effect when `coc.preferences.formatOnType` set `true`", "items": { "type": "string" } }, "coc.preferences.jumpCommand": { "anyOf": [ { "type": "string", "enum": [ "edit", "split", "vsplit", "tabe", "drop", "tab drop", "pedit" ] }, { "type": "string", "minimum": 1 } ], "scope": "application", "description": "Command used for location jump, like goto definition, goto references etc. Can be also a custom command that gives file as an argument.", "default": "edit" }, "coc.preferences.maxFileSize": { "type": "string", "scope": "application", "default": "10MB", "description": "Maximum file size in bytes that coc.nvim should handle, default '10MB'" }, "coc.preferences.messageLevel": { "type": "string", "scope": "application", "description": "Message level for filter echoed messages, could be 'more', 'warning' and 'error'", "default": "more", "enum": ["more", "warning", "error"] }, "coc.preferences.promptInput": { "type": "boolean", "description": "Use prompt buffer in float window for user input.", "scope": "application", "default": true }, "coc.preferences.renameFillCurrent": { "type": "boolean", "scope": "application", "default": true, "description": "Disable to stop Refactor-Rename float/popup window from populating with old name in the New Name field." }, "coc.preferences.rootPatterns": { "type": "array", "default": [".git", ".hg", ".projections.json"], "scope": "application", "description": "Root patterns to resolve workspaceFolder from parent folders of opened files, resolved from up to down.", "items": { "type": "string" } }, "coc.preferences.silentAutoupdate": { "type": "boolean", "description": "Not open split window with update status when performing auto update.", "scope": "application", "default": true }, "coc.preferences.useQuickfixForLocations": { "type": "boolean", "scope": "application", "description": "Use vim's quickfix list for jump locations,\n need restart on change.", "default": false }, "coc.preferences.watchmanPath": { "type": "string", "scope": "application", "description": "executable path for https://facebook.github.io/watchman/, detected from $PATH by default", "default": null }, "coc.preferences.willSaveHandlerTimeout": { "type": "integer", "scope": "application", "default": 500, "minimum": 200, "maximum": 5000, "description": "Will save handler timeout" }, "coc.source.around.disableSyntaxes": { "type": "array", "default": [], "scope": "application", "items": { "type": "string" } }, "coc.source.around.enable": { "type": "boolean", "scope": "application", "default": true }, "coc.source.around.priority": { "type": "integer", "scope": "application", "default": 1 }, "coc.source.around.shortcut": { "type": "string", "scope": "application", "default": "A" }, "coc.source.buffer.disableSyntaxes": { "type": "array", "default": [], "scope": "application", "items": { "type": "string" } }, "coc.source.buffer.enable": { "type": "boolean", "scope": "application", "default": true }, "coc.source.buffer.ignoreGitignore": { "type": "boolean", "default": true, "scope": "application", "description": "Ignore git ignored files for buffer words" }, "coc.source.buffer.priority": { "type": "integer", "scope": "application", "default": 1 }, "coc.source.buffer.shortcut": { "type": "string", "scope": "application", "default": "B" }, "coc.source.file.disableSyntaxes": { "type": "array", "default": [], "scope": "application", "items": { "type": "string" } }, "coc.source.file.enable": { "type": "boolean", "scope": "application", "default": true }, "coc.source.file.ignoreHidden": { "type": "boolean", "scope": "application", "default": true, "description": "Ignore completion for hidden files" }, "coc.source.file.ignorePatterns": { "type": "array", "scope": "application", "default": [], "description": "Ignore patterns of matcher", "items": { "type": "string" } }, "coc.source.file.priority": { "type": "integer", "scope": "application", "default": 10 }, "coc.source.file.shortcut": { "type": "string", "scope": "application", "default": "F" }, "coc.source.file.triggerCharacters": { "type": "array", "default": ["/", "\\"], "scope": "application", "items": { "type": "string" } }, "coc.source.file.trimSameExts": { "type": "array", "scope": "application", "default": [".ts", ".js"], "description": "Trim same extension on file completion", "items": { "type": "string" } }, "codeLens.enable": { "type": "boolean", "scope": "language-overridable", "description": "Enable codeLens feature, require neovim with set virtual text feature.", "default": false }, "codeLens.position": { "type": "string", "scope": "resource", "enum": ["top", "eol", "right_align"], "description": "Position of codeLens, requires nvim >= 0.6.0", "default": "top" }, "codeLens.separator": { "type": "string", "scope": "resource", "description": "Separator text for codeLens in virtual text", "default": "" }, "codeLens.subseparator": { "type": "string", "scope": "resource", "description": "Subseparator between codeLenses in virtual text", "default": " " }, "colors.filetypes": { "type": "array", "default": [], "scope": "resource", "description": "Filetypes that should be enabled for colors highlight feature, use \"*\" for all filetypes.", "items": { "type": "string" } }, "colors.highlightPriority": { "type": "number", "scope": "resource", "description": "Priority for colors highlights, works on vim8 and neovim >= 0.6.0", "default": 1000, "maximum": 4096 }, "cursors.cancelKey": { "type": "string", "scope": "application", "default": "", "description": "Key used for cancel cursors session." }, "cursors.nextKey": { "type": "string", "scope": "application", "default": "", "description": "Key used for jump to next cursors position." }, "cursors.previousKey": { "type": "string", "scope": "application", "default": "", "description": "Key used for jump to previous cursors position." }, "cursors.wrapscan": { "type": "boolean", "scope": "application", "default": true, "description": "Searches wrap around the first or last cursors range." }, "diagnostic.autoRefresh": { "type": "boolean", "scope": "language-overridable", "description": "Enable automatically refresh diagnostics, use diagnosticRefresh action when it's disabled.", "default": true }, "diagnostic.checkCurrentLine": { "type": "boolean", "scope": "language-overridable", "description": "When enabled, show all diagnostics of current line if there are none at the current position.", "default": false }, "diagnostic.displayByAle": { "type": "boolean", "scope": "language-overridable", "description": "Use Ale for display diagnostics in vim, will disable coc for display diagnostics, restart required on change.", "default": false }, "diagnostic.enable": { "type": "boolean", "scope": "language-overridable", "description": "Set to false to disable diagnostic display", "default": true }, "diagnostic.enableHighlightLineNumber": { "type": "boolean", "scope": "application", "default": true, "description": "Enable highlighting line numbers for diagnostics, only works with neovim." }, "diagnostic.enableMessage": { "type": "string", "scope": "application", "default": "always", "description": "When to enable show messages of diagnostics.", "enum": ["always", "jump", "never"] }, "diagnostic.enableSign": { "type": "boolean", "scope": "language-overridable", "default": true, "description": "Enable signs for diagnostics." }, "diagnostic.errorSign": { "type": "string", "scope": "application", "description": "Text of error sign", "default": ">>" }, "diagnostic.filetypeMap": { "type": "object", "scope": "application", "description": "A map between buffer filetype and the filetype assigned to diagnostics. To syntax highlight diagnostics with their parent buffer type use `\"default\": \"bufferType\"`", "default": {} }, "diagnostic.floatConfig": { "type": "object", "scope": "application", "description": "Configure float window style of diagnostic message.", "allOf": [{ "$ref": "#/definitions/float" }], "additionalProperties": false, "properties": { "border": {}, "rounded": {}, "highlight": {}, "borderhighlight": {}, "title": {}, "close": {}, "maxHeight": {}, "maxWidth": {}, "winblend": {}, "focusable": {}, "shadow": {} } }, "diagnostic.format": { "type": "string", "scope": "language-overridable", "description": "Define the diagnostic format that shown in float window or echoed, available parts: source, code, severity, message", "default": "%message (%source%code)" }, "diagnostic.highlightLimit": { "type": "number", "scope": "language-overridable", "description": "Limit count for highlighted diagnostics, too many diagnostic highlights could make vim stop responding", "default": 1000 }, "diagnostic.highlightPriority": { "type": "number", "scope": "language-overridable", "description": "Priority for diagnostic highlights, works on vim8 and neovim >= 0.6.0", "default": 4096, "maximum": 4096, "minimum": 110 }, "diagnostic.hintSign": { "type": "string", "scope": "application", "description": "Text of hint sign", "default": ">>" }, "diagnostic.infoSign": { "type": "string", "scope": "application", "description": "Text of info sign", "default": ">>" }, "diagnostic.level": { "type": "string", "scope": "resource", "description": "Used for filter diagnostics by diagnostic severity.", "default": "hint", "enum": ["hint", "information", "warning", "error"] }, "diagnostic.locationlistLevel": { "type": ["string", "null"], "scope": "language-overridable", "description": "Filter diagnostics in locationlist.", "default": null, "enum": ["hint", "information", "warning", "error"] }, "diagnostic.locationlistUpdate": { "type": "boolean", "scope": "language-overridable", "description": "Update locationlist on diagnostics change, only works with locationlist opened by :CocDiagnostics command and first window of associated buffer.", "default": true }, "diagnostic.messageDelay": { "type": "number", "scope": "application", "description": "How long to wait (in milliseconds) before displaying the diagnostic message with echo or float", "default": 200 }, "diagnostic.messageLevel": { "type": ["string", "null"], "scope": "language-overridable", "description": "Filter diagnostic message in float window/popup.", "default": null, "enum": ["hint", "information", "warning", "error"] }, "diagnostic.messageTarget": { "type": "string", "scope": "language-overridable", "description": "Diagnostic message target.", "default": "float", "enum": ["echo", "float"] }, "diagnostic.refreshOnInsertMode": { "type": "boolean", "scope": "language-overridable", "description": "Enable diagnostic refresh on insert mode, default false.", "default": false }, "diagnostic.separateRelatedInformationAsDiagnostics": { "type": "boolean", "default": false, "scope": "application", "description": "Separate related information as diagnostics." }, "diagnostic.showDeprecated": { "type": "boolean", "default": true, "scope": "language-overridable", "description": "Show diagnostics with deprecated tag." }, "diagnostic.showUnused": { "type": "boolean", "default": true, "scope": "language-overridable", "description": "Show diagnostics with unused tag, affects highlight, sign, virtual text, message" }, "diagnostic.signLevel": { "type": ["string", "null"], "scope": "language-overridable", "description": "Filter diagnostics displayed in signcolumn.", "default": null, "enum": ["hint", "information", "warning", "error"] }, "diagnostic.signPriority": { "type": "number", "scope": "resource", "description": "Priority of diagnostic signs, default to 10", "default": 10 }, "diagnostic.virtualText": { "type": "boolean", "scope": "language-overridable", "description": "Use virtual text to display diagnostics, requires neovim >= 0.5.0 or vim >= 9.0.0067.", "default": false }, "diagnostic.virtualTextAlign": { "type": "string", "scope": "language-overridable", "description": "Position of virtual text, default 'after'. Vim9 only", "default": "after", "enum": ["after", "right", "below"] }, "diagnostic.virtualTextCurrentLineOnly": { "type": "boolean", "scope": "language-overridable", "description": "Only show virtualText diagnostic on current cursor line", "default": true }, "diagnostic.virtualTextFormat": { "type": "string", "scope": "language-overridable", "description": "Define the virtual text diagnostic format, available parts: source, code, severity, message", "default": "%message" }, "diagnostic.virtualTextLevel": { "type": ["string", "null"], "scope": "language-overridable", "description": "Filter diagnostic message in virtual text by level", "default": null, "enum": ["hint", "information", "warning", "error"] }, "diagnostic.virtualTextLimitInOneLine": { "type": "integer", "scope": "language-overridable", "minimum": 1, "description": "The maximum number of diagnostic messages to disaply in one line", "default": 999 }, "diagnostic.virtualTextLineSeparator": { "type": "string", "scope": "language-overridable", "description": "The text that will mark a line end from the diagnostic message", "default": " \\ " }, "diagnostic.virtualTextLines": { "type": "number", "scope": "language-overridable", "description": "The number of non empty lines from a diagnostic to display", "default": 3 }, "diagnostic.virtualTextPrefix": { "type": "string", "scope": "language-overridable", "description": "The prefix added virtual text diagnostics", "default": " " }, "diagnostic.virtualTextWinCol": { "type": ["number", "null"], "scope": "language-overridable", "description": "Window column number to align virtual text, neovim only.", "default": null }, "diagnostic.warningSign": { "type": "string", "scope": "application", "description": "Text of warning sign", "default": "⚠" }, "dialog.confirmKey": { "type": "string", "default": "", "scope": "application", "description": "Confirm key for confirm selection used by menu and picker, you can always use to cancel." }, "dialog.floatBorderHighlight": { "type": ["string", "null"], "default": null, "scope": "application", "description": "Highlight group for border of dialog window/popup, default to 'CocFloating'" }, "dialog.floatHighlight": { "type": ["string", "null"], "default": null, "scope": "application", "description": "Highlight group for dialog window/popup, default to 'CocFloating'" }, "dialog.maxHeight": { "type": "number", "default": 30, "scope": "application", "description": "Maximum height of dialog window." }, "dialog.maxWidth": { "type": "number", "default": 80, "scope": "application", "description": "Maximum width of dialog window." }, "dialog.pickerButtonShortcut": { "type": "boolean", "default": true, "scope": "application", "description": "Show shortcut in buttons of picker dialog window/popup, used when dialog.pickerButtons is true." }, "dialog.pickerButtons": { "type": "boolean", "default": true, "scope": "application", "description": "Show buttons for picker dialog window/popup." }, "dialog.rounded": { "type": "boolean", "default": true, "scope": "application", "description": "use rounded border for dialog window." }, "dialog.shortcutHighlight": { "type": "string", "default": "MoreMsg", "scope": "application", "description": "Highlight group for shortcut character in menu dialog, default to 'MoreMsg'" }, "documentHighlight.priority": { "type": "number", "default": -1, "scope": "resource", "description": "Match priority used by document highlight, see ':h matchadd'" }, "documentHighlight.timeout": { "type": "integer", "default": 300, "minimum": 200, "maximum": 5000, "scope": "resource", "description": "Timeout for document highlight, in milliseconds." }, "floatFactory.floatConfig": { "type": "object", "scope": "application", "description": "Configure default style float window/popup created by float factory (created around cursor and automatically closed)", "allOf": [{ "$ref": "#/definitions/float" }], "additionalProperties": false, "properties": { "border": {}, "rounded": {}, "highlight": {}, "borderhighlight": {}, "title": {}, "close": {}, "maxWidth": {}, "maxHeight": {}, "winblend": {}, "focusable": {}, "shadow": {} } }, "hover.autoHide": { "type": "boolean", "scope": "application", "default": true, "description": "Automatically hide hover float window on CursorMove or InsertEnter." }, "hover.floatConfig": { "type": "object", "scope": "application", "description": "Configure float window style of hover documents.", "allOf": [{ "$ref": "#/definitions/float" }], "additionalProperties": false, "properties": { "border": {}, "rounded": {}, "highlight": {}, "borderhighlight": {}, "title": {}, "close": {}, "maxHeight": {}, "maxWidth": {}, "winblend": {}, "focusable": {}, "shadow": {} } }, "hover.previewMaxHeight": { "type": "number", "scope": "resource", "default": 12, "description": "Max height of preview window for hover." }, "hover.target": { "type": "string", "default": "float", "scope": "resource", "description": "Target to show hover information, default is floating window when possible.", "enum": ["preview", "echo", "float"] }, "http.proxy": { "type": "string", "default": "", "pattern": "^https?://([^:]*(:[^@]*)?@)?([^:]+|\\[[:0-9a-fA-F]+\\])(:\\d+)?/?$|^$", "description": "The proxy setting to use. If not set, will be inherited from the `http_proxy` and `https_proxy` environment variables.", "scope": "application" }, "http.proxyAuthorization": { "type": ["null", "string"], "description": "The value to send as the `Proxy-Authorization` header for every network request.", "default": null, "scope": "application" }, "http.proxyCA": { "type": "string", "description": "CA (file) to use as Certificate Authority", "default": null, "scope": "application" }, "http.proxyStrictSSL": { "type": "boolean", "description": "Controls whether the proxy server certificate should be verified against the list of supplied CAs", "default": true, "scope": "application" }, "inlayHint.enable": { "type": "boolean", "default": true, "scope": "language-overridable", "description": "Enable inlay hint support" }, "inlayHint.enableParameter": { "type": "boolean", "scope": "language-overridable", "default": true, "description": "Enable inlay hints for parameters." }, "inlayHint.display": { "type": "boolean", "scope": "language-overridable", "default": true, "description": "Display inlay hints." }, "inlayHint.filetypes": { "type": ["array", "null"], "scope": "application", "description": "Filetypes that enable inlayHint, all filetypes are enabled by default", "deprecationMessage": "Use inlayHint.enable with language scope instead", "default": null, "items": { "type": "string" } }, "inlayHint.parameterSeparator": { "type": "string", "scope": "language-overridable", "default": "", "description": "Separator for parameter inlay hint, neovim only." }, "inlayHint.refreshOnInsertMode": { "type": "boolean", "default": false, "scope": "language-overridable", "description": "Refresh inlayHints on insert mode." }, "inlayHint.subSeparator": { "type": "string", "scope": "language-overridable", "default": " ", "description": "Separator for chained inlay hints, neovim only." }, "inlayHint.typeSeparator": { "type": "string", "scope": "language-overridable", "default": "", "description": "Separator for type inlay hint, neovim only." }, "links.tooltip": { "type": "boolean", "scope": "application", "description": "Show tooltip of link under cursor on CursorHold, neovim only", "default": false }, "list.alignColumns": { "type": "boolean", "default": false, "scope": "application", "description": "Whether to align lists in columns, default: `false`" }, "list.extendedSearchMode": { "type": "boolean", "scope": "application", "default": true, "description": "Enable extended search mode which allows multiple search patterns delimited by spaces." }, "list.height": { "type": "number", "scope": "application", "default": 10, "description": "Height of split list window." }, "list.indicator": { "type": "string", "default": ">", "scope": "application", "description": "The character used as first character in prompt line." }, "list.insertMappings": { "type": "object", "scope": "application", "default": {}, "description": "Custom keymappings on insert mode." }, "list.interactiveDebounceTime": { "type": "number", "default": 100, "scope": "application", "description": "Debounce time for input change on interactive mode." }, "list.limitLines": { "type": ["number", "null"], "scope": "application", "default": null, "description": "Limit lines for list buffer." }, "list.maxPreviewHeight": { "type": "number", "scope": "application", "default": 12, "description": "Max height for preview window of list." }, "list.menuAction": { "type": "boolean", "default": false, "scope": "application", "description": "Use menu picker instead of confirm() for choose action." }, "list.nextKeymap": { "type": "string", "scope": "application", "default": "", "description": "Key used for select next line on insert mode." }, "list.normalMappings": { "type": "object", "scope": "application", "default": {}, "description": "Custom keymappings on normal mode." }, "list.previewHighlightGroup": { "type": "string", "scope": "application", "default": "Search", "description": "Highlight group used for highlight the range in preview window." }, "list.previewSplitRight": { "type": "boolean", "scope": "application", "default": false, "description": "Use vsplit for preview window." }, "list.previewToplineOffset": { "type": "number", "scope": "application", "default": 3, "description": "Topline offset for list previews" }, "list.previewToplineStyle": { "type": "string", "scope": "application", "default": "offset", "description": "Topline style for list previews", "enum": ["offset", "middle"] }, "list.previousKeymap": { "type": "string", "scope": "application", "default": "", "description": "Key used for select previous line on insert mode." }, "list.selectedSignText": { "type": "string", "scope": "application", "default": "*", "description": "Sign text for selected lines." }, "list.signOffset": { "type": "number", "scope": "application", "default": 900, "description": "Sign offset of list, should be different from other plugins." }, "list.smartCase": { "type": "boolean", "default": false, "scope": "application", "description": "Use smartcase match for fuzzy match and strict match, --ignore-case will be ignored, may not affect interactive list." }, "list.source.diagnostics.includeCode": { "type": "boolean", "scope": "application", "description": "Whether to show the diagnostic code in the list.", "default": true }, "list.source.diagnostics.pathFormat": { "type": "string", "scope": "application", "description": "Decide how the filepath is shown in the list.", "enum": ["full", "short", "filename", "hidden"], "default": "full" }, "list.source.outline.ctagsFiletypes": { "type": "array", "scope": "application", "default": [], "description": "Filetypes that should use ctags for outline instead of language server.", "items": { "type": "string" } }, "list.source.symbols.excludes": { "type": "array", "scope": "application", "default": [], "description": "Patterns of minimatch for filepath to exclude from symbols list.", "items": { "type": "string" } }, "list.statusLineSegments": { "type": ["array", "null"], "scope": "application", "default": [ "%#CocListMode#-- %{coc#list#status(\"mode\")} --%*", "%{coc#list#status(\"loading\")}", "%{coc#list#status(\"args\")}", "(%L/%{coc#list#status(\"total\")})", "%=", "%#CocListPath# %{coc#list#status(\"cwd\")} %l/%L%*" ], "items": { "types": "string" }, "description": "An array of statusline segments that will be used to draw the status line for list windows." }, "notification.statusLineProgress": { "type": "boolean", "default": true, "scope": "application", "description": "Show progress notification in status line, instead of float window/popup." }, "notification.border": { "type": "boolean", "default": true, "scope": "application", "description": "Enable rounded border for notification windows." }, "notification.disabledProgressSources": { "type": "array", "default": [], "scope": "application", "description": "Sources that should be disabled for message progress, use * to disable all message only progresses", "items": { "type": "string" } }, "notification.focusable": { "type": "boolean", "default": true, "scope": "application", "description": "Enable focus by user actions (wincmds, mouse events), neovim only." }, "notification.highlightGroup": { "type": "string", "default": "Normal", "scope": "application", "description": "Highlight group of notification dialog." }, "notification.marginRight": { "type": "integer", "default": 10, "scope": "application", "description": "Margin right to the right of editor window." }, "notification.maxHeight": { "type": "integer", "default": 10, "scope": "application", "description": "Maximum content height of notification dialog." }, "notification.maxWidth": { "type": "integer", "default": 60, "scope": "application", "description": "Maximum content width of notification dialog." }, "notification.minProgressWidth": { "type": "integer", "default": 30, "scope": "application", "description": "Minimal with of progress notification." }, "notification.timeout": { "type": "integer", "default": 10000, "scope": "application", "description": "Timeout for auto close notifications, in milliseconds." }, "notification.winblend": { "type": "integer", "default": 30, "minimum": 0, "maximum": 100, "scope": "application", "description": "Winblend option of notification window, neovim only." }, "npm.binPath": { "type": "string", "scope": "application", "default": "npm", "description": "Command or absolute path to npm or yarn." }, "outline.autoPreview": { "type": "boolean", "scope": "application", "default": false, "description": "Enable auto preview on cursor move." }, "outline.autoWidth": { "type": "boolean", "scope": "application", "default": true, "description": "Automatically increase window width to avoid wrapped lines." }, "outline.checkBufferSwitch": { "type": "boolean", "scope": "application", "default": true, "description": "Recreate outline view after user changed to another buffer on current tab." }, "outline.codeActionKinds": { "type": "array", "scope": "application", "default": ["", "quickfix", "refactor"], "description": "Filter code actions in actions menu by kinds.", "items": { "type": "string", "enum": ["", "quickfix", "refactor", "source"] } }, "outline.detailAsDescription": { "type": "boolean", "scope": "application", "default": true, "description": "Show detail as description aside with label, when false detail will be shown in tooltip on cursor hold." }, "outline.expandLevel": { "type": "number", "scope": "application", "default": 1, "description": "Expand level of tree nodes." }, "outline.followCursor": { "type": "boolean", "scope": "application", "default": true, "description": "Reveal item in outline tree on cursor hold." }, "outline.keepWindow": { "type": "boolean", "scope": "application", "default": false, "description": "Jump back to original window after outline is shown." }, "outline.previewBorder": { "type": "boolean", "scope": "application", "default": true, "description": "Use border for preview window." }, "outline.previewBorderHighlightGroup": { "type": "string", "scope": "application", "default": "Normal", "description": "Border highlight group of preview window." }, "outline.previewBorderRounded": { "type": "boolean", "scope": "application", "default": false, "description": "Use rounded border for preview window." }, "outline.previewHighlightGroup": { "type": "string", "scope": "application", "default": "Normal", "description": "Highlight group of preview window." }, "outline.previewMaxWidth": { "type": "number", "scope": "application", "default": 80, "description": "Max width of preview window." }, "outline.previewWinblend": { "type": "integer", "scope": "application", "default": 0, "minimum": 0, "maximum": 100, "description": "Enables pseudo-transparency by set 'winblend' option of window, neovim only." }, "outline.showLineNumber": { "type": "boolean", "scope": "application", "default": true, "description": "Show line number of symbols." }, "outline.sortBy": { "type": "string", "scope": "application", "default": "category", "description": "Sort method for symbols.", "enum": ["position", "name", "category"] }, "outline.splitCommand": { "type": "string", "scope": "application", "default": "botright 30vs", "description": "Window split command used by outline." }, "outline.switchSortKey": { "type": "string", "scope": "application", "default": "", "description": "The key used to switch sort method for symbols provider of current tree view." }, "outline.togglePreviewKey": { "type": "string", "scope": "application", "default": "p", "description": "The key used to toggle auto preview feature." }, "pullDiagnostic.ignored": { "type": "array", "default": [], "scope": "application", "description": "Minimatch patterns to match full filepath that should be ignored for pullDiagnostic.", "items": { "type": "string" } }, "pullDiagnostic.onChange": { "type": "boolean", "default": true, "scope": "language-overridable", "description": "Whether to pull for diagnostics on document change." }, "pullDiagnostic.onSave": { "type": "boolean", "default": false, "scope": "language-overridable", "description": "Whether to pull for diagnostics on document save." }, "pullDiagnostic.workspace": { "type": "boolean", "default": true, "scope": "application", "description": "Whether to pull for workspace diagnostics when possible." }, "refactor.afterContext": { "type": "number", "scope": "application", "default": 3, "description": "Print num lines of trailing context after each match." }, "refactor.beforeContext": { "type": "number", "scope": "application", "default": 3, "description": "Print num lines of leading context before each match." }, "refactor.openCommand": { "type": "string", "scope": "application", "description": "Open command for refactor window.", "default": "vsplit" }, "refactor.saveToFile": { "type": "boolean", "scope": "application", "description": "Save changed buffer to file when write refactor buffer with ':noa wa' command.", "default": true }, "refactor.showMenu": { "type": "string", "scope": "application", "default": "", "description": "Refactor buffer local mapping to bring up menu for this chunk." }, "semanticTokens.combinedModifiers": { "type": "array", "scope": "language-overridable", "description": "Semantic token modifiers that should have highlight combined with syntax highlights.", "default": ["deprecated"], "items": { "type": "string" } }, "semanticTokens.enable": { "type": "boolean", "default": false, "scope": "language-overridable", "description": "Enable semantic tokens support" }, "semanticTokens.filetypes": { "type": ["array", "null"], "scope": "resource", "description": "Filetypes that enable semantic tokens highlighting or [\"*\"] for any filetype", "deprecationMessage": "Use semanticTokens.enable with language scope instead", "default": null, "items": { "type": "string" } }, "semanticTokens.highlightPriority": { "type": "number", "scope": "language-overridable", "description": "Priority for semantic tokens highlight.", "default": 2048, "maximum": 4096 }, "semanticTokens.incrementTypes": { "type": "array", "scope": "language-overridable", "description": "Semantic token types that should increase highlight when insert at the start and end position of token.", "default": ["variable", "string", "parameter"], "items": { "type": "string" } }, "signature.enable": { "type": "boolean", "scope": "language-overridable", "description": "Enable show signature help when trigger character typed.", "default": true }, "signature.floatConfig": { "type": "object", "scope": "application", "description": "Configure float window style of signature documents.", "allOf": [{ "$ref": "#/definitions/float" }], "additionalProperties": false, "properties": { "border": {}, "rounded": {}, "highlight": {}, "borderhighlight": {}, "title": {}, "close": {}, "maxHeight": {}, "maxWidth": {}, "winblend": {}, "focusable": {}, "shadow": {} } }, "signature.hideOnTextChange": { "type": "boolean", "scope": "language-overridable", "description": "Hide signature float window when text changed on insert mode.", "default": false }, "signature.preferShownAbove": { "type": "boolean", "scope": "application", "description": "Show signature help float window above cursor when possible, require restart service on change.", "default": true }, "signature.target": { "type": "string", "scope": "language-overridable", "description": "Target of signature help, use float when possible by default.", "default": "float", "enum": ["float", "echo"] }, "signature.triggerSignatureWait": { "type": "integer", "scope": "language-overridable", "default": 500, "minimum": 200, "maximum": 1000, "description": "Timeout for trigger signature help, in milliseconds." }, "snippet.choicesMenuPicker": { "type": "boolean", "scope": "resource", "description": "Use menu picker instead of popup menu for choices placeholder.", "default": false }, "snippet.highlight": { "type": "boolean", "scope": "resource", "description": "Use highlight group 'CocSnippetVisual' to highlight placeholders with same index of current one.", "default": false }, "snippet.nextPlaceholderOnDelete": { "type": "boolean", "scope": "resource", "description": "Automatically jump to the next placeholder when the current one is completely deleted.", "default": false }, "snippet.statusText": { "type": "string", "scope": "application", "default": "SNIP", "description": "Text shown in statusline to indicate snippet session is activated." }, "suggest.acceptSuggestionOnCommitCharacter": { "type": "boolean", "default": false, "scope": "language-overridable", "description": "Controls whether suggestions should be accepted on commit characters. For example, in JavaScript, the semi-colon (`;`) can be a commit character that accepts a suggestion and types that character." }, "suggest.asciiCharactersOnly": { "type": "boolean", "description": "Trigger suggest with ASCII characters only", "scope": "language-overridable", "default": false }, "suggest.asciiMatch": { "type": "boolean", "description": "Convert unicode characters to ascii for match", "scope": "language-overridable", "default": true }, "suggest.autoTrigger": { "type": "string", "scope": "language-overridable", "default": "always", "description": "How should completion be triggered", "enum": ["always", "trigger", "none"] }, "suggest.completionItemKindLabels": { "type": "object", "default": {}, "scope": "application", "description": "Set custom labels to completion items' kinds.", "properties": { "text": { "type": "string" }, "method": { "type": "string" }, "function": { "type": "string" }, "constructor": { "type": "string" }, "field": { "type": "string" }, "variable": { "type": "string" }, "class": { "type": "string" }, "interface": { "type": "string" }, "module": { "type": "string" }, "property": { "type": "string" }, "unit": { "type": "string" }, "value": { "type": "string" }, "enum": { "type": "string" }, "keyword": { "type": "string" }, "snippet": { "type": "string" }, "color": { "type": "string" }, "file": { "type": "string" }, "reference": { "type": "string" }, "folder": { "type": "string" }, "enumMember": { "type": "string" }, "constant": { "type": "string" }, "struct": { "type": "string" }, "event": { "type": "string" }, "operator": { "type": "string" }, "typeParameter": { "type": "string" }, "default": { "type": "string" } }, "additionalProperties": false }, "suggest.defaultSortMethod": { "type": "string", "description": "Default sorting behavior for suggested completion items.", "default": "length", "scope": "language-overridable", "enum": ["length", "alphabetical", "none"] }, "suggest.detailField": { "type": "string", "scope": "application", "default": "preview", "description": "Where to show the detail text of CompleteItem from LS.", "enum": ["abbr", "preview"] }, "suggest.detailMaxLength": { "type": "number", "scope": "application", "description": "Max length of detail that should be shown in popup menu.", "deprecationMessage": "Use suggest.labelMaxLength instead.", "default": 100 }, "suggest.enablePreselect": { "type": "boolean", "scope": "application", "description": "Enable preselect feature of LSP, works when suggest.noselect is false.", "default": true }, "suggest.fixInsertedWord": { "type": "boolean", "description": "Make inserted word replace word characters after cursor position.", "scope": "application", "default": true }, "suggest.floatConfig": { "type": "object", "scope": "application", "description": "Configure style of popup menu and documentation window of completion.", "allOf": [{ "$ref": "#/definitions/float" }], "additionalProperties": false, "properties": { "border": {}, "rounded": {}, "highlight": {}, "borderhighlight": {}, "maxWidth": {}, "winblend": {}, "shadow": {} } }, "suggest.formatItems": { "type": "array", "scope": "application", "items": { "enum": ["abbr", "menu", "kind", "shortcut"] }, "contains": { "enum": ["abbr"] }, "uniqueItems": true, "description": "Items shown in popup menu in order.", "default": ["abbr", "menu", "kind", "shortcut"] }, "suggest.highPrioritySourceLimit": { "type": "integer", "minimum": 1, "maximum": 100, "scope": "language-overridable", "description": "Max items count for source priority bigger than or equal to 90." }, "suggest.ignoreRegexps": { "type": "array", "scope": "language-overridable", "items": { "type": "string" }, "description": "Regexps to ignore when trigger suggest", "default": [] }, "suggest.invalidInsertCharacters": { "type": "array", "items": { "type": "string" }, "scope": "application", "description": "Invalid character for strip valid word when inserting text of complete item.", "default": [" ", "(", "<", "{", "[", "\r", "\n"] }, "suggest.labelMaxLength": { "type": "number", "scope": "application", "description": "Max length of abbr that shown as label of complete item.", "default": 200 }, "suggest.languageSourcePriority": { "type": "number", "default": 99, "scope": "language-overridable", "description": "Priority of language sources." }, "suggest.localityBonus": { "type": "boolean", "description": "Controls whether sorting favors words that appear close to the cursor.", "scope": "language-overridable", "default": true }, "suggest.lowPrioritySourceLimit": { "type": "integer", "minimum": 1, "maximum": 100, "scope": "language-overridable", "description": "Max items count for source priority lower than 90." }, "suggest.maxCompleteItemCount": { "type": "number", "default": 256, "scope": "language-overridable", "description": "Maximum number of complete items shown in vim" }, "suggest.minTriggerInputLength": { "type": "integer", "default": 1, "scope": "language-overridable", "description": "Minimal input length for trigger completion, default 1" }, "suggest.noselect": { "type": "boolean", "scope": "application", "description": "Not make vim select first item on popupmenu shown", "default": false }, "suggest.preferCompleteThanJumpPlaceholder": { "type": "boolean", "description": "Confirm completion instead of jump to next placeholder when completion is activated.", "scope": "resource", "default": false }, "suggest.pumFloatConfig": { "type": ["object", "null"], "scope": "application", "description": "Configure style of popup menu, suggest.floatConfig is used when not specified.", "allOf": [{ "$ref": "#/definitions/float" }], "additionalProperties": false, "default": null, "properties": { "border": {}, "rounded": {}, "highlight": {}, "borderhighlight": {}, "winblend": {}, "shadow": {} } }, "suggest.removeDuplicateItems": { "type": "boolean", "description": "Remove completion items with duplicated word for all sources, snippet items are excluded.", "scope": "language-overridable", "default": false }, "suggest.reversePumAboveCursor": { "type": "boolean", "scope": "application", "description": "Reverse order of complete items when pum shown above cursor.", "default": false }, "suggest.selection": { "type": "string", "scope": "application", "default": "first", "description": "Controls how suggestions are pre-selected when showing the suggest list.", "enum": ["first", "recentlyUsed", "recentlyUsedByPrefix"] }, "suggest.snippetIndicator": { "type": "string", "default": "~", "scope": "application", "description": "The character used in abbr of complete item to indicate the item could be expand as snippet." }, "suggest.snippetsSupport": { "type": "boolean", "scope": "language-overridable", "description": "Set to false to disable snippets support of completion.", "default": true }, "suggest.timeout": { "type": "integer", "default": 5000, "minimum": 500, "maximum": 15000, "scope": "language-overridable", "description": "Timeout for completion, in milliseconds." }, "suggest.triggerAfterInsertEnter": { "type": "boolean", "description": "Trigger completion after InsertEnter, auto trigger should be 'always' to enable this option", "scope": "language-overridable", "default": false }, "suggest.triggerCompletionWait": { "type": "integer", "default": 0, "minimum": 0, "maximum": 50, "scope": "language-overridable", "description": "Wait time between text change and completion start, cancel completion when text changed during wait." }, "suggest.virtualText": { "type": "boolean", "scope": "application", "description": "Show virtual text for insert word of selected item, requires neovim >= 0.5.0 or vim >= 9.0.0067", "default": false }, "tree.closedIcon": { "type": "string", "scope": "application", "default": "+", "description": "Closed icon of tree view." }, "tree.key.actions": { "type": "string", "scope": "application", "default": "", "description": "Trigger key to invoke actions." }, "tree.key.activeFilter": { "type": "string", "scope": "application", "default": "f", "description": "Trigger key active filter." }, "tree.key.close": { "type": "string", "scope": "application", "default": "", "description": "Trigger key to dispose the tree and close tree window." }, "tree.key.collapseAll": { "type": "string", "scope": "application", "default": "M", "description": "Trigger key to collapse all tree node." }, "tree.key.invoke": { "type": "string", "scope": "application", "default": "", "description": "Trigger key to invoke default command of current node or selection." }, "tree.key.selectNext": { "type": "string", "scope": "application", "default": "", "description": "Trigger key to select next item during filter." }, "tree.key.selectPrevious": { "type": "string", "scope": "application", "default": "", "description": "Trigger key to select previous item during filter." }, "tree.key.toggle": { "type": "string", "scope": "application", "default": "t", "description": "Trigger key to toggle expand state of tree node, does nothing with leaf node." }, "tree.key.toggleSelection": { "type": "string", "scope": "application", "default": "", "description": "Trigger key to select/unselect item" }, "tree.openedIcon": { "type": "string", "scope": "application", "default": "-", "description": "Opened icon of tree view." }, "typeHierarchy.enableTooltip": { "type": "boolean", "scope": "application", "default": true, "description": "Enable tooltip to show relative filepath of type hierarchy." }, "typeHierarchy.openCommand": { "type": "string", "scope": "application", "default": "edit", "description": "Open command for type hierarchy tree view." }, "typeHierarchy.splitCommand": { "type": "string", "scope": "application", "default": "botright 30vs", "description": "Window split command used by type hierarchy tree view." }, "workspace.bottomUpFiletypes": { "type": "array", "default": [], "scope": "application", "description": "Filetypes that should have workspace folder should resolved from base directory of file, or [\"*\"] for any filetype.", "items": { "type": "string" } }, "workspace.ignoredFiletypes": { "type": "array", "default": [], "scope": "resource", "description": "Filetypes that should be ignored for workspace folder resolve.", "items": { "type": "string" } }, "workspace.ignoredFolders": { "type": "array", "default": ["$HOME"], "scope": "application", "description": "List of folders that should not be resolved as workspace folder, environment variables and minimatch patterns can be used.", "items": { "type": "string" } }, "workspace.openOutputCommand": { "type": "string", "default": "vs", "scope": "resource", "description": "Command used to open output channel." }, "workspace.openResourceCommand": { "type": "string", "default": "tab drop", "scope": "application", "description": "Command to open files that not loaded, load files as hidden buffers when empty." }, "workspace.workspaceFolderCheckCwd": { "type": "boolean", "default": true, "scope": "application", "description": "Whether the current working directory should be used first when checking patterns match for workspace folder." }, "workspace.workspaceFolderFallbackCwd": { "type": "boolean", "default": true, "scope": "application", "description": "Use current working directory as workspace folder when no root patterns resolved." }, "languageserver": { "type": "object", "default": {}, "scope": "resource", "description": "Dictionary of languageservers, key is used as id of languageserver, restart coc.nvim required after change.", "patternProperties": { "^[_a-zA-Z]+$": { "oneOf": [ { "$ref": "#/definitions/languageServerModule" }, { "$ref": "#/definitions/languageServerCommand" }, { "$ref": "#/definitions/languageServerSocket" } ] } } } } }