{
    "_version": "9.9.0",
    "title": "JSON schema for @sap/cds-lsp user settings",
    "$schema": "http://json-schema.org/draft-06/schema#",
    "type": "object",
    "description": "This is a JSON schema representation for @sap/cds-lsp user settings",
    "properties": {
        "cds.contributions.enablement.odata": {
            "category": "Annotation Support",
            "type": "boolean",
            "default": true,
            "markdownDescription": "Provide extended annotation support for OData",
            "restartLsp": true
        },
        "cds.contributions.features.completion": {
            "category": "Annotation Support",
            "type": "boolean",
            "default": true,
            "markdownDescription": "Enable code completion for annotations"
        },
        "cds.contributions.features.diagnostics": {
            "category": "Annotation Support",
            "type": "boolean",
            "default": false,
            "markdownDescription": "Enable diagnostics for annotations"
        },
        "cds.contributions.features.hover": {
            "category": "Annotation Support",
            "type": "boolean",
            "default": true,
            "markdownDescription": "Enable hover information for annotations"
        },
        "cds.contributions.features.index": {
            "category": "Annotation Support",
            "type": "boolean",
            "default": false,
            "markdownDescription": "Enable _Goto Definition_ and _Find References_ for annotations"
        },
        "cds.contributions.features.quickFixes": {
            "category": "Annotation Support",
            "type": "boolean",
            "default": false,
            "markdownDescription": "Enable quick fixes for annotations"
        },
        "cds.contributions.features.semanticHighlighting": {
            "category": "Annotation Support",
            "type": "boolean",
            "default": false,
            "markdownDescription": "Enable semantic highlighting for annotations (additionally requires `cds.semanticHighlighting.enabled` to be enabled)"
        },
        "cds.contributions.enablement.additionalAnalyticalAnnotations": {
            "category": "Annotation Support",
            "type": "boolean",
            "default": false,
            "markdownDescription": "Provide support for additional annotations used CAP Embedded Analytics\n\nSee [capire](https://cap.cloud.sap/docs) for details",
            "restartLsp": true
        },
        "cds.contributions.registry": {
            "category": "Annotation Support",
            "type": "string",
            "default": "https://registry.npmjs.org/",
            "markdownDescription": "NPM registry to be used for installation/update of contributions (e.g. OData annotation support)"
        },
        "cds.completion.showDocumentation": {
            "category": "Code Completion",
            "type": "boolean",
            "default": true,
            "markdownDescription": "Show documentation in code completion"
        },
        "cds.completion.docFiles": {
            "category": "Code Completion",
            "type": "array",
            "default": [
                "README.md"
            ],
            "markdownDescription": "Potential names of files to show as documentation. This is an ordered list. The first filename that exists is used."
        },
        "cds.completion.formatSnippets": {
            "category": "Code Completion",
            "type": "boolean",
            "default": false,
            "markdownDescription": "Format snippets after applying in code completion"
        },
        "cds.completion.annotations.omitRedundantTypesInSnippets": {
            "category": "Code Completion",
            "type": "boolean",
            "default": false,
            "markdownDescription": "Omit redundant record types in suggested snippets"
        },
        "cds.completion.workspaceSymbols.minPrefixLength": {
            "category": "Code Completion",
            "type": "number",
            "default": -1,
            "markdownDescription": "Number of characters required to suggest (global) workspace symbols. Default is `-1` (switched off - the feature may delay completion)"
        },
        "cds.completion.workspaceSymbols.maxProposals": {
            "category": "Code Completion",
            "type": "number",
            "default": -1,
            "markdownDescription": "Maximum number of workspace symbols to suggest. Default is `-1` (all)"
        },
        "cds.completion.workspaceSymbols.useShortname": {
            "category": "Code Completion",
            "type": "boolean",
            "default": false,
            "markdownDescription": "When using workspace symbols proposals, only match the short name (last name segment) instead of the fully qualified name"
        },
        "cds.whereused.showGenericAnnotations": {
            "category": "Where-used",
            "type": "boolean",
            "default": false,
            "markdownDescription": "Find usages of same annotation names via _References_ command and explicit annotation definitions via _Definition_ command"
        },
        "cds.whereused.showStringConstants": {
            "category": "Where-used",
            "type": "boolean",
            "default": false,
            "markdownDescription": "Find same string constants via _References_ command"
        },
        "cds.workspace.persistency.enabled": {
            "category": "Where-used",
            "type": "boolean",
            "default": false,
            "markdownDescription": "(Beta) Enable persistency of where-used indexes for faster access of references and workspace symbols"
        },
        "cds.workspace.persistency.persistAfterSave": {
            "category": "Where-used",
            "type": "boolean",
            "default": true,
            "markdownDescription": "Persist where-used index of a CDS model file after save"
        },
        "cds.workspace.persistency.persistAfterCompile": {
            "category": "Where-used",
            "type": "boolean",
            "default": true,
            "markdownDescription": "Persist where-used indexes after a compile e.g. when changing a file"
        },
        "cds.workspace.persistency.restoreBeforeCompile": {
            "category": "Where-used",
            "type": "boolean",
            "default": true,
            "markdownDescription": "When compiling a model reuse persisted where-used indexes of dependent models"
        },
        "cds.workspace.persistency.restoreAfterStartup": {
            "category": "Where-used",
            "type": "boolean",
            "default": false,
            "markdownDescription": "At startup restore all persisted where-used indexes"
        },
        "cds.workspace.persistency.indexAllAfterStartup": {
            "category": "Where-used",
            "type": "boolean",
            "default": true,
            "markdownDescription": "At startup index missing/outdated where-used indexes"
        },
        "cds.workspace.persistency.garbageCollectOrphanedIndexesAfterStartup": {
            "category": "Where-used",
            "type": "boolean",
            "default": true,
            "markdownDescription": "At startup remove outdated where-used index files"
        },
        "cds.workspace.persistency.garbageCollectOrphanedIndexesAfterNSaves": {
            "category": "Where-used",
            "type": "number",
            "default": 20,
            "markdownDescription": "Remove outdated where-used index files when a certain number of saves are done"
        },
        "cds.workspace.persistency.reindexAfterCompileIfRestored": {
            "category": "Where-used",
            "type": "boolean",
            "default": false,
            "markdownDescription": "Ignore a persisted where-used index and reindex at compile even if the source content has not changed"
        },
        "cds.outline.semantical": {
            "category": "Symbols",
            "type": "boolean",
            "default": false,
            "markdownDescription": "Show a semantical outline structure as opposed to the (default) flat list"
        },
        "cds.outline.elements.associationComposition": {
            "category": "Symbols",
            "type": "boolean",
            "default": true,
            "markdownDescription": "Use specific icons for _Association_ and _Composition_ elements in _Outline_"
        },
        "cds.workspaceSymbols.lazy": {
            "category": "Symbols",
            "type": "boolean",
            "default": false,
            "markdownDescription": "_Workspace Symbols_ will show symbols that have the queried characters in the right order, but not necessarily consecutive"
        },
        "cds.workspaceSymbols.caseInsensitive": {
            "category": "Symbols",
            "type": "boolean",
            "default": false,
            "markdownDescription": "_Workspace Symbols_ will show symbols containing the given query, independent of character casings"
        },
        "cds.typeGenerator.enabled": {
            "category": "Type Generation",
            "type": "boolean",
            "default": false,
            "markdownDescription": "Generate type definitions.\nRequires `@cap-js/cds-typer` to be installed",
            "restartLsp": true
        },
        "cds.typeGenerator.outputPath": {
            "category": "Type Generation",
            "type": "string",
            "default": "./@cds-models",
            "markdownDescription": "Directory that serves as root for the generated type definitions. Relative to the project's root"
        },
        "cds.typeGenerator.command": {
            "category": "Type Generation",
            "type": "string",
            "default": "\"${typerBinary}\" \"${targetFile}\" --outputDirectory \"${outputDirectory}\"",
            "markdownDescription": "The command that is executed when generating model types. You can use the following variables in your command template:\n\n- `${typerBinary}`: the binary\n- `${targetFile}`: the file that is being typed\n- `${outputDirectory}`: the directory into which the type information is generated",
            "restartLsp": true
        },
        "sapbas.telemetryEnabled": {
            "category": "Telemetry",
            "type": "boolean",
            "default": true,
            "markdownDescription": "Enable collecting usage analytics data. If enabled, non-personally identifiable information is used to help understand the product usage and improve the tool."
        },
        "cds.diagnosticsSeverity": {
            "category": "Validation",
            "type": "string",
            "default": "Warning",
            "markdownDescription": "Minimum severity of compiler messages to show in _Problems_ view",
            "enum": [
                "Error",
                "Warning",
                "Info",
                "Hint"
            ],
            "restartLsp": true
        },
        "cds.compiler.markMissingI18nDefault": {
            "category": "Validation",
            "type": "boolean",
            "default": false,
            "markdownDescription": "Show warning problem markers for unresolved `i18n` references.\n\n**NOTE:** For huge models it may show performance degradations"
        },
        "cds.quickfix.importArtifact": {
            "category": "Validation",
            "type": "boolean",
            "default": false,
            "markdownDescription": "Provide a _quick fix_ for artifacts not yet imported (default disabled - the feature is CPU intensive)"
        },
        "cds.workspace.scanDependentModules": {
            "category": "Validation",
            "type": "boolean",
            "default": false,
            "markdownDescription": "Scan first level dependencies in node_modules. This may increase start-up time. Enable if you want code completions for global identifiers and import paths, or want to see definitions of dependencies in workspace symbols"
        },
        "cds.workspaceValidationMode": {
            "category": "Validation",
            "type": "string",
            "default": "OpenEditorsOnly",
            "markdownDescription": "Specify which CDS files are validated:\n- `ActiveEditorOnly` (default): only the active editor is validated\n- `OpenEditorsOnly` additionally keeps other open editors' validation up-to-date",
            "enum": [
                "ActiveEditorOnly",
                "OpenEditorsOnly"
            ]
        },
        "cds.workspace.scanCsn": {
            "category": "Validation",
            "type": "string",
            "default": "ByFileExtension",
            "markdownDescription": "How CSN files are detected:\n- `ByFileExtension` (default): CSN files (.csn or .csn.json) will be included in validation and workspace symbols\n- `InspectJson`: additionally looks into .json files if they are valid CSN. This will take considerably more time at scanning\n- `Off`: will not scan for CSN files at all",
            "enum": [
                "Off",
                "ByFileExtension",
                "InspectJson"
            ]
        },
        "cds.semanticHighlighting.enabled": {
            "category": "Misc",
            "type": "boolean",
            "default": false,
            "markdownDescription": "Semantic highlighting of certain identifiers",
            "restartLsp": true
        },
        "cds.refactoring.files.delete.enabled": {
            "category": "Misc",
            "type": "boolean",
            "default": true,
            "markdownDescription": "Adapt `using` statements in other files when deleting CDS files"
        },
        "cds.refactoring.files.rename.enabled": {
            "category": "Misc",
            "type": "boolean",
            "default": true,
            "markdownDescription": "Adapt `using` statements in other files when renaming CDS files"
        },
        "cds.compiler.showInternalErrors": {
            "category": "Misc",
            "type": "boolean",
            "default": false,
            "markdownDescription": "Print internal compiler errors to the console"
        }
    }
}