{
    "name": "@imc-trading/svlangserver",
    "description": "A language server for systemverilog",
    "keywords": [
        "sv",
        "systemverilog",
        "verilog",
        "language",
        "server"
    ],
    "version": "0.4.1",
    "author": "Kanad Kanhere",
    "publisher": "IMCTradingBV",
    "license": "MIT",
    "repository": {
        "type": "git",
        "url": "https://github.com/imc-trading/svlangserver.git"
    },
    "engines": {
        "node": "*",
        "vscode": "^1.52.0"
    },
    "icon": "resources/icon.png",
    "categories": [
        "Programming Languages",
        "Snippets",
        "Linters",
        "Formatters"
    ],
    "activationEvents": [
        "onLanguage:systemverilog",
        "onLanguage:verilog",
        "onLanguage:markdown",
        "workspaceContains:**/*.{sv,v,svh,vh}"
    ],
    "extensionKind": [
        "workspace"
    ],
    "main": "./dist/extension",
    "bin": {
        "svlangserver": "./bin/main.js"
    },
    "contributes": {
        "languages": [
            {
                "id": "systemverilog",
                "aliases": [
                    "SystemVerilog",
                    "systemverilog",
                    "System Verilog",
                    "Systemverilog"
                ],
                "extensions": [
                    ".sv",
                    ".svh"
                ],
                "configuration": "./language-configuration.json"
            },
            {
                "id": "verilog",
                "aliases": [
                    "Verilog",
                    "verilog"
                ],
                "extensions": [
                    ".v",
                    ".vh"
                ],
                "configuration": "./language-configuration.json"
            }
        ],
        "snippets": [
            {
                "language": "systemverilog",
                "path": "./snippets/systemverilog.json"
            },
            {
                "language": "verilog",
                "path": "./snippets/systemverilog.json"
            }
        ],
        "grammars": [
            {
                "language": "systemverilog",
                "scopeName": "source.systemverilog",
                "path": "./syntaxes/systemverilog.tmLanguage.json"
            },
            {
                "language": "verilog",
                "scopeName": "source.systemverilog",
                "path": "./syntaxes/systemverilog.tmLanguage.json"
            },
            {
                "scopeName": "markdown.verilog.codeblock",
                "path": "./syntaxes/codeblock.json",
                "injectTo": [
                    "text.html.markdown"
                ],
                "embeddedLanguages": {
                    "meta.embedded.block.systemverilog": "source.systemverilog",
                    "meta.embedded.block.verilog": "source.verilog"
                }
            }
        ],
        "configuration": [
            {
                "title": "SystemVerilog Language Server",
                "properties": {
                    "systemverilog.includeIndexing": {
                        "type": "array",
                        "default": [
                            "**/*.sv"
                        ],
                        "description": "Files included for indexing (glob pattern)."
                    },
                    "systemverilog.mustIncludeIndexing": {
                        "type": "array",
                        "default": [],
                        "description": "Files included for indexing and are always to be linted (glob pattern)."
                    },
                    "systemverilog.libraryIndexing": {
                        "type": "array",
                        "default": [],
                        "description": "Files not included for indexing but needed for linting (glob pattern)."
                    },
                    "systemverilog.excludeIndexing": {
                        "type": "array",
                        "default": [
                            "**/test/**"
                        ],
                        "description": "Files excluded for indexing (glob pattern)."
                    },
                    "systemverilog.linter": {
                        "type": "string",
                        "enum": [
                            "icarus",
                            "verilator"
                        ],
                        "default": "verilator",
                        "description": "Linter to use"
                    },
                    "systemverilog.launchConfiguration": {
                        "type": "string",
                        "default": "verilator -sv --lint-only --Wall",
                        "description": "Command used for linting",
                        "examples": [
                            "verilator -sv --lint-only --Wall",
                            "iverilog -t null"
                        ]
                    },
                    "systemverilog.defines": {
                        "type": "array",
                        "default": [],
                        "description": "Defines needed for linting."
                    },
                    "systemverilog.lintOnUnsaved": {
                        "type": "boolean",
                        "default": true,
                        "description": "Enable linting on unsaved files"
                    },
                    "systemverilog.linterWhitelist": {
                        "type": "array",
                        "default": [
                            "/Unsupported: Interfaced port on top level module/i",
                            "/Parent instance's interface is not found/i"
                        ],
                        "description": "List of linting errors that need to be whitelisted (javascript regex)"
                    },
                    "systemverilog.formatCommand": {
                        "type": "string",
                        "default": "verible-verilog-format",
                        "description": "Verible verilog format command"
                    },
                    "systemverilog.disableCompletionProvider": {
                        "type": "boolean",
                        "default": false,
                        "description": "Disable auto completion provided by the language server"
                    },
                    "systemverilog.disableHoverProvider": {
                        "type": "boolean",
                        "default": false,
                        "description": "Disable hover over help provided by the language server"
                    },
                    "systemverilog.disableSignatureHelpProvider": {
                        "type": "boolean",
                        "default": false,
                        "description": "Disable signature help provided by the language server"
                    },
                    "systemverilog.disableLinting": {
                        "type": "boolean",
                        "default": false,
                        "description": "Disable verilator linting"
                    }
                }
            }
        ],
        "commands": [
            {
                "command": "systemverilog.build_index",
                "title": "SystemVerilog: Build index of modules in workspace"
            },
            {
                "command": "systemverilog.get_hierarchy",
                "title": "SystemVerilog: Get hierarchy of instances for a given top module"
            }
        ],
        "jsonValidation": [
            {
                "fileMatch": "tasks.json",
                "url": "./schemas/tasks.schema.json"
            }
        ],
        "problemMatchers": [
            {
                "name": "verilator-error",
                "owner": "Verilator",
                "source": "systemverilog",
                "severity": "error",
                "fileLocation": "autoDetect",
                "pattern": [
                    {
                        "regexp": "%Error(-[A-Z0-9]+)?: ((\\S+):(\\d+):((\\d+):)? )?(.*)$",
                        "severity": 1,
                        "file": 2,
                        "line": 3,
                        "column": 4,
                        "message": 5
                    }
                ]
            },
            {
                "name": "verilator-warning",
                "owner": "Verilator",
                "source": "systemverilog",
                "severity": "warning",
                "fileLocation": "autoDetect",
                "pattern": [
                    {
                        "regexp": "%Warning(-[A-Z0-9]+)?: ((\\S+):(\\d+):((\\d+):)? )?(.*)$",
                        "severity": 1,
                        "file": 2,
                        "line": 3,
                        "column": 4,
                        "message": 5
                    }
                ]
            }
        ]
    },
    "dependencies": {
        "glob": "^7.1.6",
        "vscode-languageclient": "^7.0.0",
        "vscode-languageserver": "^7.0.0",
        "vscode-languageserver-protocol": "^3.16.0",
        "vscode-languageserver-textdocument": "^1.0.1",
        "vscode-uri": "^2.1.2",
        "tmp": "^0.2.1"
    },
    "devDependencies": {
        "@types/node": "^12.12.0",
        "@types/vscode": "^1.52.0",
        "ts-loader": "^9.1.2",
        "typescript": "^3.7.5",
        "webpack": "^5.37.0",
        "webpack-cli": "^4.7.0"
    },
    "scripts": {
        "vscode:prepublish": "npm run prepare && npm run webpack",
        "webpack": "webpack --mode production --config ./webpack.config.js",
        "build": "tsc -p .",
        "prepare": "tsc -p ./src",
        "watch": "tsc --watch -p ."
    },
    "files": [
        "/lib/*.js",
        "/lib/*.d.ts",
        "/bin/*.js"
    ]
}
