[
  {
    "path": ".codespellignorewords",
    "content": "abl\nals\nedn\nesy\nprotols\n"
  },
  {
    "path": ".editorconfig",
    "content": "root = true\n\n[*]\nindent_style = space\nindent_size = 2\ntab_width = 8\nend_of_line = lf\ninsert_final_newline = true\n\n[*.lua]\nmax_line_length = 120\n\n[{Makefile,**/Makefile,runtime/doc/*.txt}]\nindent_style = tab\nindent_size = 8\n"
  },
  {
    "path": ".emmyrc.json",
    "content": "{\n  \"$schema\": \"https://raw.githubusercontent.com/EmmyLuaLs/emmylua-analyzer-rust/refs/heads/main/crates/emmylua_code_analysis/resources/schema.json\",\n  \"runtime\": {\n    \"version\": \"LuaJIT\"\n  },\n  \"diagnostics\" : {\n    \"disable\" : [\n      \"unnecessary-if\"\n    ],\n    \"enables\": [\n      \"iter-variable-reassign\",\n      \"non-literal-expressions-in-assert\",\n      \"incomplete-signature-doc\",\n      \"missing-global-doc\"\n    ]\n  },\n  \"strict\": {\n    \"typeCall\": true,\n    \"arrayIndex\": true\n  },\n  \"codeAction\": {\n    \"insertSpace\": true\n  },\n  \"workspace\": {\n    \"ignoreDir\": [\n      \"lspconfig/lua/\",\n      \"deps\"\n    ]\n  }\n}\n"
  },
  {
    "path": ".github/CODEOWNERS",
    "content": "*          @glepnir\n\n/.github/  @dundargoc\n\n/flake.lock  @teto\n/flake.nix   @teto\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug_report.yml",
    "content": "name: Bug report\ndescription: Report a problem in nvim-lspconfig\nlabels: [bug]\nbody:\n  - type: markdown\n    attributes:\n      value: |\n        The configs in this repo are UNSUPPORTED and provided only as a starting point. We depend on users (like you) to troubleshoot issues with their specific LSP setups and [send improvements](https://github.com/neovim/nvim-lspconfig/blob/master/CONTRIBUTING.md).\n\n        * Ask questions on [GitHub Discussions](https://github.com/neovim/neovim/discussions), NOT the issue tracker.\n        * Report feature requests or bugs in the core Nvim `vim.lsp` module [to Nvim core](https://github.com/neovim/neovim/issues/new?assignees=&labels=bug%2Clsp&projects=&template=lsp_bug_report.yml), NOT this repo.\n  - type: textarea\n    attributes:\n      label: \"Description\"\n      description: \"Describe the problem. ALWAYS mention your exact Nvim version and show how you defined/enabled the LSP config.\"\n    validations:\n      required: true\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/config.yml",
    "content": "blank_issues_enabled: false\ncontact_links:\n   - name: Question\n     url: https://vi.stackexchange.com/\n     about: Usage questions and support requests\n"
  },
  {
    "path": ".github/PULL_REQUEST_TEMPLATE/pull_request_template.md",
    "content": "---\nname: Pull Request\nabout: Submit a pull request\ntitle: ''\n---\n"
  },
  {
    "path": ".github/ci/lint.sh",
    "content": "#!/usr/bin/env bash\n\n# USAGE: To run locally:\n#   bash .github/ci/lint.sh origin/master HEAD\n\nset -e\n\nREF_BRANCH=\"$1\"\nPR_BRANCH=\"$2\"\n\n_fail() {\n  echo\n  printf \"lint.sh: %s\\n\" \"$@\"\n  exit 1\n}\n\n_check_generated_docs() {\n  if ! git diff \"${REF_BRANCH}\"...\"${PR_BRANCH}\" --exit-code -- doc/configs.md doc/configs.txt; then\n    _fail '`configs.md` or `configs.txt` will be regenerated by the docgen CI process. Edit the Lua source file instead.' \\\n      'For details on generating documentation, see: https://github.com/neovim/nvim-lspconfig/blob/master/CONTRIBUTING.md#generating-docs'\n  fi\n}\n\n# Enforce buffer-local commands.\n_check_cmd_buflocal() {\n  if git grep -P 'nvim_create_user_command' -- 'lsp/*.lua' ; then\n    _fail 'Define commands with nvim_buf_create_user_command (buffer-local), not nvim_create_user_command'\n  fi\n}\n\n# Check that \"@brief\" docstring is the first line of each \"lsp/*.lua\" config.\n_check_brief_placement() {\n  if find ./lsp -type f -name \"*.lua\" -exec awk 'NR==1 && !/brief/{print FILENAME}' {} \\; | grep --color=never '.' ; then\n    _fail '`@brief` docstring must be at the top of the config source file'\n  fi\n}\n\n# Returned object should have `---@type vim.lsp.Config` annotation.\n# CI checks luals/emmylua: https://github.com/neovim/nvim-lspconfig/pull/4185\n_check_type() {\n  if git grep --files-without-match '\\-\\-\\-\\@type vim\\.lsp\\.Config' -- 'lsp/*.lua' ; then\n    _fail 'Missing `---@type vim.lsp.Config` annotation.'\n  fi\n}\n\n# Enforce \"Lsp\" prefix on all user commands.\n_check_lsp_cmd_prefix() {\n  local exclude='tinymist'\n  if git grep -P 'nvim_buf_create_user_command' -- 'lsp/*.lua' | grep -v \"$exclude\" | grep --color -v Lsp ; then\n    _fail 'Command names must start with \"Lsp\" prefix'\n  fi\n}\n\n# Enforce client:exec_cmd().\n_check_exec_cmd() {\n  local exclude='eslint\\|pyright\\|basedpyright'\n  if git grep -P 'workspace.executeCommand' -- 'lsp/*.lua' | grep -v \"$exclude\"  ; then\n    _fail 'Use client:exec_cmd() instead of calling request(\"workspace/executeCommand\") directly. Example: lsp/pyright.lua'\n  fi\n}\n\n# Disallow util functions in Nvim 0.11+ (lsp/) configs.\n_check_deprecated_in_nvim_0_11() {\n  if git grep -P 'is_descendant' -- 'lsp/*.lua' ; then\n    _fail 'Use vim.fs.relpath() instead of util.path.is_descendant()'\n  fi\n  if git grep -P 'search_ancestors' -- 'lsp/*.lua' ; then\n    _fail 'Use vim.iter(vim.fs.parents(fname)):find(…) instead of util.path.search_ancestors(fname,…)'\n  fi\n  if git grep -P 'validate_bufnr' -- 'lsp/*.lua' ; then\n    _fail 'Do not use util.validate_bufnr(). Nvim stdlib already treats bufnr=0 as \"current buffer\".'\n  fi\n  if git grep -P 'single_file_support' -- 'lsp/*.lua' ; then\n    _fail 'vim.lsp.config assumes \"single-file support\" by default. If the LS does not support that, set workspace_required=true.'\n  fi\n}\n\n_check_deprecated_utils() {\n  # checks for added lines that contain search pattern and prints them\n  SEARCH_PATTERN='(path\\.dirname|fn\\.cwd)'\n\n  if git diff --pickaxe-all -U0 -G \"${SEARCH_PATTERN}\" \"${REF_BRANCH}\" \"${PR_BRANCH}\" -- '*.lua' | grep -Ev '(configs|utils)\\.lua$' | grep -E \"^\\+.*${SEARCH_PATTERN}\" ; then\n    _fail 'Do not use vim.fn.cwd or util.path.dirname in root_dir.' \\\n      \"See: https://github.com/neovim/nvim-lspconfig/blob/master/CONTRIBUTING.md#new-config\"\n  fi\n\n  SEARCH_PATTERN='(util\\.path\\.dirname|util\\.path\\.sanitize|util\\.path\\.exists|util\\.path\\.is_file|util\\.path\\.is_dir|util\\.path\\.join|util\\.path\\.iterate_parents|util\\.find_mercurial_ancestor|util\\.find_node_modules_ancestor|util\\.find_package_json_ancestor|util\\.find_git_ancestor|util\\.get_lsp_clients|util\\.get_active_client_by_name)'\n\n  if git diff --pickaxe-all -U0 -G \"${SEARCH_PATTERN}\" \"${REF_BRANCH}\" \"${PR_BRANCH}\" -- '*.lua' | grep -Ev '\\.lua$' | grep -E \"^\\+.*${SEARCH_PATTERN}\" ; then\n    _fail 'Do not use deprecated util functions: '\"${SEARCH_PATTERN}\"\n  fi\n}\n\n_check_legacy_configs() {\n  if ! git diff \"${REF_BRANCH}\"...\"${PR_BRANCH}\" --exit-code -- lua/lspconfig/configs/ ; then\n    _fail 'Configs in `lua/lspconfig/configs/*` are deprecated. Add or update configs in `lsp/*` instead.'\n  fi\n}\n\n_check_generated_docs\n_check_cmd_buflocal\n_check_brief_placement\n_check_type\n_check_lsp_cmd_prefix\n_check_exec_cmd\n_check_deprecated_in_nvim_0_11\n_check_deprecated_utils\n_check_legacy_configs\n"
  },
  {
    "path": ".github/dependabot.yml",
    "content": "version: 2\nupdates:\n  - package-ecosystem: \"github-actions\"\n    directory: \"/\"\n    schedule:\n      interval: \"daily\"\n    commit-message:\n      prefix: \"ci\"\n"
  },
  {
    "path": ".github/workflows/docgen.yml",
    "content": "name: docgen\n\non:\n  push:\n    branches:\n      - master\n\njobs:\n  docgen:\n    runs-on: ubuntu-latest\n    permissions:\n      contents: write\n    steps:\n    - uses: actions/checkout@v6\n    - uses: rhysd/action-setup-vim@v1\n      with:\n        neovim: true\n        version: nightly\n    - name: Run docgen\n      run: |\n        scripts/docgen.lua\n    - name: Commit changes\n      env:\n        COMMIT_MSG: |\n          docs: update configs.md\n          skip-checks: true\n      run: |\n        git config user.name \"github-actions[bot]\"\n        git config user.email \"github-actions[bot]@users.noreply.github.com\"\n        git add doc/configs.md doc/configs.txt\n        # Only commit and push if we have changes\n        git diff --quiet && git diff --staged --quiet || (git commit -m \"${COMMIT_MSG}\"; git push)\n"
  },
  {
    "path": ".github/workflows/gen-annotations.yml",
    "content": "name: gen-annotations\n\non:\n  push:\n    paths:\n      - lsp/**\n      - scripts/gen_json_schemas.lua\n      - scripts/gen_annotations.lua\n      - .github/workflows/gen-annotations.yml\n  workflow_dispatch:\n\njobs:\n  gen-annotations:\n    if: github.actor != 'github-actions[bot]'\n    runs-on: ubuntu-latest\n    permissions:\n      contents: write\n    steps:\n      - uses: actions/checkout@v6\n      - uses: rhysd/action-setup-vim@v1\n        with:\n          neovim: true\n          version: nightly\n      - name: Generate JSON schemas\n        run: |\n          nvim  -l scripts/gen_json_schemas.lua\n      - name: Generate annotations\n        run: |\n          nvim  -l scripts/gen_annotations.lua\n      - name: Commit generated files\n        env:\n          COMMIT_MSG: |\n            chore: update generated annotations\n            skip-checks: true\n        run: |\n          git config user.name \"github-actions[bot]\"\n          git config user.email \"github-actions[bot]@users.noreply.github.com\"\n          git add README.md\n          git add -A lua/lspconfig/types\n          git diff --quiet && git diff --staged --quiet || (git commit -m \"${COMMIT_MSG}\"; git push)\n"
  },
  {
    "path": ".github/workflows/lint.yml",
    "content": "name: lint\non:\n  pull_request:\n    branches:\n      - master\n\nconcurrency:\n  group: ${{ github.workflow }}-${{ github.ref }}\n  cancel-in-progress: ${{ github.event_name == 'pull_request' }}\n\njobs:\n  lint:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v6\n        with:\n          fetch-depth: 0\n          ref: ${{ github.event.pull_request.head.sha }}\n      - run: |\n          if ! bash .github/ci/lint.sh ${{ github.event.pull_request.base.sha }} ${{ github.event.pull_request.head.sha }}; then\n            exit 1\n          fi\n\n  luals:\n    runs-on: ubuntu-latest\n    env:\n      LUALS_VERSION: 3.15.0\n    steps:\n      - uses: actions/checkout@v6\n      - uses: rhysd/action-setup-vim@v1\n        with:\n          neovim: true\n          version: nightly # Remove this to use stable.\n      - name: Install lua-language-server\n        run: |\n          mkdir -p build/luals\n          curl -L -o build/luals.tar.gz https://github.com/LuaLS/lua-language-server/releases/download/${LUALS_VERSION}/lua-language-server-${LUALS_VERSION}-linux-x64.tar.gz\n          tar -xzf build/luals.tar.gz -C build/luals\n      - name: Run luals\n        run: |\n          export VIMRUNTIME=\"$(nvim --headless --cmd 'echo $VIMRUNTIME' +q 2>&1)\"\n          ./build/luals/bin/lua-language-server --configpath=$(pwd)/.luarc.json --check=lsp/ --check=lua/lspconfig/types/lsp/ --checklevel=Hint\n\n\n  stylua:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v6\n      - uses: JohnnyMorganz/stylua-action@v4\n        with:\n          token: ${{ secrets.GITHUB_TOKEN }}\n          version: latest\n          args: --check .\n\n  codespell:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v6\n      - run: pip install codespell\n      - run: codespell --quiet-level=2 --check-hidden --skip=./doc/configs.md,./doc/configs.txt,./lua/lspconfig/types/lsp --ignore-words=.codespellignorewords\n\n  commit:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v6\n        with:\n          fetch-depth: 0\n          ref: ${{ github.event.pull_request.head.sha }}\n      - run: npm install --save-dev @commitlint/{cli,config-conventional}\n      - run: |\n          echo \"module.exports = { extends: ['@commitlint/config-conventional'] };\" > commitlint.config.js\n      - run: npx commitlint --from HEAD~1 --to HEAD --verbose\n"
  },
  {
    "path": ".github/workflows/release.yml",
    "content": "name: \"release\"\non:\n  push:\n    tags:\n      - '*'\njobs:\n  luarocks-upload:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v6\n      - name: LuaRocks Upload\n        uses: nvim-neorocks/luarocks-tag-release@v7\n        env:\n          LUAROCKS_API_KEY: ${{ secrets.LUAROCKS_API_KEY }}\n        with:\n          summary: \"A collection of common configurations for Neovim's built-in language server client.\"\n          detailed_description: |\n            This plugin allows for declaratively configuring,\n            launching, and initializing language servers you have installed on your system.\n            Language server configurations are community-maintained.\n          license: \"Apache/2.0\"\n"
  },
  {
    "path": ".github/workflows/test.yml",
    "content": "name: test\non:\n  pull_request:\n    branches:\n      - master\n\nconcurrency:\n  group: ${{ github.workflow }}-${{ github.ref }}\n  cancel-in-progress: ${{ github.event_name == 'pull_request' }}\n\njobs:\n  test:\n    name: Run Test\n    runs-on: ${{ matrix.os }}\n    strategy:\n      matrix:\n        os: [ubuntu-latest, macos-latest]\n        nvim_version: [nightly, 'v0.10.4']\n    steps:\n      - uses: actions/checkout@v6\n      - uses: rhysd/action-setup-vim@v1\n        with:\n          neovim: true\n          version: ${{ matrix.nvim_version }}\n\n      - uses: leafo/gh-actions-lua@v12\n        with:\n          luaVersion: \"luajit-openresty\"\n      - uses: leafo/gh-actions-luarocks@v6\n\n      - name: Install vusted\n        run: luarocks install vusted\n\n      - name: Run test\n        run: vusted ./test\n"
  },
  {
    "path": ".gitignore",
    "content": "neovim\ndoc/tags\nschemas\n"
  },
  {
    "path": ".luarc.json",
    "content": "{\n  \"$schema\": \"https://raw.githubusercontent.com/LuaLS/vscode-lua/master/setting/schema.json\",\n  \"diagnostics\" : {\n    \"disable\" : [\n      \"inject-field\",\n      \"undefined-global\"\n    ]\n  },\n  \"runtime\": {\n    \"version\": \"LuaJIT\"\n  },\n  \"workspace\": {\n    \"library\": [\n      \"lua\",\n      \"$VIMRUNTIME\",\n      \"${3rd}/luv/library\"\n    ],\n    \"checkThirdParty\": false\n  }\n}\n"
  },
  {
    "path": ".stylua.toml",
    "content": "column_width = 120\nline_endings = \"Unix\"\nindent_type = \"Spaces\"\nindent_width = 2\nquote_style = \"AutoPreferSingle\"\ncall_parentheses = \"Input\"\n"
  },
  {
    "path": ".styluaignore",
    "content": "lua/lspconfig/types/lsp\n"
  },
  {
    "path": "CONTRIBUTING.md",
    "content": "# Contributing to nvim-lspconfig\n\n## Requirements\n\n- [Lint requirements](#lint)\n- Documentation is generated by `scripts/docgen.lua`.\n  - Only works on linux and macOS\n\n## Scope of nvim-lspconfig\n\nThe purpose of nvim-lspconfig is to provide configuration so that users can activate LSP with a single `vim.lsp.enable('foo')` call.\nIt must not provide its own \"framework\". Any \"framework\" or \"util\" code must be upstreamed to Nvim core.\n\n## Pull requests (PRs)\n\n- Mark your pull request as \"draft\" until it's ready for review.\n- Avoid cosmetic changes to unrelated files in the same commit.\n- Use a **rebase workflow** for small PRs.\n  - After addressing review comments, it's fine to rebase and force-push.\n\n## New config\n\n### Criteria\n\nNew configs must meet these criteria (to avoid spam/quasi-marketing/vanity projects):\n\n- GitHub Stars: The server repository should have at least 100 stars, or some other evidence (such as vscode marketplace downloads) that the LSP server is reasonably popular and is not spam/quasi-marketing/vanity projects.\n- Provide some reference or evidence that the language targeted by the LSP server has an active user base.\n\nThis helps ensure that we only include actively maintained and widely used servers to provide a better experience for\nthe community.\n\n### Walkthrough\n\nTo add a new config, copy an existing config from `lsp/`. Start with `lsp/lua_ls.lua` for a simple a config, or `lsp/jdtls.lua` or `lsp/pyright.lua` for more complex examples.\n\nWhen choosing a config name, convert dashes (`-`) to underscores (`_`). If the name of the server is a unique name (`pyright`, `clangd`) or a commonly used abbreviation (`zls`), prefer this as the server name. If the server instead follows the pattern x-language-server, prefer the convention `x_ls` (`jsonnet_ls`). \n\nThe minimal config properties are:\n\n* `cmd`: command defined as a string list, where the first item is an executable and following items are its arguments (`--stdio` is common).\n  ```lua\n  cmd = { 'typescript-language-server', '--stdio' }\n  ```\n* `filetypes`: list of filetypes that should activate this config.\n* `root_markers`: a list of files that mark the root of the project/workspace.\n    * See `:help lsp-config`.\n    * See `vim.fs.root()`\n\n### Commands\n\nLSP servers may provide custom `workspace/executeCommand` commands. Because LSP does not provide any way for clients to programmatically discover/list these commands, configs may define user commands in Nvim which invoke the `workspace/executeCommand` commands. To keep things maintainable and discoverable, configs must follow these guidelines:\n\n- The server-specific user commands must be buffer-local and must be created in the `on_attach` handler.\n  - Be sure to use the `bufnr` passed as the 2nd argument to `on_attach` to refer to the buffer that the server has been attached to, as it may be different from the current buffer!\n- The names of these commands must be prefixed with `:Lsp`. This is a crude way to improve \"discoverability\".\n- Do NOT create commands that merely alias existing *code-actions* or *code-lenses*, which are *already* auto-discoverable via the [\"gra\" keymap](https://neovim.io/doc/user/lsp.html#gra) (or `vim.lsp.buf.code_action()`)\n- Use `client:exec_cmd()` (instead of `request(..., 'workspace/executeCommand')`)\n\n### Schemas\n\nIf possible, add the JSON schema for the LS to the index in [gen_json_schemas.lua](https://github.com/neovim/nvim-lspconfig/blob/3addf05a791ea256c36438220aced91c03071712/scripts/gen_json_schemas.lua#L2). CI will autogenerate LuaLS types from the schema. See [Generated LSP \"settings\" types](#generated-lsp-settings-types).\n\n### Example\n\nFollowing is an example new config for `lsp/pyright.lua`:\n\n```lua\n---@brief\n---\n--- https://github.com/microsoft/pyright\n---\n--- `pyright`, a static type checker and language server for python\nreturn {\n  cmd = { 'pyright-langserver', '--stdio' },\n  filetypes = { 'python' },\n  root_markers = {\n    'pyproject.toml',\n    'setup.py',\n    'setup.cfg',\n    'requirements.txt',\n    'Pipfile',\n    'pyrightconfig.json',\n  },\n  ---@type lspconfig.settings.pyright\n  settings = {\n    python = {\n      analysis = {\n        autoSearchPaths = true,\n        useLibraryCodeForTypes = true,\n        diagnosticMode = 'workspace',\n      },\n    },\n  },\n  on_attach = function(client, bufnr)\n    vim.api.nvim_buf_create_user_command(bufnr, 'LspPyrightOrganizeImports', function()\n      client:exec_cmd({\n        command = 'pyright.organizeimports',\n        arguments = { vim.uri_from_bufnr(bufnr) },\n      })\n    end, {\n      desc = 'Organize Imports',\n    })\n  end,\n}\n```\n\n### Root marker priority\n\nBy default, the [`root_markers` field](https://neovim.io/doc/user/lsp.html#lsp-root_markers) is ordered by priority.\nHowever, configs can specify \"equal priority\" (since Nvim 0.11.3) by placing names in a nested list.\n\nFor example in this config, `'package.json'` and `'tsconfig.json'` have *equal* priority, whereas `'.git'` has lower priority.\n\n```lua\nreturn {\n  …\n  root_markers = { { 'package.json', 'tsconfig.json' }, { '.git' } }\n}\n```\n\nSince nvim-lspconfig still supports Nvim older than 0.11.3, avoid the \"nested list\" form on older versions of Nvim:\n\n```lua\nreturn {\n  …\n  root_markers = vim.fn.has('nvim-0.11.3') == 1\n    and { { 'package.json', 'tsconfig.json' }, { '.git' } }\n    or { 'package.json', 'tsconfig.json', '.git' }\n}\n```\n\n## Rename or deprecate a config\n\nIf a config needs to be renamed or deprecated, changes its contents like this:\n\n```lua\n---@brief\n---\n--- Renamed to [systemd_lsp](#systemd_lsp)\n\n---@type vim.lsp.Config\nreturn vim.tbl_extend('force', vim.lsp.config.systemd_lsp, {\n  on_init = function(...)\n    vim.deprecate('systemd_ls', 'systemd_lsp', '3.0.0', 'nvim-lspconfig', false)\n    if vim.lsp.config.systemd_lsp.on_init then\n      vim.lsp.config.systemd_lsp.on_init(...)\n    end\n  end,\n})\n```\n\n## Commit style\n\nFollow the Neovim core [commit message guidelines](https://github.com/neovim/neovim/blob/master/CONTRIBUTING.md#commit-messages). Examples:\n\n* Adding a new config for \"lua_ls\":\n  ```\n  feat: lua_ls\n  ```\n* Fixing a bug for \"lua_ls\":\n  ```\n  fix(lua_ls): update root directory pattern\n\n  Problem:\n  Root directory incorrectly prefers \"foo\".\n\n  Solution:\n  Rearrange the root dir definition.\n  ```\n\n## Lint\n\nPRs are checked with the following analyzers:\n- [luals](https://github.com/LuaLS/lua-language-server)\n- [stylua](https://github.com/JohnnyMorganz/StyLua).\n\nTo run the linter locally:\n\n    make lint\n\nIf using nix, you can use `nix develop` to install these to a local nix shell.\n\n## Generating docs\n\nGitHub Actions automatically generates `configs.md`. Only modify\n`scripts/docs_template.md` or the docstrings in the source of the config file.\nDo not modify `configs.md` directly.\n\nTo preview the generated `configs.md` locally, run `scripts/docgen.lua` from\n`nvim` (from the project root):\n\n    HOME=./ nvim --clean -R -Es -V1 +'set rtp+=$PWD' +'luafile scripts/docgen.lua'\n\n## Generated LSP \"settings\" types\n\nThe `@class` declarations in `lua/lspconfig/types/lsp/*.lua` are generated by\n`scripts/gen_annotations.lua`. The JSON schema index is manually maintained\nin [gen_json_schemas.lua](https://github.com/neovim/nvim-lspconfig/blob/3addf05a791ea256c36438220aced91c03071712/scripts/gen_json_schemas.lua#L2).\n\nThe `package.json` follows the standard Node.js format, and VS Code uses\na [custom `contributes.configuration` field](https://github.com/neovim/nvim-lspconfig/blob/3addf05a791ea256c36438220aced91c03071712/scripts/gen_json_schemas.lua#L191)\nto define the JSON Schema for `settings.json`.\n"
  },
  {
    "path": "LICENSE.md",
    "content": "                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n"
  },
  {
    "path": "Makefile",
    "content": "test:\n\tvusted ./test\n\nlint:\n\t@printf \"\\nRunning stylua\\n\"\n\tstylua --check .\n\t@printf \"\\nRunning emmylua\\n\"\n\temmylua_check .\n\n.PHONY: test lint\n"
  },
  {
    "path": "README.md",
    "content": "# nvim-lspconfig\n\nnvim-lspconfig is a collection of LSP server configurations for the [Nvim LSP client](https://neovim.io/doc/user/lsp.html).\n\nView [all configs](doc/configs.md), or run `:help lspconfig-all` from Nvim.\n\n## Important ⚠️\n\n* `require('lspconfig')` (the legacy \"framework\" of nvim-lspconfig) [is **deprecated**](https://github.com/neovim/nvim-lspconfig/issues/3693) in favor of [vim.lsp.config](https://neovim.io/doc/user/lsp.html#lsp-config) (Nvim 0.11+).\n    * The [lspconfig.lua](./lua/lspconfig.lua) *module* will be dropped. Calls to `require('lspconfig')` will show a warning, which will later become an error.\n* nvim-lspconfig itself is **NOT deprecated**. It provides server-specific configs.\n    * The configs live in the [lsp/](./lsp/) directory. `vim.lsp.config` automatically finds them and merges them with any local `lsp/*.lua` configs defined by you or a plugin.\n    * The old configs in [lua/lspconfig/](./lua/lspconfig/) are **deprecated** and will be removed.\n\n### Migration instructions\n\n1. Upgrade to Nvim 0.11+\n2. (Optional) Use `vim.lsp.config('…')` (not `require'lspconfig'.….setup{}`) to *customize* or *define* a config.\n3. Use `vim.lsp.enable('…')` (not `require'lspconfig'.….setup{}`) to *enable* a config, so that it activates for its `filetypes`.\n\n## Support\n\nThese configs are **best-effort and supported by the community (you).** See [contributions](#contributions).\n\n* Ask questions on [GitHub Discussions](https://github.com/neovim/neovim/discussions), not the issue tracker.\n* If you found a bug in Nvim LSP (`:help lsp`), [report it to Neovim core](https://github.com/neovim/neovim/issues/new?assignees=&labels=bug%2Clsp&template=lsp_bug_report.yml).\n    * **Do not** report it here. Only configuration data lives here.\n\n## Install\n\n[![LuaRocks](https://img.shields.io/luarocks/v/neovim/nvim-lspconfig?logo=lua&color=purple)](https://luarocks.org/modules/neovim/nvim-lspconfig)\n\n* Requires Nvim 0.11.3+.\n    * Support for Nvim 0.10 [will be removed](https://github.com/neovim/nvim-lspconfig/issues/3693). Upgrade Nvim and nvim-lspconfig before reporting an issue.\n* Install nvim-lspconfig using Vim's \"packages\" feature:\n  ```\n  git clone https://github.com/neovim/nvim-lspconfig ~/.config/nvim/pack/nvim/start/nvim-lspconfig\n  ```\n* Or with Nvim 0.12 (nightly), you can use the builtin `vim.pack` plugin manager:\n  ```lua\n  vim.pack.add{\n    { src = 'https://github.com/neovim/nvim-lspconfig' },\n  }\n  ```\n* Or use a 3rd-party plugin manager.\n\n## Quickstart\n\n1. Install a language server, e.g. [pyright](doc/configs.md#pyright)\n   ```bash\n   npm i -g pyright\n   ```\n2. Enable its config in your init.lua ([:help lsp-quickstart](https://neovim.io/doc/user/lsp.html#lsp-quickstart)).\n   ```lua\n   vim.lsp.enable('pyright')\n   ```\n3. Ensure your project/workspace contains a root marker as specified in `:help lspconfig-all`.\n4. Open a code file in Nvim. LSP will attach and provide diagnostics.\n   ```\n   nvim main.py\n   ```\n5. Run `:checkhealth vim.lsp` to see the status or to troubleshoot.\n\nSee `:help lspconfig-all` for the full list of server-specific details. For\nservers not on your `$PATH` (e.g., `jdtls`, `elixirls`), you must manually set\nthe `cmd` parameter:\n\n```lua\nvim.lsp.config('jdtls', {\n  cmd = { '/path/to/jdtls' },\n})\n```\n\n## Commands\n\n* `:LspInfo` (alias to `:checkhealth vim.lsp`) shows the status of active and configured language servers.\n* `:lsp enable [<config_name>]` (`:LspStart` for Nvim 0.11 or older) Start the requested server name. Will only successfully start if the command detects a root directory matching the current config.\n* `:lsp disable [<config_name>]` (`:LspStop` for Nvim 0.11 or older) Stops the given server. Defaults to stopping all servers active on the current buffer. To force stop use `:LspStop!`\n* `:lsp restart [<client_name>]` (`:LspRestart` for Nvim 0.11 or older) Restarts the given client, and attempts to reattach to all previously attached buffers. Defaults to restarting all active servers.\n\n## Configuration\n\nNvim sets default options and mappings when LSP is active in a buffer:\n* [:help lsp-defaults](https://neovim.io/doc/user/lsp.html#lsp-defaults)\n* [:help diagnostic-defaults](https://neovim.io/doc/user/diagnostic.html#diagnostic-defaults)\n\nTo customize, see:\n* [:help lsp-attach](https://neovim.io/doc/user/lsp.html#lsp-attach)\n* [:help lsp-buf](https://neovim.io/doc/user/lsp.html#lsp-buf)\n\nExtra settings can be specified for each LSP server. With Nvim 0.11+ you can\n[extend a config](https://neovim.io/doc/user/lsp.html#lsp-config) by calling\n`vim.lsp.config('…', {…})`.\n\n```lua\nvim.lsp.config('rust_analyzer', {\n  -- Server-specific settings. See `:help lsp-quickstart`\n  settings = {\n    ['rust-analyzer'] = {},\n  },\n})\n```\n\n### Config priority\n\nConfigs are sourced in this order:\n\n1. `lsp/` in 'runtimepath'\n2. `after/lsp/` in 'runtimepath'\n3. `vim.lsp.config()`\n\nIf you install nvim-lspconfig or similar plugins, the order that configs are applied depends on the load order. To ensure that your own config \"wins\" and overrides the others, use `after/lsp/` and/or `vim.lsp.config()` to override/extend the defaults.\n\n## Creating a config\n\n### As code\n\n1. Run `:lua vim.lsp.config('foo', {cmd={'true'}})`\n2. Run `:lua vim.lsp.enable('foo')`\n3. Run `:checkhealth vim.lsp`, the new config is listed under \"Enabled Configurations\". 😎\n\n### As a file\n\n1. Create a file `after/lsp/foo.lua` somewhere on your 'runtimepath'.\n   ```\n   :exe 'edit' stdpath('config') .. '/after/lsp/foo.lua'\n   ```\n2. Add this code to the file (or copy any of the examples from the [lsp/ directory](./lsp/) in this repo):\n   ```\n   return {\n     cmd = { 'true' },\n   }\n   ```\n3. Save the file (with `++p` to ensure its parent directory is created).\n   ```\n   :write ++p\n   ```\n4. Enable the config.\n   ```\n   :lua vim.lsp.enable('foo')\n   ```\n5. Run `:checkhealth vim.lsp`, the new config is listed under \"Enabled Configurations\". 🌈\n\n## LSP Settings Type Annotations\n\n`nvim-lspconfig` generates Lua type definitions for each supported LSP server.\nBy manually adding annotations (e.g., `---@type lspconfig.settings.server_name`),\nyou enable auto-completion and diagnostics for your server settings.\n\n**Example:**\n\n```lua\n---@type vim.lsp.Config\nlocal config = {\n  ---@type lspconfig.settings.lua_ls\n  settings = {\n    Lua = {\n      runtime = {\n        version = 'LuaJIT',\n      },\n      workspace = {\n        preloadFileSize = 10000,\n        library = {\n          vim.env.VIMRUNTIME,\n        }\n      },\n    },\n  },\n}\n\nvim.lsp.config('lua_ls', config)\n```\n\n## Troubleshooting\n\nStart with `:checkhealth vim.lsp` to troubleshoot. The most common reasons a language server does not start or attach are:\n\n1. Language server is not installed. nvim-lspconfig does not install language servers for you. You should be able to run the `cmd` defined in the config from the command line and see that the language server starts. If the `cmd` is a name instead of an absolute path, ensure it is on your `$PATH`.\n2. Missing filetype plugins. Some languages are not detected by Nvim because they have not yet been added to the filetype detection system. Ensure `:set filetype?` shows the filetype and not an empty value.\n3. Not triggering root detection. Some language servers require a \"workspace\", which is found by looking for an ancestor directory that contains a \"root marker\". The most common root marker is `.git/`, but each config defines other \"root marker\" names. Root markers/directories are listed in `:help lspconfig-all`.\n\n   You can also explicitly set a root instead of relying on automatic detection by enabling `'exrc'` and adding an `.nvim.lua` at the desired root dir with the following code:\n   ```lua\n   vim.lsp.config('<client name>', {\n     root_dir = vim.fn.fnamemodify(debug.getinfo(1, 'S').source:sub(2), ':p:h'),\n   })\n   ```\n   Note that prior to nvim 0.12 `exrc` file is executed only if it's inside of a cwd where you start `nvim`.\n\n## Bug reports\n\nIf you found a bug with LSP functionality, [report it to Neovim core](https://github.com/neovim/neovim/issues/new?assignees=&labels=bug%2Clsp&template=lsp_bug_report.yml).\n\nBefore reporting a bug, check your logs and the output of `:checkhealth vim.lsp`. Add this to your init.lua to enable verbose logging:\n\n```lua\nvim.lsp.set_log_level(\"debug\")\n```\n\nAttempt to run the language server, then run `:LspLog` to open the log.\nMost of the time, the reason for failure is present in the logs.\n\n## Contributions\n\nIf a language server is missing from [configs.md](doc/configs.md), contributing\na new configuration for it helps others, especially if the server requires special setup. Follow these steps:\n\n1. Read [CONTRIBUTING.md](CONTRIBUTING.md).\n2. Create a new file at `lsp/<server_name>.lua`.\n    - Copy an [existing config](https://github.com/neovim/nvim-lspconfig/tree/master/lsp)\n      to get started. Most configs are simple. For an extensive example see\n      [texlab.lua](https://github.com/neovim/nvim-lspconfig/blob/master/lsp/texlab.lua).\n3. Ask questions on [GitHub Discussions](https://github.com/neovim/neovim/discussions) or in the [Neovim Matrix room](https://app.element.io/#/room/#neovim:matrix.org).\n\n## Release process\n\nTo publish a release:\n\n- Create and push a new [tag](https://github.com/neovim/nvim-lspconfig/tags).\n- After pushing the tag, a [GitHub action](./.github/workflows/release.yml)\n  will automatically package the plugin and publish the release to LuaRocks.\n\n## License\n\nCopyright Neovim contributors. All rights reserved.\n\nnvim-lspconfig is licensed under the terms of the Apache 2.0 license.\n\nSee [LICENSE.md](./LICENSE.md)\n"
  },
  {
    "path": "doc/configs.md",
    "content": "# LSP configs\n\nLSP configurations provided by nvim-lspconfig are listed below. This\ndocumentation is autogenerated from the Lua files. You can view this file in\nNvim by running `:help lspconfig-all`.\n\n- [ada_ls](#ada_ls)\n- [agda_ls](#agda_ls)\n- [aiken](#aiken)\n- [air](#air)\n- [alloy_ls](#alloy_ls)\n- [anakin_language_server](#anakin_language_server)\n- [angularls](#angularls)\n- [ansiblels](#ansiblels)\n- [antlersls](#antlersls)\n- [apex_ls](#apex_ls)\n- [arduino_language_server](#arduino_language_server)\n- [asm_lsp](#asm_lsp)\n- [ast_grep](#ast_grep)\n- [astro](#astro)\n- [atlas](#atlas)\n- [atopile](#atopile)\n- [autohotkey_lsp](#autohotkey_lsp)\n- [autotools_ls](#autotools_ls)\n- [awk_ls](#awk_ls)\n- [azure_pipelines_ls](#azure_pipelines_ls)\n- [bacon_ls](#bacon_ls)\n- [ballerina](#ballerina)\n- [basedpyright](#basedpyright)\n- [bashls](#bashls)\n- [basics_ls](#basics_ls)\n- [bazelrc_lsp](#bazelrc_lsp)\n- [beancount](#beancount)\n- [bicep](#bicep)\n- [biome](#biome)\n- [bitbake_language_server](#bitbake_language_server)\n- [blueprint_ls](#blueprint_ls)\n- [bqls](#bqls)\n- [bright_script](#bright_script)\n- [brioche](#brioche)\n- [bsl_ls](#bsl_ls)\n- [buck2](#buck2)\n- [buddy_ls](#buddy_ls)\n- [buf_ls](#buf_ls)\n- [bzl](#bzl)\n- [c3_lsp](#c3_lsp)\n- [cairo_ls](#cairo_ls)\n- [ccls](#ccls)\n- [cds_lsp](#cds_lsp)\n- [cir_lsp_server](#cir_lsp_server)\n- [circom-lsp](#circom-lsp)\n- [clangd](#clangd)\n- [clarinet](#clarinet)\n- [clojure_lsp](#clojure_lsp)\n- [cmake](#cmake)\n- [cobol_ls](#cobol_ls)\n- [codebook](#codebook)\n- [coffeesense](#coffeesense)\n- [contextive](#contextive)\n- [copilot](#copilot)\n- [coq_lsp](#coq_lsp)\n- [crystalline](#crystalline)\n- [csharp_ls](#csharp_ls)\n- [cspell_ls](#cspell_ls)\n- [css_variables](#css_variables)\n- [cssls](#cssls)\n- [cssmodules_ls](#cssmodules_ls)\n- [cucumber_language_server](#cucumber_language_server)\n- [cue](#cue)\n- [custom_elements_ls](#custom_elements_ls)\n- [cypher_ls](#cypher_ls)\n- [daedalus_ls](#daedalus_ls)\n- [dafny](#dafny)\n- [dagger](#dagger)\n- [dartls](#dartls)\n- [dcmls](#dcmls)\n- [debputy](#debputy)\n- [denols](#denols)\n- [dhall_lsp_server](#dhall_lsp_server)\n- [diagnosticls](#diagnosticls)\n- [digestif](#digestif)\n- [djls](#djls)\n- [djlsp](#djlsp)\n- [docker_compose_language_service](#docker_compose_language_service)\n- [docker_language_server](#docker_language_server)\n- [dockerls](#dockerls)\n- [dolmenls](#dolmenls)\n- [dotls](#dotls)\n- [dprint](#dprint)\n- [ds_pinyin_lsp](#ds_pinyin_lsp)\n- [dts_lsp](#dts_lsp)\n- [earthlyls](#earthlyls)\n- [ecsact](#ecsact)\n- [efm](#efm)\n- [elixirls](#elixirls)\n- [elmls](#elmls)\n- [elp](#elp)\n- [ember](#ember)\n- [emmet_language_server](#emmet_language_server)\n- [emmet_ls](#emmet_ls)\n- [emmylua_ls](#emmylua_ls)\n- [erg_language_server](#erg_language_server)\n- [esbonio](#esbonio)\n- [eslint](#eslint)\n- [expert](#expert)\n- [facility_language_server](#facility_language_server)\n- [fennel_language_server](#fennel_language_server)\n- [fennel_ls](#fennel_ls)\n- [fish_lsp](#fish_lsp)\n- [flow](#flow)\n- [flux_lsp](#flux_lsp)\n- [foam_ls](#foam_ls)\n- [fortitude](#fortitude)\n- [fortls](#fortls)\n- [fsautocomplete](#fsautocomplete)\n- [fsharp_language_server](#fsharp_language_server)\n- [fstar](#fstar)\n- [futhark_lsp](#futhark_lsp)\n- [gdscript](#gdscript)\n- [gdshader_lsp](#gdshader_lsp)\n- [gh_actions_ls](#gh_actions_ls)\n- [ghcide](#ghcide)\n- [ghdl_ls](#ghdl_ls)\n- [ginko_ls](#ginko_ls)\n- [gitlab_ci_ls](#gitlab_ci_ls)\n- [gitlab_duo](#gitlab_duo)\n- [glasgow](#glasgow)\n- [gleam](#gleam)\n- [glint](#glint)\n- [glsl_analyzer](#glsl_analyzer)\n- [glslls](#glslls)\n- [gn_language_server](#gn_language_server)\n- [gnls](#gnls)\n- [golangci_lint_ls](#golangci_lint_ls)\n- [gopls](#gopls)\n- [gradle_ls](#gradle_ls)\n- [grammarly](#grammarly)\n- [graphql](#graphql)\n- [groovyls](#groovyls)\n- [guile_ls](#guile_ls)\n- [harper_ls](#harper_ls)\n- [hdl_checker](#hdl_checker)\n- [helm_ls](#helm_ls)\n- [herb_ls](#herb_ls)\n- [hhvm](#hhvm)\n- [hie](#hie)\n- [hlasm](#hlasm)\n- [hls](#hls)\n- [home_assistant](#home_assistant)\n- [hoon_ls](#hoon_ls)\n- [html](#html)\n- [htmx](#htmx)\n- [hydra_lsp](#hydra_lsp)\n- [hylo_ls](#hylo_ls)\n- [hyprls](#hyprls)\n- [idris2_lsp](#idris2_lsp)\n- [intelephense](#intelephense)\n- [janet_lsp](#janet_lsp)\n- [java_language_server](#java_language_server)\n- [jdtls](#jdtls)\n- [jedi_language_server](#jedi_language_server)\n- [jinja_lsp](#jinja_lsp)\n- [jqls](#jqls)\n- [jsonls](#jsonls)\n- [jsonnet_ls](#jsonnet_ls)\n- [julials](#julials)\n- [just](#just)\n- [kakehashi](#kakehashi)\n- [kcl](#kcl)\n- [koka](#koka)\n- [kotlin_language_server](#kotlin_language_server)\n- [kotlin_lsp](#kotlin_lsp)\n- [kulala_ls](#kulala_ls)\n- [laravel_ls](#laravel_ls)\n- [lean3ls](#lean3ls)\n- [lelwel_ls](#lelwel_ls)\n- [lemminx](#lemminx)\n- [lexical](#lexical)\n- [lsp_ai](#lsp_ai)\n- [ltex](#ltex)\n- [ltex_plus](#ltex_plus)\n- [lua_ls](#lua_ls)\n- [luau_lsp](#luau_lsp)\n- [lwc_ls](#lwc_ls)\n- [m68k](#m68k)\n- [markdown_oxide](#markdown_oxide)\n- [marko-js](#marko-js)\n- [marksman](#marksman)\n- [matlab_ls](#matlab_ls)\n- [mdx_analyzer](#mdx_analyzer)\n- [mesonlsp](#mesonlsp)\n- [metals](#metals)\n- [millet](#millet)\n- [mint](#mint)\n- [mlir_lsp_server](#mlir_lsp_server)\n- [mlir_pdll_lsp_server](#mlir_pdll_lsp_server)\n- [mm0_ls](#mm0_ls)\n- [mojo](#mojo)\n- [motoko_lsp](#motoko_lsp)\n- [move_analyzer](#move_analyzer)\n- [mpls](#mpls)\n- [msbuild_project_tools_server](#msbuild_project_tools_server)\n- [muon](#muon)\n- [mutt_ls](#mutt_ls)\n- [nelua_lsp](#nelua_lsp)\n- [neocmake](#neocmake)\n- [nextflow_ls](#nextflow_ls)\n- [nextls](#nextls)\n- [nginx_language_server](#nginx_language_server)\n- [nickel_ls](#nickel_ls)\n- [nil_ls](#nil_ls)\n- [nim_langserver](#nim_langserver)\n- [nimls](#nimls)\n- [nixd](#nixd)\n- [nomad_lsp](#nomad_lsp)\n- [ntt](#ntt)\n- [nushell](#nushell)\n- [nxls](#nxls)\n- [ocamllsp](#ocamllsp)\n- [ols](#ols)\n- [omnisharp](#omnisharp)\n- [opencl_ls](#opencl_ls)\n- [openscad_ls](#openscad_ls)\n- [openscad_lsp](#openscad_lsp)\n- [oso](#oso)\n- [oxfmt](#oxfmt)\n- [oxlint](#oxlint)\n- [pact_ls](#pact_ls)\n- [pasls](#pasls)\n- [pbls](#pbls)\n- [perlls](#perlls)\n- [perlnavigator](#perlnavigator)\n- [perlpls](#perlpls)\n- [pest_ls](#pest_ls)\n- [phan](#phan)\n- [phpactor](#phpactor)\n- [phptools](#phptools)\n- [pico8_ls](#pico8_ls)\n- [please](#please)\n- [pli](#pli)\n- [pony_language_server](#pony_language_server)\n- [pony_lsp](#pony_lsp)\n- [poryscript_pls](#poryscript_pls)\n- [postgres_lsp](#postgres_lsp)\n- [powershell_es](#powershell_es)\n- [prismals](#prismals)\n- [prolog_ls](#prolog_ls)\n- [prosemd_lsp](#prosemd_lsp)\n- [protols](#protols)\n- [psalm](#psalm)\n- [pug](#pug)\n- [puppet](#puppet)\n- [purescriptls](#purescriptls)\n- [pylsp](#pylsp)\n- [pylyzer](#pylyzer)\n- [pyre](#pyre)\n- [pyrefly](#pyrefly)\n- [pyright](#pyright)\n- [qmlls](#qmlls)\n- [quick_lint_js](#quick_lint_js)\n- [r_language_server](#r_language_server)\n- [racket_langserver](#racket_langserver)\n- [raku_navigator](#raku_navigator)\n- [reason_ls](#reason_ls)\n- [regal](#regal)\n- [regols](#regols)\n- [remark_ls](#remark_ls)\n- [rescriptls](#rescriptls)\n- [rls](#rls)\n- [rnix](#rnix)\n- [robotcode](#robotcode)\n- [robotframework_ls](#robotframework_ls)\n- [roc_ls](#roc_ls)\n- [rome](#rome)\n- [roslyn_ls](#roslyn_ls)\n- [rpmspec](#rpmspec)\n- [rubocop](#rubocop)\n- [ruby_lsp](#ruby_lsp)\n- [ruff](#ruff)\n- [ruff_lsp](#ruff_lsp)\n- [rumdl](#rumdl)\n- [rune_languageserver](#rune_languageserver)\n- [rust_analyzer](#rust_analyzer)\n- [salt_ls](#salt_ls)\n- [scheme_langserver](#scheme_langserver)\n- [scry](#scry)\n- [selene3p_ls](#selene3p_ls)\n- [serve_d](#serve_d)\n- [shopify_theme_ls](#shopify_theme_ls)\n- [sixtyfps](#sixtyfps)\n- [slangd](#slangd)\n- [slint_lsp](#slint_lsp)\n- [smarty_ls](#smarty_ls)\n- [smithy_ls](#smithy_ls)\n- [snakeskin_ls](#snakeskin_ls)\n- [snyk_ls](#snyk_ls)\n- [solang](#solang)\n- [solargraph](#solargraph)\n- [solc](#solc)\n- [solidity](#solidity)\n- [solidity_ls](#solidity_ls)\n- [solidity_ls_nomicfoundation](#solidity_ls_nomicfoundation)\n- [somesass_ls](#somesass_ls)\n- [sorbet](#sorbet)\n- [sourcekit](#sourcekit)\n- [spectral](#spectral)\n- [spyglassmc_language_server](#spyglassmc_language_server)\n- [sqlls](#sqlls)\n- [sqls](#sqls)\n- [sqruff](#sqruff)\n- [stan_ls](#stan_ls)\n- [standardrb](#standardrb)\n- [starlark_rust](#starlark_rust)\n- [starpls](#starpls)\n- [statix](#statix)\n- [steep](#steep)\n- [stimulus_ls](#stimulus_ls)\n- [stylelint_lsp](#stylelint_lsp)\n- [stylua](#stylua)\n- [stylua3p_ls](#stylua3p_ls)\n- [superhtml](#superhtml)\n- [svelte](#svelte)\n- [svlangserver](#svlangserver)\n- [svls](#svls)\n- [swift_mesonls](#swift_mesonls)\n- [syntax_tree](#syntax_tree)\n- [systemd_ls](#systemd_ls)\n- [systemd_lsp](#systemd_lsp)\n- [tabby_ml](#tabby_ml)\n- [tailwindcss](#tailwindcss)\n- [taplo](#taplo)\n- [tblgen_lsp_server](#tblgen_lsp_server)\n- [tclsp](#tclsp)\n- [teal_ls](#teal_ls)\n- [templ](#templ)\n- [termux_language_server](#termux_language_server)\n- [terraform_lsp](#terraform_lsp)\n- [terraformls](#terraformls)\n- [texlab](#texlab)\n- [textlsp](#textlsp)\n- [tflint](#tflint)\n- [theme_check](#theme_check)\n- [thriftls](#thriftls)\n- [tilt_ls](#tilt_ls)\n- [tinymist](#tinymist)\n- [tofu_ls](#tofu_ls)\n- [tombi](#tombi)\n- [ts_ls](#ts_ls)\n- [ts_query_ls](#ts_query_ls)\n- [tsgo](#tsgo)\n- [tsp_server](#tsp_server)\n- [ttags](#ttags)\n- [turbo_ls](#turbo_ls)\n- [turtle_ls](#turtle_ls)\n- [tvm_ffi_navigator](#tvm_ffi_navigator)\n- [twiggy_language_server](#twiggy_language_server)\n- [ty](#ty)\n- [typeprof](#typeprof)\n- [typos_lsp](#typos_lsp)\n- [typst_lsp](#typst_lsp)\n- [uiua](#uiua)\n- [ungrammar_languageserver](#ungrammar_languageserver)\n- [unison](#unison)\n- [unocss](#unocss)\n- [uvls](#uvls)\n- [v_analyzer](#v_analyzer)\n- [vacuum](#vacuum)\n- [vala_ls](#vala_ls)\n- [vale_ls](#vale_ls)\n- [vectorcode_server](#vectorcode_server)\n- [verible](#verible)\n- [veridian](#veridian)\n- [veryl_ls](#veryl_ls)\n- [vespa_ls](#vespa_ls)\n- [vhdl_ls](#vhdl_ls)\n- [vimls](#vimls)\n- [visualforce_ls](#visualforce_ls)\n- [vls](#vls)\n- [volar](#volar)\n- [vscoqtop](#vscoqtop)\n- [vsrocq](#vsrocq)\n- [vtsls](#vtsls)\n- [vue_ls](#vue_ls)\n- [wasm_language_tools](#wasm_language_tools)\n- [wc_language_server](#wc_language_server)\n- [wgsl_analyzer](#wgsl_analyzer)\n- [yamlls](#yamlls)\n- [yang_lsp](#yang_lsp)\n- [yls](#yls)\n- [ziggy](#ziggy)\n- [ziggy_schema](#ziggy_schema)\n- [zk](#zk)\n- [zls](#zls)\n- [zuban](#zuban)\n\n## ada_ls\n\nhttps://github.com/AdaCore/ada_language_server\n\nInstallation instructions can be found [here](https://github.com/AdaCore/ada_language_server#Install).\n\nWorkspace-specific [settings](https://github.com/AdaCore/ada_language_server/blob/master/doc/settings.md) such as `projectFile` can be provided in a `.als.json` file at the root of the workspace.\nAlternatively, configuration may be passed as a \"settings\" object to `vim.lsp.config('ada_ls', {})`:\n\n```lua\nvim.lsp.config('ada_ls', {\n    settings = {\n      ada = {\n        projectFile = \"project.gpr\";\n        scenarioVariables = { ... };\n      }\n    }\n})\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('ada_ls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"ada_language_server\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"ada\" }\n  ```\n- `root_dir`: [../lsp/ada_ls.lua:24](../lsp/ada_ls.lua#L24)\n\n---\n\n## agda_ls\n\nhttps://github.com/agda/agda-language-server\n\nLanguage Server for Agda.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('agda_ls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"als\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"agda\" }\n  ```\n- `root_dir`: [../lsp/agda_ls.lua:10](../lsp/agda_ls.lua#L10)\n\n---\n\n## aiken\n\nhttps://github.com/aiken-lang/aiken\n\nA language server for Aiken Programming Language.\n[Installation](https://aiken-lang.org/installation-instructions)\n\nIt can be i\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('aiken')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"aiken\", \"lsp\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"aiken\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"aiken.toml\", \".git\" }\n  ```\n\n---\n\n## air\n\nhttps://github.com/posit-dev/air\n\nAir is an R formatter and language server, written in Rust.\n\nRefer to the [documentation](https://posit-dev.github.io/air/editors.html) for more details.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('air')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"air\", \"language-server\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"r\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"air.toml\", \".air.toml\", \".git\" }\n  ```\n\n---\n\n## alloy_ls\n\nhttps://github.com/AlloyTools/org.alloytools.alloy\n\nAlloy is a formal specification language for describing structures and a tool for exploring them.\n\nYou may also need to configure the filetype for Alloy (*.als) files:\n\n```\nautocmd BufNewFile,BufRead *.als set filetype=alloy\n```\n\nor\n\n```lua\nvim.filetype.add({\n  pattern = {\n    ['.*/*.als'] = 'alloy',\n  },\n})\n```\n\nAlternatively, you may use a syntax plugin like https://github.com/runoshun/vim-alloy.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('alloy_ls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"alloy\", \"lsp\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"alloy\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## anakin_language_server\n\nhttps://pypi.org/project/anakin-language-server/\n\n`anakin-language-server` is yet another Jedi Python language server.\n\nAvailable options:\n\n* Initialization: https://github.com/muffinmad/anakin-language-server#initialization-option\n* Configuration: https://github.com/muffinmad/anakin-language-server#configuration-options\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('anakin_language_server')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"anakinls\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"python\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"pyproject.toml\", \"setup.py\", \"setup.cfg\", \"requirements.txt\", \"Pipfile\", \".git\" }\n  ```\n- `settings` :\n  ```lua\n  {\n    anakinls = {\n      pyflakes_errors = { \"ImportStarNotPermitted\", \"UndefinedExport\", \"UndefinedLocal\", \"UndefinedName\", \"DuplicateArgument\", \"MultiValueRepeatedKeyLiteral\", \"MultiValueRepeatedKeyVariable\", \"FutureFeatureNotDefined\", \"LateFutureImport\", \"ReturnOutsideFunction\", \"YieldOutsideFunction\", \"ContinueOutsideLoop\", \"BreakOutsideLoop\", \"TwoStarredExpressions\", \"TooManyExpressionsInStarredAssignment\", \"ForwardAnnotationSyntaxError\", \"RaiseNotImplemented\", \"StringDotFormatExtraPositionalArguments\", \"StringDotFormatExtraNamedArguments\", \"StringDotFormatMissingArgument\", \"StringDotFormatMixingAutomatic\", \"StringDotFormatInvalidFormat\", \"PercentFormatInvalidFormat\", \"PercentFormatMixedPositionalAndNamed\", \"PercentFormatUnsupportedFormat\", \"PercentFormatPositionalCountMismatch\", \"PercentFormatExtraNamedArguments\", \"PercentFormatMissingArgument\", \"PercentFormatExpectedMapping\", \"PercentFormatExpectedSequence\", \"PercentFormatStarRequiresSequence\" }\n    }\n  }\n  ```\n\n---\n\n## angularls\n\nhttps://github.com/angular/vscode-ng-language-service\n`angular-language-server` can be installed via npm `npm install -g @angular/language-server`.\n\n```lua\nlocal project_library_path = \"/path/to/project/lib\"\nlocal cmd = {\"ngserver\", \"--stdio\", \"--tsProbeLocations\", project_library_path , \"--ngProbeLocations\", project_library_path}\n\nvim.lsp.config('angularls', {\n  cmd = cmd,\n})\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('angularls')\n```\n\nDefault config:\n- `cmd`: [../lsp/angularls.lua:93](../lsp/angularls.lua#L93)\n- `filetypes` :\n  ```lua\n  { \"typescript\", \"html\", \"typescriptreact\", \"htmlangular\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"angular.json\", \"nx.json\" }\n  ```\n\n---\n\n## ansiblels\n\nhttps://github.com/ansible/vscode-ansible\n\nLanguage server for the ansible configuration management tool.\n\n`ansible-language-server` can be installed via `npm`:\n\n```sh\nnpm install -g @ansible/ansible-language-server\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('ansiblels')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"ansible-language-server\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"yaml.ansible\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"ansible.cfg\", \".ansible-lint\" }\n  ```\n- `settings` :\n  ```lua\n  {\n    ansible = {\n      ansible = {\n        path = \"ansible\"\n      },\n      executionEnvironment = {\n        enabled = false\n      },\n      python = {\n        interpreterPath = \"python\"\n      },\n      validation = {\n        enabled = true,\n        lint = {\n          enabled = true,\n          path = \"ansible-lint\"\n        }\n      }\n    }\n  }\n  ```\n\n---\n\n## antlersls\n\nhttps://www.npmjs.com/package/antlers-language-server\n\n`antlersls` can be installed via `npm`:\n```sh\nnpm install -g antlers-language-server\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('antlersls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"antlersls\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"html\", \"antlers\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"composer.json\" }\n  ```\n\n---\n\n## apex_ls\n\nhttps://github.com/forcedotcom/salesforcedx-vscode\n\n Language server for Apex.\n\n For manual installation, download the JAR file from the [VSCode\n extension](https://github.com/forcedotcom/salesforcedx-vscode/tree/develop/packages/salesforcedx-vscode-apex) and adjust the `apex_jar_path` appropriately.\n\n ```lua\n vim.lsp.config('apex_ls', {\n   apex_jar_path = '/path/to/apex-jorje-lsp.jar',\n   apex_enable_semantic_errors = false, -- Whether to allow Apex Language Server to surface semantic errors\n   apex_enable_completion_statistics = false, -- Whether to allow Apex Language Server to collect telemetry on code completion usage\n }\n```\n\n Example configuration using Mason:\n\n```lua\n vim.lsp.config('apex_ls', {\n   apex_jar_path = vim.fn.stdpath('data') .. '/mason/share/apex-language-server/apex-jorje-lsp.jar',\n }\n```\n\n For a complete experience, you may need to ensure the treesitter parsers for 'apex' are installed (:TSInstall apex) as well as configure the filetype for apex (*.cls) files:\n\n ```lua\n vim.filetype.add({\n   pattern = {\n     ['.*/*.cls'] = 'apex',\n   },\n })\n ```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('apex_ls')\n```\n\nDefault config:\n- `cmd`: [../lsp/apex_ls.lua:37](../lsp/apex_ls.lua#L37)\n- `filetypes` :\n  ```lua\n  { \"apex\", \"apexcode\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"sfdx-project.json\" }\n  ```\n\n---\n\n## arduino_language_server\n\nhttps://github.com/arduino/arduino-language-server\n\nLanguage server for Arduino\n\nThe `arduino-language-server` can be installed by running:\n\n```\ngo install github.com/arduino/arduino-language-server@latest\n```\n\nThe `arduino-cli` tool must also be installed. Follow [these\ninstallation instructions](https://arduino.github.io/arduino-cli/latest/installation/) for\nyour platform.\n\nAfter installing `arduino-cli`, follow [these\ninstructions](https://arduino.github.io/arduino-cli/latest/getting-started/#create-a-configuration-file)\nfor generating a configuration file if you haven't done so already, and make\nsure you [install any relevant platforms\nlibraries](https://arduino.github.io/arduino-cli/latest/getting-started/#install-the-core-for-your-board).\n\nThe language server also requires `clangd` to be installed. Follow [these\ninstallation instructions](https://clangd.llvm.org/installation) for your\nplatform.\n\nIf you don't have a sketch yet create one.\n\n```sh\n$ arduino-cli sketch new test\n$ cd test\n```\n\nYou will need a `sketch.yaml` file in order for the language server to understand your project. It will also save you passing options to `arduino-cli` each time you compile or upload a file. You can generate the file by using the following commands.\n\n\nFirst gather some information about your board. Make sure your board is connected and run the following:\n\n```sh\n$ arduino-cli board list\nPort         Protocol Type              Board Name  FQBN            Core\n/dev/ttyACM0 serial   Serial Port (USB) Arduino Uno arduino:avr:uno arduino:avr\n```\n\nThen generate the file:\n\n```sh\narduino-cli board attach -p /dev/ttyACM0 -b arduino:avr:uno test.ino\n```\n\nThe resulting file should look like this:\n\n```yaml\ndefault_fqbn: arduino:avr:uno\ndefault_port: /dev/ttyACM0\n```\n\nYour folder structure should look like this:\n\n```\n.\n├── test.ino\n└── sketch.yaml\n```\n\nFor further instructions about configuration options, run `arduino-language-server --help`.\n\nNote that an upstream bug makes keywords in some cases become undefined by the language server.\nRef: https://github.com/arduino/arduino-ide/issues/159\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('arduino_language_server')\n```\n\nDefault config:\n- `capabilities` :\n  ```lua\n  {\n    textDocument = {\n      semanticTokens = vim.NIL\n    },\n    workspace = {\n      semanticTokens = vim.NIL\n    }\n  }\n  ```\n- `cmd` :\n  ```lua\n  { \"arduino-language-server\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"arduino\" }\n  ```\n- `root_dir`: [../lsp/arduino_language_server.lua:74](../lsp/arduino_language_server.lua#L74)\n\n---\n\n## asm_lsp\n\nhttps://github.com/bergercookie/asm-lsp\n\nLanguage Server for NASM/GAS/GO Assembly\n\n`asm-lsp` can be installed via cargo:\ncargo install asm-lsp\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('asm_lsp')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"asm-lsp\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"asm\", \"vmasm\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".asm-lsp.toml\", \".git\" }\n  ```\n\n---\n\n## ast_grep\n\nhttps://ast-grep.github.io/\n\nast-grep(sg) is a fast and polyglot tool for code structural search, lint, rewriting at large scale.\nast-grep LSP only works in projects that have `sgconfig.y[a]ml` in their root directories.\n```sh\nnpm install [-g] @ast-grep/cli\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('ast_grep')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"ast-grep\", \"lsp\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"bash\", \"c\", \"cpp\", \"cs\", \"css\", \"elixir\", \"go\", \"haskell\", \"html\", \"java\", \"javascript\", \"javascriptreact\", \"json\", \"kotlin\", \"lua\", \"nix\", \"php\", \"python\", \"ruby\", \"rust\", \"scala\", \"solidity\", \"swift\", \"typescript\", \"typescriptreact\", \"yaml\" }\n  ```\n- `reuse_client`: [../lsp/ast_grep.lua:12](../lsp/ast_grep.lua#L12)\n- `root_markers` :\n  ```lua\n  { \"sgconfig.yaml\", \"sgconfig.yml\" }\n  ```\n- `workspace_required` : `true`\n\n---\n\n## astro\n\nhttps://github.com/withastro/language-tools/tree/main/packages/language-server\n\n`astro-ls` can be installed via `npm`:\n```sh\nnpm install -g @astrojs/language-server\n```\n\nIf typescript is installed globally, you might get the `\\`typescript.tsdk\\` init option is required` error.\nYou will need to manually pass the typescript SDK path. Here is an example of a Nix configuration where typescript is installed via Nix's Home-manager:\n\n```nix\n{ config, pkgs, ... }:\n\n{\n  home.packages = with pkgs; [\n    typescript\n  ];\n\n  programs.neovim = {\n    plugins = with pkgs.vimPlugins; [\n      nvim-lspconfig\n    ];\n    extraPackages = with pkgs; [\n      astro-language-server\n    ];\n    initLua = ''\n      vim.lsp.config['astro'] = {\n        init_options = {\n          typescript = {\n            tsdk = ${pkgs.typescript}/lib/node_modules/typescript/lib,\n          },\n        },\n      }\n\n      vim.lsp.enable('astro')\n\n      -- ...\n    '';\n  };\n}\n```\nThe path can also be passed via a variable, like `vim.g.tsdk = \"${pkgs.typescript}/lib/node_modules/typescript/lib\"` and then used in the Lua Neovim config.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('astro')\n```\n\nDefault config:\n- `before_init`: [../lsp/astro.lua:49](../lsp/astro.lua#L49)\n- `cmd` :\n  ```lua\n  { \"astro-ls\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"astro\" }\n  ```\n- `init_options` :\n  ```lua\n  {\n    typescript = {}\n  }\n  ```\n- `root_markers` :\n  ```lua\n  { \"package.json\", \"tsconfig.json\", \"jsconfig.json\", \".git\" }\n  ```\n\n---\n\n## atlas\n\nhttps://github.com/ariga/atlas\n\nLanguage server for Atlas config and schema files.\n\nYou may also need to configure the filetype for *.hcl files:\n\n```vim\nautocmd BufNewFile,BufRead atlas.hcl set filetype=atlas-config\nautocmd BufNewFile,BufRead *.my.hcl set filetype=atlas-schema-mysql\nautocmd BufNewFile,BufRead *.pg.hcl set filetype=atlas-schema-postgresql\nautocmd BufNewFile,BufRead *.lt.hcl set filetype=atlas-schema-sqlite\nautocmd BufNewFile,BufRead *.ch.hcl set filetype=atlas-schema-clickhouse\nautocmd BufNewFile,BufRead *.ms.hcl set filetype=atlas-schema-mssql\nautocmd BufNewFile,BufRead *.rs.hcl set filetype=atlas-schema-redshift\nautocmd BufNewFile,BufRead *.test.hcl set filetype=atlas-test\nautocmd BufNewFile,BufRead *.plan.hcl set filetype=atlas-plan\nautocmd BufNewFile,BufRead *.rule.hcl set filetype=atlas-rule\n```\n\nor\n\n```lua\nvim.filetype.add({\n  filename = {\n    ['atlas.hcl'] = 'atlas-config',\n  },\n  pattern = {\n    ['.*/*.my.hcl'] = 'atlas-schema-mysql',\n    ['.*/*.pg.hcl'] = 'atlas-schema-postgresql',\n    ['.*/*.lt.hcl'] = 'atlas-schema-sqlite',\n    ['.*/*.ch.hcl'] = 'atlas-schema-clickhouse',\n    ['.*/*.ms.hcl'] = 'atlas-schema-mssql',\n    ['.*/*.rs.hcl'] = 'atlas-schema-redshift',\n    ['.*/*.test.hcl'] = 'atlas-test',\n    ['.*/*.plan.hcl'] = 'atlas-plan',\n    ['.*/*.rule.hcl'] = 'atlas-rule',\n  },\n})\n```\n\nOptionally, tell treesitter to treat Atlas filetypes as HCL for better syntax highlighting:\n\n```lua\nvim.treesitter.language.register('hcl', 'atlas-config')\nvim.treesitter.language.register('hcl', 'atlas-schema-mysql')\nvim.treesitter.language.register('hcl', 'atlas-schema-postgresql')\nvim.treesitter.language.register('hcl', 'atlas-schema-sqlite')\nvim.treesitter.language.register('hcl', 'atlas-schema-clickhouse')\nvim.treesitter.language.register('hcl', 'atlas-schema-mssql')\nvim.treesitter.language.register('hcl', 'atlas-schema-redshift')\nvim.treesitter.language.register('hcl', 'atlas-test')\nvim.treesitter.language.register('hcl', 'atlas-plan')\nvim.treesitter.language.register('hcl', 'atlas-rule')\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('atlas')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"atlas\", \"tool\", \"lsp\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"atlas-*\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"atlas.hcl\" }\n  ```\n\n---\n\n## atopile\n\nhttps://atopile.io/\n\nA language server for atopile Programming Language.\n\nIt comes with the atopile compiler, for installation see: [Installing atopile](https://docs.atopile.io/atopile/guides/install)\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('atopile')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"ato\", \"lsp\", \"start\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"ato\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"ato.yaml\", \".ato\", \".git\" }\n  ```\n\n---\n\n## autohotkey_lsp\n\nhttps://github.com/thqby/vscode-autohotkey2-lsp\n\nAutoHotkey v2.0 LSP implementation\n\nNOTE: AutoHotkey is Windows-only.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('autohotkey_lsp')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"autohotkey_lsp\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"autohotkey\" }\n  ```\n- `flags` :\n  ```lua\n  {\n    debounce_text_changes = 500\n  }\n  ```\n- `init_options` :\n  ```lua\n  {\n    ActionWhenV1IsDetected = \"Continue\",\n    AutoLibInclude = \"All\",\n    CommentTags = \"^;;\\\\s*(?<tag>.+)\",\n    CompleteFunctionParens = false,\n    Diagnostics = {\n      ClassStaticMemberCheck = true,\n      ParamsCheck = true\n    },\n    FormatOptions = {\n      array_style = \"expand\",\n      brace_style = \"One True Brace\",\n      break_chained_methods = false,\n      ignore_comment = false,\n      indent_string = \"\\t\",\n      max_preserve_newlines = 2,\n      object_style = \"none\",\n      preserve_newlines = true,\n      space_after_double_colon = true,\n      space_before_conditional = true,\n      space_in_empty_paren = false,\n      space_in_other = true,\n      space_in_paren = false,\n      wrap_line_length = 0\n    },\n    InterpreterPath = \"\",\n    SymbolFoldinFromOpenBrace = false,\n    locale = \"en-us\"\n  }\n  ```\n- `root_markers` :\n  ```lua\n  { \"package.json\" }\n  ```\n\n---\n\n## autotools_ls\n\nhttps://github.com/Freed-Wu/autotools-language-server\n\n`autotools-language-server` can be installed via `pip`:\n```sh\npip install autotools-language-server\n```\n\nLanguage server for autoconf, automake and make using tree sitter in python.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('autotools_ls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"autotools-language-server\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"config\", \"automake\", \"make\" }\n  ```\n- `root_dir`: [../lsp/autotools_ls.lua:17](../lsp/autotools_ls.lua#L17)\n\n---\n\n## awk_ls\n\nhttps://github.com/Beaglefoot/awk-language-server/\n\n`awk-language-server` can be installed via `npm`:\n```sh\nnpm install -g awk-language-server\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('awk_ls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"awk-language-server\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"awk\" }\n  ```\n\n---\n\n## azure_pipelines_ls\n\nhttps://github.com/microsoft/azure-pipelines-language-server\n\nAn Azure Pipelines language server\n\n`azure-pipelines-ls` can be installed via `npm`:\n\n```sh\nnpm install -g azure-pipelines-language-server\n```\n\nBy default `azure-pipelines-ls` will only work in files named `azure-pipelines.yml`, this can be changed by providing additional settings like so:\n```lua\nvim.lsp.config('azure_pipelines_ls', {\n  ... -- other configuration\n  settings = {\n      yaml = {\n          schemas = {\n              [\"https://raw.githubusercontent.com/microsoft/azure-pipelines-vscode/master/service-schema.json\"] = {\n                  \"/azure-pipeline*.y*l\",\n                  \"/*.azure*\",\n                  \"Azure-Pipelines/**/*.y*l\",\n                  \"Pipelines/*.y*l\",\n              },\n          },\n      },\n  },\n})\n```\nThe Azure Pipelines LSP is a fork of `yaml-language-server` and as such the same settings can be passed to it as `yaml-language-server`.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('azure_pipelines_ls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"azure-pipelines-language-server\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"yaml\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"azure-pipelines.yml\" }\n  ```\n- `settings` :\n  ```lua\n  {}\n  ```\n\n---\n\n## bacon_ls\n\nhttps://github.com/crisidev/bacon-ls\n\nA Language Server Protocol wrapper for [bacon](https://dystroy.org/bacon/).\nIt offers textDocument/diagnostic and workspace/diagnostic capabilities for Rust\nworkspaces using the Bacon export locations file.\n\nIt requires `bacon` and `bacon-ls` to be installed on the system using\n[mason.nvim](https://github.com/williamboman/mason.nvim) or manually\n\n```sh\n$ cargo install --locked bacon bacon-ls\n```\n\nSettings can be changed using the `init_options` dictionary:util\n\n```lua\ninit_options = {\n    -- Bacon export filename (default: .bacon-locations).\n    locationsFile = \".bacon-locations\",\n    -- Try to update diagnostics every time the file is saved (default: true).\n    updateOnSave = true,\n    --  How many milliseconds to wait before updating diagnostics after a save (default: 1000).\n    updateOnSaveWaitMillis = 1000,\n    -- Try to update diagnostics every time the file changes (default: true).\n    updateOnChange = true,\n    -- Try to validate that bacon preferences are setup correctly to work with bacon-ls (default: true).\n    validateBaconPreferences = true,\n    -- f no bacon preferences file is found, create a new preferences file with the bacon-ls job definition (default: true).\n    createBaconPreferencesFile = true,\n    -- Run bacon in background for the bacon-ls job (default: true)\n    runBaconInBackground = true,\n    -- Command line arguments to pass to bacon running in background (default \"--headless -j bacon-ls\")\n    runBaconInBackgroundCommandArguments = \"--headless -j bacon-ls\",\n    -- How many milliseconds to wait between background diagnostics check to synchronize all open files (default: 2000).\n    synchronizeAllOpenFilesWaitMillis = 2000,\n}\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('bacon_ls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"bacon-ls\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"rust\" }\n  ```\n- `init_options` :\n  ```lua\n  {}\n  ```\n- `root_markers` :\n  ```lua\n  { \".bacon-locations\", \"Cargo.toml\" }\n  ```\n\n---\n\n## ballerina\n\nBallerina language server\n\nThe Ballerina language's CLI tool comes with its own language server implementation.\nThe `bal` command line tool must be installed and available in your system's PATH.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('ballerina')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"bal\", \"start-language-server\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"ballerina\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"Ballerina.toml\" }\n  ```\n\n---\n\n## basedpyright\n\nhttps://detachhead.github.io/basedpyright\n\n`basedpyright`, a static type checker and language server for python\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('basedpyright')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"basedpyright-langserver\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"python\" }\n  ```\n- `on_attach`: [../lsp/basedpyright.lua:25](../lsp/basedpyright.lua#L25)\n- `root_markers` :\n  ```lua\n  { \"pyrightconfig.json\", \"pyproject.toml\", \"setup.py\", \"setup.cfg\", \"requirements.txt\", \"Pipfile\", \".git\" }\n  ```\n- `settings` :\n  ```lua\n  {\n    basedpyright = {\n      analysis = {\n        autoSearchPaths = true,\n        diagnosticMode = \"openFilesOnly\"\n      }\n    }\n  }\n  ```\n\n---\n\n## bashls\n\nhttps://github.com/bash-lsp/bash-language-server\n\n`bash-language-server` can be installed via `npm`:\n```sh\nnpm i -g bash-language-server\n```\n\nLanguage server for bash, written using tree sitter in typescript.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('bashls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"bash-language-server\", \"start\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"bash\", \"sh\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n- `settings` :\n  ```lua\n  {\n    bashIde = {\n      globPattern = \"*@(.sh|.inc|.bash|.command)\"\n    }\n  }\n  ```\n\n---\n\n## basics_ls\n\nhttps://github.com/antonk52/basics-language-server/\n\nBuffer, path, and snippet completion\n\n```sh\nnpm install -g basics-language-server\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('basics_ls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"basics-language-server\" }\n  ```\n- `settings` :\n  ```lua\n  {\n    buffer = {\n      enable = true,\n      minCompletionLength = 4\n    },\n    path = {\n      enable = true\n    },\n    snippet = {\n      enable = false,\n      sources = {}\n    }\n  }\n  ```\n\n---\n\n## bazelrc_lsp\n\nhttps://github.com/salesforce-misc/bazelrc-lsp\n\n`bazelrc-lsp` is a LSP for `.bazelrc` configuration files.\n\nThe `.bazelrc` file type is not detected automatically, you can register it manually (see below) or override the filetypes:\n\n```lua\nvim.filetype.add {\n  pattern = {\n    ['.*.bazelrc'] = 'bazelrc',\n  },\n}\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('bazelrc_lsp')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"bazelrc-lsp\", \"lsp\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"bazelrc\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"WORKSPACE\", \"WORKSPACE.bazel\", \"MODULE.bazel\" }\n  ```\n\n---\n\n## beancount\n\nhttps://github.com/polarmutex/beancount-language-server#installation\n\nSee https://github.com/polarmutex/beancount-language-server#configuration for configuration options\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('beancount')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"beancount-language-server\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"beancount\", \"bean\" }\n  ```\n- `init_options` :\n  ```lua\n  {}\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## bicep\n\nhttps://github.com/azure/bicep\nBicep language server\n\nBicep language server can be installed by downloading and extracting a release of bicep-langserver.zip from [Bicep GitHub releases](https://github.com/Azure/bicep/releases).\n\nBicep language server requires the [dotnet-sdk](https://dotnet.microsoft.com/download) to be installed.\n\nNeovim does not have built-in support for the bicep filetype which is required for lspconfig to automatically launch the language server.\n\nFiletype detection can be added via an autocmd:\n```lua\nvim.cmd [[ autocmd BufNewFile,BufRead *.bicep set filetype=bicep ]]\n```\n\n**By default, bicep language server does not have a `cmd` set.** This is because nvim-lspconfig does not make assumptions about your path. You must add the following to your init.vim or init.lua to set `cmd` to the absolute path ($HOME and ~ are not expanded) of the unzipped run script or binary.\n\n```lua\nlocal bicep_lsp_bin = \"/path/to/bicep-langserver/Bicep.LangServer.dll\"\nvim.lsp.config('bicep', {\n    cmd = { \"dotnet\", bicep_lsp_bin };\n    ...\n})\n```\n\nTo download the latest release and place in /usr/local/bin/bicep-langserver:\n```bash\n(cd $(mktemp -d) \\\n    && curl -fLO https://github.com/Azure/bicep/releases/latest/download/bicep-langserver.zip \\\n    && rm -rf /usr/local/bin/bicep-langserver \\\n    && unzip -d /usr/local/bin/bicep-langserver bicep-langserver.zip)\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('bicep')\n```\n\nDefault config:\n- `filetypes` :\n  ```lua\n  { \"bicep\", \"bicep-params\" }\n  ```\n- `init_options` :\n  ```lua\n  {}\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## biome\n\nhttps://biomejs.dev\n\nToolchain of the web. [Successor of Rome](https://biomejs.dev/blog/annoucing-biome).\n\n```sh\nnpm install [-g] @biomejs/biome\n```\n\n### Monorepo support\n\n`biome` supports monorepos by default. It will automatically find the `biome.json` corresponding to the package you are working on, as described in the [documentation](https://biomejs.dev/guides/big-projects/#monorepo). This works without the need of spawning multiple instances of `biome`, saving memory.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('biome')\n```\n\nDefault config:\n- `cmd`: [../lsp/biome.lua:17](../lsp/biome.lua#L17)\n- `filetypes` :\n  ```lua\n  { \"astro\", \"css\", \"graphql\", \"html\", \"javascript\", \"javascriptreact\", \"json\", \"jsonc\", \"svelte\", \"typescript\", \"typescriptreact\", \"vue\" }\n  ```\n- `root_dir`: [../lsp/biome.lua:17](../lsp/biome.lua#L17)\n- `workspace_required` : `true`\n\n---\n\n## bitbake_language_server\n\nhttps://github.com/Freed-Wu/bitbake-language-server\n\n`bitbake-language-server` can be installed via `pip`:\n```sh\npip install bitbake-language-server\n```\n\nLanguage server for bitbake.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('bitbake_language_server')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"bitbake-language-server\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"bitbake\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## blueprint_ls\n\nhttps://gitlab.gnome.org/jwestman/blueprint-compiler\n\n`blueprint-compiler` can be installed via your system package manager.\n\nLanguage server for the blueprint markup language, written in python and part\nof the blueprint-compiler.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('blueprint_ls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"blueprint-compiler\", \"lsp\" }\n  ```\n- `cmd_env` :\n  ```lua\n  {\n    GLOB_PATTERN = \"*@(.blp)\"\n  }\n  ```\n- `filetypes` :\n  ```lua\n  { \"blueprint\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## bqls\n\nhttps://github.com/kitagry/bqls\n\nThe `bqls` BigQuery language server can be installed by running:\n\n```sh\n$ go install github.com/kitagry/bqls@latest\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('bqls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"bqls\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"sql\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n- `settings` :\n  ```lua\n  {}\n  ```\n\n---\n\n## bright_script\n\nhttps://github.com/RokuCommunity/brighterscript\n\n`brightscript` can be installed via `npm`:\n```sh\nnpm install -g brighterscript\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('bright_script')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"bsc\", \"--lsp\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"brs\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"makefile\", \"Makefile\", \".git\" }\n  ```\n\n---\n\n## brioche\n\nhttps://github.com/brioche-dev/brioche\n\n`Brioche Language Server`.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('brioche')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"brioche\", \"lsp\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"brioche\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"project.bri\" }\n  ```\n\n---\n\n## bsl_ls\n\nhttps://github.com/1c-syntax/bsl-language-server\n\nLanguage Server Protocol implementation for 1C (BSL) - 1C:Enterprise 8 and OneScript languages.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('bsl_ls')\n```\n\nDefault config:\n- `filetypes` :\n  ```lua\n  { \"bsl\", \"os\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## buck2\n\nhttps://github.com/facebook/buck2\n\nBuild system, successor to Buck\n\nTo better detect Buck2 project files, the following can be added:\n\n```\nvim.cmd [[ autocmd BufRead,BufNewFile *.bxl,BUCK,TARGETS set filetype=bzl ]]\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('buck2')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"buck2\", \"lsp\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"bzl\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".buckconfig\" }\n  ```\n\n---\n\n## buddy_ls\n\nhttps://github.com/buddy-compiler/buddy-mlir#buddy-lsp-server\nThe Language Server for the buddy-mlir, a drop-in replacement for mlir-lsp-server,\nsupporting new dialects defined in buddy-mlir.\n`buddy-lsp-server` can be installed at the buddy-mlir repository (buddy-compiler/buddy-mlir)\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('buddy_ls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"buddy-lsp-server\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"mlir\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## buf_ls\n\nhttps://github.com/bufbuild/buf\n\nbuf lsp included in the cli itself\n\nbuf lsp is a Protobuf language server compatible with Buf modules and workspaces\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('buf_ls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"buf\", \"lsp\", \"serve\", \"--log-format=text\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"proto\" }\n  ```\n- `reuse_client`: [../lsp/buf_ls.lua:9](../lsp/buf_ls.lua#L9)\n- `root_markers` :\n  ```lua\n  { \"buf.yaml\", \".git\" }\n  ```\n\n---\n\n## bzl\n\nhttps://bzl.io/\n\nhttps://docs.stack.build/docs/cli/installation\n\nhttps://docs.stack.build/docs/vscode/starlark-language-server\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('bzl')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"bzl\", \"lsp\", \"serve\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"bzl\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"WORKSPACE\", \"WORKSPACE.bazel\" }\n  ```\n\n---\n\n## c3_lsp\n\nhttps://github.com/pherrymason/c3-lsp\n\nLanguage Server for c3.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('c3_lsp')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"c3lsp\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"c3\", \"c3i\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"project.json\", \"manifest.json\", \".git\" }\n  ```\n\n---\n\n## cairo_ls\n\n[Cairo Language Server](https://github.com/starkware-libs/cairo/tree/main/crates/cairo-lang-language-server)\n\nFirst, install Cairo following [this tutorial](https://book.cairo-lang.org/ch01-01-installation.html)\n\nThen enable Cairo Language Server in your Lua configuration.\n```lua\nvim.lsp.enable('cairo_ls')\n```\n\n*cairo-language-server is still under active development, some features might not work yet !*\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('cairo_ls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"scarb\", \"cairo-language-server\", \"/C\", \"--node-ipc\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"cairo\" }\n  ```\n- `init_options` :\n  ```lua\n  {\n    hostInfo = \"neovim\"\n  }\n  ```\n- `root_markers` :\n  ```lua\n  { \"Scarb.toml\", \"cairo_project.toml\", \".git\" }\n  ```\n\n---\n\n## ccls\n\nhttps://github.com/MaskRay/ccls/wiki\n\nccls relies on a [JSON compilation database](https://clang.llvm.org/docs/JSONCompilationDatabase.html) specified\nas compile_commands.json or, for simpler projects, a .ccls.\nFor details on how to automatically generate one using CMake look [here](https://cmake.org/cmake/help/latest/variable/CMAKE_EXPORT_COMPILE_COMMANDS.html). Alternatively, you can use [Bear](https://github.com/rizsotto/Bear).\n\nCustomization options are passed to ccls at initialization time via init_options, a list of available options can be found [here](https://github.com/MaskRay/ccls/wiki/Customization#initialization-options). For example:\n\n```lua\nvim.lsp.config(\"ccls\", {\n  init_options = {\n    compilationDatabaseDirectory = \"build\";\n    index = {\n      threads = 0;\n    };\n    clang = {\n      excludeArgs = { \"-frounding-math\"} ;\n    };\n  }\n})\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('ccls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"ccls\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"c\", \"cpp\", \"objc\", \"objcpp\", \"cuda\" }\n  ```\n- `offset_encoding` :\n  ```lua\n  \"utf-32\"\n  ```\n- `on_attach`: [../lsp/ccls.lua:41](../lsp/ccls.lua#L41)\n- `root_markers` :\n  ```lua\n  { \"compile_commands.json\", \".ccls\", \".git\" }\n  ```\n- `workspace_required` : `true`\n\n---\n\n## cds_lsp\n\nhttps://cap.cloud.sap/docs/\n\n`cds-lsp` can be installed via `npm`:\n\n```sh\nnpm i -g @sap/cds-lsp\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('cds_lsp')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"cds-lsp\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"cds\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"package.json\", \"db\", \"srv\" }\n  ```\n- `settings` :\n  ```lua\n  {\n    cds = {\n      validate = true\n    }\n  }\n  ```\n\n---\n\n## cir_lsp_server\n\nhttps://llvm.github.io/clangir\n\nThe Language Server for the LLVM ClangIR language\n\n`cir-lsp-server` can be installed at the llvm-project repository (https://github.com/llvm/llvm-project)\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('cir_lsp_server')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"cir-lsp-server\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"cir\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## circom-lsp\n\n[Circom Language Server](https://github.com/rubydusa/circom-lsp)\n\n`circom-lsp`, the language server for the Circom language.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('circom-lsp')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"circom-lsp\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"circom\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## clangd\n\nhttps://clangd.llvm.org/installation.html\n\n- **NOTE:** Clang >= 11 is recommended! See [#23](https://github.com/neovim/nvim-lspconfig/issues/23).\n- If `compile_commands.json` lives in a build directory, you should\n  symlink it to the root of your source tree.\n  ```\n  ln -s /path/to/myproject/build/compile_commands.json /path/to/myproject/\n  ```\n- clangd relies on a [JSON compilation database](https://clang.llvm.org/docs/JSONCompilationDatabase.html)\n  specified as compile_commands.json, see https://clangd.llvm.org/installation#compile_commandsjson\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('clangd')\n```\n\nDefault config:\n- `capabilities` :\n  ```lua\n  {\n    offsetEncoding = { \"utf-8\", \"utf-16\" },\n    textDocument = {\n      completion = {\n        editsNearCursor = true\n      }\n    }\n  }\n  ```\n- `cmd` :\n  ```lua\n  { \"clangd\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"c\", \"cpp\", \"objc\", \"objcpp\", \"cuda\" }\n  ```\n- `get_language_id`: [../lsp/clangd.lua:65](../lsp/clangd.lua#L65)\n- `on_attach`: [../lsp/clangd.lua:65](../lsp/clangd.lua#L65)\n- `on_init`: [../lsp/clangd.lua:65](../lsp/clangd.lua#L65)\n- `root_markers` :\n  ```lua\n  { \".clangd\", \".clang-tidy\", \".clang-format\", \"compile_commands.json\", \"compile_flags.txt\", \"configure.ac\", \".git\" }\n  ```\n\n---\n\n## clarinet\n\nhttps://github.com/hirosystems/clarinet\n\nClarinet is the fastest way to build, test, and deploy smart contracts on the Stacks blockchain.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('clarinet')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"clarinet\", \"lsp\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"clar\", \"clarity\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"Clarinet.toml\" }\n  ```\n\n---\n\n## clojure_lsp\n\nhttps://github.com/clojure-lsp/clojure-lsp\n\nClojure Language Server\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('clojure_lsp')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"clojure-lsp\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"clojure\", \"edn\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"project.clj\", \"deps.edn\", \"build.boot\", \"shadow-cljs.edn\", \".git\", \"bb.edn\" }\n  ```\n\n---\n\n## cmake\n\nhttps://github.com/regen100/cmake-language-server\n\nCMake LSP Implementation\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('cmake')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"cmake-language-server\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"cmake\" }\n  ```\n- `init_options` :\n  ```lua\n  {\n    buildDirectory = \"build\"\n  }\n  ```\n- `root_markers` :\n  ```lua\n  { \"CMakePresets.json\", \"CTestConfig.cmake\", \".git\", \"build\", \"cmake\" }\n  ```\n\n---\n\n## cobol_ls\n\nCobol language support\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('cobol_ls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"cobol-language-support\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"cobol\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## codebook\n\nhttps://github.com/blopker/codebook\n\n An unholy spell checker for code.\n\n`codebook-lsp` can be installed by following the instructions [here](https://github.com/blopker/codebook/blob/main/README.md#installation).\n\nThe default `cmd` assumes that the `codebook-lsp` binary can be found in `$PATH`.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('codebook')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"codebook-lsp\", \"serve\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"c\", \"css\", \"gitcommit\", \"go\", \"haskell\", \"html\", \"java\", \"javascript\", \"javascriptreact\", \"lua\", \"markdown\", \"php\", \"python\", \"ruby\", \"rust\", \"swift\", \"toml\", \"text\", \"typescript\", \"typescriptreact\", \"zig\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\", \"codebook.toml\", \".codebook.toml\" }\n  ```\n\n---\n\n## coffeesense\n\nhttps://github.com/phil294/coffeesense\n\nCoffeeSense Language Server\n`coffeesense-language-server` can be installed via `npm`:\n```sh\nnpm install -g coffeesense-language-server\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('coffeesense')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"coffeesense-language-server\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"coffee\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"package.json\" }\n  ```\n\n---\n\n## contextive\n\nhttps://github.com/dev-cycles/contextive\n\nLanguage Server for Contextive.\n\nContextive allows you to define terms in a central file and provides auto-completion suggestions and hover panels for these terms wherever they're used.\n\nTo install the language server, you need to download the appropriate [GitHub release asset](https://github.com/dev-cycles/contextive/releases/) for your operating system and architecture.\n\nAfter the download unzip the Contextive.LanguageServer binary and copy the file into a folder that is included in your system's PATH.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('contextive')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"Contextive.LanguageServer\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".contextive\", \".git\" }\n  ```\n\n---\n\n## copilot\n\nhttps://www.npmjs.com/package/@github/copilot-language-server\n\nThe Copilot Language Server enables any editor or IDE\nto integrate with GitHub Copilot via\n[the language server protocol](https://microsoft.github.io/language-server-protocol/).\n\n**[GitHub Copilot](https://github.com/features/copilot)**\nis an AI pair programmer tool that helps you write code faster and smarter.\n\n**Sign up for [GitHub Copilot Free](https://github.com/settings/copilot)!**\n\nPlease see [terms of use for GitHub Copilot](https://docs.github.com/en/site-policy/github-terms/github-terms-for-additional-products-and-features#github-copilot)\n\nYou need to enable `:help lsp-inline-completion` to receive suggestions. For example, you can enable it in the LspAttach event:\n\n```lua\nvim.api.nvim_create_autocmd('LspAttach', {\n  callback = function(args)\n    local bufnr = args.buf\n    local client = assert(vim.lsp.get_client_by_id(args.data.client_id))\n\n    if client:supports_method(vim.lsp.protocol.Methods.textDocument_inlineCompletion, bufnr) then\n      vim.lsp.inline_completion.enable(true, { bufnr = bufnr })\n\n      vim.keymap.set(\n        'i',\n        '<C-F>',\n        vim.lsp.inline_completion.get,\n        { desc = 'LSP: accept inline completion', buffer = bufnr }\n      )\n      vim.keymap.set(\n        'i',\n        '<C-G>',\n        vim.lsp.inline_completion.select,\n        { desc = 'LSP: switch inline completion', buffer = bufnr }\n      )\n    end\n  end\n})\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('copilot')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"copilot-language-server\", \"--stdio\" }\n  ```\n- `init_options` :\n  ```lua\n  {\n    editorInfo = {\n      name = \"Neovim\",\n      version = \"0.12.0-dev+g238d4fa71a\"\n    },\n    editorPluginInfo = {\n      name = \"Neovim\",\n      version = \"0.12.0-dev+g238d4fa71a\"\n    }\n  }\n  ```\n- `on_attach`: [../lsp/copilot.lua:106](../lsp/copilot.lua#L106)\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n- `settings` :\n  ```lua\n  {\n    telemetry = {\n      telemetryLevel = \"all\"\n    }\n  }\n  ```\n\n---\n\n## coq_lsp\n\nhttps://github.com/ejgallego/coq-lsp/\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('coq_lsp')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"coq-lsp\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"coq\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"_CoqProject\", \".git\" }\n  ```\n\n---\n\n## crystalline\n\nhttps://github.com/elbywan/crystalline\n\nCrystal language server.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('crystalline')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"crystalline\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"crystal\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"shard.yml\", \".git\" }\n  ```\n\n---\n\n## csharp_ls\n\nhttps://github.com/razzmatazz/csharp-language-server\n\nLanguage Server for C#.\n\ncsharp-ls requires the [dotnet-sdk](https://dotnet.microsoft.com/download) to be installed.\n\nThe preferred way to install csharp-ls is with `dotnet tool install --global csharp-ls`.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('csharp_ls')\n```\n\nDefault config:\n- `cmd`: [../lsp/csharp_ls.lua:14](../lsp/csharp_ls.lua#L14)\n- `filetypes` :\n  ```lua\n  { \"cs\" }\n  ```\n- `get_language_id`: [../lsp/csharp_ls.lua:14](../lsp/csharp_ls.lua#L14)\n- `init_options` :\n  ```lua\n  {\n    AutomaticWorkspaceInit = true\n  }\n  ```\n- `root_dir`: [../lsp/csharp_ls.lua:14](../lsp/csharp_ls.lua#L14)\n\n---\n\n## cspell_ls\n\n[cspell language server](https://github.com/vlabo/cspell-lsp)\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('cspell_ls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"cspell-lsp\", \"--stdio\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\", \"cspell.json\", \".cspell.json\", \"cspell.json\", \".cSpell.json\", \"cSpell.json\", \"cspell.config.js\", \"cspell.config.cjs\", \"cspell.config.json\", \"cspell.config.yaml\", \"cspell.config.yml\", \"cspell.yaml\", \"cspell.yml\" }\n  ```\n\n---\n\n## css_variables\n\nhttps://github.com/vunguyentuan/vscode-css-variables/tree/master/packages/css-variables-language-server\n\nCSS variables autocompletion and go-to-definition\n\n`css-variables-language-server` can be installed via `npm`:\n\n```sh\nnpm i -g css-variables-language-server\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('css_variables')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"css-variables-language-server\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"css\", \"scss\", \"less\" }\n  ```\n- `root_dir`: [../lsp/css_variables.lua:14](../lsp/css_variables.lua#L14)\n- `settings` :\n  ```lua\n  {\n    cssVariables = {\n      blacklistFolders = { \"**/.cache\", \"**/.DS_Store\", \"**/.git\", \"**/.hg\", \"**/.next\", \"**/.svn\", \"**/bower_components\", \"**/CVS\", \"**/dist\", \"**/node_modules\", \"**/tests\", \"**/tmp\" },\n      lookupFiles = { \"**/*.less\", \"**/*.scss\", \"**/*.sass\", \"**/*.css\" }\n    }\n  }\n  ```\n\n---\n\n## cssls\n\nhttps://github.com/hrsh7th/vscode-langservers-extracted\n\n`css-languageserver` can be installed via `npm`:\n\n```sh\nnpm i -g vscode-langservers-extracted\n```\n\nNeovim does not currently include built-in snippets. `vscode-css-language-server` only provides completions when snippet support is enabled. To enable completion, install a snippet plugin and add the following override to your language client capabilities during setup.\n\n```lua\n--Enable (broadcasting) snippet capability for completion\nlocal capabilities = vim.lsp.protocol.make_client_capabilities()\ncapabilities.textDocument.completion.completionItem.snippetSupport = true\n\nvim.lsp.config('cssls', {\n  capabilities = capabilities,\n})\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('cssls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"vscode-css-language-server\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"css\", \"scss\", \"less\" }\n  ```\n- `init_options` :\n  ```lua\n  {\n    provideFormatter = true\n  }\n  ```\n- `root_markers` :\n  ```lua\n  { \"package.json\", \".git\" }\n  ```\n- `settings` :\n  ```lua\n  {\n    css = {\n      validate = true\n    },\n    less = {\n      validate = true\n    },\n    scss = {\n      validate = true\n    }\n  }\n  ```\n\n---\n\n## cssmodules_ls\n\nhttps://github.com/antonk52/cssmodules-language-server\n\nLanguage server for autocompletion and go-to-definition functionality for CSS modules.\n\nYou can install cssmodules-language-server via npm:\n```sh\nnpm install -g cssmodules-language-server\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('cssmodules_ls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"cssmodules-language-server\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"javascript\", \"javascriptreact\", \"typescript\", \"typescriptreact\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"package.json\" }\n  ```\n\n---\n\n## cucumber_language_server\n\nhttps://cucumber.io\nhttps://github.com/cucumber/common\nhttps://www.npmjs.com/package/@cucumber/language-server\n\nLanguage server for Cucumber.\n\n`cucumber-language-server` can be installed via `npm`:\n```sh\nnpm install -g @cucumber/language-server\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('cucumber_language_server')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"cucumber-language-server\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"cucumber\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## cue\n\nhttps://github.com/cue-lang/cue\n\nCUE makes it easy to validate data, write schemas, and ensure configurations align with policies.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('cue')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"cue\", \"lsp\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"cue\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"cue.mod\", \".git\" }\n  ```\n\n---\n\n## custom_elements_ls\n\nhttps://github.com/Matsuuu/custom-elements-language-server\n\n`custom-elements-languageserver` depends on `typescript`. Both packages can be installed via `npm`:\n```sh\nnpm install -g typescript custom-elements-languageserver\n```\nTo configure typescript language server, add a\n[`tsconfig.json`](https://www.typescriptlang.org/docs/handbook/tsconfig-json.html) or\n[`jsconfig.json`](https://code.visualstudio.com/docs/languages/jsconfig) to the root of your\nproject.\nHere's an example that disables type checking in JavaScript files.\n```json\n{\n  \"compilerOptions\": {\n    \"module\": \"commonjs\",\n    \"target\": \"es6\",\n    \"checkJs\": false\n  },\n  \"exclude\": [\n    \"node_modules\"\n  ]\n}\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('custom_elements_ls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"custom-elements-languageserver\", \"--stdio\" }\n  ```\n- `init_options` :\n  ```lua\n  {\n    hostInfo = \"neovim\"\n  }\n  ```\n- `root_markers` :\n  ```lua\n  { \"tsconfig.json\", \"package.json\", \"jsconfig.json\", \".git\" }\n  ```\n\n---\n\n## cypher_ls\n\nhttps://github.com/neo4j/cypher-language-support/tree/main/packages/language-server\n\n`cypher-language-server`, language server for Cypher query language.\nPart of the umbrella project cypher-language-support: https://github.com/neo4j/cypher-language-support\n\n`cypher-language-server` can be installed via `npm`:\n```sh\nnpm i -g @neo4j-cypher/language-server\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('cypher_ls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"cypher-language-server\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"cypher\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## daedalus_ls\n\nDaedalusLanguageServer\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('daedalus_ls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"DaedalusLanguageServer\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"d\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"Gothic.src\", \"Camera.src\", \"Menu.src\", \"Music.src\", \"ParticleFX.src\", \"SFX.src\", \"VisualFX.src\" }\n  ```\n- `settings` :\n  ```lua\n  {\n    DaedalusLanguageServer = {\n      fileEncoding = \"Windows-1252\",\n      inlayHints = {\n        constants = true\n      },\n      loglevel = \"debug\",\n      numParserThreads = 16,\n      srcFileEncoding = \"Windows-1252\"\n    }\n  }\n  ```\n\n---\n\n## dafny\n\nSupport for the Dafny language server.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('dafny')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"dafny\", \"server\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"dfy\", \"dafny\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## dagger\n\nhttps://github.com/dagger/cuelsp\n\nDagger's lsp server for cuelang.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('dagger')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"cuelsp\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"cue\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"cue.mod\", \".git\" }\n  ```\n\n---\n\n## dartls\n\nhttps://github.com/dart-lang/sdk/tree/master/pkg/analysis_server/tool/lsp_spec\n\nLanguage server for dart.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('dartls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"dart\", \"language-server\", \"--protocol=lsp\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"dart\" }\n  ```\n- `init_options` :\n  ```lua\n  {\n    closingLabels = true,\n    flutterOutline = true,\n    onlyAnalyzeProjectsWithOpenFiles = true,\n    outline = true,\n    suggestFromUnimportedLibraries = true\n  }\n  ```\n- `root_markers` :\n  ```lua\n  { \"pubspec.yaml\" }\n  ```\n- `settings` :\n  ```lua\n  {\n    dart = {\n      completeFunctionCalls = true,\n      showTodos = true\n    }\n  }\n  ```\n\n---\n\n## dcmls\n\nhttps://dcm.dev/\n\nLanguage server for DCM analyzer.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('dcmls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"dcm\", \"start-server\", \"--client=neovim\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"dart\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"pubspec.yaml\" }\n  ```\n\n---\n\n## debputy\n\nhttps://salsa.debian.org/debian/debputy\n\nLanguage Server for Debian packages.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('debputy')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"debputy\", \"lsp\", \"server\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"debcontrol\", \"debcopyright\", \"debchangelog\", \"autopkgtest\", \"make\", \"yaml\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"debian\" }\n  ```\n\n---\n\n## denols\n\nhttps://github.com/denoland/deno\n\nDeno's built-in language server\n\nTo appropriately highlight codefences returned from denols, you will need to augment vim.g.markdown_fenced languages\n in your init.lua. Example:\n\n```lua\nvim.g.markdown_fenced_languages = {\n  \"ts=typescript\"\n}\n```\n\nSome care must be taken here to correctly infer whether a file is part of a Deno program, or a TS program that\nexpects to run in Node or Web Browsers. This supports having a Deno module that is a part of a mostly-not-Deno\nmonorepo. We do this by finding the nearest package manager lock file, and the nearest deno.json or deno.jsonc.\nNote that this means that without a deno.json, deno.jsonc, or deno.lock file, this LSP client will not attach.\n\nExample:\n\n```\nproject-root\n+-- node_modules/...\n+-- package-lock.json\n+-- package.json\n+-- packages\n    +-- deno-module\n    |   +-- deno.json\n    |   +-- package.json <-- It's normal for Deno projects to have package.json files!\n    |   +-- src\n    |       +-- index.ts <-- this is a Deno file\n    +-- node-module\n        +-- package.json\n        +-- src\n            +-- index.ts <-- a non-Deno file (ie, should use ts_ls or tsgo)\n```\n\nFrom the file being edited, we walk up to find the nearest package manager lockfile. This is PROJECT ROOT.\nFrom the file being edited, find the nearest deno.json or deno.jsonc. This is DENO ROOT.\nFrom the file being edited, find the nearest deno.lock. This is DENO LOCK ROOT\nIf DENO LOCK ROOT is found, and PROJECT ROOT is missing or shorter, then this is a deno file, and we attach.\nIf DENO ROOT is found, and it's longer than or equal to PROJECT ROOT, then this is a Deno file, and we attach.\nOtherwise, we abort, because this is a non-Deno TS file.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('denols')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"deno\", \"lsp\" }\n  ```\n- `cmd_env` :\n  ```lua\n  {\n    NO_COLOR = true\n  }\n  ```\n- `filetypes` :\n  ```lua\n  { \"javascript\", \"javascriptreact\", \"typescript\", \"typescriptreact\" }\n  ```\n- `handlers` :\n  ```lua\n  {\n    [\"textDocument/definition\"] = <function 1>,\n    [\"textDocument/references\"] = <function 1>,\n    [\"textDocument/typeDefinition\"] = <function 1>\n  }\n  ```\n- `on_attach`: [../lsp/denols.lua:98](../lsp/denols.lua#L98)\n- `root_dir`: [../lsp/denols.lua:98](../lsp/denols.lua#L98)\n- `settings` :\n  ```lua\n  {\n    deno = {\n      enable = true,\n      suggest = {\n        imports = {\n          hosts = {\n            [\"https://deno.land\"] = true\n          }\n        }\n      }\n    }\n  }\n  ```\n\n---\n\n## dhall_lsp_server\n\nhttps://github.com/dhall-lang/dhall-haskell/tree/master/dhall-lsp-server\n\nlanguage server for dhall\n\n`dhall-lsp-server` can be installed via cabal:\n```sh\ncabal install dhall-lsp-server\n```\nprebuilt binaries can be found [here](https://github.com/dhall-lang/dhall-haskell/releases).\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('dhall_lsp_server')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"dhall-lsp-server\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"dhall\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## diagnosticls\n\nhttps://github.com/iamcco/diagnostic-languageserver\n\nDiagnostic language server integrate with linters.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('diagnosticls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"diagnostic-languageserver\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  {}\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## digestif\n\nhttps://github.com/astoff/digestif\n\nDigestif is a code analyzer, and a language server, for LaTeX, ConTeXt et caterva. It provides\n\ncontext-sensitive completion, documentation, code navigation, and related functionality to any\n\ntext editor that speaks the LSP protocol.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('digestif')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"digestif\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"tex\", \"plaintex\", \"context\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## djls\n\nhttps://github.com/joshuadavidthomas/django-language-server\n\n`djls`, a language server for the Django web framework.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('djls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"djls\", \"serve\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"htmldjango\", \"html\", \"python\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"manage.py\", \"pyproject.toml\", \".git\" }\n  ```\n\n---\n\n## djlsp\n\nhttps://github.com/fourdigits/django-template-lsp\n\n`djlsp`, a language server for Django templates.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('djlsp')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"djlsp\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"html\", \"htmldjango\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n- `settings` :\n  ```lua\n  {}\n  ```\n\n---\n\n## docker_compose_language_service\n\nhttps://github.com/microsoft/compose-language-service\nThis project contains a language service for Docker Compose.\n\n`compose-language-service` can be installed via `npm`:\n\n```sh\nnpm install @microsoft/compose-language-service\n```\n\nNote: If the docker-compose-langserver doesn't startup when entering a `docker-compose.yaml` file, make sure that the filetype is `yaml.docker-compose`. You can set with: `:set filetype=yaml.docker-compose`.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('docker_compose_language_service')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"docker-compose-langserver\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"yaml.docker-compose\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"docker-compose.yaml\", \"docker-compose.yml\", \"compose.yaml\", \"compose.yml\" }\n  ```\n\n---\n\n## docker_language_server\n\nhttps://github.com/docker/docker-language-server\n\n`docker-langserver-server` can be installed via `go`:\n```sh\ngo install github.com/docker/docker-language-server/cmd/docker-language-server@latest\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('docker_language_server')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"docker-language-server\", \"start\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"dockerfile\", \"yaml.docker-compose\" }\n  ```\n- `get_language_id`: [../lsp/docker_language_server.lua:11](../lsp/docker_language_server.lua#L11)\n- `root_markers` :\n  ```lua\n  { \"Dockerfile\", \"docker-compose.yaml\", \"docker-compose.yml\", \"compose.yaml\", \"compose.yml\", \"docker-bake.json\", \"docker-bake.hcl\", \"docker-bake.override.json\", \"docker-bake.override.hcl\" }\n  ```\n\n---\n\n## dockerls\n\nhttps://github.com/rcjsuen/dockerfile-language-server-nodejs\n\n`docker-langserver` can be installed via `npm`:\n```sh\nnpm install -g dockerfile-language-server-nodejs\n```\n\nAdditional configuration can be applied in the following way:\n```lua\nvim.lsp.config('dockerls', {\n    settings = {\n        docker = {\n\t    languageserver = {\n\t        formatter = {\n\t\t    ignoreMultilineInstructions = true,\n\t\t},\n\t    },\n\t}\n    }\n})\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('dockerls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"docker-langserver\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"dockerfile\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"Dockerfile\" }\n  ```\n\n---\n\n## dolmenls\n\nhttps://github.com/Gbury/dolmen/blob/master/doc/lsp.md\n\n`dolmenls` can be installed via `opam`\n```sh\nopam install dolmen_lsp\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('dolmenls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"dolmenls\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"smt2\", \"tptp\", \"p\", \"cnf\", \"icnf\", \"zf\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## dotls\n\nhttps://github.com/nikeee/dot-language-server\n\n`dot-language-server` can be installed via `npm`:\n```sh\nnpm install -g dot-language-server\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('dotls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"dot-language-server\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"dot\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## dprint\n\nhttps://github.com/dprint/dprint\n\nPluggable and configurable code formatting platform written in Rust.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('dprint')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"dprint\", \"lsp\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"javascript\", \"javascriptreact\", \"typescript\", \"typescriptreact\", \"json\", \"jsonc\", \"markdown\", \"python\", \"toml\", \"rust\", \"roslyn\", \"graphql\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"dprint.json\", \".dprint.json\", \"dprint.jsonc\", \".dprint.jsonc\" }\n  ```\n- `settings` :\n  ```lua\n  {}\n  ```\n\n---\n\n## ds_pinyin_lsp\n\nhttps://github.com/iamcco/ds-pinyin-lsp\nDead simple Pinyin language server for input Chinese without IME(input method).\nTo install, download the latest [release](https://github.com/iamcco/ds-pinyin-lsp/releases) and ensure `ds-pinyin-lsp` is on your path.\nAnd make ensure the database file `dict.db3` is also downloaded. And put the path to `dict.dbs` in the following code.\n\n```lua\n\nvim.lsp.config('ds_pinyin_lsp', {\n    init_options = {\n        db_path = \"your_path_to_database\"\n    }\n})\n\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('ds_pinyin_lsp')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"ds-pinyin-lsp\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"markdown\", \"org\" }\n  ```\n- `init_options` :\n  ```lua\n  {\n    completion_on = true,\n    match_as_same_as_input = true,\n    match_long_input = true,\n    max_suggest = 15,\n    show_symbols = true,\n    show_symbols_by_n_times = 0,\n    show_symbols_only_follow_by_hanzi = false\n  }\n  ```\n- `on_attach`: [../lsp/ds_pinyin_lsp.lua:48](../lsp/ds_pinyin_lsp.lua#L48)\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## dts_lsp\n\n`dts-lsp` is an LSP for Devicetree files built on top of tree-sitter-devicetree grammar.\nLanguage servers can be used in many editors, such as Visual Studio Code, Emacs\nor Vim\n\nInstall `dts-lsp` from https://github.com/igor-prusov/dts-lsp and add it to path\n\n`dts-lsp` doesn't require any configuration.\n\nMore about Devicetree:\nhttps://www.devicetree.org/\nhttps://docs.zephyrproject.org/latest/build/dts/index.html\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('dts_lsp')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"dts-lsp\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"dts\", \"dtsi\", \"overlay\" }\n  ```\n- `name` :\n  ```lua\n  \"dts_lsp\"\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n- `settings` :\n  ```lua\n  {}\n  ```\n\n---\n\n## earthlyls\n\nhttps://github.com/glehmann/earthlyls\n\nA fast language server for earthly.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('earthlyls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"earthlyls\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"earthfile\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"Earthfile\" }\n  ```\n\n---\n\n## ecsact\n\nhttps://github.com/ecsact-dev/ecsact_lsp_server\n\nLanguage server for Ecsact.\n\nThe default cmd assumes `ecsact_lsp_server` is in your PATH. Typically from the\nEcsact SDK: https://ecsact.dev/start\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('ecsact')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"ecsact_lsp_server\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"ecsact\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## efm\n\nhttps://github.com/mattn/efm-langserver\n\nGeneral purpose Language Server that can use specified error message format generated from specified command.\n\nRequires at minimum EFM version [v0.0.38](https://github.com/mattn/efm-langserver/releases/tag/v0.0.38) to support\nlaunching the language server on single files.\n\nNote: In order for neovim's built-in language server client to send the appropriate `languageId` to EFM, **you must\nspecify `filetypes` in your call to `vim.lsp.config`**. Otherwise the server will be launch on the `BufEnter` instead\nof the `FileType` autocommand, and the `filetype` variable used to populate the `languageId` will not yet be set.\n\n```lua\nvim.lsp.config('efm', {\n  filetypes = { 'python','cpp','lua' }\n  settings = ..., -- You must populate this according to the EFM readme\n})\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('efm')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"efm-langserver\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## elixirls\n\nhttps://github.com/elixir-lsp/elixir-ls\n\n`elixir-ls` can be installed by following the instructions [here](https://github.com/elixir-lsp/elixir-ls#building-and-running).\n\n1. Download the zip from https://github.com/elixir-lsp/elixir-ls/releases/latest/\n2. Unzip it and make it executable.\n   ```bash\n   unzip elixir-ls.zip -d /path/to/elixir-ls\n   # Unix\n   chmod +x /path/to/elixir-ls/language_server.sh\n   ```\n\n**By default, elixir-ls doesn't have a `cmd` set.** This is because nvim-lspconfig does not make assumptions about\nyour path. You must add the following to your init.vim or init.lua to set `cmd` to the absolute path ($HOME and\n~ are not expanded) of your unzipped elixir-ls.\n\n```lua\nvim.lsp.config('elixirls', {\n    -- Unix\n    cmd = { \"/path/to/elixir-ls/language_server.sh\" };\n    -- Windows\n    cmd = { \"/path/to/elixir-ls/language_server.bat\" };\n    ...\n})\n```\n\n'root_dir' is chosen like this: if two or more directories containing `mix.exs` were found when searching\ndirectories upward, the second one (higher up) is chosen, with the assumption that it is the root of an umbrella\napp. Otherwise the directory containing the single mix.exs that was found is chosen.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('elixirls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"elixir-ls\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"elixir\", \"eelixir\", \"heex\", \"surface\" }\n  ```\n- `root_dir`: [../lsp/elixirls.lua:34](../lsp/elixirls.lua#L34)\n\n---\n\n## elmls\n\nhttps://github.com/elm-tooling/elm-language-server#installation\n\nIf you don't want to use Nvim to install it, then you can use:\n```sh\nnpm install -g elm elm-test elm-format @elm-tooling/elm-language-server\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('elmls')\n```\n\nDefault config:\n- `capabilities` :\n  ```lua\n  {\n    offsetEncoding = { \"utf-8\", \"utf-16\" }\n  }\n  ```\n- `cmd` :\n  ```lua\n  { \"elm-language-server\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"elm\" }\n  ```\n- `init_options` :\n  ```lua\n  {\n    disableElmLSDiagnostics = false,\n    elmReviewDiagnostics = \"off\",\n    onlyUpdateDiagnosticsOnSave = false,\n    skipInstallPackageConfirmation = false\n  }\n  ```\n- `root_dir`: [../lsp/elmls.lua:13](../lsp/elmls.lua#L13)\n\n---\n\n## elp\n\nhttps://whatsapp.github.io/erlang-language-platform\n\nELP integrates Erlang into modern IDEs via the language server protocol and was\ninspired by rust-analyzer.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('elp')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"elp\", \"server\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"erlang\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"rebar.config\", \"erlang.mk\", \".git\" }\n  ```\n\n---\n\n## ember\n\nhttps://github.com/ember-tooling/ember-language-server\n\n`ember-language-server` can be installed via `npm`:\n\n```sh\nnpm install -g @ember-tooling/ember-language-server\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('ember')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"ember-language-server\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"handlebars\", \"typescript\", \"javascript\", \"typescript.glimmer\", \"javascript.glimmer\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"ember-cli-build.js\", \".git\" }\n  ```\n\n---\n\n## emmet_language_server\n\nhttps://github.com/olrtg/emmet-language-server\n\nPackage can be installed via `npm`:\n```sh\nnpm install -g @olrtg/emmet-language-server\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('emmet_language_server')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"emmet-language-server\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"astro\", \"css\", \"eruby\", \"html\", \"htmlangular\", \"htmldjango\", \"javascriptreact\", \"less\", \"sass\", \"scss\", \"svelte\", \"typescriptreact\", \"vue\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## emmet_ls\n\nhttps://github.com/aca/emmet-ls\n\nPackage can be installed via `npm`:\n```sh\nnpm install -g emmet-ls\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('emmet_ls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"emmet-ls\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"astro\", \"css\", \"eruby\", \"html\", \"htmlangular\", \"htmldjango\", \"javascriptreact\", \"less\", \"pug\", \"sass\", \"scss\", \"svelte\", \"templ\", \"typescriptreact\", \"vue\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## emmylua_ls\n\nhttps://github.com/EmmyLuaLs/emmylua-analyzer-rust\n\nEmmylua Analyzer Rust. Language Server for Lua.\n\n`emmylua_ls` can be installed using `cargo` by following the instructions[here]\n(https://github.com/EmmyLuaLs/emmylua-analyzer-rust?tab=readme-ov-file#install).\n\nThe default `cmd` assumes that the `emmylua_ls` binary can be found in `$PATH`.\nIt might require you to provide cargo binaries installation path in it.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('emmylua_ls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"emmylua_ls\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"lua\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".luarc.json\", \".emmyrc.json\", \".luacheckrc\", \".git\" }\n  ```\n- `workspace_required` : `false`\n\n---\n\n## erg_language_server\n\nhttps://github.com/erg-lang/erg#flags ELS\n\nELS (erg-language-server) is a language server for the Erg programming language.\n\nerg-language-server can be installed via `cargo` and used as follows:\n\n```sh\ncargo install erg --features els\nerg --language-server\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('erg_language_server')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"erg\", \"--language-server\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"erg\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"package.er\", \".git\" }\n  ```\n\n---\n\n## esbonio\n\nhttps://github.com/swyddfa/esbonio\n\nEsbonio is a language server for [Sphinx](https://www.sphinx-doc.org/en/master/) documentation projects.\nThe language server can be installed via pip\n\n```\npip install esbonio\n```\n\nSince Sphinx is highly extensible you will get best results if you install the language server in the same\nPython environment as the one used to build your documentation. To ensure that the correct Python environment\nis picked up, you can either launch `nvim` with the correct environment activated.\n\n```\nsource env/bin/activate\nnvim\n```\n\nOr you can modify the default `cmd` to include the full path to the Python interpreter.\n\n```lua\nvim.lsp.config('esbonio', {\n  cmd = { '/path/to/virtualenv/bin/python', '-m', 'esbonio' }\n})\n```\n\nEsbonio supports a number of config values passed as `init_options` on startup, for example.\n\n```lua\nvim.lsp.config('esbonio', {\n  init_options = {\n    server = {\n      logLevel = \"debug\"\n    },\n    sphinx = {\n      confDir = \"/path/to/docs\",\n      srcDir = \"${confDir}/../docs-src\"\n    }\n})\n```\n\nA full list and explanation of the available options can be found [here](https://docs.esbon.io/en/esbonio-language-server-v0.16.4/lsp/getting-started.html?editor=neovim-lspconfig#configuration)\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('esbonio')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"python3\", \"-m\", \"esbonio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"rst\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## eslint\n\nhttps://github.com/hrsh7th/vscode-langservers-extracted\n\n`vscode-eslint-language-server` is a linting engine for JavaScript / Typescript.\nIt can be installed via `npm`:\n\n```sh\nnpm i -g vscode-langservers-extracted\n```\n\nThe default `on_attach` config provides the `LspEslintFixAll` command that can be used to format a document on save:\n```lua\nlocal base_on_attach = vim.lsp.config.eslint.on_attach\nvim.lsp.config(\"eslint\", {\n  on_attach = function(client, bufnr)\n    if not base_on_attach then return end\n\n    base_on_attach(client, bufnr)\n    vim.api.nvim_create_autocmd(\"BufWritePre\", {\n      buffer = bufnr,\n      command = \"LspEslintFixAll\",\n    })\n  end,\n})\n```\n\nSee [vscode-eslint](https://github.com/microsoft/vscode-eslint/blob/55871979d7af184bf09af491b6ea35ebd56822cf/server/src/eslintServer.ts#L216-L229) for configuration options.\n\nMessages handled in lspconfig: `eslint/openDoc`, `eslint/confirmESLintExecution`, `eslint/probeFailed`, `eslint/noLibrary`\n\nAdditional messages you can handle: `eslint/noConfig`\n\n### Monorepo support\n\n`vscode-eslint-language-server` supports monorepos by default. It will automatically find the config file corresponding to the package you are working on. You can use different configs in different packages.\nThis works without the need of spawning multiple instances of `vscode-eslint-language-server`.\nYou can use a different version of ESLint in each package, but it is recommended to use the same version of ESLint in all packages. The location of the ESLint binary will be determined automatically.\n\n/!\\ When using flat config files, you need to use them across all your packages in your monorepo, as it's a global setting for the server.\n\n### Flat config in ESLint versions prior to 10.0\n\nIf you're using a ESLint version that supports both flat config and eslintrc (>= 8.21, < 10.0) and want to change\nthe [default behavior](https://eslint.org/blog/2023/10/flat-config-rollout-plans/), you'll need to set\n`experimental.useFlatConfig` accordingly:\n```lua\nvim.lsp.config(\"eslint\", {\n  settings = {\n    experimental = {\n      -- If you want to use flat config on >= 8.21, < 9.0\n      useFlatConfig = true,\n      -- Or if you want to use eslintrc on 9.*\n      -- useFlatConfig = false,\n    }\n  }\n})\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('eslint')\n```\n\nDefault config:\n- `before_init`: [../lsp/eslint.lua:79](../lsp/eslint.lua#L79)\n- `cmd` :\n  ```lua\n  { \"vscode-eslint-language-server\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"javascript\", \"javascriptreact\", \"typescript\", \"typescriptreact\", \"vue\", \"svelte\", \"astro\", \"htmlangular\" }\n  ```\n- `handlers` :\n  ```lua\n  {\n    [\"eslint/confirmESLintExecution\"] = <function 1>,\n    [\"eslint/noLibrary\"] = <function 2>,\n    [\"eslint/openDoc\"] = <function 3>,\n    [\"eslint/probeFailed\"] = <function 4>\n  }\n  ```\n- `on_attach`: [../lsp/eslint.lua:79](../lsp/eslint.lua#L79)\n- `root_dir`: [../lsp/eslint.lua:79](../lsp/eslint.lua#L79)\n- `settings` :\n  ```lua\n  {\n    codeAction = {\n      disableRuleComment = {\n        enable = true,\n        location = \"separateLine\"\n      },\n      showDocumentation = {\n        enable = true\n      }\n    },\n    codeActionOnSave = {\n      enable = false,\n      mode = \"all\"\n    },\n    experimental = {},\n    format = true,\n    nodePath = \"\",\n    onIgnoredFiles = \"off\",\n    problems = {\n      shortenToSingleLine = false\n    },\n    quiet = false,\n    rulesCustomizations = {},\n    run = \"onType\",\n    useESLintClass = false,\n    validate = \"on\",\n    workingDirectory = {\n      mode = \"auto\"\n    }\n  }\n  ```\n- `workspace_required` : `true`\n\n---\n\n## expert\n\nhttps://github.com/elixir-lang/expert\n\nExpert is the official language server implementation for the Elixir programming language.\n\n'root_dir' is chosen like this: if two or more directories containing `mix.exs` were found when\nsearching directories upward, the second one (higher up) is chosen, with the assumption that it\nis the root of an umbrella app. Otherwise the directory containing the single mix.exs that was\nfound is chosen.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('expert')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"expert\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"elixir\", \"eelixir\", \"heex\", \"surface\" }\n  ```\n- `root_dir`: [../lsp/expert.lua:13](../lsp/expert.lua#L13)\n\n---\n\n## facility_language_server\n\nhttps://github.com/FacilityApi/FacilityLanguageServer\n\nFacility language server protocol (LSP) support.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('facility_language_server')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"facility-language-server\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"fsd\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## fennel_language_server\n\nhttps://github.com/rydesun/fennel-language-server\n\nFennel language server protocol (LSP) support.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('fennel_language_server')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"fennel-language-server\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"fennel\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n- `settings` :\n  ```lua\n  {}\n  ```\n\n---\n\n## fennel_ls\n\nhttps://sr.ht/~xerool/fennel-ls/\n\nA language server for fennel.\n\nfennel-ls is configured using the closest file to your working directory named `flsproject.fnl`.\nAll fennel-ls configuration options [can be found here](https://git.sr.ht/~xerool/fennel-ls/tree/HEAD/docs/manual.md#configuration).\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('fennel_ls')\n```\n\nDefault config:\n- `capabilities` :\n  ```lua\n  {\n    offsetEncoding = { \"utf-8\", \"utf-16\" }\n  }\n  ```\n- `cmd` :\n  ```lua\n  { \"fennel-ls\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"fennel\" }\n  ```\n- `root_dir`: [../lsp/fennel_ls.lua:11](../lsp/fennel_ls.lua#L11)\n- `settings` :\n  ```lua\n  {}\n  ```\n\n---\n\n## fish_lsp\n\nhttps://github.com/ndonfris/fish-lsp\n\nA Language Server Protocol (LSP) tailored for the fish shell.\nThis project aims to enhance the coding experience for fish,\nby introducing a suite of intelligent features like auto-completion,\nscope aware symbol analysis, per-token hover generation, and many others.\n\n[homepage](https://www.fish-lsp.dev/)\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('fish_lsp')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"fish-lsp\", \"start\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"fish\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"config.fish\", \".git\" }\n  ```\n\n---\n\n## flow\n\nhttps://flow.org/\nhttps://github.com/facebook/flow\n\nSee below for how to setup Flow itself.\nhttps://flow.org/en/docs/install/\n\nSee below for lsp command options.\n\n```sh\nnpx flow lsp --help\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('flow')\n```\n\nDefault config:\n- `cmd`: [../lsp/flow.lua:16](../lsp/flow.lua#L16)\n- `filetypes` :\n  ```lua\n  { \"javascript\", \"javascriptreact\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".flowconfig\" }\n  ```\n\n---\n\n## flux_lsp\n\nhttps://github.com/influxdata/flux-lsp\n`flux-lsp` can be installed via `cargo`:\n```sh\ncargo install --git https://github.com/influxdata/flux-lsp\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('flux_lsp')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"flux-lsp\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"flux\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## foam_ls\n\nhttps://github.com/FoamScience/foam-language-server\n\n`foam-language-server` can be installed via `npm`\n```sh\nnpm install -g foam-language-server\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('foam_ls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"foam-ls\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"foam\", \"OpenFOAM\" }\n  ```\n- `root_dir`: [../lsp/foam_ls.lua:11](../lsp/foam_ls.lua#L11)\n\n---\n\n## fortitude\n\nhttps://fortitude.readthedocs.io/en/stable/\n\nFortitude is a Fortran linter built in Rust and inspired by (and build upon) Ruff\n\n```sh\n# Install With uv:\nuv tool install fortitude-lint@latest\n\n# Install with pip:\npip install fortitude-lint\n```\n\n**LSP is available in Fortitude `v0.8.0`.**\n\nRefer to the [documentation](https://fortitude.readthedocs.io/en/stable/editors/) for more details.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('fortitude')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"fortitude\", \"server\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"fortran\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"fpm.toml\", \"fortitude.toml\", \".fortitude.toml\", \".git\" }\n  ```\n- `settings` :\n  ```lua\n  {}\n  ```\n\n---\n\n## fortls\n\nhttps://fortls.fortran-lang.org/index.html\n\nfortls is a Fortran Language Server, the server can be installed via pip\n\n```sh\npip install fortls\n```\n\nSettings to the server can be passed either through the `cmd` option or through\na local configuration file e.g. `.fortls`. For more information\nsee the `fortls` [documentation](https://fortls.fortran-lang.org/options.html).\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('fortls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"fortls\", \"--notify_init\", \"--hover_signature\", \"--hover_language=fortran\", \"--use_signature_help\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"fortran\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".fortls\", \".fortlsrc\", \".fortls.json\", \".git\" }\n  ```\n- `settings` :\n  ```lua\n  {}\n  ```\n\n---\n\n## fsautocomplete\n\nhttps://github.com/fsharp/FsAutoComplete\n\nLanguage Server for F# provided by FsAutoComplete (FSAC).\n\nFsAutoComplete requires the [dotnet-sdk](https://dotnet.microsoft.com/download) to be installed.\n\nThe preferred way to install FsAutoComplete is with `dotnet tool install --global fsautocomplete`.\n\nInstructions to compile from source are found on the main [repository](https://github.com/fsharp/FsAutoComplete).\n\nYou may also need to configure the filetype as Vim defaults to Forth for `*.fs` files:\n\n`autocmd BufNewFile,BufRead *.fs,*.fsx,*.fsi set filetype=fsharp`\n\nThis is automatically done by plugins such as [PhilT/vim-fsharp](https://github.com/PhilT/vim-fsharp), [fsharp/vim-fsharp](https://github.com/fsharp/vim-fsharp), and [adelarsq/neofsharp.vim](https://github.com/adelarsq/neofsharp.vim).\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('fsautocomplete')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"fsautocomplete\", \"--adaptive-lsp-server-enabled\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"fsharp\" }\n  ```\n- `init_options` :\n  ```lua\n  {\n    AutomaticWorkspaceInit = true\n  }\n  ```\n- `root_dir`: [../lsp/fsautocomplete.lua:23](../lsp/fsautocomplete.lua#L23)\n- `settings` :\n  ```lua\n  {\n    FSharp = {\n      EnableReferenceCodeLens = true,\n      ExternalAutocomplete = false,\n      InterfaceStubGeneration = true,\n      InterfaceStubGenerationMethodBody = 'failwith \"Not Implemented\"',\n      InterfaceStubGenerationObjectIdentifier = \"this\",\n      Linter = true,\n      RecordStubGeneration = true,\n      RecordStubGenerationBody = 'failwith \"Not Implemented\"',\n      ResolveNamespaces = true,\n      SimplifyNameAnalyzer = true,\n      UnionCaseStubGeneration = true,\n      UnionCaseStubGenerationBody = 'failwith \"Not Implemented\"',\n      UnusedDeclarationsAnalyzer = true,\n      UnusedOpensAnalyzer = true,\n      UseSdkScripts = true,\n      keywordsAutocomplete = true\n    }\n  }\n  ```\n\n---\n\n## fsharp_language_server\n\nF# Language Server\nhttps://github.com/faldor20/fsharp-language-server\n\nAn implementation of the language server protocol using the F# Compiler Service.\n\nBuild the project from source and override the command path to location of DLL.\n\nIf filetype determination is not already performed by an available plugin ([PhilT/vim-fsharp](https://github.com/PhilT/vim-fsharp), [fsharp/vim-fsharp](https://github.com/fsharp/vim-fsharp), and [adelarsq/neofsharp.vim](https://github.com/adelarsq/neofsharp.vim).\n), then the following must be added to initialization configuration:\n\n\n`autocmd BufNewFile,BufRead *.fs,*.fsx,*.fsi set filetype=fsharp`\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('fsharp_language_server')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"dotnet\", \"FSharpLanguageServer.dll\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"fsharp\" }\n  ```\n- `init_options` :\n  ```lua\n  {\n    AutomaticWorkspaceInit = true\n  }\n  ```\n- `root_dir`: [../lsp/fsharp_language_server.lua:19](../lsp/fsharp_language_server.lua#L19)\n- `settings` :\n  ```lua\n  {}\n  ```\n\n---\n\n## fstar\n\nhttps://github.com/FStarLang/FStar\n\nLSP support is included in FStar. Make sure `fstar.exe` is in your PATH.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('fstar')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"fstar.exe\", \"--lsp\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"fstar\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## futhark_lsp\n\nhttps://github.com/diku-dk/futhark\n\nFuthark Language Server\n\nThis language server comes with the futhark compiler and is run with the command\n```\nfuthark lsp\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('futhark_lsp')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"futhark\", \"lsp\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"futhark\", \"fut\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## gdscript\n\nhttps://github.com/godotengine/godot\n\nLanguage server for GDScript, used by Godot Engine.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('gdscript')\n```\n\nDefault config:\n- `cmd`: [../lsp/gdscript.lua:11](../lsp/gdscript.lua#L11)\n- `filetypes` :\n  ```lua\n  { \"gd\", \"gdscript\", \"gdscript3\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"project.godot\", \".git\" }\n  ```\n\n---\n\n## gdshader_lsp\n\nhttps://github.com/godofavacyn/gdshader-lsp\n\nA language server for the Godot Shading language.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('gdshader_lsp')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"gdshader-lsp\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"gdshader\", \"gdshaderinc\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"project.godot\" }\n  ```\n\n---\n\n## gh_actions_ls\n\nhttps://github.com/lttb/gh-actions-language-server\n\nLanguage server for GitHub Actions.\n\nThe projects [forgejo](https://forgejo.org/) and [gitea](https://about.gitea.com/)\ndesign their actions to be as compatible to github as possible\nwith only [a few differences](https://docs.gitea.com/usage/actions/comparison#unsupported-workflows-syntax) between the systems.\nThe `gh_actions_ls` is therefore enabled for those `yaml` files as well.\n\nThe `gh-actions-language-server` can be installed via `npm`:\n\n```sh\nnpm install -g gh-actions-language-server\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('gh_actions_ls')\n```\n\nDefault config:\n- `capabilities` :\n  ```lua\n  {\n    workspace = {\n      didChangeWorkspaceFolders = {\n        dynamicRegistration = true\n      }\n    }\n  }\n  ```\n- `cmd` :\n  ```lua\n  { \"gh-actions-language-server\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"yaml\" }\n  ```\n- `handlers` :\n  ```lua\n  {\n    [\"actions/readFile\"] = <function 1>\n  }\n  ```\n- `init_options` :\n  ```lua\n  {}\n  ```\n- `root_dir`: [../lsp/gh_actions_ls.lua:18](../lsp/gh_actions_ls.lua#L18)\n\n---\n\n## ghcide\n\nhttps://github.com/digital-asset/ghcide\n\nA library for building Haskell IDE tooling.\n\"ghcide\" isn't for end users now. Use \"haskell-language-server\" instead of \"ghcide\".\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('ghcide')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"ghcide\", \"--lsp\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"haskell\", \"lhaskell\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"stack.yaml\", \"hie-bios\", \"BUILD.bazel\", \"cabal.config\", \"package.yaml\" }\n  ```\n\n---\n\n## ghdl_ls\n\nhttps://github.com/ghdl/ghdl-language-server\n\nA language server for VHDL, using ghdl as its backend.\n\n`ghdl-ls` is part of pyghdl, for installation instructions see\n[the upstream README](https://github.com/ghdl/ghdl/tree/master/pyGHDL/lsp).\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('ghdl_ls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"ghdl-ls\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"vhdl\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"hdl-prj.json\", \".git\" }\n  ```\n\n---\n\n## ginko_ls\n\n`ginko_ls` is meant to be a feature-complete language server for device-trees.\n Language servers can be used in many editors, such as Visual Studio Code, Emacs\n or Vim\n\n Install `ginko_ls` from https://github.com/Schottkyc137/ginko and add it to path\n\n `ginko_ls` doesn't require any configuration.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('ginko_ls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"ginko_ls\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"dts\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n- `settings` :\n  ```lua\n  {}\n  ```\n\n---\n\n## gitlab_ci_ls\n\nhttps://github.com/alesbrelih/gitlab-ci-ls\n\nLanguage Server for Gitlab CI\n\n`gitlab-ci-ls` can be installed via cargo:\ncargo install gitlab-ci-ls\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('gitlab_ci_ls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"gitlab-ci-ls\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"yaml.gitlab\" }\n  ```\n- `init_options` :\n  ```lua\n  {\n    cache_path = \"/home/runner/.cache/gitlab-ci-ls/\",\n    log_path = \"/home/runner/.cache/gitlab-ci-ls//log/gitlab-ci-ls.log\"\n  }\n  ```\n- `root_dir`: [../lsp/gitlab_ci_ls.lua:15](../lsp/gitlab_ci_ls.lua#L15)\n\n---\n\n## gitlab_duo\n\nGitLab Duo Language Server Configuration for Neovim\n\nhttps://gitlab.com/gitlab-org/editor-extensions/gitlab-lsp\n\nThe GitLab LSP enables any editor or IDE to integrate with GitLab Duo\nfor AI-powered code suggestions via the Language Server Protocol.\n\nPrerequisites:\n- Node.js and npm installed\n- GitLab account with Duo Pro license\n- Internet connection for OAuth device flow\n\nSetup:\n1. Run :LspGitLabDuoSignIn to start OAuth authentication\n2. Follow the browser prompts to authorize\n3. Enable inline completion in LspAttach event (see example below)\n\nInline Completion Example:\n```lua\nvim.api.nvim_create_autocmd('LspAttach', {\n  callback = function(args)\n    local bufnr = args.buf\n    local client = assert(vim.lsp.get_client_by_id(args.data.client_id))\n\n    if vim.lsp.inline_completion and\n       client:supports_method(vim.lsp.protocol.Methods.textDocument_inlineCompletion, bufnr) then\n      vim.lsp.inline_completion.enable(true, { bufnr = bufnr })\n\n      -- Tab to accept suggestion\n      vim.keymap.set('i', '<Tab>', function()\n        if vim.lsp.inline_completion.is_visible() then\n          return vim.lsp.inline_completion.accept()\n        else\n          return '<Tab>'\n        end\n      end, { expr = true, buffer = bufnr, desc = 'GitLab Duo: Accept suggestion' })\n\n      -- Alt/Option+[ for previous suggestion\n      vim.keymap.set('i', '<M-[>', vim.lsp.inline_completion.select_prev,\n        { buffer = bufnr, desc = 'GitLab Duo: Previous suggestion' })\n\n      -- Alt/Option+] for next suggestion\n      vim.keymap.set('i', '<M-]>', vim.lsp.inline_completion.select_next,\n        { buffer = bufnr, desc = 'GitLab Duo: Next suggestion' })\n    end\n  end\n})\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('gitlab_duo')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"npx\", \"--registry=https://gitlab.com/api/v4/packages/npm/\", \"@gitlab-org/gitlab-lsp\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"ruby\", \"go\", \"javascript\", \"typescript\", \"typescriptreact\", \"javascriptreact\", \"rust\", \"lua\", \"python\", \"java\", \"cpp\", \"c\", \"php\", \"cs\", \"kotlin\", \"swift\", \"scala\", \"vue\", \"svelte\", \"html\", \"css\", \"scss\", \"json\", \"yaml\" }\n  ```\n- `init_options` :\n  ```lua\n  {\n    editorInfo = {\n      name = \"Neovim\",\n      version = \"0.12.0-dev+g238d4fa71a\"\n    },\n    editorPluginInfo = {\n      name = \"Neovim LSP\",\n      version = \"0.12.0-dev+g238d4fa71a\"\n    },\n    extension = {\n      name = \"Neovim LSP Client\",\n      version = \"0.12.0-dev+g238d4fa71a\"\n    },\n    ide = {\n      name = \"Neovim\",\n      vendor = \"Neovim\",\n      version = \"0.12.0-dev+g238d4fa71a\"\n    }\n  }\n  ```\n- `on_attach`: [../lsp/gitlab_duo.lua:317](../lsp/gitlab_duo.lua#L317)\n- `on_init`: [../lsp/gitlab_duo.lua:317](../lsp/gitlab_duo.lua#L317)\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n- `settings` :\n  ```lua\n  {\n    baseUrl = \"https://gitlab.com\",\n    codeCompletion = {\n      enableSecretRedaction = true\n    },\n    featureFlags = {\n      streamCodeGenerations = false\n    },\n    logLevel = \"info\",\n    telemetry = {\n      enabled = false\n    }\n  }\n  ```\n\n---\n\n## glasgow\n\nhttps://github.com/nolanderc/glasgow\n\nProvides language features for WGSL (WebGPU Shading Language):\n- Completions:\n    - Local functions/variables/types.\n    - Fields and swizzles.\n    - Builtin types and functions (`dot`, `reflect`, `textureSample`, `vec3`, `mat4x2`, etc.)\n- Hover Documentation:\n    - Function signatures.\n    - Variable types.\n    - Includes builtin types and functions. Text is taken from the WGSL specification.\n- Goto Definition\n- Find all References\n- Rename\n- Formatter\n\n`glasgow` can be installed via `cargo`:\n```sh\ncargo install glasgow\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('glasgow')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"glasgow\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"wgsl\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n- `settings` :\n  ```lua\n  {}\n  ```\n\n---\n\n## gleam\n\nhttps://github.com/gleam-lang/gleam\n\nA language server for Gleam Programming Language.\n\nIt comes with the Gleam compiler, for installation see: [Installing Gleam](https://gleam.run/getting-started/installing/)\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('gleam')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"gleam\", \"lsp\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"gleam\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"gleam.toml\", \".git\" }\n  ```\n\n---\n\n## glint\n\nhttps://github.com/typed-ember/glint\nhttps://typed-ember.gitbook.io/glint/\n`glint-language-server` is installed when adding `@glint/core` to your project's devDependencies:\n\n```sh\nnpm install @glint/core --save-dev\nyarn add -D @glint/core\n\nThis configuration uses the local installation of `glint-language-server`\n(found in the `node_modules` directory of your project).\n\nTo use a global installation of `glint-language-server`,\nset the `init_options.glint.useGlobal` to `true`.\n\nvim.lsp.config('glint', {\n  init_options = {\n    glint = {\n      useGlobal = true,\n    },\n  },\n})\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('glint')\n```\n\nDefault config:\n- `cmd`: [../lsp/glint.lua:26](../lsp/glint.lua#L26)\n- `filetypes` :\n  ```lua\n  { \"html.handlebars\", \"handlebars\", \"typescript\", \"typescript.glimmer\", \"javascript\", \"javascript.glimmer\" }\n  ```\n- `init_options` :\n  ```lua\n  {\n    glint = {\n      useGlobal = false\n    }\n  }\n  ```\n- `root_markers` :\n  ```lua\n  { \".glintrc.yml\", \".glintrc\", \".glintrc.json\", \".glintrc.js\", \"glint.config.js\", \"package.json\" }\n  ```\n- `workspace_required` : `true`\n\n---\n\n## glsl_analyzer\n\nhttps://github.com/nolanderc/glsl_analyzer\n\nLanguage server for GLSL\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('glsl_analyzer')\n```\n\nDefault config:\n- `capabilities` :\n  ```lua\n  {}\n  ```\n- `cmd` :\n  ```lua\n  { \"glsl_analyzer\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"glsl\", \"vert\", \"tesc\", \"tese\", \"frag\", \"geom\", \"comp\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## glslls\n\nhttps://github.com/svenstaro/glsl-language-server\n\nLanguage server implementation for GLSL\n\n`glslls` can be compiled and installed manually, or, if your distribution has access to the AUR,\nvia the `glsl-language-server` AUR package\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('glslls')\n```\n\nDefault config:\n- `capabilities` :\n  ```lua\n  {\n    offsetEncoding = { \"utf-8\", \"utf-16\" },\n    textDocument = {\n      completion = {\n        editsNearCursor = true\n      }\n    }\n  }\n  ```\n- `cmd` :\n  ```lua\n  { \"glslls\", \"--stdin\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"glsl\", \"vert\", \"tesc\", \"tese\", \"frag\", \"geom\", \"comp\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## gn_language_server\n\nhttps://github.com/google/gn-language-server\n\nA language server for GN, the build configuration language used in Chromium,\nFuchsia, and other projects.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('gn_language_server')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"gn-language-server\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"gn\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".gn\", \".git\" }\n  ```\n\n---\n\n## gnls\n\nhttps://github.com/microsoft/gnls\n\nMicrosoft's language server for GN build files.\n\nAssuming there is a `gnls` script somewhere in your `$PATH`, containing\nfor example:\n\n```shell\nGNLS_SRC_DIR=</path/to/gnls>\n\nexec node ${GNLS_SRC_DIR}/build/server.js $@\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('gnls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"gnls\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"gn\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".gn\", \".git\" }\n  ```\n\n---\n\n## golangci_lint_ls\n\nCombination of both lint server and client\n\nhttps://github.com/nametake/golangci-lint-langserver\nhttps://github.com/golangci/golangci-lint\n\n\nInstallation of binaries needed is done via\n\n```\ngo install github.com/nametake/golangci-lint-langserver@latest\ngo install github.com/golangci/golangci-lint/cmd/golangci-lint@latest\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('golangci_lint_ls')\n```\n\nDefault config:\n- `before_init`: [../lsp/golangci_lint_ls.lua:17](../lsp/golangci_lint_ls.lua#L17)\n- `cmd` :\n  ```lua\n  { \"golangci-lint-langserver\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"go\", \"gomod\" }\n  ```\n- `init_options` :\n  ```lua\n  {\n    command = { \"golangci-lint\", \"run\", \"--output.text.path=\", \"--output.tab.path=\", \"--output.html.path=\", \"--output.checkstyle.path=\", \"--output.junit-xml.path=\", \"--output.teamcity.path=\", \"--output.sarif.path=\", \"--show-stats=false\", \"--output.json.path=stdout\" }\n  }\n  ```\n- `root_markers` :\n  ```lua\n  { \".golangci.yml\", \".golangci.yaml\", \".golangci.toml\", \".golangci.json\", \"go.work\", \"go.mod\", \".git\" }\n  ```\n\n---\n\n## gopls\n\nhttps://github.com/golang/tools/tree/master/gopls\n\nGoogle's lsp server for golang.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('gopls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"gopls\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"go\", \"gomod\", \"gowork\", \"gotmpl\" }\n  ```\n- `root_dir`: [../lsp/gopls.lua:89](../lsp/gopls.lua#L89)\n\n---\n\n## gradle_ls\n\nhttps://github.com/microsoft/vscode-gradle\n\nMicrosoft's lsp server for gradle files\n\nIf you're setting this up manually, build vscode-gradle using `./gradlew installDist` and point `cmd` to the `gradle-language-server` generated in the build directory\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('gradle_ls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"gradle-language-server\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"groovy\" }\n  ```\n- `init_options` :\n  ```lua\n  {\n    settings = {\n      gradleWrapperEnabled = true\n    }\n  }\n  ```\n- `root_markers` :\n  ```lua\n  { \"settings.gradle\", \"build.gradle\" }\n  ```\n\n---\n\n## grammarly\n\nhttps://github.com/znck/grammarly\n\n`grammarly-languageserver` can be installed via `npm`:\n\n```sh\nnpm i -g grammarly-languageserver\n```\n\nWARNING: Since this language server uses Grammarly's API, any document you open with it running is shared with them. Please evaluate their [privacy policy](https://www.grammarly.com/privacy-policy) before using this.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('grammarly')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"grammarly-languageserver\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"markdown\" }\n  ```\n- `handlers` :\n  ```lua\n  {\n    [\"$/updateDocumentState\"] = <function 1>\n  }\n  ```\n- `init_options` :\n  ```lua\n  {\n    clientId = \"client_BaDkMgx4X19X9UxxYRCXZo\"\n  }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## graphql\n\nhttps://github.com/graphql/graphiql/tree/main/packages/graphql-language-service-cli\n\n`graphql-lsp` can be installed via `npm`:\n\n```sh\nnpm install -g graphql-language-service-cli\n```\n\nNote that you must also have [the graphql package](https://github.com/graphql/graphql-js) installed within your project and create a [GraphQL config file](https://the-guild.dev/graphql/config/docs).\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('graphql')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"graphql-lsp\", \"server\", \"-m\", \"stream\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"graphql\", \"typescriptreact\", \"javascriptreact\" }\n  ```\n- `root_dir`: [../lsp/graphql.lua:16](../lsp/graphql.lua#L16)\n\n---\n\n## groovyls\n\nhttps://github.com/prominic/groovy-language-server.git\n\nRequirements:\n - Linux/macOS (for now)\n - Java 11+\n\n`groovyls` can be installed by following the instructions [here](https://github.com/prominic/groovy-language-server.git#build).\n\nIf you have installed groovy language server, you can set the `cmd` custom path as follow:\n\n```lua\nvim.lsp.config('groovyls', {\n    -- Unix\n    cmd = { \"java\", \"-jar\", \"path/to/groovyls/groovy-language-server-all.jar\" },\n    ...\n})\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('groovyls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"java\", \"-jar\", \"groovy-language-server-all.jar\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"groovy\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"Jenkinsfile\", \".git\" }\n  ```\n\n---\n\n## guile_ls\n\nhttps://codeberg.org/rgherdt/scheme-lsp-server\n\nThe recommended way is to install guile-lsp-server is using Guix. Unfortunately it is still not available at the official Guix channels, but you can use the provided channel guix.scm in the repo:\n```sh\nguix package -f guix.scm\n```\n\nCheckout the repo for more info.\n\nNote: This LSP will start on `scheme.guile` filetype. You can set this file type using `:help modeline` or adding https://gitlab.com/HiPhish/guile.vim to your plugins to automatically set it.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('guile_ls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"guile-lsp-server\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"scheme.guile\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"guix.scm\", \".git\" }\n  ```\n\n---\n\n## harper_ls\n\nhttps://github.com/automattic/harper\n\nThe language server for Harper, the slim, clean language checker for developers.\n\nSee our [documentation](https://writewithharper.com/docs/integrations/neovim) for more information on settings.\n\nIn short, they should look something like this:\n```lua\nvim.lsp.config('harper_ls', {\n  settings = {\n    [\"harper-ls\"] = {\n      userDictPath = \"~/dict.txt\"\n    }\n  },\n})\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('harper_ls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"harper-ls\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"asciidoc\", \"c\", \"cpp\", \"cs\", \"gitcommit\", \"go\", \"html\", \"java\", \"javascript\", \"lua\", \"markdown\", \"nix\", \"python\", \"ruby\", \"rust\", \"swift\", \"toml\", \"typescript\", \"typescriptreact\", \"haskell\", \"cmake\", \"typst\", \"php\", \"dart\", \"clojure\", \"sh\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".harper-dictionary.txt\", \".git\" }\n  ```\n\n---\n\n## hdl_checker\n\nhttps://github.com/suoto/hdl_checker\nLanguage server for hdl-checker.\nInstall using: `pip install hdl-checker --upgrade`\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('hdl_checker')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"hdl_checker\", \"--lsp\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"vhdl\", \"verilog\", \"systemverilog\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## helm_ls\n\nhttps://github.com/mrjosh/helm-ls\n\nHelm Language server. (This LSP is in early development)\n\n`helm Language server` can be installed by following the instructions [here](https://github.com/mrjosh/helm-ls).\n\nThe default `cmd` assumes that the `helm_ls` binary can be found in `$PATH`.\n\nIf need Helm file highlight use [vim-helm](https://github.com/towolf/vim-helm) plugin.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('helm_ls')\n```\n\nDefault config:\n- `capabilities` :\n  ```lua\n  {\n    workspace = {\n      didChangeWatchedFiles = {\n        dynamicRegistration = true\n      }\n    }\n  }\n  ```\n- `cmd` :\n  ```lua\n  { \"helm_ls\", \"serve\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"helm\", \"yaml.helm-values\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"Chart.yaml\" }\n  ```\n\n---\n\n## herb_ls\n\nhttps://www.npmjs.com/package/@herb-tools/language-server\nhttps://github.com/marcoroth/herb\n\nHTML+ERB (HTML + Embedded Ruby)\nPowerful and seamless HTML-aware ERB parsing and tooling.\n\nHerb is designed from the ground up to deeply understand `.html.erb` files,\npreserving both HTML and embedded Ruby structure without losing any details.\n\n`herb-language-server` can be installed via `npm`:\n\n```sh\nnpm install -g @herb-tools/language-server\n```\n\nor via `yarn`:\n\n```sh\nyarn global add @herb-tools/language-server\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('herb_ls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"herb-language-server\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"html\", \"eruby\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"Gemfile\", \".git\" }\n  ```\n\n---\n\n## hhvm\n\nLanguage server for programs written in Hack\nhttps://hhvm.com/\nhttps://github.com/facebook/hhvm\nSee below for how to setup HHVM & typechecker:\nhttps://docs.hhvm.com/hhvm/getting-started/getting-started\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('hhvm')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"hh_client\", \"lsp\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"php\", \"hack\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".hhconfig\" }\n  ```\n\n---\n\n## hie\n\nhttps://github.com/haskell/haskell-ide-engine\n\nthe following init_options are supported (see https://github.com/haskell/haskell-ide-engine#configuration):\n```lua\ninit_options = {\n  languageServerHaskell = {\n    hlintOn = bool;\n    maxNumberOfProblems = number;\n    diagnosticsDebounceDuration = number;\n    liquidOn = bool (default false);\n    completionSnippetsOn = bool (default true);\n    formatOnImportOn = bool (default true);\n    formattingProvider = string (default \"brittany\", alternate \"floskell\");\n  }\n}\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('hie')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"hie-wrapper\", \"--lsp\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"haskell\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"stack.yaml\", \"package.yaml\", \".git\" }\n  ```\n\n---\n\n## hlasm\n\n`hlasm_language_server` is a language server for the High Level Assembler language used on IBM SystemZ mainframes.\n\nTo learn how to configure the HLASM language server, see the [HLASM Language Support documentation](https://github.com/eclipse-che4z/che-che4z-lsp-for-hlasm).\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('hlasm')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"hlasm_language_server\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"hlasm\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".hlasmplugin\" }\n  ```\n\n---\n\n## hls\n\nhttps://github.com/haskell/haskell-language-server\n\nHaskell Language Server\n\nIf you are using HLS 1.9.0.0, enable the language server to launch on Cabal files as well:\n\n```lua\nvim.lsp.config('hls', {\n  filetypes = { 'haskell', 'lhaskell', 'cabal' },\n})\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('hls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"haskell-language-server-wrapper\", \"--lsp\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"haskell\", \"lhaskell\" }\n  ```\n- `root_dir`: [../lsp/hls.lua:18](../lsp/hls.lua#L18)\n- `settings` :\n  ```lua\n  {\n    haskell = {\n      cabalFormattingProvider = \"cabal-fmt\",\n      formattingProvider = \"ormolu\"\n    }\n  }\n  ```\n\n---\n\n## home_assistant\n\nhttps://github.com/keesschollaart81/vscode-home-assistant\n\n`vscode-home-assistant` can be installed via from source or by downloading\nand extracting the VSCode \"Home Assistant Config Helper\" extension\n\n`vscode-home-assistant` is a language server for Home Assistant ported from the VSCode \"Home Assistant Config Helper\" extension.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('home_assistant')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"vscode-home-assistant\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"yaml\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"configuration.yaml\", \"configuration.yml\" }\n  ```\n\n---\n\n## hoon_ls\n\nhttps://github.com/urbit/hoon-language-server\n\nA language server for Hoon.\n\nThe language server can be installed via `npm install -g @hoon-language-server`\n\nStart a fake ~zod with `urbit -F zod`.\nStart the language server at the Urbit Dojo prompt with: `|start %language-server`\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('hoon_ls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"hoon-language-server\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"hoon\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## html\n\nhttps://github.com/hrsh7th/vscode-langservers-extracted\n\n`vscode-html-language-server` can be installed via `npm`:\n```sh\nnpm i -g vscode-langservers-extracted\n```\n\nNeovim does not currently include built-in snippets. `vscode-html-language-server` only provides completions when snippet support is enabled.\nTo enable completion, install a snippet plugin and add the following override to your language client capabilities during setup.\n\nThe code-formatting feature of the lsp can be controlled with the `provideFormatter` option.\n\n```lua\n--Enable (broadcasting) snippet capability for completion\nlocal capabilities = vim.lsp.protocol.make_client_capabilities()\ncapabilities.textDocument.completion.completionItem.snippetSupport = true\n\nvim.lsp.config('html', {\n  capabilities = capabilities,\n})\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('html')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"vscode-html-language-server\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"html\" }\n  ```\n- `init_options` :\n  ```lua\n  {\n    configurationSection = { \"html\", \"css\", \"javascript\" },\n    embeddedLanguages = {\n      css = true,\n      javascript = true\n    },\n    provideFormatter = true\n  }\n  ```\n- `root_markers` :\n  ```lua\n  { \"package.json\", \".git\" }\n  ```\n- `settings` :\n  ```lua\n  {}\n  ```\n\n---\n\n## htmx\n\nhttps://github.com/ThePrimeagen/htmx-lsp\n\n`htmx-lsp` can be installed via `cargo`:\n```sh\ncargo install htmx-lsp\n```\n\nLsp is still very much work in progress and experimental. Use at your own risk.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('htmx')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"htmx-lsp\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"aspnetcorerazor\", \"astro\", \"astro-markdown\", \"blade\", \"clojure\", \"django-html\", \"htmldjango\", \"edge\", \"eelixir\", \"elixir\", \"ejs\", \"erb\", \"eruby\", \"gohtml\", \"gohtmltmpl\", \"haml\", \"handlebars\", \"hbs\", \"html\", \"htmlangular\", \"html-eex\", \"heex\", \"jade\", \"leaf\", \"liquid\", \"markdown\", \"mdx\", \"mustache\", \"njk\", \"nunjucks\", \"php\", \"razor\", \"slim\", \"twig\", \"javascript\", \"javascriptreact\", \"reason\", \"rescript\", \"typescript\", \"typescriptreact\", \"vue\", \"svelte\", \"templ\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## hydra_lsp\n\nhttps://github.com/Retsediv/hydra-lsp\n\nLSP for Hydra Python package config files.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('hydra_lsp')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"hydra-lsp\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"yaml\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## hylo_ls\n\nhttps://github.com/hylo-lang/hylo-language-server\n\nA language server for the Hylo programming language.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('hylo_ls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"hylo-language-server\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"hylo\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n- `settings` :\n  ```lua\n  {}\n  ```\n\n---\n\n## hyprls\n\nhttps://github.com/hyprland-community/hyprls\n\n`hyprls` can be installed via `go`:\n```sh\ngo install github.com/hyprland-community/hyprls/cmd/hyprls@latest\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('hyprls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"hyprls\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"hyprlang\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## idris2_lsp\n\nhttps://github.com/idris-community/idris2-lsp\n\nThe Idris 2 language server.\n\nPlugins for the Idris 2 filetype include\n[Idris2-Vim](https://github.com/edwinb/idris2-vim) (fewer features, stable) and\n[Nvim-Idris2](https://github.com/ShinKage/nvim-idris2) (cutting-edge,\nexperimental).\n\nIdris2-Lsp requires a build of Idris 2 that includes the \"Idris 2 API\" package.\nPackage managers with known support for this build include the\n[AUR](https://aur.archlinux.org/packages/idris2/) and\n[Homebrew](https://formulae.brew.sh/formula/idris2#default).\n\nIf your package manager does not support the Idris 2 API, you will need to build\nIdris 2 from source. Refer to the\n[the Idris 2 installation instructions](https://github.com/idris-lang/Idris2/blob/main/INSTALL.md)\nfor details.  Steps 5 and 8 are listed as \"optional\" in that guide, but they are\nnecessary in order to make the Idris 2 API available.\n\nYou need to install a version of Idris2-Lsp that is compatible with your\nversion of Idris 2. There should be a branch corresponding to every released\nIdris 2 version after v0.4.0. Use the latest commit on that branch. For example,\nif you have Idris v0.5.1, you should use the v0.5.1 branch of Idris2-Lsp.\n\nIf your Idris 2 version is newer than the newest Idris2-Lsp branch, use the\nlatest commit on the `master` branch, and set a reminder to check the Idris2-Lsp\nrepo for the release of a compatible versioned branch.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('idris2_lsp')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"idris2-lsp\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"idris2\" }\n  ```\n- `root_dir`: [../lsp/idris2_lsp.lua:35](../lsp/idris2_lsp.lua#L35)\n\n---\n\n## intelephense\n\nhttps://intelephense.com/\n\n`intelephense` can be installed via `npm`:\n```sh\nnpm install -g intelephense\n```\n\n```lua\n-- See https://github.com/bmewburn/intelephense-docs/blob/master/installation.md#initialisation-options\ninit_options = {\n  storagePath = …, -- Optional absolute path to storage dir. Defaults to os.tmpdir().\n  globalStoragePath = …, -- Optional absolute path to a global storage dir. Defaults to os.homedir().\n  licenceKey = …, -- Optional licence key or absolute path to a text file containing the licence key.\n  clearCache = …, -- Optional flag to clear server state. State can also be cleared by deleting {storagePath}/intelephense\n}\n-- See https://github.com/bmewburn/intelephense-docs\nsettings = {\n  intelephense = {\n    files = {\n      maxSize = 1000000;\n    };\n  };\n}\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('intelephense')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"intelephense\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"php\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\", \"composer.json\" }\n  ```\n- `settings` :\n  ```lua\n  {\n    intelephense = {\n      telemetry = {\n        enabled = false\n      }\n    }\n  }\n  ```\n\n---\n\n## janet_lsp\n\nhttps://github.com/CFiggers/janet-lsp\n\nA Language Server Protocol implementation for Janet.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('janet_lsp')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"janet-lsp\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"janet\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"project.janet\", \".git\" }\n  ```\n\n---\n\n## java_language_server\n\nhttps://github.com/georgewfraser/java-language-server\n\nJava language server\n\nPoint `cmd` to `lang_server_linux.sh` or the equivalent script for macOS/Windows provided by java-language-server\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('java_language_server')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"java-language-server\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"java\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"build.gradle\", \"build.gradle.kts\", \"pom.xml\", \".git\" }\n  ```\n- `settings` :\n  ```lua\n  {}\n  ```\n\n---\n\n## jdtls\n\nhttps://projects.eclipse.org/projects/eclipse.jdt.ls\n\nLanguage server for Java.\n\nIMPORTANT: If you want all the features jdtls has to offer, [nvim-jdtls](https://github.com/mfussenegger/nvim-jdtls)\nis highly recommended. If all you need is diagnostics, completion, imports, gotos and formatting and some code actions\nyou can keep reading here.\n\nFor manual installation you can download precompiled binaries from the\n[official downloads site](http://download.eclipse.org/jdtls/snapshots/?d)\nand ensure that the `PATH` variable contains the `bin` directory of the extracted archive.\n\n```lua\n  -- init.lua\n  vim.lsp.enable('jdtls')\n```\n\nYou can also pass extra custom jvm arguments with the JDTLS_JVM_ARGS environment variable as a space separated list of arguments,\nthat will be converted to multiple --jvm-arg=<param> args when passed to the jdtls script. This will allow for example tweaking\nthe jvm arguments or integration with external tools like lombok:\n\n```sh\nexport JDTLS_JVM_ARGS=\"-javaagent:$HOME/.local/share/java/lombok.jar\"\n```\n\nFor automatic installation you can use the following unofficial installers/launchers under your own risk:\n  - [jdtls-launcher](https://github.com/eruizc-dev/jdtls-launcher) (Includes lombok support by default)\n    ```lua\n      -- init.lua\n      vim.lsp.config('jdtls', { cmd = { 'jdtls' } })\n    ```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('jdtls')\n```\n\nDefault config:\n- `cmd`: [../lsp/jdtls.lua:74](../lsp/jdtls.lua#L74)\n- `filetypes` :\n  ```lua\n  { \"java\" }\n  ```\n- `init_options` :\n  ```lua\n  {}\n  ```\n- `root_markers` :\n  ```lua\n  { { \"mvnw\", \"gradlew\", \"settings.gradle\", \"settings.gradle.kts\", \".git\" }, { \"build.xml\", \"pom.xml\", \"build.gradle\", \"build.gradle.kts\" } }\n  ```\n\n---\n\n## jedi_language_server\n\nhttps://github.com/pappasam/jedi-language-server\n\n`jedi-language-server`, a language server for Python, built on top of jedi\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('jedi_language_server')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"jedi-language-server\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"python\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"pyproject.toml\", \"setup.py\", \"setup.cfg\", \"requirements.txt\", \"Pipfile\", \".git\" }\n  ```\n\n---\n\n## jinja_lsp\n\njinja-lsp enhances minijinja development experience by providing Helix/Nvim users with advanced features such as autocomplete, syntax highlighting, hover, goto definition, code actions and linting.\n\nThe file types are not detected automatically, you can register them manually (see below) or override the filetypes:\n\n```lua\nvim.filetype.add {\n  extension = {\n    jinja = 'jinja',\n    jinja2 = 'jinja',\n    j2 = 'jinja',\n  },\n}\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('jinja_lsp')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"jinja-lsp\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"jinja\" }\n  ```\n- `name` :\n  ```lua\n  \"jinja_lsp\"\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## jqls\n\nhttps://github.com/wader/jq-lsp\nLanguage server for jq, written using Go.\nYou can install the server easily using go install:\n```sh\n# install directly\ngo install github.com/wader/jq-lsp@master\n# copy binary to $PATH\ncp $(go env GOPATH)/bin/jq-lsp /usr/local/bin\n\n```\nNote: To activate properly nvim needs to know the jq filetype.\nYou can add it via:\n```lua\nvim.cmd([[au BufRead,BufNewFile *.jq setfiletype jq]])\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('jqls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"jq-lsp\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"jq\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## jsonls\n\nhttps://github.com/hrsh7th/vscode-langservers-extracted\n\nvscode-json-language-server, a language server for JSON and JSON schema\n\n`vscode-json-language-server` can be installed via `npm`:\n```sh\nnpm i -g vscode-langservers-extracted\n```\n\n`vscode-json-language-server` only provides completions when snippet support is enabled. If you use Neovim older than v0.10 you need to enable completion, install a snippet plugin and add the following override to your language client capabilities during setup.\n\n```lua\n--Enable (broadcasting) snippet capability for completion\nlocal capabilities = vim.lsp.protocol.make_client_capabilities()\ncapabilities.textDocument.completion.completionItem.snippetSupport = true\n\nvim.lsp.config('jsonls', {\n  capabilities = capabilities,\n})\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('jsonls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"vscode-json-language-server\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"json\", \"jsonc\" }\n  ```\n- `init_options` :\n  ```lua\n  {\n    provideFormatter = true\n  }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## jsonnet_ls\n\nhttps://github.com/grafana/jsonnet-language-server\n\nA Language Server Protocol (LSP) server for Jsonnet.\n\nThe language server can be installed with `go`:\n```sh\ngo install github.com/grafana/jsonnet-language-server@latest\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('jsonnet_ls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"jsonnet-language-server\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"jsonnet\", \"libsonnet\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"jsonnetfile.json\", \".git\" }\n  ```\n\n---\n\n## julials\n\nhttps://github.com/julia-vscode/julia-vscode\n\nLanguageServer.jl, SymbolServer.jl and StaticLint.jl can be installed with `julia` and `Pkg`:\n```sh\njulia --project=~/.julia/environments/nvim-lspconfig -e 'using Pkg; Pkg.add(\"LanguageServer\"); Pkg.add(\"SymbolServer\"); Pkg.add(\"StaticLint\")'\n```\nwhere `~/.julia/environments/nvim-lspconfig` is the location where\nthe default configuration expects LanguageServer.jl, SymbolServer.jl and StaticLint.jl to be installed.\n\nTo update an existing install, use the following command:\n```sh\njulia --project=~/.julia/environments/nvim-lspconfig -e 'using Pkg; Pkg.update()'\n```\n\nNote: In order to have LanguageServer.jl pick up installed packages or dependencies in a\nJulia project, you must make sure that the project is instantiated:\n```sh\njulia --project=/path/to/my/project -e 'using Pkg; Pkg.instantiate()'\n```\n\nTo activate a Julia environment, use the `:LspJuliaActivateEnv` command. A prompt will ask you to select a Julia\nenvironment from the list of environments found in the current working directory and the `environments/` folder of\n`$JULIA_DEPOT_PATH` entries. You can also provide a path to a Julia environment directly.\nExample: `:LspJuliaActivateEnv /path/to/my/project`.\n\nNote: The julia programming language searches for global environments within the `environments/`\nfolder of `$JULIA_DEPOT_PATH` entries. By default this simply `~/.julia/environments`\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('julials')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"julia\", \"--startup-file=no\", \"--history-file=no\", \"-e\", '    # Load LanguageServer.jl: attempt to load from ~/.julia/environments/nvim-lspconfig\\n    # with the regular load path as a fallback\\n    ls_install_path = joinpath(\\n        get(DEPOT_PATH, 1, joinpath(homedir(), \".julia\")),\\n        \"environments\", \"nvim-lspconfig\"\\n    )\\n    pushfirst!(LOAD_PATH, ls_install_path)\\n    using LanguageServer, SymbolServer, StaticLint\\n    popfirst!(LOAD_PATH)\\n    depot_path = get(ENV, \"JULIA_DEPOT_PATH\", \"\")\\n    project_path = let\\n        dirname(something(\\n            ## 1. Finds an explicitly set project (JULIA_PROJECT)\\n            Base.load_path_expand((\\n                p = get(ENV, \"JULIA_PROJECT\", nothing);\\n                p === nothing ? nothing : isempty(p) ? nothing : p\\n            )),\\n            ## 2. Look for a Project.toml file in the current working directory,\\n            ##    or parent directories, with $HOME as an upper boundary\\n            Base.current_project(),\\n            ## 3. First entry in the load path\\n            get(Base.load_path(), 1, nothing),\\n            ## 4. Fallback to default global environment,\\n            ##    this is more or less unreachable\\n            Base.load_path_expand(\"@v#.#\"),\\n        ))\\n    end\\n    @info \"Running language server\" VERSION pwd() project_path depot_path\\n    server = LanguageServer.LanguageServerInstance(stdin, stdout, project_path, depot_path)\\n    server.runlinter = true\\n    run(server)\\n  ' }\n  ```\n- `filetypes` :\n  ```lua\n  { \"julia\" }\n  ```\n- `on_attach`: [../lsp/julials.lua:127](../lsp/julials.lua#L127)\n- `root_markers` :\n  ```lua\n  { \"Project.toml\", \"JuliaProject.toml\" }\n  ```\n\n---\n\n## just\n\nhttps://github.com/terror/just-lsp\n\n`just-lsp` is an LSP for just built on top of the tree-sitter-just parser.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('just')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"just-lsp\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"just\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## kakehashi\n\nhttps://github.com/atusy/kakehashi\n\nTree-sitter-based language server that provides semantic tokens, selection ranges,\nand LSP bridging for embedded languages (e.g., code blocks in Markdown).\n\nkakehashi works with any language that has a Tree-sitter grammar.\nParsers and queries are automatically installed on first use\nwhen `autoInstall` is enabled (the default). This requires the\n`tree-sitter` CLI, a C compiler, and Git.\n\n**You must specify `filetypes` in your call to `vim.lsp.config`** to\nrestrict which files activate the server:\n\n```lua\nvim.lsp.config('kakehashi', {\n  filetypes = { 'markdown', 'lua', 'rust', 'python' },\n  init_options = {\n    autoInstall = true,\n    -- Optional: bridge LSP requests in injection regions\n    languageServers = {\n      ['lua_ls'] = {\n        cmd = { 'lua-language-server' },\n        languages = { 'lua' },\n      },\n    },\n    languages = {\n      markdown = {\n        bridge = { lua_ls = { enabled = true } },\n      },\n    },\n  },\n})\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('kakehashi')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"kakehashi\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"kakehashi.toml\", \".git\" }\n  ```\n\n---\n\n## kcl\n\nhttps://github.com/kcl-lang/kcl.nvim\n\nLanguage server for the KCL configuration and policy language.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('kcl')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"kcl-language-server\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"kcl\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## koka\n\nhttps://koka-lang.github.io/koka/doc/index.html\nKoka is a functional programming language with effect types and handlers.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('koka')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"koka\", \"--language-server\", \"--lsstdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"koka\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## kotlin_language_server\n\nA kotlin language server which was developed for internal usage and\nreleased afterwards. Maintaining is not done by the original author,\nbut by fwcd.\n\nIt is built via gradle and developed on github.\nSource and additional description:\nhttps://github.com/fwcd/kotlin-language-server\n\nThis server requires vim to be aware of the kotlin-filetype.\nYou could refer for this capability to:\nhttps://github.com/udalov/kotlin-vim (recommended)\nNote that there is no LICENSE specified yet.\n\nFor faster startup, you can setup caching by specifying a storagePath\nin the init_options. The default is your home directory.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('kotlin_language_server')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"kotlin-language-server\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"kotlin\" }\n  ```\n- `init_options` :\n  ```lua\n  {}\n  ```\n- `root_markers` :\n  ```lua\n  { \"settings.gradle\", \"settings.gradle.kts\", \"build.xml\", \"pom.xml\", \"build.gradle\", \"build.gradle.kts\" }\n  ```\n\n---\n\n## kotlin_lsp\n\nPre-alpha official Kotlin support for Visual Studio Code and an implementation of Language Server Protocol for the Kotlin language.\n\nThe server is based on IntelliJ IDEA and the IntelliJ IDEA Kotlin Plugin implementation.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('kotlin_lsp')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"kotlin-lsp\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"kotlin\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"settings.gradle\", \"settings.gradle.kts\", \"pom.xml\", \"build.gradle\", \"build.gradle.kts\", \"workspace.json\" }\n  ```\n\n---\n\n## kulala_ls\n\nhttps://github.com/mistweaverco/kulala-ls\n\nA minimal language server for HTTP syntax.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('kulala_ls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"kulala-ls\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"http\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## laravel_ls\n\nhttps://github.com/laravel-ls/laravel-ls\n\n`laravel-ls`, language server for laravel\n\nThe default `cmd` assumes that the `laravel-ls` binary can be found in `$PATH`.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('laravel_ls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"laravel-ls\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"php\", \"blade\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"artisan\" }\n  ```\n\n---\n\n## lean3ls\n\nhttps://github.com/leanprover/lean-client-js/tree/master/lean-language-server\n\nLean installation instructions can be found\n[here](https://leanprover-community.github.io/get_started.html#regular-install).\n\nOnce Lean is installed, you can install the Lean 3 language server by running\n```sh\nnpm install -g lean-language-server\n```\n\nNote: that if you're using [lean.nvim](https://github.com/Julian/lean.nvim),\nthat plugin fully handles the setup of the Lean language server,\nand you shouldn't set up `lean3ls` both with it and `lspconfig`.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('lean3ls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"lean-language-server\", \"--stdio\", \"--\", \"-M\", \"4096\", \"-T\", \"100000\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"lean3\" }\n  ```\n- `offset_encoding` :\n  ```lua\n  \"utf-32\"\n  ```\n- `root_dir`: [../lsp/lean3ls.lua:18](../lsp/lean3ls.lua#L18)\n\n---\n\n## lelwel_ls\n\nhttps://github.com/0x2a-42/lelwel\n\nLanguage server for lelwel grammars.\n\nYou can install `lelwel-ls` via cargo:\n```sh\ncargo install --features=\"lsp\" lelwel\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('lelwel_ls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"lelwel-ls\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"llw\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## lemminx\n\nhttps://github.com/eclipse/lemminx\n\nThe easiest way to install the server is to get a binary from https://github.com/redhat-developer/vscode-xml/releases and place it on your PATH.\n\nNOTE to macOS users: Binaries from unidentified developers are blocked by default. If you trust the downloaded binary, run it once, cancel the prompt, then remove the binary from Gatekeeper quarantine with `xattr -d com.apple.quarantine lemminx`. It should now run without being blocked.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('lemminx')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"lemminx\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"xml\", \"xsd\", \"xsl\", \"xslt\", \"svg\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## lexical\n\nhttps://github.com/lexical-lsp/lexical\n\nLexical is a next-generation language server for the Elixir programming language.\n\nTo install from source, follow the [Detailed Installation Instructions](https://github.com/lexical-lsp/lexical/blob/main/pages/installation.md).\nEnsure to point `cmd` to the generated `_build/dev/package/lexical/start_lexical.sh` executable.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('lexical')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"lexical\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"elixir\", \"eelixir\", \"heex\", \"surface\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"mix.exs\", \".git\" }\n  ```\n\n---\n\n## lsp_ai\n\nhttps://github.com/SilasMarvin/lsp-ai\n\nLSP-AI is an open source language server that serves as a backend for AI-powered functionality in your favorite code\neditors. It offers features like in-editor chatting with LLMs and code completions.\n\n\nYou will need to provide configuration for the inference backends and models you want to use, as well as configure\ncompletion/code actions. See the [wiki docs](https://github.com/SilasMarvin/lsp-ai/wiki/Configuration) and\n[examples](https://github.com/SilasMarvin/lsp-ai/blob/main/examples/nvim) for more information.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('lsp_ai')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"lsp-ai\" }\n  ```\n- `filetypes` :\n  ```lua\n  {}\n  ```\n- `init_options` :\n  ```lua\n  {\n    memory = {\n      file_store = vim.empty_dict()\n    },\n    models = vim.empty_dict()\n  }\n  ```\n\n---\n\n## ltex\n\nhttps://github.com/valentjn/ltex-ls\n\nLTeX Language Server: LSP language server for LanguageTool 🔍✔️ with support for LaTeX 🎓, Markdown 📝, and others\n\nTo install, download the latest [release](https://github.com/valentjn/ltex-ls/releases) and ensure `ltex-ls` is on your path.\n\nThis server accepts configuration via the `settings` key.\n\n```lua\n  settings = {\n\t\tltex = {\n\t\t\tlanguage = \"en-GB\",\n\t\t},\n\t},\n```\n\nTo support org files or R sweave, users can define a custom filetype autocommand (or use a plugin which defines these filetypes):\n\n```lua\nvim.cmd [[ autocmd BufRead,BufNewFile *.org set filetype=org ]]\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('ltex')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"ltex-ls\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"bib\", \"gitcommit\", \"markdown\", \"org\", \"plaintex\", \"rst\", \"rnoweb\", \"tex\", \"pandoc\", \"quarto\", \"rmd\", \"context\", \"html\", \"xhtml\", \"mail\", \"text\" }\n  ```\n- `get_language_id`: [../lsp/ltex.lua:75](../lsp/ltex.lua#L75)\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n- `settings` :\n  ```lua\n  {\n    ltex = {\n      enabled = { \"bibtex\", \"gitcommit\", \"markdown\", \"org\", \"tex\", \"restructuredtext\", \"rsweave\", \"latex\", \"quarto\", \"rmd\", \"context\", \"html\", \"xhtml\", \"mail\", \"plaintext\" }\n    }\n  }\n  ```\n\n---\n\n## ltex_plus\n\nhttps://github.com/ltex-plus/ltex-ls-plus\n\nLTeX Language Server: LSP language server for LanguageTool 🔍✔️ with support for LaTeX 🎓, Markdown 📝, and others\n\nTo install, download the latest [release](https://github.com/ltex-plus/ltex-ls-plus) and ensure `ltex-ls-plus` is on your path.\n\nThis server accepts configuration via the `settings` key.\n\n```lua\n  settings = {\n    ltex = {\n      language = \"en-GB\",\n    },\n  },\n```\n\nTo support org files or R sweave, users can define a custom filetype autocommand (or use a plugin which defines these filetypes):\n\n```lua\nvim.cmd [[ autocmd BufRead,BufNewFile *.org set filetype=org ]]\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('ltex_plus')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"ltex-ls-plus\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"asciidoc\", \"bib\", \"context\", \"gitcommit\", \"html\", \"markdown\", \"org\", \"pandoc\", \"plaintex\", \"quarto\", \"mail\", \"mdx\", \"rmd\", \"rnoweb\", \"rst\", \"tex\", \"text\", \"typst\", \"xhtml\" }\n  ```\n- `get_language_id`: [../lsp/ltex_plus.lua:36](../lsp/ltex_plus.lua#L36)\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n- `settings` :\n  ```lua\n  {\n    ltex = {\n      enabled = { \"asciidoc\", \"bib\", \"context\", \"gitcommit\", \"html\", \"markdown\", \"org\", \"pandoc\", \"plaintex\", \"quarto\", \"mail\", \"mdx\", \"rmd\", \"rnoweb\", \"rst\", \"tex\", \"latex\", \"text\", \"typst\", \"xhtml\" }\n    }\n  }\n  ```\n\n---\n\n## lua_ls\n\nhttps://github.com/luals/lua-language-server\n\nLua language server.\n\n`lua-language-server` can be installed by following the instructions [here](https://luals.github.io/#neovim-install).\n\nThe default `cmd` assumes that the `lua-language-server` binary can be found in `$PATH`.\n\nIf you primarily use `lua-language-server` for Neovim, and want to provide completions,\nanalysis, and location handling for plugins on runtime path, you can use the following\nsettings.\n\n```lua\nvim.lsp.config('lua_ls', {\n  on_init = function(client)\n    if client.workspace_folders then\n      local path = client.workspace_folders[1].name\n      if\n        path ~= vim.fn.stdpath('config')\n        and (vim.uv.fs_stat(path .. '/.luarc.json') or vim.uv.fs_stat(path .. '/.luarc.jsonc'))\n      then\n        return\n      end\n    end\n\n    client.config.settings.Lua = vim.tbl_deep_extend('force', client.config.settings.Lua, {\n      runtime = {\n        -- Tell the language server which version of Lua you're using (most\n        -- likely LuaJIT in the case of Neovim)\n        version = 'LuaJIT',\n        -- Tell the language server how to find Lua modules same way as Neovim\n        -- (see `:h lua-module-load`)\n        path = {\n          'lua/?.lua',\n          'lua/?/init.lua',\n        },\n      },\n      -- Make the server aware of Neovim runtime files\n      workspace = {\n        checkThirdParty = false,\n        library = {\n          vim.env.VIMRUNTIME,\n          -- Depending on the usage, you might want to add additional paths\n          -- here.\n          -- '${3rd}/luv/library',\n          -- '${3rd}/busted/library',\n        },\n        -- Or pull in all of 'runtimepath'.\n        -- NOTE: this is a lot slower and will cause issues when working on\n        -- your own configuration.\n        -- See https://github.com/neovim/nvim-lspconfig/issues/3189\n        -- library = vim.api.nvim_get_runtime_file('', true),\n      },\n    })\n  end,\n  settings = {\n    Lua = {},\n  },\n})\n```\n\nSee `lua-language-server`'s [documentation](https://luals.github.io/wiki/settings/) for an explanation of the above fields:\n* [Lua.runtime.path](https://luals.github.io/wiki/settings/#runtimepath)\n* [Lua.workspace.library](https://luals.github.io/wiki/settings/#workspacelibrary)\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('lua_ls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"lua-language-server\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"lua\" }\n  ```\n- `root_markers` :\n  ```lua\n  { { \".emmyrc.json\", \".luarc.json\", \".luarc.jsonc\" }, { \".luacheckrc\", \".stylua.toml\", \"stylua.toml\", \"selene.toml\", \"selene.yml\" }, { \".git\" } }\n  ```\n- `settings` :\n  ```lua\n  {\n    Lua = {\n      codeLens = {\n        enable = true\n      },\n      hint = {\n        enable = true,\n        semicolon = \"Disable\"\n      }\n    }\n  }\n  ```\n\n---\n\n## luau_lsp\n\nhttps://github.com/JohnnyMorganz/luau-lsp\n\nLanguage server for the [Luau](https://luau-lang.org/) language.\n\n`luau-lsp` can be installed by downloading one of the release assets available at https://github.com/JohnnyMorganz/luau-lsp.\n\nYou might also have to set up automatic filetype detection for Luau files, for example like so:\n\n```vim\nautocmd BufRead,BufNewFile *.luau setf luau\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('luau_lsp')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"luau-lsp\", \"lsp\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"luau\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## lwc_ls\n\nhttps://github.com/forcedotcom/lightning-language-server/\n\nLanguage server for Lightning Web Components.\n\nFor manual installation, utilize the official [NPM package](https://www.npmjs.com/package/@salesforce/lwc-language-server).\nThen, configure `cmd` to run the Node script at the unpacked location:\n\n```lua\nvim.lsp.config('lwc_ls', {\n  cmd = {\n    'node',\n    '/path/to/node_modules/@salesforce/lwc-language-server/bin/lwc-language-server.js',\n    '--stdio'\n  }\n})\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('lwc_ls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"lwc-language-server\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"javascript\", \"html\" }\n  ```\n- `init_options` :\n  ```lua\n  {\n    embeddedLanguages = {\n      javascript = true\n    }\n  }\n  ```\n- `root_markers` :\n  ```lua\n  { \"sfdx-project.json\" }\n  ```\n\n---\n\n## m68k\n\nhttps://github.com/grahambates/m68k-lsp\n\nLanguage server for Motorola 68000 family assembly\n\n`m68k-lsp-server` can be installed via `npm`:\n\n```sh\nnpm install -g m68k-lsp-server\n```\n\nEnsure you are using the 68k asm syntax variant in Neovim.\n\n```lua\nvim.g.asmsyntax = 'asm68k'\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('m68k')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"m68k-lsp-server\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"asm68k\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"Makefile\", \".git\" }\n  ```\n\n---\n\n## markdown_oxide\n\nhttps://github.com/Feel-ix-343/markdown-oxide\n\nEditor Agnostic PKM: you bring the text editor and we\nbring the PKM.\n\nInspired by and compatible with Obsidian.\n\nCheck the readme to see how to properly setup.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('markdown_oxide')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"markdown-oxide\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"markdown\" }\n  ```\n- `on_attach`: [../lsp/markdown_oxide.lua:24](../lsp/markdown_oxide.lua#L24)\n- `root_markers` :\n  ```lua\n  { \".git\", \".obsidian\", \".moxide.toml\" }\n  ```\n\n---\n\n## marko-js\n\nhttps://github.com/marko-js/language-server\n\nUsing the Language Server Protocol to improve Marko's developer experience.\n\nCan be installed via npm:\n```\nnpm i -g @marko/language-server\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('marko-js')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"marko-language-server\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"marko\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## marksman\n\nhttps://github.com/artempyanykh/marksman\n\nMarksman is a Markdown LSP server providing completion, cross-references, diagnostics, and more.\n\nMarksman works on MacOS, Linux, and Windows and is distributed as a self-contained binary for each OS.\n\nPre-built binaries can be downloaded from https://github.com/artempyanykh/marksman/releases\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('marksman')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"marksman\", \"server\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"markdown\", \"markdown.mdx\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".marksman.toml\", \".git\" }\n  ```\n\n---\n\n## matlab_ls\n\nhttps://github.com/mathworks/MATLAB-language-server\n\nMATLAB® language server implements the Microsoft® Language Server Protocol for the MATLAB language.\n\nMake sure to set `MATLAB.installPath` to your MATLAB path, e.g.:\n```lua\nsettings = {\n  MATLAB = {\n    ...\n    installPath = '/usr/local/MATLAB/R2023a',\n    ...\n  },\n},\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('matlab_ls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"matlab-language-server\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"matlab\" }\n  ```\n- `root_dir`: [../lsp/matlab_ls.lua:19](../lsp/matlab_ls.lua#L19)\n- `settings` :\n  ```lua\n  {\n    MATLAB = {\n      indexWorkspace = true,\n      installPath = \"\",\n      matlabConnectionTiming = \"onStart\",\n      telemetry = true\n    }\n  }\n  ```\n\n---\n\n## mdx_analyzer\n\nhttps://github.com/mdx-js/mdx-analyzer\n\n`mdx-analyzer`, a language server for MDX\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('mdx_analyzer')\n```\n\nDefault config:\n- `before_init`: [../lsp/mdx_analyzer.lua:9](../lsp/mdx_analyzer.lua#L9)\n- `cmd` :\n  ```lua\n  { \"mdx-language-server\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"mdx\" }\n  ```\n- `init_options` :\n  ```lua\n  {\n    typescript = {}\n  }\n  ```\n- `root_markers` :\n  ```lua\n  { \"package.json\" }\n  ```\n- `settings` :\n  ```lua\n  {}\n  ```\n\n---\n\n## mesonlsp\n\nhttps://github.com/JCWasmx86/mesonlsp\n\nAn unofficial, unendorsed language server for meson written in C++\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('mesonlsp')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"mesonlsp\", \"--lsp\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"meson\" }\n  ```\n- `root_dir`: [../lsp/mesonlsp.lua:32](../lsp/mesonlsp.lua#L32)\n\n---\n\n## metals\n\nhttps://scalameta.org/metals/\n\nScala language server with rich IDE features.\n\nSee full instructions in the Metals documentation:\n\nhttps://scalameta.org/metals/docs/editors/vim#using-an-alternative-lsp-client\n\nNote: that if you're using [nvim-metals](https://github.com/scalameta/nvim-metals), that plugin fully handles the setup and installation of Metals, and you shouldn't set up Metals both with it and `lspconfig`.\n\nTo install Metals, make sure to have [coursier](https://get-coursier.io/docs/cli-installation) installed, and once you do you can install the latest Metals with `cs install metals`.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('metals')\n```\n\nDefault config:\n- `capabilities` :\n  ```lua\n  {\n    workspace = {\n      configuration = false\n    }\n  }\n  ```\n- `cmd` :\n  ```lua\n  { \"metals\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"scala\" }\n  ```\n- `init_options` :\n  ```lua\n  {\n    compilerOptions = {\n      snippetAutoIndent = false\n    },\n    isHttpEnabled = true,\n    statusBarProvider = \"show-message\"\n  }\n  ```\n- `root_markers` :\n  ```lua\n  { \"build.sbt\", \"build.sc\", { \"build.gradle\", \"build.gradle.kts\" }, \"pom.xml\" }\n  ```\n\n---\n\n## millet\n\nhttps://github.com/azdavis/millet\n\nMillet, a language server for Standard ML\n\nTo use with nvim:\n\n1. Install a Rust toolchain: https://rustup.rs\n2. Clone the repo\n3. Run `cargo build --release --bin millet-ls`\n4. Move `target/release/millet-ls` to somewhere on your $PATH as `millet`\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('millet')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"millet\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"sml\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"millet.toml\" }\n  ```\n\n---\n\n## mint\n\nhttps://www.mint-lang.com\n\nInstall Mint using the [instructions](https://www.mint-lang.com/install).\nThe language server is included since version 0.12.0.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('mint')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"mint\", \"ls\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"mint\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"mint.json\", \".git\" }\n  ```\n\n---\n\n## mlir_lsp_server\n\nhttps://mlir.llvm.org/docs/Tools/MLIRLSP/#mlir-lsp-language-server--mlir-lsp-server=\n\nThe Language Server for the LLVM MLIR language\n\n`mlir-lsp-server` can be installed at the llvm-project repository (https://github.com/llvm/llvm-project)\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('mlir_lsp_server')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"mlir-lsp-server\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"mlir\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## mlir_pdll_lsp_server\n\nhttps://mlir.llvm.org/docs/Tools/MLIRLSP/#pdll-lsp-language-server--mlir-pdll-lsp-server\n\nThe Language Server for the LLVM PDLL language\n\n`mlir-pdll-lsp-server` can be installed at the llvm-project repository (https://github.com/llvm/llvm-project)\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('mlir_pdll_lsp_server')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"mlir-pdll-lsp-server\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"pdll\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"pdll_compile_commands.yml\", \".git\" }\n  ```\n\n---\n\n## mm0_ls\n\nhttps://github.com/digama0/mm0\n\nLanguage Server for the metamath-zero theorem prover.\n\nRequires [mm0-rs](https://github.com/digama0/mm0/tree/master/mm0-rs) to be installed\nand available on the `PATH`.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('mm0_ls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"mm0-rs\", \"server\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"metamath-zero\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## mojo\n\nhttps://github.com/modularml/mojo\n\n`mojo-lsp-server` can be installed [via Modular](https://developer.modular.com/download)\n\nMojo is a new programming language that bridges the gap between research and production by combining Python syntax and ecosystem with systems programming and metaprogramming features.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('mojo')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"mojo-lsp-server\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"mojo\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## motoko_lsp\n\nhttps://github.com/dfinity/vscode-motoko\n\nLanguage server for the Motoko programming language.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('motoko_lsp')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"motoko-lsp\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"motoko\" }\n  ```\n- `init_options` :\n  ```lua\n  {\n    formatter = \"auto\"\n  }\n  ```\n- `root_markers` :\n  ```lua\n  { \"dfx.json\", \".git\" }\n  ```\n\n---\n\n## move_analyzer\n\nhttps://github.com/move-language/move/tree/main/language/move-analyzer\n\nLanguage server for Move\n\nThe `move-analyzer` can be installed by running:\n\n```\ncargo install --git https://github.com/move-language/move move-analyzer\n```\n\nSee [`move-analyzer`'s doc](https://github.com/move-language/move/blob/1b258a06e3c7d2bc9174578aac92cca3ac19de71/language/move-analyzer/editors/code/README.md#how-to-install) for details.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('move_analyzer')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"move-analyzer\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"move\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"Move.toml\" }\n  ```\n\n---\n\n## mpls\n\nhttps://github.com/mhersson/mpls\n\nMarkdown Preview Language Server\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('mpls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"mpls\", \"--theme\", \"dark\", \"--enable-emoji\", \"--enable-footnotes\", \"--no-auto\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"markdown\" }\n  ```\n- `on_attach`: [../lsp/mpls.lua:8](../lsp/mpls.lua#L8)\n- `root_markers` :\n  ```lua\n  { \".marksman.toml\", \".git\" }\n  ```\n\n---\n\n## msbuild_project_tools_server\n\nhttps://github.com/tintoy/msbuild-project-tools-server/\n\nMSBuild Project Tools Server can be installed by following the README.MD on the above repository.\n\nExample config:\n```lua\nvim.lsp.config('msbuild_project_tools_server', {\n  cmd = {'dotnet', '/path/to/server/MSBuildProjectTools.LanguageServer.Host.dll'}\n})\n```\n\nThere's no builtin filetypes for msbuild files, would require some filetype aliases:\n\n```lua\nvim.filetype.add({\n  extension = {\n    props = 'msbuild',\n    tasks = 'msbuild',\n    targets = 'msbuild',\n  },\n  pattern = {\n    [ [[.*\\..*proj]] ] = 'msbuild',\n  },\n})\n```\n\nOptionally tell treesitter to treat `msbuild` as `xml` so you can get syntax highlighting if you have the treesitter-xml-parser installed.\n\n```lua\nvim.treesitter.language.register('xml', { 'msbuild' })\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('msbuild_project_tools_server')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"dotnet\", \"MSBuildProjectTools.LanguageServer.Host.dll\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"msbuild\" }\n  ```\n- `init_options` :\n  ```lua\n  {}\n  ```\n- `root_dir`: [../lsp/msbuild_project_tools_server.lua:39](../lsp/msbuild_project_tools_server.lua#L39)\n\n---\n\n## muon\n\nhttps://muon.build\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('muon')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"muon\", \"analyze\", \"lsp\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"meson\" }\n  ```\n- `root_dir`: [../lsp/muon.lua:6](../lsp/muon.lua#L6)\n\n---\n\n## mutt_ls\n\nhttps://github.com/neomutt/mutt-language-server\n\nA language server for (neo)mutt's muttrc. It can be installed via pip.\n\n```sh\npip install mutt-language-server\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('mutt_ls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"mutt-language-server\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"muttrc\", \"neomuttrc\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n- `settings` :\n  ```lua\n  {}\n  ```\n\n---\n\n## nelua_lsp\n\nhttps://github.com/codehz/nelua-lsp\n\nnelua-lsp is an experimental nelua language server.\n\nYou need [nelua.vim](https://github.com/stefanos82/nelua.vim/blob/main/ftdetect/nelua.vim) for nelua files to be recognized or add this to your config:\n\nin vimscript:\n```vimscript\nau BufNewFile,BufRead *.nelua setf nelua\n```\n\nin lua:\n```lua\nvim.api.nvim_create_autocmd({ \"BufNewFile\", \"BufRead\" }, { pattern = { \"*.nelua\" }, command = \"setf nelua\"})\n```\n\n**By default, nelua-lsp doesn't have a `cmd` set.** This is because nvim-lspconfig does not make assumptions about your path. You must add the following to your init.vim or init.lua to set `cmd` to the absolute path ($HOME and ~ are not expanded) of the unzipped run script or binary.\n\n```lua\nvim.lsp.config('nelua_lsp', {\n    cmd = { \"nelua\", \"-L\", \"/path/to/nelua-lsp/\", \"--script\", \"/path/to/nelua-lsp/nelua-lsp.lua\" },\n})\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('nelua_lsp')\n```\n\nDefault config:\n- `filetypes` :\n  ```lua\n  { \"nelua\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"Makefile\", \".git\", \"*.nelua\" }\n  ```\n\n---\n\n## neocmake\n\nhttps://github.com/neocmakelsp/neocmakelsp\n\nCMake LSP Implementation\n\nNeovim does not currently include built-in snippets. `neocmakelsp` only provides completions when snippet support is enabled. To enable completion, install a snippet plugin and add the following override to your language client capabilities during setup.\n\n```lua\n--Enable (broadcasting) snippet capability for completion\nlocal capabilities = vim.lsp.protocol.make_client_capabilities()\ncapabilities.textDocument.completion.completionItem.snippetSupport = true\n\nvim.lsp.config('neocmake', {\n  capabilities = capabilities,\n})\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('neocmake')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"neocmakelsp\", \"stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"cmake\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".neocmake.toml\", \".git\", \"build\", \"cmake\" }\n  ```\n\n---\n\n## nextflow_ls\n\nhttps://github.com/nextflow-io/language-server\n\nRequirements:\n - Java 17+\n\n`nextflow_ls` can be installed by following the instructions [here](https://github.com/nextflow-io/language-server#development).\n\nIf you have installed nextflow language server, you can set the `cmd` custom path as follow:\n\n```lua\nvim.lsp.config('nextflow_ls', {\n    cmd = { 'nextflow-language-server' },\n    filetypes = { 'nextflow' },\n    settings = {\n      nextflow = {\n        files = {\n          exclude = { '.git', '.nf-test', 'work' },\n        },\n      },\n    },\n})\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('nextflow_ls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"nextflow-language-server\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"nextflow\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"nextflow.config\", \".git\" }\n  ```\n- `settings` :\n  ```lua\n  {\n    nextflow = {\n      files = {\n        exclude = { \".git\", \".nf-test\", \"work\" }\n      }\n    }\n  }\n  ```\n\n---\n\n## nextls\n\nhttps://github.com/elixir-tools/next-ls\n\n**Please see the following [detailed instructions](https://www.elixir-tools.dev/docs/next-ls/installation/) for possible installation methods.**\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('nextls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"nextls\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"elixir\", \"eelixir\", \"heex\", \"surface\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"mix.exs\", \".git\" }\n  ```\n\n---\n\n## nginx_language_server\n\nhttps://pypi.org/project/nginx-language-server/\n\n`nginx-language-server` can be installed via pip:\n\n```sh\npip install -U nginx-language-server\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('nginx_language_server')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"nginx-language-server\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"nginx\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"nginx.conf\", \".git\" }\n  ```\n\n---\n\n## nickel_ls\n\nNickel Language Server\n\nhttps://github.com/tweag/nickel\n\n`nls` can be installed with nix, or cargo, from the Nickel repository.\n```sh\ngit clone https://github.com/tweag/nickel.git\n```\n\nNix:\n```sh\ncd nickel\nnix-env -f . -i\n```\n\ncargo:\n```sh\ncd nickel/lsp/nls\ncargo install --path .\n```\n\nIn order to have lspconfig detect Nickel filetypes (a prerequisite for autostarting a server),\ninstall the [Nickel vim plugin](https://github.com/nickel-lang/vim-nickel).\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('nickel_ls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"nls\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"ncl\", \"nickel\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## nil_ls\n\nhttps://github.com/oxalica/nil\n\nA new language server for Nix Expression Language.\n\nIf you are using Nix with Flakes support, run `nix profile install github:oxalica/nil` to install.\nCheck the repository README for more information.\n\n_See an example config at https://github.com/oxalica/nil/blob/main/dev/nvim-lsp.nix._\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('nil_ls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"nil\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"nix\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"flake.nix\", \".git\" }\n  ```\n\n---\n\n## nim_langserver\n\nhttps://github.com/nim-lang/langserver\n\n\n`nim-langserver` can be installed via the `nimble` package manager:\n```sh\nnimble install nimlangserver\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('nim_langserver')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"nimlangserver\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"nim\" }\n  ```\n- `root_dir`: [../lsp/nim_langserver.lua:14](../lsp/nim_langserver.lua#L14)\n\n---\n\n## nimls\n\nhttps://github.com/PMunch/nimlsp\n\n`nimlsp` can be installed via the `nimble` package manager:\n\n```sh\nnimble install nimlsp\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('nimls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"nimlsp\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"nim\" }\n  ```\n- `root_dir`: [../lsp/nimls.lua:14](../lsp/nimls.lua#L14)\n\n---\n\n## nixd\n\nhttps://github.com/nix-community/nixd\n\nNix language server, based on nix libraries.\n\nIf you are using Nix with Flakes support, run `nix profile install github:nix-community/nixd` to install.\nCheck the repository README for more information.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('nixd')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"nixd\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"nix\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"flake.nix\", \".git\" }\n  ```\n\n---\n\n## nomad_lsp\n\nhttps://github.com/juliosueiras/nomad-lsp\n\nWritten in Go, compilation is needed for `nomad_lsp` to be used. Please see the [original repository](https://github.com/juliosuieras/nomad-lsp).\n\nAdd the executable to your system or vim PATH and it will be set to go.\n\nNo configuration option is needed unless you choose not to add `nomad-lsp` executable to the PATH. You should know what you are doing if you choose so.\n\n```lua\nvim.lsp.enable('nomad_lsp')\n```\n\nHowever, a `hcl.nomad` or `nomad` filetype should be defined.\n\nDescription of your jobs should be written in `.nomad` files for the LSP client to configure the server's `root_dir` configuration option.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('nomad_lsp')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"nomad-lsp\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"hcl.nomad\", \"nomad\" }\n  ```\n- `root_dir`: [../lsp/nomad_lsp.lua:27](../lsp/nomad_lsp.lua#L27)\n\n---\n\n## ntt\n\nhttps://github.com/nokia/ntt\nInstallation instructions can be found [here](https://github.com/nokia/ntt#Install).\nCan be configured by passing a \"settings\" object to vim.lsp.config('ntt'):\n```lua\nvim.lsp.config('ntt', {\n    settings = {\n      ntt = {\n      }\n    }\n})\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('ntt')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"ntt\", \"langserver\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"ttcn\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## nushell\n\nhttps://github.com/nushell/nushell\n\nNushell built-in language server.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('nushell')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"nu\", \"--lsp\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"nu\" }\n  ```\n- `root_dir`: [../lsp/nushell.lua:8](../lsp/nushell.lua#L8)\n\n---\n\n## nxls\n\nhttps://github.com/nrwl/nx-console/tree/master/apps/nxls\n\nnxls, a language server for Nx Workspaces\n\n`nxls` can be installed via `npm`:\n```sh\nnpm i -g nxls\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('nxls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"nxls\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"json\", \"jsonc\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"nx.json\", \".git\" }\n  ```\n\n---\n\n## ocamllsp\n\nhttps://github.com/ocaml/ocaml-lsp\n\n`ocaml-lsp` can be installed as described in [installation guide](https://github.com/ocaml/ocaml-lsp#installation).\n\nTo install the lsp server in a particular opam switch:\n```sh\nopam install ocaml-lsp-server\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('ocamllsp')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"ocamllsp\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"ocaml\", \"menhir\", \"ocamlinterface\", \"ocamllex\", \"reason\", \"dune\" }\n  ```\n- `get_language_id`: [../lsp/ocamllsp.lua:77](../lsp/ocamllsp.lua#L77)\n- `on_attach`: [../lsp/ocamllsp.lua:77](../lsp/ocamllsp.lua#L77)\n- `root_markers` :\n  ```lua\n  { { \"dune-project\", \"dune-workspace\" }, { \"*.opam\", \"opam\", \"esy.json\", \"package.json\" }, { \".git\" } }\n  ```\n\n---\n\n## ols\n\nhttps://github.com/DanielGavin/ols\n\n`Odin Language Server`.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('ols')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"ols\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"odin\" }\n  ```\n- `root_dir`: [../lsp/ols.lua:10](../lsp/ols.lua#L10)\n\n---\n\n## omnisharp\n\nhttps://github.com/omnisharp/omnisharp-roslyn\nOmniSharp server based on Roslyn workspaces\n\n`omnisharp-roslyn` can be installed by downloading and extracting a release from [here](https://github.com/OmniSharp/omnisharp-roslyn/releases).\nOmniSharp can also be built from source by following the instructions [here](https://github.com/omnisharp/omnisharp-roslyn#downloading-omnisharp).\n\nOmniSharp requires the [dotnet-sdk](https://dotnet.microsoft.com/download) to be installed.\n\nFor `go_to_definition` to work fully, extended `textDocument/definition` handler is needed, for example see [omnisharp-extended-lsp.nvim](https://github.com/Hoffs/omnisharp-extended-lsp.nvim)\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('omnisharp')\n```\n\nDefault config:\n- `capabilities` :\n  ```lua\n  {\n    workspace = {\n      workspaceFolders = false\n    }\n  }\n  ```\n- `cmd` :\n  ```lua\n  { \"omnisharp\", \"-z\", \"--hostPID\", \"12345\", \"DotNet:enablePackageRestore=false\", \"--encoding\", \"utf-8\", \"--languageserver\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"cs\", \"vb\" }\n  ```\n- `init_options` :\n  ```lua\n  {}\n  ```\n- `root_dir`: [../lsp/omnisharp.lua:18](../lsp/omnisharp.lua#L18)\n- `settings` :\n  ```lua\n  {\n    FormattingOptions = {\n      EnableEditorConfigSupport = true\n    },\n    MsBuild = {},\n    RenameOptions = {},\n    RoslynExtensionsOptions = {},\n    Sdk = {\n      IncludePrereleases = true\n    }\n  }\n  ```\n\n---\n\n## opencl_ls\n\nhttps://github.com/Galarius/opencl-language-server\n\nBuild instructions can be found [here](https://github.com/Galarius/opencl-language-server/blob/main/_dev/build.md).\n\nPrebuilt binaries are available for Linux, macOS and Windows [here](https://github.com/Galarius/opencl-language-server/releases).\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('opencl_ls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"opencl-language-server\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"opencl\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## openscad_ls\n\nhttps://github.com/dzhu/openscad-language-server\n\nA Language Server Protocol server for OpenSCAD\n\nYou can build and install `openscad-language-server` binary with `cargo`:\n```sh\ncargo install openscad-language-server\n```\n\nVim does not have built-in syntax for the `openscad` filetype currently.\n\nThis can be added via an autocmd:\n\n```lua\nvim.cmd [[ autocmd BufRead,BufNewFile *.scad set filetype=openscad ]]\n```\n\nor by installing a filetype plugin such as https://github.com/sirtaj/vim-openscad\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('openscad_ls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"openscad-language-server\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"openscad\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## openscad_lsp\n\nhttps://github.com/Leathong/openscad-LSP\n\nA Language Server Protocol server for OpenSCAD\n\nYou can build and install `openscad-lsp` binary with `cargo`:\n```sh\ncargo install openscad-lsp\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('openscad_lsp')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"openscad-lsp\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"openscad\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## oso\n\nhttps://www.osohq.com/docs/develop/local-dev/env-setup\n\nOso Polar language server.\n\n`oso-cloud` can be installed by following the instructions\n[here](https://www.osohq.com/docs/develop/local-dev/env-setup).\n\nThe default `cmd` assumes that the `oso-cloud` binary can be found in the `$PATH`.\n\nYou may need to configure the filetype for Polar (*.polar) files:\n\n```\nautocmd BufNewFile,BufRead *.polar set filetype=polar\n```\n\nor\n\n```lua\nvim.filetype.add({\n  pattern = {\n    ['.*/*.polar'] = 'polar',\n  },\n})\n\nAlternatively, you may use a syntax plugin like https://github.com/osohq/polar.vim\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('oso')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"oso-cloud\", \"lsp\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"polar\" }\n  ```\n\n---\n\n## oxfmt\n\nhttps://github.com/oxc-project/oxc\nhttps://oxc.rs/docs/guide/usage/formatter.html\n\n`oxfmt` is a Prettier-compatible code formatter that supports multiple languages\nincluding JavaScript, TypeScript, JSON, YAML, HTML, CSS, Markdown, and more.\nIt can be installed via `npm`:\n\n```sh\nnpm i -g oxfmt\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('oxfmt')\n```\n\nDefault config:\n- `cmd`: [../lsp/oxfmt.lua:17](../lsp/oxfmt.lua#L17)\n- `filetypes` :\n  ```lua\n  { \"javascript\", \"javascriptreact\", \"typescript\", \"typescriptreact\", \"toml\", \"json\", \"jsonc\", \"json5\", \"yaml\", \"html\", \"vue\", \"handlebars\", \"css\", \"scss\", \"less\", \"graphql\", \"markdown\" }\n  ```\n- `root_dir`: [../lsp/oxfmt.lua:17](../lsp/oxfmt.lua#L17)\n- `workspace_required` : `true`\n\n---\n\n## oxlint\n\nhttps://github.com/oxc-project/oxc\nhttps://oxc.rs/docs/guide/usage/linter.html\n\n`oxlint` is a linter for JavaScript / TypeScript supporting over 500 rules from ESLint and its popular plugins.\nIt also supports linting framework files (Vue, Svelte, Astro) by analyzing their <script> blocks.\nIt can be installed via `npm`:\n\n```sh\nnpm i -g oxlint\n```\n\nType-aware linting will automatically be enabled if `tsgolint` exists in your\npath and your `.oxlintrc.json` contains the string \"typescript\".\n\nThe default `on_attach` function provides an `:LspOxlintFixAll` command which\ncan be used to fix all fixable diagnostics. See the `eslint` config entry for\nan example of how to use this to automatically fix all errors on write.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('oxlint')\n```\n\nDefault config:\n- `before_init`: [../lsp/oxlint.lua:32](../lsp/oxlint.lua#L32)\n- `cmd`: [../lsp/oxlint.lua:32](../lsp/oxlint.lua#L32)\n- `filetypes` :\n  ```lua\n  { \"javascript\", \"javascriptreact\", \"typescript\", \"typescriptreact\", \"vue\", \"svelte\", \"astro\" }\n  ```\n- `on_attach`: [../lsp/oxlint.lua:32](../lsp/oxlint.lua#L32)\n- `root_markers` :\n  ```lua\n  { \".oxlintrc.json\", \"oxlint.config.ts\" }\n  ```\n- `settings` :\n  ```lua\n  {}\n  ```\n- `workspace_required` : `true`\n\n---\n\n## pact_ls\n\nhttps://github.com/kadena-io/pact-lsp\n\nThe Pact language server\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('pact_ls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"pact-lsp\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"pact\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## pasls\n\nhttps://github.com/genericptr/pascal-language-server\n\nAn LSP server implementation for Pascal variants that are supported by Free Pascal, including Object Pascal. It uses CodeTools from Lazarus as backend.\n\nFirst set `cmd` to the Pascal lsp binary.\n\nCustomization options are passed to pasls as environment variables for example in your `.bashrc`:\n```bash\nexport FPCDIR='/usr/lib/fpc/src'      # FPC source directory (This is the only required option for the server to work).\nexport PP='/usr/lib/fpc/3.2.2/ppcx64' # Path to the Free Pascal compiler executable.\nexport LAZARUSDIR='/usr/lib/lazarus'  # Path to the Lazarus sources.\nexport FPCTARGET=''                   # Target operating system for cross compiling.\nexport FPCTARGETCPU='x86_64'          # Target CPU for cross compiling.\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('pasls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"pasls\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"pascal\" }\n  ```\n- `root_dir`: [../lsp/pasls.lua:21](../lsp/pasls.lua#L21)\n\n---\n\n## pbls\n\nhttps://git.sr.ht/~rrc/pbls\n\nPrerequisites: Ensure protoc is on your $PATH.\n\n`pbls` can be installed via `cargo install`:\n```sh\ncargo install --git https://git.sr.ht/~rrc/pbls\n```\n\npbls is a Language Server for protobuf\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('pbls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"pbls\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"proto\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".pbls.toml\", \".git\" }\n  ```\n\n---\n\n## perlls\n\nhttps://github.com/richterger/Perl-LanguageServer/tree/master/clients/vscode/perl\n\n`Perl-LanguageServer`, a language server for Perl.\n\nTo use the language server, ensure that you have Perl::LanguageServer installed and perl command is on your path.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('perlls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"perl\", \"-MPerl::LanguageServer\", \"-e\", \"Perl::LanguageServer::run\", \"--\", \"--port 13603\", \"--nostdio 0\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"perl\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n- `settings` :\n  ```lua\n  {\n    perl = {\n      fileFilter = { \".pm\", \".pl\" },\n      ignoreDirs = \".git\",\n      perlCmd = \"perl\",\n      perlInc = \" \"\n    }\n  }\n  ```\n\n---\n\n## perlnavigator\n\nhttps://github.com/bscan/PerlNavigator\n\nA Perl language server. It can be installed via npm:\n\n```sh\nnpm i -g perlnavigator-server\n```\n\nAt minimum, you will need `perl` in your path. If you want to use a non-standard `perl` you will need to set your configuration like so:\n```lua\nsettings = {\n  perlnavigator = {\n    perlPath = '/some/odd/location/my-perl'\n  }\n}\n```\n\nThe `contributes.configuration.properties` section of `perlnavigator`'s `package.json` has all available configuration settings. All\nsettings have a reasonable default, but, at minimum, you may want to point `perlnavigator` at your `perltidy` and `perlcritic` configurations.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('perlnavigator')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"perlnavigator\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"perl\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## perlpls\n\nhttps://github.com/FractalBoy/perl-language-server\nhttps://metacpan.org/pod/PLS\n\n`PLS`, another language server for Perl.\n\nTo use the language server, ensure that you have PLS installed and that it is in your path\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('perlpls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"pls\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"perl\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n- `settings` :\n  ```lua\n  {\n    perl = {\n      perlcritic = {\n        enabled = false\n      },\n      syntax = {\n        enabled = true\n      }\n    }\n  }\n  ```\n\n---\n\n## pest_ls\n\nhttps://github.com/pest-parser/pest-ide-tools\n\nLanguage server for pest grammars.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('pest_ls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"pest-language-server\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"pest\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## phan\n\nhttps://github.com/phan/phan\n\nInstallation: https://github.com/phan/phan#getting-started\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('phan')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"phan\", \"-m\", \"json\", \"--no-color\", \"--no-progress-bar\", \"-x\", \"-u\", \"-S\", \"--language-server-on-stdin\", \"--allow-polyfill-parser\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"php\" }\n  ```\n- `root_dir`: [../lsp/phan.lua:21](../lsp/phan.lua#L21)\n\n---\n\n## phpactor\n\nhttps://github.com/phpactor/phpactor\n\nInstallation: https://phpactor.readthedocs.io/en/master/usage/standalone.html#global-installation\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('phpactor')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"phpactor\", \"language-server\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"php\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\", \"composer.json\", \".phpactor.json\", \".phpactor.yml\" }\n  ```\n- `workspace_required` : `true`\n\n---\n\n## phptools\n\nhttps://www.devsense.com/\n\n`devsense-php-ls` can be installed via `npm`:\n```sh\nnpm install -g devsense-php-ls\n```\n\n```lua\n-- See https://www.npmjs.com/package/devsense-php-ls\ninit_options = {\n}\n-- See https://docs.devsense.com/vscode/configuration/\nsettings = {\n  php = {\n  };\n}\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('phptools')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"devsense-php-ls\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"php\" }\n  ```\n- `init_options` :\n  ```lua\n  {\n    [\"0\"] = \"{}\"\n  }\n  ```\n- `root_dir`: [../lsp/phptools.lua:22](../lsp/phptools.lua#L22)\n\n---\n\n## pico8_ls\n\nhttps://github.com/japhib/pico8-ls\n\nFull language support for the PICO-8 dialect of Lua.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('pico8_ls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"pico8-ls\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"p8\" }\n  ```\n- `root_dir`: [../lsp/pico8_ls.lua:10](../lsp/pico8_ls.lua#L10)\n- `settings` :\n  ```lua\n  {}\n  ```\n\n---\n\n## please\n\nhttps://github.com/thought-machine/please\n\nHigh-performance extensible build system for reproducible multi-language builds.\n\nThe `plz` binary will automatically install the LSP for you on first run\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('please')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"plz\", \"tool\", \"lps\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"bzl\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".plzconfig\" }\n  ```\n\n---\n\n## pli\n\n`pli_language_server` is a language server for the PL/I language used on IBM SystemZ mainframes.\n\nTo learn how to configure the PL/I language server, see the [PL/I Language Support documentation](https://github.com/zowe/zowe-pli-language-support).\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('pli')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"pli_language_server\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"pli\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".pliplugin\" }\n  ```\n\n---\n\n## pony_language_server\n\nRenamed to [pony_lsp](#pony_lsp)\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('pony_language_server')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"pony-lsp\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"pony\" }\n  ```\n- `name` :\n  ```lua\n  \"pony_lsp\"\n  ```\n- `on_init`: [../lsp/pony_language_server.lua:6](../lsp/pony_language_server.lua#L6)\n- `root_markers` :\n  ```lua\n  { \"corral.json\", \".git\" }\n  ```\n- `settings` :\n  ```lua\n  {\n    [\"pony-lsp\"] = {\n      defines = {},\n      ponypath = {}\n    }\n  }\n  ```\n\n---\n\n## pony_lsp\n\nhttps://github.com/ponylang/ponyc/tree/main/tools/pony-lsp\n\nLanguage server for the Pony programming language\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('pony_lsp')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"pony-lsp\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"pony\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"corral.json\", \".git\" }\n  ```\n- `settings` :\n  ```lua\n  {\n    [\"pony-lsp\"] = {\n      defines = {},\n      ponypath = {}\n    }\n  }\n  ```\n\n---\n\n## poryscript_pls\n\nhttps://github.com/huderlem/poryscript-pls\n\nLanguage server for poryscript (a high level scripting language for GBA-era Pokémon decompilation projects)\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('poryscript_pls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"poryscript-pls\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"pory\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## postgres_lsp\n\nhttps://pg-language-server.com\n\nA collection of language tools and a Language Server Protocol (LSP) implementation for Postgres, focusing on developer experience and reliable SQL tooling.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('postgres_lsp')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"postgres-language-server\", \"lsp-proxy\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"sql\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"postgres-language-server.jsonc\" }\n  ```\n- `workspace_required` : `true`\n\n---\n\n## powershell_es\n\nhttps://github.com/PowerShell/PowerShellEditorServices\n\nLanguage server for PowerShell.\n\nTo install, download and extract PowerShellEditorServices.zip\nfrom the [releases](https://github.com/PowerShell/PowerShellEditorServices/releases).\nTo configure the language server, set the property `bundle_path` to the root\nof the extracted PowerShellEditorServices.zip.\n\n```lua\nvim.lsp.config('powershell_es', {\n  bundle_path = 'c:/w/PowerShellEditorServices',\n})\n```\n\nBy default the language server is started in `pwsh` (PowerShell Core). This can be changed by specifying `shell`.\n\n```lua\nvim.lsp.config('powershell_es', {\n  bundle_path = 'c:/w/PowerShellEditorServices',\n  shell = 'powershell.exe',\n})\n```\n\nNote that the execution policy needs to be set to `Unrestricted` for the languageserver run under PowerShell\n\nIf necessary, specific `cmd` can be defined instead of `bundle_path`.\nSee [PowerShellEditorServices](https://github.com/PowerShell/PowerShellEditorServices#standard-input-and-output)\nto learn more.\n\n```lua\nvim.lsp.config('powershell_es', {\n  cmd = {'pwsh', '-NoLogo', '-NoProfile', '-Command', \"c:/PSES/Start-EditorServices.ps1 ...\"},\n})\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('powershell_es')\n```\n\nDefault config:\n- `cmd`: [../lsp/powershell_es.lua:40](../lsp/powershell_es.lua#L40)\n- `filetypes` :\n  ```lua\n  { \"ps1\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"PSScriptAnalyzerSettings.psd1\", \".git\" }\n  ```\n\n---\n\n## prismals\n\nLanguage Server for the Prisma JavaScript and TypeScript ORM\n\n`@prisma/language-server` can be installed via npm\n```sh\nnpm install -g @prisma/language-server\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('prismals')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"prisma-language-server\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"prisma\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\", \"package.json\" }\n  ```\n- `settings` :\n  ```lua\n  {\n    prisma = {\n      prismaFmtBinPath = \"\"\n    }\n  }\n  ```\n\n---\n\n## prolog_ls\n\nhttps://github.com/jamesnvc/lsp_server\n\nLanguage Server Protocol server for SWI-Prolog\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('prolog_ls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"swipl\", \"-g\", \"use_module(library(lsp_server)).\", \"-g\", \"lsp_server:main\", \"-t\", \"halt\", \"--\", \"stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"prolog\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"pack.pl\" }\n  ```\n\n---\n\n## prosemd_lsp\n\nhttps://github.com/kitten/prosemd-lsp\n\nAn experimental LSP for Markdown.\n\nPlease see the manual installation instructions: https://github.com/kitten/prosemd-lsp#manual-installation\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('prosemd_lsp')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"prosemd-lsp\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"markdown\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## protols\n\nhttps://github.com/coder3101/protols\n\n`protols` can be installed via `cargo`:\n```sh\ncargo install protols\n```\n\nA Language Server for proto3 files. It uses tree-sitter and runs in single file mode.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('protols')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"protols\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"proto\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## psalm\n\nhttps://github.com/vimeo/psalm\n\nCan be installed with composer.\n```sh\ncomposer global require vimeo/psalm\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('psalm')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"psalm\", \"--language-server\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"php\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"psalm.xml\", \"psalm.xml.dist\" }\n  ```\n\n---\n\n## pug\n\nhttps://github.com/opa-oz/pug-lsp\n\nAn implementation of the Language Protocol Server for [Pug.js](http://pugjs.org)\n\nPugLSP can be installed via `go install github.com/opa-oz/pug-lsp@latest`, or manually downloaded from [releases page](https://github.com/opa-oz/pug-lsp/releases)\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('pug')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"pug-lsp\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"pug\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"package.json\" }\n  ```\n\n---\n\n## puppet\n\nLSP server for Puppet.\n\nInstallation:\n\n- Clone the editor-services repository:\n    https://github.com/puppetlabs/puppet-editor-services\n\n- Navigate into that directory and run: `bundle install`\n\n- Install the 'puppet-lint' gem: `gem install puppet-lint`\n\n- Add that repository to $PATH.\n\n- Ensure you can run `puppet-languageserver` from outside the editor-services directory.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('puppet')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"puppet-languageserver\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"puppet\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"manifests\", \".puppet-lint.rc\", \"hiera.yaml\", \".git\" }\n  ```\n\n---\n\n## purescriptls\n\nhttps://github.com/nwolverson/purescript-language-server\n\nThe `purescript-language-server` can be added to your project and `$PATH` via\n\n* JavaScript package manager such as npm, pnpm, Yarn, et al.\n* Nix under the `nodePackages` and `nodePackages_latest` package sets\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('purescriptls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"purescript-language-server\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"purescript\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"bower.json\", \"flake.nix\", \"psc-package.json\", \"shell.nix\", \"spago.dhall\", \"spago.yaml\" }\n  ```\n\n---\n\n## pylsp\n\nhttps://github.com/python-lsp/python-lsp-server\n\nA Python 3.6+ implementation of the Language Server Protocol.\n\nSee the [project's README](https://github.com/python-lsp/python-lsp-server) for installation instructions.\n\nConfiguration options are documented [here](https://github.com/python-lsp/python-lsp-server/blob/develop/CONFIGURATION.md).\nIn order to configure an option, it must be translated to a nested Lua table and included in the `settings` argument to the `config('pylsp', {})` function.\nFor example, in order to set the `pylsp.plugins.pycodestyle.ignore` option:\n```lua\nvim.lsp.config('pylsp', {\n  settings = {\n    pylsp = {\n      plugins = {\n        pycodestyle = {\n          ignore = {'W391'},\n          maxLineLength = 100\n        }\n      }\n    }\n  }\n})\n```\n\nNote: This is a community fork of `pyls`.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('pylsp')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"pylsp\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"python\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"pyproject.toml\", \"setup.py\", \"setup.cfg\", \"requirements.txt\", \"Pipfile\", \".git\" }\n  ```\n\n---\n\n## pylyzer\n\nhttps://github.com/mtshiba/pylyzer\n\n`pylyzer`, a fast static code analyzer & language server for Python.\n\n`pylyzer` requires Erg as dependency, and finds it via `ERG_PATH` environment variable.\nThis config sets `ERG_PATH=\"~/.erg\"`. Set `cmd_env` if you want to change it.\nTo install Erg, simply extract tarball/zip from [Erg releases](https://github.com/erg-lang/erg/releases/latest)\nto the the path where you want to install it, e.g. `~/.erg`.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('pylyzer')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"pylyzer\", \"--server\" }\n  ```\n- `cmd_env` :\n  ```lua\n  {\n    ERG_PATH = \"/home/runner/.erg\"\n  }\n  ```\n- `filetypes` :\n  ```lua\n  { \"python\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"setup.py\", \"tox.ini\", \"requirements.txt\", \"Pipfile\", \"pyproject.toml\", \".git\" }\n  ```\n- `settings` :\n  ```lua\n  {\n    python = {\n      checkOnType = false,\n      diagnostics = true,\n      inlayHints = true,\n      smartCompletion = true\n    }\n  }\n  ```\n\n---\n\n## pyre\n\nhttps://pyre-check.org/\n\n`pyre` a static type checker for Python 3.\n\n`pyre` offers an extremely limited featureset. It currently only supports diagnostics,\nwhich are triggered on save.\n\nDo not report issues for missing features in `pyre` to `lspconfig`.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('pyre')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"pyre\", \"persistent\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"python\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".pyre_configuration\" }\n  ```\n\n---\n\n## pyrefly\n\nhttps://pyrefly.org/\n\n`pyrefly`, a faster Python type checker written in Rust.\n\n `pyrefly` is still in development, so please report any errors to\n our issues page at https://github.com/facebook/pyrefly/issues.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('pyrefly')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"pyrefly\", \"lsp\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"python\" }\n  ```\n- `on_exit`: [../lsp/pyrefly.lua:11](../lsp/pyrefly.lua#L11)\n- `root_markers` :\n  ```lua\n  { \"pyrefly.toml\", \"pyproject.toml\", \"setup.py\", \"setup.cfg\", \"requirements.txt\", \"Pipfile\", \".git\" }\n  ```\n\n---\n\n## pyright\n\nhttps://github.com/microsoft/pyright\n\n`pyright`, a static type checker and language server for python\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('pyright')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"pyright-langserver\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"python\" }\n  ```\n- `on_attach`: [../lsp/pyright.lua:25](../lsp/pyright.lua#L25)\n- `root_markers` :\n  ```lua\n  { \"pyrightconfig.json\", \"pyproject.toml\", \"setup.py\", \"setup.cfg\", \"requirements.txt\", \"Pipfile\", \".git\" }\n  ```\n- `settings` :\n  ```lua\n  {\n    python = {\n      analysis = {\n        autoSearchPaths = true,\n        diagnosticMode = \"openFilesOnly\",\n        useLibraryCodeForTypes = true\n      }\n    }\n  }\n  ```\n\n---\n\n## qmlls\n\nhttps://doc.qt.io/qt-6/qtqml-tooling-qmlls.html\n\n> QML Language Server is a tool shipped with Qt that helps you write code in your favorite (LSP-supporting) editor.\n\nSource in the [QtDeclarative repository](https://code.qt.io/cgit/qt/qtdeclarative.git/)\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('qmlls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"qmlls\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"qml\", \"qmljs\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## quick_lint_js\n\nhttps://quick-lint-js.com/\n\nquick-lint-js finds bugs in JavaScript programs.\n\nSee installation [instructions](https://quick-lint-js.com/install/)\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('quick_lint_js')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"quick-lint-js\", \"--lsp-server\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"javascript\", \"typescript\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"package.json\", \"jsconfig.json\", \".git\" }\n  ```\n\n---\n\n## r_language_server\n\n[languageserver](https://github.com/REditorSupport/languageserver) is an\nimplementation of the Microsoft's Language Server Protocol for the R\nlanguage.\n\nIt is released on CRAN and can be easily installed by\n\n```r\ninstall.packages(\"languageserver\")\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('r_language_server')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"R\", \"--no-echo\", \"-e\", \"languageserver::run()\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"r\", \"rmd\", \"quarto\" }\n  ```\n- `root_dir`: [../lsp/r_language_server.lua:14](../lsp/r_language_server.lua#L14)\n\n---\n\n## racket_langserver\n\n[https://github.com/jeapostrophe/racket-langserver](https://github.com/jeapostrophe/racket-langserver)\n\nThe Racket language server. This project seeks to use\n[DrRacket](https://github.com/racket/drracket)'s public API to provide\nfunctionality that mimics DrRacket's code tools as closely as possible.\n\nInstall via `raco`: `raco pkg install racket-langserver`\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('racket_langserver')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"racket\", \"--lib\", \"racket-langserver\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"racket\", \"scheme\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## raku_navigator\n\nhttps://github.com/bscan/RakuNavigator\nA Raku language server\n**By default, raku_navigator doesn't have a `cmd` set.** This is because nvim-lspconfig does not make assumptions about your path.\nYou have to install the language server manually.\nClone the RakuNavigator repo, install based on the [instructions](https://github.com/bscan/raku_Navigator#installation-for-other-editors),\nand point `cmd` to `server.js` inside the `server/out` directory:\n```lua\ncmd = {'node', '<path_to_repo>/server/out/server.js', '--stdio'}\n```\nAt minimum, you will need `raku` in your path. If you want to use a non-standard `raku` you will need to set your configuration like so:\n```lua\nsettings = {\n  raku_navigator = {\n    rakuPath = '/some/odd/location/my-raku'\n  }\n}\n```\nThe `contributes.configuration.properties` section of `raku_navigator`'s `package.json` has all available configuration settings. All\nsettings have a reasonable default, but, at minimum, you may want to point `raku_navigator` at your `raku_tidy` and `raku_critic` configurations.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('raku_navigator')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  {}\n  ```\n- `filetypes` :\n  ```lua\n  { \"raku\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## reason_ls\n\nReason language server\n\nYou can install reason language server from [reason-language-server](https://github.com/jaredly/reason-language-server) repository.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('reason_ls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"reason-language-server\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"reason\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"bsconfig.json\", \".git\" }\n  ```\n\n---\n\n## regal\n\nhttps://github.com/StyraInc/regal\n\nA linter for Rego, with support for running as an LSP server.\n\n`regal` can be installed by running:\n```sh\ngo install github.com/StyraInc/regal@latest\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('regal')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"regal\", \"language-server\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"rego\" }\n  ```\n- `root_dir`: [../lsp/regal.lua:15](../lsp/regal.lua#L15)\n\n---\n\n## regols\n\nhttps://github.com/kitagry/regols\n\nOPA Rego language server.\n\n`regols` can be installed by running:\n```sh\ngo install github.com/kitagry/regols@latest\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('regols')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"regols\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"rego\" }\n  ```\n- `root_dir`: [../lsp/regols.lua:15](../lsp/regols.lua#L15)\n\n---\n\n## remark_ls\n\nhttps://github.com/remarkjs/remark-language-server\n\n`remark-language-server` can be installed via `npm`:\n```sh\nnpm install -g remark-language-server\n```\n\n`remark-language-server` uses the same\n[configuration files](https://github.com/remarkjs/remark/tree/main/packages/remark-cli#example-config-files-json-yaml-js)\nas `remark-cli`.\n\nThis uses a plugin based system. Each plugin needs to be installed locally using `npm` or `yarn`.\n\nFor example, given the following `.remarkrc.json`:\n\n```json\n{\n  \"presets\": [\n    \"remark-preset-lint-recommended\"\n  ]\n}\n```\n\n`remark-preset-lint-recommended` needs to be installed in the local project:\n\n```sh\nnpm install remark-preset-lint-recommended\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('remark_ls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"remark-language-server\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"markdown\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".remarkrc\", \".remarkrc.json\", \".remarkrc.js\", \".remarkrc.cjs\", \".remarkrc.mjs\", \".remarkrc.yml\", \".remarkrc.yaml\", \".remarkignore\" }\n  ```\n\n---\n\n## rescriptls\n\nhttps://github.com/rescript-lang/rescript-vscode/tree/master/server\n\nReScript Language Server can be installed via npm:\n```sh\nnpm install -g @rescript/language-server\n```\n\nSee [package.json](https://github.com/rescript-lang/rescript-vscode/blob/master/package.json#L139)\nfor init_options supported.\n\nFor example, in order to disable the `inlayHints` option:\n```lua\nvim.lsp.config('rescriptls', {\n  settings = {\n    rescript = {\n      settings = {\n        inlayHints = { enable = false },\n      },\n    },\n  })\n}\n```\n\nDetect file changes: While using @rescript/language-server >= 1.63.0 you have to detect file changes by registering the didChangeWatchedFiles hook.\n```lua\ncapabilities = {\n    workspace = {\n        didChangeWatchedFiles = {\n            dynamicRegistration = true,\n        },\n    },\n}\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('rescriptls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"rescript-language-server\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"rescript\" }\n  ```\n- `init_options` :\n  ```lua\n  {\n    extensionConfiguration = {\n      allowBuiltInFormatter = true,\n      askToStartBuild = false,\n      cache = {\n        projectConfig = {\n          enabled = true\n        }\n      },\n      codeLens = true,\n      incrementalTypechecking = {\n        acrossFiles = true,\n        enabled = true\n      },\n      inlayHints = {\n        enable = true\n      }\n    }\n  }\n  ```\n- `root_markers` :\n  ```lua\n  { \"bsconfig.json\", \"rescript.json\", \".git\" }\n  ```\n- `settings` :\n  ```lua\n  {}\n  ```\n\n---\n\n## rls\n\nhttps://github.com/rust-lang/rls\n\nrls, a language server for Rust\n\nSee https://github.com/rust-lang/rls#setup to setup rls itself.\nSee https://github.com/rust-lang/rls#configuration for rls-specific settings.\nAll settings listed on the rls configuration section of the readme\nmust be set under settings.rust as follows:\n\n```lua\nvim.lsp.config('rls', {\n  settings = {\n    rust = {\n      unstable_features = true,\n      build_on_save = false,\n      all_features = true,\n    },\n  },\n})\n```\n\nIf you want to use rls for a particular build, eg nightly, set cmd as follows:\n\n```lua\ncmd = {\"rustup\", \"run\", \"nightly\", \"rls\"}\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('rls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"rls\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"rust\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"Cargo.toml\" }\n  ```\n\n---\n\n## rnix\n\nhttps://github.com/nix-community/rnix-lsp\n\nA language server for Nix providing basic completion and formatting via nixpkgs-fmt.\n\nTo install manually, run `cargo install rnix-lsp`. If you are using nix, rnix-lsp is in nixpkgs.\n\nThis server accepts configuration via the `settings` key.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('rnix')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"rnix-lsp\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"nix\" }\n  ```\n- `init_options` :\n  ```lua\n  {}\n  ```\n- `root_dir`: [../lsp/rnix.lua:12](../lsp/rnix.lua#L12)\n- `settings` :\n  ```lua\n  {}\n  ```\n\n---\n\n## robotcode\n\nhttps://robotcode.io\n\nRobotCode - Language Server Protocol implementation for Robot Framework.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('robotcode')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"robotcode\", \"language-server\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"robot\", \"resource\" }\n  ```\n- `get_language_id`: [../lsp/robotcode.lua:8](../lsp/robotcode.lua#L8)\n- `root_markers` :\n  ```lua\n  { \"robot.toml\", \"pyproject.toml\", \"Pipfile\", \".git\" }\n  ```\n\n---\n\n## robotframework_ls\n\nhttps://github.com/robocorp/robotframework-lsp\n\nLanguage Server Protocol implementation for Robot Framework.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('robotframework_ls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"robotframework_ls\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"robot\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"robotidy.toml\", \"pyproject.toml\", \"conda.yaml\", \"robot.yaml\", \".git\" }\n  ```\n\n---\n\n## roc_ls\n\nhttps://github.com/roc-lang/roc/tree/main/crates/language_server#roc_language_server\n\nThe built-in language server for the Roc programming language.\n[Installation](https://github.com/roc-lang/roc/tree/main/crates/language_server#installing)\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('roc_ls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"roc_language_server\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"roc\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## rome\n\nhttps://rome.tools\n\nLanguage server for the Rome Frontend Toolchain.\n\n(Unmaintained, use [Biome](https://biomejs.dev/blog/annoucing-biome) instead.)\n\n```sh\nnpm install [-g] rome\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('rome')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"rome\", \"lsp-proxy\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"javascript\", \"javascriptreact\", \"json\", \"typescript\", \"typescriptreact\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"package.json\", \"node_modules\", \".git\" }\n  ```\n\n---\n\n## roslyn_ls\n\nhttps://github.com/dotnet/roslyn\n\nTo install the server, compile from source or download as nuget package.\nGo to `https://dev.azure.com/azure-public/vside/_artifacts/feed/vs-impl/NuGet/Microsoft.CodeAnalysis.LanguageServer.<platform>/overview`\nreplace `<platform>` with one of the following `linux-x64`, `osx-x64`, `win-x64`, `neutral` (for more info on the download location see https://github.com/dotnet/roslyn/issues/71474#issuecomment-2177303207).\nDownload and extract it (nuget's are zip files).\n- if you chose `neutral` nuget version, then you have to change the `cmd` like so:\n  ```lua\n  cmd = {\n    'dotnet',\n    '<my_folder>/Microsoft.CodeAnalysis.LanguageServer.dll',\n    '--logLevel', -- this property is required by the server\n    'Information',\n    '--extensionLogDirectory', -- this property is required by the server\n    fs.joinpath(uv.os_tmpdir(), 'roslyn_ls/logs'),\n    '--stdio',\n  },\n  ```\n  where `<my_folder>` has to be the folder you extracted the nuget package to.\n- for all other platforms put the extracted folder to neovim's PATH (`vim.env.PATH`)\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('roslyn_ls')\n```\n\nCommands:\n- roslyn.client.completionComplexEdit\n- roslyn.client.nestedCodeAction\n\nDefault config:\n- `capabilities` :\n  ```lua\n  {\n    textDocument = {\n      diagnostic = {\n        dynamicRegistration = true\n      }\n    }\n  }\n  ```\n- `cmd` :\n  ```lua\n  { \"roslyn-language-server\", \"--logLevel\", \"Information\", \"--extensionLogDirectory\", \"/tmp/roslyn_ls/logs\", \"--stdio\" }\n  ```\n- `cmd_env` :\n  ```lua\n  {}\n  ```\n- `commands` :\n  ```lua\n  {\n    [\"roslyn.client.completionComplexEdit\"] = <function 1>,\n    [\"roslyn.client.nestedCodeAction\"] = <function 2>\n  }\n  ```\n- `filetypes` :\n  ```lua\n  { \"cs\" }\n  ```\n- `handlers` :\n  ```lua\n  {\n    [\"razor/provideDynamicFileInfo\"] = <function 1>,\n    [\"workspace/_roslyn_projectNeedsRestore\"] = <function 2>,\n    [\"workspace/projectInitializationComplete\"] = <function 3>\n  }\n  ```\n- `name` :\n  ```lua\n  \"roslyn_ls\"\n  ```\n- `on_attach`: [../lsp/roslyn_ls.lua:112](../lsp/roslyn_ls.lua#L112)\n- `on_init` :\n  ```lua\n  { <function 1> }\n  ```\n- `root_dir`: [../lsp/roslyn_ls.lua:112](../lsp/roslyn_ls.lua#L112)\n- `settings` :\n  ```lua\n  {\n    [\"csharp|background_analysis\"] = {\n      dotnet_analyzer_diagnostics_scope = \"fullSolution\",\n      dotnet_compiler_diagnostics_scope = \"fullSolution\"\n    },\n    [\"csharp|code_lens\"] = {\n      dotnet_enable_references_code_lens = true\n    },\n    [\"csharp|completion\"] = {\n      dotnet_provide_regex_completions = true,\n      dotnet_show_completion_items_from_unimported_namespaces = true,\n      dotnet_show_name_completion_suggestions = true\n    },\n    [\"csharp|inlay_hints\"] = {\n      csharp_enable_inlay_hints_for_implicit_object_creation = true,\n      csharp_enable_inlay_hints_for_implicit_variable_types = true,\n      csharp_enable_inlay_hints_for_lambda_parameter_types = true,\n      csharp_enable_inlay_hints_for_types = true,\n      dotnet_enable_inlay_hints_for_indexer_parameters = true,\n      dotnet_enable_inlay_hints_for_literal_parameters = true,\n      dotnet_enable_inlay_hints_for_object_creation_parameters = true,\n      dotnet_enable_inlay_hints_for_other_parameters = true,\n      dotnet_enable_inlay_hints_for_parameters = true,\n      dotnet_suppress_inlay_hints_for_parameters_that_differ_only_by_suffix = true,\n      dotnet_suppress_inlay_hints_for_parameters_that_match_argument_name = true,\n      dotnet_suppress_inlay_hints_for_parameters_that_match_method_intent = true\n    },\n    [\"csharp|symbol_search\"] = {\n      dotnet_search_reference_assemblies = true\n    }\n  }\n  ```\n\n---\n\n## rpmspec\n\nhttps://github.com/dcermak/rpm-spec-language-server\n\nLanguage server protocol (LSP) support for RPM Spec files.\n\n`rpm-spec-language-server` can be installed by running,\n\n```sh\npip install rpm-spec-language-server\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('rpmspec')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"rpm_lsp_server\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"spec\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n- `settings` :\n  ```lua\n  {}\n  ```\n\n---\n\n## rubocop\n\nhttps://github.com/rubocop/rubocop\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('rubocop')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"rubocop\", \"--lsp\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"ruby\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"Gemfile\", \".git\" }\n  ```\n\n---\n\n## ruby_lsp\n\nhttps://shopify.github.io/ruby-lsp/\n\nThis gem is an implementation of the language server protocol specification for\nRuby, used to improve editor features.\n\nInstall the gem. There's no need to require it, since the server is used as a\nstandalone executable.\n\n```sh\ngem install ruby-lsp\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('ruby_lsp')\n```\n\nDefault config:\n- `cmd`: [../lsp/ruby_lsp.lua:16](../lsp/ruby_lsp.lua#L16)\n- `filetypes` :\n  ```lua\n  { \"ruby\", \"eruby\" }\n  ```\n- `init_options` :\n  ```lua\n  {\n    formatter = \"auto\"\n  }\n  ```\n- `reuse_client`: [../lsp/ruby_lsp.lua:16](../lsp/ruby_lsp.lua#L16)\n- `root_markers` :\n  ```lua\n  { \"Gemfile\", \".git\" }\n  ```\n\n---\n\n## ruff\n\nhttps://github.com/astral-sh/ruff\n\nA Language Server Protocol implementation for Ruff, an extremely fast Python linter and code formatter, written in Rust. It can be installed via `pip`.\n\n```sh\npip install ruff\n```\n\n**Available in Ruff `v0.4.5` in beta and stabilized in Ruff `v0.5.3`.**\n\nThis is the new built-in language server written in Rust. It supports the same feature set as `ruff-lsp`, but with superior performance and no installation required. Note that the `ruff-lsp` server will continue to be maintained until further notice.\n\nServer settings can be provided via:\n\n```lua\nvim.lsp.config('ruff', {\n  init_options = {\n    settings = {\n      -- Server settings should go here\n    }\n  }\n})\n```\n\nRefer to the [documentation](https://docs.astral.sh/ruff/editors/) for more details.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('ruff')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"ruff\", \"server\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"python\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"pyproject.toml\", \"ruff.toml\", \".ruff.toml\", \".git\" }\n  ```\n- `settings` :\n  ```lua\n  {}\n  ```\n\n---\n\n## ruff_lsp\n\nhttps://github.com/astral-sh/ruff-lsp\n\nA Language Server Protocol implementation for Ruff, an extremely fast Python linter and code transformation tool, written in Rust. It can be installed via pip.\n\n```sh\npip install ruff-lsp\n```\n\nExtra CLI arguments for `ruff` can be provided via\n\n```lua\nvim.lsp.config('ruff_lsp', {\n  init_options = {\n    settings = {\n      -- Any extra CLI arguments for `ruff` go here.\n      args = {},\n    }\n  }\n})\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('ruff_lsp')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"ruff-lsp\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"python\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"pyproject.toml\", \"ruff.toml\", \".git\" }\n  ```\n- `settings` :\n  ```lua\n  {}\n  ```\n\n---\n\n## rumdl\n\nhttps://github.com/rvben/rumdl\n\nMarkdown Linter and Formatter written in Rust.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('rumdl')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"rumdl\", \"server\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"markdown\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## rune_languageserver\n\nhttps://crates.io/crates/rune-languageserver\n\nA language server for the [Rune](https://rune-rs.github.io/) Language,\nan embeddable dynamic programming language for Rust\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('rune_languageserver')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"rune-languageserver\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"rune\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## rust_analyzer\n\nhttps://github.com/rust-lang/rust-analyzer\n\nrust-analyzer (aka rls 2.0), a language server for Rust\n\n\nSee [docs](https://rust-analyzer.github.io/book/configuration.html) for extra settings. The settings can be used like this:\n```lua\nvim.lsp.config('rust_analyzer', {\n  settings = {\n    ['rust-analyzer'] = {\n      diagnostics = {\n        enable = false;\n      }\n    }\n  }\n})\n```\n\nNote: do not set `init_options` for this LS config, it will be automatically populated by the contents of settings[\"rust-analyzer\"] per\nhttps://github.com/rust-lang/rust-analyzer/blob/eb5da56d839ae0a9e9f50774fa3eb78eb0964550/docs/dev/lsp-extensions.md?plain=1#L26.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('rust_analyzer')\n```\n\nDefault config:\n- `before_init`: [../lsp/rust_analyzer.lua:85](../lsp/rust_analyzer.lua#L85)\n- `capabilities` :\n  ```lua\n  {\n    experimental = {\n      commands = {\n        commands = { \"rust-analyzer.showReferences\", \"rust-analyzer.runSingle\", \"rust-analyzer.debugSingle\" }\n      },\n      serverStatusNotification = true\n    }\n  }\n  ```\n- `cmd` :\n  ```lua\n  { \"rust-analyzer\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"rust\" }\n  ```\n- `on_attach`: [../lsp/rust_analyzer.lua:85](../lsp/rust_analyzer.lua#L85)\n- `root_dir`: [../lsp/rust_analyzer.lua:85](../lsp/rust_analyzer.lua#L85)\n- `settings` :\n  ```lua\n  {\n    [\"rust-analyzer\"] = {\n      lens = {\n        debug = {\n          enable = true\n        },\n        enable = true,\n        implementations = {\n          enable = true\n        },\n        references = {\n          adt = {\n            enable = true\n          },\n          enumVariant = {\n            enable = true\n          },\n          method = {\n            enable = true\n          },\n          trait = {\n            enable = true\n          }\n        },\n        run = {\n          enable = true\n        },\n        updateTest = {\n          enable = true\n        }\n      }\n    }\n  }\n  ```\n\n---\n\n## salt_ls\n\nLanguage server for Salt configuration files.\nhttps://github.com/dcermak/salt-lsp\n\nThe language server can be installed with `pip`:\n```sh\npip install salt-lsp\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('salt_ls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"salt_lsp_server\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"sls\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## scheme_langserver\n\nhttps://github.com/ufo5260987423/scheme-langserver\n`scheme-langserver`, a language server protocol implementation for scheme.\nAnd for nvim user, please add .sls to scheme file extension list.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('scheme_langserver')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"scheme-langserver\", \"~/.scheme-langserver.log\", \"enable\", \"disable\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"scheme\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"Akku.manifest\", \".git\" }\n  ```\n\n---\n\n## scry\n\nhttps://github.com/crystal-lang-tools/scry\n\nCrystal language server.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('scry')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"scry\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"crystal\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"shard.yml\", \".git\" }\n  ```\n\n---\n\n## selene3p_ls\n\nhttps://github.com/antonk52/lua-3p-language-servers\n\n3rd party Language Server for Selene lua linter\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('selene3p_ls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"selene-3p-language-server\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"lua\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"selene.toml\" }\n  ```\n\n---\n\n## serve_d\n\nhttps://github.com/Pure-D/serve-d\n\nMicrosoft language server protocol implementation for D using workspace-d.\nDownload a binary from https://github.com/Pure-D/serve-d/releases and put it in your $PATH.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('serve_d')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"serve-d\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"d\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"dub.json\", \"dub.sdl\", \".git\" }\n  ```\n\n---\n\n## shopify_theme_ls\n\nhttps://shopify.dev/docs/api/shopify-cli\n\n[Language Server](https://shopify.dev/docs/themes/tools/cli/language-server) and Theme Check (linter) for Shopify themes.\n\n`shopify` can be installed via npm `npm install -g @shopify/cli`.\n\nNote: This LSP already includes Theme Check so you don't need to use the `theme_check` server configuration as well.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('shopify_theme_ls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"shopify\", \"theme\", \"language-server\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"liquid\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".shopifyignore\", \".theme-check.yml\", \".theme-check.yaml\", \"shopify.theme.toml\" }\n  ```\n- `settings` :\n  ```lua\n  {}\n  ```\n\n---\n\n## sixtyfps\n\nhttps://github.com/sixtyfpsui/sixtyfps\n`SixtyFPS`'s language server\n\nYou can build and install `sixtyfps-lsp` binary with `cargo`:\n```sh\ncargo install sixtyfps-lsp\n```\n\nVim does not have built-in syntax for the `sixtyfps` filetype currently.\n\nThis can be added via an autocmd:\n\n```lua\nvim.cmd [[ autocmd BufRead,BufNewFile *.60 set filetype=sixtyfps ]]\n```\n\nor by installing a filetype plugin such as https://github.com/RustemB/sixtyfps-vim\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('sixtyfps')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"sixtyfps-lsp\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"sixtyfps\" }\n  ```\n\n---\n\n## slangd\n\nhttps://github.com/shader-slang/slang\n\nThe `slangd` binary can be downloaded as part of [slang releases](https://github.com/shader-slang/slang/releases) or\nby [building `slang` from source](https://github.com/shader-slang/slang/blob/master/docs/building.md).\n\nThe server can be configured by passing a \"settings\" object to vim.lsp.config('slangd'):\n\n```lua\nvim.lsp.config('slangd', {\n  settings = {\n    slang = {\n      predefinedMacros = {\"MY_VALUE_MACRO=1\"},\n      inlayHints = {\n        deducedTypes = true,\n        parameterNames = true,\n      }\n    }\n  }\n})\n```\nAvailable options are documented [here](https://github.com/shader-slang/slang-vscode-extension/tree/main?tab=readme-ov-file#configurations)\nor in more detail [here](https://github.com/shader-slang/slang-vscode-extension/blob/main/package.json#L70).\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('slangd')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"slangd\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"hlsl\", \"shaderslang\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"slangdconfig.json\", \".clang-format\", \".git\" }\n  ```\n\n---\n\n## slint_lsp\n\nhttps://github.com/slint-ui/slint\n`Slint`'s language server\n\nYou can build and install `slint-lsp` binary with `cargo`:\n```sh\ncargo install slint-lsp\n```\n\nVim does not have built-in syntax for the `slint` filetype at this time.\n\nThis can be added via an autocmd:\n\n```lua\nvim.cmd [[ autocmd BufRead,BufNewFile *.slint set filetype=slint ]]\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('slint_lsp')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"slint-lsp\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"slint\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## smarty_ls\n\nhttps://github.com/landeaux/vscode-smarty-langserver-extracted\n\nLanguage server for Smarty.\n\n`smarty-language-server` can be installed via `npm`:\n\n```sh\nnpm i -g vscode-smarty-langserver-extracted\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('smarty_ls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"smarty-language-server\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"smarty\" }\n  ```\n- `init_options` :\n  ```lua\n  {\n    storageDir = vim.NIL\n  }\n  ```\n- `root_dir`: [../lsp/smarty_ls.lua:14](../lsp/smarty_ls.lua#L14)\n- `settings` :\n  ```lua\n  {\n    css = {\n      validate = true\n    },\n    smarty = {\n      pluginDirs = {}\n    }\n  }\n  ```\n\n---\n\n## smithy_ls\n\nhttps://github.com/awslabs/smithy-language-server\n\n\"Smithy Language Server\", a Language server for the Smithy IDL.\n\nsmithy-language-server has no docs that say how to actually install it(?), so look at:\nhttps://github.com/smithy-lang/smithy-vscode/blob/600cfcf0db65edce85f02e6d50f5fa2b0862bc8d/src/extension.ts#L78\n\nMaven package: https://central.sonatype.com/artifact/software.amazon.smithy/smithy-language-server\n\nInstallation:\n1. Install coursier, or any tool that can install maven packages.\n   ```\n   brew install coursier\n   ```\n2. The LS is auto-installed and launched by:\n   ```\n   coursier launch software.amazon.smithy:smithy-language-server:0.7.0\n   ```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('smithy_ls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"coursier\", \"launch\", \"software.amazon.smithy:smithy-language-server:0.7.0\", \"-M\", \"software.amazon.smithy.lsp.Main\", \"--\", \"0\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"smithy\" }\n  ```\n- `init_options` :\n  ```lua\n  {\n    compilerOptions = {\n      snippetAutoIndent = false\n    },\n    isHttpEnabled = true,\n    statusBarProvider = \"show-message\"\n  }\n  ```\n- `message_level` :\n  ```lua\n  4\n  ```\n- `root_markers` :\n  ```lua\n  { \"smithy-build.json\", \"build.gradle\", \"build.gradle.kts\", \".git\" }\n  ```\n\n---\n\n## snakeskin_ls\n\nhttps://www.npmjs.com/package/@snakeskin/cli\n\n`snakeskin cli` can be installed via `npm`:\n```sh\nnpm install -g @snakeskin/cli\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('snakeskin_ls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"snakeskin-cli\", \"lsp\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"ss\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"package.json\" }\n  ```\n\n---\n\n## snyk_ls\n\nhttps://github.com/snyk/snyk-ls\n\n**[Snyk](https://snyk.io)** is a developer security platform that helps you find and fix\nvulnerabilities in your code, open source dependencies, containers, and infrastructure as code.\n\nThe Snyk Language Server provides real-time security scanning for:\n- **Snyk Open Source**: Find and fix vulnerabilities in open source dependencies\n- **Snyk Code**: Find and fix security vulnerabilities in your code\n- **Snyk Infrastructure as Code**: Find and fix security issues in Kubernetes, Terraform, and other IaC files\n\n## Authentication\n\n**Note**: Currently, only token-based authentication is supported in Neovim.\n\n1. Get your API token from https://app.snyk.io/account\n2. Set the `SNYK_TOKEN` environment variable:\n   ```sh\n   export SNYK_TOKEN=\"your-token-here\"\n   ```\n\n## Trusted Folders\n\nSnyk requires you to trust directories before scanning them. To avoid being prompted every time:\n\n```lua\nvim.lsp.config('snyk_ls', {\n  init_options = {\n    trustedFolders = {\n      '/Users/yourname/projects',  -- Trust your projects directory\n      '/path/to/another/trusted/dir',\n    },\n  },\n})\n```\n\n**Important**: Trust the top-level directory where you store your repositories, not individual repos.\nFor example, if you work on `/Users/yourname/projects/my-app`, trust `/Users/yourname/projects`.\nOnly trust directories containing code you trust to scan.\n\n## Configuration\n\nFull configuration options available at https://github.com/snyk/snyk-ls#configuration-1\n\n### Advanced Configuration\n\nFor **non-default multi-tenant or single-tenant setups**, you may need to specify:\n\n- `endpoint`: Custom Snyk API endpoint (e.g., `https://api.eu.snyk.io` for EU, or your single-tenant URL)\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('snyk_ls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"snyk\", \"language-server\", \"-l\", \"info\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"apex\", \"apexcode\", \"c\", \"cpp\", \"cs\", \"dart\", \"dockerfile\", \"elixir\", \"eelixir\", \"go\", \"gomod\", \"groovy\", \"helm\", \"java\", \"javascript\", \"json\", \"kotlin\", \"objc\", \"objcpp\", \"php\", \"python\", \"requirements\", \"ruby\", \"rust\", \"scala\", \"swift\", \"terraform\", \"terraform-vars\", \"typescript\", \"yaml\" }\n  ```\n- `init_options` :\n  ```lua\n  {\n    activateSnykCode = \"false\",\n    activateSnykIac = \"true\",\n    activateSnykOpenSource = \"true\",\n    integrationName = \"Neovim\",\n    integrationVersion = \"0.12.0-dev+g238d4fa71a\",\n    token = vim.NIL,\n    trustedFolders = {}\n  }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\", \".snyk\" }\n  ```\n- `settings` :\n  ```lua\n  {}\n  ```\n\n---\n\n## solang\n\nA language server for Solidity\n\n See the [documentation](https://solang.readthedocs.io/en/latest/installing.html) for installation instructions.\n\n The language server only provides the following capabilities:\n * Syntax highlighting\n * Diagnostics\n * Hover\n\n There is currently no support for completion, goto definition, references, or other functionality.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('solang')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"solang\", \"language-server\", \"--target\", \"evm\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"solidity\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## solargraph\n\nhttps://solargraph.org/\n\nsolargraph, a language server for Ruby\n\nYou can install solargraph via gem install.\n\n```sh\ngem install --user-install solargraph\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('solargraph')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"solargraph\", \"stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"ruby\" }\n  ```\n- `init_options` :\n  ```lua\n  {\n    formatting = true\n  }\n  ```\n- `root_markers` :\n  ```lua\n  { \"Gemfile\", \".git\" }\n  ```\n- `settings` :\n  ```lua\n  {\n    solargraph = {\n      diagnostics = true\n    }\n  }\n  ```\n\n---\n\n## solc\n\nhttps://docs.soliditylang.org/en/latest/installing-solidity.html\n\nsolc is the native language server for the Solidity language.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('solc')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"solc\", \"--lsp\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"solidity\" }\n  ```\n- `root_dir`: [../lsp/solc.lua:10](../lsp/solc.lua#L10)\n\n---\n\n## solidity\n\nhttps://github.com/qiuxiang/solidity-ls\n\nnpm i solidity-ls -g\n\nMake sure that solc is installed and it's the same version of the file.  solc-select is recommended.\n\nSolidity language server is a LSP with autocomplete, go to definition and diagnostics.\n\nIf you use brownie, use this root_markers:\nroot_markers = { 'brownie-config.yaml', '.git' }\n\non includePath, you can add an extra path to search for external libs, on remapping you can remap lib <> path, like:\n\n```lua\n{ solidity = { includePath = '/Users/your_user/.brownie/packages/', remapping = { [\"@OpenZeppelin/\"] = 'OpenZeppelin/openzeppelin-contracts@4.6.0/' } } }\n```\n\n**For brownie users**\nChange the root_markers to:\n\n```lua\nroot_markers = { 'brownie-config.yaml', '.git' }\n```\n\nThe best way of using it is to have a package.json in your project folder with the packages that you will use.\nAfter installing with package.json, just create a `remappings.txt` with:\n\n```\n@OpenZeppelin/=node_modules/OpenZeppelin/openzeppelin-contracts@4.6.0/\n```\n\nYou can omit the node_modules as well.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('solidity')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"solidity-ls\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"solidity\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\", \"package.json\" }\n  ```\n- `settings` :\n  ```lua\n  {\n    solidity = {\n      includePath = \"\",\n      remapping = {}\n    }\n  }\n  ```\n\n---\n\n## solidity_ls\n\nhttps://github.com/juanfranblanco/vscode-solidity\n\n`vscode-solidity-server` can be installed via `npm`:\n\n```sh\nnpm install -g vscode-solidity-server\n```\n\n`vscode-solidity-server` is a language server for the Solidity language ported from the VSCode \"solidity\" extension.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('solidity_ls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"vscode-solidity-server\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"solidity\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"hardhat.config.js\", \"hardhat.config.ts\", \"foundry.toml\", \"remappings.txt\", \"truffle.js\", \"truffle-config.js\", \"ape-config.yaml\", \".git\", \"package.json\" }\n  ```\n\n---\n\n## solidity_ls_nomicfoundation\n\nhttps://github.com/NomicFoundation/hardhat-vscode/blob/development/server/README.md\n\n`nomicfoundation-solidity-language-server` can be installed via `npm`:\n\n```sh\nnpm install -g @nomicfoundation/solidity-language-server\n```\n\nA language server for the Solidity programming language, built by the Nomic Foundation for the Ethereum community.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('solidity_ls_nomicfoundation')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"nomicfoundation-solidity-language-server\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"solidity\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"hardhat.config.js\", \"hardhat.config.ts\", \"foundry.toml\", \"remappings.txt\", \"truffle.js\", \"truffle-config.js\", \"ape-config.yaml\", \".git\", \"package.json\" }\n  ```\n\n---\n\n## somesass_ls\n\nhttps://github.com/wkillerud/some-sass/tree/main/packages/language-server\n\n`some-sass-language-server` can be installed via `npm`:\n\n```sh\nnpm i -g some-sass-language-server\n```\n\nThe language server provides:\n\n- Full support for @use and @forward, including aliases, prefixes and hiding.\n- Workspace-wide code navigation and refactoring, such as Rename Symbol.\n- Rich documentation through SassDoc.\n- Language features for %placeholder-selectors, both when using them and writing them.\n- Suggestions and hover info for built-in Sass modules, when used with @use.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('somesass_ls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"some-sass-language-server\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"scss\", \"sass\" }\n  ```\n- `name` :\n  ```lua\n  \"somesass_ls\"\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\", \".package.json\" }\n  ```\n- `settings` :\n  ```lua\n  {\n    somesass = {\n      suggestAllFromOpenDocument = true\n    }\n  }\n  ```\n\n---\n\n## sorbet\n\nhttps://sorbet.org\n\nSorbet is a fast, powerful type checker designed for Ruby.\n\nYou can install Sorbet via gem install. You might also be interested in how to set\nSorbet up for new projects: https://sorbet.org/docs/adopting.\n\n```sh\ngem install sorbet\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('sorbet')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"srb\", \"tc\", \"--lsp\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"ruby\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"Gemfile\", \".git\" }\n  ```\n\n---\n\n## sourcekit\n\nhttps://github.com/swiftlang/sourcekit-lsp\n\nLanguage server for Swift and C/C++/Objective-C.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('sourcekit')\n```\n\nDefault config:\n- `capabilities` :\n  ```lua\n  {\n    textDocument = {\n      diagnostic = {\n        dynamicRegistration = true,\n        relatedDocumentSupport = true\n      }\n    },\n    workspace = {\n      didChangeWatchedFiles = {\n        dynamicRegistration = true\n      }\n    }\n  }\n  ```\n- `cmd` :\n  ```lua\n  { \"sourcekit-lsp\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"swift\", \"objc\", \"objcpp\", \"c\", \"cpp\" }\n  ```\n- `get_language_id`: [../lsp/sourcekit.lua:10](../lsp/sourcekit.lua#L10)\n- `root_dir`: [../lsp/sourcekit.lua:10](../lsp/sourcekit.lua#L10)\n\n---\n\n## spectral\n\nhttps://github.com/luizcorreia/spectral-language-server\n `A flexible JSON/YAML linter for creating automated style guides, with baked in support for OpenAPI v2 & v3.`\n\n`spectral-language-server` can be installed via `npm`:\n```sh\nnpm i -g spectral-language-server\n```\nSee [vscode-spectral](https://github.com/stoplightio/vscode-spectral#extension-settings) for configuration options.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('spectral')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"spectral-language-server\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"yaml\", \"json\", \"yml\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".spectral.yaml\", \".spectral.yml\", \".spectral.json\", \".spectral.js\" }\n  ```\n- `settings` :\n  ```lua\n  {\n    enable = true,\n    run = \"onType\",\n    validateLanguages = { \"yaml\", \"json\", \"yml\" }\n  }\n  ```\n\n---\n\n## spyglassmc_language_server\n\nhttps://github.com/SpyglassMC/Spyglass/tree/main/packages/language-server\n\nLanguage server for Minecraft datapacks.\n\n`spyglassmc-language-server` can be installed via `npm`:\n\n```sh\nnpm i -g @spyglassmc/language-server\n```\n\nYou may also need to configure the filetype:\n\n`autocmd BufNewFile,BufRead *.mcfunction set filetype=mcfunction`\n\nThis is automatically done by [CrystalAlpha358/vim-mcfunction](https://github.com/CrystalAlpha358/vim-mcfunction), which also provide syntax highlight.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('spyglassmc_language_server')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"spyglassmc-language-server\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"mcfunction\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"pack.mcmeta\" }\n  ```\n\n---\n\n## sqlls\n\nhttps://github.com/joe-re/sql-language-server\n\nThis LSP can be installed via  `npm`. Find further instructions on manual installation of the sql-language-server at [joe-re/sql-language-server](https://github.com/joe-re/sql-language-server).\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('sqlls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"sql-language-server\", \"up\", \"--method\", \"stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"sql\", \"mysql\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".sqllsrc.json\" }\n  ```\n- `settings` :\n  ```lua\n  {}\n  ```\n\n---\n\n## sqls\n\nhttps://github.com/sqls-server/sqls\n\n```lua\nvim.lsp.config('sqls', {\n  cmd = {\"path/to/command\", \"-config\", \"path/to/config.yml\"};\n  ...\n})\n```\nSqls can be installed via `go install github.com/sqls-server/sqls@latest`. Instructions for compiling Sqls from the source can be found at [sqls-server/sqls](https://github.com/sqls-server/sqls).\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('sqls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"sqls\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"sql\", \"mysql\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"config.yml\" }\n  ```\n- `settings` :\n  ```lua\n  {}\n  ```\n\n---\n\n## sqruff\n\nhttps://github.com/quarylabs/sqruff\n\n`sqruff` can be installed by following the instructions [here](https://github.com/quarylabs/sqruff?tab=readme-ov-file#installation)\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('sqruff')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"sqruff\", \"lsp\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"sql\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".sqruff\", \".git\" }\n  ```\n\n---\n\n## stan_ls\n\nhttps://github.com/tomatitito/stan-language-server\n\n Language server for the Stan probabilistic programming language.\n\n@type vim.lsp.Config\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('stan_ls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"stan-language-server\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"stan\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n- `settings` :\n  ```lua\n  {}\n  ```\n\n---\n\n## standardrb\n\nhttps://github.com/testdouble/standard\n\nRuby Style Guide, with linter & automatic code fixer.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('standardrb')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"standardrb\", \"--lsp\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"ruby\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"Gemfile\", \".git\" }\n  ```\n\n---\n\n## starlark_rust\n\nhttps://github.com/facebookexperimental/starlark-rust/\nThe LSP part of `starlark-rust` is not currently documented,\nbut the implementation works well for linting.\nThis gives valuable warnings for potential issues in the code,\nbut does not support refactorings.\n\nIt can be installed with cargo: https://crates.io/crates/starlark\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('starlark_rust')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"starlark\", \"--lsp\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"star\", \"bzl\", \"BUILD.bazel\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## starpls\n\nhttps://github.com/withered-magic/starpls\n\n`starpls` is an LSP implementation for Starlark. Installation instructions can be found in the project's README.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('starpls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"starpls\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"bzl\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"WORKSPACE\", \"WORKSPACE.bazel\", \"MODULE.bazel\" }\n  ```\n\n---\n\n## statix\n\nhttps://github.com/nerdypepper/statix\n\nlints and suggestions for the nix programming language\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('statix')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"statix\", \"check\", \"--stdin\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"nix\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"flake.nix\", \".git\" }\n  ```\n\n---\n\n## steep\n\nhttps://github.com/soutaro/steep\n\n`steep` is a static type checker for Ruby.\n\nYou need `Steepfile` to make it work. Generate it with `steep init`.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('steep')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"steep\", \"langserver\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"ruby\", \"eruby\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"Steepfile\", \".git\" }\n  ```\n\n---\n\n## stimulus_ls\n\nhttps://www.npmjs.com/package/stimulus-language-server\n\n`stimulus-lsp` can be installed via `npm`:\n\n```sh\nnpm install -g stimulus-language-server\n```\n\nor via `yarn`:\n\n```sh\nyarn global add stimulus-language-server\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('stimulus_ls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"stimulus-language-server\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"html\", \"ruby\", \"eruby\", \"blade\", \"php\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"Gemfile\", \".git\" }\n  ```\n\n---\n\n## stylelint_lsp\n\nhttps://github.com/bmatcuk/stylelint-lsp\n\n`stylelint-lsp` can be installed via `npm`:\n\n```sh\nnpm i -g stylelint-lsp\n```\n\nCan be configured by passing a `settings.stylelintplus` object to vim.lsp.config('stylelint_lsp'):\n\n```lua\nvim.lsp.config('stylelint_lsp', {\n  settings = {\n    stylelintplus = {\n      -- see available options in stylelint-lsp documentation\n    }\n  }\n})\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('stylelint_lsp')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"stylelint-lsp\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"astro\", \"css\", \"html\", \"less\", \"scss\", \"sugarss\", \"vue\", \"wxss\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".stylelintrc\", \".stylelintrc.mjs\", \".stylelintrc.cjs\", \".stylelintrc.js\", \".stylelintrc.json\", \".stylelintrc.yaml\", \".stylelintrc.yml\", \"stylelint.config.mjs\", \"stylelint.config.cjs\", \"stylelint.config.js\" }\n  ```\n- `settings` :\n  ```lua\n  {}\n  ```\n\n---\n\n## stylua\n\nhttps://github.com/JohnnyMorganz/StyLua\n\nA deterministic code formatter for Lua 5.1, 5.2, 5.3, 5.4, LuaJIT, Luau and CfxLua/FiveM Lua\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('stylua')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"stylua\", \"--lsp\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"lua\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".stylua.toml\", \"stylua.toml\", \".editorconfig\" }\n  ```\n\n---\n\n## stylua3p_ls\n\nhttps://github.com/antonk52/lua-3p-language-servers\n\n3rd party Language Server for Stylua lua formatter\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('stylua3p_ls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"stylua-3p-language-server\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"lua\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".stylua.toml\", \"stylua.toml\" }\n  ```\n\n---\n\n## superhtml\n\nhttps://github.com/kristoff-it/superhtml\n\nHTML Language Server & Templating Language Library\n\nThis LSP is designed to tightly adhere to the HTML spec as well as enforcing\nsome additional rules that ensure HTML clarity.\n\nIf you want to disable HTML support for another HTML LSP, add the following\nto your configuration:\n\n```lua\nvim.lsp.config('superhtml', {\n  filetypes = { 'superhtml' }\n})\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('superhtml')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"superhtml\", \"lsp\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"superhtml\", \"html\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## svelte\n\nhttps://github.com/sveltejs/language-tools/tree/master/packages/language-server\n\nNote: assuming that [ts_ls](#ts_ls) is setup, full JavaScript/TypeScript support (find references, rename, etc of symbols in Svelte files when working in JS/TS files) requires per-project installation and configuration of [typescript-svelte-plugin](https://github.com/sveltejs/language-tools/tree/master/packages/typescript-plugin#usage).\n\n`svelte-language-server` can be installed via `npm`:\n```sh\nnpm install -g svelte-language-server\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('svelte')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"svelteserver\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"svelte\" }\n  ```\n- `on_attach`: [../lsp/svelte.lua:13](../lsp/svelte.lua#L13)\n- `root_dir`: [../lsp/svelte.lua:13](../lsp/svelte.lua#L13)\n- `settings` :\n  ```lua\n  {\n    typescript = {\n      inlayHints = {\n        enumMemberValues = {\n          enabled = true\n        },\n        functionLikeReturnTypes = {\n          enabled = true\n        },\n        parameterNames = {\n          enabled = \"literals\",\n          suppressWhenArgumentMatchesName = true\n        },\n        parameterTypes = {\n          enabled = true\n        },\n        propertyDeclarationTypes = {\n          enabled = true\n        },\n        variableTypes = {\n          enabled = true\n        }\n      }\n    }\n  }\n  ```\n\n---\n\n## svlangserver\n\nhttps://github.com/imc-trading/svlangserver\n\nLanguage server for SystemVerilog.\n\n`svlangserver` can be installed via `npm`:\n\n```sh\n$ npm install -g @imc-trading/svlangserver\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('svlangserver')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"svlangserver\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"verilog\", \"systemverilog\" }\n  ```\n- `on_attach`: [../lsp/svlangserver.lua:14](../lsp/svlangserver.lua#L14)\n- `root_markers` :\n  ```lua\n  { \".svlangserver\", \".git\" }\n  ```\n- `settings` :\n  ```lua\n  {\n    systemverilog = {\n      includeIndexing = { \"*.{v,vh,sv,svh}\", \"**/*.{v,vh,sv,svh}\" }\n    }\n  }\n  ```\n\n---\n\n## svls\n\nhttps://github.com/dalance/svls\n\nLanguage server for verilog and SystemVerilog\n\n`svls` can be installed via `cargo`:\n ```sh\n cargo install svls\n ```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('svls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"svls\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"verilog\", \"systemverilog\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## swift_mesonls\n\nhttps://github.com/JCWasmx86/Swift-MesonLSP\n\nMeson language server written in Swift\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('swift_mesonls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"Swift-MesonLSP\", \"--lsp\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"meson\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"meson.build\", \"meson_options.txt\", \"meson.options\", \".git\" }\n  ```\n\n---\n\n## syntax_tree\n\nhttps://ruby-syntax-tree.github.io/syntax_tree/\n\nA fast Ruby parser and formatter.\n\nSyntax Tree is a suite of tools built on top of the internal CRuby parser. It\nprovides the ability to generate a syntax tree from source, as well as the\ntools necessary to inspect and manipulate that syntax tree. It can be used to\nbuild formatters, linters, language servers, and more.\n\n```sh\ngem install syntax_tree\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('syntax_tree')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"stree\", \"lsp\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"ruby\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".streerc\", \"Gemfile\", \".git\" }\n  ```\n\n---\n\n## systemd_ls\n\nRenamed to [systemd_lsp](#systemd_lsp)\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('systemd_ls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"systemd-lsp\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"systemd\" }\n  ```\n- `name` :\n  ```lua\n  \"systemd_lsp\"\n  ```\n- `on_init`: [../lsp/systemd_ls.lua:6](../lsp/systemd_ls.lua#L6)\n\n---\n\n## systemd_lsp\n\nhttps://github.com/JFryy/systemd-lsp\n\nA Language Server Protocol (LSP) implementation for Systemd unit files,\nproviding editing support with syntax highlighting,\ndiagnostics, autocompletion, and documentation.\n\n`systemd-lsp` can be installed via `cargo`:\n```sh\ncargo install systemd-lsp\n```\n\nA language server implementation for Systemd unit files made in Rust.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('systemd_lsp')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"systemd-lsp\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"systemd\" }\n  ```\n\n---\n\n## tabby_ml\n\nhttps://tabby.tabbyml.com/blog/running-tabby-as-a-language-server\n\nLanguage server for Tabby, an opensource, self-hosted AI coding assistant.\n\n`tabby-agent` can be installed via `npm`:\n\n```sh\nnpm install --global tabby-agent\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('tabby_ml')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"tabby-agent\", \"--lsp\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  {}\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## tailwindcss\n\nhttps://github.com/tailwindlabs/tailwindcss-intellisense\n\nTailwind CSS Language Server can be installed via npm:\n\nnpm install -g @tailwindcss/language-server\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('tailwindcss')\n```\n\nDefault config:\n- `before_init`: [../lsp/tailwindcss.lua:10](../lsp/tailwindcss.lua#L10)\n- `capabilities` :\n  ```lua\n  {\n    workspace = {\n      didChangeWatchedFiles = {\n        dynamicRegistration = true\n      }\n    }\n  }\n  ```\n- `cmd` :\n  ```lua\n  { \"tailwindcss-language-server\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"aspnetcorerazor\", \"astro\", \"astro-markdown\", \"blade\", \"clojure\", \"django-html\", \"htmldjango\", \"edge\", \"eelixir\", \"elixir\", \"ejs\", \"erb\", \"eruby\", \"gohtml\", \"gohtmltmpl\", \"haml\", \"handlebars\", \"hbs\", \"html\", \"htmlangular\", \"html-eex\", \"heex\", \"jade\", \"leaf\", \"liquid\", \"markdown\", \"mdx\", \"mustache\", \"njk\", \"nunjucks\", \"php\", \"razor\", \"slim\", \"twig\", \"css\", \"less\", \"postcss\", \"sass\", \"scss\", \"stylus\", \"sugarss\", \"javascript\", \"javascriptreact\", \"reason\", \"rescript\", \"typescript\", \"typescriptreact\", \"vue\", \"svelte\", \"templ\" }\n  ```\n- `root_dir`: [../lsp/tailwindcss.lua:10](../lsp/tailwindcss.lua#L10)\n- `settings` :\n  ```lua\n  {\n    tailwindCSS = {\n      classAttributes = { \"class\", \"className\", \"class:list\", \"classList\", \"ngClass\" },\n      includeLanguages = {\n        eelixir = \"html-eex\",\n        elixir = \"phoenix-heex\",\n        eruby = \"erb\",\n        heex = \"phoenix-heex\",\n        htmlangular = \"html\",\n        templ = \"html\"\n      },\n      lint = {\n        cssConflict = \"warning\",\n        invalidApply = \"error\",\n        invalidConfigPath = \"error\",\n        invalidScreen = \"error\",\n        invalidTailwindDirective = \"error\",\n        invalidVariant = \"error\",\n        recommendedVariantOrder = \"warning\"\n      },\n      validate = true\n    }\n  }\n  ```\n- `workspace_required` : `true`\n\n---\n\n## taplo\n\nhttps://taplo.tamasfe.dev/cli/usage/language-server.html\n\nLanguage server for Taplo, a TOML toolkit.\n\n`taplo-cli` can be installed via `cargo`:\n```sh\ncargo install --features lsp --locked taplo-cli\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('taplo')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"taplo\", \"lsp\", \"stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"toml\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".taplo.toml\", \"taplo.toml\", \".git\" }\n  ```\n\n---\n\n## tblgen_lsp_server\n\nhttps://mlir.llvm.org/docs/Tools/MLIRLSP/#tablegen-lsp-language-server--tblgen-lsp-server\n\nThe Language Server for the LLVM TableGen language\n\n`tblgen-lsp-server` can be installed at the llvm-project repository (https://github.com/llvm/llvm-project)\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('tblgen_lsp_server')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"tblgen-lsp-server\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"tablegen\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"tablegen_compile_commands.yml\", \".git\" }\n  ```\n\n---\n\n## tclsp\n\nhttps://github.com/nmoroze/tclint\n\n`tclsp`, a language server for Tcl\n\n`tclsp` can be installed via `pipx`:\n```sh\npipx install tclint\n```\n\nOr via `pip`:\n```sh\npip install tclint\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('tclsp')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"tclsp\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"tcl\", \"sdc\", \"xdc\", \"upf\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"tclint.toml\", \".tclint\", \"pyproject.toml\", \".git\" }\n  ```\n\n---\n\n## teal_ls\n\nhttps://github.com/teal-language/teal-language-server\n\nInstall with:\n```\nluarocks install teal-language-server\n```\n\nOptional Command Args:\n* \"--log-mode=by_date\" - Enable logging in $HOME/.cache/teal-language-server. Log name will be date + pid of process\n* \"--log-mode=by_proj_path\" - Enable logging in $HOME/.cache/teal-language-server. Log name will be project path + pid of process\n* \"--verbose=true\" - Increases log level.  Does nothing unless log-mode is set\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('teal_ls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"teal-language-server\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"teal\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"tlconfig.lua\" }\n  ```\n\n---\n\n## templ\n\nhttps://templ.guide\n\nThe official language server for the templ HTML templating language.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('templ')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"templ\", \"lsp\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"templ\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"go.work\", \"go.mod\", \".git\" }\n  ```\n\n---\n\n## termux_language_server\n\nhttps://github.com/termux/termux-language-server\n\nLanguage server for various bash scripts such as Arch PKGBUILD, Gentoo ebuild, Termux build.sh, etc.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('termux_language_server')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"termux-language-server\" }\n  ```\n- `root_dir`: [../lsp/termux_language_server.lua:10](../lsp/termux_language_server.lua#L10)\n\n---\n\n## terraform_lsp\n\nhttps://github.com/juliosueiras/terraform-lsp\n\nTerraform language server\nDownload a released binary from\nhttps://github.com/juliosueiras/terraform-lsp/releases.\n\nFrom https://github.com/hashicorp/terraform-ls#terraform-ls-vs-terraform-lsp:\n\nBoth HashiCorp and the maintainer of terraform-lsp expressed interest in\ncollaborating on a language server and are working towards a _long-term_\ngoal of a single stable and feature-complete implementation.\n\nFor the time being both projects continue to exist, giving users the\nchoice:\n\n- `terraform-ls` providing\n  - overall stability (by relying only on public APIs)\n  - compatibility with any provider and any Terraform >=0.12.0 currently\n    less features\n  - due to project being younger and relying on public APIs which may\n    not offer the same functionality yet\n\n- `terraform-lsp` providing\n  - currently more features\n  - compatibility with a single particular Terraform (0.12.20 at time of writing)\n    - configs designed for other 0.12 versions may work, but interpretation may be inaccurate\n  - less stability (due to reliance on Terraform's own internal packages)\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('terraform_lsp')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"terraform-lsp\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"terraform\", \"hcl\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".terraform\", \".git\" }\n  ```\n\n---\n\n## terraformls\n\nhttps://github.com/hashicorp/terraform-ls\n\nTerraform language server\nDownload a released binary from https://github.com/hashicorp/terraform-ls/releases.\n\nFrom https://github.com/hashicorp/terraform-ls#terraform-ls-vs-terraform-lsp:\n\nBoth HashiCorp and the maintainer of terraform-lsp expressed interest in\ncollaborating on a language server and are working towards a _long-term_\ngoal of a single stable and feature-complete implementation.\n\nFor the time being both projects continue to exist, giving users the\nchoice:\n\n- `terraform-ls` providing\n  - overall stability (by relying only on public APIs)\n  - compatibility with any provider and any Terraform >=0.12.0 currently\n    less features\n  - due to project being younger and relying on public APIs which may\n    not offer the same functionality yet\n\n- `terraform-lsp` providing\n  - currently more features\n  - compatibility with a single particular Terraform (0.12.20 at time of writing)\n    - configs designed for other 0.12 versions may work, but interpretation may be inaccurate\n  - less stability (due to reliance on Terraform's own internal packages)\n\nNote, that the `settings` configuration option uses the `workspace/didChangeConfiguration` event,\n[which is not supported by terraform-ls](https://github.com/hashicorp/terraform-ls/blob/main/docs/features.md).\nInstead you should use `init_options` which passes the settings as part of the LSP initialize call\n[as is required by terraform-ls](https://github.com/hashicorp/terraform-ls/blob/main/docs/SETTINGS.md#how-to-pass-settings).\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('terraformls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"terraform-ls\", \"serve\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"terraform\", \"terraform-vars\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".terraform\", \".git\" }\n  ```\n\n---\n\n## texlab\n\nhttps://github.com/latex-lsp/texlab\n\nA completion engine built from scratch for (La)TeX.\n\nSee https://github.com/latex-lsp/texlab/wiki/Configuration for configuration options.\n\nThere are some non standard commands supported, namely:\n`LspTexlabBuild`, `LspTexlabForward`, `LspTexlabCancelBuild`,\n`LspTexlabDependencyGraph`, `LspTexlabCleanArtifacts`,\n`LspTexlabCleanAuxiliary`, `LspTexlabFindEnvironments`,\nand `LspTexlabChangeEnvironment`.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('texlab')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"texlab\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"tex\", \"plaintex\", \"bib\" }\n  ```\n- `on_attach`: [../lsp/texlab.lua:134](../lsp/texlab.lua#L134)\n- `root_markers` :\n  ```lua\n  { \".git\", \".latexmkrc\", \"latexmkrc\", \".texlabroot\", \"texlabroot\", \"Tectonic.toml\" }\n  ```\n- `settings` :\n  ```lua\n  {\n    texlab = {\n      bibtexFormatter = \"texlab\",\n      build = {\n        args = { \"-pdf\", \"-interaction=nonstopmode\", \"-synctex=1\", \"%f\" },\n        executable = \"latexmk\",\n        forwardSearchAfter = false,\n        onSave = false\n      },\n      chktex = {\n        onEdit = false,\n        onOpenAndSave = false\n      },\n      diagnosticsDelay = 300,\n      formatterLineLength = 80,\n      forwardSearch = {\n        args = {}\n      },\n      latexFormatter = \"latexindent\",\n      latexindent = {\n        modifyLineBreaks = false\n      }\n    }\n  }\n  ```\n\n---\n\n## textlsp\n\nhttps://github.com/hangyav/textLSP\n\n`textLSP` is an LSP server for text spell and grammar checking with various AI tools.\nIt supports multiple text file formats, such as LaTeX, Org or txt.\n\nFor the available text analyzer tools and their configuration, see the [GitHub](https://github.com/hangyav/textLSP) page.\nBy default, all analyzers are disabled in textLSP, since most of them need special settings.\nFor quick testing, LanguageTool is enabled in the default `nvim-lspconfig` configuration.\n\nTo install run: `pip install textLSP`\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('textlsp')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"textlsp\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"text\", \"tex\", \"org\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n- `settings` :\n  ```lua\n  {\n    textLSP = {\n      analysers = {\n        languagetool = {\n          check_text = {\n            on_change = false,\n            on_open = true,\n            on_save = true\n          },\n          enabled = true\n        }\n      },\n      documents = {\n        org = {\n          org_todo_keywords = { \"TODO\", \"IN_PROGRESS\", \"DONE\" }\n        }\n      }\n    }\n  }\n  ```\n\n---\n\n## tflint\n\nhttps://github.com/terraform-linters/tflint\n\nA pluggable Terraform linter that can act as lsp server.\nInstallation instructions can be found in https://github.com/terraform-linters/tflint#installation.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('tflint')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"tflint\", \"--langserver\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"terraform\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".terraform\", \".git\", \".tflint.hcl\" }\n  ```\n\n---\n\n## theme_check\n\nhttps://github.com/Shopify/shopify-cli\n\n`theme-check-language-server` is bundled with `shopify-cli` or it can also be installed via\n\nhttps://github.com/Shopify/theme-check#installation\n\n**NOTE:**\nIf installed via Homebrew, `cmd` must be set to 'theme-check-liquid-server'\n\n```lua\nvim.lsp.config('theme_check, {\n  cmd = { 'theme-check-liquid-server' }\n})\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('theme_check')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"theme-check-language-server\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"liquid\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".theme-check.yml\" }\n  ```\n- `settings` :\n  ```lua\n  {}\n  ```\n\n---\n\n## thriftls\n\nhttps://github.com/joyme123/thrift-ls\n\nyou can install thriftls by mason or download binary here: https://github.com/joyme123/thrift-ls/releases\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('thriftls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"thriftls\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"thrift\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".thrift\" }\n  ```\n\n---\n\n## tilt_ls\n\nhttps://github.com/tilt-dev/tilt\n\nTilt language server.\n\nYou might need to add filetype detection manually:\n\n```vim\nautocmd BufRead Tiltfile setf=tiltfile\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('tilt_ls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"tilt\", \"lsp\", \"start\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"tiltfile\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## tinymist\n\nhttps://github.com/Myriad-Dreamin/tinymist\nAn integrated language service for Typst [taɪpst]. You can also call it \"微霭\" [wēi ǎi] in Chinese.\n\nCurrently some of Tinymist's workspace commands are supported, namely:\n`LspTinymistExportSvg`, `LspTinymistExportPng`, `LspTinymistExportPdf`,\n`LspTinymistExportMarkdown`, `LspTinymistExportText`, `LspTinymistExportQuery`,\n`LspTinymistExportAnsiHighlight`, `LspTinymistGetServerInfo`,\n`LspTinymistGetDocumentTrace`, `LspTinymistGetWorkspaceLabels`,\n`LspTinymistGetDocumentMetrics`, and `LspTinymistPinMain`.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('tinymist')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"tinymist\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"typst\" }\n  ```\n- `on_attach`: [../lsp/tinymist.lua:45](../lsp/tinymist.lua#L45)\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## tofu_ls\n\n[OpenTofu Language Server](https://github.com/opentofu/tofu-ls)\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('tofu_ls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"tofu-ls\", \"serve\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"opentofu\", \"opentofu-vars\", \"terraform\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".terraform\", \".git\" }\n  ```\n\n---\n\n## tombi\n\nhttps://tombi-toml.github.io/tombi/\n\nLanguage server for Tombi, a TOML toolkit.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('tombi')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"tombi\", \"lsp\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"toml\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"tombi.toml\", \"pyproject.toml\", \".git\" }\n  ```\n\n---\n\n## ts_ls\n\nhttps://github.com/typescript-language-server/typescript-language-server\n\n`ts_ls`, aka `typescript-language-server`, is a Language Server Protocol implementation for TypeScript wrapping `tsserver`. Note that `ts_ls` is not `tsserver`.\n\n`typescript-language-server` depends on `typescript`. Both packages can be installed via `npm`:\n```sh\nnpm install -g typescript typescript-language-server\n```\n\nTo configure typescript language server, add a\n[`tsconfig.json`](https://www.typescriptlang.org/docs/handbook/tsconfig-json.html) or\n[`jsconfig.json`](https://code.visualstudio.com/docs/languages/jsconfig) to the root of your\nproject.\n\nHere's an example that disables type checking in JavaScript files.\n\n```json\n{\n  \"compilerOptions\": {\n    \"module\": \"commonjs\",\n    \"target\": \"es6\",\n    \"checkJs\": false\n  },\n  \"exclude\": [\n    \"node_modules\"\n  ]\n}\n```\n\nUse the `:LspTypescriptSourceAction` command to see \"whole file\" (\"source\") code-actions such as:\n- organize imports\n- remove unused code\n\nUse the `:LspTypescriptGoToSourceDefinition` command to navigate to the source definition of a symbol (e.g., jump to the original implementation instead of type definitions).\n\n### Monorepo support\n\n`ts_ls` supports monorepos by default. It will automatically find the `tsconfig.json` or `jsconfig.json` corresponding to the package you are working on.\nThis works without the need of spawning multiple instances of `ts_ls`, saving memory.\n\nIt is recommended to use the same version of TypeScript in all packages, and therefore have it available in your workspace root. The location of the TypeScript binary will be determined automatically, but only once.\n\nSome care must be taken here to correctly infer whether a file is part of a Deno program, or a TS program that\nexpects to run in Node or Web Browsers. This supports having a Deno module using the denols LSP as a part of a\nmostly-not-Deno monorepo. We do this by finding the nearest package manager lock file, and the nearest deno.json\nor deno.jsonc.\n\nExample:\n\n```\nproject-root\n+-- node_modules/...\n+-- package-lock.json\n+-- package.json\n+-- packages\n    +-- deno-module\n    |   +-- deno.json\n    |   +-- package.json <-- It's normal for Deno projects to have package.json files!\n    |   +-- src\n    |       +-- index.ts <-- this is a Deno file\n    +-- node-module\n        +-- package.json\n        +-- src\n            +-- index.ts <-- a non-Deno file (ie, should use ts_ls or tsgols)\n```\n\nFrom the file being edited, we walk up to find the nearest package manager lockfile. This is PROJECT ROOT.\nFrom the file being edited, find the nearest deno.json or deno.jsonc. This is DENO ROOT.\nFrom the file being edited, find the nearest deno.lock. This is DENO LOCK ROOT\nIf DENO LOCK ROOT is found, and PROJECT ROOT is missing or shorter, then this is a deno file, and we abort.\nIf DENO ROOT is found, and it's longer than or equal to PROJECT ROOT, then this is a Deno file, and we abort.\nOtherwise, attach at PROJECT ROOT, or the cwd if not found.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('ts_ls')\n```\n\nCommands:\n- editor.action.showReferences\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"typescript-language-server\", \"--stdio\" }\n  ```\n- `commands` :\n  ```lua\n  {\n    [\"editor.action.showReferences\"] = <function 1>\n  }\n  ```\n- `filetypes` :\n  ```lua\n  { \"javascript\", \"javascriptreact\", \"typescript\", \"typescriptreact\" }\n  ```\n- `handlers` :\n  ```lua\n  {\n    [\"_typescript.rename\"] = <function 1>\n  }\n  ```\n- `init_options` :\n  ```lua\n  {\n    hostInfo = \"neovim\"\n  }\n  ```\n- `on_attach`: [../lsp/ts_ls.lua:77](../lsp/ts_ls.lua#L77)\n- `root_dir`: [../lsp/ts_ls.lua:77](../lsp/ts_ls.lua#L77)\n\n---\n\n## ts_query_ls\n\nhttps://github.com/ribru17/ts_query_ls\nCan be configured by passing a \"settings\" object to `vim.lsp.config('ts_query_ls', {})`:\n```lua\nvim.lsp.config('ts_query_ls', {\n  init_options = {\n    parser_install_directories = {\n      '/my/parser/install/dir',\n    },\n    -- This setting is provided by default\n    parser_aliases = {\n      ecma = 'javascript',\n      jsx = 'javascript',\n      php_only = 'php',\n    },\n  },\n})\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('ts_query_ls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"ts_query_ls\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"query\" }\n  ```\n- `init_options` :\n  ```lua\n  {\n    parser_aliases = {\n      ecma = \"javascript\",\n      jsx = \"javascript\",\n      php_only = \"php\"\n    },\n    parser_install_directories = { \"/home/runner/.local/share/nvim/site/parser\" }\n  }\n  ```\n- `on_attach`: [../lsp/ts_query_ls.lua:26](../lsp/ts_query_ls.lua#L26)\n- `root_markers` :\n  ```lua\n  { \".tsqueryrc.json\", \".git\" }\n  ```\n\n---\n\n## tsgo\n\nhttps://github.com/microsoft/typescript-go\n\n`typescript-go` is experimental port of the TypeScript compiler (tsc) and language server (tsserver) to the Go programming language.\n\n`tsgo` can be installed via npm `npm install @typescript/native-preview`.\n\n### Monorepo support\n\n`tsgo` supports monorepos by default. It will automatically find the `tsconfig.json` or `jsconfig.json` corresponding to the package you are working on.\nThis works without the need of spawning multiple instances of `tsgo`, saving memory.\n\nIt is recommended to use the same version of TypeScript in all packages, and therefore have it available in your workspace root. The location of the TypeScript binary will be determined automatically, but only once.\n\nSome care must be taken here to correctly infer whether a file is part of a Deno program, or a TS program that\nexpects to run in Node or Web Browsers. This supports having a Deno module using the denols LSP as a part of a\nmostly-not-Deno monorepo. We do this by finding the nearest package manager lock file, and the nearest deno.json\nor deno.jsonc.\n\nExample:\n\n```\nproject-root\n+-- node_modules/...\n+-- package-lock.json\n+-- package.json\n+-- packages\n    +-- deno-module\n    |   +-- deno.json\n    |   +-- package.json <-- It's normal for Deno projects to have package.json files!\n    |   +-- src\n    |       +-- index.ts <-- this is a Deno file\n    +-- node-module\n        +-- package.json\n        +-- src\n            +-- index.ts <-- a non-Deno file (ie, should use ts_ls or tsgols)\n```\n\nFrom the file being edited, we walk up to find the nearest package manager lockfile. This is PROJECT ROOT.\nFrom the file being edited, find the nearest deno.json or deno.jsonc. This is DENO ROOT.\nFrom the file being edited, find the nearest deno.lock. This is DENO LOCK ROOT\nIf DENO LOCK ROOT is found, and PROJECT ROOT is missing or shorter, then this is a deno file, and we abort.\nIf DENO ROOT is found, and it's longer than or equal to PROJECT ROOT, then this is a Deno file, and we abort.\nOtherwise, attach at PROJECT ROOT, or the cwd if not found.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('tsgo')\n```\n\nDefault config:\n- `cmd`: [../lsp/tsgo.lua:48](../lsp/tsgo.lua#L48)\n- `filetypes` :\n  ```lua\n  { \"javascript\", \"javascriptreact\", \"typescript\", \"typescriptreact\" }\n  ```\n- `root_dir`: [../lsp/tsgo.lua:48](../lsp/tsgo.lua#L48)\n- `settings` :\n  ```lua\n  {\n    typescript = {\n      inlayHints = {\n        enumMemberValues = {\n          enabled = true\n        },\n        functionLikeReturnTypes = {\n          enabled = true\n        },\n        parameterNames = {\n          enabled = \"literals\",\n          suppressWhenArgumentMatchesName = true\n        },\n        parameterTypes = {\n          enabled = true\n        },\n        propertyDeclarationTypes = {\n          enabled = true\n        },\n        variableTypes = {\n          enabled = true\n        }\n      }\n    }\n  }\n  ```\n\n---\n\n## tsp_server\n\nhttps://github.com/microsoft/typespec\n\nThe language server for TypeSpec, a language for defining cloud service APIs and shapes.\n\n`tsp-server` can be installed together with the typespec compiler via `npm`:\n```sh\nnpm install -g @typespec/compiler\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('tsp_server')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"tsp-server\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"typespec\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"tspconfig.yaml\", \".git\" }\n  ```\n\n---\n\n## ttags\n\nhttps://github.com/npezza93/ttags\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('ttags')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"ttags\", \"lsp\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"ruby\", \"rust\", \"javascript\", \"haskell\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## turbo_ls\n\nhttps://www.npmjs.com/package/turbo-language-server\n\n`turbo-language-server` can be installed via `npm`:\n\n```sh\nnpm install -g turbo-language-server\n```\n\nor via `yarn`:\n\n```sh\nyarn global add turbo-language-server\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('turbo_ls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"turbo-language-server\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"html\", \"ruby\", \"eruby\", \"blade\", \"php\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"Gemfile\", \".git\" }\n  ```\n\n---\n\n## turtle_ls\n\nhttps://github.com/stardog-union/stardog-language-servers/tree/master/packages/turtle-language-server\n`turtle-language-server`, An editor-agnostic server providing language intelligence (diagnostics, hover tooltips, etc.) for the W3C standard Turtle RDF syntax via the Language Server Protocol.\ninstallable via npm install -g turtle-language-server or yarn global add turtle-language-server.\nrequires node.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('turtle_ls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"node\",\n    [3] = \"--stdio\"\n  }\n  ```\n- `filetypes` :\n  ```lua\n  { \"turtle\", \"ttl\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## tvm_ffi_navigator\n\nhttps://github.com/tqchen/ffi-navigator\n\nThe Language Server for FFI calls in TVM to be able jump between python and C++\n\nFFI navigator can be installed with `pip install ffi-navigator`, buf for more details, please see\nhttps://github.com/tqchen/ffi-navigator?tab=readme-ov-file#installation\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('tvm_ffi_navigator')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"python\", \"-m\", \"ffi_navigator.langserver\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"python\", \"cpp\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"pyproject.toml\", \".git\" }\n  ```\n\n---\n\n## twiggy_language_server\n\nhttps://github.com/moetelo/twiggy\n\n`twiggy-language-server` can be installed via `npm`:\n```sh\nnpm install -g twiggy-language-server\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('twiggy_language_server')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"twiggy-language-server\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"twig\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"composer.json\", \".git\" }\n  ```\n\n---\n\n## ty\n\nhttps://github.com/astral-sh/ty\n\nA Language Server Protocol implementation for ty, an extremely fast Python type checker and language server, written in Rust.\n\nFor installation instructions, please refer to the [ty documentation](https://github.com/astral-sh/ty/blob/main/README.md#getting-started).\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('ty')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"ty\", \"server\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"python\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"ty.toml\", \"pyproject.toml\", \"setup.py\", \"setup.cfg\", \"requirements.txt\", \".git\" }\n  ```\n\n---\n\n## typeprof\n\nhttps://github.com/ruby/typeprof\n\n`typeprof` is the built-in analysis and LSP tool for Ruby 3.1+.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('typeprof')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"typeprof\", \"--lsp\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"ruby\", \"eruby\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"Gemfile\", \".git\" }\n  ```\n\n---\n\n## typos_lsp\n\nhttps://github.com/crate-ci/typos\nhttps://github.com/tekumara/typos-lsp\n\nA Language Server Protocol implementation for Typos, a low false-positive\nsource code spell checker, written in Rust. Download it from the releases page\non GitHub: https://github.com/tekumara/typos-lsp/releases\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('typos_lsp')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"typos-lsp\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"typos.toml\", \"_typos.toml\", \".typos.toml\", \"pyproject.toml\", \"Cargo.toml\" }\n  ```\n- `settings` :\n  ```lua\n  {}\n  ```\n\n---\n\n## typst_lsp\n\nhttps://github.com/nvarner/typst-lsp\n\nLanguage server for Typst.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('typst_lsp')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"typst-lsp\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"typst\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## uiua\n\nhttps://github.com/uiua-lang/uiua/\n\nThe builtin language server of the Uiua interpreter.\n\nThe Uiua interpreter can be installed with `cargo install uiua`\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('uiua')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"uiua\", \"lsp\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"uiua\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"main.ua\", \".fmt.ua\", \".git\" }\n  ```\n\n---\n\n## ungrammar_languageserver\n\nhttps://github.com/binhtran432k/ungrammar-language-features\nLanguage Server for Ungrammar.\n\nUngrammar Language Server can be installed via npm:\n```sh\nnpm i ungrammar-languageserver -g\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('ungrammar_languageserver')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"ungrammar-languageserver\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"ungrammar\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n- `settings` :\n  ```lua\n  {\n    ungrammar = {\n      format = {\n        enable = true\n      },\n      validate = {\n        enable = true\n      }\n    }\n  }\n  ```\n\n---\n\n## unison\n\nhttps://github.com/unisonweb/unison/blob/trunk/docs/language-server.markdown\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('unison')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"nc\", \"localhost\", \"5757\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"unison\" }\n  ```\n- `root_dir`: [../lsp/unison.lua:8](../lsp/unison.lua#L8)\n- `settings` :\n  ```lua\n  {}\n  ```\n\n---\n\n## unocss\n\nhttps://github.com/xna00/unocss-language-server\n\nUnoCSS Language Server can be installed via npm:\n```sh\nnpm i unocss-language-server -g\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('unocss')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"unocss-language-server\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"erb\", \"haml\", \"hbs\", \"html\", \"css\", \"postcss\", \"javascript\", \"javascriptreact\", \"markdown\", \"ejs\", \"php\", \"svelte\", \"typescript\", \"typescriptreact\", \"vue-html\", \"vue\", \"sass\", \"scss\", \"less\", \"stylus\", \"astro\", \"rescript\", \"rust\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"unocss.config.js\", \"unocss.config.ts\", \"uno.config.js\", \"uno.config.ts\" }\n  ```\n- `workspace_required` : `true`\n\n---\n\n## uvls\n\nhttps://codeberg.org/caradhras/uvls\nLanguage server for UVL, written using tree sitter and rust.\nYou can install the server easily using cargo:\n```sh\ngit clone https://codeberg.org/caradhras/uvls\ncd  uvls\ncargo install --path .\n```\n\nNote: To activate properly nvim needs to know the uvl filetype.\nYou can add it via:\n```lua\nvim.cmd([[au BufRead,BufNewFile *.uvl setfiletype uvl]])\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('uvls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"uvls\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"uvl\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## v_analyzer\n\nhttps://github.com/vlang/v-analyzer\n\nV language server.\n\n`v-analyzer` can be installed by following the instructions [here](https://github.com/vlang/v-analyzer#installation).\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('v_analyzer')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"v-analyzer\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"v\", \"vsh\", \"vv\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"v.mod\", \".git\" }\n  ```\n\n---\n\n## vacuum\n\nVacuum is the worlds fastest OpenAPI 3, OpenAPI 2 / Swagger linter and quality analysis tool.\n\n You can install vacuum using mason or follow the instructions here: https://github.com/daveshanley/vacuum\n\n The file types are not detected automatically, you can register them manually (see below) or override the filetypes:\n\n ```lua\n vim.filetype.add {\n   pattern = {\n     ['openapi.*%.ya?ml'] = 'yaml.openapi',\n     ['openapi.*%.json'] = 'json.openapi',\n   },\n }\n ```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('vacuum')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"vacuum\", \"language-server\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"yaml.openapi\", \"json.openapi\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## vala_ls\n\nhttps://github.com/vala-lang/vala-language-server\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('vala_ls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"vala-language-server\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"vala\", \"genie\" }\n  ```\n- `root_dir`: [../lsp/vala_ls.lua:27](../lsp/vala_ls.lua#L27)\n\n---\n\n## vale_ls\n\nhttps://github.com/errata-ai/vale-ls\n\nAn implementation of the Language Server Protocol (LSP) for the Vale command-line tool.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('vale_ls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"vale-ls\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"asciidoc\", \"markdown\", \"text\", \"tex\", \"rst\", \"html\", \"xml\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".vale.ini\" }\n  ```\n\n---\n\n## vectorcode_server\n\nhttps://github.com/Davidyz/VectorCode\n\nA Language Server Protocol implementation for VectorCode, a code repository indexing tool.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('vectorcode_server')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"vectorcode-server\" }\n  ```\n- `root_dir`: [../lsp/vectorcode_server.lua:7](../lsp/vectorcode_server.lua#L7)\n- `settings` :\n  ```lua\n  {}\n  ```\n\n---\n\n## verible\n\nhttps://github.com/chipsalliance/verible\n\nA linter and formatter for verilog and SystemVerilog files.\n\nRelease binaries can be downloaded from [here](https://github.com/chipsalliance/verible/releases)\nand placed in a directory on PATH.\n\nSee https://github.com/chipsalliance/verible/tree/master/verilog/tools/ls/README.md for options.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('verible')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"verible-verilog-ls\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"systemverilog\", \"verilog\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## veridian\n\nhttps://github.com/vivekmalneedi/veridian\n\nA SystemVerilog LanguageServer.\n\nDownload the latest release for your OS from the releases page\n\nInstall with slang feature, if C++17 compiler is available:\n```\ncargo install --git https://github.com/vivekmalneedi/veridian.git --all-features\n```\n\nInstall if C++17 compiler is not available:\n```\ncargo install --git https://github.com/vivekmalneedi/veridian.git\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('veridian')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"veridian\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"systemverilog\", \"verilog\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## veryl_ls\n\nhttps://github.com/veryl-lang/veryl\n\nLanguage server for Veryl\n\n`veryl-ls` can be installed via `cargo`:\n ```sh\n cargo install veryl-ls\n ```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('veryl_ls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"veryl-ls\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"veryl\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## vespa_ls\n\nhttps://github.com/vespa-engine/vespa/tree/master/integration/schema-language-server\n\nVespa Language Server provides LSP features such as completion, diagnostics,\nand go-to-definition for Vespa schema files (`.sd`), profile files (`.profile`),\nand YQL query files (`.yql`).\n\nThis language server requires Java 17 or higher. You can build the jar from source.\n\nYou can override the default command by manually configuring it like this:\n\n```lua\nvim.lsp.config('vespa_ls', {\n  cmd = { 'java', '-jar', '/path/to/vespa-language-server.jar' },\n})\n```\n\nThe project root is determined based on the presence of a `.git` directory.\n\nTo make Neovim recognize the proper filetypes, add the following setting in `init.lua`:\n\n    vim.filetype.add {\n      extension = {\n        profile = 'sd',\n        sd = 'sd',\n        yql = 'yql',\n      },\n    }\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('vespa_ls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"java\", \"-jar\", \"vespa-language-server.jar\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"sd\", \"profile\", \"yql\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## vhdl_ls\n\nInstall vhdl_ls from https://github.com/VHDL-LS/rust_hdl and add it to path\n\nConfiguration\n\nThe language server needs to know your library mapping to perform full analysis of the code. For this it uses a configuration file in the TOML format named vhdl_ls.toml.\n\nvhdl_ls will load configuration files in the following order of priority (first to last):\n\n    A file named .vhdl_ls.toml in the user home folder.\n    A file name from the VHDL_LS_CONFIG environment variable.\n    A file named vhdl_ls.toml in the workspace root.\n\nSettings in a later files overwrites those from previously loaded files.\n\nExample vhdl_ls.toml\n```\n# File names are either absolute or relative to the parent folder of the vhdl_ls.toml file\n[libraries]\nlib2.files = [\n  'pkg2.vhd',\n]\nlib1.files = [\n  'pkg1.vhd',\n  'tb_ent.vhd'\n]\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('vhdl_ls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"vhdl_ls\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"vhd\", \"vhdl\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"vhdl_ls.toml\", \".vhdl_ls.toml\" }\n  ```\n\n---\n\n## vimls\n\nhttps://github.com/iamcco/vim-language-server\n\nYou can install vim-language-server via npm:\n```sh\nnpm install -g vim-language-server\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('vimls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"vim-language-server\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"vim\" }\n  ```\n- `init_options` :\n  ```lua\n  {\n    diagnostic = {\n      enable = true\n    },\n    indexes = {\n      count = 3,\n      gap = 100,\n      projectRootPatterns = { \"runtime\", \"nvim\", \".git\", \"autoload\", \"plugin\" },\n      runtimepath = true\n    },\n    isNeovim = true,\n    iskeyword = \"@,48-57,_,192-255,-#\",\n    runtimepath = \"\",\n    suggest = {\n      fromRuntimepath = true,\n      fromVimruntime = true\n    },\n    vimruntime = \"\"\n  }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## visualforce_ls\n\nhttps://github.com/forcedotcom/salesforcedx-vscode\n\nLanguage server for Visualforce.\n\nFor manual installation, download the .vsix archive file from the\n[forcedotcom/salesforcedx-vscode](https://github.com/forcedotcom/salesforcedx-vscode)\nGitHub releases. Then, configure `cmd` to run the Node script at the unpacked location:\n\n```lua\nvim.lsp.config('visualforce_ls', {\n  cmd = {\n    'node',\n    '/path/to/unpacked/archive/extension/node_modules/@salesforce/salesforcedx-visualforce-language-server/out/src/visualforceServer.js',\n    '--stdio'\n  }\n})\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('visualforce_ls')\n```\n\nDefault config:\n- `filetypes` :\n  ```lua\n  { \"visualforce\" }\n  ```\n- `init_options` :\n  ```lua\n  {\n    embeddedLanguages = {\n      css = true,\n      javascript = true\n    }\n  }\n  ```\n- `root_markers` :\n  ```lua\n  { \"sfdx-project.json\" }\n  ```\n\n---\n\n## vls\n\nhttps://github.com/vlang/vls\n\nV language server.\n\n`v-language-server` can be installed by following the instructions [here](https://github.com/vlang/vls#installation).\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('vls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"v\", \"ls\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"v\", \"vlang\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"v.mod\", \".git\" }\n  ```\n\n---\n\n## volar\n\nRenamed to [vue_ls](#vue_ls)\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('volar')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"vue-language-server\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"vue\" }\n  ```\n- `name` :\n  ```lua\n  \"vue_ls\"\n  ```\n- `on_init`: [../lsp/volar.lua:6](../lsp/volar.lua#L6)\n- `root_markers` :\n  ```lua\n  { \"package.json\" }\n  ```\n\n---\n\n## vscoqtop\n\nRenamed to [vsrocq](#vsrocq)\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('vscoqtop')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"vsrocqtop\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"coq\" }\n  ```\n- `name` :\n  ```lua\n  \"vsrocq\"\n  ```\n- `on_init`: [../lsp/vscoqtop.lua:6](../lsp/vscoqtop.lua#L6)\n- `root_markers` :\n  ```lua\n  { \"_RocqProject\", \"_CoqProject\", \".git\" }\n  ```\n\n---\n\n## vsrocq\n\nhttps://github.com/rocq-prover/vsrocq\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('vsrocq')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"vsrocqtop\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"coq\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"_RocqProject\", \"_CoqProject\", \".git\" }\n  ```\n\n---\n\n## vtsls\n\nhttps://github.com/yioneko/vtsls\n\n`vtsls` can be installed with npm:\n```sh\nnpm install -g @vtsls/language-server\n```\n\nTo configure a TypeScript project, add a\n[`tsconfig.json`](https://www.typescriptlang.org/docs/handbook/tsconfig-json.html)\nor [`jsconfig.json`](https://code.visualstudio.com/docs/languages/jsconfig) to\nthe root of your project.\n\n### Vue support\n\nSince v3.0.0, the Vue language server requires `vtsls` to support TypeScript.\n\n```\n-- If you are using mason.nvim, you can get the ts_plugin_path like this\n-- For Mason v1,\n-- local mason_registry = require('mason-registry')\n-- local vue_language_server_path = mason_registry.get_package('vue-language-server'):get_install_path() .. '/node_modules/@vue/language-server'\n-- For Mason v2,\n-- local vue_language_server_path = vim.fn.expand '$MASON/packages' .. '/vue-language-server' .. '/node_modules/@vue/language-server'\n-- or even\n-- local vue_language_server_path = vim.fn.stdpath('data') .. \"/mason/packages/vue-language-server/node_modules/@vue/language-server\"\nlocal vue_language_server_path = '/path/to/@vue/language-server'\nlocal vue_plugin = {\n  name = '@vue/typescript-plugin',\n  location = vue_language_server_path,\n  languages = { 'vue' },\n  configNamespace = 'typescript',\n}\nvim.lsp.config('vtsls', {\n  settings = {\n    vtsls = {\n      tsserver = {\n        globalPlugins = {\n          vue_plugin,\n        },\n      },\n    },\n  },\n  filetypes = { 'typescript', 'javascript', 'javascriptreact', 'typescriptreact', 'vue' },\n})\n```\n\n- `location` MUST be defined. If the plugin is installed in `node_modules`, `location` can have any value.\n- `languages` must include vue even if it is listed in filetypes.\n- `filetypes` is extended here to include Vue SFC.\n\nYou must make sure the Vue language server is setup. For example,\n\n```\nvim.lsp.enable('vue_ls')\n```\n\nSee `vue_ls` section and https://github.com/vuejs/language-tools/wiki/Neovim for more information.\n\n### Monorepo support\n\n`vtsls` supports monorepos by default. It will automatically find the `tsconfig.json` or `jsconfig.json` corresponding to the package you are working on.\nThis works without the need of spawning multiple instances of `vtsls`, saving memory.\n\nIt is recommended to use the same version of TypeScript in all packages, and therefore have it available in your workspace root. The location of the TypeScript binary will be determined automatically, but only once.\n\nThis includes the same Deno-excluding logic from `ts_ls`. It is not recommended to enable both `vtsls` and `ts_ls` at the same time!\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('vtsls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"vtsls\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"javascript\", \"javascriptreact\", \"typescript\", \"typescriptreact\" }\n  ```\n- `init_options` :\n  ```lua\n  {\n    hostInfo = \"neovim\"\n  }\n  ```\n- `root_dir`: [../lsp/vtsls.lua:71](../lsp/vtsls.lua#L71)\n\n---\n\n## vue_ls\n\nhttps://github.com/vuejs/language-tools/tree/master/packages/language-server\n\nThe official language server for Vue\n\nIt can be installed via npm:\n```sh\nnpm install -g @vue/language-server\n```\n\nThe language server only supports Vue 3 projects by default.\nFor Vue 2 projects, [additional configuration](https://github.com/vuejs/language-tools/blob/master/extensions/vscode/README.md?plain=1#L19) are required.\n\nThe Vue language server works in \"hybrid mode\" that exclusively manages the CSS/HTML sections.\nYou need the `vtsls` server with the `@vue/typescript-plugin` plugin to support TypeScript in `.vue` files.\nSee `vtsls` section and https://github.com/vuejs/language-tools/wiki/Neovim for more information.\n\nNOTE: Since v3.0.0, the Vue Language Server [no longer supports takeover mode](https://github.com/vuejs/language-tools/pull/5248).\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('vue_ls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"vue-language-server\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"vue\" }\n  ```\n- `on_init`: [../lsp/vue_ls.lua:22](../lsp/vue_ls.lua#L22)\n- `root_markers` :\n  ```lua\n  { \"package.json\" }\n  ```\n\n---\n\n## wasm_language_tools\n\nhttps://github.com/g-plane/wasm-language-tools\n\nWebAssembly Language Tools aims to provide and improve the editing experience of WebAssembly Text Format.\nIt also provides an out-of-the-box formatter (a.k.a. pretty printer) for WebAssembly Text Format.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('wasm_language_tools')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"wat_server\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"wat\" }\n  ```\n\n---\n\n## wc_language_server\n\nhttps://github.com/wc-toolkit/wc-language-server\n\nWeb Components Language Server provides intelligent editor support for Web Components and custom elements.\nIt offers advanced HTML diagnostics, completion, and validation for custom elements, including support for\nattribute types, deprecation, and duplicate attribute detection.\n\nThe language server uses the [Custom Elements Manifest](https://github.com/webcomponents/custom-elements-manifest)\nto generate component integration and validation information\n\n`wc-language-server` can be installed by following the instructions at the [GitHub repository](https://github.com/wc-toolkit/wc-language-server/blob/main/packages/neovim/README.md).\n\nThe default `cmd` assumes that the `wc-language-server` binary can be found in `$PATH`.\n\nAlternatively, you can install it via [mason.nvim](https://github.com/williamboman/mason.nvim):\n```vim\n:MasonInstall wc-language-server\n```\n\n## Configuration\n\nThe language server reads settings from `wc.config.js` (or `.ts/.mjs/.cjs`) at the project root.\nUse it to customize manifest sources, file scoping, and diagnostic behavior.\n\nExample `wc.config.js`:\n```js\nexport default {\n  // Fetch manifest from a custom path or URL\n  manifestSrc: './dist/custom-elements.json',\n\n  // Narrow which files opt into the language server\n  include: ['src/**/*.ts', 'src/**/*.html'],\n\n  // Skip specific globs\n  exclude: ['**/*.stories.ts'],\n\n  // Per-library overrides\n  libraries: {\n    '@your/pkg': {\n      manifestSrc: 'https://cdn.example.com/custom-elements.json',\n      tagFormatter: (tag) => tag.replace(/^x-/, 'my-'),\n    },\n  },\n\n  // Customize diagnostic severity levels\n  diagnosticSeverity: {\n    duplicateAttribute: 'warning',\n    unknownElement: 'info',\n  },\n};\n```\n\nSee the [configuration documentation](https://github.com/wc-toolkit/wc-language-server#configuration) for more details.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('wc_language_server')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"wc-language-server\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"html\", \"javascriptreact\", \"typescriptreact\", \"astro\", \"svelte\", \"vue\", \"markdown\", \"mdx\", \"javascript\", \"typescript\", \"css\", \"scss\", \"less\" }\n  ```\n- `init_options` :\n  ```lua\n  {\n    hostInfo = \"neovim\"\n  }\n  ```\n- `root_markers` :\n  ```lua\n  { \"wc.config.js\", \"wc.config.ts\", \"wc.config.mjs\", \"wc.config.cjs\", \"custom-elements.json\", \"package.json\", \".git\" }\n  ```\n\n---\n\n## wgsl_analyzer\n\nhttps://github.com/wgsl-analyzer/wgsl-analyzer\n\n`wgsl-analyzer` can be installed via `cargo`:\n```sh\ncargo install --git https://github.com/wgsl-analyzer/wgsl-analyzer wgsl-analyzer\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('wgsl_analyzer')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"wgsl-analyzer\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"wgsl\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n- `settings` :\n  ```lua\n  {}\n  ```\n\n---\n\n## yamlls\n\nhttps://github.com/redhat-developer/yaml-language-server\n\n`yaml-language-server` can be installed via `yarn`:\n```sh\nyarn global add yaml-language-server\n```\n\nTo use a schema for validation, there are two options:\n\n1. Add a modeline to the file. A modeline is a comment of the form:\n\n```\n# yaml-language-server: $schema=<urlToTheSchema|relativeFilePath|absoluteFilePath}>\n```\n\nwhere the relative filepath is the path relative to the open yaml file, and the absolute filepath\nis the filepath relative to the filesystem root ('/' on unix systems)\n\n2. Associated a schema url, relative , or absolute (to root of project, not to filesystem root) path to\nthe a glob pattern relative to the detected project root. Check `:checkhealth vim.lsp` to determine the resolved project\nroot.\n\n```lua\nvim.lsp.config('yamlls', {\n  ...\n  settings = {\n    yaml = {\n      ... -- other settings. note this overrides the lspconfig defaults.\n      schemas = {\n        [\"https://json.schemastore.org/github-workflow.json\"] = \"/.github/workflows/*\",\n        [\"../path/relative/to/file.yml\"] = \"/.github/workflows/*\",\n        [\"/path/from/root/of/project\"] = \"/.github/workflows/*\",\n      },\n    },\n  }\n})\n```\n\nCurrently, kubernetes is special-cased in yammls, see the following upstream issues:\n* [#211](https://github.com/redhat-developer/yaml-language-server/issues/211).\n* [#307](https://github.com/redhat-developer/yaml-language-server/issues/307).\n\nTo override a schema to use a specific k8s schema version (for example, to use 1.18):\n\n```lua\nvim.lsp.config('yamlls', {\n  ...\n  settings = {\n    yaml = {\n      ... -- other settings. note this overrides the lspconfig defaults.\n      schemas = {\n        [\"https://raw.githubusercontent.com/yannh/kubernetes-json-schema/refs/heads/master/v1.32.1-standalone-strict/all.json\"] = \"/*.k8s.yaml\",\n        ... -- other schemas\n      },\n    },\n  }\n})\n```\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('yamlls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"yaml-language-server\", \"--stdio\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"yaml\", \"yaml.docker-compose\", \"yaml.gitlab\", \"yaml.helm-values\" }\n  ```\n- `on_init`: [../lsp/yamlls.lua:63](../lsp/yamlls.lua#L63)\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n- `settings` :\n  ```lua\n  {\n    redhat = {\n      telemetry = {\n        enabled = false\n      }\n    },\n    yaml = {\n      format = {\n        enable = true\n      }\n    }\n  }\n  ```\n\n---\n\n## yang_lsp\n\nhttps://github.com/TypeFox/yang-lsp\n\nA Language Server for the YANG data modeling language.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('yang_lsp')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"yang-language-server\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"yang\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## yls\n\nhttps://pypi.org/project/yls-yara/\n\nAn YLS plugin adding YARA linting capabilities.\n\nThis plugin runs yara.compile on every save, parses the errors, and returns list of diagnostic messages.\n\nLanguage Server: https://github.com/avast/yls\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('yls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"yls\", \"-vv\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"yar\", \"yara\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## ziggy\n\nhttps://ziggy-lang.io/documentation/ziggy-lsp/\n\nLanguage server for the Ziggy data serialization format\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('ziggy')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"ziggy\", \"lsp\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"ziggy\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## ziggy_schema\n\nhttps://ziggy-lang.io/documentation/ziggy-lsp/\n\nLanguage server for schema files of the Ziggy data serialization format\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('ziggy_schema')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"ziggy\", \"lsp\", \"--schema\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"ziggy_schema\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \".git\" }\n  ```\n\n---\n\n## zk\n\nhttps://github.com/zk-org/zk\n\nA plain text note-taking assistant\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('zk')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"zk\", \"lsp\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"markdown\" }\n  ```\n- `on_attach`: [../lsp/zk.lua:40](../lsp/zk.lua#L40)\n- `root_markers` :\n  ```lua\n  { \".zk\" }\n  ```\n- `workspace_required` : `true`\n\n---\n\n## zls\n\nhttps://github.com/zigtools/zls\n\nZig LSP implementation + Zig Language Server\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('zls')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"zls\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"zig\", \"zir\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"zls.json\", \"build.zig\", \".git\" }\n  ```\n- `workspace_required` : `false`\n\n---\n\n## zuban\n\nhttps://zubanls.com/\n\nA high-performance Python Language Server and type checker implemented in Rust, by the author of Jedi.\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('zuban')\n```\n\nDefault config:\n- `cmd` :\n  ```lua\n  { \"zuban\", \"server\" }\n  ```\n- `filetypes` :\n  ```lua\n  { \"python\" }\n  ```\n- `root_markers` :\n  ```lua\n  { \"pyproject.toml\", \"setup.py\", \"setup.cfg\", \"requirements.txt\", \"Pipfile\", \".git\" }\n  ```\n\n---\n\n"
  },
  {
    "path": "doc/configs.txt",
    "content": "*lspconfig-all*                     All configurations provided by |lspconfig|\n\nLSP configurations provided by nvim-lspconfig are listed below.\n\n                                      Type |gO| to see the table of contents.\n\n==============================================================================\nLSP configs\n\n------------------------------------------------------------------------------\nada_ls\n\nhttps://github.com/AdaCore/ada_language_server\n\nInstallation instructions can be found [here](https://github.com/AdaCore/ada_language_server#Install).\n\nWorkspace-specific [settings](https://github.com/AdaCore/ada_language_server/blob/master/doc/settings.md) such as `projectFile` can be provided in a `.als.json` file at the root of the workspace.\nAlternatively, configuration may be passed as a \"settings\" object to `vim.lsp.config('ada_ls', {})`:\n>lua\n  vim.lsp.config('ada_ls', {\n      settings = {\n        ada = {\n          projectFile = \"project.gpr\";\n          scenarioVariables = { ... };\n        }\n      }\n  })\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('ada_ls')\n\n\nDefault config:\n- cmd: >lua\n  { \"ada_language_server\" }\n- filetypes: >lua\n  { \"ada\" }\n- root_dir (use \"gF\" to view): ../lsp/ada_ls.lua:24\n<\n\n------------------------------------------------------------------------------\nagda_ls\n\nhttps://github.com/agda/agda-language-server\n\nLanguage Server for Agda.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('agda_ls')\n\n\nDefault config:\n- cmd: >lua\n  { \"als\" }\n- filetypes: >lua\n  { \"agda\" }\n- root_dir (use \"gF\" to view): ../lsp/agda_ls.lua:10\n<\n\n------------------------------------------------------------------------------\naiken\n\nhttps://github.com/aiken-lang/aiken\n\nA language server for Aiken Programming Language.\n[Installation](https://aiken-lang.org/installation-instructions)\n\nIt can be i\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('aiken')\n\n\nDefault config:\n- cmd: >lua\n  { \"aiken\", \"lsp\" }\n- filetypes: >lua\n  { \"aiken\" }\n- root_markers: >lua\n  { \"aiken.toml\", \".git\" }\n<\n\n------------------------------------------------------------------------------\nair\n\nhttps://github.com/posit-dev/air\n\nAir is an R formatter and language server, written in Rust.\n\nRefer to the [documentation](https://posit-dev.github.io/air/editors.html) for more details.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('air')\n\n\nDefault config:\n- cmd: >lua\n  { \"air\", \"language-server\" }\n- filetypes: >lua\n  { \"r\" }\n- root_markers: >lua\n  { \"air.toml\", \".air.toml\", \".git\" }\n<\n\n------------------------------------------------------------------------------\nalloy_ls\n\nhttps://github.com/AlloyTools/org.alloytools.alloy\n\nAlloy is a formal specification language for describing structures and a tool for exploring them.\n\nYou may also need to configure the filetype for Alloy (*.als) files:\n>\n  autocmd BufNewFile,BufRead *.als set filetype=alloy\n\nor\n>lua\n  vim.filetype.add({\n    pattern = {\n      ['.*/*.als'] = 'alloy',\n    },\n  })\n\nAlternatively, you may use a syntax plugin like https://github.com/runoshun/vim-alloy.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('alloy_ls')\n\n\nDefault config:\n- cmd: >lua\n  { \"alloy\", \"lsp\" }\n- filetypes: >lua\n  { \"alloy\" }\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\nanakin_language_server\n\nhttps://pypi.org/project/anakin-language-server/\n\n`anakin-language-server` is yet another Jedi Python language server.\n\nAvailable options:\n\n* Initialization: https://github.com/muffinmad/anakin-language-server#initialization-option\n* Configuration: https://github.com/muffinmad/anakin-language-server#configuration-options\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('anakin_language_server')\n\n\nDefault config:\n- cmd: >lua\n  { \"anakinls\" }\n- filetypes: >lua\n  { \"python\" }\n- root_markers: >lua\n  { \"pyproject.toml\", \"setup.py\", \"setup.cfg\", \"requirements.txt\", \"Pipfile\", \".git\" }\n- settings: >lua\n  {\n    anakinls = {\n      pyflakes_errors = { \"ImportStarNotPermitted\", \"UndefinedExport\", \"UndefinedLocal\", \"UndefinedName\", \"DuplicateArgument\", \"MultiValueRepeatedKeyLiteral\", \"MultiValueRepeatedKeyVariable\", \"FutureFeatureNotDefined\", \"LateFutureImport\", \"ReturnOutsideFunction\", \"YieldOutsideFunction\", \"ContinueOutsideLoop\", \"BreakOutsideLoop\", \"TwoStarredExpressions\", \"TooManyExpressionsInStarredAssignment\", \"ForwardAnnotationSyntaxError\", \"RaiseNotImplemented\", \"StringDotFormatExtraPositionalArguments\", \"StringDotFormatExtraNamedArguments\", \"StringDotFormatMissingArgument\", \"StringDotFormatMixingAutomatic\", \"StringDotFormatInvalidFormat\", \"PercentFormatInvalidFormat\", \"PercentFormatMixedPositionalAndNamed\", \"PercentFormatUnsupportedFormat\", \"PercentFormatPositionalCountMismatch\", \"PercentFormatExtraNamedArguments\", \"PercentFormatMissingArgument\", \"PercentFormatExpectedMapping\", \"PercentFormatExpectedSequence\", \"PercentFormatStarRequiresSequence\" }\n    }\n  }\n<\n\n------------------------------------------------------------------------------\nangularls\n\nhttps://github.com/angular/vscode-ng-language-service\n`angular-language-server` can be installed via npm `npm install -g @angular/language-server`.\n>lua\n  local project_library_path = \"/path/to/project/lib\"\n  local cmd = {\"ngserver\", \"--stdio\", \"--tsProbeLocations\", project_library_path , \"--ngProbeLocations\", project_library_path}\n\n  vim.lsp.config('angularls', {\n    cmd = cmd,\n  })\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('angularls')\n\n\nDefault config:\n- cmd (use \"gF\" to view): ../lsp/angularls.lua:93\n- filetypes: >lua\n  { \"typescript\", \"html\", \"typescriptreact\", \"htmlangular\" }\n- root_markers: >lua\n  { \"angular.json\", \"nx.json\" }\n<\n\n------------------------------------------------------------------------------\nansiblels\n\nhttps://github.com/ansible/vscode-ansible\n\nLanguage server for the ansible configuration management tool.\n\n`ansible-language-server` can be installed via `npm`:\n>sh\n  npm install -g @ansible/ansible-language-server\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('ansiblels')\n\n\nDefault config:\n- cmd: >lua\n  { \"ansible-language-server\", \"--stdio\" }\n- filetypes: >lua\n  { \"yaml.ansible\" }\n- root_markers: >lua\n  { \"ansible.cfg\", \".ansible-lint\" }\n- settings: >lua\n  {\n    ansible = {\n      ansible = {\n        path = \"ansible\"\n      },\n      executionEnvironment = {\n        enabled = false\n      },\n      python = {\n        interpreterPath = \"python\"\n      },\n      validation = {\n        enabled = true,\n        lint = {\n          enabled = true,\n          path = \"ansible-lint\"\n        }\n      }\n    }\n  }\n<\n\n------------------------------------------------------------------------------\nantlersls\n\nhttps://www.npmjs.com/package/antlers-language-server\n\n`antlersls` can be installed via `npm` >sh\n  npm install -g antlers-language-server\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('antlersls')\n\n\nDefault config:\n- cmd: >lua\n  { \"antlersls\", \"--stdio\" }\n- filetypes: >lua\n  { \"html\", \"antlers\" }\n- root_markers: >lua\n  { \"composer.json\" }\n<\n\n------------------------------------------------------------------------------\napex_ls\n\nhttps://github.com/forcedotcom/salesforcedx-vscode\n\n Language server for Apex.\n\n For manual installation, download the JAR file from the [VSCode\n extension](https://github.com/forcedotcom/salesforcedx-vscode/tree/develop/packages/salesforcedx-vscode-apex) and adjust the `apex_jar_path` appropriately.\n\n ```lua\n vim.lsp.config('apex_ls', {\n   apex_jar_path = '/path/to/apex-jorje-lsp.jar',\n   apex_enable_semantic_errors = false, -- Whether to allow Apex Language Server to surface semantic errors\n   apex_enable_completion_statistics = false, -- Whether to allow Apex Language Server to collect telemetry on code completion usage\n }\n```\n\n Example configuration using Mason:\n>lua\n   vim.lsp.config('apex_ls', {\n     apex_jar_path = vim.fn.stdpath('data') .. '/mason/share/apex-language-server/apex-jorje-lsp.jar',\n   }\n\n For a complete experience, you may need to ensure the treesitter parsers for 'apex' are installed (:TSInstall apex) as well as configure the filetype for apex (*.cls) files:\n\n ```lua\n vim.filetype.add({\n   pattern = {\n     ['.*/*.cls'] = 'apex',\n   },\n })\n ```\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('apex_ls')\n\n\nDefault config:\n- cmd (use \"gF\" to view): ../lsp/apex_ls.lua:37\n- filetypes: >lua\n  { \"apex\", \"apexcode\" }\n- root_markers: >lua\n  { \"sfdx-project.json\" }\n<\n\n------------------------------------------------------------------------------\narduino_language_server\n\nhttps://github.com/arduino/arduino-language-server\n\nLanguage server for Arduino\n\nThe `arduino-language-server` can be installed by running:\n>\n  go install github.com/arduino/arduino-language-server@latest\n\nThe `arduino-cli` tool must also be installed. Follow [these\ninstallation instructions](https://arduino.github.io/arduino-cli/latest/installation/) for\nyour platform.\n\nAfter installing `arduino-cli`, follow [these\ninstructions](https://arduino.github.io/arduino-cli/latest/getting-started/#create-a-configuration-file)\nfor generating a configuration file if you haven't done so already, and make\nsure you [install any relevant platforms\nlibraries](https://arduino.github.io/arduino-cli/latest/getting-started/#install-the-core-for-your-board).\n\nThe language server also requires `clangd` to be installed. Follow [these\ninstallation instructions](https://clangd.llvm.org/installation) for your\nplatform.\n\nIf you don't have a sketch yet create one.\n>sh\n  $ arduino-cli sketch new test\n  $ cd test\n\nYou will need a `sketch.yaml` file in order for the language server to understand your project. It will also save you passing options to `arduino-cli` each time you compile or upload a file. You can generate the file by using the following commands.\n\n\nFirst gather some information about your board. Make sure your board is connected and run the following:\n>sh\n  $ arduino-cli board list\n  Port         Protocol Type              Board Name  FQBN            Core\n  /dev/ttyACM0 serial   Serial Port (USB) Arduino Uno arduino:avr:uno arduino:avr\n\nThen generate the file:\n>sh\n  arduino-cli board attach -p /dev/ttyACM0 -b arduino:avr:uno test.ino\n\nThe resulting file should look like this:\n>yaml\n  default_fqbn: arduino:avr:uno\n  default_port: /dev/ttyACM0\n\nYour folder structure should look like this:\n>\n  .\n  ├── test.ino\n  └── sketch.yaml\n\nFor further instructions about configuration options, run `arduino-language-server --help`.\n\nNote that an upstream bug makes keywords in some cases become undefined by the language server.\nRef: https://github.com/arduino/arduino-ide/issues/159\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('arduino_language_server')\n\n\nDefault config:\n- capabilities: >lua\n  {\n    textDocument = {\n      semanticTokens = vim.NIL\n    },\n    workspace = {\n      semanticTokens = vim.NIL\n    }\n  }\n- cmd: >lua\n  { \"arduino-language-server\" }\n- filetypes: >lua\n  { \"arduino\" }\n- root_dir (use \"gF\" to view): ../lsp/arduino_language_server.lua:74\n<\n\n------------------------------------------------------------------------------\nasm_lsp\n\nhttps://github.com/bergercookie/asm-lsp\n\nLanguage Server for NASM/GAS/GO Assembly\n\n`asm-lsp` can be installed via cargo:\ncargo install asm-lsp\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('asm_lsp')\n\n\nDefault config:\n- cmd: >lua\n  { \"asm-lsp\" }\n- filetypes: >lua\n  { \"asm\", \"vmasm\" }\n- root_markers: >lua\n  { \".asm-lsp.toml\", \".git\" }\n<\n\n------------------------------------------------------------------------------\nast_grep\n\nhttps://ast-grep.github.io/\n\nast-grep(sg) is a fast and polyglot tool for code structural search, lint, rewriting at large scale.\nast-grep LSP only works in projects that have `sgconfig.y[a]ml` in their root directories >sh\n  npm install [-g] @ast-grep/cli\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('ast_grep')\n\n\nDefault config:\n- cmd: >lua\n  { \"ast-grep\", \"lsp\" }\n- filetypes: >lua\n  { \"bash\", \"c\", \"cpp\", \"cs\", \"css\", \"elixir\", \"go\", \"haskell\", \"html\", \"java\", \"javascript\", \"javascriptreact\", \"json\", \"kotlin\", \"lua\", \"nix\", \"php\", \"python\", \"ruby\", \"rust\", \"scala\", \"solidity\", \"swift\", \"typescript\", \"typescriptreact\", \"yaml\" }\n- reuse_client (use \"gF\" to view): ../lsp/ast_grep.lua:12\n- root_markers: >lua\n  { \"sgconfig.yaml\", \"sgconfig.yml\" }\n- `workspace_required` : `true`\n<\n\n------------------------------------------------------------------------------\nastro\n\nhttps://github.com/withastro/language-tools/tree/main/packages/language-server\n\n`astro-ls` can be installed via `npm` >sh\n  npm install -g @astrojs/language-server\n\nIf typescript is installed globally, you might get the `\\`typescript.tsdk\\` init option is required` error.\nYou will need to manually pass the typescript SDK path. Here is an example of a Nix configuration where typescript is installed via Nix's Home-manager:\n>nix\n  { config, pkgs, ... }:\n\n  {\n    home.packages = with pkgs; [\n      typescript\n    ];\n\n    programs.neovim = {\n      plugins = with pkgs.vimPlugins; [\n        nvim-lspconfig\n      ];\n      extraPackages = with pkgs; [\n        astro-language-server\n      ];\n      initLua = ''\n        vim.lsp.config['astro'] = {\n          init_options = {\n            typescript = {\n              tsdk = ${pkgs.typescript}/lib/node_modules/typescript/lib,\n            },\n          },\n        }\n\n        vim.lsp.enable('astro')\n\n        -- ...\n      '';\n    };\n  }\nThe path can also be passed via a variable, like `vim.g.tsdk = \"${pkgs.typescript}/lib/node_modules/typescript/lib\"` and then used in the Lua Neovim config.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('astro')\n\n\nDefault config:\n- before_init (use \"gF\" to view): ../lsp/astro.lua:49\n- cmd: >lua\n  { \"astro-ls\", \"--stdio\" }\n- filetypes: >lua\n  { \"astro\" }\n- init_options: >lua\n  {\n    typescript = {}\n  }\n- root_markers: >lua\n  { \"package.json\", \"tsconfig.json\", \"jsconfig.json\", \".git\" }\n<\n\n------------------------------------------------------------------------------\natlas\n\nhttps://github.com/ariga/atlas\n\nLanguage server for Atlas config and schema files.\n\nYou may also need to configure the filetype for *.hcl files:\n>vim\n  autocmd BufNewFile,BufRead atlas.hcl set filetype=atlas-config\n  autocmd BufNewFile,BufRead *.my.hcl set filetype=atlas-schema-mysql\n  autocmd BufNewFile,BufRead *.pg.hcl set filetype=atlas-schema-postgresql\n  autocmd BufNewFile,BufRead *.lt.hcl set filetype=atlas-schema-sqlite\n  autocmd BufNewFile,BufRead *.ch.hcl set filetype=atlas-schema-clickhouse\n  autocmd BufNewFile,BufRead *.ms.hcl set filetype=atlas-schema-mssql\n  autocmd BufNewFile,BufRead *.rs.hcl set filetype=atlas-schema-redshift\n  autocmd BufNewFile,BufRead *.test.hcl set filetype=atlas-test\n  autocmd BufNewFile,BufRead *.plan.hcl set filetype=atlas-plan\n  autocmd BufNewFile,BufRead *.rule.hcl set filetype=atlas-rule\n\nor\n>lua\n  vim.filetype.add({\n    filename = {\n      ['atlas.hcl'] = 'atlas-config',\n    },\n    pattern = {\n      ['.*/*.my.hcl'] = 'atlas-schema-mysql',\n      ['.*/*.pg.hcl'] = 'atlas-schema-postgresql',\n      ['.*/*.lt.hcl'] = 'atlas-schema-sqlite',\n      ['.*/*.ch.hcl'] = 'atlas-schema-clickhouse',\n      ['.*/*.ms.hcl'] = 'atlas-schema-mssql',\n      ['.*/*.rs.hcl'] = 'atlas-schema-redshift',\n      ['.*/*.test.hcl'] = 'atlas-test',\n      ['.*/*.plan.hcl'] = 'atlas-plan',\n      ['.*/*.rule.hcl'] = 'atlas-rule',\n    },\n  })\n\nOptionally, tell treesitter to treat Atlas filetypes as HCL for better syntax highlighting:\n>lua\n  vim.treesitter.language.register('hcl', 'atlas-config')\n  vim.treesitter.language.register('hcl', 'atlas-schema-mysql')\n  vim.treesitter.language.register('hcl', 'atlas-schema-postgresql')\n  vim.treesitter.language.register('hcl', 'atlas-schema-sqlite')\n  vim.treesitter.language.register('hcl', 'atlas-schema-clickhouse')\n  vim.treesitter.language.register('hcl', 'atlas-schema-mssql')\n  vim.treesitter.language.register('hcl', 'atlas-schema-redshift')\n  vim.treesitter.language.register('hcl', 'atlas-test')\n  vim.treesitter.language.register('hcl', 'atlas-plan')\n  vim.treesitter.language.register('hcl', 'atlas-rule')\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('atlas')\n\n\nDefault config:\n- cmd: >lua\n  { \"atlas\", \"tool\", \"lsp\", \"--stdio\" }\n- filetypes: >lua\n  { \"atlas-*\" }\n- root_markers: >lua\n  { \"atlas.hcl\" }\n<\n\n------------------------------------------------------------------------------\natopile\n\nhttps://atopile.io/\n\nA language server for atopile Programming Language.\n\nIt comes with the atopile compiler, for installation see: [Installing atopile](https://docs.atopile.io/atopile/guides/install)\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('atopile')\n\n\nDefault config:\n- cmd: >lua\n  { \"ato\", \"lsp\", \"start\" }\n- filetypes: >lua\n  { \"ato\" }\n- root_markers: >lua\n  { \"ato.yaml\", \".ato\", \".git\" }\n<\n\n------------------------------------------------------------------------------\nautohotkey_lsp\n\nhttps://github.com/thqby/vscode-autohotkey2-lsp\n\nAutoHotkey v2.0 LSP implementation\n\nNOTE: AutoHotkey is Windows-only.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('autohotkey_lsp')\n\n\nDefault config:\n- cmd: >lua\n  { \"autohotkey_lsp\", \"--stdio\" }\n- filetypes: >lua\n  { \"autohotkey\" }\n- flags: >lua\n  {\n    debounce_text_changes = 500\n  }\n- init_options: >lua\n  {\n    ActionWhenV1IsDetected = \"Continue\",\n    AutoLibInclude = \"All\",\n    CommentTags = \"^;;\\\\s*(?<tag>.+)\",\n    CompleteFunctionParens = false,\n    Diagnostics = {\n      ClassStaticMemberCheck = true,\n      ParamsCheck = true\n    },\n    FormatOptions = {\n      array_style = \"expand\",\n      brace_style = \"One True Brace\",\n      break_chained_methods = false,\n      ignore_comment = false,\n      indent_string = \"\\t\",\n      max_preserve_newlines = 2,\n      object_style = \"none\",\n      preserve_newlines = true,\n      space_after_double_colon = true,\n      space_before_conditional = true,\n      space_in_empty_paren = false,\n      space_in_other = true,\n      space_in_paren = false,\n      wrap_line_length = 0\n    },\n    InterpreterPath = \"\",\n    SymbolFoldinFromOpenBrace = false,\n    locale = \"en-us\"\n  }\n- root_markers: >lua\n  { \"package.json\" }\n<\n\n------------------------------------------------------------------------------\nautotools_ls\n\nhttps://github.com/Freed-Wu/autotools-language-server\n\n`autotools-language-server` can be installed via `pip` >sh\n  pip install autotools-language-server\n\nLanguage server for autoconf, automake and make using tree sitter in python.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('autotools_ls')\n\n\nDefault config:\n- cmd: >lua\n  { \"autotools-language-server\" }\n- filetypes: >lua\n  { \"config\", \"automake\", \"make\" }\n- root_dir (use \"gF\" to view): ../lsp/autotools_ls.lua:17\n<\n\n------------------------------------------------------------------------------\nawk_ls\n\nhttps://github.com/Beaglefoot/awk-language-server/\n\n`awk-language-server` can be installed via `npm` >sh\n  npm install -g awk-language-server\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('awk_ls')\n\n\nDefault config:\n- cmd: >lua\n  { \"awk-language-server\" }\n- filetypes: >lua\n  { \"awk\" }\n<\n\n------------------------------------------------------------------------------\nazure_pipelines_ls\n\nhttps://github.com/microsoft/azure-pipelines-language-server\n\nAn Azure Pipelines language server\n\n`azure-pipelines-ls` can be installed via `npm`:\n>sh\n  npm install -g azure-pipelines-language-server\n\nBy default `azure-pipelines-ls` will only work in files named `azure-pipelines.yml`, this can be changed by providing additional settings like so >lua\n  vim.lsp.config('azure_pipelines_ls', {\n    ... -- other configuration\n    settings = {\n        yaml = {\n            schemas = {\n                [\"https://raw.githubusercontent.com/microsoft/azure-pipelines-vscode/master/service-schema.json\"] = {\n                    \"/azure-pipeline*.y*l\",\n                    \"/*.azure*\",\n                    \"Azure-Pipelines/**/*.y*l\",\n                    \"Pipelines/*.y*l\",\n                },\n            },\n        },\n    },\n  })\nThe Azure Pipelines LSP is a fork of `yaml-language-server` and as such the same settings can be passed to it as `yaml-language-server`.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('azure_pipelines_ls')\n\n\nDefault config:\n- cmd: >lua\n  { \"azure-pipelines-language-server\", \"--stdio\" }\n- filetypes: >lua\n  { \"yaml\" }\n- root_markers: >lua\n  { \"azure-pipelines.yml\" }\n- settings: >lua\n  {}\n<\n\n------------------------------------------------------------------------------\nbacon_ls\n\nhttps://github.com/crisidev/bacon-ls\n\nA Language Server Protocol wrapper for [bacon](https://dystroy.org/bacon/).\nIt offers textDocument/diagnostic and workspace/diagnostic capabilities for Rust\nworkspaces using the Bacon export locations file.\n\nIt requires `bacon` and `bacon-ls` to be installed on the system using\n[mason.nvim](https://github.com/williamboman/mason.nvim) or manually\n>sh\n  $ cargo install --locked bacon bacon-ls\n\nSettings can be changed using the `init_options` dictionary:util\n>lua\n  init_options = {\n      -- Bacon export filename (default: .bacon-locations).\n      locationsFile = \".bacon-locations\",\n      -- Try to update diagnostics every time the file is saved (default: true).\n      updateOnSave = true,\n      --  How many milliseconds to wait before updating diagnostics after a save (default: 1000).\n      updateOnSaveWaitMillis = 1000,\n      -- Try to update diagnostics every time the file changes (default: true).\n      updateOnChange = true,\n      -- Try to validate that bacon preferences are setup correctly to work with bacon-ls (default: true).\n      validateBaconPreferences = true,\n      -- f no bacon preferences file is found, create a new preferences file with the bacon-ls job definition (default: true).\n      createBaconPreferencesFile = true,\n      -- Run bacon in background for the bacon-ls job (default: true)\n      runBaconInBackground = true,\n      -- Command line arguments to pass to bacon running in background (default \"--headless -j bacon-ls\")\n      runBaconInBackgroundCommandArguments = \"--headless -j bacon-ls\",\n      -- How many milliseconds to wait between background diagnostics check to synchronize all open files (default: 2000).\n      synchronizeAllOpenFilesWaitMillis = 2000,\n  }\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('bacon_ls')\n\n\nDefault config:\n- cmd: >lua\n  { \"bacon-ls\" }\n- filetypes: >lua\n  { \"rust\" }\n- init_options: >lua\n  {}\n- root_markers: >lua\n  { \".bacon-locations\", \"Cargo.toml\" }\n<\n\n------------------------------------------------------------------------------\nballerina\n\nBallerina language server\n\nThe Ballerina language's CLI tool comes with its own language server implementation.\nThe `bal` command line tool must be installed and available in your system's PATH.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('ballerina')\n\n\nDefault config:\n- cmd: >lua\n  { \"bal\", \"start-language-server\" }\n- filetypes: >lua\n  { \"ballerina\" }\n- root_markers: >lua\n  { \"Ballerina.toml\" }\n<\n\n------------------------------------------------------------------------------\nbasedpyright\n\nhttps://detachhead.github.io/basedpyright\n\n`basedpyright`, a static type checker and language server for python\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('basedpyright')\n\n\nDefault config:\n- cmd: >lua\n  { \"basedpyright-langserver\", \"--stdio\" }\n- filetypes: >lua\n  { \"python\" }\n- on_attach (use \"gF\" to view): ../lsp/basedpyright.lua:25\n- root_markers: >lua\n  { \"pyrightconfig.json\", \"pyproject.toml\", \"setup.py\", \"setup.cfg\", \"requirements.txt\", \"Pipfile\", \".git\" }\n- settings: >lua\n  {\n    basedpyright = {\n      analysis = {\n        autoSearchPaths = true,\n        diagnosticMode = \"openFilesOnly\"\n      }\n    }\n  }\n<\n\n------------------------------------------------------------------------------\nbashls\n\nhttps://github.com/bash-lsp/bash-language-server\n\n`bash-language-server` can be installed via `npm` >sh\n  npm i -g bash-language-server\n\nLanguage server for bash, written using tree sitter in typescript.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('bashls')\n\n\nDefault config:\n- cmd: >lua\n  { \"bash-language-server\", \"start\" }\n- filetypes: >lua\n  { \"bash\", \"sh\" }\n- root_markers: >lua\n  { \".git\" }\n- settings: >lua\n  {\n    bashIde = {\n      globPattern = \"*@(.sh|.inc|.bash|.command)\"\n    }\n  }\n<\n\n------------------------------------------------------------------------------\nbasics_ls\n\nhttps://github.com/antonk52/basics-language-server/\n\nBuffer, path, and snippet completion\n>sh\n  npm install -g basics-language-server\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('basics_ls')\n\n\nDefault config:\n- cmd: >lua\n  { \"basics-language-server\" }\n- settings: >lua\n  {\n    buffer = {\n      enable = true,\n      minCompletionLength = 4\n    },\n    path = {\n      enable = true\n    },\n    snippet = {\n      enable = false,\n      sources = {}\n    }\n  }\n<\n\n------------------------------------------------------------------------------\nbazelrc_lsp\n\nhttps://github.com/salesforce-misc/bazelrc-lsp\n\n`bazelrc-lsp` is a LSP for `.bazelrc` configuration files.\n\nThe `.bazelrc` file type is not detected automatically, you can register it manually (see below) or override the filetypes:\n>lua\n  vim.filetype.add {\n    pattern = {\n      ['.*.bazelrc'] = 'bazelrc',\n    },\n  }\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('bazelrc_lsp')\n\n\nDefault config:\n- cmd: >lua\n  { \"bazelrc-lsp\", \"lsp\" }\n- filetypes: >lua\n  { \"bazelrc\" }\n- root_markers: >lua\n  { \"WORKSPACE\", \"WORKSPACE.bazel\", \"MODULE.bazel\" }\n<\n\n------------------------------------------------------------------------------\nbeancount\n\nhttps://github.com/polarmutex/beancount-language-server#installation\n\nSee https://github.com/polarmutex/beancount-language-server#configuration for configuration options\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('beancount')\n\n\nDefault config:\n- cmd: >lua\n  { \"beancount-language-server\", \"--stdio\" }\n- filetypes: >lua\n  { \"beancount\", \"bean\" }\n- init_options: >lua\n  {}\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\nbicep\n\nhttps://github.com/azure/bicep\nBicep language server\n\nBicep language server can be installed by downloading and extracting a release of bicep-langserver.zip from [Bicep GitHub releases](https://github.com/Azure/bicep/releases).\n\nBicep language server requires the [dotnet-sdk](https://dotnet.microsoft.com/download) to be installed.\n\nNeovim does not have built-in support for the bicep filetype which is required for lspconfig to automatically launch the language server.\n\nFiletype detection can be added via an autocmd >lua\n  vim.cmd [[ autocmd BufNewFile,BufRead *.bicep set filetype=bicep ]]\n\n**By default, bicep language server does not have a `cmd` set.** This is because nvim-lspconfig does not make assumptions about your path. You must add the following to your init.vim or init.lua to set `cmd` to the absolute path ($HOME and ~ are not expanded) of the unzipped run script or binary.\n>lua\n  local bicep_lsp_bin = \"/path/to/bicep-langserver/Bicep.LangServer.dll\"\n  vim.lsp.config('bicep', {\n      cmd = { \"dotnet\", bicep_lsp_bin };\n      ...\n  })\n\nTo download the latest release and place in /usr/local/bin/bicep-langserver >bash\n  (cd $(mktemp -d) \\\n      && curl -fLO https://github.com/Azure/bicep/releases/latest/download/bicep-langserver.zip \\\n      && rm -rf /usr/local/bin/bicep-langserver \\\n      && unzip -d /usr/local/bin/bicep-langserver bicep-langserver.zip)\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('bicep')\n\n\nDefault config:\n- filetypes: >lua\n  { \"bicep\", \"bicep-params\" }\n- init_options: >lua\n  {}\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\nbiome\n\nhttps://biomejs.dev\n\nToolchain of the web. [Successor of Rome](https://biomejs.dev/blog/annoucing-biome).\n>sh\n  npm install [-g] @biomejs/biome\n\n### Monorepo support\n\n`biome` supports monorepos by default. It will automatically find the `biome.json` corresponding to the package you are working on, as described in the [documentation](https://biomejs.dev/guides/big-projects/#monorepo). This works without the need of spawning multiple instances of `biome`, saving memory.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('biome')\n\n\nDefault config:\n- cmd (use \"gF\" to view): ../lsp/biome.lua:17\n- filetypes: >lua\n  { \"astro\", \"css\", \"graphql\", \"html\", \"javascript\", \"javascriptreact\", \"json\", \"jsonc\", \"svelte\", \"typescript\", \"typescriptreact\", \"vue\" }\n- root_dir (use \"gF\" to view): ../lsp/biome.lua:17\n- `workspace_required` : `true`\n<\n\n------------------------------------------------------------------------------\nbitbake_language_server\n\nhttps://github.com/Freed-Wu/bitbake-language-server\n\n`bitbake-language-server` can be installed via `pip` >sh\n  pip install bitbake-language-server\n\nLanguage server for bitbake.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('bitbake_language_server')\n\n\nDefault config:\n- cmd: >lua\n  { \"bitbake-language-server\" }\n- filetypes: >lua\n  { \"bitbake\" }\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\nblueprint_ls\n\nhttps://gitlab.gnome.org/jwestman/blueprint-compiler\n\n`blueprint-compiler` can be installed via your system package manager.\n\nLanguage server for the blueprint markup language, written in python and part\nof the blueprint-compiler.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('blueprint_ls')\n\n\nDefault config:\n- cmd: >lua\n  { \"blueprint-compiler\", \"lsp\" }\n- cmd_env: >lua\n  {\n    GLOB_PATTERN = \"*@(.blp)\"\n  }\n- filetypes: >lua\n  { \"blueprint\" }\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\nbqls\n\nhttps://github.com/kitagry/bqls\n\nThe `bqls` BigQuery language server can be installed by running:\n>sh\n  $ go install github.com/kitagry/bqls@latest\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('bqls')\n\n\nDefault config:\n- cmd: >lua\n  { \"bqls\" }\n- filetypes: >lua\n  { \"sql\" }\n- root_markers: >lua\n  { \".git\" }\n- settings: >lua\n  {}\n<\n\n------------------------------------------------------------------------------\nbright_script\n\nhttps://github.com/RokuCommunity/brighterscript\n\n`brightscript` can be installed via `npm` >sh\n  npm install -g brighterscript\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('bright_script')\n\n\nDefault config:\n- cmd: >lua\n  { \"bsc\", \"--lsp\", \"--stdio\" }\n- filetypes: >lua\n  { \"brs\" }\n- root_markers: >lua\n  { \"makefile\", \"Makefile\", \".git\" }\n<\n\n------------------------------------------------------------------------------\nbrioche\n\nhttps://github.com/brioche-dev/brioche\n\n`Brioche Language Server`.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('brioche')\n\n\nDefault config:\n- cmd: >lua\n  { \"brioche\", \"lsp\" }\n- filetypes: >lua\n  { \"brioche\" }\n- root_markers: >lua\n  { \"project.bri\" }\n<\n\n------------------------------------------------------------------------------\nbsl_ls\n\nhttps://github.com/1c-syntax/bsl-language-server\n\nLanguage Server Protocol implementation for 1C (BSL) - 1C:Enterprise 8 and OneScript languages.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('bsl_ls')\n\n\nDefault config:\n- filetypes: >lua\n  { \"bsl\", \"os\" }\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\nbuck2\n\nhttps://github.com/facebook/buck2\n\nBuild system, successor to Buck\n\nTo better detect Buck2 project files, the following can be added:\n>\n  vim.cmd [[ autocmd BufRead,BufNewFile *.bxl,BUCK,TARGETS set filetype=bzl ]]\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('buck2')\n\n\nDefault config:\n- cmd: >lua\n  { \"buck2\", \"lsp\" }\n- filetypes: >lua\n  { \"bzl\" }\n- root_markers: >lua\n  { \".buckconfig\" }\n<\n\n------------------------------------------------------------------------------\nbuddy_ls\n\nhttps://github.com/buddy-compiler/buddy-mlir#buddy-lsp-server\nThe Language Server for the buddy-mlir, a drop-in replacement for mlir-lsp-server,\nsupporting new dialects defined in buddy-mlir.\n`buddy-lsp-server` can be installed at the buddy-mlir repository (buddy-compiler/buddy-mlir)\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('buddy_ls')\n\n\nDefault config:\n- cmd: >lua\n  { \"buddy-lsp-server\" }\n- filetypes: >lua\n  { \"mlir\" }\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\nbuf_ls\n\nhttps://github.com/bufbuild/buf\n\nbuf lsp included in the cli itself\n\nbuf lsp is a Protobuf language server compatible with Buf modules and workspaces\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('buf_ls')\n\n\nDefault config:\n- cmd: >lua\n  { \"buf\", \"lsp\", \"serve\", \"--log-format=text\" }\n- filetypes: >lua\n  { \"proto\" }\n- reuse_client (use \"gF\" to view): ../lsp/buf_ls.lua:9\n- root_markers: >lua\n  { \"buf.yaml\", \".git\" }\n<\n\n------------------------------------------------------------------------------\nbzl\n\nhttps://bzl.io/\n\nhttps://docs.stack.build/docs/cli/installation\n\nhttps://docs.stack.build/docs/vscode/starlark-language-server\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('bzl')\n\n\nDefault config:\n- cmd: >lua\n  { \"bzl\", \"lsp\", \"serve\" }\n- filetypes: >lua\n  { \"bzl\" }\n- root_markers: >lua\n  { \"WORKSPACE\", \"WORKSPACE.bazel\" }\n<\n\n------------------------------------------------------------------------------\nc3_lsp\n\nhttps://github.com/pherrymason/c3-lsp\n\nLanguage Server for c3.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('c3_lsp')\n\n\nDefault config:\n- cmd: >lua\n  { \"c3lsp\" }\n- filetypes: >lua\n  { \"c3\", \"c3i\" }\n- root_markers: >lua\n  { \"project.json\", \"manifest.json\", \".git\" }\n<\n\n------------------------------------------------------------------------------\ncairo_ls\n\n[Cairo Language Server](https://github.com/starkware-libs/cairo/tree/main/crates/cairo-lang-language-server)\n\nFirst, install Cairo following [this tutorial](https://book.cairo-lang.org/ch01-01-installation.html)\n\nThen enable Cairo Language Server in your Lua configuration >lua\n  vim.lsp.enable('cairo_ls')\n\n*cairo-language-server is still under active development, some features might not work yet !*\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('cairo_ls')\n\n\nDefault config:\n- cmd: >lua\n  { \"scarb\", \"cairo-language-server\", \"/C\", \"--node-ipc\" }\n- filetypes: >lua\n  { \"cairo\" }\n- init_options: >lua\n  {\n    hostInfo = \"neovim\"\n  }\n- root_markers: >lua\n  { \"Scarb.toml\", \"cairo_project.toml\", \".git\" }\n<\n\n------------------------------------------------------------------------------\nccls\n\nhttps://github.com/MaskRay/ccls/wiki\n\nccls relies on a [JSON compilation database](https://clang.llvm.org/docs/JSONCompilationDatabase.html) specified\nas compile_commands.json or, for simpler projects, a .ccls.\nFor details on how to automatically generate one using CMake look [here](https://cmake.org/cmake/help/latest/variable/CMAKE_EXPORT_COMPILE_COMMANDS.html). Alternatively, you can use [Bear](https://github.com/rizsotto/Bear).\n\nCustomization options are passed to ccls at initialization time via init_options, a list of available options can be found [here](https://github.com/MaskRay/ccls/wiki/Customization#initialization-options). For example:\n>lua\n  vim.lsp.config(\"ccls\", {\n    init_options = {\n      compilationDatabaseDirectory = \"build\";\n      index = {\n        threads = 0;\n      };\n      clang = {\n        excludeArgs = { \"-frounding-math\"} ;\n      };\n    }\n  })\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('ccls')\n\n\nDefault config:\n- cmd: >lua\n  { \"ccls\" }\n- filetypes: >lua\n  { \"c\", \"cpp\", \"objc\", \"objcpp\", \"cuda\" }\n- offset_encoding: >lua\n  \"utf-32\"\n- on_attach (use \"gF\" to view): ../lsp/ccls.lua:41\n- root_markers: >lua\n  { \"compile_commands.json\", \".ccls\", \".git\" }\n- `workspace_required` : `true`\n<\n\n------------------------------------------------------------------------------\ncds_lsp\n\nhttps://cap.cloud.sap/docs/\n\n`cds-lsp` can be installed via `npm`:\n>sh\n  npm i -g @sap/cds-lsp\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('cds_lsp')\n\n\nDefault config:\n- cmd: >lua\n  { \"cds-lsp\", \"--stdio\" }\n- filetypes: >lua\n  { \"cds\" }\n- root_markers: >lua\n  { \"package.json\", \"db\", \"srv\" }\n- settings: >lua\n  {\n    cds = {\n      validate = true\n    }\n  }\n<\n\n------------------------------------------------------------------------------\ncir_lsp_server\n\nhttps://llvm.github.io/clangir\n\nThe Language Server for the LLVM ClangIR language\n\n`cir-lsp-server` can be installed at the llvm-project repository (https://github.com/llvm/llvm-project)\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('cir_lsp_server')\n\n\nDefault config:\n- cmd: >lua\n  { \"cir-lsp-server\" }\n- filetypes: >lua\n  { \"cir\" }\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\ncircom-lsp\n\n[Circom Language Server](https://github.com/rubydusa/circom-lsp)\n\n`circom-lsp`, the language server for the Circom language.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('circom-lsp')\n\n\nDefault config:\n- cmd: >lua\n  { \"circom-lsp\" }\n- filetypes: >lua\n  { \"circom\" }\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\nclangd\n\nhttps://clangd.llvm.org/installation.html\n\n- **NOTE:** Clang >= 11 is recommended! See [#23](https://github.com/neovim/nvim-lspconfig/issues/23).\n- If `compile_commands.json` lives in a build directory, you should\n  symlink it to the root of your source tree.\n  ```\n  ln -s /path/to/myproject/build/compile_commands.json /path/to/myproject/\n  ```\n- clangd relies on a [JSON compilation database](https://clang.llvm.org/docs/JSONCompilationDatabase.html)\n  specified as compile_commands.json, see https://clangd.llvm.org/installation#compile_commandsjson\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('clangd')\n\n\nDefault config:\n- capabilities: >lua\n  {\n    offsetEncoding = { \"utf-8\", \"utf-16\" },\n    textDocument = {\n      completion = {\n        editsNearCursor = true\n      }\n    }\n  }\n- cmd: >lua\n  { \"clangd\" }\n- filetypes: >lua\n  { \"c\", \"cpp\", \"objc\", \"objcpp\", \"cuda\" }\n- get_language_id (use \"gF\" to view): ../lsp/clangd.lua:65\n- on_attach (use \"gF\" to view): ../lsp/clangd.lua:65\n- on_init (use \"gF\" to view): ../lsp/clangd.lua:65\n- root_markers: >lua\n  { \".clangd\", \".clang-tidy\", \".clang-format\", \"compile_commands.json\", \"compile_flags.txt\", \"configure.ac\", \".git\" }\n<\n\n------------------------------------------------------------------------------\nclarinet\n\nhttps://github.com/hirosystems/clarinet\n\nClarinet is the fastest way to build, test, and deploy smart contracts on the Stacks blockchain.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('clarinet')\n\n\nDefault config:\n- cmd: >lua\n  { \"clarinet\", \"lsp\" }\n- filetypes: >lua\n  { \"clar\", \"clarity\" }\n- root_markers: >lua\n  { \"Clarinet.toml\" }\n<\n\n------------------------------------------------------------------------------\nclojure_lsp\n\nhttps://github.com/clojure-lsp/clojure-lsp\n\nClojure Language Server\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('clojure_lsp')\n\n\nDefault config:\n- cmd: >lua\n  { \"clojure-lsp\" }\n- filetypes: >lua\n  { \"clojure\", \"edn\" }\n- root_markers: >lua\n  { \"project.clj\", \"deps.edn\", \"build.boot\", \"shadow-cljs.edn\", \".git\", \"bb.edn\" }\n<\n\n------------------------------------------------------------------------------\ncmake\n\nhttps://github.com/regen100/cmake-language-server\n\nCMake LSP Implementation\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('cmake')\n\n\nDefault config:\n- cmd: >lua\n  { \"cmake-language-server\" }\n- filetypes: >lua\n  { \"cmake\" }\n- init_options: >lua\n  {\n    buildDirectory = \"build\"\n  }\n- root_markers: >lua\n  { \"CMakePresets.json\", \"CTestConfig.cmake\", \".git\", \"build\", \"cmake\" }\n<\n\n------------------------------------------------------------------------------\ncobol_ls\n\nCobol language support\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('cobol_ls')\n\n\nDefault config:\n- cmd: >lua\n  { \"cobol-language-support\" }\n- filetypes: >lua\n  { \"cobol\" }\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\ncodebook\n\nhttps://github.com/blopker/codebook\n\n An unholy spell checker for code.\n\n`codebook-lsp` can be installed by following the instructions [here](https://github.com/blopker/codebook/blob/main/README.md#installation).\n\nThe default `cmd` assumes that the `codebook-lsp` binary can be found in `$PATH`.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('codebook')\n\n\nDefault config:\n- cmd: >lua\n  { \"codebook-lsp\", \"serve\" }\n- filetypes: >lua\n  { \"c\", \"css\", \"gitcommit\", \"go\", \"haskell\", \"html\", \"java\", \"javascript\", \"javascriptreact\", \"lua\", \"markdown\", \"php\", \"python\", \"ruby\", \"rust\", \"swift\", \"toml\", \"text\", \"typescript\", \"typescriptreact\", \"zig\" }\n- root_markers: >lua\n  { \".git\", \"codebook.toml\", \".codebook.toml\" }\n<\n\n------------------------------------------------------------------------------\ncoffeesense\n\nhttps://github.com/phil294/coffeesense\n\nCoffeeSense Language Server\n`coffeesense-language-server` can be installed via `npm` >sh\n  npm install -g coffeesense-language-server\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('coffeesense')\n\n\nDefault config:\n- cmd: >lua\n  { \"coffeesense-language-server\", \"--stdio\" }\n- filetypes: >lua\n  { \"coffee\" }\n- root_markers: >lua\n  { \"package.json\" }\n<\n\n------------------------------------------------------------------------------\ncontextive\n\nhttps://github.com/dev-cycles/contextive\n\nLanguage Server for Contextive.\n\nContextive allows you to define terms in a central file and provides auto-completion suggestions and hover panels for these terms wherever they're used.\n\nTo install the language server, you need to download the appropriate [GitHub release asset](https://github.com/dev-cycles/contextive/releases/) for your operating system and architecture.\n\nAfter the download unzip the Contextive.LanguageServer binary and copy the file into a folder that is included in your system's PATH.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('contextive')\n\n\nDefault config:\n- cmd: >lua\n  { \"Contextive.LanguageServer\" }\n- root_markers: >lua\n  { \".contextive\", \".git\" }\n<\n\n------------------------------------------------------------------------------\ncopilot\n\nhttps://www.npmjs.com/package/@github/copilot-language-server\n\nThe Copilot Language Server enables any editor or IDE\nto integrate with GitHub Copilot via\n[the language server protocol](https://microsoft.github.io/language-server-protocol/).\n\n**[GitHub Copilot](https://github.com/features/copilot)**\nis an AI pair programmer tool that helps you write code faster and smarter.\n\n**Sign up for [GitHub Copilot Free](https://github.com/settings/copilot)!**\n\nPlease see [terms of use for GitHub Copilot](https://docs.github.com/en/site-policy/github-terms/github-terms-for-additional-products-and-features#github-copilot)\n\nYou need to enable `:help lsp-inline-completion` to receive suggestions. For example, you can enable it in the LspAttach event:\n>lua\n  vim.api.nvim_create_autocmd('LspAttach', {\n    callback = function(args)\n      local bufnr = args.buf\n      local client = assert(vim.lsp.get_client_by_id(args.data.client_id))\n\n      if client:supports_method(vim.lsp.protocol.Methods.textDocument_inlineCompletion, bufnr) then\n        vim.lsp.inline_completion.enable(true, { bufnr = bufnr })\n\n        vim.keymap.set(\n          'i',\n          '<C-F>',\n          vim.lsp.inline_completion.get,\n          { desc = 'LSP: accept inline completion', buffer = bufnr }\n        )\n        vim.keymap.set(\n          'i',\n          '<C-G>',\n          vim.lsp.inline_completion.select,\n          { desc = 'LSP: switch inline completion', buffer = bufnr }\n        )\n      end\n    end\n  })\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('copilot')\n\n\nDefault config:\n- cmd: >lua\n  { \"copilot-language-server\", \"--stdio\" }\n- init_options: >lua\n  {\n    editorInfo = {\n      name = \"Neovim\",\n      version = \"0.12.0-dev+g238d4fa71a\"\n    },\n    editorPluginInfo = {\n      name = \"Neovim\",\n      version = \"0.12.0-dev+g238d4fa71a\"\n    }\n  }\n- on_attach (use \"gF\" to view): ../lsp/copilot.lua:106\n- root_markers: >lua\n  { \".git\" }\n- settings: >lua\n  {\n    telemetry = {\n      telemetryLevel = \"all\"\n    }\n  }\n<\n\n------------------------------------------------------------------------------\ncoq_lsp\n\nhttps://github.com/ejgallego/coq-lsp/\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('coq_lsp')\n\n\nDefault config:\n- cmd: >lua\n  { \"coq-lsp\" }\n- filetypes: >lua\n  { \"coq\" }\n- root_markers: >lua\n  { \"_CoqProject\", \".git\" }\n<\n\n------------------------------------------------------------------------------\ncrystalline\n\nhttps://github.com/elbywan/crystalline\n\nCrystal language server.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('crystalline')\n\n\nDefault config:\n- cmd: >lua\n  { \"crystalline\" }\n- filetypes: >lua\n  { \"crystal\" }\n- root_markers: >lua\n  { \"shard.yml\", \".git\" }\n<\n\n------------------------------------------------------------------------------\ncsharp_ls\n\nhttps://github.com/razzmatazz/csharp-language-server\n\nLanguage Server for C#.\n\ncsharp-ls requires the [dotnet-sdk](https://dotnet.microsoft.com/download) to be installed.\n\nThe preferred way to install csharp-ls is with `dotnet tool install --global csharp-ls`.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('csharp_ls')\n\n\nDefault config:\n- cmd (use \"gF\" to view): ../lsp/csharp_ls.lua:14\n- filetypes: >lua\n  { \"cs\" }\n- get_language_id (use \"gF\" to view): ../lsp/csharp_ls.lua:14\n- init_options: >lua\n  {\n    AutomaticWorkspaceInit = true\n  }\n- root_dir (use \"gF\" to view): ../lsp/csharp_ls.lua:14\n<\n\n------------------------------------------------------------------------------\ncspell_ls\n\n[cspell language server](https://github.com/vlabo/cspell-lsp)\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('cspell_ls')\n\n\nDefault config:\n- cmd: >lua\n  { \"cspell-lsp\", \"--stdio\" }\n- root_markers: >lua\n  { \".git\", \"cspell.json\", \".cspell.json\", \"cspell.json\", \".cSpell.json\", \"cSpell.json\", \"cspell.config.js\", \"cspell.config.cjs\", \"cspell.config.json\", \"cspell.config.yaml\", \"cspell.config.yml\", \"cspell.yaml\", \"cspell.yml\" }\n<\n\n------------------------------------------------------------------------------\ncss_variables\n\nhttps://github.com/vunguyentuan/vscode-css-variables/tree/master/packages/css-variables-language-server\n\nCSS variables autocompletion and go-to-definition\n\n`css-variables-language-server` can be installed via `npm`:\n>sh\n  npm i -g css-variables-language-server\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('css_variables')\n\n\nDefault config:\n- cmd: >lua\n  { \"css-variables-language-server\", \"--stdio\" }\n- filetypes: >lua\n  { \"css\", \"scss\", \"less\" }\n- root_dir (use \"gF\" to view): ../lsp/css_variables.lua:14\n- settings: >lua\n  {\n    cssVariables = {\n      blacklistFolders = { \"**/.cache\", \"**/.DS_Store\", \"**/.git\", \"**/.hg\", \"**/.next\", \"**/.svn\", \"**/bower_components\", \"**/CVS\", \"**/dist\", \"**/node_modules\", \"**/tests\", \"**/tmp\" },\n      lookupFiles = { \"**/*.less\", \"**/*.scss\", \"**/*.sass\", \"**/*.css\" }\n    }\n  }\n<\n\n------------------------------------------------------------------------------\ncssls\n\nhttps://github.com/hrsh7th/vscode-langservers-extracted\n\n`css-languageserver` can be installed via `npm`:\n>sh\n  npm i -g vscode-langservers-extracted\n\nNeovim does not currently include built-in snippets. `vscode-css-language-server` only provides completions when snippet support is enabled. To enable completion, install a snippet plugin and add the following override to your language client capabilities during setup.\n>lua\n  --Enable (broadcasting) snippet capability for completion\n  local capabilities = vim.lsp.protocol.make_client_capabilities()\n  capabilities.textDocument.completion.completionItem.snippetSupport = true\n\n  vim.lsp.config('cssls', {\n    capabilities = capabilities,\n  })\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('cssls')\n\n\nDefault config:\n- cmd: >lua\n  { \"vscode-css-language-server\", \"--stdio\" }\n- filetypes: >lua\n  { \"css\", \"scss\", \"less\" }\n- init_options: >lua\n  {\n    provideFormatter = true\n  }\n- root_markers: >lua\n  { \"package.json\", \".git\" }\n- settings: >lua\n  {\n    css = {\n      validate = true\n    },\n    less = {\n      validate = true\n    },\n    scss = {\n      validate = true\n    }\n  }\n<\n\n------------------------------------------------------------------------------\ncssmodules_ls\n\nhttps://github.com/antonk52/cssmodules-language-server\n\nLanguage server for autocompletion and go-to-definition functionality for CSS modules.\n\nYou can install cssmodules-language-server via npm >sh\n  npm install -g cssmodules-language-server\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('cssmodules_ls')\n\n\nDefault config:\n- cmd: >lua\n  { \"cssmodules-language-server\" }\n- filetypes: >lua\n  { \"javascript\", \"javascriptreact\", \"typescript\", \"typescriptreact\" }\n- root_markers: >lua\n  { \"package.json\" }\n<\n\n------------------------------------------------------------------------------\ncucumber_language_server\n\nhttps://cucumber.io\nhttps://github.com/cucumber/common\nhttps://www.npmjs.com/package/@cucumber/language-server\n\nLanguage server for Cucumber.\n\n`cucumber-language-server` can be installed via `npm` >sh\n  npm install -g @cucumber/language-server\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('cucumber_language_server')\n\n\nDefault config:\n- cmd: >lua\n  { \"cucumber-language-server\", \"--stdio\" }\n- filetypes: >lua\n  { \"cucumber\" }\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\ncue\n\nhttps://github.com/cue-lang/cue\n\nCUE makes it easy to validate data, write schemas, and ensure configurations align with policies.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('cue')\n\n\nDefault config:\n- cmd: >lua\n  { \"cue\", \"lsp\" }\n- filetypes: >lua\n  { \"cue\" }\n- root_markers: >lua\n  { \"cue.mod\", \".git\" }\n<\n\n------------------------------------------------------------------------------\ncustom_elements_ls\n\nhttps://github.com/Matsuuu/custom-elements-language-server\n\n`custom-elements-languageserver` depends on `typescript`. Both packages can be installed via `npm` >sh\n  npm install -g typescript custom-elements-languageserver\nTo configure typescript language server, add a\n[`tsconfig.json`](https://www.typescriptlang.org/docs/handbook/tsconfig-json.html) or\n[`jsconfig.json`](https://code.visualstudio.com/docs/languages/jsconfig) to the root of your\nproject.\nHere's an example that disables type checking in JavaScript files >json\n  {\n    \"compilerOptions\": {\n      \"module\": \"commonjs\",\n      \"target\": \"es6\",\n      \"checkJs\": false\n    },\n    \"exclude\": [\n      \"node_modules\"\n    ]\n  }\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('custom_elements_ls')\n\n\nDefault config:\n- cmd: >lua\n  { \"custom-elements-languageserver\", \"--stdio\" }\n- init_options: >lua\n  {\n    hostInfo = \"neovim\"\n  }\n- root_markers: >lua\n  { \"tsconfig.json\", \"package.json\", \"jsconfig.json\", \".git\" }\n<\n\n------------------------------------------------------------------------------\ncypher_ls\n\nhttps://github.com/neo4j/cypher-language-support/tree/main/packages/language-server\n\n`cypher-language-server`, language server for Cypher query language.\nPart of the umbrella project cypher-language-support: https://github.com/neo4j/cypher-language-support\n\n`cypher-language-server` can be installed via `npm` >sh\n  npm i -g @neo4j-cypher/language-server\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('cypher_ls')\n\n\nDefault config:\n- cmd: >lua\n  { \"cypher-language-server\", \"--stdio\" }\n- filetypes: >lua\n  { \"cypher\" }\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\ndaedalus_ls\n\nDaedalusLanguageServer\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('daedalus_ls')\n\n\nDefault config:\n- cmd: >lua\n  { \"DaedalusLanguageServer\" }\n- filetypes: >lua\n  { \"d\" }\n- root_markers: >lua\n  { \"Gothic.src\", \"Camera.src\", \"Menu.src\", \"Music.src\", \"ParticleFX.src\", \"SFX.src\", \"VisualFX.src\" }\n- settings: >lua\n  {\n    DaedalusLanguageServer = {\n      fileEncoding = \"Windows-1252\",\n      inlayHints = {\n        constants = true\n      },\n      loglevel = \"debug\",\n      numParserThreads = 16,\n      srcFileEncoding = \"Windows-1252\"\n    }\n  }\n<\n\n------------------------------------------------------------------------------\ndafny\n\nSupport for the Dafny language server.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('dafny')\n\n\nDefault config:\n- cmd: >lua\n  { \"dafny\", \"server\" }\n- filetypes: >lua\n  { \"dfy\", \"dafny\" }\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\ndagger\n\nhttps://github.com/dagger/cuelsp\n\nDagger's lsp server for cuelang.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('dagger')\n\n\nDefault config:\n- cmd: >lua\n  { \"cuelsp\" }\n- filetypes: >lua\n  { \"cue\" }\n- root_markers: >lua\n  { \"cue.mod\", \".git\" }\n<\n\n------------------------------------------------------------------------------\ndartls\n\nhttps://github.com/dart-lang/sdk/tree/master/pkg/analysis_server/tool/lsp_spec\n\nLanguage server for dart.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('dartls')\n\n\nDefault config:\n- cmd: >lua\n  { \"dart\", \"language-server\", \"--protocol=lsp\" }\n- filetypes: >lua\n  { \"dart\" }\n- init_options: >lua\n  {\n    closingLabels = true,\n    flutterOutline = true,\n    onlyAnalyzeProjectsWithOpenFiles = true,\n    outline = true,\n    suggestFromUnimportedLibraries = true\n  }\n- root_markers: >lua\n  { \"pubspec.yaml\" }\n- settings: >lua\n  {\n    dart = {\n      completeFunctionCalls = true,\n      showTodos = true\n    }\n  }\n<\n\n------------------------------------------------------------------------------\ndcmls\n\nhttps://dcm.dev/\n\nLanguage server for DCM analyzer.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('dcmls')\n\n\nDefault config:\n- cmd: >lua\n  { \"dcm\", \"start-server\", \"--client=neovim\" }\n- filetypes: >lua\n  { \"dart\" }\n- root_markers: >lua\n  { \"pubspec.yaml\" }\n<\n\n------------------------------------------------------------------------------\ndebputy\n\nhttps://salsa.debian.org/debian/debputy\n\nLanguage Server for Debian packages.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('debputy')\n\n\nDefault config:\n- cmd: >lua\n  { \"debputy\", \"lsp\", \"server\" }\n- filetypes: >lua\n  { \"debcontrol\", \"debcopyright\", \"debchangelog\", \"autopkgtest\", \"make\", \"yaml\" }\n- root_markers: >lua\n  { \"debian\" }\n<\n\n------------------------------------------------------------------------------\ndenols\n\nhttps://github.com/denoland/deno\n\nDeno's built-in language server\n\nTo appropriately highlight codefences returned from denols, you will need to augment vim.g.markdown_fenced languages\n in your init.lua. Example:\n>lua\n  vim.g.markdown_fenced_languages = {\n    \"ts=typescript\"\n  }\n\nSome care must be taken here to correctly infer whether a file is part of a Deno program, or a TS program that\nexpects to run in Node or Web Browsers. This supports having a Deno module that is a part of a mostly-not-Deno\nmonorepo. We do this by finding the nearest package manager lock file, and the nearest deno.json or deno.jsonc.\nNote that this means that without a deno.json, deno.jsonc, or deno.lock file, this LSP client will not attach.\n\nExample:\n>\n  project-root\n  +-- node_modules/...\n  +-- package-lock.json\n  +-- package.json\n  +-- packages\n      +-- deno-module\n      |   +-- deno.json\n      |   +-- package.json <-- It's normal for Deno projects to have package.json files!\n      |   +-- src\n      |       +-- index.ts <-- this is a Deno file\n      +-- node-module\n          +-- package.json\n          +-- src\n              +-- index.ts <-- a non-Deno file (ie, should use ts_ls or tsgo)\n\nFrom the file being edited, we walk up to find the nearest package manager lockfile. This is PROJECT ROOT.\nFrom the file being edited, find the nearest deno.json or deno.jsonc. This is DENO ROOT.\nFrom the file being edited, find the nearest deno.lock. This is DENO LOCK ROOT\nIf DENO LOCK ROOT is found, and PROJECT ROOT is missing or shorter, then this is a deno file, and we attach.\nIf DENO ROOT is found, and it's longer than or equal to PROJECT ROOT, then this is a Deno file, and we attach.\nOtherwise, we abort, because this is a non-Deno TS file.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('denols')\n\n\nDefault config:\n- cmd: >lua\n  { \"deno\", \"lsp\" }\n- cmd_env: >lua\n  {\n    NO_COLOR = true\n  }\n- filetypes: >lua\n  { \"javascript\", \"javascriptreact\", \"typescript\", \"typescriptreact\" }\n- handlers: >lua\n  {\n    [\"textDocument/definition\"] = <function 1>,\n    [\"textDocument/references\"] = <function 1>,\n    [\"textDocument/typeDefinition\"] = <function 1>\n  }\n- on_attach (use \"gF\" to view): ../lsp/denols.lua:98\n- root_dir (use \"gF\" to view): ../lsp/denols.lua:98\n- settings: >lua\n  {\n    deno = {\n      enable = true,\n      suggest = {\n        imports = {\n          hosts = {\n            [\"https://deno.land\"] = true\n          }\n        }\n      }\n    }\n  }\n<\n\n------------------------------------------------------------------------------\ndhall_lsp_server\n\nhttps://github.com/dhall-lang/dhall-haskell/tree/master/dhall-lsp-server\n\nlanguage server for dhall\n\n`dhall-lsp-server` can be installed via cabal >sh\n  cabal install dhall-lsp-server\nprebuilt binaries can be found [here](https://github.com/dhall-lang/dhall-haskell/releases).\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('dhall_lsp_server')\n\n\nDefault config:\n- cmd: >lua\n  { \"dhall-lsp-server\" }\n- filetypes: >lua\n  { \"dhall\" }\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\ndiagnosticls\n\nhttps://github.com/iamcco/diagnostic-languageserver\n\nDiagnostic language server integrate with linters.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('diagnosticls')\n\n\nDefault config:\n- cmd: >lua\n  { \"diagnostic-languageserver\", \"--stdio\" }\n- filetypes: >lua\n  {}\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\ndigestif\n\nhttps://github.com/astoff/digestif\n\nDigestif is a code analyzer, and a language server, for LaTeX, ConTeXt et caterva. It provides\n\ncontext-sensitive completion, documentation, code navigation, and related functionality to any\n\ntext editor that speaks the LSP protocol.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('digestif')\n\n\nDefault config:\n- cmd: >lua\n  { \"digestif\" }\n- filetypes: >lua\n  { \"tex\", \"plaintex\", \"context\" }\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\ndjls\n\nhttps://github.com/joshuadavidthomas/django-language-server\n\n`djls`, a language server for the Django web framework.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('djls')\n\n\nDefault config:\n- cmd: >lua\n  { \"djls\", \"serve\" }\n- filetypes: >lua\n  { \"htmldjango\", \"html\", \"python\" }\n- root_markers: >lua\n  { \"manage.py\", \"pyproject.toml\", \".git\" }\n<\n\n------------------------------------------------------------------------------\ndjlsp\n\nhttps://github.com/fourdigits/django-template-lsp\n\n`djlsp`, a language server for Django templates.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('djlsp')\n\n\nDefault config:\n- cmd: >lua\n  { \"djlsp\" }\n- filetypes: >lua\n  { \"html\", \"htmldjango\" }\n- root_markers: >lua\n  { \".git\" }\n- settings: >lua\n  {}\n<\n\n------------------------------------------------------------------------------\ndocker_compose_language_service\n\nhttps://github.com/microsoft/compose-language-service\nThis project contains a language service for Docker Compose.\n\n`compose-language-service` can be installed via `npm`:\n>sh\n  npm install @microsoft/compose-language-service\n\nNote: If the docker-compose-langserver doesn't startup when entering a `docker-compose.yaml` file, make sure that the filetype is `yaml.docker-compose`. You can set with: `:set filetype=yaml.docker-compose`.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('docker_compose_language_service')\n\n\nDefault config:\n- cmd: >lua\n  { \"docker-compose-langserver\", \"--stdio\" }\n- filetypes: >lua\n  { \"yaml.docker-compose\" }\n- root_markers: >lua\n  { \"docker-compose.yaml\", \"docker-compose.yml\", \"compose.yaml\", \"compose.yml\" }\n<\n\n------------------------------------------------------------------------------\ndocker_language_server\n\nhttps://github.com/docker/docker-language-server\n\n`docker-langserver-server` can be installed via `go` >sh\n  go install github.com/docker/docker-language-server/cmd/docker-language-server@latest\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('docker_language_server')\n\n\nDefault config:\n- cmd: >lua\n  { \"docker-language-server\", \"start\", \"--stdio\" }\n- filetypes: >lua\n  { \"dockerfile\", \"yaml.docker-compose\" }\n- get_language_id (use \"gF\" to view): ../lsp/docker_language_server.lua:11\n- root_markers: >lua\n  { \"Dockerfile\", \"docker-compose.yaml\", \"docker-compose.yml\", \"compose.yaml\", \"compose.yml\", \"docker-bake.json\", \"docker-bake.hcl\", \"docker-bake.override.json\", \"docker-bake.override.hcl\" }\n<\n\n------------------------------------------------------------------------------\ndockerls\n\nhttps://github.com/rcjsuen/dockerfile-language-server-nodejs\n\n`docker-langserver` can be installed via `npm` >sh\n  npm install -g dockerfile-language-server-nodejs\n\nAdditional configuration can be applied in the following way >lua\n  vim.lsp.config('dockerls', {\n      settings = {\n          docker = {\n  \t    languageserver = {\n  \t        formatter = {\n  \t\t    ignoreMultilineInstructions = true,\n  \t\t},\n  \t    },\n  \t}\n      }\n  })\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('dockerls')\n\n\nDefault config:\n- cmd: >lua\n  { \"docker-langserver\", \"--stdio\" }\n- filetypes: >lua\n  { \"dockerfile\" }\n- root_markers: >lua\n  { \"Dockerfile\" }\n<\n\n------------------------------------------------------------------------------\ndolmenls\n\nhttps://github.com/Gbury/dolmen/blob/master/doc/lsp.md\n\n`dolmenls` can be installed via `opam >sh\n  opam install dolmen_lsp\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('dolmenls')\n\n\nDefault config:\n- cmd: >lua\n  { \"dolmenls\" }\n- filetypes: >lua\n  { \"smt2\", \"tptp\", \"p\", \"cnf\", \"icnf\", \"zf\" }\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\ndotls\n\nhttps://github.com/nikeee/dot-language-server\n\n`dot-language-server` can be installed via `npm` >sh\n  npm install -g dot-language-server\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('dotls')\n\n\nDefault config:\n- cmd: >lua\n  { \"dot-language-server\", \"--stdio\" }\n- filetypes: >lua\n  { \"dot\" }\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\ndprint\n\nhttps://github.com/dprint/dprint\n\nPluggable and configurable code formatting platform written in Rust.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('dprint')\n\n\nDefault config:\n- cmd: >lua\n  { \"dprint\", \"lsp\" }\n- filetypes: >lua\n  { \"javascript\", \"javascriptreact\", \"typescript\", \"typescriptreact\", \"json\", \"jsonc\", \"markdown\", \"python\", \"toml\", \"rust\", \"roslyn\", \"graphql\" }\n- root_markers: >lua\n  { \"dprint.json\", \".dprint.json\", \"dprint.jsonc\", \".dprint.jsonc\" }\n- settings: >lua\n  {}\n<\n\n------------------------------------------------------------------------------\nds_pinyin_lsp\n\nhttps://github.com/iamcco/ds-pinyin-lsp\nDead simple Pinyin language server for input Chinese without IME(input method).\nTo install, download the latest [release](https://github.com/iamcco/ds-pinyin-lsp/releases) and ensure `ds-pinyin-lsp` is on your path.\nAnd make ensure the database file `dict.db3` is also downloaded. And put the path to `dict.dbs` in the following code.\n>lua\n\n  vim.lsp.config('ds_pinyin_lsp', {\n      init_options = {\n          db_path = \"your_path_to_database\"\n      }\n  })\n\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('ds_pinyin_lsp')\n\n\nDefault config:\n- cmd: >lua\n  { \"ds-pinyin-lsp\" }\n- filetypes: >lua\n  { \"markdown\", \"org\" }\n- init_options: >lua\n  {\n    completion_on = true,\n    match_as_same_as_input = true,\n    match_long_input = true,\n    max_suggest = 15,\n    show_symbols = true,\n    show_symbols_by_n_times = 0,\n    show_symbols_only_follow_by_hanzi = false\n  }\n- on_attach (use \"gF\" to view): ../lsp/ds_pinyin_lsp.lua:48\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\ndts_lsp\n\n`dts-lsp` is an LSP for Devicetree files built on top of tree-sitter-devicetree grammar.\nLanguage servers can be used in many editors, such as Visual Studio Code, Emacs\nor Vim\n\nInstall `dts-lsp` from https://github.com/igor-prusov/dts-lsp and add it to path\n\n`dts-lsp` doesn't require any configuration.\n\nMore about Devicetree:\nhttps://www.devicetree.org/\nhttps://docs.zephyrproject.org/latest/build/dts/index.html\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('dts_lsp')\n\n\nDefault config:\n- cmd: >lua\n  { \"dts-lsp\" }\n- filetypes: >lua\n  { \"dts\", \"dtsi\", \"overlay\" }\n- name: >lua\n  \"dts_lsp\"\n- root_markers: >lua\n  { \".git\" }\n- settings: >lua\n  {}\n<\n\n------------------------------------------------------------------------------\nearthlyls\n\nhttps://github.com/glehmann/earthlyls\n\nA fast language server for earthly.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('earthlyls')\n\n\nDefault config:\n- cmd: >lua\n  { \"earthlyls\" }\n- filetypes: >lua\n  { \"earthfile\" }\n- root_markers: >lua\n  { \"Earthfile\" }\n<\n\n------------------------------------------------------------------------------\necsact\n\nhttps://github.com/ecsact-dev/ecsact_lsp_server\n\nLanguage server for Ecsact.\n\nThe default cmd assumes `ecsact_lsp_server` is in your PATH. Typically from the\nEcsact SDK: https://ecsact.dev/start\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('ecsact')\n\n\nDefault config:\n- cmd: >lua\n  { \"ecsact_lsp_server\", \"--stdio\" }\n- filetypes: >lua\n  { \"ecsact\" }\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\nefm\n\nhttps://github.com/mattn/efm-langserver\n\nGeneral purpose Language Server that can use specified error message format generated from specified command.\n\nRequires at minimum EFM version [v0.0.38](https://github.com/mattn/efm-langserver/releases/tag/v0.0.38) to support\nlaunching the language server on single files.\n\nNote: In order for neovim's built-in language server client to send the appropriate `languageId` to EFM, **you must\nspecify `filetypes` in your call to `vim.lsp.config`**. Otherwise the server will be launch on the `BufEnter` instead\nof the `FileType` autocommand, and the `filetype` variable used to populate the `languageId` will not yet be set.\n>lua\n  vim.lsp.config('efm', {\n    filetypes = { 'python','cpp','lua' }\n    settings = ..., -- You must populate this according to the EFM readme\n  })\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('efm')\n\n\nDefault config:\n- cmd: >lua\n  { \"efm-langserver\" }\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\nelixirls\n\nhttps://github.com/elixir-lsp/elixir-ls\n\n`elixir-ls` can be installed by following the instructions [here](https://github.com/elixir-lsp/elixir-ls#building-and-running).\n\n1. Download the zip from https://github.com/elixir-lsp/elixir-ls/releases/latest/\n2. Unzip it and make it executable.\n   ```bash\n   unzip elixir-ls.zip -d /path/to/elixir-ls\n   # Unix\n   chmod +x /path/to/elixir-ls/language_server.sh\n   ```\n\n**By default, elixir-ls doesn't have a `cmd` set.** This is because nvim-lspconfig does not make assumptions about\nyour path. You must add the following to your init.vim or init.lua to set `cmd` to the absolute path ($HOME and\n~ are not expanded) of your unzipped elixir-ls.\n>lua\n  vim.lsp.config('elixirls', {\n      -- Unix\n      cmd = { \"/path/to/elixir-ls/language_server.sh\" };\n      -- Windows\n      cmd = { \"/path/to/elixir-ls/language_server.bat\" };\n      ...\n  })\n\n'root_dir' is chosen like this: if two or more directories containing `mix.exs` were found when searching\ndirectories upward, the second one (higher up) is chosen, with the assumption that it is the root of an umbrella\napp. Otherwise the directory containing the single mix.exs that was found is chosen.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('elixirls')\n\n\nDefault config:\n- cmd: >lua\n  { \"elixir-ls\" }\n- filetypes: >lua\n  { \"elixir\", \"eelixir\", \"heex\", \"surface\" }\n- root_dir (use \"gF\" to view): ../lsp/elixirls.lua:34\n<\n\n------------------------------------------------------------------------------\nelmls\n\nhttps://github.com/elm-tooling/elm-language-server#installation\n\nIf you don't want to use Nvim to install it, then you can use >sh\n  npm install -g elm elm-test elm-format @elm-tooling/elm-language-server\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('elmls')\n\n\nDefault config:\n- capabilities: >lua\n  {\n    offsetEncoding = { \"utf-8\", \"utf-16\" }\n  }\n- cmd: >lua\n  { \"elm-language-server\" }\n- filetypes: >lua\n  { \"elm\" }\n- init_options: >lua\n  {\n    disableElmLSDiagnostics = false,\n    elmReviewDiagnostics = \"off\",\n    onlyUpdateDiagnosticsOnSave = false,\n    skipInstallPackageConfirmation = false\n  }\n- root_dir (use \"gF\" to view): ../lsp/elmls.lua:13\n<\n\n------------------------------------------------------------------------------\nelp\n\nhttps://whatsapp.github.io/erlang-language-platform\n\nELP integrates Erlang into modern IDEs via the language server protocol and was\ninspired by rust-analyzer.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('elp')\n\n\nDefault config:\n- cmd: >lua\n  { \"elp\", \"server\" }\n- filetypes: >lua\n  { \"erlang\" }\n- root_markers: >lua\n  { \"rebar.config\", \"erlang.mk\", \".git\" }\n<\n\n------------------------------------------------------------------------------\nember\n\nhttps://github.com/ember-tooling/ember-language-server\n\n`ember-language-server` can be installed via `npm`:\n>sh\n  npm install -g @ember-tooling/ember-language-server\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('ember')\n\n\nDefault config:\n- cmd: >lua\n  { \"ember-language-server\", \"--stdio\" }\n- filetypes: >lua\n  { \"handlebars\", \"typescript\", \"javascript\", \"typescript.glimmer\", \"javascript.glimmer\" }\n- root_markers: >lua\n  { \"ember-cli-build.js\", \".git\" }\n<\n\n------------------------------------------------------------------------------\nemmet_language_server\n\nhttps://github.com/olrtg/emmet-language-server\n\nPackage can be installed via `npm` >sh\n  npm install -g @olrtg/emmet-language-server\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('emmet_language_server')\n\n\nDefault config:\n- cmd: >lua\n  { \"emmet-language-server\", \"--stdio\" }\n- filetypes: >lua\n  { \"astro\", \"css\", \"eruby\", \"html\", \"htmlangular\", \"htmldjango\", \"javascriptreact\", \"less\", \"sass\", \"scss\", \"svelte\", \"typescriptreact\", \"vue\" }\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\nemmet_ls\n\nhttps://github.com/aca/emmet-ls\n\nPackage can be installed via `npm` >sh\n  npm install -g emmet-ls\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('emmet_ls')\n\n\nDefault config:\n- cmd: >lua\n  { \"emmet-ls\", \"--stdio\" }\n- filetypes: >lua\n  { \"astro\", \"css\", \"eruby\", \"html\", \"htmlangular\", \"htmldjango\", \"javascriptreact\", \"less\", \"pug\", \"sass\", \"scss\", \"svelte\", \"templ\", \"typescriptreact\", \"vue\" }\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\nemmylua_ls\n\nhttps://github.com/EmmyLuaLs/emmylua-analyzer-rust\n\nEmmylua Analyzer Rust. Language Server for Lua.\n\n`emmylua_ls` can be installed using `cargo` by following the instructions[here]\n(https://github.com/EmmyLuaLs/emmylua-analyzer-rust?tab=readme-ov-file#install).\n\nThe default `cmd` assumes that the `emmylua_ls` binary can be found in `$PATH`.\nIt might require you to provide cargo binaries installation path in it.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('emmylua_ls')\n\n\nDefault config:\n- cmd: >lua\n  { \"emmylua_ls\" }\n- filetypes: >lua\n  { \"lua\" }\n- root_markers: >lua\n  { \".luarc.json\", \".emmyrc.json\", \".luacheckrc\", \".git\" }\n- `workspace_required` : `false`\n<\n\n------------------------------------------------------------------------------\nerg_language_server\n\nhttps://github.com/erg-lang/erg#flags ELS\n\nELS (erg-language-server) is a language server for the Erg programming language.\n\nerg-language-server can be installed via `cargo` and used as follows:\n>sh\n  cargo install erg --features els\n  erg --language-server\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('erg_language_server')\n\n\nDefault config:\n- cmd: >lua\n  { \"erg\", \"--language-server\" }\n- filetypes: >lua\n  { \"erg\" }\n- root_markers: >lua\n  { \"package.er\", \".git\" }\n<\n\n------------------------------------------------------------------------------\nesbonio\n\nhttps://github.com/swyddfa/esbonio\n\nEsbonio is a language server for [Sphinx](https://www.sphinx-doc.org/en/master/) documentation projects.\nThe language server can be installed via pip\n>\n  pip install esbonio\n\nSince Sphinx is highly extensible you will get best results if you install the language server in the same\nPython environment as the one used to build your documentation. To ensure that the correct Python environment\nis picked up, you can either launch `nvim` with the correct environment activated.\n>\n  source env/bin/activate\n  nvim\n\nOr you can modify the default `cmd` to include the full path to the Python interpreter.\n>lua\n  vim.lsp.config('esbonio', {\n    cmd = { '/path/to/virtualenv/bin/python', '-m', 'esbonio' }\n  })\n\nEsbonio supports a number of config values passed as `init_options` on startup, for example.\n>lua\n  vim.lsp.config('esbonio', {\n    init_options = {\n      server = {\n        logLevel = \"debug\"\n      },\n      sphinx = {\n        confDir = \"/path/to/docs\",\n        srcDir = \"${confDir}/../docs-src\"\n      }\n  })\n\nA full list and explanation of the available options can be found [here](https://docs.esbon.io/en/esbonio-language-server-v0.16.4/lsp/getting-started.html?editor=neovim-lspconfig#configuration)\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('esbonio')\n\n\nDefault config:\n- cmd: >lua\n  { \"python3\", \"-m\", \"esbonio\" }\n- filetypes: >lua\n  { \"rst\" }\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\neslint\n\nhttps://github.com/hrsh7th/vscode-langservers-extracted\n\n`vscode-eslint-language-server` is a linting engine for JavaScript / Typescript.\nIt can be installed via `npm`:\n>sh\n  npm i -g vscode-langservers-extracted\n\nThe default `on_attach` config provides the `LspEslintFixAll` command that can be used to format a document on save >lua\n  local base_on_attach = vim.lsp.config.eslint.on_attach\n  vim.lsp.config(\"eslint\", {\n    on_attach = function(client, bufnr)\n      if not base_on_attach then return end\n\n      base_on_attach(client, bufnr)\n      vim.api.nvim_create_autocmd(\"BufWritePre\", {\n        buffer = bufnr,\n        command = \"LspEslintFixAll\",\n      })\n    end,\n  })\n\nSee [vscode-eslint](https://github.com/microsoft/vscode-eslint/blob/55871979d7af184bf09af491b6ea35ebd56822cf/server/src/eslintServer.ts#L216-L229) for configuration options.\n\nMessages handled in lspconfig: `eslint/openDoc`, `eslint/confirmESLintExecution`, `eslint/probeFailed`, `eslint/noLibrary`\n\nAdditional messages you can handle: `eslint/noConfig`\n\n### Monorepo support\n\n`vscode-eslint-language-server` supports monorepos by default. It will automatically find the config file corresponding to the package you are working on. You can use different configs in different packages.\nThis works without the need of spawning multiple instances of `vscode-eslint-language-server`.\nYou can use a different version of ESLint in each package, but it is recommended to use the same version of ESLint in all packages. The location of the ESLint binary will be determined automatically.\n\n/!\\ When using flat config files, you need to use them across all your packages in your monorepo, as it's a global setting for the server.\n\n### Flat config in ESLint versions prior to 10.0\n\nIf you're using a ESLint version that supports both flat config and eslintrc (>= 8.21, < 10.0) and want to change\nthe [default behavior](https://eslint.org/blog/2023/10/flat-config-rollout-plans/), you'll need to set\n`experimental.useFlatConfig` accordingly >lua\n  vim.lsp.config(\"eslint\", {\n    settings = {\n      experimental = {\n        -- If you want to use flat config on >= 8.21, < 9.0\n        useFlatConfig = true,\n        -- Or if you want to use eslintrc on 9.*\n        -- useFlatConfig = false,\n      }\n    }\n  })\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('eslint')\n\n\nDefault config:\n- before_init (use \"gF\" to view): ../lsp/eslint.lua:79\n- cmd: >lua\n  { \"vscode-eslint-language-server\", \"--stdio\" }\n- filetypes: >lua\n  { \"javascript\", \"javascriptreact\", \"typescript\", \"typescriptreact\", \"vue\", \"svelte\", \"astro\", \"htmlangular\" }\n- handlers: >lua\n  {\n    [\"eslint/confirmESLintExecution\"] = <function 1>,\n    [\"eslint/noLibrary\"] = <function 2>,\n    [\"eslint/openDoc\"] = <function 3>,\n    [\"eslint/probeFailed\"] = <function 4>\n  }\n- on_attach (use \"gF\" to view): ../lsp/eslint.lua:79\n- root_dir (use \"gF\" to view): ../lsp/eslint.lua:79\n- settings: >lua\n  {\n    codeAction = {\n      disableRuleComment = {\n        enable = true,\n        location = \"separateLine\"\n      },\n      showDocumentation = {\n        enable = true\n      }\n    },\n    codeActionOnSave = {\n      enable = false,\n      mode = \"all\"\n    },\n    experimental = {},\n    format = true,\n    nodePath = \"\",\n    onIgnoredFiles = \"off\",\n    problems = {\n      shortenToSingleLine = false\n    },\n    quiet = false,\n    rulesCustomizations = {},\n    run = \"onType\",\n    useESLintClass = false,\n    validate = \"on\",\n    workingDirectory = {\n      mode = \"auto\"\n    }\n  }\n- `workspace_required` : `true`\n<\n\n------------------------------------------------------------------------------\nexpert\n\nhttps://github.com/elixir-lang/expert\n\nExpert is the official language server implementation for the Elixir programming language.\n\n'root_dir' is chosen like this: if two or more directories containing `mix.exs` were found when\nsearching directories upward, the second one (higher up) is chosen, with the assumption that it\nis the root of an umbrella app. Otherwise the directory containing the single mix.exs that was\nfound is chosen.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('expert')\n\n\nDefault config:\n- cmd: >lua\n  { \"expert\", \"--stdio\" }\n- filetypes: >lua\n  { \"elixir\", \"eelixir\", \"heex\", \"surface\" }\n- root_dir (use \"gF\" to view): ../lsp/expert.lua:13\n<\n\n------------------------------------------------------------------------------\nfacility_language_server\n\nhttps://github.com/FacilityApi/FacilityLanguageServer\n\nFacility language server protocol (LSP) support.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('facility_language_server')\n\n\nDefault config:\n- cmd: >lua\n  { \"facility-language-server\" }\n- filetypes: >lua\n  { \"fsd\" }\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\nfennel_language_server\n\nhttps://github.com/rydesun/fennel-language-server\n\nFennel language server protocol (LSP) support.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('fennel_language_server')\n\n\nDefault config:\n- cmd: >lua\n  { \"fennel-language-server\" }\n- filetypes: >lua\n  { \"fennel\" }\n- root_markers: >lua\n  { \".git\" }\n- settings: >lua\n  {}\n<\n\n------------------------------------------------------------------------------\nfennel_ls\n\nhttps://sr.ht/~xerool/fennel-ls/\n\nA language server for fennel.\n\nfennel-ls is configured using the closest file to your working directory named `flsproject.fnl`.\nAll fennel-ls configuration options [can be found here](https://git.sr.ht/~xerool/fennel-ls/tree/HEAD/docs/manual.md#configuration).\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('fennel_ls')\n\n\nDefault config:\n- capabilities: >lua\n  {\n    offsetEncoding = { \"utf-8\", \"utf-16\" }\n  }\n- cmd: >lua\n  { \"fennel-ls\" }\n- filetypes: >lua\n  { \"fennel\" }\n- root_dir (use \"gF\" to view): ../lsp/fennel_ls.lua:11\n- settings: >lua\n  {}\n<\n\n------------------------------------------------------------------------------\nfish_lsp\n\nhttps://github.com/ndonfris/fish-lsp\n\nA Language Server Protocol (LSP) tailored for the fish shell.\nThis project aims to enhance the coding experience for fish,\nby introducing a suite of intelligent features like auto-completion,\nscope aware symbol analysis, per-token hover generation, and many others.\n\n[homepage](https://www.fish-lsp.dev/)\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('fish_lsp')\n\n\nDefault config:\n- cmd: >lua\n  { \"fish-lsp\", \"start\" }\n- filetypes: >lua\n  { \"fish\" }\n- root_markers: >lua\n  { \"config.fish\", \".git\" }\n<\n\n------------------------------------------------------------------------------\nflow\n\nhttps://flow.org/\nhttps://github.com/facebook/flow\n\nSee below for how to setup Flow itself.\nhttps://flow.org/en/docs/install/\n\nSee below for lsp command options.\n>sh\n  npx flow lsp --help\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('flow')\n\n\nDefault config:\n- cmd (use \"gF\" to view): ../lsp/flow.lua:16\n- filetypes: >lua\n  { \"javascript\", \"javascriptreact\" }\n- root_markers: >lua\n  { \".flowconfig\" }\n<\n\n------------------------------------------------------------------------------\nflux_lsp\n\nhttps://github.com/influxdata/flux-lsp\n`flux-lsp` can be installed via `cargo` >sh\n  cargo install --git https://github.com/influxdata/flux-lsp\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('flux_lsp')\n\n\nDefault config:\n- cmd: >lua\n  { \"flux-lsp\" }\n- filetypes: >lua\n  { \"flux\" }\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\nfoam_ls\n\nhttps://github.com/FoamScience/foam-language-server\n\n`foam-language-server` can be installed via `npm >sh\n  npm install -g foam-language-server\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('foam_ls')\n\n\nDefault config:\n- cmd: >lua\n  { \"foam-ls\", \"--stdio\" }\n- filetypes: >lua\n  { \"foam\", \"OpenFOAM\" }\n- root_dir (use \"gF\" to view): ../lsp/foam_ls.lua:11\n<\n\n------------------------------------------------------------------------------\nfortitude\n\nhttps://fortitude.readthedocs.io/en/stable/\n\nFortitude is a Fortran linter built in Rust and inspired by (and build upon) Ruff\n>sh\n  # Install With uv:\n  uv tool install fortitude-lint@latest\n\n  # Install with pip:\n  pip install fortitude-lint\n\n**LSP is available in Fortitude `v0.8.0`.**\n\nRefer to the [documentation](https://fortitude.readthedocs.io/en/stable/editors/) for more details.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('fortitude')\n\n\nDefault config:\n- cmd: >lua\n  { \"fortitude\", \"server\" }\n- filetypes: >lua\n  { \"fortran\" }\n- root_markers: >lua\n  { \"fpm.toml\", \"fortitude.toml\", \".fortitude.toml\", \".git\" }\n- settings: >lua\n  {}\n<\n\n------------------------------------------------------------------------------\nfortls\n\nhttps://fortls.fortran-lang.org/index.html\n\nfortls is a Fortran Language Server, the server can be installed via pip\n>sh\n  pip install fortls\n\nSettings to the server can be passed either through the `cmd` option or through\na local configuration file e.g. `.fortls`. For more information\nsee the `fortls` [documentation](https://fortls.fortran-lang.org/options.html).\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('fortls')\n\n\nDefault config:\n- cmd: >lua\n  { \"fortls\", \"--notify_init\", \"--hover_signature\", \"--hover_language=fortran\", \"--use_signature_help\" }\n- filetypes: >lua\n  { \"fortran\" }\n- root_markers: >lua\n  { \".fortls\", \".fortlsrc\", \".fortls.json\", \".git\" }\n- settings: >lua\n  {}\n<\n\n------------------------------------------------------------------------------\nfsautocomplete\n\nhttps://github.com/fsharp/FsAutoComplete\n\nLanguage Server for F# provided by FsAutoComplete (FSAC).\n\nFsAutoComplete requires the [dotnet-sdk](https://dotnet.microsoft.com/download) to be installed.\n\nThe preferred way to install FsAutoComplete is with `dotnet tool install --global fsautocomplete`.\n\nInstructions to compile from source are found on the main [repository](https://github.com/fsharp/FsAutoComplete).\n\nYou may also need to configure the filetype as Vim defaults to Forth for `*.fs` files:\n\n`autocmd BufNewFile,BufRead *.fs,*.fsx,*.fsi set filetype=fsharp`\n\nThis is automatically done by plugins such as [PhilT/vim-fsharp](https://github.com/PhilT/vim-fsharp), [fsharp/vim-fsharp](https://github.com/fsharp/vim-fsharp), and [adelarsq/neofsharp.vim](https://github.com/adelarsq/neofsharp.vim).\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('fsautocomplete')\n\n\nDefault config:\n- cmd: >lua\n  { \"fsautocomplete\", \"--adaptive-lsp-server-enabled\" }\n- filetypes: >lua\n  { \"fsharp\" }\n- init_options: >lua\n  {\n    AutomaticWorkspaceInit = true\n  }\n- root_dir (use \"gF\" to view): ../lsp/fsautocomplete.lua:23\n- settings: >lua\n  {\n    FSharp = {\n      EnableReferenceCodeLens = true,\n      ExternalAutocomplete = false,\n      InterfaceStubGeneration = true,\n      InterfaceStubGenerationMethodBody = 'failwith \"Not Implemented\"',\n      InterfaceStubGenerationObjectIdentifier = \"this\",\n      Linter = true,\n      RecordStubGeneration = true,\n      RecordStubGenerationBody = 'failwith \"Not Implemented\"',\n      ResolveNamespaces = true,\n      SimplifyNameAnalyzer = true,\n      UnionCaseStubGeneration = true,\n      UnionCaseStubGenerationBody = 'failwith \"Not Implemented\"',\n      UnusedDeclarationsAnalyzer = true,\n      UnusedOpensAnalyzer = true,\n      UseSdkScripts = true,\n      keywordsAutocomplete = true\n    }\n  }\n<\n\n------------------------------------------------------------------------------\nfsharp_language_server\n\nF# Language Server\nhttps://github.com/faldor20/fsharp-language-server\n\nAn implementation of the language server protocol using the F# Compiler Service.\n\nBuild the project from source and override the command path to location of DLL.\n\nIf filetype determination is not already performed by an available plugin ([PhilT/vim-fsharp](https://github.com/PhilT/vim-fsharp), [fsharp/vim-fsharp](https://github.com/fsharp/vim-fsharp), and [adelarsq/neofsharp.vim](https://github.com/adelarsq/neofsharp.vim).\n), then the following must be added to initialization configuration:\n\n\n`autocmd BufNewFile,BufRead *.fs,*.fsx,*.fsi set filetype=fsharp`\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('fsharp_language_server')\n\n\nDefault config:\n- cmd: >lua\n  { \"dotnet\", \"FSharpLanguageServer.dll\" }\n- filetypes: >lua\n  { \"fsharp\" }\n- init_options: >lua\n  {\n    AutomaticWorkspaceInit = true\n  }\n- root_dir (use \"gF\" to view): ../lsp/fsharp_language_server.lua:19\n- settings: >lua\n  {}\n<\n\n------------------------------------------------------------------------------\nfstar\n\nhttps://github.com/FStarLang/FStar\n\nLSP support is included in FStar. Make sure `fstar.exe` is in your PATH.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('fstar')\n\n\nDefault config:\n- cmd: >lua\n  { \"fstar.exe\", \"--lsp\" }\n- filetypes: >lua\n  { \"fstar\" }\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\nfuthark_lsp\n\nhttps://github.com/diku-dk/futhark\n\nFuthark Language Server\n\nThis language server comes with the futhark compiler and is run with the command>\n  futhark lsp\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('futhark_lsp')\n\n\nDefault config:\n- cmd: >lua\n  { \"futhark\", \"lsp\" }\n- filetypes: >lua\n  { \"futhark\", \"fut\" }\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\ngdscript\n\nhttps://github.com/godotengine/godot\n\nLanguage server for GDScript, used by Godot Engine.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('gdscript')\n\n\nDefault config:\n- cmd (use \"gF\" to view): ../lsp/gdscript.lua:11\n- filetypes: >lua\n  { \"gd\", \"gdscript\", \"gdscript3\" }\n- root_markers: >lua\n  { \"project.godot\", \".git\" }\n<\n\n------------------------------------------------------------------------------\ngdshader_lsp\n\nhttps://github.com/godofavacyn/gdshader-lsp\n\nA language server for the Godot Shading language.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('gdshader_lsp')\n\n\nDefault config:\n- cmd: >lua\n  { \"gdshader-lsp\", \"--stdio\" }\n- filetypes: >lua\n  { \"gdshader\", \"gdshaderinc\" }\n- root_markers: >lua\n  { \"project.godot\" }\n<\n\n------------------------------------------------------------------------------\ngh_actions_ls\n\nhttps://github.com/lttb/gh-actions-language-server\n\nLanguage server for GitHub Actions.\n\nThe projects [forgejo](https://forgejo.org/) and [gitea](https://about.gitea.com/)\ndesign their actions to be as compatible to github as possible\nwith only [a few differences](https://docs.gitea.com/usage/actions/comparison#unsupported-workflows-syntax) between the systems.\nThe `gh_actions_ls` is therefore enabled for those `yaml` files as well.\n\nThe `gh-actions-language-server` can be installed via `npm`:\n>sh\n  npm install -g gh-actions-language-server\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('gh_actions_ls')\n\n\nDefault config:\n- capabilities: >lua\n  {\n    workspace = {\n      didChangeWorkspaceFolders = {\n        dynamicRegistration = true\n      }\n    }\n  }\n- cmd: >lua\n  { \"gh-actions-language-server\", \"--stdio\" }\n- filetypes: >lua\n  { \"yaml\" }\n- handlers: >lua\n  {\n    [\"actions/readFile\"] = <function 1>\n  }\n- init_options: >lua\n  {}\n- root_dir (use \"gF\" to view): ../lsp/gh_actions_ls.lua:18\n<\n\n------------------------------------------------------------------------------\nghcide\n\nhttps://github.com/digital-asset/ghcide\n\nA library for building Haskell IDE tooling.\n\"ghcide\" isn't for end users now. Use \"haskell-language-server\" instead of \"ghcide\".\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('ghcide')\n\n\nDefault config:\n- cmd: >lua\n  { \"ghcide\", \"--lsp\" }\n- filetypes: >lua\n  { \"haskell\", \"lhaskell\" }\n- root_markers: >lua\n  { \"stack.yaml\", \"hie-bios\", \"BUILD.bazel\", \"cabal.config\", \"package.yaml\" }\n<\n\n------------------------------------------------------------------------------\nghdl_ls\n\nhttps://github.com/ghdl/ghdl-language-server\n\nA language server for VHDL, using ghdl as its backend.\n\n`ghdl-ls` is part of pyghdl, for installation instructions see\n[the upstream README](https://github.com/ghdl/ghdl/tree/master/pyGHDL/lsp).\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('ghdl_ls')\n\n\nDefault config:\n- cmd: >lua\n  { \"ghdl-ls\" }\n- filetypes: >lua\n  { \"vhdl\" }\n- root_markers: >lua\n  { \"hdl-prj.json\", \".git\" }\n<\n\n------------------------------------------------------------------------------\nginko_ls\n\n`ginko_ls` is meant to be a feature-complete language server for device-trees.\n Language servers can be used in many editors, such as Visual Studio Code, Emacs\n or Vim\n\n Install `ginko_ls` from https://github.com/Schottkyc137/ginko and add it to path\n\n `ginko_ls` doesn't require any configuration.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('ginko_ls')\n\n\nDefault config:\n- cmd: >lua\n  { \"ginko_ls\" }\n- filetypes: >lua\n  { \"dts\" }\n- root_markers: >lua\n  { \".git\" }\n- settings: >lua\n  {}\n<\n\n------------------------------------------------------------------------------\ngitlab_ci_ls\n\nhttps://github.com/alesbrelih/gitlab-ci-ls\n\nLanguage Server for Gitlab CI\n\n`gitlab-ci-ls` can be installed via cargo:\ncargo install gitlab-ci-ls\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('gitlab_ci_ls')\n\n\nDefault config:\n- cmd: >lua\n  { \"gitlab-ci-ls\" }\n- filetypes: >lua\n  { \"yaml.gitlab\" }\n- init_options: >lua\n  {\n    cache_path = \"/home/runner/.cache/gitlab-ci-ls/\",\n    log_path = \"/home/runner/.cache/gitlab-ci-ls//log/gitlab-ci-ls.log\"\n  }\n- root_dir (use \"gF\" to view): ../lsp/gitlab_ci_ls.lua:15\n<\n\n------------------------------------------------------------------------------\ngitlab_duo\n\nGitLab Duo Language Server Configuration for Neovim\n\nhttps://gitlab.com/gitlab-org/editor-extensions/gitlab-lsp\n\nThe GitLab LSP enables any editor or IDE to integrate with GitLab Duo\nfor AI-powered code suggestions via the Language Server Protocol.\n\nPrerequisites:\n- Node.js and npm installed\n- GitLab account with Duo Pro license\n- Internet connection for OAuth device flow\n\nSetup:\n1. Run :LspGitLabDuoSignIn to start OAuth authentication\n2. Follow the browser prompts to authorize\n3. Enable inline completion in LspAttach event (see example below)\n\nInline Completion Example >lua\n  vim.api.nvim_create_autocmd('LspAttach', {\n    callback = function(args)\n      local bufnr = args.buf\n      local client = assert(vim.lsp.get_client_by_id(args.data.client_id))\n\n      if vim.lsp.inline_completion and\n         client:supports_method(vim.lsp.protocol.Methods.textDocument_inlineCompletion, bufnr) then\n        vim.lsp.inline_completion.enable(true, { bufnr = bufnr })\n\n        -- Tab to accept suggestion\n        vim.keymap.set('i', '<Tab>', function()\n          if vim.lsp.inline_completion.is_visible() then\n            return vim.lsp.inline_completion.accept()\n          else\n            return '<Tab>'\n          end\n        end, { expr = true, buffer = bufnr, desc = 'GitLab Duo: Accept suggestion' })\n\n        -- Alt/Option+[ for previous suggestion\n        vim.keymap.set('i', '<M-[>', vim.lsp.inline_completion.select_prev,\n          { buffer = bufnr, desc = 'GitLab Duo: Previous suggestion' })\n\n        -- Alt/Option+] for next suggestion\n        vim.keymap.set('i', '<M-]>', vim.lsp.inline_completion.select_next,\n          { buffer = bufnr, desc = 'GitLab Duo: Next suggestion' })\n      end\n    end\n  })\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('gitlab_duo')\n\n\nDefault config:\n- cmd: >lua\n  { \"npx\", \"--registry=https://gitlab.com/api/v4/packages/npm/\", \"@gitlab-org/gitlab-lsp\", \"--stdio\" }\n- filetypes: >lua\n  { \"ruby\", \"go\", \"javascript\", \"typescript\", \"typescriptreact\", \"javascriptreact\", \"rust\", \"lua\", \"python\", \"java\", \"cpp\", \"c\", \"php\", \"cs\", \"kotlin\", \"swift\", \"scala\", \"vue\", \"svelte\", \"html\", \"css\", \"scss\", \"json\", \"yaml\" }\n- init_options: >lua\n  {\n    editorInfo = {\n      name = \"Neovim\",\n      version = \"0.12.0-dev+g238d4fa71a\"\n    },\n    editorPluginInfo = {\n      name = \"Neovim LSP\",\n      version = \"0.12.0-dev+g238d4fa71a\"\n    },\n    extension = {\n      name = \"Neovim LSP Client\",\n      version = \"0.12.0-dev+g238d4fa71a\"\n    },\n    ide = {\n      name = \"Neovim\",\n      vendor = \"Neovim\",\n      version = \"0.12.0-dev+g238d4fa71a\"\n    }\n  }\n- on_attach (use \"gF\" to view): ../lsp/gitlab_duo.lua:317\n- on_init (use \"gF\" to view): ../lsp/gitlab_duo.lua:317\n- root_markers: >lua\n  { \".git\" }\n- settings: >lua\n  {\n    baseUrl = \"https://gitlab.com\",\n    codeCompletion = {\n      enableSecretRedaction = true\n    },\n    featureFlags = {\n      streamCodeGenerations = false\n    },\n    logLevel = \"info\",\n    telemetry = {\n      enabled = false\n    }\n  }\n<\n\n------------------------------------------------------------------------------\nglasgow\n\nhttps://github.com/nolanderc/glasgow\n\nProvides language features for WGSL (WebGPU Shading Language):\n- Completions:\n    - Local functions/variables/types.\n    - Fields and swizzles.\n    - Builtin types and functions (`dot`, `reflect`, `textureSample`, `vec3`, `mat4x2`, etc.)\n- Hover Documentation:\n    - Function signatures.\n    - Variable types.\n    - Includes builtin types and functions. Text is taken from the WGSL specification.\n- Goto Definition\n- Find all References\n- Rename\n- Formatter\n\n`glasgow` can be installed via `cargo` >sh\n  cargo install glasgow\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('glasgow')\n\n\nDefault config:\n- cmd: >lua\n  { \"glasgow\" }\n- filetypes: >lua\n  { \"wgsl\" }\n- root_markers: >lua\n  { \".git\" }\n- settings: >lua\n  {}\n<\n\n------------------------------------------------------------------------------\ngleam\n\nhttps://github.com/gleam-lang/gleam\n\nA language server for Gleam Programming Language.\n\nIt comes with the Gleam compiler, for installation see: [Installing Gleam](https://gleam.run/getting-started/installing/)\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('gleam')\n\n\nDefault config:\n- cmd: >lua\n  { \"gleam\", \"lsp\" }\n- filetypes: >lua\n  { \"gleam\" }\n- root_markers: >lua\n  { \"gleam.toml\", \".git\" }\n<\n\n------------------------------------------------------------------------------\nglint\n\nhttps://github.com/typed-ember/glint\nhttps://typed-ember.gitbook.io/glint/\n`glint-language-server` is installed when adding `@glint/core` to your project's devDependencies:\n\n```sh\nnpm install @glint/core --save-dev\nyarn add -D @glint/core\n\nThis configuration uses the local installation of `glint-language-server`\n(found in the `node_modules` directory of your project).\n\nTo use a global installation of `glint-language-server`,\nset the `init_options.glint.useGlobal` to `true`.\n\nvim.lsp.config('glint', {\n  init_options = {\n    glint = {\n      useGlobal = true,\n    },\n  },\n})\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('glint')\n\n\nDefault config:\n- cmd (use \"gF\" to view): ../lsp/glint.lua:26\n- filetypes: >lua\n  { \"html.handlebars\", \"handlebars\", \"typescript\", \"typescript.glimmer\", \"javascript\", \"javascript.glimmer\" }\n- init_options: >lua\n  {\n    glint = {\n      useGlobal = false\n    }\n  }\n- root_markers: >lua\n  { \".glintrc.yml\", \".glintrc\", \".glintrc.json\", \".glintrc.js\", \"glint.config.js\", \"package.json\" }\n- `workspace_required` : `true`\n<\n\n------------------------------------------------------------------------------\nglsl_analyzer\n\nhttps://github.com/nolanderc/glsl_analyzer\n\nLanguage server for GLSL\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('glsl_analyzer')\n\n\nDefault config:\n- capabilities: >lua\n  {}\n- cmd: >lua\n  { \"glsl_analyzer\" }\n- filetypes: >lua\n  { \"glsl\", \"vert\", \"tesc\", \"tese\", \"frag\", \"geom\", \"comp\" }\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\nglslls\n\nhttps://github.com/svenstaro/glsl-language-server\n\nLanguage server implementation for GLSL\n\n`glslls` can be compiled and installed manually, or, if your distribution has access to the AUR,\nvia the `glsl-language-server` AUR package\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('glslls')\n\n\nDefault config:\n- capabilities: >lua\n  {\n    offsetEncoding = { \"utf-8\", \"utf-16\" },\n    textDocument = {\n      completion = {\n        editsNearCursor = true\n      }\n    }\n  }\n- cmd: >lua\n  { \"glslls\", \"--stdin\" }\n- filetypes: >lua\n  { \"glsl\", \"vert\", \"tesc\", \"tese\", \"frag\", \"geom\", \"comp\" }\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\ngn_language_server\n\nhttps://github.com/google/gn-language-server\n\nA language server for GN, the build configuration language used in Chromium,\nFuchsia, and other projects.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('gn_language_server')\n\n\nDefault config:\n- cmd: >lua\n  { \"gn-language-server\", \"--stdio\" }\n- filetypes: >lua\n  { \"gn\" }\n- root_markers: >lua\n  { \".gn\", \".git\" }\n<\n\n------------------------------------------------------------------------------\ngnls\n\nhttps://github.com/microsoft/gnls\n\nMicrosoft's language server for GN build files.\n\nAssuming there is a `gnls` script somewhere in your `$PATH`, containing\nfor example:\n>shell\n  GNLS_SRC_DIR=</path/to/gnls>\n\n  exec node ${GNLS_SRC_DIR}/build/server.js $@\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('gnls')\n\n\nDefault config:\n- cmd: >lua\n  { \"gnls\", \"--stdio\" }\n- filetypes: >lua\n  { \"gn\" }\n- root_markers: >lua\n  { \".gn\", \".git\" }\n<\n\n------------------------------------------------------------------------------\ngolangci_lint_ls\n\nCombination of both lint server and client\n\nhttps://github.com/nametake/golangci-lint-langserver\nhttps://github.com/golangci/golangci-lint\n\n\nInstallation of binaries needed is done via\n>\n  go install github.com/nametake/golangci-lint-langserver@latest\n  go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('golangci_lint_ls')\n\n\nDefault config:\n- before_init (use \"gF\" to view): ../lsp/golangci_lint_ls.lua:17\n- cmd: >lua\n  { \"golangci-lint-langserver\" }\n- filetypes: >lua\n  { \"go\", \"gomod\" }\n- init_options: >lua\n  {\n    command = { \"golangci-lint\", \"run\", \"--output.text.path=\", \"--output.tab.path=\", \"--output.html.path=\", \"--output.checkstyle.path=\", \"--output.junit-xml.path=\", \"--output.teamcity.path=\", \"--output.sarif.path=\", \"--show-stats=false\", \"--output.json.path=stdout\" }\n  }\n- root_markers: >lua\n  { \".golangci.yml\", \".golangci.yaml\", \".golangci.toml\", \".golangci.json\", \"go.work\", \"go.mod\", \".git\" }\n<\n\n------------------------------------------------------------------------------\ngopls\n\nhttps://github.com/golang/tools/tree/master/gopls\n\nGoogle's lsp server for golang.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('gopls')\n\n\nDefault config:\n- cmd: >lua\n  { \"gopls\" }\n- filetypes: >lua\n  { \"go\", \"gomod\", \"gowork\", \"gotmpl\" }\n- root_dir (use \"gF\" to view): ../lsp/gopls.lua:89\n<\n\n------------------------------------------------------------------------------\ngradle_ls\n\nhttps://github.com/microsoft/vscode-gradle\n\nMicrosoft's lsp server for gradle files\n\nIf you're setting this up manually, build vscode-gradle using `./gradlew installDist` and point `cmd` to the `gradle-language-server` generated in the build directory\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('gradle_ls')\n\n\nDefault config:\n- cmd: >lua\n  { \"gradle-language-server\" }\n- filetypes: >lua\n  { \"groovy\" }\n- init_options: >lua\n  {\n    settings = {\n      gradleWrapperEnabled = true\n    }\n  }\n- root_markers: >lua\n  { \"settings.gradle\", \"build.gradle\" }\n<\n\n------------------------------------------------------------------------------\ngrammarly\n\nhttps://github.com/znck/grammarly\n\n`grammarly-languageserver` can be installed via `npm`:\n>sh\n  npm i -g grammarly-languageserver\n\nWARNING: Since this language server uses Grammarly's API, any document you open with it running is shared with them. Please evaluate their [privacy policy](https://www.grammarly.com/privacy-policy) before using this.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('grammarly')\n\n\nDefault config:\n- cmd: >lua\n  { \"grammarly-languageserver\", \"--stdio\" }\n- filetypes: >lua\n  { \"markdown\" }\n- handlers: >lua\n  {\n    [\"$/updateDocumentState\"] = <function 1>\n  }\n- init_options: >lua\n  {\n    clientId = \"client_BaDkMgx4X19X9UxxYRCXZo\"\n  }\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\ngraphql\n\nhttps://github.com/graphql/graphiql/tree/main/packages/graphql-language-service-cli\n\n`graphql-lsp` can be installed via `npm`:\n>sh\n  npm install -g graphql-language-service-cli\n\nNote that you must also have [the graphql package](https://github.com/graphql/graphql-js) installed within your project and create a [GraphQL config file](https://the-guild.dev/graphql/config/docs).\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('graphql')\n\n\nDefault config:\n- cmd: >lua\n  { \"graphql-lsp\", \"server\", \"-m\", \"stream\" }\n- filetypes: >lua\n  { \"graphql\", \"typescriptreact\", \"javascriptreact\" }\n- root_dir (use \"gF\" to view): ../lsp/graphql.lua:16\n<\n\n------------------------------------------------------------------------------\ngroovyls\n\nhttps://github.com/prominic/groovy-language-server.git\n\nRequirements:\n - Linux/macOS (for now)\n - Java 11+\n\n`groovyls` can be installed by following the instructions [here](https://github.com/prominic/groovy-language-server.git#build).\n\nIf you have installed groovy language server, you can set the `cmd` custom path as follow:\n>lua\n  vim.lsp.config('groovyls', {\n      -- Unix\n      cmd = { \"java\", \"-jar\", \"path/to/groovyls/groovy-language-server-all.jar\" },\n      ...\n  })\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('groovyls')\n\n\nDefault config:\n- cmd: >lua\n  { \"java\", \"-jar\", \"groovy-language-server-all.jar\" }\n- filetypes: >lua\n  { \"groovy\" }\n- root_markers: >lua\n  { \"Jenkinsfile\", \".git\" }\n<\n\n------------------------------------------------------------------------------\nguile_ls\n\nhttps://codeberg.org/rgherdt/scheme-lsp-server\n\nThe recommended way is to install guile-lsp-server is using Guix. Unfortunately it is still not available at the official Guix channels, but you can use the provided channel guix.scm in the repo >sh\n  guix package -f guix.scm\n\nCheckout the repo for more info.\n\nNote: This LSP will start on `scheme.guile` filetype. You can set this file type using `:help modeline` or adding https://gitlab.com/HiPhish/guile.vim to your plugins to automatically set it.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('guile_ls')\n\n\nDefault config:\n- cmd: >lua\n  { \"guile-lsp-server\" }\n- filetypes: >lua\n  { \"scheme.guile\" }\n- root_markers: >lua\n  { \"guix.scm\", \".git\" }\n<\n\n------------------------------------------------------------------------------\nharper_ls\n\nhttps://github.com/automattic/harper\n\nThe language server for Harper, the slim, clean language checker for developers.\n\nSee our [documentation](https://writewithharper.com/docs/integrations/neovim) for more information on settings.\n\nIn short, they should look something like this >lua\n  vim.lsp.config('harper_ls', {\n    settings = {\n      [\"harper-ls\"] = {\n        userDictPath = \"~/dict.txt\"\n      }\n    },\n  })\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('harper_ls')\n\n\nDefault config:\n- cmd: >lua\n  { \"harper-ls\", \"--stdio\" }\n- filetypes: >lua\n  { \"asciidoc\", \"c\", \"cpp\", \"cs\", \"gitcommit\", \"go\", \"html\", \"java\", \"javascript\", \"lua\", \"markdown\", \"nix\", \"python\", \"ruby\", \"rust\", \"swift\", \"toml\", \"typescript\", \"typescriptreact\", \"haskell\", \"cmake\", \"typst\", \"php\", \"dart\", \"clojure\", \"sh\" }\n- root_markers: >lua\n  { \".harper-dictionary.txt\", \".git\" }\n<\n\n------------------------------------------------------------------------------\nhdl_checker\n\nhttps://github.com/suoto/hdl_checker\nLanguage server for hdl-checker.\nInstall using: `pip install hdl-checker --upgrade`\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('hdl_checker')\n\n\nDefault config:\n- cmd: >lua\n  { \"hdl_checker\", \"--lsp\" }\n- filetypes: >lua\n  { \"vhdl\", \"verilog\", \"systemverilog\" }\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\nhelm_ls\n\nhttps://github.com/mrjosh/helm-ls\n\nHelm Language server. (This LSP is in early development)\n\n`helm Language server` can be installed by following the instructions [here](https://github.com/mrjosh/helm-ls).\n\nThe default `cmd` assumes that the `helm_ls` binary can be found in `$PATH`.\n\nIf need Helm file highlight use [vim-helm](https://github.com/towolf/vim-helm) plugin.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('helm_ls')\n\n\nDefault config:\n- capabilities: >lua\n  {\n    workspace = {\n      didChangeWatchedFiles = {\n        dynamicRegistration = true\n      }\n    }\n  }\n- cmd: >lua\n  { \"helm_ls\", \"serve\" }\n- filetypes: >lua\n  { \"helm\", \"yaml.helm-values\" }\n- root_markers: >lua\n  { \"Chart.yaml\" }\n<\n\n------------------------------------------------------------------------------\nherb_ls\n\nhttps://www.npmjs.com/package/@herb-tools/language-server\nhttps://github.com/marcoroth/herb\n\nHTML+ERB (HTML + Embedded Ruby)\nPowerful and seamless HTML-aware ERB parsing and tooling.\n\nHerb is designed from the ground up to deeply understand `.html.erb` files,\npreserving both HTML and embedded Ruby structure without losing any details.\n\n`herb-language-server` can be installed via `npm`:\n>sh\n  npm install -g @herb-tools/language-server\n\nor via `yarn`:\n>sh\n  yarn global add @herb-tools/language-server\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('herb_ls')\n\n\nDefault config:\n- cmd: >lua\n  { \"herb-language-server\", \"--stdio\" }\n- filetypes: >lua\n  { \"html\", \"eruby\" }\n- root_markers: >lua\n  { \"Gemfile\", \".git\" }\n<\n\n------------------------------------------------------------------------------\nhhvm\n\nLanguage server for programs written in Hack\nhttps://hhvm.com/\nhttps://github.com/facebook/hhvm\nSee below for how to setup HHVM & typechecker:\nhttps://docs.hhvm.com/hhvm/getting-started/getting-started\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('hhvm')\n\n\nDefault config:\n- cmd: >lua\n  { \"hh_client\", \"lsp\" }\n- filetypes: >lua\n  { \"php\", \"hack\" }\n- root_markers: >lua\n  { \".hhconfig\" }\n<\n\n------------------------------------------------------------------------------\nhie\n\nhttps://github.com/haskell/haskell-ide-engine\n\nthe following init_options are supported (see https://github.com/haskell/haskell-ide-engine#configuration) >lua\n  init_options = {\n    languageServerHaskell = {\n      hlintOn = bool;\n      maxNumberOfProblems = number;\n      diagnosticsDebounceDuration = number;\n      liquidOn = bool (default false);\n      completionSnippetsOn = bool (default true);\n      formatOnImportOn = bool (default true);\n      formattingProvider = string (default \"brittany\", alternate \"floskell\");\n    }\n  }\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('hie')\n\n\nDefault config:\n- cmd: >lua\n  { \"hie-wrapper\", \"--lsp\" }\n- filetypes: >lua\n  { \"haskell\" }\n- root_markers: >lua\n  { \"stack.yaml\", \"package.yaml\", \".git\" }\n<\n\n------------------------------------------------------------------------------\nhlasm\n\n`hlasm_language_server` is a language server for the High Level Assembler language used on IBM SystemZ mainframes.\n\nTo learn how to configure the HLASM language server, see the [HLASM Language Support documentation](https://github.com/eclipse-che4z/che-che4z-lsp-for-hlasm).\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('hlasm')\n\n\nDefault config:\n- cmd: >lua\n  { \"hlasm_language_server\" }\n- filetypes: >lua\n  { \"hlasm\" }\n- root_markers: >lua\n  { \".hlasmplugin\" }\n<\n\n------------------------------------------------------------------------------\nhls\n\nhttps://github.com/haskell/haskell-language-server\n\nHaskell Language Server\n\nIf you are using HLS 1.9.0.0, enable the language server to launch on Cabal files as well:\n>lua\n  vim.lsp.config('hls', {\n    filetypes = { 'haskell', 'lhaskell', 'cabal' },\n  })\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('hls')\n\n\nDefault config:\n- cmd: >lua\n  { \"haskell-language-server-wrapper\", \"--lsp\" }\n- filetypes: >lua\n  { \"haskell\", \"lhaskell\" }\n- root_dir (use \"gF\" to view): ../lsp/hls.lua:18\n- settings: >lua\n  {\n    haskell = {\n      cabalFormattingProvider = \"cabal-fmt\",\n      formattingProvider = \"ormolu\"\n    }\n  }\n<\n\n------------------------------------------------------------------------------\nhome_assistant\n\nhttps://github.com/keesschollaart81/vscode-home-assistant\n\n`vscode-home-assistant` can be installed via from source or by downloading\nand extracting the VSCode \"Home Assistant Config Helper\" extension\n\n`vscode-home-assistant` is a language server for Home Assistant ported from the VSCode \"Home Assistant Config Helper\" extension.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('home_assistant')\n\n\nDefault config:\n- cmd: >lua\n  { \"vscode-home-assistant\", \"--stdio\" }\n- filetypes: >lua\n  { \"yaml\" }\n- root_markers: >lua\n  { \"configuration.yaml\", \"configuration.yml\" }\n<\n\n------------------------------------------------------------------------------\nhoon_ls\n\nhttps://github.com/urbit/hoon-language-server\n\nA language server for Hoon.\n\nThe language server can be installed via `npm install -g @hoon-language-server`\n\nStart a fake ~zod with `urbit -F zod`.\nStart the language server at the Urbit Dojo prompt with: `|start %language-server`\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('hoon_ls')\n\n\nDefault config:\n- cmd: >lua\n  { \"hoon-language-server\" }\n- filetypes: >lua\n  { \"hoon\" }\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\nhtml\n\nhttps://github.com/hrsh7th/vscode-langservers-extracted\n\n`vscode-html-language-server` can be installed via `npm` >sh\n  npm i -g vscode-langservers-extracted\n\nNeovim does not currently include built-in snippets. `vscode-html-language-server` only provides completions when snippet support is enabled.\nTo enable completion, install a snippet plugin and add the following override to your language client capabilities during setup.\n\nThe code-formatting feature of the lsp can be controlled with the `provideFormatter` option.\n>lua\n  --Enable (broadcasting) snippet capability for completion\n  local capabilities = vim.lsp.protocol.make_client_capabilities()\n  capabilities.textDocument.completion.completionItem.snippetSupport = true\n\n  vim.lsp.config('html', {\n    capabilities = capabilities,\n  })\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('html')\n\n\nDefault config:\n- cmd: >lua\n  { \"vscode-html-language-server\", \"--stdio\" }\n- filetypes: >lua\n  { \"html\" }\n- init_options: >lua\n  {\n    configurationSection = { \"html\", \"css\", \"javascript\" },\n    embeddedLanguages = {\n      css = true,\n      javascript = true\n    },\n    provideFormatter = true\n  }\n- root_markers: >lua\n  { \"package.json\", \".git\" }\n- settings: >lua\n  {}\n<\n\n------------------------------------------------------------------------------\nhtmx\n\nhttps://github.com/ThePrimeagen/htmx-lsp\n\n`htmx-lsp` can be installed via `cargo` >sh\n  cargo install htmx-lsp\n\nLsp is still very much work in progress and experimental. Use at your own risk.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('htmx')\n\n\nDefault config:\n- cmd: >lua\n  { \"htmx-lsp\" }\n- filetypes: >lua\n  { \"aspnetcorerazor\", \"astro\", \"astro-markdown\", \"blade\", \"clojure\", \"django-html\", \"htmldjango\", \"edge\", \"eelixir\", \"elixir\", \"ejs\", \"erb\", \"eruby\", \"gohtml\", \"gohtmltmpl\", \"haml\", \"handlebars\", \"hbs\", \"html\", \"htmlangular\", \"html-eex\", \"heex\", \"jade\", \"leaf\", \"liquid\", \"markdown\", \"mdx\", \"mustache\", \"njk\", \"nunjucks\", \"php\", \"razor\", \"slim\", \"twig\", \"javascript\", \"javascriptreact\", \"reason\", \"rescript\", \"typescript\", \"typescriptreact\", \"vue\", \"svelte\", \"templ\" }\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\nhydra_lsp\n\nhttps://github.com/Retsediv/hydra-lsp\n\nLSP for Hydra Python package config files.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('hydra_lsp')\n\n\nDefault config:\n- cmd: >lua\n  { \"hydra-lsp\" }\n- filetypes: >lua\n  { \"yaml\" }\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\nhylo_ls\n\nhttps://github.com/hylo-lang/hylo-language-server\n\nA language server for the Hylo programming language.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('hylo_ls')\n\n\nDefault config:\n- cmd: >lua\n  { \"hylo-language-server\", \"--stdio\" }\n- filetypes: >lua\n  { \"hylo\" }\n- root_markers: >lua\n  { \".git\" }\n- settings: >lua\n  {}\n<\n\n------------------------------------------------------------------------------\nhyprls\n\nhttps://github.com/hyprland-community/hyprls\n\n`hyprls` can be installed via `go` >sh\n  go install github.com/hyprland-community/hyprls/cmd/hyprls@latest\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('hyprls')\n\n\nDefault config:\n- cmd: >lua\n  { \"hyprls\", \"--stdio\" }\n- filetypes: >lua\n  { \"hyprlang\" }\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\nidris2_lsp\n\nhttps://github.com/idris-community/idris2-lsp\n\nThe Idris 2 language server.\n\nPlugins for the Idris 2 filetype include\n[Idris2-Vim](https://github.com/edwinb/idris2-vim) (fewer features, stable) and\n[Nvim-Idris2](https://github.com/ShinKage/nvim-idris2) (cutting-edge,\nexperimental).\n\nIdris2-Lsp requires a build of Idris 2 that includes the \"Idris 2 API\" package.\nPackage managers with known support for this build include the\n[AUR](https://aur.archlinux.org/packages/idris2/) and\n[Homebrew](https://formulae.brew.sh/formula/idris2#default).\n\nIf your package manager does not support the Idris 2 API, you will need to build\nIdris 2 from source. Refer to the\n[the Idris 2 installation instructions](https://github.com/idris-lang/Idris2/blob/main/INSTALL.md)\nfor details.  Steps 5 and 8 are listed as \"optional\" in that guide, but they are\nnecessary in order to make the Idris 2 API available.\n\nYou need to install a version of Idris2-Lsp that is compatible with your\nversion of Idris 2. There should be a branch corresponding to every released\nIdris 2 version after v0.4.0. Use the latest commit on that branch. For example,\nif you have Idris v0.5.1, you should use the v0.5.1 branch of Idris2-Lsp.\n\nIf your Idris 2 version is newer than the newest Idris2-Lsp branch, use the\nlatest commit on the `master` branch, and set a reminder to check the Idris2-Lsp\nrepo for the release of a compatible versioned branch.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('idris2_lsp')\n\n\nDefault config:\n- cmd: >lua\n  { \"idris2-lsp\" }\n- filetypes: >lua\n  { \"idris2\" }\n- root_dir (use \"gF\" to view): ../lsp/idris2_lsp.lua:35\n<\n\n------------------------------------------------------------------------------\nintelephense\n\nhttps://intelephense.com/\n\n`intelephense` can be installed via `npm` >sh\n  npm install -g intelephense\n>lua\n  -- See https://github.com/bmewburn/intelephense-docs/blob/master/installation.md#initialisation-options\n  init_options = {\n    storagePath = …, -- Optional absolute path to storage dir. Defaults to os.tmpdir().\n    globalStoragePath = …, -- Optional absolute path to a global storage dir. Defaults to os.homedir().\n    licenceKey = …, -- Optional licence key or absolute path to a text file containing the licence key.\n    clearCache = …, -- Optional flag to clear server state. State can also be cleared by deleting {storagePath}/intelephense\n  }\n  -- See https://github.com/bmewburn/intelephense-docs\n  settings = {\n    intelephense = {\n      files = {\n        maxSize = 1000000;\n      };\n    };\n  }\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('intelephense')\n\n\nDefault config:\n- cmd: >lua\n  { \"intelephense\", \"--stdio\" }\n- filetypes: >lua\n  { \"php\" }\n- root_markers: >lua\n  { \".git\", \"composer.json\" }\n- settings: >lua\n  {\n    intelephense = {\n      telemetry = {\n        enabled = false\n      }\n    }\n  }\n<\n\n------------------------------------------------------------------------------\njanet_lsp\n\nhttps://github.com/CFiggers/janet-lsp\n\nA Language Server Protocol implementation for Janet.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('janet_lsp')\n\n\nDefault config:\n- cmd: >lua\n  { \"janet-lsp\", \"--stdio\" }\n- filetypes: >lua\n  { \"janet\" }\n- root_markers: >lua\n  { \"project.janet\", \".git\" }\n<\n\n------------------------------------------------------------------------------\njava_language_server\n\nhttps://github.com/georgewfraser/java-language-server\n\nJava language server\n\nPoint `cmd` to `lang_server_linux.sh` or the equivalent script for macOS/Windows provided by java-language-server\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('java_language_server')\n\n\nDefault config:\n- cmd: >lua\n  { \"java-language-server\" }\n- filetypes: >lua\n  { \"java\" }\n- root_markers: >lua\n  { \"build.gradle\", \"build.gradle.kts\", \"pom.xml\", \".git\" }\n- settings: >lua\n  {}\n<\n\n------------------------------------------------------------------------------\njdtls\n\nhttps://projects.eclipse.org/projects/eclipse.jdt.ls\n\nLanguage server for Java.\n\nIMPORTANT: If you want all the features jdtls has to offer, [nvim-jdtls](https://github.com/mfussenegger/nvim-jdtls)\nis highly recommended. If all you need is diagnostics, completion, imports, gotos and formatting and some code actions\nyou can keep reading here.\n\nFor manual installation you can download precompiled binaries from the\n[official downloads site](http://download.eclipse.org/jdtls/snapshots/?d)\nand ensure that the `PATH` variable contains the `bin` directory of the extracted archive.\n>lua\n    -- init.lua\n    vim.lsp.enable('jdtls')\n\nYou can also pass extra custom jvm arguments with the JDTLS_JVM_ARGS environment variable as a space separated list of arguments,\nthat will be converted to multiple --jvm-arg=<param> args when passed to the jdtls script. This will allow for example tweaking\nthe jvm arguments or integration with external tools like lombok:\n>sh\n  export JDTLS_JVM_ARGS=\"-javaagent:$HOME/.local/share/java/lombok.jar\"\n\nFor automatic installation you can use the following unofficial installers/launchers under your own risk:\n  - [jdtls-launcher](https://github.com/eruizc-dev/jdtls-launcher) (Includes lombok support by default)\n    ```lua\n      -- init.lua\n      vim.lsp.config('jdtls', { cmd = { 'jdtls' } })\n    ```\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('jdtls')\n\n\nDefault config:\n- cmd (use \"gF\" to view): ../lsp/jdtls.lua:74\n- filetypes: >lua\n  { \"java\" }\n- init_options: >lua\n  {}\n- root_markers: >lua\n  { { \"mvnw\", \"gradlew\", \"settings.gradle\", \"settings.gradle.kts\", \".git\" }, { \"build.xml\", \"pom.xml\", \"build.gradle\", \"build.gradle.kts\" } }\n<\n\n------------------------------------------------------------------------------\njedi_language_server\n\nhttps://github.com/pappasam/jedi-language-server\n\n`jedi-language-server`, a language server for Python, built on top of jedi\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('jedi_language_server')\n\n\nDefault config:\n- cmd: >lua\n  { \"jedi-language-server\" }\n- filetypes: >lua\n  { \"python\" }\n- root_markers: >lua\n  { \"pyproject.toml\", \"setup.py\", \"setup.cfg\", \"requirements.txt\", \"Pipfile\", \".git\" }\n<\n\n------------------------------------------------------------------------------\njinja_lsp\n\njinja-lsp enhances minijinja development experience by providing Helix/Nvim users with advanced features such as autocomplete, syntax highlighting, hover, goto definition, code actions and linting.\n\nThe file types are not detected automatically, you can register them manually (see below) or override the filetypes:\n>lua\n  vim.filetype.add {\n    extension = {\n      jinja = 'jinja',\n      jinja2 = 'jinja',\n      j2 = 'jinja',\n    },\n  }\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('jinja_lsp')\n\n\nDefault config:\n- cmd: >lua\n  { \"jinja-lsp\" }\n- filetypes: >lua\n  { \"jinja\" }\n- name: >lua\n  \"jinja_lsp\"\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\njqls\n\nhttps://github.com/wader/jq-lsp\nLanguage server for jq, written using Go.\nYou can install the server easily using go install >sh\n  # install directly\n  go install github.com/wader/jq-lsp@master\n  # copy binary to $PATH\n  cp $(go env GOPATH)/bin/jq-lsp /usr/local/bin\n\nNote: To activate properly nvim needs to know the jq filetype.\nYou can add it via >lua\n  vim.cmd([[au BufRead,BufNewFile *.jq setfiletype jq]])\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('jqls')\n\n\nDefault config:\n- cmd: >lua\n  { \"jq-lsp\" }\n- filetypes: >lua\n  { \"jq\" }\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\njsonls\n\nhttps://github.com/hrsh7th/vscode-langservers-extracted\n\nvscode-json-language-server, a language server for JSON and JSON schema\n\n`vscode-json-language-server` can be installed via `npm` >sh\n  npm i -g vscode-langservers-extracted\n\n`vscode-json-language-server` only provides completions when snippet support is enabled. If you use Neovim older than v0.10 you need to enable completion, install a snippet plugin and add the following override to your language client capabilities during setup.\n>lua\n  --Enable (broadcasting) snippet capability for completion\n  local capabilities = vim.lsp.protocol.make_client_capabilities()\n  capabilities.textDocument.completion.completionItem.snippetSupport = true\n\n  vim.lsp.config('jsonls', {\n    capabilities = capabilities,\n  })\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('jsonls')\n\n\nDefault config:\n- cmd: >lua\n  { \"vscode-json-language-server\", \"--stdio\" }\n- filetypes: >lua\n  { \"json\", \"jsonc\" }\n- init_options: >lua\n  {\n    provideFormatter = true\n  }\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\njsonnet_ls\n\nhttps://github.com/grafana/jsonnet-language-server\n\nA Language Server Protocol (LSP) server for Jsonnet.\n\nThe language server can be installed with `go` >sh\n  go install github.com/grafana/jsonnet-language-server@latest\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('jsonnet_ls')\n\n\nDefault config:\n- cmd: >lua\n  { \"jsonnet-language-server\" }\n- filetypes: >lua\n  { \"jsonnet\", \"libsonnet\" }\n- root_markers: >lua\n  { \"jsonnetfile.json\", \".git\" }\n<\n\n------------------------------------------------------------------------------\njulials\n\nhttps://github.com/julia-vscode/julia-vscode\n\nLanguageServer.jl, SymbolServer.jl and StaticLint.jl can be installed with `julia` and `Pkg` >sh\n  julia --project=~/.julia/environments/nvim-lspconfig -e 'using Pkg; Pkg.add(\"LanguageServer\"); Pkg.add(\"SymbolServer\"); Pkg.add(\"StaticLint\")'\nwhere `~/.julia/environments/nvim-lspconfig` is the location where\nthe default configuration expects LanguageServer.jl, SymbolServer.jl and StaticLint.jl to be installed.\n\nTo update an existing install, use the following command >sh\n  julia --project=~/.julia/environments/nvim-lspconfig -e 'using Pkg; Pkg.update()'\n\nNote: In order to have LanguageServer.jl pick up installed packages or dependencies in a\nJulia project, you must make sure that the project is instantiated >sh\n  julia --project=/path/to/my/project -e 'using Pkg; Pkg.instantiate()'\n\nTo activate a Julia environment, use the `:LspJuliaActivateEnv` command. A prompt will ask you to select a Julia\nenvironment from the list of environments found in the current working directory and the `environments/` folder of\n`$JULIA_DEPOT_PATH` entries. You can also provide a path to a Julia environment directly.\nExample: `:LspJuliaActivateEnv /path/to/my/project`.\n\nNote: The julia programming language searches for global environments within the `environments/`\nfolder of `$JULIA_DEPOT_PATH` entries. By default this simply `~/.julia/environments`\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('julials')\n\n\nDefault config:\n- cmd: >lua\n  { \"julia\", \"--startup-file=no\", \"--history-file=no\", \"-e\", '    # Load LanguageServer.jl: attempt to load from ~/.julia/environments/nvim-lspconfig\\n    # with the regular load path as a fallback\\n    ls_install_path = joinpath(\\n        get(DEPOT_PATH, 1, joinpath(homedir(), \".julia\")),\\n        \"environments\", \"nvim-lspconfig\"\\n    )\\n    pushfirst!(LOAD_PATH, ls_install_path)\\n    using LanguageServer, SymbolServer, StaticLint\\n    popfirst!(LOAD_PATH)\\n    depot_path = get(ENV, \"JULIA_DEPOT_PATH\", \"\")\\n    project_path = let\\n        dirname(something(\\n            ## 1. Finds an explicitly set project (JULIA_PROJECT)\\n            Base.load_path_expand((\\n                p = get(ENV, \"JULIA_PROJECT\", nothing);\\n                p === nothing ? nothing : isempty(p) ? nothing : p\\n            )),\\n            ## 2. Look for a Project.toml file in the current working directory,\\n            ##    or parent directories, with $HOME as an upper boundary\\n            Base.current_project(),\\n            ## 3. First entry in the load path\\n            get(Base.load_path(), 1, nothing),\\n            ## 4. Fallback to default global environment,\\n            ##    this is more or less unreachable\\n            Base.load_path_expand(\"@v#.#\"),\\n        ))\\n    end\\n    @info \"Running language server\" VERSION pwd() project_path depot_path\\n    server = LanguageServer.LanguageServerInstance(stdin, stdout, project_path, depot_path)\\n    server.runlinter = true\\n    run(server)\\n  ' }\n- filetypes: >lua\n  { \"julia\" }\n- on_attach (use \"gF\" to view): ../lsp/julials.lua:127\n- root_markers: >lua\n  { \"Project.toml\", \"JuliaProject.toml\" }\n<\n\n------------------------------------------------------------------------------\njust\n\nhttps://github.com/terror/just-lsp\n\n`just-lsp` is an LSP for just built on top of the tree-sitter-just parser.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('just')\n\n\nDefault config:\n- cmd: >lua\n  { \"just-lsp\" }\n- filetypes: >lua\n  { \"just\" }\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\nkakehashi\n\nhttps://github.com/atusy/kakehashi\n\nTree-sitter-based language server that provides semantic tokens, selection ranges,\nand LSP bridging for embedded languages (e.g., code blocks in Markdown).\n\nkakehashi works with any language that has a Tree-sitter grammar.\nParsers and queries are automatically installed on first use\nwhen `autoInstall` is enabled (the default). This requires the\n`tree-sitter` CLI, a C compiler, and Git.\n\n**You must specify `filetypes` in your call to `vim.lsp.config`** to\nrestrict which files activate the server:\n>lua\n  vim.lsp.config('kakehashi', {\n    filetypes = { 'markdown', 'lua', 'rust', 'python' },\n    init_options = {\n      autoInstall = true,\n      -- Optional: bridge LSP requests in injection regions\n      languageServers = {\n        ['lua_ls'] = {\n          cmd = { 'lua-language-server' },\n          languages = { 'lua' },\n        },\n      },\n      languages = {\n        markdown = {\n          bridge = { lua_ls = { enabled = true } },\n        },\n      },\n    },\n  })\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('kakehashi')\n\n\nDefault config:\n- cmd: >lua\n  { \"kakehashi\" }\n- root_markers: >lua\n  { \"kakehashi.toml\", \".git\" }\n<\n\n------------------------------------------------------------------------------\nkcl\n\nhttps://github.com/kcl-lang/kcl.nvim\n\nLanguage server for the KCL configuration and policy language.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('kcl')\n\n\nDefault config:\n- cmd: >lua\n  { \"kcl-language-server\" }\n- filetypes: >lua\n  { \"kcl\" }\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\nkoka\n\nhttps://koka-lang.github.io/koka/doc/index.html\nKoka is a functional programming language with effect types and handlers.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('koka')\n\n\nDefault config:\n- cmd: >lua\n  { \"koka\", \"--language-server\", \"--lsstdio\" }\n- filetypes: >lua\n  { \"koka\" }\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\nkotlin_language_server\n\nA kotlin language server which was developed for internal usage and\nreleased afterwards. Maintaining is not done by the original author,\nbut by fwcd.\n\nIt is built via gradle and developed on github.\nSource and additional description:\nhttps://github.com/fwcd/kotlin-language-server\n\nThis server requires vim to be aware of the kotlin-filetype.\nYou could refer for this capability to:\nhttps://github.com/udalov/kotlin-vim (recommended)\nNote that there is no LICENSE specified yet.\n\nFor faster startup, you can setup caching by specifying a storagePath\nin the init_options. The default is your home directory.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('kotlin_language_server')\n\n\nDefault config:\n- cmd: >lua\n  { \"kotlin-language-server\" }\n- filetypes: >lua\n  { \"kotlin\" }\n- init_options: >lua\n  {}\n- root_markers: >lua\n  { \"settings.gradle\", \"settings.gradle.kts\", \"build.xml\", \"pom.xml\", \"build.gradle\", \"build.gradle.kts\" }\n<\n\n------------------------------------------------------------------------------\nkotlin_lsp\n\nPre-alpha official Kotlin support for Visual Studio Code and an implementation of Language Server Protocol for the Kotlin language.\n\nThe server is based on IntelliJ IDEA and the IntelliJ IDEA Kotlin Plugin implementation.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('kotlin_lsp')\n\n\nDefault config:\n- cmd: >lua\n  { \"kotlin-lsp\", \"--stdio\" }\n- filetypes: >lua\n  { \"kotlin\" }\n- root_markers: >lua\n  { \"settings.gradle\", \"settings.gradle.kts\", \"pom.xml\", \"build.gradle\", \"build.gradle.kts\", \"workspace.json\" }\n<\n\n------------------------------------------------------------------------------\nkulala_ls\n\nhttps://github.com/mistweaverco/kulala-ls\n\nA minimal language server for HTTP syntax.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('kulala_ls')\n\n\nDefault config:\n- cmd: >lua\n  { \"kulala-ls\", \"--stdio\" }\n- filetypes: >lua\n  { \"http\" }\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\nlaravel_ls\n\nhttps://github.com/laravel-ls/laravel-ls\n\n`laravel-ls`, language server for laravel\n\nThe default `cmd` assumes that the `laravel-ls` binary can be found in `$PATH`.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('laravel_ls')\n\n\nDefault config:\n- cmd: >lua\n  { \"laravel-ls\" }\n- filetypes: >lua\n  { \"php\", \"blade\" }\n- root_markers: >lua\n  { \"artisan\" }\n<\n\n------------------------------------------------------------------------------\nlean3ls\n\nhttps://github.com/leanprover/lean-client-js/tree/master/lean-language-server\n\nLean installation instructions can be found\n[here](https://leanprover-community.github.io/get_started.html#regular-install).\n\nOnce Lean is installed, you can install the Lean 3 language server by runnin >sh\n  npm install -g lean-language-server\n\nNote: that if you're using [lean.nvim](https://github.com/Julian/lean.nvim),\nthat plugin fully handles the setup of the Lean language server,\nand you shouldn't set up `lean3ls` both with it and `lspconfig`.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('lean3ls')\n\n\nDefault config:\n- cmd: >lua\n  { \"lean-language-server\", \"--stdio\", \"--\", \"-M\", \"4096\", \"-T\", \"100000\" }\n- filetypes: >lua\n  { \"lean3\" }\n- offset_encoding: >lua\n  \"utf-32\"\n- root_dir (use \"gF\" to view): ../lsp/lean3ls.lua:18\n<\n\n------------------------------------------------------------------------------\nlelwel_ls\n\nhttps://github.com/0x2a-42/lelwel\n\nLanguage server for lelwel grammars.\n\nYou can install `lelwel-ls` via cargo >sh\n  cargo install --features=\"lsp\" lelwel\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('lelwel_ls')\n\n\nDefault config:\n- cmd: >lua\n  { \"lelwel-ls\" }\n- filetypes: >lua\n  { \"llw\" }\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\nlemminx\n\nhttps://github.com/eclipse/lemminx\n\nThe easiest way to install the server is to get a binary from https://github.com/redhat-developer/vscode-xml/releases and place it on your PATH.\n\nNOTE to macOS users: Binaries from unidentified developers are blocked by default. If you trust the downloaded binary, run it once, cancel the prompt, then remove the binary from Gatekeeper quarantine with `xattr -d com.apple.quarantine lemminx`. It should now run without being blocked.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('lemminx')\n\n\nDefault config:\n- cmd: >lua\n  { \"lemminx\" }\n- filetypes: >lua\n  { \"xml\", \"xsd\", \"xsl\", \"xslt\", \"svg\" }\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\nlexical\n\nhttps://github.com/lexical-lsp/lexical\n\nLexical is a next-generation language server for the Elixir programming language.\n\nTo install from source, follow the [Detailed Installation Instructions](https://github.com/lexical-lsp/lexical/blob/main/pages/installation.md).\nEnsure to point `cmd` to the generated `_build/dev/package/lexical/start_lexical.sh` executable.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('lexical')\n\n\nDefault config:\n- cmd: >lua\n  { \"lexical\" }\n- filetypes: >lua\n  { \"elixir\", \"eelixir\", \"heex\", \"surface\" }\n- root_markers: >lua\n  { \"mix.exs\", \".git\" }\n<\n\n------------------------------------------------------------------------------\nlsp_ai\n\nhttps://github.com/SilasMarvin/lsp-ai\n\nLSP-AI is an open source language server that serves as a backend for AI-powered functionality in your favorite code\neditors. It offers features like in-editor chatting with LLMs and code completions.\n\n\nYou will need to provide configuration for the inference backends and models you want to use, as well as configure\ncompletion/code actions. See the [wiki docs](https://github.com/SilasMarvin/lsp-ai/wiki/Configuration) and\n[examples](https://github.com/SilasMarvin/lsp-ai/blob/main/examples/nvim) for more information.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('lsp_ai')\n\n\nDefault config:\n- cmd: >lua\n  { \"lsp-ai\" }\n- filetypes: >lua\n  {}\n- init_options: >lua\n  {\n    memory = {\n      file_store = vim.empty_dict()\n    },\n    models = vim.empty_dict()\n  }\n<\n\n------------------------------------------------------------------------------\nltex\n\nhttps://github.com/valentjn/ltex-ls\n\nLTeX Language Server: LSP language server for LanguageTool 🔍✔️ with support for LaTeX 🎓, Markdown 📝, and others\n\nTo install, download the latest [release](https://github.com/valentjn/ltex-ls/releases) and ensure `ltex-ls` is on your path.\n\nThis server accepts configuration via the `settings` key.\n>lua\n    settings = {\n  \t\tltex = {\n  \t\t\tlanguage = \"en-GB\",\n  \t\t},\n  \t},\n\nTo support org files or R sweave, users can define a custom filetype autocommand (or use a plugin which defines these filetypes):\n>lua\n  vim.cmd [[ autocmd BufRead,BufNewFile *.org set filetype=org ]]\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('ltex')\n\n\nDefault config:\n- cmd: >lua\n  { \"ltex-ls\" }\n- filetypes: >lua\n  { \"bib\", \"gitcommit\", \"markdown\", \"org\", \"plaintex\", \"rst\", \"rnoweb\", \"tex\", \"pandoc\", \"quarto\", \"rmd\", \"context\", \"html\", \"xhtml\", \"mail\", \"text\" }\n- get_language_id (use \"gF\" to view): ../lsp/ltex.lua:75\n- root_markers: >lua\n  { \".git\" }\n- settings: >lua\n  {\n    ltex = {\n      enabled = { \"bibtex\", \"gitcommit\", \"markdown\", \"org\", \"tex\", \"restructuredtext\", \"rsweave\", \"latex\", \"quarto\", \"rmd\", \"context\", \"html\", \"xhtml\", \"mail\", \"plaintext\" }\n    }\n  }\n<\n\n------------------------------------------------------------------------------\nltex_plus\n\nhttps://github.com/ltex-plus/ltex-ls-plus\n\nLTeX Language Server: LSP language server for LanguageTool 🔍✔️ with support for LaTeX 🎓, Markdown 📝, and others\n\nTo install, download the latest [release](https://github.com/ltex-plus/ltex-ls-plus) and ensure `ltex-ls-plus` is on your path.\n\nThis server accepts configuration via the `settings` key.\n>lua\n    settings = {\n      ltex = {\n        language = \"en-GB\",\n      },\n    },\n\nTo support org files or R sweave, users can define a custom filetype autocommand (or use a plugin which defines these filetypes):\n>lua\n  vim.cmd [[ autocmd BufRead,BufNewFile *.org set filetype=org ]]\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('ltex_plus')\n\n\nDefault config:\n- cmd: >lua\n  { \"ltex-ls-plus\" }\n- filetypes: >lua\n  { \"asciidoc\", \"bib\", \"context\", \"gitcommit\", \"html\", \"markdown\", \"org\", \"pandoc\", \"plaintex\", \"quarto\", \"mail\", \"mdx\", \"rmd\", \"rnoweb\", \"rst\", \"tex\", \"text\", \"typst\", \"xhtml\" }\n- get_language_id (use \"gF\" to view): ../lsp/ltex_plus.lua:36\n- root_markers: >lua\n  { \".git\" }\n- settings: >lua\n  {\n    ltex = {\n      enabled = { \"asciidoc\", \"bib\", \"context\", \"gitcommit\", \"html\", \"markdown\", \"org\", \"pandoc\", \"plaintex\", \"quarto\", \"mail\", \"mdx\", \"rmd\", \"rnoweb\", \"rst\", \"tex\", \"latex\", \"text\", \"typst\", \"xhtml\" }\n    }\n  }\n<\n\n------------------------------------------------------------------------------\nlua_ls\n\nhttps://github.com/luals/lua-language-server\n\nLua language server.\n\n`lua-language-server` can be installed by following the instructions [here](https://luals.github.io/#neovim-install).\n\nThe default `cmd` assumes that the `lua-language-server` binary can be found in `$PATH`.\n\nIf you primarily use `lua-language-server` for Neovim, and want to provide completions,\nanalysis, and location handling for plugins on runtime path, you can use the following\nsettings.\n>lua\n  vim.lsp.config('lua_ls', {\n    on_init = function(client)\n      if client.workspace_folders then\n        local path = client.workspace_folders[1].name\n        if\n          path ~= vim.fn.stdpath('config')\n          and (vim.uv.fs_stat(path .. '/.luarc.json') or vim.uv.fs_stat(path .. '/.luarc.jsonc'))\n        then\n          return\n        end\n      end\n\n      client.config.settings.Lua = vim.tbl_deep_extend('force', client.config.settings.Lua, {\n        runtime = {\n          -- Tell the language server which version of Lua you're using (most\n          -- likely LuaJIT in the case of Neovim)\n          version = 'LuaJIT',\n          -- Tell the language server how to find Lua modules same way as Neovim\n          -- (see `:h lua-module-load`)\n          path = {\n            'lua/?.lua',\n            'lua/?/init.lua',\n          },\n        },\n        -- Make the server aware of Neovim runtime files\n        workspace = {\n          checkThirdParty = false,\n          library = {\n            vim.env.VIMRUNTIME,\n            -- Depending on the usage, you might want to add additional paths\n            -- here.\n            -- '${3rd}/luv/library',\n            -- '${3rd}/busted/library',\n          },\n          -- Or pull in all of 'runtimepath'.\n          -- NOTE: this is a lot slower and will cause issues when working on\n          -- your own configuration.\n          -- See https://github.com/neovim/nvim-lspconfig/issues/3189\n          -- library = vim.api.nvim_get_runtime_file('', true),\n        },\n      })\n    end,\n    settings = {\n      Lua = {},\n    },\n  })\n\nSee `lua-language-server`'s [documentation](https://luals.github.io/wiki/settings/) for an explanation of the above fields:\n* [Lua.runtime.path](https://luals.github.io/wiki/settings/#runtimepath)\n* [Lua.workspace.library](https://luals.github.io/wiki/settings/#workspacelibrary)\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('lua_ls')\n\n\nDefault config:\n- cmd: >lua\n  { \"lua-language-server\" }\n- filetypes: >lua\n  { \"lua\" }\n- root_markers: >lua\n  { { \".emmyrc.json\", \".luarc.json\", \".luarc.jsonc\" }, { \".luacheckrc\", \".stylua.toml\", \"stylua.toml\", \"selene.toml\", \"selene.yml\" }, { \".git\" } }\n- settings: >lua\n  {\n    Lua = {\n      codeLens = {\n        enable = true\n      },\n      hint = {\n        enable = true,\n        semicolon = \"Disable\"\n      }\n    }\n  }\n<\n\n------------------------------------------------------------------------------\nluau_lsp\n\nhttps://github.com/JohnnyMorganz/luau-lsp\n\nLanguage server for the [Luau](https://luau-lang.org/) language.\n\n`luau-lsp` can be installed by downloading one of the release assets available at https://github.com/JohnnyMorganz/luau-lsp.\n\nYou might also have to set up automatic filetype detection for Luau files, for example like so:\n>vim\n  autocmd BufRead,BufNewFile *.luau setf luau\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('luau_lsp')\n\n\nDefault config:\n- cmd: >lua\n  { \"luau-lsp\", \"lsp\" }\n- filetypes: >lua\n  { \"luau\" }\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\nlwc_ls\n\nhttps://github.com/forcedotcom/lightning-language-server/\n\nLanguage server for Lightning Web Components.\n\nFor manual installation, utilize the official [NPM package](https://www.npmjs.com/package/@salesforce/lwc-language-server).\nThen, configure `cmd` to run the Node script at the unpacked location:\n>lua\n  vim.lsp.config('lwc_ls', {\n    cmd = {\n      'node',\n      '/path/to/node_modules/@salesforce/lwc-language-server/bin/lwc-language-server.js',\n      '--stdio'\n    }\n  })\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('lwc_ls')\n\n\nDefault config:\n- cmd: >lua\n  { \"lwc-language-server\", \"--stdio\" }\n- filetypes: >lua\n  { \"javascript\", \"html\" }\n- init_options: >lua\n  {\n    embeddedLanguages = {\n      javascript = true\n    }\n  }\n- root_markers: >lua\n  { \"sfdx-project.json\" }\n<\n\n------------------------------------------------------------------------------\nm68k\n\nhttps://github.com/grahambates/m68k-lsp\n\nLanguage server for Motorola 68000 family assembly\n\n`m68k-lsp-server` can be installed via `npm`:\n>sh\n  npm install -g m68k-lsp-server\n\nEnsure you are using the 68k asm syntax variant in Neovim.\n>lua\n  vim.g.asmsyntax = 'asm68k'\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('m68k')\n\n\nDefault config:\n- cmd: >lua\n  { \"m68k-lsp-server\", \"--stdio\" }\n- filetypes: >lua\n  { \"asm68k\" }\n- root_markers: >lua\n  { \"Makefile\", \".git\" }\n<\n\n------------------------------------------------------------------------------\nmarkdown_oxide\n\nhttps://github.com/Feel-ix-343/markdown-oxide\n\nEditor Agnostic PKM: you bring the text editor and we\nbring the PKM.\n\nInspired by and compatible with Obsidian.\n\nCheck the readme to see how to properly setup.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('markdown_oxide')\n\n\nDefault config:\n- cmd: >lua\n  { \"markdown-oxide\" }\n- filetypes: >lua\n  { \"markdown\" }\n- on_attach (use \"gF\" to view): ../lsp/markdown_oxide.lua:24\n- root_markers: >lua\n  { \".git\", \".obsidian\", \".moxide.toml\" }\n<\n\n------------------------------------------------------------------------------\nmarko-js\n\nhttps://github.com/marko-js/language-server\n\nUsing the Language Server Protocol to improve Marko's developer experience.\n\nCan be installed via npm:>\n  npm i -g @marko/language-server\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('marko-js')\n\n\nDefault config:\n- cmd: >lua\n  { \"marko-language-server\", \"--stdio\" }\n- filetypes: >lua\n  { \"marko\" }\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\nmarksman\n\nhttps://github.com/artempyanykh/marksman\n\nMarksman is a Markdown LSP server providing completion, cross-references, diagnostics, and more.\n\nMarksman works on MacOS, Linux, and Windows and is distributed as a self-contained binary for each OS.\n\nPre-built binaries can be downloaded from https://github.com/artempyanykh/marksman/releases\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('marksman')\n\n\nDefault config:\n- cmd: >lua\n  { \"marksman\", \"server\" }\n- filetypes: >lua\n  { \"markdown\", \"markdown.mdx\" }\n- root_markers: >lua\n  { \".marksman.toml\", \".git\" }\n<\n\n------------------------------------------------------------------------------\nmatlab_ls\n\nhttps://github.com/mathworks/MATLAB-language-server\n\nMATLAB® language server implements the Microsoft® Language Server Protocol for the MATLAB language.\n\nMake sure to set `MATLAB.installPath` to your MATLAB path, e.g. >lua\n  settings = {\n    MATLAB = {\n      ...\n      installPath = '/usr/local/MATLAB/R2023a',\n      ...\n    },\n  },\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('matlab_ls')\n\n\nDefault config:\n- cmd: >lua\n  { \"matlab-language-server\", \"--stdio\" }\n- filetypes: >lua\n  { \"matlab\" }\n- root_dir (use \"gF\" to view): ../lsp/matlab_ls.lua:19\n- settings: >lua\n  {\n    MATLAB = {\n      indexWorkspace = true,\n      installPath = \"\",\n      matlabConnectionTiming = \"onStart\",\n      telemetry = true\n    }\n  }\n<\n\n------------------------------------------------------------------------------\nmdx_analyzer\n\nhttps://github.com/mdx-js/mdx-analyzer\n\n`mdx-analyzer`, a language server for MDX\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('mdx_analyzer')\n\n\nDefault config:\n- before_init (use \"gF\" to view): ../lsp/mdx_analyzer.lua:9\n- cmd: >lua\n  { \"mdx-language-server\", \"--stdio\" }\n- filetypes: >lua\n  { \"mdx\" }\n- init_options: >lua\n  {\n    typescript = {}\n  }\n- root_markers: >lua\n  { \"package.json\" }\n- settings: >lua\n  {}\n<\n\n------------------------------------------------------------------------------\nmesonlsp\n\nhttps://github.com/JCWasmx86/mesonlsp\n\nAn unofficial, unendorsed language server for meson written in C++\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('mesonlsp')\n\n\nDefault config:\n- cmd: >lua\n  { \"mesonlsp\", \"--lsp\" }\n- filetypes: >lua\n  { \"meson\" }\n- root_dir (use \"gF\" to view): ../lsp/mesonlsp.lua:32\n<\n\n------------------------------------------------------------------------------\nmetals\n\nhttps://scalameta.org/metals/\n\nScala language server with rich IDE features.\n\nSee full instructions in the Metals documentation:\n\nhttps://scalameta.org/metals/docs/editors/vim#using-an-alternative-lsp-client\n\nNote: that if you're using [nvim-metals](https://github.com/scalameta/nvim-metals), that plugin fully handles the setup and installation of Metals, and you shouldn't set up Metals both with it and `lspconfig`.\n\nTo install Metals, make sure to have [coursier](https://get-coursier.io/docs/cli-installation) installed, and once you do you can install the latest Metals with `cs install metals`.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('metals')\n\n\nDefault config:\n- capabilities: >lua\n  {\n    workspace = {\n      configuration = false\n    }\n  }\n- cmd: >lua\n  { \"metals\" }\n- filetypes: >lua\n  { \"scala\" }\n- init_options: >lua\n  {\n    compilerOptions = {\n      snippetAutoIndent = false\n    },\n    isHttpEnabled = true,\n    statusBarProvider = \"show-message\"\n  }\n- root_markers: >lua\n  { \"build.sbt\", \"build.sc\", { \"build.gradle\", \"build.gradle.kts\" }, \"pom.xml\" }\n<\n\n------------------------------------------------------------------------------\nmillet\n\nhttps://github.com/azdavis/millet\n\nMillet, a language server for Standard ML\n\nTo use with nvim:\n\n1. Install a Rust toolchain: https://rustup.rs\n2. Clone the repo\n3. Run `cargo build --release --bin millet-ls`\n4. Move `target/release/millet-ls` to somewhere on your $PATH as `millet`\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('millet')\n\n\nDefault config:\n- cmd: >lua\n  { \"millet\" }\n- filetypes: >lua\n  { \"sml\" }\n- root_markers: >lua\n  { \"millet.toml\" }\n<\n\n------------------------------------------------------------------------------\nmint\n\nhttps://www.mint-lang.com\n\nInstall Mint using the [instructions](https://www.mint-lang.com/install).\nThe language server is included since version 0.12.0.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('mint')\n\n\nDefault config:\n- cmd: >lua\n  { \"mint\", \"ls\" }\n- filetypes: >lua\n  { \"mint\" }\n- root_markers: >lua\n  { \"mint.json\", \".git\" }\n<\n\n------------------------------------------------------------------------------\nmlir_lsp_server\n\nhttps://mlir.llvm.org/docs/Tools/MLIRLSP/#mlir-lsp-language-server--mlir-lsp-server=\n\nThe Language Server for the LLVM MLIR language\n\n`mlir-lsp-server` can be installed at the llvm-project repository (https://github.com/llvm/llvm-project)\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('mlir_lsp_server')\n\n\nDefault config:\n- cmd: >lua\n  { \"mlir-lsp-server\" }\n- filetypes: >lua\n  { \"mlir\" }\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\nmlir_pdll_lsp_server\n\nhttps://mlir.llvm.org/docs/Tools/MLIRLSP/#pdll-lsp-language-server--mlir-pdll-lsp-server\n\nThe Language Server for the LLVM PDLL language\n\n`mlir-pdll-lsp-server` can be installed at the llvm-project repository (https://github.com/llvm/llvm-project)\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('mlir_pdll_lsp_server')\n\n\nDefault config:\n- cmd: >lua\n  { \"mlir-pdll-lsp-server\" }\n- filetypes: >lua\n  { \"pdll\" }\n- root_markers: >lua\n  { \"pdll_compile_commands.yml\", \".git\" }\n<\n\n------------------------------------------------------------------------------\nmm0_ls\n\nhttps://github.com/digama0/mm0\n\nLanguage Server for the metamath-zero theorem prover.\n\nRequires [mm0-rs](https://github.com/digama0/mm0/tree/master/mm0-rs) to be installed\nand available on the `PATH`.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('mm0_ls')\n\n\nDefault config:\n- cmd: >lua\n  { \"mm0-rs\", \"server\" }\n- filetypes: >lua\n  { \"metamath-zero\" }\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\nmojo\n\nhttps://github.com/modularml/mojo\n\n`mojo-lsp-server` can be installed [via Modular](https://developer.modular.com/download)\n\nMojo is a new programming language that bridges the gap between research and production by combining Python syntax and ecosystem with systems programming and metaprogramming features.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('mojo')\n\n\nDefault config:\n- cmd: >lua\n  { \"mojo-lsp-server\" }\n- filetypes: >lua\n  { \"mojo\" }\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\nmotoko_lsp\n\nhttps://github.com/dfinity/vscode-motoko\n\nLanguage server for the Motoko programming language.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('motoko_lsp')\n\n\nDefault config:\n- cmd: >lua\n  { \"motoko-lsp\", \"--stdio\" }\n- filetypes: >lua\n  { \"motoko\" }\n- init_options: >lua\n  {\n    formatter = \"auto\"\n  }\n- root_markers: >lua\n  { \"dfx.json\", \".git\" }\n<\n\n------------------------------------------------------------------------------\nmove_analyzer\n\nhttps://github.com/move-language/move/tree/main/language/move-analyzer\n\nLanguage server for Move\n\nThe `move-analyzer` can be installed by running:\n>\n  cargo install --git https://github.com/move-language/move move-analyzer\n\nSee [`move-analyzer`'s doc](https://github.com/move-language/move/blob/1b258a06e3c7d2bc9174578aac92cca3ac19de71/language/move-analyzer/editors/code/README.md#how-to-install) for details.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('move_analyzer')\n\n\nDefault config:\n- cmd: >lua\n  { \"move-analyzer\" }\n- filetypes: >lua\n  { \"move\" }\n- root_markers: >lua\n  { \"Move.toml\" }\n<\n\n------------------------------------------------------------------------------\nmpls\n\nhttps://github.com/mhersson/mpls\n\nMarkdown Preview Language Server\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('mpls')\n\n\nDefault config:\n- cmd: >lua\n  { \"mpls\", \"--theme\", \"dark\", \"--enable-emoji\", \"--enable-footnotes\", \"--no-auto\" }\n- filetypes: >lua\n  { \"markdown\" }\n- on_attach (use \"gF\" to view): ../lsp/mpls.lua:8\n- root_markers: >lua\n  { \".marksman.toml\", \".git\" }\n<\n\n------------------------------------------------------------------------------\nmsbuild_project_tools_server\n\nhttps://github.com/tintoy/msbuild-project-tools-server/\n\nMSBuild Project Tools Server can be installed by following the README.MD on the above repository.\n\nExample config >lua\n  vim.lsp.config('msbuild_project_tools_server', {\n    cmd = {'dotnet', '/path/to/server/MSBuildProjectTools.LanguageServer.Host.dll'}\n  })\n\nThere's no builtin filetypes for msbuild files, would require some filetype aliases:\n>lua\n  vim.filetype.add({\n    extension = {\n      props = 'msbuild',\n      tasks = 'msbuild',\n      targets = 'msbuild',\n    },\n    pattern = {\n      [ [[.*\\..*proj]] ] = 'msbuild',\n    },\n  })\n\nOptionally tell treesitter to treat `msbuild` as `xml` so you can get syntax highlighting if you have the treesitter-xml-parser installed.\n>lua\n  vim.treesitter.language.register('xml', { 'msbuild' })\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('msbuild_project_tools_server')\n\n\nDefault config:\n- cmd: >lua\n  { \"dotnet\", \"MSBuildProjectTools.LanguageServer.Host.dll\" }\n- filetypes: >lua\n  { \"msbuild\" }\n- init_options: >lua\n  {}\n- root_dir (use \"gF\" to view): ../lsp/msbuild_project_tools_server.lua:39\n<\n\n------------------------------------------------------------------------------\nmuon\n\nhttps://muon.build\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('muon')\n\n\nDefault config:\n- cmd: >lua\n  { \"muon\", \"analyze\", \"lsp\" }\n- filetypes: >lua\n  { \"meson\" }\n- root_dir (use \"gF\" to view): ../lsp/muon.lua:6\n<\n\n------------------------------------------------------------------------------\nmutt_ls\n\nhttps://github.com/neomutt/mutt-language-server\n\nA language server for (neo)mutt's muttrc. It can be installed via pip.\n>sh\n  pip install mutt-language-server\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('mutt_ls')\n\n\nDefault config:\n- cmd: >lua\n  { \"mutt-language-server\" }\n- filetypes: >lua\n  { \"muttrc\", \"neomuttrc\" }\n- root_markers: >lua\n  { \".git\" }\n- settings: >lua\n  {}\n<\n\n------------------------------------------------------------------------------\nnelua_lsp\n\nhttps://github.com/codehz/nelua-lsp\n\nnelua-lsp is an experimental nelua language server.\n\nYou need [nelua.vim](https://github.com/stefanos82/nelua.vim/blob/main/ftdetect/nelua.vim) for nelua files to be recognized or add this to your config:\n\nin vimscript >vimscript\n  au BufNewFile,BufRead *.nelua setf nelua\n\nin lua >lua\n  vim.api.nvim_create_autocmd({ \"BufNewFile\", \"BufRead\" }, { pattern = { \"*.nelua\" }, command = \"setf nelua\"})\n\n**By default, nelua-lsp doesn't have a `cmd` set.** This is because nvim-lspconfig does not make assumptions about your path. You must add the following to your init.vim or init.lua to set `cmd` to the absolute path ($HOME and ~ are not expanded) of the unzipped run script or binary.\n>lua\n  vim.lsp.config('nelua_lsp', {\n      cmd = { \"nelua\", \"-L\", \"/path/to/nelua-lsp/\", \"--script\", \"/path/to/nelua-lsp/nelua-lsp.lua\" },\n  })\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('nelua_lsp')\n\n\nDefault config:\n- filetypes: >lua\n  { \"nelua\" }\n- root_markers: >lua\n  { \"Makefile\", \".git\", \"*.nelua\" }\n<\n\n------------------------------------------------------------------------------\nneocmake\n\nhttps://github.com/neocmakelsp/neocmakelsp\n\nCMake LSP Implementation\n\nNeovim does not currently include built-in snippets. `neocmakelsp` only provides completions when snippet support is enabled. To enable completion, install a snippet plugin and add the following override to your language client capabilities during setup.\n>lua\n  --Enable (broadcasting) snippet capability for completion\n  local capabilities = vim.lsp.protocol.make_client_capabilities()\n  capabilities.textDocument.completion.completionItem.snippetSupport = true\n\n  vim.lsp.config('neocmake', {\n    capabilities = capabilities,\n  })\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('neocmake')\n\n\nDefault config:\n- cmd: >lua\n  { \"neocmakelsp\", \"stdio\" }\n- filetypes: >lua\n  { \"cmake\" }\n- root_markers: >lua\n  { \".neocmake.toml\", \".git\", \"build\", \"cmake\" }\n<\n\n------------------------------------------------------------------------------\nnextflow_ls\n\nhttps://github.com/nextflow-io/language-server\n\nRequirements:\n - Java 17+\n\n`nextflow_ls` can be installed by following the instructions [here](https://github.com/nextflow-io/language-server#development).\n\nIf you have installed nextflow language server, you can set the `cmd` custom path as follow:\n>lua\n  vim.lsp.config('nextflow_ls', {\n      cmd = { 'nextflow-language-server' },\n      filetypes = { 'nextflow' },\n      settings = {\n        nextflow = {\n          files = {\n            exclude = { '.git', '.nf-test', 'work' },\n          },\n        },\n      },\n  })\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('nextflow_ls')\n\n\nDefault config:\n- cmd: >lua\n  { \"nextflow-language-server\" }\n- filetypes: >lua\n  { \"nextflow\" }\n- root_markers: >lua\n  { \"nextflow.config\", \".git\" }\n- settings: >lua\n  {\n    nextflow = {\n      files = {\n        exclude = { \".git\", \".nf-test\", \"work\" }\n      }\n    }\n  }\n<\n\n------------------------------------------------------------------------------\nnextls\n\nhttps://github.com/elixir-tools/next-ls\n\n**Please see the following [detailed instructions](https://www.elixir-tools.dev/docs/next-ls/installation/) for possible installation methods.**\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('nextls')\n\n\nDefault config:\n- cmd: >lua\n  { \"nextls\", \"--stdio\" }\n- filetypes: >lua\n  { \"elixir\", \"eelixir\", \"heex\", \"surface\" }\n- root_markers: >lua\n  { \"mix.exs\", \".git\" }\n<\n\n------------------------------------------------------------------------------\nnginx_language_server\n\nhttps://pypi.org/project/nginx-language-server/\n\n`nginx-language-server` can be installed via pip:\n>sh\n  pip install -U nginx-language-server\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('nginx_language_server')\n\n\nDefault config:\n- cmd: >lua\n  { \"nginx-language-server\" }\n- filetypes: >lua\n  { \"nginx\" }\n- root_markers: >lua\n  { \"nginx.conf\", \".git\" }\n<\n\n------------------------------------------------------------------------------\nnickel_ls\n\nNickel Language Server\n\nhttps://github.com/tweag/nickel\n\n`nls` can be installed with nix, or cargo, from the Nickel repository >sh\n  git clone https://github.com/tweag/nickel.git\n\nNix >sh\n  cd nickel\n  nix-env -f . -i\n\ncargo >sh\n  cd nickel/lsp/nls\n  cargo install --path .\n\nIn order to have lspconfig detect Nickel filetypes (a prerequisite for autostarting a server),\ninstall the [Nickel vim plugin](https://github.com/nickel-lang/vim-nickel).\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('nickel_ls')\n\n\nDefault config:\n- cmd: >lua\n  { \"nls\" }\n- filetypes: >lua\n  { \"ncl\", \"nickel\" }\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\nnil_ls\n\nhttps://github.com/oxalica/nil\n\nA new language server for Nix Expression Language.\n\nIf you are using Nix with Flakes support, run `nix profile install github:oxalica/nil` to install.\nCheck the repository README for more information.\n\n_See an example config at https://github.com/oxalica/nil/blob/main/dev/nvim-lsp.nix._\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('nil_ls')\n\n\nDefault config:\n- cmd: >lua\n  { \"nil\" }\n- filetypes: >lua\n  { \"nix\" }\n- root_markers: >lua\n  { \"flake.nix\", \".git\" }\n<\n\n------------------------------------------------------------------------------\nnim_langserver\n\nhttps://github.com/nim-lang/langserver\n\n\n`nim-langserver` can be installed via the `nimble` package manager >sh\n  nimble install nimlangserver\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('nim_langserver')\n\n\nDefault config:\n- cmd: >lua\n  { \"nimlangserver\" }\n- filetypes: >lua\n  { \"nim\" }\n- root_dir (use \"gF\" to view): ../lsp/nim_langserver.lua:14\n<\n\n------------------------------------------------------------------------------\nnimls\n\nhttps://github.com/PMunch/nimlsp\n\n`nimlsp` can be installed via the `nimble` package manager:\n>sh\n  nimble install nimlsp\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('nimls')\n\n\nDefault config:\n- cmd: >lua\n  { \"nimlsp\" }\n- filetypes: >lua\n  { \"nim\" }\n- root_dir (use \"gF\" to view): ../lsp/nimls.lua:14\n<\n\n------------------------------------------------------------------------------\nnixd\n\nhttps://github.com/nix-community/nixd\n\nNix language server, based on nix libraries.\n\nIf you are using Nix with Flakes support, run `nix profile install github:nix-community/nixd` to install.\nCheck the repository README for more information.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('nixd')\n\n\nDefault config:\n- cmd: >lua\n  { \"nixd\" }\n- filetypes: >lua\n  { \"nix\" }\n- root_markers: >lua\n  { \"flake.nix\", \".git\" }\n<\n\n------------------------------------------------------------------------------\nnomad_lsp\n\nhttps://github.com/juliosueiras/nomad-lsp\n\nWritten in Go, compilation is needed for `nomad_lsp` to be used. Please see the [original repository](https://github.com/juliosuieras/nomad-lsp).\n\nAdd the executable to your system or vim PATH and it will be set to go.\n\nNo configuration option is needed unless you choose not to add `nomad-lsp` executable to the PATH. You should know what you are doing if you choose so.\n>lua\n  vim.lsp.enable('nomad_lsp')\n\nHowever, a `hcl.nomad` or `nomad` filetype should be defined.\n\nDescription of your jobs should be written in `.nomad` files for the LSP client to configure the server's `root_dir` configuration option.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('nomad_lsp')\n\n\nDefault config:\n- cmd: >lua\n  { \"nomad-lsp\" }\n- filetypes: >lua\n  { \"hcl.nomad\", \"nomad\" }\n- root_dir (use \"gF\" to view): ../lsp/nomad_lsp.lua:27\n<\n\n------------------------------------------------------------------------------\nntt\n\nhttps://github.com/nokia/ntt\nInstallation instructions can be found [here](https://github.com/nokia/ntt#Install).\nCan be configured by passing a \"settings\" object to vim.lsp.config('ntt') >lua\n  vim.lsp.config('ntt', {\n      settings = {\n        ntt = {\n        }\n      }\n  })\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('ntt')\n\n\nDefault config:\n- cmd: >lua\n  { \"ntt\", \"langserver\" }\n- filetypes: >lua\n  { \"ttcn\" }\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\nnushell\n\nhttps://github.com/nushell/nushell\n\nNushell built-in language server.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('nushell')\n\n\nDefault config:\n- cmd: >lua\n  { \"nu\", \"--lsp\" }\n- filetypes: >lua\n  { \"nu\" }\n- root_dir (use \"gF\" to view): ../lsp/nushell.lua:8\n<\n\n------------------------------------------------------------------------------\nnxls\n\nhttps://github.com/nrwl/nx-console/tree/master/apps/nxls\n\nnxls, a language server for Nx Workspaces\n\n`nxls` can be installed via `npm` >sh\n  npm i -g nxls\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('nxls')\n\n\nDefault config:\n- cmd: >lua\n  { \"nxls\", \"--stdio\" }\n- filetypes: >lua\n  { \"json\", \"jsonc\" }\n- root_markers: >lua\n  { \"nx.json\", \".git\" }\n<\n\n------------------------------------------------------------------------------\nocamllsp\n\nhttps://github.com/ocaml/ocaml-lsp\n\n`ocaml-lsp` can be installed as described in [installation guide](https://github.com/ocaml/ocaml-lsp#installation).\n\nTo install the lsp server in a particular opam switch >sh\n  opam install ocaml-lsp-server\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('ocamllsp')\n\n\nDefault config:\n- cmd: >lua\n  { \"ocamllsp\" }\n- filetypes: >lua\n  { \"ocaml\", \"menhir\", \"ocamlinterface\", \"ocamllex\", \"reason\", \"dune\" }\n- get_language_id (use \"gF\" to view): ../lsp/ocamllsp.lua:77\n- on_attach (use \"gF\" to view): ../lsp/ocamllsp.lua:77\n- root_markers: >lua\n  { { \"dune-project\", \"dune-workspace\" }, { \"*.opam\", \"opam\", \"esy.json\", \"package.json\" }, { \".git\" } }\n<\n\n------------------------------------------------------------------------------\nols\n\nhttps://github.com/DanielGavin/ols\n\n`Odin Language Server`.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('ols')\n\n\nDefault config:\n- cmd: >lua\n  { \"ols\" }\n- filetypes: >lua\n  { \"odin\" }\n- root_dir (use \"gF\" to view): ../lsp/ols.lua:10\n<\n\n------------------------------------------------------------------------------\nomnisharp\n\nhttps://github.com/omnisharp/omnisharp-roslyn\nOmniSharp server based on Roslyn workspaces\n\n`omnisharp-roslyn` can be installed by downloading and extracting a release from [here](https://github.com/OmniSharp/omnisharp-roslyn/releases).\nOmniSharp can also be built from source by following the instructions [here](https://github.com/omnisharp/omnisharp-roslyn#downloading-omnisharp).\n\nOmniSharp requires the [dotnet-sdk](https://dotnet.microsoft.com/download) to be installed.\n\nFor `go_to_definition` to work fully, extended `textDocument/definition` handler is needed, for example see [omnisharp-extended-lsp.nvim](https://github.com/Hoffs/omnisharp-extended-lsp.nvim)\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('omnisharp')\n\n\nDefault config:\n- capabilities: >lua\n  {\n    workspace = {\n      workspaceFolders = false\n    }\n  }\n- cmd: >lua\n  { \"omnisharp\", \"-z\", \"--hostPID\", \"12345\", \"DotNet:enablePackageRestore=false\", \"--encoding\", \"utf-8\", \"--languageserver\" }\n- filetypes: >lua\n  { \"cs\", \"vb\" }\n- init_options: >lua\n  {}\n- root_dir (use \"gF\" to view): ../lsp/omnisharp.lua:18\n- settings: >lua\n  {\n    FormattingOptions = {\n      EnableEditorConfigSupport = true\n    },\n    MsBuild = {},\n    RenameOptions = {},\n    RoslynExtensionsOptions = {},\n    Sdk = {\n      IncludePrereleases = true\n    }\n  }\n<\n\n------------------------------------------------------------------------------\nopencl_ls\n\nhttps://github.com/Galarius/opencl-language-server\n\nBuild instructions can be found [here](https://github.com/Galarius/opencl-language-server/blob/main/_dev/build.md).\n\nPrebuilt binaries are available for Linux, macOS and Windows [here](https://github.com/Galarius/opencl-language-server/releases).\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('opencl_ls')\n\n\nDefault config:\n- cmd: >lua\n  { \"opencl-language-server\" }\n- filetypes: >lua\n  { \"opencl\" }\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\nopenscad_ls\n\nhttps://github.com/dzhu/openscad-language-server\n\nA Language Server Protocol server for OpenSCAD\n\nYou can build and install `openscad-language-server` binary with `cargo` >sh\n  cargo install openscad-language-server\n\nVim does not have built-in syntax for the `openscad` filetype currently.\n\nThis can be added via an autocmd:\n>lua\n  vim.cmd [[ autocmd BufRead,BufNewFile *.scad set filetype=openscad ]]\n\nor by installing a filetype plugin such as https://github.com/sirtaj/vim-openscad\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('openscad_ls')\n\n\nDefault config:\n- cmd: >lua\n  { \"openscad-language-server\" }\n- filetypes: >lua\n  { \"openscad\" }\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\nopenscad_lsp\n\nhttps://github.com/Leathong/openscad-LSP\n\nA Language Server Protocol server for OpenSCAD\n\nYou can build and install `openscad-lsp` binary with `cargo` >sh\n  cargo install openscad-lsp\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('openscad_lsp')\n\n\nDefault config:\n- cmd: >lua\n  { \"openscad-lsp\", \"--stdio\" }\n- filetypes: >lua\n  { \"openscad\" }\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\noso\n\nhttps://www.osohq.com/docs/develop/local-dev/env-setup\n\nOso Polar language server.\n\n`oso-cloud` can be installed by following the instructions\n[here](https://www.osohq.com/docs/develop/local-dev/env-setup).\n\nThe default `cmd` assumes that the `oso-cloud` binary can be found in the `$PATH`.\n\nYou may need to configure the filetype for Polar (*.polar) files:\n>\n  autocmd BufNewFile,BufRead *.polar set filetype=polar\n\nor\n\n```lua\nvim.filetype.add({\n  pattern = {\n    ['.*/*.polar'] = 'polar',\n  },\n})\n\nAlternatively, you may use a syntax plugin like https://github.com/osohq/polar.vim\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('oso')\n\n\nDefault config:\n- cmd: >lua\n  { \"oso-cloud\", \"lsp\" }\n- filetypes: >lua\n  { \"polar\" }\n<\n\n------------------------------------------------------------------------------\noxfmt\n\nhttps://github.com/oxc-project/oxc\nhttps://oxc.rs/docs/guide/usage/formatter.html\n\n`oxfmt` is a Prettier-compatible code formatter that supports multiple languages\nincluding JavaScript, TypeScript, JSON, YAML, HTML, CSS, Markdown, and more.\nIt can be installed via `npm`:\n>sh\n  npm i -g oxfmt\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('oxfmt')\n\n\nDefault config:\n- cmd (use \"gF\" to view): ../lsp/oxfmt.lua:17\n- filetypes: >lua\n  { \"javascript\", \"javascriptreact\", \"typescript\", \"typescriptreact\", \"toml\", \"json\", \"jsonc\", \"json5\", \"yaml\", \"html\", \"vue\", \"handlebars\", \"css\", \"scss\", \"less\", \"graphql\", \"markdown\" }\n- root_dir (use \"gF\" to view): ../lsp/oxfmt.lua:17\n- `workspace_required` : `true`\n<\n\n------------------------------------------------------------------------------\noxlint\n\nhttps://github.com/oxc-project/oxc\nhttps://oxc.rs/docs/guide/usage/linter.html\n\n`oxlint` is a linter for JavaScript / TypeScript supporting over 500 rules from ESLint and its popular plugins.\nIt also supports linting framework files (Vue, Svelte, Astro) by analyzing their <script> blocks.\nIt can be installed via `npm`:\n>sh\n  npm i -g oxlint\n\nType-aware linting will automatically be enabled if `tsgolint` exists in your\npath and your `.oxlintrc.json` contains the string \"typescript\".\n\nThe default `on_attach` function provides an `:LspOxlintFixAll` command which\ncan be used to fix all fixable diagnostics. See the `eslint` config entry for\nan example of how to use this to automatically fix all errors on write.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('oxlint')\n\n\nDefault config:\n- before_init (use \"gF\" to view): ../lsp/oxlint.lua:32\n- cmd (use \"gF\" to view): ../lsp/oxlint.lua:32\n- filetypes: >lua\n  { \"javascript\", \"javascriptreact\", \"typescript\", \"typescriptreact\", \"vue\", \"svelte\", \"astro\" }\n- on_attach (use \"gF\" to view): ../lsp/oxlint.lua:32\n- root_markers: >lua\n  { \".oxlintrc.json\", \"oxlint.config.ts\" }\n- settings: >lua\n  {}\n- `workspace_required` : `true`\n<\n\n------------------------------------------------------------------------------\npact_ls\n\nhttps://github.com/kadena-io/pact-lsp\n\nThe Pact language server\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('pact_ls')\n\n\nDefault config:\n- cmd: >lua\n  { \"pact-lsp\" }\n- filetypes: >lua\n  { \"pact\" }\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\npasls\n\nhttps://github.com/genericptr/pascal-language-server\n\nAn LSP server implementation for Pascal variants that are supported by Free Pascal, including Object Pascal. It uses CodeTools from Lazarus as backend.\n\nFirst set `cmd` to the Pascal lsp binary.\n\nCustomization options are passed to pasls as environment variables for example in your `.bashrc` >bash\n  export FPCDIR='/usr/lib/fpc/src'      # FPC source directory (This is the only required option for the server to work).\n  export PP='/usr/lib/fpc/3.2.2/ppcx64' # Path to the Free Pascal compiler executable.\n  export LAZARUSDIR='/usr/lib/lazarus'  # Path to the Lazarus sources.\n  export FPCTARGET=''                   # Target operating system for cross compiling.\n  export FPCTARGETCPU='x86_64'          # Target CPU for cross compiling.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('pasls')\n\n\nDefault config:\n- cmd: >lua\n  { \"pasls\" }\n- filetypes: >lua\n  { \"pascal\" }\n- root_dir (use \"gF\" to view): ../lsp/pasls.lua:21\n<\n\n------------------------------------------------------------------------------\npbls\n\nhttps://git.sr.ht/~rrc/pbls\n\nPrerequisites: Ensure protoc is on your $PATH.\n\n`pbls` can be installed via `cargo install` >sh\n  cargo install --git https://git.sr.ht/~rrc/pbls\n\npbls is a Language Server for protobuf\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('pbls')\n\n\nDefault config:\n- cmd: >lua\n  { \"pbls\" }\n- filetypes: >lua\n  { \"proto\" }\n- root_markers: >lua\n  { \".pbls.toml\", \".git\" }\n<\n\n------------------------------------------------------------------------------\nperlls\n\nhttps://github.com/richterger/Perl-LanguageServer/tree/master/clients/vscode/perl\n\n`Perl-LanguageServer`, a language server for Perl.\n\nTo use the language server, ensure that you have Perl::LanguageServer installed and perl command is on your path.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('perlls')\n\n\nDefault config:\n- cmd: >lua\n  { \"perl\", \"-MPerl::LanguageServer\", \"-e\", \"Perl::LanguageServer::run\", \"--\", \"--port 13603\", \"--nostdio 0\" }\n- filetypes: >lua\n  { \"perl\" }\n- root_markers: >lua\n  { \".git\" }\n- settings: >lua\n  {\n    perl = {\n      fileFilter = { \".pm\", \".pl\" },\n      ignoreDirs = \".git\",\n      perlCmd = \"perl\",\n      perlInc = \" \"\n    }\n  }\n<\n\n------------------------------------------------------------------------------\nperlnavigator\n\nhttps://github.com/bscan/PerlNavigator\n\nA Perl language server. It can be installed via npm:\n>sh\n  npm i -g perlnavigator-server\n\nAt minimum, you will need `perl` in your path. If you want to use a non-standard `perl` you will need to set your configuration like so >lua\n  settings = {\n    perlnavigator = {\n      perlPath = '/some/odd/location/my-perl'\n    }\n  }\n\nThe `contributes.configuration.properties` section of `perlnavigator`'s `package.json` has all available configuration settings. All\nsettings have a reasonable default, but, at minimum, you may want to point `perlnavigator` at your `perltidy` and `perlcritic` configurations.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('perlnavigator')\n\n\nDefault config:\n- cmd: >lua\n  { \"perlnavigator\" }\n- filetypes: >lua\n  { \"perl\" }\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\nperlpls\n\nhttps://github.com/FractalBoy/perl-language-server\nhttps://metacpan.org/pod/PLS\n\n`PLS`, another language server for Perl.\n\nTo use the language server, ensure that you have PLS installed and that it is in your path\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('perlpls')\n\n\nDefault config:\n- cmd: >lua\n  { \"pls\" }\n- filetypes: >lua\n  { \"perl\" }\n- root_markers: >lua\n  { \".git\" }\n- settings: >lua\n  {\n    perl = {\n      perlcritic = {\n        enabled = false\n      },\n      syntax = {\n        enabled = true\n      }\n    }\n  }\n<\n\n------------------------------------------------------------------------------\npest_ls\n\nhttps://github.com/pest-parser/pest-ide-tools\n\nLanguage server for pest grammars.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('pest_ls')\n\n\nDefault config:\n- cmd: >lua\n  { \"pest-language-server\" }\n- filetypes: >lua\n  { \"pest\" }\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\nphan\n\nhttps://github.com/phan/phan\n\nInstallation: https://github.com/phan/phan#getting-started\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('phan')\n\n\nDefault config:\n- cmd: >lua\n  { \"phan\", \"-m\", \"json\", \"--no-color\", \"--no-progress-bar\", \"-x\", \"-u\", \"-S\", \"--language-server-on-stdin\", \"--allow-polyfill-parser\" }\n- filetypes: >lua\n  { \"php\" }\n- root_dir (use \"gF\" to view): ../lsp/phan.lua:21\n<\n\n------------------------------------------------------------------------------\nphpactor\n\nhttps://github.com/phpactor/phpactor\n\nInstallation: https://phpactor.readthedocs.io/en/master/usage/standalone.html#global-installation\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('phpactor')\n\n\nDefault config:\n- cmd: >lua\n  { \"phpactor\", \"language-server\" }\n- filetypes: >lua\n  { \"php\" }\n- root_markers: >lua\n  { \".git\", \"composer.json\", \".phpactor.json\", \".phpactor.yml\" }\n- `workspace_required` : `true`\n<\n\n------------------------------------------------------------------------------\nphptools\n\nhttps://www.devsense.com/\n\n`devsense-php-ls` can be installed via `npm` >sh\n  npm install -g devsense-php-ls\n>lua\n  -- See https://www.npmjs.com/package/devsense-php-ls\n  init_options = {\n  }\n  -- See https://docs.devsense.com/vscode/configuration/\n  settings = {\n    php = {\n    };\n  }\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('phptools')\n\n\nDefault config:\n- cmd: >lua\n  { \"devsense-php-ls\", \"--stdio\" }\n- filetypes: >lua\n  { \"php\" }\n- init_options: >lua\n  {\n    [\"0\"] = \"{}\"\n  }\n- root_dir (use \"gF\" to view): ../lsp/phptools.lua:22\n<\n\n------------------------------------------------------------------------------\npico8_ls\n\nhttps://github.com/japhib/pico8-ls\n\nFull language support for the PICO-8 dialect of Lua.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('pico8_ls')\n\n\nDefault config:\n- cmd: >lua\n  { \"pico8-ls\", \"--stdio\" }\n- filetypes: >lua\n  { \"p8\" }\n- root_dir (use \"gF\" to view): ../lsp/pico8_ls.lua:10\n- settings: >lua\n  {}\n<\n\n------------------------------------------------------------------------------\nplease\n\nhttps://github.com/thought-machine/please\n\nHigh-performance extensible build system for reproducible multi-language builds.\n\nThe `plz` binary will automatically install the LSP for you on first run\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('please')\n\n\nDefault config:\n- cmd: >lua\n  { \"plz\", \"tool\", \"lps\" }\n- filetypes: >lua\n  { \"bzl\" }\n- root_markers: >lua\n  { \".plzconfig\" }\n<\n\n------------------------------------------------------------------------------\npli\n\n`pli_language_server` is a language server for the PL/I language used on IBM SystemZ mainframes.\n\nTo learn how to configure the PL/I language server, see the [PL/I Language Support documentation](https://github.com/zowe/zowe-pli-language-support).\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('pli')\n\n\nDefault config:\n- cmd: >lua\n  { \"pli_language_server\" }\n- filetypes: >lua\n  { \"pli\" }\n- root_markers: >lua\n  { \".pliplugin\" }\n<\n\n------------------------------------------------------------------------------\npony_language_server\n\nRenamed to [pony_lsp](#pony_lsp)\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('pony_language_server')\n\n\nDefault config:\n- cmd: >lua\n  { \"pony-lsp\" }\n- filetypes: >lua\n  { \"pony\" }\n- name: >lua\n  \"pony_lsp\"\n- on_init (use \"gF\" to view): ../lsp/pony_language_server.lua:6\n- root_markers: >lua\n  { \"corral.json\", \".git\" }\n- settings: >lua\n  {\n    [\"pony-lsp\"] = {\n      defines = {},\n      ponypath = {}\n    }\n  }\n<\n\n------------------------------------------------------------------------------\npony_lsp\n\nhttps://github.com/ponylang/ponyc/tree/main/tools/pony-lsp\n\nLanguage server for the Pony programming language\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('pony_lsp')\n\n\nDefault config:\n- cmd: >lua\n  { \"pony-lsp\" }\n- filetypes: >lua\n  { \"pony\" }\n- root_markers: >lua\n  { \"corral.json\", \".git\" }\n- settings: >lua\n  {\n    [\"pony-lsp\"] = {\n      defines = {},\n      ponypath = {}\n    }\n  }\n<\n\n------------------------------------------------------------------------------\nporyscript_pls\n\nhttps://github.com/huderlem/poryscript-pls\n\nLanguage server for poryscript (a high level scripting language for GBA-era Pokémon decompilation projects)\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('poryscript_pls')\n\n\nDefault config:\n- cmd: >lua\n  { \"poryscript-pls\" }\n- filetypes: >lua\n  { \"pory\" }\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\npostgres_lsp\n\nhttps://pg-language-server.com\n\nA collection of language tools and a Language Server Protocol (LSP) implementation for Postgres, focusing on developer experience and reliable SQL tooling.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('postgres_lsp')\n\n\nDefault config:\n- cmd: >lua\n  { \"postgres-language-server\", \"lsp-proxy\" }\n- filetypes: >lua\n  { \"sql\" }\n- root_markers: >lua\n  { \"postgres-language-server.jsonc\" }\n- `workspace_required` : `true`\n<\n\n------------------------------------------------------------------------------\npowershell_es\n\nhttps://github.com/PowerShell/PowerShellEditorServices\n\nLanguage server for PowerShell.\n\nTo install, download and extract PowerShellEditorServices.zip\nfrom the [releases](https://github.com/PowerShell/PowerShellEditorServices/releases).\nTo configure the language server, set the property `bundle_path` to the root\nof the extracted PowerShellEditorServices.zip.\n>lua\n  vim.lsp.config('powershell_es', {\n    bundle_path = 'c:/w/PowerShellEditorServices',\n  })\n\nBy default the language server is started in `pwsh` (PowerShell Core). This can be changed by specifying `shell`.\n>lua\n  vim.lsp.config('powershell_es', {\n    bundle_path = 'c:/w/PowerShellEditorServices',\n    shell = 'powershell.exe',\n  })\n\nNote that the execution policy needs to be set to `Unrestricted` for the languageserver run under PowerShell\n\nIf necessary, specific `cmd` can be defined instead of `bundle_path`.\nSee [PowerShellEditorServices](https://github.com/PowerShell/PowerShellEditorServices#standard-input-and-output)\nto learn more.\n>lua\n  vim.lsp.config('powershell_es', {\n    cmd = {'pwsh', '-NoLogo', '-NoProfile', '-Command', \"c:/PSES/Start-EditorServices.ps1 ...\"},\n  })\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('powershell_es')\n\n\nDefault config:\n- cmd (use \"gF\" to view): ../lsp/powershell_es.lua:40\n- filetypes: >lua\n  { \"ps1\" }\n- root_markers: >lua\n  { \"PSScriptAnalyzerSettings.psd1\", \".git\" }\n<\n\n------------------------------------------------------------------------------\nprismals\n\nLanguage Server for the Prisma JavaScript and TypeScript ORM\n\n`@prisma/language-server` can be installed via np >sh\n  npm install -g @prisma/language-server\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('prismals')\n\n\nDefault config:\n- cmd: >lua\n  { \"prisma-language-server\", \"--stdio\" }\n- filetypes: >lua\n  { \"prisma\" }\n- root_markers: >lua\n  { \".git\", \"package.json\" }\n- settings: >lua\n  {\n    prisma = {\n      prismaFmtBinPath = \"\"\n    }\n  }\n<\n\n------------------------------------------------------------------------------\nprolog_ls\n\nhttps://github.com/jamesnvc/lsp_server\n\nLanguage Server Protocol server for SWI-Prolog\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('prolog_ls')\n\n\nDefault config:\n- cmd: >lua\n  { \"swipl\", \"-g\", \"use_module(library(lsp_server)).\", \"-g\", \"lsp_server:main\", \"-t\", \"halt\", \"--\", \"stdio\" }\n- filetypes: >lua\n  { \"prolog\" }\n- root_markers: >lua\n  { \"pack.pl\" }\n<\n\n------------------------------------------------------------------------------\nprosemd_lsp\n\nhttps://github.com/kitten/prosemd-lsp\n\nAn experimental LSP for Markdown.\n\nPlease see the manual installation instructions: https://github.com/kitten/prosemd-lsp#manual-installation\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('prosemd_lsp')\n\n\nDefault config:\n- cmd: >lua\n  { \"prosemd-lsp\", \"--stdio\" }\n- filetypes: >lua\n  { \"markdown\" }\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\nprotols\n\nhttps://github.com/coder3101/protols\n\n`protols` can be installed via `cargo` >sh\n  cargo install protols\n\nA Language Server for proto3 files. It uses tree-sitter and runs in single file mode.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('protols')\n\n\nDefault config:\n- cmd: >lua\n  { \"protols\" }\n- filetypes: >lua\n  { \"proto\" }\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\npsalm\n\nhttps://github.com/vimeo/psalm\n\nCan be installed with composer >sh\n  composer global require vimeo/psalm\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('psalm')\n\n\nDefault config:\n- cmd: >lua\n  { \"psalm\", \"--language-server\" }\n- filetypes: >lua\n  { \"php\" }\n- root_markers: >lua\n  { \"psalm.xml\", \"psalm.xml.dist\" }\n<\n\n------------------------------------------------------------------------------\npug\n\nhttps://github.com/opa-oz/pug-lsp\n\nAn implementation of the Language Protocol Server for [Pug.js](http://pugjs.org)\n\nPugLSP can be installed via `go install github.com/opa-oz/pug-lsp@latest`, or manually downloaded from [releases page](https://github.com/opa-oz/pug-lsp/releases)\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('pug')\n\n\nDefault config:\n- cmd: >lua\n  { \"pug-lsp\" }\n- filetypes: >lua\n  { \"pug\" }\n- root_markers: >lua\n  { \"package.json\" }\n<\n\n------------------------------------------------------------------------------\npuppet\n\nLSP server for Puppet.\n\nInstallation:\n\n- Clone the editor-services repository:\n    https://github.com/puppetlabs/puppet-editor-services\n\n- Navigate into that directory and run: `bundle install`\n\n- Install the 'puppet-lint' gem: `gem install puppet-lint`\n\n- Add that repository to $PATH.\n\n- Ensure you can run `puppet-languageserver` from outside the editor-services directory.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('puppet')\n\n\nDefault config:\n- cmd: >lua\n  { \"puppet-languageserver\", \"--stdio\" }\n- filetypes: >lua\n  { \"puppet\" }\n- root_markers: >lua\n  { \"manifests\", \".puppet-lint.rc\", \"hiera.yaml\", \".git\" }\n<\n\n------------------------------------------------------------------------------\npurescriptls\n\nhttps://github.com/nwolverson/purescript-language-server\n\nThe `purescript-language-server` can be added to your project and `$PATH` via\n\n* JavaScript package manager such as npm, pnpm, Yarn, et al.\n* Nix under the `nodePackages` and `nodePackages_latest` package sets\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('purescriptls')\n\n\nDefault config:\n- cmd: >lua\n  { \"purescript-language-server\", \"--stdio\" }\n- filetypes: >lua\n  { \"purescript\" }\n- root_markers: >lua\n  { \"bower.json\", \"flake.nix\", \"psc-package.json\", \"shell.nix\", \"spago.dhall\", \"spago.yaml\" }\n<\n\n------------------------------------------------------------------------------\npylsp\n\nhttps://github.com/python-lsp/python-lsp-server\n\nA Python 3.6+ implementation of the Language Server Protocol.\n\nSee the [project's README](https://github.com/python-lsp/python-lsp-server) for installation instructions.\n\nConfiguration options are documented [here](https://github.com/python-lsp/python-lsp-server/blob/develop/CONFIGURATION.md).\nIn order to configure an option, it must be translated to a nested Lua table and included in the `settings` argument to the `config('pylsp', {})` function.\nFor example, in order to set the `pylsp.plugins.pycodestyle.ignore` option >lua\n  vim.lsp.config('pylsp', {\n    settings = {\n      pylsp = {\n        plugins = {\n          pycodestyle = {\n            ignore = {'W391'},\n            maxLineLength = 100\n          }\n        }\n      }\n    }\n  })\n\nNote: This is a community fork of `pyls`.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('pylsp')\n\n\nDefault config:\n- cmd: >lua\n  { \"pylsp\" }\n- filetypes: >lua\n  { \"python\" }\n- root_markers: >lua\n  { \"pyproject.toml\", \"setup.py\", \"setup.cfg\", \"requirements.txt\", \"Pipfile\", \".git\" }\n<\n\n------------------------------------------------------------------------------\npylyzer\n\nhttps://github.com/mtshiba/pylyzer\n\n`pylyzer`, a fast static code analyzer & language server for Python.\n\n`pylyzer` requires Erg as dependency, and finds it via `ERG_PATH` environment variable.\nThis config sets `ERG_PATH=\"~/.erg\"`. Set `cmd_env` if you want to change it.\nTo install Erg, simply extract tarball/zip from [Erg releases](https://github.com/erg-lang/erg/releases/latest)\nto the the path where you want to install it, e.g. `~/.erg`.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('pylyzer')\n\n\nDefault config:\n- cmd: >lua\n  { \"pylyzer\", \"--server\" }\n- cmd_env: >lua\n  {\n    ERG_PATH = \"/home/runner/.erg\"\n  }\n- filetypes: >lua\n  { \"python\" }\n- root_markers: >lua\n  { \"setup.py\", \"tox.ini\", \"requirements.txt\", \"Pipfile\", \"pyproject.toml\", \".git\" }\n- settings: >lua\n  {\n    python = {\n      checkOnType = false,\n      diagnostics = true,\n      inlayHints = true,\n      smartCompletion = true\n    }\n  }\n<\n\n------------------------------------------------------------------------------\npyre\n\nhttps://pyre-check.org/\n\n`pyre` a static type checker for Python 3.\n\n`pyre` offers an extremely limited featureset. It currently only supports diagnostics,\nwhich are triggered on save.\n\nDo not report issues for missing features in `pyre` to `lspconfig`.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('pyre')\n\n\nDefault config:\n- cmd: >lua\n  { \"pyre\", \"persistent\" }\n- filetypes: >lua\n  { \"python\" }\n- root_markers: >lua\n  { \".pyre_configuration\" }\n<\n\n------------------------------------------------------------------------------\npyrefly\n\nhttps://pyrefly.org/\n\n`pyrefly`, a faster Python type checker written in Rust.\n\n `pyrefly` is still in development, so please report any errors to\n our issues page at https://github.com/facebook/pyrefly/issues.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('pyrefly')\n\n\nDefault config:\n- cmd: >lua\n  { \"pyrefly\", \"lsp\" }\n- filetypes: >lua\n  { \"python\" }\n- on_exit (use \"gF\" to view): ../lsp/pyrefly.lua:11\n- root_markers: >lua\n  { \"pyrefly.toml\", \"pyproject.toml\", \"setup.py\", \"setup.cfg\", \"requirements.txt\", \"Pipfile\", \".git\" }\n<\n\n------------------------------------------------------------------------------\npyright\n\nhttps://github.com/microsoft/pyright\n\n`pyright`, a static type checker and language server for python\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('pyright')\n\n\nDefault config:\n- cmd: >lua\n  { \"pyright-langserver\", \"--stdio\" }\n- filetypes: >lua\n  { \"python\" }\n- on_attach (use \"gF\" to view): ../lsp/pyright.lua:25\n- root_markers: >lua\n  { \"pyrightconfig.json\", \"pyproject.toml\", \"setup.py\", \"setup.cfg\", \"requirements.txt\", \"Pipfile\", \".git\" }\n- settings: >lua\n  {\n    python = {\n      analysis = {\n        autoSearchPaths = true,\n        diagnosticMode = \"openFilesOnly\",\n        useLibraryCodeForTypes = true\n      }\n    }\n  }\n<\n\n------------------------------------------------------------------------------\nqmlls\n\nhttps://doc.qt.io/qt-6/qtqml-tooling-qmlls.html\n\n> QML Language Server is a tool shipped with Qt that helps you write code in your favorite (LSP-supporting) editor.\n\nSource in the [QtDeclarative repository](https://code.qt.io/cgit/qt/qtdeclarative.git/)\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('qmlls')\n\n\nDefault config:\n- cmd: >lua\n  { \"qmlls\" }\n- filetypes: >lua\n  { \"qml\", \"qmljs\" }\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\nquick_lint_js\n\nhttps://quick-lint-js.com/\n\nquick-lint-js finds bugs in JavaScript programs.\n\nSee installation [instructions](https://quick-lint-js.com/install/)\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('quick_lint_js')\n\n\nDefault config:\n- cmd: >lua\n  { \"quick-lint-js\", \"--lsp-server\" }\n- filetypes: >lua\n  { \"javascript\", \"typescript\" }\n- root_markers: >lua\n  { \"package.json\", \"jsconfig.json\", \".git\" }\n<\n\n------------------------------------------------------------------------------\nr_language_server\n\n[languageserver](https://github.com/REditorSupport/languageserver) is an\nimplementation of the Microsoft's Language Server Protocol for the R\nlanguage.\n\nIt is released on CRAN and can be easily installed by\n>r\n  install.packages(\"languageserver\")\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('r_language_server')\n\n\nDefault config:\n- cmd: >lua\n  { \"R\", \"--no-echo\", \"-e\", \"languageserver::run()\" }\n- filetypes: >lua\n  { \"r\", \"rmd\", \"quarto\" }\n- root_dir (use \"gF\" to view): ../lsp/r_language_server.lua:14\n<\n\n------------------------------------------------------------------------------\nracket_langserver\n\n[https://github.com/jeapostrophe/racket-langserver](https://github.com/jeapostrophe/racket-langserver)\n\nThe Racket language server. This project seeks to use\n[DrRacket](https://github.com/racket/drracket)'s public API to provide\nfunctionality that mimics DrRacket's code tools as closely as possible.\n\nInstall via `raco`: `raco pkg install racket-langserver`\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('racket_langserver')\n\n\nDefault config:\n- cmd: >lua\n  { \"racket\", \"--lib\", \"racket-langserver\" }\n- filetypes: >lua\n  { \"racket\", \"scheme\" }\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\nraku_navigator\n\nhttps://github.com/bscan/RakuNavigator\nA Raku language server\n**By default, raku_navigator doesn't have a `cmd` set.** This is because nvim-lspconfig does not make assumptions about your path.\nYou have to install the language server manually.\nClone the RakuNavigator repo, install based on the [instructions](https://github.com/bscan/raku_Navigator#installation-for-other-editors),\nand point `cmd` to `server.js` inside the `server/out` directory >lua\n  cmd = {'node', '<path_to_repo>/server/out/server.js', '--stdio'}\nAt minimum, you will need `raku` in your path. If you want to use a non-standard `raku` you will need to set your configuration like so >lua\n  settings = {\n    raku_navigator = {\n      rakuPath = '/some/odd/location/my-raku'\n    }\n  }\nThe `contributes.configuration.properties` section of `raku_navigator`'s `package.json` has all available configuration settings. All\nsettings have a reasonable default, but, at minimum, you may want to point `raku_navigator` at your `raku_tidy` and `raku_critic` configurations.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('raku_navigator')\n\n\nDefault config:\n- cmd: >lua\n  {}\n- filetypes: >lua\n  { \"raku\" }\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\nreason_ls\n\nReason language server\n\nYou can install reason language server from [reason-language-server](https://github.com/jaredly/reason-language-server) repository.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('reason_ls')\n\n\nDefault config:\n- cmd: >lua\n  { \"reason-language-server\" }\n- filetypes: >lua\n  { \"reason\" }\n- root_markers: >lua\n  { \"bsconfig.json\", \".git\" }\n<\n\n------------------------------------------------------------------------------\nregal\n\nhttps://github.com/StyraInc/regal\n\nA linter for Rego, with support for running as an LSP server.\n\n`regal` can be installed by running >sh\n  go install github.com/StyraInc/regal@latest\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('regal')\n\n\nDefault config:\n- cmd: >lua\n  { \"regal\", \"language-server\" }\n- filetypes: >lua\n  { \"rego\" }\n- root_dir (use \"gF\" to view): ../lsp/regal.lua:15\n<\n\n------------------------------------------------------------------------------\nregols\n\nhttps://github.com/kitagry/regols\n\nOPA Rego language server.\n\n`regols` can be installed by running >sh\n  go install github.com/kitagry/regols@latest\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('regols')\n\n\nDefault config:\n- cmd: >lua\n  { \"regols\" }\n- filetypes: >lua\n  { \"rego\" }\n- root_dir (use \"gF\" to view): ../lsp/regols.lua:15\n<\n\n------------------------------------------------------------------------------\nremark_ls\n\nhttps://github.com/remarkjs/remark-language-server\n\n`remark-language-server` can be installed via `npm` >sh\n  npm install -g remark-language-server\n\n`remark-language-server` uses the same\n[configuration files](https://github.com/remarkjs/remark/tree/main/packages/remark-cli#example-config-files-json-yaml-js)\nas `remark-cli`.\n\nThis uses a plugin based system. Each plugin needs to be installed locally using `npm` or `yarn`.\n\nFor example, given the following `.remarkrc.json`:\n>json\n  {\n    \"presets\": [\n      \"remark-preset-lint-recommended\"\n    ]\n  }\n\n`remark-preset-lint-recommended` needs to be installed in the local project:\n>sh\n  npm install remark-preset-lint-recommended\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('remark_ls')\n\n\nDefault config:\n- cmd: >lua\n  { \"remark-language-server\", \"--stdio\" }\n- filetypes: >lua\n  { \"markdown\" }\n- root_markers: >lua\n  { \".remarkrc\", \".remarkrc.json\", \".remarkrc.js\", \".remarkrc.cjs\", \".remarkrc.mjs\", \".remarkrc.yml\", \".remarkrc.yaml\", \".remarkignore\" }\n<\n\n------------------------------------------------------------------------------\nrescriptls\n\nhttps://github.com/rescript-lang/rescript-vscode/tree/master/server\n\nReScript Language Server can be installed via npm >sh\n  npm install -g @rescript/language-server\n\nSee [package.json](https://github.com/rescript-lang/rescript-vscode/blob/master/package.json#L139)\nfor init_options supported.\n\nFor example, in order to disable the `inlayHints` option >lua\n  vim.lsp.config('rescriptls', {\n    settings = {\n      rescript = {\n        settings = {\n          inlayHints = { enable = false },\n        },\n      },\n    })\n  }\n\nDetect file changes: While using @rescript/language-server >= 1.63.0 you have to detect file changes by registering the didChangeWatchedFiles hook >lua\n  capabilities = {\n      workspace = {\n          didChangeWatchedFiles = {\n              dynamicRegistration = true,\n          },\n      },\n  }\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('rescriptls')\n\n\nDefault config:\n- cmd: >lua\n  { \"rescript-language-server\", \"--stdio\" }\n- filetypes: >lua\n  { \"rescript\" }\n- init_options: >lua\n  {\n    extensionConfiguration = {\n      allowBuiltInFormatter = true,\n      askToStartBuild = false,\n      cache = {\n        projectConfig = {\n          enabled = true\n        }\n      },\n      codeLens = true,\n      incrementalTypechecking = {\n        acrossFiles = true,\n        enabled = true\n      },\n      inlayHints = {\n        enable = true\n      }\n    }\n  }\n- root_markers: >lua\n  { \"bsconfig.json\", \"rescript.json\", \".git\" }\n- settings: >lua\n  {}\n<\n\n------------------------------------------------------------------------------\nrls\n\nhttps://github.com/rust-lang/rls\n\nrls, a language server for Rust\n\nSee https://github.com/rust-lang/rls#setup to setup rls itself.\nSee https://github.com/rust-lang/rls#configuration for rls-specific settings.\nAll settings listed on the rls configuration section of the readme\nmust be set under settings.rust as follows:\n>lua\n  vim.lsp.config('rls', {\n    settings = {\n      rust = {\n        unstable_features = true,\n        build_on_save = false,\n        all_features = true,\n      },\n    },\n  })\n\nIf you want to use rls for a particular build, eg nightly, set cmd as follows:\n>lua\n  cmd = {\"rustup\", \"run\", \"nightly\", \"rls\"}\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('rls')\n\n\nDefault config:\n- cmd: >lua\n  { \"rls\" }\n- filetypes: >lua\n  { \"rust\" }\n- root_markers: >lua\n  { \"Cargo.toml\" }\n<\n\n------------------------------------------------------------------------------\nrnix\n\nhttps://github.com/nix-community/rnix-lsp\n\nA language server for Nix providing basic completion and formatting via nixpkgs-fmt.\n\nTo install manually, run `cargo install rnix-lsp`. If you are using nix, rnix-lsp is in nixpkgs.\n\nThis server accepts configuration via the `settings` key.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('rnix')\n\n\nDefault config:\n- cmd: >lua\n  { \"rnix-lsp\" }\n- filetypes: >lua\n  { \"nix\" }\n- init_options: >lua\n  {}\n- root_dir (use \"gF\" to view): ../lsp/rnix.lua:12\n- settings: >lua\n  {}\n<\n\n------------------------------------------------------------------------------\nrobotcode\n\nhttps://robotcode.io\n\nRobotCode - Language Server Protocol implementation for Robot Framework.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('robotcode')\n\n\nDefault config:\n- cmd: >lua\n  { \"robotcode\", \"language-server\" }\n- filetypes: >lua\n  { \"robot\", \"resource\" }\n- get_language_id (use \"gF\" to view): ../lsp/robotcode.lua:8\n- root_markers: >lua\n  { \"robot.toml\", \"pyproject.toml\", \"Pipfile\", \".git\" }\n<\n\n------------------------------------------------------------------------------\nrobotframework_ls\n\nhttps://github.com/robocorp/robotframework-lsp\n\nLanguage Server Protocol implementation for Robot Framework.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('robotframework_ls')\n\n\nDefault config:\n- cmd: >lua\n  { \"robotframework_ls\" }\n- filetypes: >lua\n  { \"robot\" }\n- root_markers: >lua\n  { \"robotidy.toml\", \"pyproject.toml\", \"conda.yaml\", \"robot.yaml\", \".git\" }\n<\n\n------------------------------------------------------------------------------\nroc_ls\n\nhttps://github.com/roc-lang/roc/tree/main/crates/language_server#roc_language_server\n\nThe built-in language server for the Roc programming language.\n[Installation](https://github.com/roc-lang/roc/tree/main/crates/language_server#installing)\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('roc_ls')\n\n\nDefault config:\n- cmd: >lua\n  { \"roc_language_server\" }\n- filetypes: >lua\n  { \"roc\" }\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\nrome\n\nhttps://rome.tools\n\nLanguage server for the Rome Frontend Toolchain.\n\n(Unmaintained, use [Biome](https://biomejs.dev/blog/annoucing-biome) instead.)\n>sh\n  npm install [-g] rome\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('rome')\n\n\nDefault config:\n- cmd: >lua\n  { \"rome\", \"lsp-proxy\" }\n- filetypes: >lua\n  { \"javascript\", \"javascriptreact\", \"json\", \"typescript\", \"typescriptreact\" }\n- root_markers: >lua\n  { \"package.json\", \"node_modules\", \".git\" }\n<\n\n------------------------------------------------------------------------------\nroslyn_ls\n\nhttps://github.com/dotnet/roslyn\n\nTo install the server, compile from source or download as nuget package.\nGo to `https://dev.azure.com/azure-public/vside/_artifacts/feed/vs-impl/NuGet/Microsoft.CodeAnalysis.LanguageServer.<platform>/overview`\nreplace `<platform>` with one of the following `linux-x64`, `osx-x64`, `win-x64`, `neutral` (for more info on the download location see https://github.com/dotnet/roslyn/issues/71474#issuecomment-2177303207).\nDownload and extract it (nuget's are zip files).\n- if you chose `neutral` nuget version, then you have to change the `cmd` like so:\n  ```lua\n  cmd = {\n    'dotnet',\n    '<my_folder>/Microsoft.CodeAnalysis.LanguageServer.dll',\n    '--logLevel', -- this property is required by the server\n    'Information',\n    '--extensionLogDirectory', -- this property is required by the server\n    fs.joinpath(uv.os_tmpdir(), 'roslyn_ls/logs'),\n    '--stdio',\n  },\n  ```\n  where `<my_folder>` has to be the folder you extracted the nuget package to.\n- for all other platforms put the extracted folder to neovim's PATH (`vim.env.PATH`)\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('roslyn_ls')\n\n\nCommands:\n- roslyn.client.completionComplexEdit\n- roslyn.client.nestedCodeAction\n\nDefault config:\n- capabilities: >lua\n  {\n    textDocument = {\n      diagnostic = {\n        dynamicRegistration = true\n      }\n    }\n  }\n- cmd: >lua\n  { \"roslyn-language-server\", \"--logLevel\", \"Information\", \"--extensionLogDirectory\", \"/tmp/roslyn_ls/logs\", \"--stdio\" }\n- cmd_env: >lua\n  {}\n- commands: >lua\n  {\n    [\"roslyn.client.completionComplexEdit\"] = <function 1>,\n    [\"roslyn.client.nestedCodeAction\"] = <function 2>\n  }\n- filetypes: >lua\n  { \"cs\" }\n- handlers: >lua\n  {\n    [\"razor/provideDynamicFileInfo\"] = <function 1>,\n    [\"workspace/_roslyn_projectNeedsRestore\"] = <function 2>,\n    [\"workspace/projectInitializationComplete\"] = <function 3>\n  }\n- name: >lua\n  \"roslyn_ls\"\n- on_attach (use \"gF\" to view): ../lsp/roslyn_ls.lua:112\n- on_init: >lua\n  { <function 1> }\n- root_dir (use \"gF\" to view): ../lsp/roslyn_ls.lua:112\n- settings: >lua\n  {\n    [\"csharp|background_analysis\"] = {\n      dotnet_analyzer_diagnostics_scope = \"fullSolution\",\n      dotnet_compiler_diagnostics_scope = \"fullSolution\"\n    },\n    [\"csharp|code_lens\"] = {\n      dotnet_enable_references_code_lens = true\n    },\n    [\"csharp|completion\"] = {\n      dotnet_provide_regex_completions = true,\n      dotnet_show_completion_items_from_unimported_namespaces = true,\n      dotnet_show_name_completion_suggestions = true\n    },\n    [\"csharp|inlay_hints\"] = {\n      csharp_enable_inlay_hints_for_implicit_object_creation = true,\n      csharp_enable_inlay_hints_for_implicit_variable_types = true,\n      csharp_enable_inlay_hints_for_lambda_parameter_types = true,\n      csharp_enable_inlay_hints_for_types = true,\n      dotnet_enable_inlay_hints_for_indexer_parameters = true,\n      dotnet_enable_inlay_hints_for_literal_parameters = true,\n      dotnet_enable_inlay_hints_for_object_creation_parameters = true,\n      dotnet_enable_inlay_hints_for_other_parameters = true,\n      dotnet_enable_inlay_hints_for_parameters = true,\n      dotnet_suppress_inlay_hints_for_parameters_that_differ_only_by_suffix = true,\n      dotnet_suppress_inlay_hints_for_parameters_that_match_argument_name = true,\n      dotnet_suppress_inlay_hints_for_parameters_that_match_method_intent = true\n    },\n    [\"csharp|symbol_search\"] = {\n      dotnet_search_reference_assemblies = true\n    }\n  }\n<\n\n------------------------------------------------------------------------------\nrpmspec\n\nhttps://github.com/dcermak/rpm-spec-language-server\n\nLanguage server protocol (LSP) support for RPM Spec files.\n\n`rpm-spec-language-server` can be installed by running,\n>sh\n  pip install rpm-spec-language-server\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('rpmspec')\n\n\nDefault config:\n- cmd: >lua\n  { \"rpm_lsp_server\", \"--stdio\" }\n- filetypes: >lua\n  { \"spec\" }\n- root_markers: >lua\n  { \".git\" }\n- settings: >lua\n  {}\n<\n\n------------------------------------------------------------------------------\nrubocop\n\nhttps://github.com/rubocop/rubocop\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('rubocop')\n\n\nDefault config:\n- cmd: >lua\n  { \"rubocop\", \"--lsp\" }\n- filetypes: >lua\n  { \"ruby\" }\n- root_markers: >lua\n  { \"Gemfile\", \".git\" }\n<\n\n------------------------------------------------------------------------------\nruby_lsp\n\nhttps://shopify.github.io/ruby-lsp/\n\nThis gem is an implementation of the language server protocol specification for\nRuby, used to improve editor features.\n\nInstall the gem. There's no need to require it, since the server is used as a\nstandalone executable.\n>sh\n  gem install ruby-lsp\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('ruby_lsp')\n\n\nDefault config:\n- cmd (use \"gF\" to view): ../lsp/ruby_lsp.lua:16\n- filetypes: >lua\n  { \"ruby\", \"eruby\" }\n- init_options: >lua\n  {\n    formatter = \"auto\"\n  }\n- reuse_client (use \"gF\" to view): ../lsp/ruby_lsp.lua:16\n- root_markers: >lua\n  { \"Gemfile\", \".git\" }\n<\n\n------------------------------------------------------------------------------\nruff\n\nhttps://github.com/astral-sh/ruff\n\nA Language Server Protocol implementation for Ruff, an extremely fast Python linter and code formatter, written in Rust. It can be installed via `pip`.\n>sh\n  pip install ruff\n\n**Available in Ruff `v0.4.5` in beta and stabilized in Ruff `v0.5.3`.**\n\nThis is the new built-in language server written in Rust. It supports the same feature set as `ruff-lsp`, but with superior performance and no installation required. Note that the `ruff-lsp` server will continue to be maintained until further notice.\n\nServer settings can be provided via:\n>lua\n  vim.lsp.config('ruff', {\n    init_options = {\n      settings = {\n        -- Server settings should go here\n      }\n    }\n  })\n\nRefer to the [documentation](https://docs.astral.sh/ruff/editors/) for more details.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('ruff')\n\n\nDefault config:\n- cmd: >lua\n  { \"ruff\", \"server\" }\n- filetypes: >lua\n  { \"python\" }\n- root_markers: >lua\n  { \"pyproject.toml\", \"ruff.toml\", \".ruff.toml\", \".git\" }\n- settings: >lua\n  {}\n<\n\n------------------------------------------------------------------------------\nruff_lsp\n\nhttps://github.com/astral-sh/ruff-lsp\n\nA Language Server Protocol implementation for Ruff, an extremely fast Python linter and code transformation tool, written in Rust. It can be installed via pip.\n>sh\n  pip install ruff-lsp\n\nExtra CLI arguments for `ruff` can be provided via\n>lua\n  vim.lsp.config('ruff_lsp', {\n    init_options = {\n      settings = {\n        -- Any extra CLI arguments for `ruff` go here.\n        args = {},\n      }\n    }\n  })\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('ruff_lsp')\n\n\nDefault config:\n- cmd: >lua\n  { \"ruff-lsp\" }\n- filetypes: >lua\n  { \"python\" }\n- root_markers: >lua\n  { \"pyproject.toml\", \"ruff.toml\", \".git\" }\n- settings: >lua\n  {}\n<\n\n------------------------------------------------------------------------------\nrumdl\n\nhttps://github.com/rvben/rumdl\n\nMarkdown Linter and Formatter written in Rust.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('rumdl')\n\n\nDefault config:\n- cmd: >lua\n  { \"rumdl\", \"server\" }\n- filetypes: >lua\n  { \"markdown\" }\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\nrune_languageserver\n\nhttps://crates.io/crates/rune-languageserver\n\nA language server for the [Rune](https://rune-rs.github.io/) Language,\nan embeddable dynamic programming language for Rust\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('rune_languageserver')\n\n\nDefault config:\n- cmd: >lua\n  { \"rune-languageserver\" }\n- filetypes: >lua\n  { \"rune\" }\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\nrust_analyzer\n\nhttps://github.com/rust-lang/rust-analyzer\n\nrust-analyzer (aka rls 2.0), a language server for Rust\n\n\nSee [docs](https://rust-analyzer.github.io/book/configuration.html) for extra settings. The settings can be used like this >lua\n  vim.lsp.config('rust_analyzer', {\n    settings = {\n      ['rust-analyzer'] = {\n        diagnostics = {\n          enable = false;\n        }\n      }\n    }\n  })\n\nNote: do not set `init_options` for this LS config, it will be automatically populated by the contents of settings[\"rust-analyzer\"] per\nhttps://github.com/rust-lang/rust-analyzer/blob/eb5da56d839ae0a9e9f50774fa3eb78eb0964550/docs/dev/lsp-extensions.md?plain=1#L26.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('rust_analyzer')\n\n\nDefault config:\n- before_init (use \"gF\" to view): ../lsp/rust_analyzer.lua:85\n- capabilities: >lua\n  {\n    experimental = {\n      commands = {\n        commands = { \"rust-analyzer.showReferences\", \"rust-analyzer.runSingle\", \"rust-analyzer.debugSingle\" }\n      },\n      serverStatusNotification = true\n    }\n  }\n- cmd: >lua\n  { \"rust-analyzer\" }\n- filetypes: >lua\n  { \"rust\" }\n- on_attach (use \"gF\" to view): ../lsp/rust_analyzer.lua:85\n- root_dir (use \"gF\" to view): ../lsp/rust_analyzer.lua:85\n- settings: >lua\n  {\n    [\"rust-analyzer\"] = {\n      lens = {\n        debug = {\n          enable = true\n        },\n        enable = true,\n        implementations = {\n          enable = true\n        },\n        references = {\n          adt = {\n            enable = true\n          },\n          enumVariant = {\n            enable = true\n          },\n          method = {\n            enable = true\n          },\n          trait = {\n            enable = true\n          }\n        },\n        run = {\n          enable = true\n        },\n        updateTest = {\n          enable = true\n        }\n      }\n    }\n  }\n<\n\n------------------------------------------------------------------------------\nsalt_ls\n\nLanguage server for Salt configuration files.\nhttps://github.com/dcermak/salt-lsp\n\nThe language server can be installed with `pip` >sh\n  pip install salt-lsp\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('salt_ls')\n\n\nDefault config:\n- cmd: >lua\n  { \"salt_lsp_server\" }\n- filetypes: >lua\n  { \"sls\" }\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\nscheme_langserver\n\nhttps://github.com/ufo5260987423/scheme-langserver\n`scheme-langserver`, a language server protocol implementation for scheme.\nAnd for nvim user, please add .sls to scheme file extension list.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('scheme_langserver')\n\n\nDefault config:\n- cmd: >lua\n  { \"scheme-langserver\", \"~/.scheme-langserver.log\", \"enable\", \"disable\" }\n- filetypes: >lua\n  { \"scheme\" }\n- root_markers: >lua\n  { \"Akku.manifest\", \".git\" }\n<\n\n------------------------------------------------------------------------------\nscry\n\nhttps://github.com/crystal-lang-tools/scry\n\nCrystal language server.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('scry')\n\n\nDefault config:\n- cmd: >lua\n  { \"scry\" }\n- filetypes: >lua\n  { \"crystal\" }\n- root_markers: >lua\n  { \"shard.yml\", \".git\" }\n<\n\n------------------------------------------------------------------------------\nselene3p_ls\n\nhttps://github.com/antonk52/lua-3p-language-servers\n\n3rd party Language Server for Selene lua linter\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('selene3p_ls')\n\n\nDefault config:\n- cmd: >lua\n  { \"selene-3p-language-server\" }\n- filetypes: >lua\n  { \"lua\" }\n- root_markers: >lua\n  { \"selene.toml\" }\n<\n\n------------------------------------------------------------------------------\nserve_d\n\nhttps://github.com/Pure-D/serve-d\n\nMicrosoft language server protocol implementation for D using workspace-d.\nDownload a binary from https://github.com/Pure-D/serve-d/releases and put it in your $PATH.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('serve_d')\n\n\nDefault config:\n- cmd: >lua\n  { \"serve-d\" }\n- filetypes: >lua\n  { \"d\" }\n- root_markers: >lua\n  { \"dub.json\", \"dub.sdl\", \".git\" }\n<\n\n------------------------------------------------------------------------------\nshopify_theme_ls\n\nhttps://shopify.dev/docs/api/shopify-cli\n\n[Language Server](https://shopify.dev/docs/themes/tools/cli/language-server) and Theme Check (linter) for Shopify themes.\n\n`shopify` can be installed via npm `npm install -g @shopify/cli`.\n\nNote: This LSP already includes Theme Check so you don't need to use the `theme_check` server configuration as well.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('shopify_theme_ls')\n\n\nDefault config:\n- cmd: >lua\n  { \"shopify\", \"theme\", \"language-server\" }\n- filetypes: >lua\n  { \"liquid\" }\n- root_markers: >lua\n  { \".shopifyignore\", \".theme-check.yml\", \".theme-check.yaml\", \"shopify.theme.toml\" }\n- settings: >lua\n  {}\n<\n\n------------------------------------------------------------------------------\nsixtyfps\n\nhttps://github.com/sixtyfpsui/sixtyfps\n`SixtyFPS`'s language server\n\nYou can build and install `sixtyfps-lsp` binary with `cargo` >sh\n  cargo install sixtyfps-lsp\n\nVim does not have built-in syntax for the `sixtyfps` filetype currently.\n\nThis can be added via an autocmd:\n>lua\n  vim.cmd [[ autocmd BufRead,BufNewFile *.60 set filetype=sixtyfps ]]\n\nor by installing a filetype plugin such as https://github.com/RustemB/sixtyfps-vim\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('sixtyfps')\n\n\nDefault config:\n- cmd: >lua\n  { \"sixtyfps-lsp\" }\n- filetypes: >lua\n  { \"sixtyfps\" }\n<\n\n------------------------------------------------------------------------------\nslangd\n\nhttps://github.com/shader-slang/slang\n\nThe `slangd` binary can be downloaded as part of [slang releases](https://github.com/shader-slang/slang/releases) or\nby [building `slang` from source](https://github.com/shader-slang/slang/blob/master/docs/building.md).\n\nThe server can be configured by passing a \"settings\" object to vim.lsp.config('slangd'):\n>lua\n  vim.lsp.config('slangd', {\n    settings = {\n      slang = {\n        predefinedMacros = {\"MY_VALUE_MACRO=1\"},\n        inlayHints = {\n          deducedTypes = true,\n          parameterNames = true,\n        }\n      }\n    }\n  })\nAvailable options are documented [here](https://github.com/shader-slang/slang-vscode-extension/tree/main?tab=readme-ov-file#configurations)\nor in more detail [here](https://github.com/shader-slang/slang-vscode-extension/blob/main/package.json#L70).\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('slangd')\n\n\nDefault config:\n- cmd: >lua\n  { \"slangd\" }\n- filetypes: >lua\n  { \"hlsl\", \"shaderslang\" }\n- root_markers: >lua\n  { \"slangdconfig.json\", \".clang-format\", \".git\" }\n<\n\n------------------------------------------------------------------------------\nslint_lsp\n\nhttps://github.com/slint-ui/slint\n`Slint`'s language server\n\nYou can build and install `slint-lsp` binary with `cargo` >sh\n  cargo install slint-lsp\n\nVim does not have built-in syntax for the `slint` filetype at this time.\n\nThis can be added via an autocmd:\n>lua\n  vim.cmd [[ autocmd BufRead,BufNewFile *.slint set filetype=slint ]]\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('slint_lsp')\n\n\nDefault config:\n- cmd: >lua\n  { \"slint-lsp\" }\n- filetypes: >lua\n  { \"slint\" }\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\nsmarty_ls\n\nhttps://github.com/landeaux/vscode-smarty-langserver-extracted\n\nLanguage server for Smarty.\n\n`smarty-language-server` can be installed via `npm`:\n>sh\n  npm i -g vscode-smarty-langserver-extracted\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('smarty_ls')\n\n\nDefault config:\n- cmd: >lua\n  { \"smarty-language-server\", \"--stdio\" }\n- filetypes: >lua\n  { \"smarty\" }\n- init_options: >lua\n  {\n    storageDir = vim.NIL\n  }\n- root_dir (use \"gF\" to view): ../lsp/smarty_ls.lua:14\n- settings: >lua\n  {\n    css = {\n      validate = true\n    },\n    smarty = {\n      pluginDirs = {}\n    }\n  }\n<\n\n------------------------------------------------------------------------------\nsmithy_ls\n\nhttps://github.com/awslabs/smithy-language-server\n\n\"Smithy Language Server\", a Language server for the Smithy IDL.\n\nsmithy-language-server has no docs that say how to actually install it(?), so look at:\nhttps://github.com/smithy-lang/smithy-vscode/blob/600cfcf0db65edce85f02e6d50f5fa2b0862bc8d/src/extension.ts#L78\n\nMaven package: https://central.sonatype.com/artifact/software.amazon.smithy/smithy-language-server\n\nInstallation:\n1. Install coursier, or any tool that can install maven packages.\n   ```\n   brew install coursier\n   ```\n2. The LS is auto-installed and launched by:\n   ```\n   coursier launch software.amazon.smithy:smithy-language-server:0.7.0\n   ```\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('smithy_ls')\n\n\nDefault config:\n- cmd: >lua\n  { \"coursier\", \"launch\", \"software.amazon.smithy:smithy-language-server:0.7.0\", \"-M\", \"software.amazon.smithy.lsp.Main\", \"--\", \"0\" }\n- filetypes: >lua\n  { \"smithy\" }\n- init_options: >lua\n  {\n    compilerOptions = {\n      snippetAutoIndent = false\n    },\n    isHttpEnabled = true,\n    statusBarProvider = \"show-message\"\n  }\n- message_level: >lua\n  4\n- root_markers: >lua\n  { \"smithy-build.json\", \"build.gradle\", \"build.gradle.kts\", \".git\" }\n<\n\n------------------------------------------------------------------------------\nsnakeskin_ls\n\nhttps://www.npmjs.com/package/@snakeskin/cli\n\n`snakeskin cli` can be installed via `npm` >sh\n  npm install -g @snakeskin/cli\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('snakeskin_ls')\n\n\nDefault config:\n- cmd: >lua\n  { \"snakeskin-cli\", \"lsp\", \"--stdio\" }\n- filetypes: >lua\n  { \"ss\" }\n- root_markers: >lua\n  { \"package.json\" }\n<\n\n------------------------------------------------------------------------------\nsnyk_ls\n\nhttps://github.com/snyk/snyk-ls\n\n**[Snyk](https://snyk.io)** is a developer security platform that helps you find and fix\nvulnerabilities in your code, open source dependencies, containers, and infrastructure as code.\n\nThe Snyk Language Server provides real-time security scanning for:\n- **Snyk Open Source**: Find and fix vulnerabilities in open source dependencies\n- **Snyk Code**: Find and fix security vulnerabilities in your code\n- **Snyk Infrastructure as Code**: Find and fix security issues in Kubernetes, Terraform, and other IaC files\n\n## Authentication\n\n**Note**: Currently, only token-based authentication is supported in Neovim.\n\n1. Get your API token from https://app.snyk.io/account\n2. Set the `SNYK_TOKEN` environment variable:\n   ```sh\n   export SNYK_TOKEN=\"your-token-here\"\n   ```\n\n## Trusted Folders\n\nSnyk requires you to trust directories before scanning them. To avoid being prompted every time:\n>lua\n  vim.lsp.config('snyk_ls', {\n    init_options = {\n      trustedFolders = {\n        '/Users/yourname/projects',  -- Trust your projects directory\n        '/path/to/another/trusted/dir',\n      },\n    },\n  })\n\n**Important**: Trust the top-level directory where you store your repositories, not individual repos.\nFor example, if you work on `/Users/yourname/projects/my-app`, trust `/Users/yourname/projects`.\nOnly trust directories containing code you trust to scan.\n\n## Configuration\n\nFull configuration options available at https://github.com/snyk/snyk-ls#configuration-1\n\n### Advanced Configuration\n\nFor **non-default multi-tenant or single-tenant setups**, you may need to specify:\n\n- `endpoint`: Custom Snyk API endpoint (e.g., `https://api.eu.snyk.io` for EU, or your single-tenant URL)\n```\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('snyk_ls')\n\n\nDefault config:\n- cmd: >lua\n  { \"snyk\", \"language-server\", \"-l\", \"info\" }\n- filetypes: >lua\n  { \"apex\", \"apexcode\", \"c\", \"cpp\", \"cs\", \"dart\", \"dockerfile\", \"elixir\", \"eelixir\", \"go\", \"gomod\", \"groovy\", \"helm\", \"java\", \"javascript\", \"json\", \"kotlin\", \"objc\", \"objcpp\", \"php\", \"python\", \"requirements\", \"ruby\", \"rust\", \"scala\", \"swift\", \"terraform\", \"terraform-vars\", \"typescript\", \"yaml\" }\n- init_options: >lua\n  {\n    activateSnykCode = \"false\",\n    activateSnykIac = \"true\",\n    activateSnykOpenSource = \"true\",\n    integrationName = \"Neovim\",\n    integrationVersion = \"0.12.0-dev+g238d4fa71a\",\n    token = vim.NIL,\n    trustedFolders = {}\n  }\n- root_markers: >lua\n  { \".git\", \".snyk\" }\n- settings: >lua\n  {}\n<\n\n------------------------------------------------------------------------------\nsolang\n\nA language server for Solidity\n\n See the [documentation](https://solang.readthedocs.io/en/latest/installing.html) for installation instructions.\n\n The language server only provides the following capabilities:\n * Syntax highlighting\n * Diagnostics\n * Hover\n\n There is currently no support for completion, goto definition, references, or other functionality.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('solang')\n\n\nDefault config:\n- cmd: >lua\n  { \"solang\", \"language-server\", \"--target\", \"evm\" }\n- filetypes: >lua\n  { \"solidity\" }\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\nsolargraph\n\nhttps://solargraph.org/\n\nsolargraph, a language server for Ruby\n\nYou can install solargraph via gem install.\n>sh\n  gem install --user-install solargraph\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('solargraph')\n\n\nDefault config:\n- cmd: >lua\n  { \"solargraph\", \"stdio\" }\n- filetypes: >lua\n  { \"ruby\" }\n- init_options: >lua\n  {\n    formatting = true\n  }\n- root_markers: >lua\n  { \"Gemfile\", \".git\" }\n- settings: >lua\n  {\n    solargraph = {\n      diagnostics = true\n    }\n  }\n<\n\n------------------------------------------------------------------------------\nsolc\n\nhttps://docs.soliditylang.org/en/latest/installing-solidity.html\n\nsolc is the native language server for the Solidity language.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('solc')\n\n\nDefault config:\n- cmd: >lua\n  { \"solc\", \"--lsp\" }\n- filetypes: >lua\n  { \"solidity\" }\n- root_dir (use \"gF\" to view): ../lsp/solc.lua:10\n<\n\n------------------------------------------------------------------------------\nsolidity\n\nhttps://github.com/qiuxiang/solidity-ls\n\nnpm i solidity-ls -g\n\nMake sure that solc is installed and it's the same version of the file.  solc-select is recommended.\n\nSolidity language server is a LSP with autocomplete, go to definition and diagnostics.\n\nIf you use brownie, use this root_markers:\nroot_markers = { 'brownie-config.yaml', '.git' }\n\non includePath, you can add an extra path to search for external libs, on remapping you can remap lib <> path, like:\n>lua\n  { solidity = { includePath = '/Users/your_user/.brownie/packages/', remapping = { [\"@OpenZeppelin/\"] = 'OpenZeppelin/openzeppelin-contracts@4.6.0/' } } }\n\n**For brownie users**\nChange the root_markers to:\n>lua\n  root_markers = { 'brownie-config.yaml', '.git' }\n\nThe best way of using it is to have a package.json in your project folder with the packages that you will use.\nAfter installing with package.json, just create a `remappings.txt` with:\n>\n  @OpenZeppelin/=node_modules/OpenZeppelin/openzeppelin-contracts@4.6.0/\n\nYou can omit the node_modules as well.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('solidity')\n\n\nDefault config:\n- cmd: >lua\n  { \"solidity-ls\", \"--stdio\" }\n- filetypes: >lua\n  { \"solidity\" }\n- root_markers: >lua\n  { \".git\", \"package.json\" }\n- settings: >lua\n  {\n    solidity = {\n      includePath = \"\",\n      remapping = {}\n    }\n  }\n<\n\n------------------------------------------------------------------------------\nsolidity_ls\n\nhttps://github.com/juanfranblanco/vscode-solidity\n\n`vscode-solidity-server` can be installed via `npm`:\n>sh\n  npm install -g vscode-solidity-server\n\n`vscode-solidity-server` is a language server for the Solidity language ported from the VSCode \"solidity\" extension.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('solidity_ls')\n\n\nDefault config:\n- cmd: >lua\n  { \"vscode-solidity-server\", \"--stdio\" }\n- filetypes: >lua\n  { \"solidity\" }\n- root_markers: >lua\n  { \"hardhat.config.js\", \"hardhat.config.ts\", \"foundry.toml\", \"remappings.txt\", \"truffle.js\", \"truffle-config.js\", \"ape-config.yaml\", \".git\", \"package.json\" }\n<\n\n------------------------------------------------------------------------------\nsolidity_ls_nomicfoundation\n\nhttps://github.com/NomicFoundation/hardhat-vscode/blob/development/server/README.md\n\n`nomicfoundation-solidity-language-server` can be installed via `npm`:\n>sh\n  npm install -g @nomicfoundation/solidity-language-server\n\nA language server for the Solidity programming language, built by the Nomic Foundation for the Ethereum community.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('solidity_ls_nomicfoundation')\n\n\nDefault config:\n- cmd: >lua\n  { \"nomicfoundation-solidity-language-server\", \"--stdio\" }\n- filetypes: >lua\n  { \"solidity\" }\n- root_markers: >lua\n  { \"hardhat.config.js\", \"hardhat.config.ts\", \"foundry.toml\", \"remappings.txt\", \"truffle.js\", \"truffle-config.js\", \"ape-config.yaml\", \".git\", \"package.json\" }\n<\n\n------------------------------------------------------------------------------\nsomesass_ls\n\nhttps://github.com/wkillerud/some-sass/tree/main/packages/language-server\n\n`some-sass-language-server` can be installed via `npm`:\n>sh\n  npm i -g some-sass-language-server\n\nThe language server provides:\n\n- Full support for @use and @forward, including aliases, prefixes and hiding.\n- Workspace-wide code navigation and refactoring, such as Rename Symbol.\n- Rich documentation through SassDoc.\n- Language features for %placeholder-selectors, both when using them and writing them.\n- Suggestions and hover info for built-in Sass modules, when used with @use.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('somesass_ls')\n\n\nDefault config:\n- cmd: >lua\n  { \"some-sass-language-server\", \"--stdio\" }\n- filetypes: >lua\n  { \"scss\", \"sass\" }\n- name: >lua\n  \"somesass_ls\"\n- root_markers: >lua\n  { \".git\", \".package.json\" }\n- settings: >lua\n  {\n    somesass = {\n      suggestAllFromOpenDocument = true\n    }\n  }\n<\n\n------------------------------------------------------------------------------\nsorbet\n\nhttps://sorbet.org\n\nSorbet is a fast, powerful type checker designed for Ruby.\n\nYou can install Sorbet via gem install. You might also be interested in how to set\nSorbet up for new projects: https://sorbet.org/docs/adopting.\n>sh\n  gem install sorbet\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('sorbet')\n\n\nDefault config:\n- cmd: >lua\n  { \"srb\", \"tc\", \"--lsp\" }\n- filetypes: >lua\n  { \"ruby\" }\n- root_markers: >lua\n  { \"Gemfile\", \".git\" }\n<\n\n------------------------------------------------------------------------------\nsourcekit\n\nhttps://github.com/swiftlang/sourcekit-lsp\n\nLanguage server for Swift and C/C++/Objective-C.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('sourcekit')\n\n\nDefault config:\n- capabilities: >lua\n  {\n    textDocument = {\n      diagnostic = {\n        dynamicRegistration = true,\n        relatedDocumentSupport = true\n      }\n    },\n    workspace = {\n      didChangeWatchedFiles = {\n        dynamicRegistration = true\n      }\n    }\n  }\n- cmd: >lua\n  { \"sourcekit-lsp\" }\n- filetypes: >lua\n  { \"swift\", \"objc\", \"objcpp\", \"c\", \"cpp\" }\n- get_language_id (use \"gF\" to view): ../lsp/sourcekit.lua:10\n- root_dir (use \"gF\" to view): ../lsp/sourcekit.lua:10\n<\n\n------------------------------------------------------------------------------\nspectral\n\nhttps://github.com/luizcorreia/spectral-language-server\n `A flexible JSON/YAML linter for creating automated style guides, with baked in support for OpenAPI v2 & v3.`\n\n`spectral-language-server` can be installed via `npm` >sh\n  npm i -g spectral-language-server\nSee [vscode-spectral](https://github.com/stoplightio/vscode-spectral#extension-settings) for configuration options.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('spectral')\n\n\nDefault config:\n- cmd: >lua\n  { \"spectral-language-server\", \"--stdio\" }\n- filetypes: >lua\n  { \"yaml\", \"json\", \"yml\" }\n- root_markers: >lua\n  { \".spectral.yaml\", \".spectral.yml\", \".spectral.json\", \".spectral.js\" }\n- settings: >lua\n  {\n    enable = true,\n    run = \"onType\",\n    validateLanguages = { \"yaml\", \"json\", \"yml\" }\n  }\n<\n\n------------------------------------------------------------------------------\nspyglassmc_language_server\n\nhttps://github.com/SpyglassMC/Spyglass/tree/main/packages/language-server\n\nLanguage server for Minecraft datapacks.\n\n`spyglassmc-language-server` can be installed via `npm`:\n>sh\n  npm i -g @spyglassmc/language-server\n\nYou may also need to configure the filetype:\n\n`autocmd BufNewFile,BufRead *.mcfunction set filetype=mcfunction`\n\nThis is automatically done by [CrystalAlpha358/vim-mcfunction](https://github.com/CrystalAlpha358/vim-mcfunction), which also provide syntax highlight.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('spyglassmc_language_server')\n\n\nDefault config:\n- cmd: >lua\n  { \"spyglassmc-language-server\", \"--stdio\" }\n- filetypes: >lua\n  { \"mcfunction\" }\n- root_markers: >lua\n  { \"pack.mcmeta\" }\n<\n\n------------------------------------------------------------------------------\nsqlls\n\nhttps://github.com/joe-re/sql-language-server\n\nThis LSP can be installed via  `npm`. Find further instructions on manual installation of the sql-language-server at [joe-re/sql-language-server](https://github.com/joe-re/sql-language-server).\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('sqlls')\n\n\nDefault config:\n- cmd: >lua\n  { \"sql-language-server\", \"up\", \"--method\", \"stdio\" }\n- filetypes: >lua\n  { \"sql\", \"mysql\" }\n- root_markers: >lua\n  { \".sqllsrc.json\" }\n- settings: >lua\n  {}\n<\n\n------------------------------------------------------------------------------\nsqls\n\nhttps://github.com/sqls-server/sqls\n>lua\n  vim.lsp.config('sqls', {\n    cmd = {\"path/to/command\", \"-config\", \"path/to/config.yml\"};\n    ...\n  })\nSqls can be installed via `go install github.com/sqls-server/sqls@latest`. Instructions for compiling Sqls from the source can be found at [sqls-server/sqls](https://github.com/sqls-server/sqls).\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('sqls')\n\n\nDefault config:\n- cmd: >lua\n  { \"sqls\" }\n- filetypes: >lua\n  { \"sql\", \"mysql\" }\n- root_markers: >lua\n  { \"config.yml\" }\n- settings: >lua\n  {}\n<\n\n------------------------------------------------------------------------------\nsqruff\n\nhttps://github.com/quarylabs/sqruff\n\n`sqruff` can be installed by following the instructions [here](https://github.com/quarylabs/sqruff?tab=readme-ov-file#installation)\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('sqruff')\n\n\nDefault config:\n- cmd: >lua\n  { \"sqruff\", \"lsp\" }\n- filetypes: >lua\n  { \"sql\" }\n- root_markers: >lua\n  { \".sqruff\", \".git\" }\n<\n\n------------------------------------------------------------------------------\nstan_ls\n\nhttps://github.com/tomatitito/stan-language-server\n\n Language server for the Stan probabilistic programming language.\n\n@type vim.lsp.Config\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('stan_ls')\n\n\nDefault config:\n- cmd: >lua\n  { \"stan-language-server\", \"--stdio\" }\n- filetypes: >lua\n  { \"stan\" }\n- root_markers: >lua\n  { \".git\" }\n- settings: >lua\n  {}\n<\n\n------------------------------------------------------------------------------\nstandardrb\n\nhttps://github.com/testdouble/standard\n\nRuby Style Guide, with linter & automatic code fixer.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('standardrb')\n\n\nDefault config:\n- cmd: >lua\n  { \"standardrb\", \"--lsp\" }\n- filetypes: >lua\n  { \"ruby\" }\n- root_markers: >lua\n  { \"Gemfile\", \".git\" }\n<\n\n------------------------------------------------------------------------------\nstarlark_rust\n\nhttps://github.com/facebookexperimental/starlark-rust/\nThe LSP part of `starlark-rust` is not currently documented,\nbut the implementation works well for linting.\nThis gives valuable warnings for potential issues in the code,\nbut does not support refactorings.\n\nIt can be installed with cargo: https://crates.io/crates/starlark\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('starlark_rust')\n\n\nDefault config:\n- cmd: >lua\n  { \"starlark\", \"--lsp\" }\n- filetypes: >lua\n  { \"star\", \"bzl\", \"BUILD.bazel\" }\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\nstarpls\n\nhttps://github.com/withered-magic/starpls\n\n`starpls` is an LSP implementation for Starlark. Installation instructions can be found in the project's README.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('starpls')\n\n\nDefault config:\n- cmd: >lua\n  { \"starpls\" }\n- filetypes: >lua\n  { \"bzl\" }\n- root_markers: >lua\n  { \"WORKSPACE\", \"WORKSPACE.bazel\", \"MODULE.bazel\" }\n<\n\n------------------------------------------------------------------------------\nstatix\n\nhttps://github.com/nerdypepper/statix\n\nlints and suggestions for the nix programming language\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('statix')\n\n\nDefault config:\n- cmd: >lua\n  { \"statix\", \"check\", \"--stdin\" }\n- filetypes: >lua\n  { \"nix\" }\n- root_markers: >lua\n  { \"flake.nix\", \".git\" }\n<\n\n------------------------------------------------------------------------------\nsteep\n\nhttps://github.com/soutaro/steep\n\n`steep` is a static type checker for Ruby.\n\nYou need `Steepfile` to make it work. Generate it with `steep init`.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('steep')\n\n\nDefault config:\n- cmd: >lua\n  { \"steep\", \"langserver\" }\n- filetypes: >lua\n  { \"ruby\", \"eruby\" }\n- root_markers: >lua\n  { \"Steepfile\", \".git\" }\n<\n\n------------------------------------------------------------------------------\nstimulus_ls\n\nhttps://www.npmjs.com/package/stimulus-language-server\n\n`stimulus-lsp` can be installed via `npm`:\n>sh\n  npm install -g stimulus-language-server\n\nor via `yarn`:\n>sh\n  yarn global add stimulus-language-server\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('stimulus_ls')\n\n\nDefault config:\n- cmd: >lua\n  { \"stimulus-language-server\", \"--stdio\" }\n- filetypes: >lua\n  { \"html\", \"ruby\", \"eruby\", \"blade\", \"php\" }\n- root_markers: >lua\n  { \"Gemfile\", \".git\" }\n<\n\n------------------------------------------------------------------------------\nstylelint_lsp\n\nhttps://github.com/bmatcuk/stylelint-lsp\n\n`stylelint-lsp` can be installed via `npm`:\n>sh\n  npm i -g stylelint-lsp\n\nCan be configured by passing a `settings.stylelintplus` object to vim.lsp.config('stylelint_lsp'):\n>lua\n  vim.lsp.config('stylelint_lsp', {\n    settings = {\n      stylelintplus = {\n        -- see available options in stylelint-lsp documentation\n      }\n    }\n  })\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('stylelint_lsp')\n\n\nDefault config:\n- cmd: >lua\n  { \"stylelint-lsp\", \"--stdio\" }\n- filetypes: >lua\n  { \"astro\", \"css\", \"html\", \"less\", \"scss\", \"sugarss\", \"vue\", \"wxss\" }\n- root_markers: >lua\n  { \".stylelintrc\", \".stylelintrc.mjs\", \".stylelintrc.cjs\", \".stylelintrc.js\", \".stylelintrc.json\", \".stylelintrc.yaml\", \".stylelintrc.yml\", \"stylelint.config.mjs\", \"stylelint.config.cjs\", \"stylelint.config.js\" }\n- settings: >lua\n  {}\n<\n\n------------------------------------------------------------------------------\nstylua\n\nhttps://github.com/JohnnyMorganz/StyLua\n\nA deterministic code formatter for Lua 5.1, 5.2, 5.3, 5.4, LuaJIT, Luau and CfxLua/FiveM Lua\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('stylua')\n\n\nDefault config:\n- cmd: >lua\n  { \"stylua\", \"--lsp\" }\n- filetypes: >lua\n  { \"lua\" }\n- root_markers: >lua\n  { \".stylua.toml\", \"stylua.toml\", \".editorconfig\" }\n<\n\n------------------------------------------------------------------------------\nstylua3p_ls\n\nhttps://github.com/antonk52/lua-3p-language-servers\n\n3rd party Language Server for Stylua lua formatter\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('stylua3p_ls')\n\n\nDefault config:\n- cmd: >lua\n  { \"stylua-3p-language-server\" }\n- filetypes: >lua\n  { \"lua\" }\n- root_markers: >lua\n  { \".stylua.toml\", \"stylua.toml\" }\n<\n\n------------------------------------------------------------------------------\nsuperhtml\n\nhttps://github.com/kristoff-it/superhtml\n\nHTML Language Server & Templating Language Library\n\nThis LSP is designed to tightly adhere to the HTML spec as well as enforcing\nsome additional rules that ensure HTML clarity.\n\nIf you want to disable HTML support for another HTML LSP, add the following\nto your configuration:\n>lua\n  vim.lsp.config('superhtml', {\n    filetypes = { 'superhtml' }\n  })\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('superhtml')\n\n\nDefault config:\n- cmd: >lua\n  { \"superhtml\", \"lsp\" }\n- filetypes: >lua\n  { \"superhtml\", \"html\" }\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\nsvelte\n\nhttps://github.com/sveltejs/language-tools/tree/master/packages/language-server\n\nNote: assuming that [ts_ls](#ts_ls) is setup, full JavaScript/TypeScript support (find references, rename, etc of symbols in Svelte files when working in JS/TS files) requires per-project installation and configuration of [typescript-svelte-plugin](https://github.com/sveltejs/language-tools/tree/master/packages/typescript-plugin#usage).\n\n`svelte-language-server` can be installed via `npm` >sh\n  npm install -g svelte-language-server\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('svelte')\n\n\nDefault config:\n- cmd: >lua\n  { \"svelteserver\", \"--stdio\" }\n- filetypes: >lua\n  { \"svelte\" }\n- on_attach (use \"gF\" to view): ../lsp/svelte.lua:13\n- root_dir (use \"gF\" to view): ../lsp/svelte.lua:13\n- settings: >lua\n  {\n    typescript = {\n      inlayHints = {\n        enumMemberValues = {\n          enabled = true\n        },\n        functionLikeReturnTypes = {\n          enabled = true\n        },\n        parameterNames = {\n          enabled = \"literals\",\n          suppressWhenArgumentMatchesName = true\n        },\n        parameterTypes = {\n          enabled = true\n        },\n        propertyDeclarationTypes = {\n          enabled = true\n        },\n        variableTypes = {\n          enabled = true\n        }\n      }\n    }\n  }\n<\n\n------------------------------------------------------------------------------\nsvlangserver\n\nhttps://github.com/imc-trading/svlangserver\n\nLanguage server for SystemVerilog.\n\n`svlangserver` can be installed via `npm`:\n>sh\n  $ npm install -g @imc-trading/svlangserver\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('svlangserver')\n\n\nDefault config:\n- cmd: >lua\n  { \"svlangserver\" }\n- filetypes: >lua\n  { \"verilog\", \"systemverilog\" }\n- on_attach (use \"gF\" to view): ../lsp/svlangserver.lua:14\n- root_markers: >lua\n  { \".svlangserver\", \".git\" }\n- settings: >lua\n  {\n    systemverilog = {\n      includeIndexing = { \"*.{v,vh,sv,svh}\", \"**/*.{v,vh,sv,svh}\" }\n    }\n  }\n<\n\n------------------------------------------------------------------------------\nsvls\n\nhttps://github.com/dalance/svls\n\nLanguage server for verilog and SystemVerilog\n\n`svls` can be installed via `cargo`:\n ```sh\n cargo install svls\n ```\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('svls')\n\n\nDefault config:\n- cmd: >lua\n  { \"svls\" }\n- filetypes: >lua\n  { \"verilog\", \"systemverilog\" }\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\nswift_mesonls\n\nhttps://github.com/JCWasmx86/Swift-MesonLSP\n\nMeson language server written in Swift\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('swift_mesonls')\n\n\nDefault config:\n- cmd: >lua\n  { \"Swift-MesonLSP\", \"--lsp\" }\n- filetypes: >lua\n  { \"meson\" }\n- root_markers: >lua\n  { \"meson.build\", \"meson_options.txt\", \"meson.options\", \".git\" }\n<\n\n------------------------------------------------------------------------------\nsyntax_tree\n\nhttps://ruby-syntax-tree.github.io/syntax_tree/\n\nA fast Ruby parser and formatter.\n\nSyntax Tree is a suite of tools built on top of the internal CRuby parser. It\nprovides the ability to generate a syntax tree from source, as well as the\ntools necessary to inspect and manipulate that syntax tree. It can be used to\nbuild formatters, linters, language servers, and more.\n>sh\n  gem install syntax_tree\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('syntax_tree')\n\n\nDefault config:\n- cmd: >lua\n  { \"stree\", \"lsp\" }\n- filetypes: >lua\n  { \"ruby\" }\n- root_markers: >lua\n  { \".streerc\", \"Gemfile\", \".git\" }\n<\n\n------------------------------------------------------------------------------\nsystemd_ls\n\nRenamed to [systemd_lsp](#systemd_lsp)\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('systemd_ls')\n\n\nDefault config:\n- cmd: >lua\n  { \"systemd-lsp\" }\n- filetypes: >lua\n  { \"systemd\" }\n- name: >lua\n  \"systemd_lsp\"\n- on_init (use \"gF\" to view): ../lsp/systemd_ls.lua:6\n<\n\n------------------------------------------------------------------------------\nsystemd_lsp\n\nhttps://github.com/JFryy/systemd-lsp\n\nA Language Server Protocol (LSP) implementation for Systemd unit files,\nproviding editing support with syntax highlighting,\ndiagnostics, autocompletion, and documentation.\n\n`systemd-lsp` can be installed via `cargo` >sh\n  cargo install systemd-lsp\n\nA language server implementation for Systemd unit files made in Rust.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('systemd_lsp')\n\n\nDefault config:\n- cmd: >lua\n  { \"systemd-lsp\" }\n- filetypes: >lua\n  { \"systemd\" }\n<\n\n------------------------------------------------------------------------------\ntabby_ml\n\nhttps://tabby.tabbyml.com/blog/running-tabby-as-a-language-server\n\nLanguage server for Tabby, an opensource, self-hosted AI coding assistant.\n\n`tabby-agent` can be installed via `npm`:\n>sh\n  npm install --global tabby-agent\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('tabby_ml')\n\n\nDefault config:\n- cmd: >lua\n  { \"tabby-agent\", \"--lsp\", \"--stdio\" }\n- filetypes: >lua\n  {}\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\ntailwindcss\n\nhttps://github.com/tailwindlabs/tailwindcss-intellisense\n\nTailwind CSS Language Server can be installed via npm:\n\nnpm install -g @tailwindcss/language-server\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('tailwindcss')\n\n\nDefault config:\n- before_init (use \"gF\" to view): ../lsp/tailwindcss.lua:10\n- capabilities: >lua\n  {\n    workspace = {\n      didChangeWatchedFiles = {\n        dynamicRegistration = true\n      }\n    }\n  }\n- cmd: >lua\n  { \"tailwindcss-language-server\", \"--stdio\" }\n- filetypes: >lua\n  { \"aspnetcorerazor\", \"astro\", \"astro-markdown\", \"blade\", \"clojure\", \"django-html\", \"htmldjango\", \"edge\", \"eelixir\", \"elixir\", \"ejs\", \"erb\", \"eruby\", \"gohtml\", \"gohtmltmpl\", \"haml\", \"handlebars\", \"hbs\", \"html\", \"htmlangular\", \"html-eex\", \"heex\", \"jade\", \"leaf\", \"liquid\", \"markdown\", \"mdx\", \"mustache\", \"njk\", \"nunjucks\", \"php\", \"razor\", \"slim\", \"twig\", \"css\", \"less\", \"postcss\", \"sass\", \"scss\", \"stylus\", \"sugarss\", \"javascript\", \"javascriptreact\", \"reason\", \"rescript\", \"typescript\", \"typescriptreact\", \"vue\", \"svelte\", \"templ\" }\n- root_dir (use \"gF\" to view): ../lsp/tailwindcss.lua:10\n- settings: >lua\n  {\n    tailwindCSS = {\n      classAttributes = { \"class\", \"className\", \"class:list\", \"classList\", \"ngClass\" },\n      includeLanguages = {\n        eelixir = \"html-eex\",\n        elixir = \"phoenix-heex\",\n        eruby = \"erb\",\n        heex = \"phoenix-heex\",\n        htmlangular = \"html\",\n        templ = \"html\"\n      },\n      lint = {\n        cssConflict = \"warning\",\n        invalidApply = \"error\",\n        invalidConfigPath = \"error\",\n        invalidScreen = \"error\",\n        invalidTailwindDirective = \"error\",\n        invalidVariant = \"error\",\n        recommendedVariantOrder = \"warning\"\n      },\n      validate = true\n    }\n  }\n- `workspace_required` : `true`\n<\n\n------------------------------------------------------------------------------\ntaplo\n\nhttps://taplo.tamasfe.dev/cli/usage/language-server.html\n\nLanguage server for Taplo, a TOML toolkit.\n\n`taplo-cli` can be installed via `cargo` >sh\n  cargo install --features lsp --locked taplo-cli\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('taplo')\n\n\nDefault config:\n- cmd: >lua\n  { \"taplo\", \"lsp\", \"stdio\" }\n- filetypes: >lua\n  { \"toml\" }\n- root_markers: >lua\n  { \".taplo.toml\", \"taplo.toml\", \".git\" }\n<\n\n------------------------------------------------------------------------------\ntblgen_lsp_server\n\nhttps://mlir.llvm.org/docs/Tools/MLIRLSP/#tablegen-lsp-language-server--tblgen-lsp-server\n\nThe Language Server for the LLVM TableGen language\n\n`tblgen-lsp-server` can be installed at the llvm-project repository (https://github.com/llvm/llvm-project)\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('tblgen_lsp_server')\n\n\nDefault config:\n- cmd: >lua\n  { \"tblgen-lsp-server\" }\n- filetypes: >lua\n  { \"tablegen\" }\n- root_markers: >lua\n  { \"tablegen_compile_commands.yml\", \".git\" }\n<\n\n------------------------------------------------------------------------------\ntclsp\n\nhttps://github.com/nmoroze/tclint\n\n`tclsp`, a language server for Tcl\n\n`tclsp` can be installed via `pipx` >sh\n  pipx install tclint\n\nOr via `pip` >sh\n  pip install tclint\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('tclsp')\n\n\nDefault config:\n- cmd: >lua\n  { \"tclsp\" }\n- filetypes: >lua\n  { \"tcl\", \"sdc\", \"xdc\", \"upf\" }\n- root_markers: >lua\n  { \"tclint.toml\", \".tclint\", \"pyproject.toml\", \".git\" }\n<\n\n------------------------------------------------------------------------------\nteal_ls\n\nhttps://github.com/teal-language/teal-language-server\n\nInstall with:>\n  luarocks install teal-language-server\n\nOptional Command Args:\n* \"--log-mode=by_date\" - Enable logging in $HOME/.cache/teal-language-server. Log name will be date + pid of process\n* \"--log-mode=by_proj_path\" - Enable logging in $HOME/.cache/teal-language-server. Log name will be project path + pid of process\n* \"--verbose=true\" - Increases log level.  Does nothing unless log-mode is set\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('teal_ls')\n\n\nDefault config:\n- cmd: >lua\n  { \"teal-language-server\" }\n- filetypes: >lua\n  { \"teal\" }\n- root_markers: >lua\n  { \"tlconfig.lua\" }\n<\n\n------------------------------------------------------------------------------\ntempl\n\nhttps://templ.guide\n\nThe official language server for the templ HTML templating language.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('templ')\n\n\nDefault config:\n- cmd: >lua\n  { \"templ\", \"lsp\" }\n- filetypes: >lua\n  { \"templ\" }\n- root_markers: >lua\n  { \"go.work\", \"go.mod\", \".git\" }\n<\n\n------------------------------------------------------------------------------\ntermux_language_server\n\nhttps://github.com/termux/termux-language-server\n\nLanguage server for various bash scripts such as Arch PKGBUILD, Gentoo ebuild, Termux build.sh, etc.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('termux_language_server')\n\n\nDefault config:\n- cmd: >lua\n  { \"termux-language-server\" }\n- root_dir (use \"gF\" to view): ../lsp/termux_language_server.lua:10\n<\n\n------------------------------------------------------------------------------\nterraform_lsp\n\nhttps://github.com/juliosueiras/terraform-lsp\n\nTerraform language server\nDownload a released binary from\nhttps://github.com/juliosueiras/terraform-lsp/releases.\n\nFrom https://github.com/hashicorp/terraform-ls#terraform-ls-vs-terraform-lsp:\n\nBoth HashiCorp and the maintainer of terraform-lsp expressed interest in\ncollaborating on a language server and are working towards a _long-term_\ngoal of a single stable and feature-complete implementation.\n\nFor the time being both projects continue to exist, giving users the\nchoice:\n\n- `terraform-ls` providing\n  - overall stability (by relying only on public APIs)\n  - compatibility with any provider and any Terraform >=0.12.0 currently\n    less features\n  - due to project being younger and relying on public APIs which may\n    not offer the same functionality yet\n\n- `terraform-lsp` providing\n  - currently more features\n  - compatibility with a single particular Terraform (0.12.20 at time of writing)\n    - configs designed for other 0.12 versions may work, but interpretation may be inaccurate\n  - less stability (due to reliance on Terraform's own internal packages)\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('terraform_lsp')\n\n\nDefault config:\n- cmd: >lua\n  { \"terraform-lsp\" }\n- filetypes: >lua\n  { \"terraform\", \"hcl\" }\n- root_markers: >lua\n  { \".terraform\", \".git\" }\n<\n\n------------------------------------------------------------------------------\nterraformls\n\nhttps://github.com/hashicorp/terraform-ls\n\nTerraform language server\nDownload a released binary from https://github.com/hashicorp/terraform-ls/releases.\n\nFrom https://github.com/hashicorp/terraform-ls#terraform-ls-vs-terraform-lsp:\n\nBoth HashiCorp and the maintainer of terraform-lsp expressed interest in\ncollaborating on a language server and are working towards a _long-term_\ngoal of a single stable and feature-complete implementation.\n\nFor the time being both projects continue to exist, giving users the\nchoice:\n\n- `terraform-ls` providing\n  - overall stability (by relying only on public APIs)\n  - compatibility with any provider and any Terraform >=0.12.0 currently\n    less features\n  - due to project being younger and relying on public APIs which may\n    not offer the same functionality yet\n\n- `terraform-lsp` providing\n  - currently more features\n  - compatibility with a single particular Terraform (0.12.20 at time of writing)\n    - configs designed for other 0.12 versions may work, but interpretation may be inaccurate\n  - less stability (due to reliance on Terraform's own internal packages)\n\nNote, that the `settings` configuration option uses the `workspace/didChangeConfiguration` event,\n[which is not supported by terraform-ls](https://github.com/hashicorp/terraform-ls/blob/main/docs/features.md).\nInstead you should use `init_options` which passes the settings as part of the LSP initialize call\n[as is required by terraform-ls](https://github.com/hashicorp/terraform-ls/blob/main/docs/SETTINGS.md#how-to-pass-settings).\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('terraformls')\n\n\nDefault config:\n- cmd: >lua\n  { \"terraform-ls\", \"serve\" }\n- filetypes: >lua\n  { \"terraform\", \"terraform-vars\" }\n- root_markers: >lua\n  { \".terraform\", \".git\" }\n<\n\n------------------------------------------------------------------------------\ntexlab\n\nhttps://github.com/latex-lsp/texlab\n\nA completion engine built from scratch for (La)TeX.\n\nSee https://github.com/latex-lsp/texlab/wiki/Configuration for configuration options.\n\nThere are some non standard commands supported, namely:\n`LspTexlabBuild`, `LspTexlabForward`, `LspTexlabCancelBuild`,\n`LspTexlabDependencyGraph`, `LspTexlabCleanArtifacts`,\n`LspTexlabCleanAuxiliary`, `LspTexlabFindEnvironments`,\nand `LspTexlabChangeEnvironment`.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('texlab')\n\n\nDefault config:\n- cmd: >lua\n  { \"texlab\" }\n- filetypes: >lua\n  { \"tex\", \"plaintex\", \"bib\" }\n- on_attach (use \"gF\" to view): ../lsp/texlab.lua:134\n- root_markers: >lua\n  { \".git\", \".latexmkrc\", \"latexmkrc\", \".texlabroot\", \"texlabroot\", \"Tectonic.toml\" }\n- settings: >lua\n  {\n    texlab = {\n      bibtexFormatter = \"texlab\",\n      build = {\n        args = { \"-pdf\", \"-interaction=nonstopmode\", \"-synctex=1\", \"%f\" },\n        executable = \"latexmk\",\n        forwardSearchAfter = false,\n        onSave = false\n      },\n      chktex = {\n        onEdit = false,\n        onOpenAndSave = false\n      },\n      diagnosticsDelay = 300,\n      formatterLineLength = 80,\n      forwardSearch = {\n        args = {}\n      },\n      latexFormatter = \"latexindent\",\n      latexindent = {\n        modifyLineBreaks = false\n      }\n    }\n  }\n<\n\n------------------------------------------------------------------------------\ntextlsp\n\nhttps://github.com/hangyav/textLSP\n\n`textLSP` is an LSP server for text spell and grammar checking with various AI tools.\nIt supports multiple text file formats, such as LaTeX, Org or txt.\n\nFor the available text analyzer tools and their configuration, see the [GitHub](https://github.com/hangyav/textLSP) page.\nBy default, all analyzers are disabled in textLSP, since most of them need special settings.\nFor quick testing, LanguageTool is enabled in the default `nvim-lspconfig` configuration.\n\nTo install run: `pip install textLSP`\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('textlsp')\n\n\nDefault config:\n- cmd: >lua\n  { \"textlsp\" }\n- filetypes: >lua\n  { \"text\", \"tex\", \"org\" }\n- root_markers: >lua\n  { \".git\" }\n- settings: >lua\n  {\n    textLSP = {\n      analysers = {\n        languagetool = {\n          check_text = {\n            on_change = false,\n            on_open = true,\n            on_save = true\n          },\n          enabled = true\n        }\n      },\n      documents = {\n        org = {\n          org_todo_keywords = { \"TODO\", \"IN_PROGRESS\", \"DONE\" }\n        }\n      }\n    }\n  }\n<\n\n------------------------------------------------------------------------------\ntflint\n\nhttps://github.com/terraform-linters/tflint\n\nA pluggable Terraform linter that can act as lsp server.\nInstallation instructions can be found in https://github.com/terraform-linters/tflint#installation.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('tflint')\n\n\nDefault config:\n- cmd: >lua\n  { \"tflint\", \"--langserver\" }\n- filetypes: >lua\n  { \"terraform\" }\n- root_markers: >lua\n  { \".terraform\", \".git\", \".tflint.hcl\" }\n<\n\n------------------------------------------------------------------------------\ntheme_check\n\nhttps://github.com/Shopify/shopify-cli\n\n`theme-check-language-server` is bundled with `shopify-cli` or it can also be installed via\n\nhttps://github.com/Shopify/theme-check#installation\n\n**NOTE:**\nIf installed via Homebrew, `cmd` must be set to 'theme-check-liquid-server'\n>lua\n  vim.lsp.config('theme_check, {\n    cmd = { 'theme-check-liquid-server' }\n  })\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('theme_check')\n\n\nDefault config:\n- cmd: >lua\n  { \"theme-check-language-server\", \"--stdio\" }\n- filetypes: >lua\n  { \"liquid\" }\n- root_markers: >lua\n  { \".theme-check.yml\" }\n- settings: >lua\n  {}\n<\n\n------------------------------------------------------------------------------\nthriftls\n\nhttps://github.com/joyme123/thrift-ls\n\nyou can install thriftls by mason or download binary here: https://github.com/joyme123/thrift-ls/releases\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('thriftls')\n\n\nDefault config:\n- cmd: >lua\n  { \"thriftls\" }\n- filetypes: >lua\n  { \"thrift\" }\n- root_markers: >lua\n  { \".thrift\" }\n<\n\n------------------------------------------------------------------------------\ntilt_ls\n\nhttps://github.com/tilt-dev/tilt\n\nTilt language server.\n\nYou might need to add filetype detection manually:\n>vim\n  autocmd BufRead Tiltfile setf=tiltfile\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('tilt_ls')\n\n\nDefault config:\n- cmd: >lua\n  { \"tilt\", \"lsp\", \"start\" }\n- filetypes: >lua\n  { \"tiltfile\" }\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\ntinymist\n\nhttps://github.com/Myriad-Dreamin/tinymist\nAn integrated language service for Typst [taɪpst]. You can also call it \"微霭\" [wēi ǎi] in Chinese.\n\nCurrently some of Tinymist's workspace commands are supported, namely:\n`LspTinymistExportSvg`, `LspTinymistExportPng`, `LspTinymistExportPdf`,\n`LspTinymistExportMarkdown`, `LspTinymistExportText`, `LspTinymistExportQuery`,\n`LspTinymistExportAnsiHighlight`, `LspTinymistGetServerInfo`,\n`LspTinymistGetDocumentTrace`, `LspTinymistGetWorkspaceLabels`,\n`LspTinymistGetDocumentMetrics`, and `LspTinymistPinMain`.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('tinymist')\n\n\nDefault config:\n- cmd: >lua\n  { \"tinymist\" }\n- filetypes: >lua\n  { \"typst\" }\n- on_attach (use \"gF\" to view): ../lsp/tinymist.lua:45\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\ntofu_ls\n\n[OpenTofu Language Server](https://github.com/opentofu/tofu-ls)\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('tofu_ls')\n\n\nDefault config:\n- cmd: >lua\n  { \"tofu-ls\", \"serve\" }\n- filetypes: >lua\n  { \"opentofu\", \"opentofu-vars\", \"terraform\" }\n- root_markers: >lua\n  { \".terraform\", \".git\" }\n<\n\n------------------------------------------------------------------------------\ntombi\n\nhttps://tombi-toml.github.io/tombi/\n\nLanguage server for Tombi, a TOML toolkit.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('tombi')\n\n\nDefault config:\n- cmd: >lua\n  { \"tombi\", \"lsp\" }\n- filetypes: >lua\n  { \"toml\" }\n- root_markers: >lua\n  { \"tombi.toml\", \"pyproject.toml\", \".git\" }\n<\n\n------------------------------------------------------------------------------\nts_ls\n\nhttps://github.com/typescript-language-server/typescript-language-server\n\n`ts_ls`, aka `typescript-language-server`, is a Language Server Protocol implementation for TypeScript wrapping `tsserver`. Note that `ts_ls` is not `tsserver`.\n\n`typescript-language-server` depends on `typescript`. Both packages can be installed via `npm` >sh\n  npm install -g typescript typescript-language-server\n\nTo configure typescript language server, add a\n[`tsconfig.json`](https://www.typescriptlang.org/docs/handbook/tsconfig-json.html) or\n[`jsconfig.json`](https://code.visualstudio.com/docs/languages/jsconfig) to the root of your\nproject.\n\nHere's an example that disables type checking in JavaScript files.\n>json\n  {\n    \"compilerOptions\": {\n      \"module\": \"commonjs\",\n      \"target\": \"es6\",\n      \"checkJs\": false\n    },\n    \"exclude\": [\n      \"node_modules\"\n    ]\n  }\n\nUse the `:LspTypescriptSourceAction` command to see \"whole file\" (\"source\") code-actions such as:\n- organize imports\n- remove unused code\n\nUse the `:LspTypescriptGoToSourceDefinition` command to navigate to the source definition of a symbol (e.g., jump to the original implementation instead of type definitions).\n\n### Monorepo support\n\n`ts_ls` supports monorepos by default. It will automatically find the `tsconfig.json` or `jsconfig.json` corresponding to the package you are working on.\nThis works without the need of spawning multiple instances of `ts_ls`, saving memory.\n\nIt is recommended to use the same version of TypeScript in all packages, and therefore have it available in your workspace root. The location of the TypeScript binary will be determined automatically, but only once.\n\nSome care must be taken here to correctly infer whether a file is part of a Deno program, or a TS program that\nexpects to run in Node or Web Browsers. This supports having a Deno module using the denols LSP as a part of a\nmostly-not-Deno monorepo. We do this by finding the nearest package manager lock file, and the nearest deno.json\nor deno.jsonc.\n\nExample:\n>\n  project-root\n  +-- node_modules/...\n  +-- package-lock.json\n  +-- package.json\n  +-- packages\n      +-- deno-module\n      |   +-- deno.json\n      |   +-- package.json <-- It's normal for Deno projects to have package.json files!\n      |   +-- src\n      |       +-- index.ts <-- this is a Deno file\n      +-- node-module\n          +-- package.json\n          +-- src\n              +-- index.ts <-- a non-Deno file (ie, should use ts_ls or tsgols)\n\nFrom the file being edited, we walk up to find the nearest package manager lockfile. This is PROJECT ROOT.\nFrom the file being edited, find the nearest deno.json or deno.jsonc. This is DENO ROOT.\nFrom the file being edited, find the nearest deno.lock. This is DENO LOCK ROOT\nIf DENO LOCK ROOT is found, and PROJECT ROOT is missing or shorter, then this is a deno file, and we abort.\nIf DENO ROOT is found, and it's longer than or equal to PROJECT ROOT, then this is a Deno file, and we abort.\nOtherwise, attach at PROJECT ROOT, or the cwd if not found.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('ts_ls')\n\n\nCommands:\n- editor.action.showReferences\n\nDefault config:\n- cmd: >lua\n  { \"typescript-language-server\", \"--stdio\" }\n- commands: >lua\n  {\n    [\"editor.action.showReferences\"] = <function 1>\n  }\n- filetypes: >lua\n  { \"javascript\", \"javascriptreact\", \"typescript\", \"typescriptreact\" }\n- handlers: >lua\n  {\n    [\"_typescript.rename\"] = <function 1>\n  }\n- init_options: >lua\n  {\n    hostInfo = \"neovim\"\n  }\n- on_attach (use \"gF\" to view): ../lsp/ts_ls.lua:77\n- root_dir (use \"gF\" to view): ../lsp/ts_ls.lua:77\n<\n\n------------------------------------------------------------------------------\nts_query_ls\n\nhttps://github.com/ribru17/ts_query_ls\nCan be configured by passing a \"settings\" object to `vim.lsp.config('ts_query_ls', {})` >lua\n  vim.lsp.config('ts_query_ls', {\n    init_options = {\n      parser_install_directories = {\n        '/my/parser/install/dir',\n      },\n      -- This setting is provided by default\n      parser_aliases = {\n        ecma = 'javascript',\n        jsx = 'javascript',\n        php_only = 'php',\n      },\n    },\n  })\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('ts_query_ls')\n\n\nDefault config:\n- cmd: >lua\n  { \"ts_query_ls\" }\n- filetypes: >lua\n  { \"query\" }\n- init_options: >lua\n  {\n    parser_aliases = {\n      ecma = \"javascript\",\n      jsx = \"javascript\",\n      php_only = \"php\"\n    },\n    parser_install_directories = { \"/home/runner/.local/share/nvim/site/parser\" }\n  }\n- on_attach (use \"gF\" to view): ../lsp/ts_query_ls.lua:26\n- root_markers: >lua\n  { \".tsqueryrc.json\", \".git\" }\n<\n\n------------------------------------------------------------------------------\ntsgo\n\nhttps://github.com/microsoft/typescript-go\n\n`typescript-go` is experimental port of the TypeScript compiler (tsc) and language server (tsserver) to the Go programming language.\n\n`tsgo` can be installed via npm `npm install @typescript/native-preview`.\n\n### Monorepo support\n\n`tsgo` supports monorepos by default. It will automatically find the `tsconfig.json` or `jsconfig.json` corresponding to the package you are working on.\nThis works without the need of spawning multiple instances of `tsgo`, saving memory.\n\nIt is recommended to use the same version of TypeScript in all packages, and therefore have it available in your workspace root. The location of the TypeScript binary will be determined automatically, but only once.\n\nSome care must be taken here to correctly infer whether a file is part of a Deno program, or a TS program that\nexpects to run in Node or Web Browsers. This supports having a Deno module using the denols LSP as a part of a\nmostly-not-Deno monorepo. We do this by finding the nearest package manager lock file, and the nearest deno.json\nor deno.jsonc.\n\nExample:\n>\n  project-root\n  +-- node_modules/...\n  +-- package-lock.json\n  +-- package.json\n  +-- packages\n      +-- deno-module\n      |   +-- deno.json\n      |   +-- package.json <-- It's normal for Deno projects to have package.json files!\n      |   +-- src\n      |       +-- index.ts <-- this is a Deno file\n      +-- node-module\n          +-- package.json\n          +-- src\n              +-- index.ts <-- a non-Deno file (ie, should use ts_ls or tsgols)\n\nFrom the file being edited, we walk up to find the nearest package manager lockfile. This is PROJECT ROOT.\nFrom the file being edited, find the nearest deno.json or deno.jsonc. This is DENO ROOT.\nFrom the file being edited, find the nearest deno.lock. This is DENO LOCK ROOT\nIf DENO LOCK ROOT is found, and PROJECT ROOT is missing or shorter, then this is a deno file, and we abort.\nIf DENO ROOT is found, and it's longer than or equal to PROJECT ROOT, then this is a Deno file, and we abort.\nOtherwise, attach at PROJECT ROOT, or the cwd if not found.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('tsgo')\n\n\nDefault config:\n- cmd (use \"gF\" to view): ../lsp/tsgo.lua:48\n- filetypes: >lua\n  { \"javascript\", \"javascriptreact\", \"typescript\", \"typescriptreact\" }\n- root_dir (use \"gF\" to view): ../lsp/tsgo.lua:48\n- settings: >lua\n  {\n    typescript = {\n      inlayHints = {\n        enumMemberValues = {\n          enabled = true\n        },\n        functionLikeReturnTypes = {\n          enabled = true\n        },\n        parameterNames = {\n          enabled = \"literals\",\n          suppressWhenArgumentMatchesName = true\n        },\n        parameterTypes = {\n          enabled = true\n        },\n        propertyDeclarationTypes = {\n          enabled = true\n        },\n        variableTypes = {\n          enabled = true\n        }\n      }\n    }\n  }\n<\n\n------------------------------------------------------------------------------\ntsp_server\n\nhttps://github.com/microsoft/typespec\n\nThe language server for TypeSpec, a language for defining cloud service APIs and shapes.\n\n`tsp-server` can be installed together with the typespec compiler via `npm` >sh\n  npm install -g @typespec/compiler\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('tsp_server')\n\n\nDefault config:\n- cmd: >lua\n  { \"tsp-server\", \"--stdio\" }\n- filetypes: >lua\n  { \"typespec\" }\n- root_markers: >lua\n  { \"tspconfig.yaml\", \".git\" }\n<\n\n------------------------------------------------------------------------------\nttags\n\nhttps://github.com/npezza93/ttags\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('ttags')\n\n\nDefault config:\n- cmd: >lua\n  { \"ttags\", \"lsp\" }\n- filetypes: >lua\n  { \"ruby\", \"rust\", \"javascript\", \"haskell\" }\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\nturbo_ls\n\nhttps://www.npmjs.com/package/turbo-language-server\n\n`turbo-language-server` can be installed via `npm`:\n>sh\n  npm install -g turbo-language-server\n\nor via `yarn`:\n>sh\n  yarn global add turbo-language-server\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('turbo_ls')\n\n\nDefault config:\n- cmd: >lua\n  { \"turbo-language-server\", \"--stdio\" }\n- filetypes: >lua\n  { \"html\", \"ruby\", \"eruby\", \"blade\", \"php\" }\n- root_markers: >lua\n  { \"Gemfile\", \".git\" }\n<\n\n------------------------------------------------------------------------------\nturtle_ls\n\nhttps://github.com/stardog-union/stardog-language-servers/tree/master/packages/turtle-language-server\n`turtle-language-server`, An editor-agnostic server providing language intelligence (diagnostics, hover tooltips, etc.) for the W3C standard Turtle RDF syntax via the Language Server Protocol.\ninstallable via npm install -g turtle-language-server or yarn global add turtle-language-server.\nrequires node.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('turtle_ls')\n\n\nDefault config:\n- cmd: >lua\n  { \"node\",\n    [3] = \"--stdio\"\n  }\n- filetypes: >lua\n  { \"turtle\", \"ttl\" }\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\ntvm_ffi_navigator\n\nhttps://github.com/tqchen/ffi-navigator\n\nThe Language Server for FFI calls in TVM to be able jump between python and C++\n\nFFI navigator can be installed with `pip install ffi-navigator`, buf for more details, please see\nhttps://github.com/tqchen/ffi-navigator?tab=readme-ov-file#installation\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('tvm_ffi_navigator')\n\n\nDefault config:\n- cmd: >lua\n  { \"python\", \"-m\", \"ffi_navigator.langserver\" }\n- filetypes: >lua\n  { \"python\", \"cpp\" }\n- root_markers: >lua\n  { \"pyproject.toml\", \".git\" }\n<\n\n------------------------------------------------------------------------------\ntwiggy_language_server\n\nhttps://github.com/moetelo/twiggy\n\n`twiggy-language-server` can be installed via `npm` >sh\n  npm install -g twiggy-language-server\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('twiggy_language_server')\n\n\nDefault config:\n- cmd: >lua\n  { \"twiggy-language-server\", \"--stdio\" }\n- filetypes: >lua\n  { \"twig\" }\n- root_markers: >lua\n  { \"composer.json\", \".git\" }\n<\n\n------------------------------------------------------------------------------\nty\n\nhttps://github.com/astral-sh/ty\n\nA Language Server Protocol implementation for ty, an extremely fast Python type checker and language server, written in Rust.\n\nFor installation instructions, please refer to the [ty documentation](https://github.com/astral-sh/ty/blob/main/README.md#getting-started).\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('ty')\n\n\nDefault config:\n- cmd: >lua\n  { \"ty\", \"server\" }\n- filetypes: >lua\n  { \"python\" }\n- root_markers: >lua\n  { \"ty.toml\", \"pyproject.toml\", \"setup.py\", \"setup.cfg\", \"requirements.txt\", \".git\" }\n<\n\n------------------------------------------------------------------------------\ntypeprof\n\nhttps://github.com/ruby/typeprof\n\n`typeprof` is the built-in analysis and LSP tool for Ruby 3.1+.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('typeprof')\n\n\nDefault config:\n- cmd: >lua\n  { \"typeprof\", \"--lsp\", \"--stdio\" }\n- filetypes: >lua\n  { \"ruby\", \"eruby\" }\n- root_markers: >lua\n  { \"Gemfile\", \".git\" }\n<\n\n------------------------------------------------------------------------------\ntypos_lsp\n\nhttps://github.com/crate-ci/typos\nhttps://github.com/tekumara/typos-lsp\n\nA Language Server Protocol implementation for Typos, a low false-positive\nsource code spell checker, written in Rust. Download it from the releases page\non GitHub: https://github.com/tekumara/typos-lsp/releases\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('typos_lsp')\n\n\nDefault config:\n- cmd: >lua\n  { \"typos-lsp\" }\n- root_markers: >lua\n  { \"typos.toml\", \"_typos.toml\", \".typos.toml\", \"pyproject.toml\", \"Cargo.toml\" }\n- settings: >lua\n  {}\n<\n\n------------------------------------------------------------------------------\ntypst_lsp\n\nhttps://github.com/nvarner/typst-lsp\n\nLanguage server for Typst.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('typst_lsp')\n\n\nDefault config:\n- cmd: >lua\n  { \"typst-lsp\" }\n- filetypes: >lua\n  { \"typst\" }\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\nuiua\n\nhttps://github.com/uiua-lang/uiua/\n\nThe builtin language server of the Uiua interpreter.\n\nThe Uiua interpreter can be installed with `cargo install uiua`\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('uiua')\n\n\nDefault config:\n- cmd: >lua\n  { \"uiua\", \"lsp\" }\n- filetypes: >lua\n  { \"uiua\" }\n- root_markers: >lua\n  { \"main.ua\", \".fmt.ua\", \".git\" }\n<\n\n------------------------------------------------------------------------------\nungrammar_languageserver\n\nhttps://github.com/binhtran432k/ungrammar-language-features\nLanguage Server for Ungrammar.\n\nUngrammar Language Server can be installed via npm >sh\n  npm i ungrammar-languageserver -g\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('ungrammar_languageserver')\n\n\nDefault config:\n- cmd: >lua\n  { \"ungrammar-languageserver\", \"--stdio\" }\n- filetypes: >lua\n  { \"ungrammar\" }\n- root_markers: >lua\n  { \".git\" }\n- settings: >lua\n  {\n    ungrammar = {\n      format = {\n        enable = true\n      },\n      validate = {\n        enable = true\n      }\n    }\n  }\n<\n\n------------------------------------------------------------------------------\nunison\n\nhttps://github.com/unisonweb/unison/blob/trunk/docs/language-server.markdown\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('unison')\n\n\nDefault config:\n- cmd: >lua\n  { \"nc\", \"localhost\", \"5757\" }\n- filetypes: >lua\n  { \"unison\" }\n- root_dir (use \"gF\" to view): ../lsp/unison.lua:8\n- settings: >lua\n  {}\n<\n\n------------------------------------------------------------------------------\nunocss\n\nhttps://github.com/xna00/unocss-language-server\n\nUnoCSS Language Server can be installed via npm >sh\n  npm i unocss-language-server -g\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('unocss')\n\n\nDefault config:\n- cmd: >lua\n  { \"unocss-language-server\", \"--stdio\" }\n- filetypes: >lua\n  { \"erb\", \"haml\", \"hbs\", \"html\", \"css\", \"postcss\", \"javascript\", \"javascriptreact\", \"markdown\", \"ejs\", \"php\", \"svelte\", \"typescript\", \"typescriptreact\", \"vue-html\", \"vue\", \"sass\", \"scss\", \"less\", \"stylus\", \"astro\", \"rescript\", \"rust\" }\n- root_markers: >lua\n  { \"unocss.config.js\", \"unocss.config.ts\", \"uno.config.js\", \"uno.config.ts\" }\n- `workspace_required` : `true`\n<\n\n------------------------------------------------------------------------------\nuvls\n\nhttps://codeberg.org/caradhras/uvls\nLanguage server for UVL, written using tree sitter and rust.\nYou can install the server easily using cargo >sh\n  git clone https://codeberg.org/caradhras/uvls\n  cd  uvls\n  cargo install --path .\n\nNote: To activate properly nvim needs to know the uvl filetype.\nYou can add it via >lua\n  vim.cmd([[au BufRead,BufNewFile *.uvl setfiletype uvl]])\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('uvls')\n\n\nDefault config:\n- cmd: >lua\n  { \"uvls\" }\n- filetypes: >lua\n  { \"uvl\" }\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\nv_analyzer\n\nhttps://github.com/vlang/v-analyzer\n\nV language server.\n\n`v-analyzer` can be installed by following the instructions [here](https://github.com/vlang/v-analyzer#installation).\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('v_analyzer')\n\n\nDefault config:\n- cmd: >lua\n  { \"v-analyzer\" }\n- filetypes: >lua\n  { \"v\", \"vsh\", \"vv\" }\n- root_markers: >lua\n  { \"v.mod\", \".git\" }\n<\n\n------------------------------------------------------------------------------\nvacuum\n\nVacuum is the worlds fastest OpenAPI 3, OpenAPI 2 / Swagger linter and quality analysis tool.\n\n You can install vacuum using mason or follow the instructions here: https://github.com/daveshanley/vacuum\n\n The file types are not detected automatically, you can register them manually (see below) or override the filetypes:\n\n ```lua\n vim.filetype.add {\n   pattern = {\n     ['openapi.*%.ya?ml'] = 'yaml.openapi',\n     ['openapi.*%.json'] = 'json.openapi',\n   },\n }\n ```\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('vacuum')\n\n\nDefault config:\n- cmd: >lua\n  { \"vacuum\", \"language-server\" }\n- filetypes: >lua\n  { \"yaml.openapi\", \"json.openapi\" }\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\nvala_ls\n\nhttps://github.com/vala-lang/vala-language-server\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('vala_ls')\n\n\nDefault config:\n- cmd: >lua\n  { \"vala-language-server\" }\n- filetypes: >lua\n  { \"vala\", \"genie\" }\n- root_dir (use \"gF\" to view): ../lsp/vala_ls.lua:27\n<\n\n------------------------------------------------------------------------------\nvale_ls\n\nhttps://github.com/errata-ai/vale-ls\n\nAn implementation of the Language Server Protocol (LSP) for the Vale command-line tool.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('vale_ls')\n\n\nDefault config:\n- cmd: >lua\n  { \"vale-ls\" }\n- filetypes: >lua\n  { \"asciidoc\", \"markdown\", \"text\", \"tex\", \"rst\", \"html\", \"xml\" }\n- root_markers: >lua\n  { \".vale.ini\" }\n<\n\n------------------------------------------------------------------------------\nvectorcode_server\n\nhttps://github.com/Davidyz/VectorCode\n\nA Language Server Protocol implementation for VectorCode, a code repository indexing tool.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('vectorcode_server')\n\n\nDefault config:\n- cmd: >lua\n  { \"vectorcode-server\" }\n- root_dir (use \"gF\" to view): ../lsp/vectorcode_server.lua:7\n- settings: >lua\n  {}\n<\n\n------------------------------------------------------------------------------\nverible\n\nhttps://github.com/chipsalliance/verible\n\nA linter and formatter for verilog and SystemVerilog files.\n\nRelease binaries can be downloaded from [here](https://github.com/chipsalliance/verible/releases)\nand placed in a directory on PATH.\n\nSee https://github.com/chipsalliance/verible/tree/master/verilog/tools/ls/README.md for options.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('verible')\n\n\nDefault config:\n- cmd: >lua\n  { \"verible-verilog-ls\" }\n- filetypes: >lua\n  { \"systemverilog\", \"verilog\" }\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\nveridian\n\nhttps://github.com/vivekmalneedi/veridian\n\nA SystemVerilog LanguageServer.\n\nDownload the latest release for your OS from the releases page\n\nInstall with slang feature, if C++17 compiler is available:>\n  cargo install --git https://github.com/vivekmalneedi/veridian.git --all-features\n\nInstall if C++17 compiler is not available:>\n  cargo install --git https://github.com/vivekmalneedi/veridian.git\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('veridian')\n\n\nDefault config:\n- cmd: >lua\n  { \"veridian\" }\n- filetypes: >lua\n  { \"systemverilog\", \"verilog\" }\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\nveryl_ls\n\nhttps://github.com/veryl-lang/veryl\n\nLanguage server for Veryl\n\n`veryl-ls` can be installed via `cargo`:\n ```sh\n cargo install veryl-ls\n ```\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('veryl_ls')\n\n\nDefault config:\n- cmd: >lua\n  { \"veryl-ls\" }\n- filetypes: >lua\n  { \"veryl\" }\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\nvespa_ls\n\nhttps://github.com/vespa-engine/vespa/tree/master/integration/schema-language-server\n\nVespa Language Server provides LSP features such as completion, diagnostics,\nand go-to-definition for Vespa schema files (`.sd`), profile files (`.profile`),\nand YQL query files (`.yql`).\n\nThis language server requires Java 17 or higher. You can build the jar from source.\n\nYou can override the default command by manually configuring it like this:\n>lua\n  vim.lsp.config('vespa_ls', {\n    cmd = { 'java', '-jar', '/path/to/vespa-language-server.jar' },\n  })\n\nThe project root is determined based on the presence of a `.git` directory.\n\nTo make Neovim recognize the proper filetypes, add the following setting in `init.lua`:\n\n    vim.filetype.add {\n      extension = {\n        profile = 'sd',\n        sd = 'sd',\n        yql = 'yql',\n      },\n    }\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('vespa_ls')\n\n\nDefault config:\n- cmd: >lua\n  { \"java\", \"-jar\", \"vespa-language-server.jar\" }\n- filetypes: >lua\n  { \"sd\", \"profile\", \"yql\" }\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\nvhdl_ls\n\nInstall vhdl_ls from https://github.com/VHDL-LS/rust_hdl and add it to path\n\nConfiguration\n\nThe language server needs to know your library mapping to perform full analysis of the code. For this it uses a configuration file in the TOML format named vhdl_ls.toml.\n\nvhdl_ls will load configuration files in the following order of priority (first to last):\n\n    A file named .vhdl_ls.toml in the user home folder.\n    A file name from the VHDL_LS_CONFIG environment variable.\n    A file named vhdl_ls.toml in the workspace root.\n\nSettings in a later files overwrites those from previously loaded files.\n\nExample vhdl_ls.toml>\n  # File names are either absolute or relative to the parent folder of the vhdl_ls.toml file\n  [libraries]\n  lib2.files = [\n    'pkg2.vhd',\n  ]\n  lib1.files = [\n    'pkg1.vhd',\n    'tb_ent.vhd'\n  ]\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('vhdl_ls')\n\n\nDefault config:\n- cmd: >lua\n  { \"vhdl_ls\" }\n- filetypes: >lua\n  { \"vhd\", \"vhdl\" }\n- root_markers: >lua\n  { \"vhdl_ls.toml\", \".vhdl_ls.toml\" }\n<\n\n------------------------------------------------------------------------------\nvimls\n\nhttps://github.com/iamcco/vim-language-server\n\nYou can install vim-language-server via npm >sh\n  npm install -g vim-language-server\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('vimls')\n\n\nDefault config:\n- cmd: >lua\n  { \"vim-language-server\", \"--stdio\" }\n- filetypes: >lua\n  { \"vim\" }\n- init_options: >lua\n  {\n    diagnostic = {\n      enable = true\n    },\n    indexes = {\n      count = 3,\n      gap = 100,\n      projectRootPatterns = { \"runtime\", \"nvim\", \".git\", \"autoload\", \"plugin\" },\n      runtimepath = true\n    },\n    isNeovim = true,\n    iskeyword = \"@,48-57,_,192-255,-#\",\n    runtimepath = \"\",\n    suggest = {\n      fromRuntimepath = true,\n      fromVimruntime = true\n    },\n    vimruntime = \"\"\n  }\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\nvisualforce_ls\n\nhttps://github.com/forcedotcom/salesforcedx-vscode\n\nLanguage server for Visualforce.\n\nFor manual installation, download the .vsix archive file from the\n[forcedotcom/salesforcedx-vscode](https://github.com/forcedotcom/salesforcedx-vscode)\nGitHub releases. Then, configure `cmd` to run the Node script at the unpacked location:\n>lua\n  vim.lsp.config('visualforce_ls', {\n    cmd = {\n      'node',\n      '/path/to/unpacked/archive/extension/node_modules/@salesforce/salesforcedx-visualforce-language-server/out/src/visualforceServer.js',\n      '--stdio'\n    }\n  })\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('visualforce_ls')\n\n\nDefault config:\n- filetypes: >lua\n  { \"visualforce\" }\n- init_options: >lua\n  {\n    embeddedLanguages = {\n      css = true,\n      javascript = true\n    }\n  }\n- root_markers: >lua\n  { \"sfdx-project.json\" }\n<\n\n------------------------------------------------------------------------------\nvls\n\nhttps://github.com/vlang/vls\n\nV language server.\n\n`v-language-server` can be installed by following the instructions [here](https://github.com/vlang/vls#installation).\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('vls')\n\n\nDefault config:\n- cmd: >lua\n  { \"v\", \"ls\" }\n- filetypes: >lua\n  { \"v\", \"vlang\" }\n- root_markers: >lua\n  { \"v.mod\", \".git\" }\n<\n\n------------------------------------------------------------------------------\nvolar\n\nRenamed to [vue_ls](#vue_ls)\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('volar')\n\n\nDefault config:\n- cmd: >lua\n  { \"vue-language-server\", \"--stdio\" }\n- filetypes: >lua\n  { \"vue\" }\n- name: >lua\n  \"vue_ls\"\n- on_init (use \"gF\" to view): ../lsp/volar.lua:6\n- root_markers: >lua\n  { \"package.json\" }\n<\n\n------------------------------------------------------------------------------\nvscoqtop\n\nRenamed to [vsrocq](#vsrocq)\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('vscoqtop')\n\n\nDefault config:\n- cmd: >lua\n  { \"vsrocqtop\" }\n- filetypes: >lua\n  { \"coq\" }\n- name: >lua\n  \"vsrocq\"\n- on_init (use \"gF\" to view): ../lsp/vscoqtop.lua:6\n- root_markers: >lua\n  { \"_RocqProject\", \"_CoqProject\", \".git\" }\n<\n\n------------------------------------------------------------------------------\nvsrocq\n\nhttps://github.com/rocq-prover/vsrocq\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('vsrocq')\n\n\nDefault config:\n- cmd: >lua\n  { \"vsrocqtop\" }\n- filetypes: >lua\n  { \"coq\" }\n- root_markers: >lua\n  { \"_RocqProject\", \"_CoqProject\", \".git\" }\n<\n\n------------------------------------------------------------------------------\nvtsls\n\nhttps://github.com/yioneko/vtsls\n\n`vtsls` can be installed with npm >sh\n  npm install -g @vtsls/language-server\n\nTo configure a TypeScript project, add a\n[`tsconfig.json`](https://www.typescriptlang.org/docs/handbook/tsconfig-json.html)\nor [`jsconfig.json`](https://code.visualstudio.com/docs/languages/jsconfig) to\nthe root of your project.\n\n### Vue support\n\nSince v3.0.0, the Vue language server requires `vtsls` to support TypeScript.\n>\n  -- If you are using mason.nvim, you can get the ts_plugin_path like this\n  -- For Mason v1,\n  -- local mason_registry = require('mason-registry')\n  -- local vue_language_server_path = mason_registry.get_package('vue-language-server'):get_install_path() .. '/node_modules/@vue/language-server'\n  -- For Mason v2,\n  -- local vue_language_server_path = vim.fn.expand '$MASON/packages' .. '/vue-language-server' .. '/node_modules/@vue/language-server'\n  -- or even\n  -- local vue_language_server_path = vim.fn.stdpath('data') .. \"/mason/packages/vue-language-server/node_modules/@vue/language-server\"\n  local vue_language_server_path = '/path/to/@vue/language-server'\n  local vue_plugin = {\n    name = '@vue/typescript-plugin',\n    location = vue_language_server_path,\n    languages = { 'vue' },\n    configNamespace = 'typescript',\n  }\n  vim.lsp.config('vtsls', {\n    settings = {\n      vtsls = {\n        tsserver = {\n          globalPlugins = {\n            vue_plugin,\n          },\n        },\n      },\n    },\n    filetypes = { 'typescript', 'javascript', 'javascriptreact', 'typescriptreact', 'vue' },\n  })\n\n- `location` MUST be defined. If the plugin is installed in `node_modules`, `location` can have any value.\n- `languages` must include vue even if it is listed in filetypes.\n- `filetypes` is extended here to include Vue SFC.\n\nYou must make sure the Vue language server is setup. For example,\n>\n  vim.lsp.enable('vue_ls')\n\nSee `vue_ls` section and https://github.com/vuejs/language-tools/wiki/Neovim for more information.\n\n### Monorepo support\n\n`vtsls` supports monorepos by default. It will automatically find the `tsconfig.json` or `jsconfig.json` corresponding to the package you are working on.\nThis works without the need of spawning multiple instances of `vtsls`, saving memory.\n\nIt is recommended to use the same version of TypeScript in all packages, and therefore have it available in your workspace root. The location of the TypeScript binary will be determined automatically, but only once.\n\nThis includes the same Deno-excluding logic from `ts_ls`. It is not recommended to enable both `vtsls` and `ts_ls` at the same time!\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('vtsls')\n\n\nDefault config:\n- cmd: >lua\n  { \"vtsls\", \"--stdio\" }\n- filetypes: >lua\n  { \"javascript\", \"javascriptreact\", \"typescript\", \"typescriptreact\" }\n- init_options: >lua\n  {\n    hostInfo = \"neovim\"\n  }\n- root_dir (use \"gF\" to view): ../lsp/vtsls.lua:71\n<\n\n------------------------------------------------------------------------------\nvue_ls\n\nhttps://github.com/vuejs/language-tools/tree/master/packages/language-server\n\nThe official language server for Vue\n\nIt can be installed via npm >sh\n  npm install -g @vue/language-server\n\nThe language server only supports Vue 3 projects by default.\nFor Vue 2 projects, [additional configuration](https://github.com/vuejs/language-tools/blob/master/extensions/vscode/README.md?plain=1#L19) are required.\n\nThe Vue language server works in \"hybrid mode\" that exclusively manages the CSS/HTML sections.\nYou need the `vtsls` server with the `@vue/typescript-plugin` plugin to support TypeScript in `.vue` files.\nSee `vtsls` section and https://github.com/vuejs/language-tools/wiki/Neovim for more information.\n\nNOTE: Since v3.0.0, the Vue Language Server [no longer supports takeover mode](https://github.com/vuejs/language-tools/pull/5248).\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('vue_ls')\n\n\nDefault config:\n- cmd: >lua\n  { \"vue-language-server\", \"--stdio\" }\n- filetypes: >lua\n  { \"vue\" }\n- on_init (use \"gF\" to view): ../lsp/vue_ls.lua:22\n- root_markers: >lua\n  { \"package.json\" }\n<\n\n------------------------------------------------------------------------------\nwasm_language_tools\n\nhttps://github.com/g-plane/wasm-language-tools\n\nWebAssembly Language Tools aims to provide and improve the editing experience of WebAssembly Text Format.\nIt also provides an out-of-the-box formatter (a.k.a. pretty printer) for WebAssembly Text Format.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('wasm_language_tools')\n\n\nDefault config:\n- cmd: >lua\n  { \"wat_server\" }\n- filetypes: >lua\n  { \"wat\" }\n<\n\n------------------------------------------------------------------------------\nwc_language_server\n\nhttps://github.com/wc-toolkit/wc-language-server\n\nWeb Components Language Server provides intelligent editor support for Web Components and custom elements.\nIt offers advanced HTML diagnostics, completion, and validation for custom elements, including support for\nattribute types, deprecation, and duplicate attribute detection.\n\nThe language server uses the [Custom Elements Manifest](https://github.com/webcomponents/custom-elements-manifest)\nto generate component integration and validation information\n\n`wc-language-server` can be installed by following the instructions at the [GitHub repository](https://github.com/wc-toolkit/wc-language-server/blob/main/packages/neovim/README.md).\n\nThe default `cmd` assumes that the `wc-language-server` binary can be found in `$PATH`.\n\nAlternatively, you can install it via [mason.nvim](https://github.com/williamboman/mason.nvim) >vim\n  :MasonInstall wc-language-server\n\n## Configuration\n\nThe language server reads settings from `wc.config.js` (or `.ts/.mjs/.cjs`) at the project root.\nUse it to customize manifest sources, file scoping, and diagnostic behavior.\n\nExample `wc.config.js` >js\n  export default {\n    // Fetch manifest from a custom path or URL\n    manifestSrc: './dist/custom-elements.json',\n\n    // Narrow which files opt into the language server\n    include: ['src/**/*.ts', 'src/**/*.html'],\n\n    // Skip specific globs\n    exclude: ['**/*.stories.ts'],\n\n    // Per-library overrides\n    libraries: {\n      '@your/pkg': {\n        manifestSrc: 'https://cdn.example.com/custom-elements.json',\n        tagFormatter: (tag) => tag.replace(/^x-/, 'my-'),\n      },\n    },\n\n    // Customize diagnostic severity levels\n    diagnosticSeverity: {\n      duplicateAttribute: 'warning',\n      unknownElement: 'info',\n    },\n  };\n\nSee the [configuration documentation](https://github.com/wc-toolkit/wc-language-server#configuration) for more details.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('wc_language_server')\n\n\nDefault config:\n- cmd: >lua\n  { \"wc-language-server\", \"--stdio\" }\n- filetypes: >lua\n  { \"html\", \"javascriptreact\", \"typescriptreact\", \"astro\", \"svelte\", \"vue\", \"markdown\", \"mdx\", \"javascript\", \"typescript\", \"css\", \"scss\", \"less\" }\n- init_options: >lua\n  {\n    hostInfo = \"neovim\"\n  }\n- root_markers: >lua\n  { \"wc.config.js\", \"wc.config.ts\", \"wc.config.mjs\", \"wc.config.cjs\", \"custom-elements.json\", \"package.json\", \".git\" }\n<\n\n------------------------------------------------------------------------------\nwgsl_analyzer\n\nhttps://github.com/wgsl-analyzer/wgsl-analyzer\n\n`wgsl-analyzer` can be installed via `cargo` >sh\n  cargo install --git https://github.com/wgsl-analyzer/wgsl-analyzer wgsl-analyzer\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('wgsl_analyzer')\n\n\nDefault config:\n- cmd: >lua\n  { \"wgsl-analyzer\" }\n- filetypes: >lua\n  { \"wgsl\" }\n- root_markers: >lua\n  { \".git\" }\n- settings: >lua\n  {}\n<\n\n------------------------------------------------------------------------------\nyamlls\n\nhttps://github.com/redhat-developer/yaml-language-server\n\n`yaml-language-server` can be installed via `yarn` >sh\n  yarn global add yaml-language-server\n\nTo use a schema for validation, there are two options:\n\n1. Add a modeline to the file. A modeline is a comment of the form:\n>\n  # yaml-language-server: $schema=<urlToTheSchema|relativeFilePath|absoluteFilePath}>\n\nwhere the relative filepath is the path relative to the open yaml file, and the absolute filepath\nis the filepath relative to the filesystem root ('/' on unix systems)\n\n2. Associated a schema url, relative , or absolute (to root of project, not to filesystem root) path to\nthe a glob pattern relative to the detected project root. Check `:checkhealth vim.lsp` to determine the resolved project\nroot.\n>lua\n  vim.lsp.config('yamlls', {\n    ...\n    settings = {\n      yaml = {\n        ... -- other settings. note this overrides the lspconfig defaults.\n        schemas = {\n          [\"https://json.schemastore.org/github-workflow.json\"] = \"/.github/workflows/*\",\n          [\"../path/relative/to/file.yml\"] = \"/.github/workflows/*\",\n          [\"/path/from/root/of/project\"] = \"/.github/workflows/*\",\n        },\n      },\n    }\n  })\n\nCurrently, kubernetes is special-cased in yammls, see the following upstream issues:\n* [#211](https://github.com/redhat-developer/yaml-language-server/issues/211).\n* [#307](https://github.com/redhat-developer/yaml-language-server/issues/307).\n\nTo override a schema to use a specific k8s schema version (for example, to use 1.18):\n>lua\n  vim.lsp.config('yamlls', {\n    ...\n    settings = {\n      yaml = {\n        ... -- other settings. note this overrides the lspconfig defaults.\n        schemas = {\n          [\"https://raw.githubusercontent.com/yannh/kubernetes-json-schema/refs/heads/master/v1.32.1-standalone-strict/all.json\"] = \"/*.k8s.yaml\",\n          ... -- other schemas\n        },\n      },\n    }\n  })\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('yamlls')\n\n\nDefault config:\n- cmd: >lua\n  { \"yaml-language-server\", \"--stdio\" }\n- filetypes: >lua\n  { \"yaml\", \"yaml.docker-compose\", \"yaml.gitlab\", \"yaml.helm-values\" }\n- on_init (use \"gF\" to view): ../lsp/yamlls.lua:63\n- root_markers: >lua\n  { \".git\" }\n- settings: >lua\n  {\n    redhat = {\n      telemetry = {\n        enabled = false\n      }\n    },\n    yaml = {\n      format = {\n        enable = true\n      }\n    }\n  }\n<\n\n------------------------------------------------------------------------------\nyang_lsp\n\nhttps://github.com/TypeFox/yang-lsp\n\nA Language Server for the YANG data modeling language.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('yang_lsp')\n\n\nDefault config:\n- cmd: >lua\n  { \"yang-language-server\" }\n- filetypes: >lua\n  { \"yang\" }\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\nyls\n\nhttps://pypi.org/project/yls-yara/\n\nAn YLS plugin adding YARA linting capabilities.\n\nThis plugin runs yara.compile on every save, parses the errors, and returns list of diagnostic messages.\n\nLanguage Server: https://github.com/avast/yls\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('yls')\n\n\nDefault config:\n- cmd: >lua\n  { \"yls\", \"-vv\" }\n- filetypes: >lua\n  { \"yar\", \"yara\" }\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\nziggy\n\nhttps://ziggy-lang.io/documentation/ziggy-lsp/\n\nLanguage server for the Ziggy data serialization format\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('ziggy')\n\n\nDefault config:\n- cmd: >lua\n  { \"ziggy\", \"lsp\" }\n- filetypes: >lua\n  { \"ziggy\" }\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\nziggy_schema\n\nhttps://ziggy-lang.io/documentation/ziggy-lsp/\n\nLanguage server for schema files of the Ziggy data serialization format\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('ziggy_schema')\n\n\nDefault config:\n- cmd: >lua\n  { \"ziggy\", \"lsp\", \"--schema\" }\n- filetypes: >lua\n  { \"ziggy_schema\" }\n- root_markers: >lua\n  { \".git\" }\n<\n\n------------------------------------------------------------------------------\nzk\n\nhttps://github.com/zk-org/zk\n\nA plain text note-taking assistant\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('zk')\n\n\nDefault config:\n- cmd: >lua\n  { \"zk\", \"lsp\" }\n- filetypes: >lua\n  { \"markdown\" }\n- on_attach (use \"gF\" to view): ../lsp/zk.lua:40\n- root_markers: >lua\n  { \".zk\" }\n- `workspace_required` : `true`\n<\n\n------------------------------------------------------------------------------\nzls\n\nhttps://github.com/zigtools/zls\n\nZig LSP implementation + Zig Language Server\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('zls')\n\n\nDefault config:\n- cmd: >lua\n  { \"zls\" }\n- filetypes: >lua\n  { \"zig\", \"zir\" }\n- root_markers: >lua\n  { \"zls.json\", \"build.zig\", \".git\" }\n- `workspace_required` : `false`\n<\n\n------------------------------------------------------------------------------\nzuban\n\nhttps://zubanls.com/\n\nA high-performance Python Language Server and type checker implemented in Rust, by the author of Jedi.\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('zuban')\n\n\nDefault config:\n- cmd: >lua\n  { \"zuban\", \"server\" }\n- filetypes: >lua\n  { \"python\" }\n- root_markers: >lua\n  { \"pyproject.toml\", \"setup.py\", \"setup.cfg\", \"requirements.txt\", \"Pipfile\", \".git\" }\n<\n\n\n==============================================================================\n\n vim:tw=78:ft=help:norl:expandtab:sw=4\n"
  },
  {
    "path": "doc/lspconfig.txt",
    "content": "*lspconfig.txt*            User-contributed configs for the Nvim |lsp| client\n                                                       For Nvim version 0.10+\n\n                                      Type |gO| to see the table of contents.\n\n==============================================================================\nINTRODUCTION                                                         *lspconfig*\n\nnvim-lspconfig is a collection of community-contributed configurations for the\nNvim LSP client. See |lspconfig-all| for the complete list of provided\nconfigurations.\n\nNote: nvim-lspconfig is just a collection of configs. It has no API or\n\"framework\". It is not required for Nvim |LSP| support. See |lsp-quickstart|\nto setup LSP without nvim-lspconfig.\n\n==============================================================================\nQUICKSTART                                                *lspconfig-quickstart*\n\n1. Install a language server, e.g. pyright. >bash\n   npm i -g pyright\n2. Add the language server setup to your init.lua. >lua\n   vim.lsp.enable('pyright')\n3. Ensure your workspace contains a root marker as specified in\n   |lspconfig-all|.\n4. Open a code file in Nvim. LSP will attach and provide diagnostics. >bash\n   nvim main.py\n5. Run `:checkhealth vim.lsp` to see the status or troubleshoot.\n\nSee also |lsp-quickstart|.\n\n==============================================================================\nUSAGE                                                        *lspconfig-usage*\n\nEach config provides defaults for |vim.lsp.config()| which you can use as-is\n(by calling `vim.lsp.enable(…)`) or override (by calling |vim.lsp.config()|\nbefore enable()). This \"composability\" is a central feature of vim.lsp.config,\nwhich allows nvim-lspconfig to just provide the config \"defaults\".\n\nTo activate a config, call |vim.lsp.enable()|. Each config in |lspconfig-all|\nis available as `vim.lsp.config('<name>')` and `vim.lsp.enable('<name>')`. For\nexample to activate the \"clangd\" config: >lua\n\n    -- Optionally override parts of the default config...\n    vim.lsp.config('clangd', {\n      …\n    })\n    -- Enable filetype-based activation of the config.\n    vim.lsp.enable('clangd')\n<\n\nlspconfig provides type annotations for LSP settings, see |lspconfig-settings-types|.\n\n                                                          *lspconfig-resolved*\nYou can call the \"index\" form of vim.lsp.config to get the resolved config\nwithout activating it: >lua\n\n    vim.print(vim.lsp.config['clangd'])\n<\n                                                 *lspconfig-vs-vim.lsp.config*\nNote these differences of |vim.lsp.config()| compared to the legacy\nnvim-lspconfig interface:\n\n- `single_file_support` is assumed by default. Can be disabled by specifying\n  `workspace_required=false` (see |vim.lsp.ClientConfig|).\n- `on_new_config` is currently missing, see https://github.com/neovim/neovim/issues/32287\n  - However, defining `root_dir` as a function is very flexible and may fit\n    your use-case instead. https://github.com/neovim/neovim/issues/32037#issuecomment-2825599872\n- `root_dir` usages akin to >lua\n\n      root_dir  = require'lspconfig.util'.root_pattern(...)\n<\n\n  should be updated:\n  - If the patterns passed to `root_pattern` contain no wildcards, then \n    `root_markers` (see |lsp-root_markers|) is likely sufficient.\n  - Otherwise, `root_pattern` can still be employed (for the time being,\n    see https://github.com/neovim/nvim-lspconfig/issues/3768), but the usage\n    should be as follows (see |lsp-root_dir|): >lua\n\n        root_dir = function(bufnr, on_dir)\n            local fname = vim.api.nvim_buf_get_name(bufnr)\n            on_dir(require'lspconfig.util'.root_pattern(...)(fname))\n        end\n<\n\n\n==============================================================================\nCOMMANDS                                                    *lspconfig-commands*\n\nAny server-specific commands provided by a config are buffer-local and\nprefixed with \"Lsp\". Thus you can see available commands (from a LSP-enabled\nbuffer) by typing: >vim\n\n    :Lsp<tab>\n\nThe following _global_ commands are provided by nvim-lspconfig:\n\n:LspInfo                                                            *:LspInfo*\n\nNote: Use `:checkhealth vim.lsp` with Nvim 0.12+.\n\nAlias to `:checkhealth vim.lsp`. Shows the status of active LSP clients and\nservers.\n\n:LspStart [config_name]                                            *:LspStart*\n\nNote: Use `:lsp enable` with Nvim 0.12+. |:lsp-enable|\n\nLaunches the requested (configured) client, but only if it successfully\nresolves a root directory. Note: Defaults to all configured servers matching\nthe current buffer filetype.\n\n:LspStop [config_name]                                              *:LspStop*\n\nNote: Use `:lsp disable` with Nvim 0.12+. |:lsp-disable|\n\nStops the server with the given config name. Defaults to stopping all servers\nactive on the current buffer. To force stop language servers: >vim\n    :LspStop!\n\n:LspRestart [config_name]                                        *:LspRestart*\n\nNote: Use `:lsp restart` with Nvim 0.12+. |:lsp-restart|\n\nRestarts the client with the given config name, and attempts to reattach to\nall previously attached buffers. Defaults to restarting all active servers. To\nforce stop language servers when restarting: >vim\n    :LspRestart!\n\n==============================================================================\nSERVER CONFIGS                                        *lspconfig-configurations*\n\nSee |lspconfig-all| for the list of provided LSP configurations.\n\nIf a server is missing, you can define one easily via |vim.lsp.config()|\n(requires Nvim 0.11+), see |lsp-config|.\n\n------------------------------------------------------------------------------\nNEW CONFIGS                                           *lspconfig-new*\n\nTo create a new config, see |lsp-config| (requires Nvim 0.11+).\nTo contribute a config to nvim-lspconfig, see ../CONTRIBUTING.md.\n\n==============================================================================\nSETTINGS TYPES                                        lspconfig-settings-types\n\n`nvim-lspconfig` generates Lua type definitions for each supported LSP server.\nBy manually adding annotations (e.g., `---@type lspconfig.settings.server_name`),\nyou enable auto-completion and diagnostics for your server settings.\n\nExample: >lua\n  ---@type vim.lsp.Config\n  local config = {\n    ---@type lspconfig.settings.lua_ls\n    settings = {\n      Lua = {\n        runtime = {\n          version = 'LuaJIT',\n        },\n        workspace = {\n          library = {\n            vim.env.VIMRUNTIME,\n          }\n        },\n      },\n    },\n  }\n\n  vim.lsp.config('lua_ls', config)\n<\n\n==============================================================================\nCOMPLETION SUPPORT                                        *lspconfig-completion*\n\nSee |lsp-completion|.\n\n==============================================================================\nMigrate to vim.lsp.config                                *lspconfig-nvim-0.11*\n\nThe \"framework\" part of nvim-lspconfig is DEPRECATED. The \"configs\" are NOT\ndeprecated, but were moved to the lsp/ directory so that |vim.lsp.config()|\nautomatically finds them.\n\nThis means:\n- `require'lspconfig'[…]` must NOT be used. Use `vim.lsp.config(…)` instead.\n- The `require'lspconfig'` quasi-framework will be DELETED, and is not\n  supported in Nvim 0.11+.\n- The nvim-lspconfig configs (|lspconfig-all|) now live in \"lsp/\" instead of\n  \"lua/lspconfig/\".\n- To use the configs, call `vim.lsp.config(…)` instead of `require'lspconfig'[…]`.\n\nMIGRATION INSTRUCTIONS\n\nTo migrate:\n- Upgrade to Nvim 0.11 or later.\n- Change `require'lspconfig'[…]` to `vim.lsp.config(…)`.\n  - Some field names changed, see |lspconfig-vs-vim.lsp.config|.\n  - See |lsp-config| for details.\n\nBACKGROUND\n\nSince Nvim 0.11, nvim-lspconfig provides configs in its \"lsp/\" directory. The\nold configs still exist in \"lua/lspconfig/configs/\" but are deprecated and\nwill be DELETED.\n\nThis means the \"configs\" role of nvim-lspconfig continues to be relevant, but\nit is now a \"data-only\" repository instead of a \"framework\". The only change\nneeded from you, and from plugins, is to use the Nvim 0.11 `vim.lsp.config`\ninterface to setup LSP configs instead of the old `require'lspconfig'`\nquasi-framework.\n\n==============================================================================\nDEBUGGING AND TROUBLESHOOTING                              *lspconfig-debugging*\n\nSee |lsp-log| to enable verbose logs.\n\nWhile using language servers should be easy, debugging issues can be\nchallenging. First, it is important to identify the source of the issue, which\nis typically (in rough order):\n\n- the language server itself\n- a plugin\n- overrides in a user configuration\n- the built-in client in Nvim core\n- nvim-lspconfig\n\nThe first step in debugging is to test with a minimal configuration:\nhttps://github.com/neovim/neovim/issues/new?assignees=&labels=bug%2Clsp&template=lsp_bug_report.yml\nHistorically, many problems are due to plugins or misconfiguration.\n\nShould that fail, identifying which component is the culprit is challenging.\nThe following are the only categories of bugs that pertain to nvim-lspconfig.\n\n- The root directory inferred for your project is wrong, or it should be\n  detected but is not due to a bug in the nvim-lspconfig path utilities.\n- The server is launching, but you believe that the default settings,\n  initialization options, or command arguments are suboptimal and should be\n  replaced based on your understanding of the server documentation.\n\nAll bugs Nvim's built-in client should be reported to the Nvim core issue\ntracker. All bugs pertaining to plugins should be reported to the respective\nplugin. All missing features in a language server should be reported to the\nupstream language server issue tracker.\n\nFor debugging nvim-lspconfig issues, the most common hurdles users face are:\n\n  - The language server is not installed or is otherwise not executable.\n    nvim-lspconfig does not install language servers for you. Ensure the `cmd`\n    defined in |lspconfig-all| is executable from the command line. If the\n    absolute path to the binary is not supplied in `cmd`, ensure it is on your\n    PATH.\n  - Missing filetype plugins. Certain languages are not detecting by\n    Vim/Nvim because they have not yet been added to the filetype detection\n    system. Ensure `:set ft?` shows the filetype and not an empty value.\n  - Not triggering root detection. nvim-lspconfig is built around the concept\n    of projects.\n  - Not triggering root detection. Some language servers will only start\n    if it is opened in a directory, or child directory, containing a file\n    which signals the *root* of the project. Most of the time, this is\n    a `.git` folder, but each server defines the root config in the lua file.\n    See |lspconfig-all| or the source code for the list of root directories.\n  - Misconfiguration. Often users will override `cmd`, `on_init`, or\n    `handlers`. Ensure that you debug by using a stock configuration to ensure\n    your customizations are not introducing issues.\n\n|:LspInfo| provides an overview which can be useful for debugging.\n\n==============================================================================\n\nvim:tw=78:ts=8:ft=help:norl:\n"
  },
  {
    "path": "doc/server_configurations.md",
    "content": "# This file was renamed to [configs.md](./configs.md).\n"
  },
  {
    "path": "doc/server_configurations.txt",
    "content": "This file was renamed to \"configs.txt\".\n"
  },
  {
    "path": "flake.nix",
    "content": "{\n  description = \"Quickstart configurations for the Nvim LSP client\";\n\n  inputs.nixpkgs.url = \"github:NixOS/nixpkgs\";\n  inputs.systems.url = \"github:nix-systems/default\";\n\n  outputs = { self, nixpkgs, systems }: let\n    supportedSystems = nixpkgs.lib.genAttrs (import systems);\n    forEachSystem = function: supportedSystems (system:\n        function nixpkgs.legacyPackages.${system});\n  in {\n   devShells = forEachSystem (pkgs: {\n      default = pkgs.mkShell {\n        packages = [\n          pkgs.stylua\n          pkgs.luajitPackages.vusted\n        ];\n      };\n    });\n  };\n}\n"
  },
  {
    "path": "lsp/ada_ls.lua",
    "content": "---@brief\n---\n--- https://github.com/AdaCore/ada_language_server\n---\n--- Installation instructions can be found [here](https://github.com/AdaCore/ada_language_server#Install).\n---\n--- Workspace-specific [settings](https://github.com/AdaCore/ada_language_server/blob/master/doc/settings.md) such as `projectFile` can be provided in a `.als.json` file at the root of the workspace.\n--- Alternatively, configuration may be passed as a \"settings\" object to `vim.lsp.config('ada_ls', {})`:\n---\n--- ```lua\n--- vim.lsp.config('ada_ls', {\n---     settings = {\n---       ada = {\n---         projectFile = \"project.gpr\";\n---         scenarioVariables = { ... };\n---       }\n---     }\n--- })\n--- ```\n\nlocal util = require 'lspconfig.util'\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'ada_language_server' },\n  filetypes = { 'ada' },\n  root_dir = function(bufnr, on_dir)\n    local fname = vim.api.nvim_buf_get_name(bufnr)\n    on_dir(util.root_pattern('Makefile', '.git', 'alire.toml', '*.gpr', '*.adc')(fname))\n  end,\n}\n"
  },
  {
    "path": "lsp/agda_ls.lua",
    "content": "---@brief\n---\n--- https://github.com/agda/agda-language-server\n---\n--- Language Server for Agda.\n\nlocal util = require 'lspconfig.util'\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'als' },\n  filetypes = { 'agda' },\n  root_dir = function(bufnr, on_dir)\n    local fname = vim.api.nvim_buf_get_name(bufnr)\n    on_dir(util.root_pattern('.git', '*.agda-lib')(fname))\n  end,\n}\n"
  },
  {
    "path": "lsp/aiken.lua",
    "content": "---@brief\n---\n--- https://github.com/aiken-lang/aiken\n---\n--- A language server for Aiken Programming Language.\n--- [Installation](https://aiken-lang.org/installation-instructions)\n---\n--- It can be i\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'aiken', 'lsp' },\n  filetypes = { 'aiken' },\n  root_markers = { 'aiken.toml', '.git' },\n}\n"
  },
  {
    "path": "lsp/air.lua",
    "content": "---@brief\n---\n--- https://github.com/posit-dev/air\n---\n--- Air is an R formatter and language server, written in Rust.\n---\n--- Refer to the [documentation](https://posit-dev.github.io/air/editors.html) for more details.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'air', 'language-server' },\n  filetypes = { 'r' },\n  root_markers = { 'air.toml', '.air.toml', '.git' },\n}\n"
  },
  {
    "path": "lsp/alloy_ls.lua",
    "content": "---@brief\n---\n--- https://github.com/AlloyTools/org.alloytools.alloy\n---\n--- Alloy is a formal specification language for describing structures and a tool for exploring them.\n---\n--- You may also need to configure the filetype for Alloy (*.als) files:\n---\n--- ```\n--- autocmd BufNewFile,BufRead *.als set filetype=alloy\n--- ```\n---\n--- or\n---\n--- ```lua\n--- vim.filetype.add({\n---   pattern = {\n---     ['.*/*.als'] = 'alloy',\n---   },\n--- })\n--- ```\n---\n--- Alternatively, you may use a syntax plugin like https://github.com/runoshun/vim-alloy.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'alloy', 'lsp' },\n  filetypes = { 'alloy' },\n  root_markers = { '.git' },\n}\n"
  },
  {
    "path": "lsp/anakin_language_server.lua",
    "content": "---@brief\n---\n--- https://pypi.org/project/anakin-language-server/\n---\n--- `anakin-language-server` is yet another Jedi Python language server.\n---\n--- Available options:\n---\n--- * Initialization: https://github.com/muffinmad/anakin-language-server#initialization-option\n--- * Configuration: https://github.com/muffinmad/anakin-language-server#configuration-options\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'anakinls' },\n  filetypes = { 'python' },\n  root_markers = {\n    'pyproject.toml',\n    'setup.py',\n    'setup.cfg',\n    'requirements.txt',\n    'Pipfile',\n    '.git',\n  },\n  settings = {\n    anakinls = {\n      pyflakes_errors = {\n        -- Full list: https://github.com/PyCQA/pyflakes/blob/master/pyflakes/messages.py\n\n        'ImportStarNotPermitted',\n\n        'UndefinedExport',\n        'UndefinedLocal',\n        'UndefinedName',\n\n        'DuplicateArgument',\n        'MultiValueRepeatedKeyLiteral',\n        'MultiValueRepeatedKeyVariable',\n\n        'FutureFeatureNotDefined',\n        'LateFutureImport',\n\n        'ReturnOutsideFunction',\n        'YieldOutsideFunction',\n        'ContinueOutsideLoop',\n        'BreakOutsideLoop',\n\n        'TwoStarredExpressions',\n        'TooManyExpressionsInStarredAssignment',\n\n        'ForwardAnnotationSyntaxError',\n        'RaiseNotImplemented',\n\n        'StringDotFormatExtraPositionalArguments',\n        'StringDotFormatExtraNamedArguments',\n        'StringDotFormatMissingArgument',\n        'StringDotFormatMixingAutomatic',\n        'StringDotFormatInvalidFormat',\n\n        'PercentFormatInvalidFormat',\n        'PercentFormatMixedPositionalAndNamed',\n        'PercentFormatUnsupportedFormat',\n        'PercentFormatPositionalCountMismatch',\n        'PercentFormatExtraNamedArguments',\n        'PercentFormatMissingArgument',\n        'PercentFormatExpectedMapping',\n        'PercentFormatExpectedSequence',\n        'PercentFormatStarRequiresSequence',\n      },\n    },\n  },\n}\n"
  },
  {
    "path": "lsp/angularls.lua",
    "content": "---@brief\n---\n--- https://github.com/angular/vscode-ng-language-service\n--- `angular-language-server` can be installed via npm `npm install -g @angular/language-server`.\n---\n--- ```lua\n--- local project_library_path = \"/path/to/project/lib\"\n--- local cmd = {\"ngserver\", \"--stdio\", \"--tsProbeLocations\", project_library_path , \"--ngProbeLocations\", project_library_path}\n---\n--- vim.lsp.config('angularls', {\n---   cmd = cmd,\n--- })\n--- ```\n\n-- Angular requires a node_modules directory to probe for @angular/language-service and typescript\n-- in order to use your projects configured versions.\nlocal fs, fn, uv = vim.fs, vim.fn, vim.uv\n\n--- Recursively solve for the original ngserver path on Windows\n-- For a given ngserver path:\n--   - If it is not a CMD wrapper, return the path;\n--   - Or else, extract the path from the CMD wrapper.\n--\n-- @param cmd_path (string) path for the ngserver executable or its CMD wrapper.\n-- @return (string) the original executable path for ngserver\n-- @usage\n-- -- Base case: cmd_path already points to ngserver (expected behavior on Linux)\n-- resolve_cmd_shim('/home/user/project/node_modules/@angular/language-server/bin/ngserver')\n-- => '/home/user/project/node_modules/@angular/language-server/bin/ngserver'\n--\n-- -- Recursive case: cmd_path points to a CMD wrapper (Windows)\n-- resolve_cmd_shim('C:/Users/user/project/node_modules/.bin/ngserver.cmd')\n-- => 'C:/Users/user/project/node_modules/@angular/language-server/bin/ngserver'\nlocal function resolve_cmd_shim(cmd_path)\n  if not cmd_path:lower():match('%ngserver.cmd$') then\n    return cmd_path\n  end\n\n  local ok, content = pcall(fn.readblob, cmd_path)\n  if not ok or not content then\n    return cmd_path\n  end\n\n  local target = content:match('%s%\"%%dp0%%\\\\([^\\r\\n]-ngserver[^\\r\\n]-)%\"')\n  if not target then\n    return cmd_path\n  end\n\n  local full = fs.normalize(fs.joinpath(fs.dirname(cmd_path), target))\n\n  return resolve_cmd_shim(full)\nend\n\nlocal function collect_node_modules(root_dir)\n  local results = {}\n\n  local project_node = fs.joinpath(root_dir, 'node_modules')\n  if uv.fs_stat(project_node) then\n    table.insert(results, project_node)\n  end\n\n  local ngserver_exe = fn.exepath('ngserver')\n  if ngserver_exe and #ngserver_exe > 0 then\n    local realpath = uv.fs_realpath(ngserver_exe) or ngserver_exe\n    realpath = resolve_cmd_shim(realpath)\n    local candidate = fs.normalize(fs.joinpath(fs.dirname(realpath), '../../..'))\n    if uv.fs_stat(candidate) then\n      table.insert(results, candidate)\n    end\n  end\n\n  return results\nend\n\nlocal function get_angular_core_version(root_dir)\n  local package_json = fs.joinpath(root_dir, 'package.json')\n  if not uv.fs_stat(package_json) then\n    return ''\n  end\n\n  local ok, content = pcall(fn.readblob, package_json)\n  if not ok or not content then\n    return ''\n  end\n\n  local json = vim.json.decode(content) or {}\n\n  local version = (json.dependencies or {})['@angular/core'] or (json.devDependencies or {})['@angular/core'] or ''\n  return version:match('%d+%.%d+%.%d+') or ''\nend\n\n---@type vim.lsp.Config\nreturn {\n  cmd = function(dispatchers, config)\n    local root_dir = (config and config.root_dir) or fn.getcwd()\n    local node_paths = collect_node_modules(root_dir)\n\n    local ts_probe = table.concat(node_paths, ',')\n    local ng_probe = table.concat(\n      vim\n        .iter(node_paths)\n        :map(function(p)\n          return fs.joinpath(p, '@angular/language-server/node_modules')\n        end)\n        :totable(),\n      ','\n    )\n    local cmd = {\n      'ngserver',\n      '--stdio',\n      '--tsProbeLocations',\n      ts_probe,\n      '--ngProbeLocations',\n      ng_probe,\n      '--angularCoreVersion',\n      get_angular_core_version(root_dir),\n    }\n    return vim.lsp.rpc.start(cmd, dispatchers)\n  end,\n\n  filetypes = { 'typescript', 'html', 'typescriptreact', 'htmlangular' },\n  root_markers = { 'angular.json', 'nx.json' },\n}\n"
  },
  {
    "path": "lsp/ansiblels.lua",
    "content": "---@brief\n---\n--- https://github.com/ansible/vscode-ansible\n---\n--- Language server for the ansible configuration management tool.\n---\n--- `ansible-language-server` can be installed via `npm`:\n---\n--- ```sh\n--- npm install -g @ansible/ansible-language-server\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'ansible-language-server', '--stdio' },\n  settings = {\n    ansible = {\n      python = {\n        interpreterPath = 'python',\n      },\n      ansible = {\n        path = 'ansible',\n      },\n      executionEnvironment = {\n        enabled = false,\n      },\n      validation = {\n        enabled = true,\n        lint = {\n          enabled = true,\n          path = 'ansible-lint',\n        },\n      },\n    },\n  },\n  filetypes = { 'yaml.ansible' },\n  root_markers = { 'ansible.cfg', '.ansible-lint' },\n}\n"
  },
  {
    "path": "lsp/antlersls.lua",
    "content": "---@brief\n---\n--- https://www.npmjs.com/package/antlers-language-server\n---\n--- `antlersls` can be installed via `npm`:\n--- ```sh\n--- npm install -g antlers-language-server\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'antlersls', '--stdio' },\n  filetypes = { 'html', 'antlers' },\n  root_markers = { 'composer.json' },\n}\n"
  },
  {
    "path": "lsp/apex_ls.lua",
    "content": "--- @brief\n---\n--- https://github.com/forcedotcom/salesforcedx-vscode\n---\n--- Language server for Apex.\n---\n--- For manual installation, download the JAR file from the [VSCode\n--- extension](https://github.com/forcedotcom/salesforcedx-vscode/tree/develop/packages/salesforcedx-vscode-apex) and adjust the `apex_jar_path` appropriately.\n---\n--- ```lua\n--- vim.lsp.config('apex_ls', {\n---   apex_jar_path = '/path/to/apex-jorje-lsp.jar',\n---   apex_enable_semantic_errors = false, -- Whether to allow Apex Language Server to surface semantic errors\n---   apex_enable_completion_statistics = false, -- Whether to allow Apex Language Server to collect telemetry on code completion usage\n--- }\n---```\n---\n--- Example configuration using Mason:\n---\n---```lua\n--- vim.lsp.config('apex_ls', {\n---   apex_jar_path = vim.fn.stdpath('data') .. '/mason/share/apex-language-server/apex-jorje-lsp.jar',\n--- }\n---```\n---\n--- For a complete experience, you may need to ensure the treesitter parsers for 'apex' are installed (:TSInstall apex) as well as configure the filetype for apex (*.cls) files:\n---\n--- ```lua\n--- vim.filetype.add({\n---   pattern = {\n---     ['.*/*.cls'] = 'apex',\n---   },\n--- })\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = function(dispatchers, config)\n    ---@diagnostic disable: undefined-field\n    local local_cmd = {\n      vim.env.JAVA_HOME and (vim.env.JAVA_HOME .. '/bin/java') or 'java',\n      '-cp',\n      config.apex_jar_path,\n      '-Ddebug.internal.errors=true',\n      '-Ddebug.semantic.errors=' .. tostring(config.apex_enable_semantic_errors or false),\n      '-Ddebug.completion.statistics=' .. tostring(config.apex_enable_completion_statistics or false),\n      '-Dlwc.typegeneration.disabled=true',\n    }\n    if config.apex_jvm_max_heap then\n      table.insert(local_cmd, '-Xmx' .. config.apex_jvm_max_heap)\n    end\n    ---@diagnostic enable: undefined-field\n    table.insert(local_cmd, 'apex.jorje.lsp.ApexLanguageServerLauncher')\n\n    return vim.lsp.rpc.start(local_cmd, dispatchers)\n  end,\n  filetypes = { 'apex', 'apexcode' },\n  root_markers = {\n    'sfdx-project.json',\n  },\n}\n"
  },
  {
    "path": "lsp/arduino_language_server.lua",
    "content": "---@brief\n---\n--- https://github.com/arduino/arduino-language-server\n---\n--- Language server for Arduino\n---\n--- The `arduino-language-server` can be installed by running:\n---\n--- ```\n--- go install github.com/arduino/arduino-language-server@latest\n--- ```\n---\n--- The `arduino-cli` tool must also be installed. Follow [these\n--- installation instructions](https://arduino.github.io/arduino-cli/latest/installation/) for\n--- your platform.\n---\n--- After installing `arduino-cli`, follow [these\n--- instructions](https://arduino.github.io/arduino-cli/latest/getting-started/#create-a-configuration-file)\n--- for generating a configuration file if you haven't done so already, and make\n--- sure you [install any relevant platforms\n--- libraries](https://arduino.github.io/arduino-cli/latest/getting-started/#install-the-core-for-your-board).\n---\n--- The language server also requires `clangd` to be installed. Follow [these\n--- installation instructions](https://clangd.llvm.org/installation) for your\n--- platform.\n---\n--- If you don't have a sketch yet create one.\n---\n--- ```sh\n--- $ arduino-cli sketch new test\n--- $ cd test\n--- ```\n---\n--- You will need a `sketch.yaml` file in order for the language server to understand your project. It will also save you passing options to `arduino-cli` each time you compile or upload a file. You can generate the file by using the following commands.\n---\n---\n--- First gather some information about your board. Make sure your board is connected and run the following:\n---\n--- ```sh\n--- $ arduino-cli board list\n--- Port         Protocol Type              Board Name  FQBN            Core\n--- /dev/ttyACM0 serial   Serial Port (USB) Arduino Uno arduino:avr:uno arduino:avr\n--- ```\n---\n--- Then generate the file:\n---\n--- ```sh\n--- arduino-cli board attach -p /dev/ttyACM0 -b arduino:avr:uno test.ino\n--- ```\n---\n--- The resulting file should look like this:\n---\n--- ```yaml\n--- default_fqbn: arduino:avr:uno\n--- default_port: /dev/ttyACM0\n--- ```\n---\n--- Your folder structure should look like this:\n---\n--- ```\n--- .\n--- ├── test.ino\n--- └── sketch.yaml\n--- ```\n---\n--- For further instructions about configuration options, run `arduino-language-server --help`.\n---\n--- Note that an upstream bug makes keywords in some cases become undefined by the language server.\n--- Ref: https://github.com/arduino/arduino-ide/issues/159\n\nlocal util = require 'lspconfig.util'\n\n---@type vim.lsp.Config\nreturn {\n  filetypes = { 'arduino' },\n  root_dir = function(bufnr, on_dir)\n    local fname = vim.api.nvim_buf_get_name(bufnr)\n    on_dir(util.root_pattern('*.ino')(fname))\n  end,\n  cmd = {\n    'arduino-language-server',\n  },\n  capabilities = {\n    textDocument = {\n      ---@diagnostic disable-next-line: assign-type-mismatch\n      semanticTokens = vim.NIL,\n    },\n    workspace = {\n      ---@diagnostic disable-next-line: assign-type-mismatch\n      semanticTokens = vim.NIL,\n    },\n  },\n}\n"
  },
  {
    "path": "lsp/asm_lsp.lua",
    "content": "---@brief\n---\n--- https://github.com/bergercookie/asm-lsp\n---\n--- Language Server for NASM/GAS/GO Assembly\n---\n--- `asm-lsp` can be installed via cargo:\n--- cargo install asm-lsp\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'asm-lsp' },\n  filetypes = { 'asm', 'vmasm' },\n  root_markers = { '.asm-lsp.toml', '.git' },\n}\n"
  },
  {
    "path": "lsp/ast_grep.lua",
    "content": "---@brief\n---\n--- https://ast-grep.github.io/\n---\n--- ast-grep(sg) is a fast and polyglot tool for code structural search, lint, rewriting at large scale.\n--- ast-grep LSP only works in projects that have `sgconfig.y[a]ml` in their root directories.\n--- ```sh\n--- npm install [-g] @ast-grep/cli\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'ast-grep', 'lsp' },\n  workspace_required = true,\n  reuse_client = function(client, config)\n    config.cmd_cwd = config.root_dir\n    return client.config.cmd_cwd == config.cmd_cwd\n  end,\n  filetypes = { -- https://ast-grep.github.io/reference/languages.html\n    'bash',\n    'c',\n    'cpp',\n    'cs',\n    'css',\n    'elixir',\n    'go',\n    'haskell',\n    'html',\n    'java',\n    'javascript',\n    'javascriptreact',\n    'json',\n    'kotlin',\n    'lua',\n    'nix',\n    'php',\n    'python',\n    'ruby',\n    'rust',\n    'scala',\n    'solidity',\n    'swift',\n    'typescript',\n    'typescriptreact',\n    'yaml',\n  },\n  root_markers = { 'sgconfig.yaml', 'sgconfig.yml' },\n}\n"
  },
  {
    "path": "lsp/astro.lua",
    "content": "---@brief\n---\n--- https://github.com/withastro/language-tools/tree/main/packages/language-server\n---\n--- `astro-ls` can be installed via `npm`:\n--- ```sh\n--- npm install -g @astrojs/language-server\n--- ```\n---\n--- If typescript is installed globally, you might get the `\\`typescript.tsdk\\` init option is required` error.\n--- You will need to manually pass the typescript SDK path. Here is an example of a Nix configuration where typescript is installed via Nix's Home-manager:\n---\n--- ```nix\n--- { config, pkgs, ... }:\n---\n--- {\n---   home.packages = with pkgs; [\n---     typescript\n---   ];\n---\n---   programs.neovim = {\n---     plugins = with pkgs.vimPlugins; [\n---       nvim-lspconfig\n---     ];\n---     extraPackages = with pkgs; [\n---       astro-language-server\n---     ];\n---     initLua = ''\n---       vim.lsp.config['astro'] = {\n---         init_options = {\n---           typescript = {\n---             tsdk = ${pkgs.typescript}/lib/node_modules/typescript/lib,\n---           },\n---         },\n---       }\n---\n---       vim.lsp.enable('astro')\n---\n---       -- ...\n---     '';\n---   };\n--- }\n--- ```\n--- The path can also be passed via a variable, like `vim.g.tsdk = \"${pkgs.typescript}/lib/node_modules/typescript/lib\"` and then used in the Lua Neovim config.\n\nlocal util = require 'lspconfig.util'\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'astro-ls', '--stdio' },\n  filetypes = { 'astro' },\n  root_markers = { 'package.json', 'tsconfig.json', 'jsconfig.json', '.git' },\n  init_options = {\n    typescript = {},\n  },\n  before_init = function(_, config)\n    if config.init_options and config.init_options.typescript and not config.init_options.typescript.tsdk then\n      config.init_options.typescript.tsdk = util.get_typescript_server_path(config.root_dir)\n    end\n  end,\n}\n"
  },
  {
    "path": "lsp/atlas.lua",
    "content": "---@brief\n---\n--- https://github.com/ariga/atlas\n---\n--- Language server for Atlas config and schema files.\n---\n--- You may also need to configure the filetype for *.hcl files:\n---\n--- ```vim\n--- autocmd BufNewFile,BufRead atlas.hcl set filetype=atlas-config\n--- autocmd BufNewFile,BufRead *.my.hcl set filetype=atlas-schema-mysql\n--- autocmd BufNewFile,BufRead *.pg.hcl set filetype=atlas-schema-postgresql\n--- autocmd BufNewFile,BufRead *.lt.hcl set filetype=atlas-schema-sqlite\n--- autocmd BufNewFile,BufRead *.ch.hcl set filetype=atlas-schema-clickhouse\n--- autocmd BufNewFile,BufRead *.ms.hcl set filetype=atlas-schema-mssql\n--- autocmd BufNewFile,BufRead *.rs.hcl set filetype=atlas-schema-redshift\n--- autocmd BufNewFile,BufRead *.test.hcl set filetype=atlas-test\n--- autocmd BufNewFile,BufRead *.plan.hcl set filetype=atlas-plan\n--- autocmd BufNewFile,BufRead *.rule.hcl set filetype=atlas-rule\n--- ```\n---\n--- or\n---\n--- ```lua\n--- vim.filetype.add({\n---   filename = {\n---     ['atlas.hcl'] = 'atlas-config',\n---   },\n---   pattern = {\n---     ['.*/*.my.hcl'] = 'atlas-schema-mysql',\n---     ['.*/*.pg.hcl'] = 'atlas-schema-postgresql',\n---     ['.*/*.lt.hcl'] = 'atlas-schema-sqlite',\n---     ['.*/*.ch.hcl'] = 'atlas-schema-clickhouse',\n---     ['.*/*.ms.hcl'] = 'atlas-schema-mssql',\n---     ['.*/*.rs.hcl'] = 'atlas-schema-redshift',\n---     ['.*/*.test.hcl'] = 'atlas-test',\n---     ['.*/*.plan.hcl'] = 'atlas-plan',\n---     ['.*/*.rule.hcl'] = 'atlas-rule',\n---   },\n--- })\n--- ```\n---\n--- Optionally, tell treesitter to treat Atlas filetypes as HCL for better syntax highlighting:\n---\n--- ```lua\n--- vim.treesitter.language.register('hcl', 'atlas-config')\n--- vim.treesitter.language.register('hcl', 'atlas-schema-mysql')\n--- vim.treesitter.language.register('hcl', 'atlas-schema-postgresql')\n--- vim.treesitter.language.register('hcl', 'atlas-schema-sqlite')\n--- vim.treesitter.language.register('hcl', 'atlas-schema-clickhouse')\n--- vim.treesitter.language.register('hcl', 'atlas-schema-mssql')\n--- vim.treesitter.language.register('hcl', 'atlas-schema-redshift')\n--- vim.treesitter.language.register('hcl', 'atlas-test')\n--- vim.treesitter.language.register('hcl', 'atlas-plan')\n--- vim.treesitter.language.register('hcl', 'atlas-rule')\n--- ```\n---\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'atlas', 'tool', 'lsp', '--stdio' },\n  filetypes = {\n    'atlas-*',\n  },\n  root_markers = { 'atlas.hcl' },\n}\n"
  },
  {
    "path": "lsp/atopile.lua",
    "content": "---@brief\n---\n--- https://atopile.io/\n---\n--- A language server for atopile Programming Language.\n---\n--- It comes with the atopile compiler, for installation see: [Installing atopile](https://docs.atopile.io/atopile/guides/install)\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'ato', 'lsp', 'start' },\n  filetypes = { 'ato' },\n  root_markers = { 'ato.yaml', '.ato', '.git' },\n}\n"
  },
  {
    "path": "lsp/autohotkey_lsp.lua",
    "content": "---@brief\n---\n--- https://github.com/thqby/vscode-autohotkey2-lsp\n---\n--- AutoHotkey v2.0 LSP implementation\n---\n--- NOTE: AutoHotkey is Windows-only.\n\nlocal function get_autohotkey_path()\n  local path = vim.fn.exepath('autohotkey.exe')\n  return #path > 0 and path or ''\nend\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'autohotkey_lsp', '--stdio' },\n  filetypes = { 'autohotkey' },\n  root_markers = { 'package.json' },\n  ---@diagnostic disable-next-line: missing-fields\n  flags = { debounce_text_changes = 500 },\n  --capabilities = capabilities,\n  --on_attach = custom_attach,\n  init_options = {\n    locale = 'en-us',\n    InterpreterPath = get_autohotkey_path(),\n    AutoLibInclude = 'All',\n    CommentTags = '^;;\\\\s*(?<tag>.+)',\n    CompleteFunctionParens = false,\n    SymbolFoldinFromOpenBrace = false,\n    Diagnostics = {\n      ClassStaticMemberCheck = true,\n      ParamsCheck = true,\n    },\n    ActionWhenV1IsDetected = 'Continue',\n    FormatOptions = {\n      array_style = 'expand',\n      break_chained_methods = false,\n      ignore_comment = false,\n      indent_string = '\\t',\n      max_preserve_newlines = 2,\n      brace_style = 'One True Brace',\n      object_style = 'none',\n      preserve_newlines = true,\n      space_after_double_colon = true,\n      space_before_conditional = true,\n      space_in_empty_paren = false,\n      space_in_other = true,\n      space_in_paren = false,\n      wrap_line_length = 0,\n    },\n  },\n}\n"
  },
  {
    "path": "lsp/autotools_ls.lua",
    "content": "---@brief\n---\n--- https://github.com/Freed-Wu/autotools-language-server\n---\n--- `autotools-language-server` can be installed via `pip`:\n--- ```sh\n--- pip install autotools-language-server\n--- ```\n---\n--- Language server for autoconf, automake and make using tree sitter in python.\n\nlocal util = require 'lspconfig.util'\n\nlocal root_files = { 'configure.ac', 'Makefile', 'Makefile.am', '*.mk' }\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'autotools-language-server' },\n  filetypes = { 'config', 'automake', 'make' },\n  root_dir = function(bufnr, on_dir)\n    local fname = vim.api.nvim_buf_get_name(bufnr)\n    on_dir(util.root_pattern(unpack(root_files))(fname))\n  end,\n}\n"
  },
  {
    "path": "lsp/awk_ls.lua",
    "content": "---@brief\n---\n--- https://github.com/Beaglefoot/awk-language-server/\n---\n--- `awk-language-server` can be installed via `npm`:\n--- ```sh\n--- npm install -g awk-language-server\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'awk-language-server' },\n  filetypes = { 'awk' },\n}\n"
  },
  {
    "path": "lsp/azure_pipelines_ls.lua",
    "content": "---@brief\n---\n--- https://github.com/microsoft/azure-pipelines-language-server\n---\n--- An Azure Pipelines language server\n---\n--- `azure-pipelines-ls` can be installed via `npm`:\n---\n--- ```sh\n--- npm install -g azure-pipelines-language-server\n--- ```\n---\n--- By default `azure-pipelines-ls` will only work in files named `azure-pipelines.yml`, this can be changed by providing additional settings like so:\n--- ```lua\n--- vim.lsp.config('azure_pipelines_ls', {\n---   ... -- other configuration\n---   settings = {\n---       yaml = {\n---           schemas = {\n---               [\"https://raw.githubusercontent.com/microsoft/azure-pipelines-vscode/master/service-schema.json\"] = {\n---                   \"/azure-pipeline*.y*l\",\n---                   \"/*.azure*\",\n---                   \"Azure-Pipelines/**/*.y*l\",\n---                   \"Pipelines/*.y*l\",\n---               },\n---           },\n---       },\n---   },\n--- })\n--- ```\n--- The Azure Pipelines LSP is a fork of `yaml-language-server` and as such the same settings can be passed to it as `yaml-language-server`.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'azure-pipelines-language-server', '--stdio' },\n  filetypes = { 'yaml' },\n  root_markers = { 'azure-pipelines.yml' },\n  settings = {},\n}\n"
  },
  {
    "path": "lsp/bacon_ls.lua",
    "content": "---@brief\n---\n--- https://github.com/crisidev/bacon-ls\n---\n--- A Language Server Protocol wrapper for [bacon](https://dystroy.org/bacon/).\n--- It offers textDocument/diagnostic and workspace/diagnostic capabilities for Rust\n--- workspaces using the Bacon export locations file.\n---\n--- It requires `bacon` and `bacon-ls` to be installed on the system using\n--- [mason.nvim](https://github.com/williamboman/mason.nvim) or manually\n---\n--- ```sh\n--- $ cargo install --locked bacon bacon-ls\n--- ```\n---\n--- Settings can be changed using the `init_options` dictionary:util\n---\n--- ```lua\n--- init_options = {\n---     -- Bacon export filename (default: .bacon-locations).\n---     locationsFile = \".bacon-locations\",\n---     -- Try to update diagnostics every time the file is saved (default: true).\n---     updateOnSave = true,\n---     --  How many milliseconds to wait before updating diagnostics after a save (default: 1000).\n---     updateOnSaveWaitMillis = 1000,\n---     -- Try to update diagnostics every time the file changes (default: true).\n---     updateOnChange = true,\n---     -- Try to validate that bacon preferences are setup correctly to work with bacon-ls (default: true).\n---     validateBaconPreferences = true,\n---     -- f no bacon preferences file is found, create a new preferences file with the bacon-ls job definition (default: true).\n---     createBaconPreferencesFile = true,\n---     -- Run bacon in background for the bacon-ls job (default: true)\n---     runBaconInBackground = true,\n---     -- Command line arguments to pass to bacon running in background (default \"--headless -j bacon-ls\")\n---     runBaconInBackgroundCommandArguments = \"--headless -j bacon-ls\",\n---     -- How many milliseconds to wait between background diagnostics check to synchronize all open files (default: 2000).\n---     synchronizeAllOpenFilesWaitMillis = 2000,\n--- }\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'bacon-ls' },\n  filetypes = { 'rust' },\n  root_markers = { '.bacon-locations', 'Cargo.toml' },\n  init_options = {},\n}\n"
  },
  {
    "path": "lsp/ballerina.lua",
    "content": "---@brief\n---\n--- Ballerina language server\n---\n--- The Ballerina language's CLI tool comes with its own language server implementation.\n--- The `bal` command line tool must be installed and available in your system's PATH.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'bal', 'start-language-server' },\n  filetypes = { 'ballerina' },\n  root_markers = { 'Ballerina.toml' },\n}\n"
  },
  {
    "path": "lsp/basedpyright.lua",
    "content": "---@brief\n---\n--- https://detachhead.github.io/basedpyright\n---\n--- `basedpyright`, a static type checker and language server for python\n\nlocal function set_python_path(command)\n  local path = command.args\n  local clients = vim.lsp.get_clients {\n    bufnr = vim.api.nvim_get_current_buf(),\n    name = 'basedpyright',\n  }\n  for _, client in ipairs(clients) do\n    if client.settings then\n      ---@diagnostic disable-next-line: param-type-mismatch\n      client.settings.python = vim.tbl_deep_extend('force', client.settings.python or {}, { pythonPath = path })\n    else\n      client.config.settings = vim.tbl_deep_extend('force', client.config.settings, { python = { pythonPath = path } })\n    end\n    client:notify('workspace/didChangeConfiguration', { settings = nil })\n  end\nend\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'basedpyright-langserver', '--stdio' },\n  filetypes = { 'python' },\n  root_markers = {\n    'pyrightconfig.json',\n    'pyproject.toml',\n    'setup.py',\n    'setup.cfg',\n    'requirements.txt',\n    'Pipfile',\n    '.git',\n  },\n  ---@type lspconfig.settings.basedpyright\n  settings = {\n    basedpyright = {\n      analysis = {\n        autoSearchPaths = true,\n        diagnosticMode = 'openFilesOnly',\n        -- https://docs.basedpyright.com/latest/configuration/language-server-settings/\n        -- Explicitly setting `basedpyright.analysis.useLibraryCodeForTypes` is **discouraged** by the official docs.\n        -- Because it will override per-project configurations like `pyproject.toml`.\n        -- If left unset, its default value is `true`, and it can be correctly overridden by project config files.\n      },\n    },\n  },\n  on_attach = function(client, bufnr)\n    vim.api.nvim_buf_create_user_command(bufnr, 'LspPyrightOrganizeImports', function()\n      local params = {\n        command = 'basedpyright.organizeimports',\n        arguments = { vim.uri_from_bufnr(bufnr) },\n      }\n\n      -- Using client.request() directly because \"basedpyright.organizeimports\" is private\n      -- (not advertised via capabilities), which client:exec_cmd() refuses to call.\n      -- https://github.com/neovim/neovim/blob/c333d64663d3b6e0dd9aa440e433d346af4a3d81/runtime/lua/vim/lsp/client.lua#L1024-L1030\n      ---@diagnostic disable-next-line: param-type-mismatch\n      client.request('workspace/executeCommand', params, nil, bufnr)\n    end, {\n      desc = 'Organize Imports',\n    })\n\n    vim.api.nvim_buf_create_user_command(bufnr, 'LspPyrightSetPythonPath', set_python_path, {\n      desc = 'Reconfigure basedpyright with the provided python path',\n      nargs = 1,\n      complete = 'file',\n    })\n  end,\n}\n"
  },
  {
    "path": "lsp/bashls.lua",
    "content": "---@brief\n---\n--- https://github.com/bash-lsp/bash-language-server\n---\n--- `bash-language-server` can be installed via `npm`:\n--- ```sh\n--- npm i -g bash-language-server\n--- ```\n---\n--- Language server for bash, written using tree sitter in typescript.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'bash-language-server', 'start' },\n  ---@type lspconfig.settings.bashls\n  settings = {\n    bashIde = {\n      -- Glob pattern for finding and parsing shell script files in the workspace.\n      -- Used by the background analysis features across files.\n\n      -- Prevent recursive scanning which will cause issues when opening a file\n      -- directly in the home directory (e.g. ~/foo.sh).\n      --\n      -- Default upstream pattern is \"**/*@(.sh|.inc|.bash|.command)\".\n      globPattern = vim.env.GLOB_PATTERN or '*@(.sh|.inc|.bash|.command)',\n    },\n  },\n  filetypes = { 'bash', 'sh' },\n  root_markers = { '.git' },\n}\n"
  },
  {
    "path": "lsp/basics_ls.lua",
    "content": "---@brief\n---\n--- https://github.com/antonk52/basics-language-server/\n---\n--- Buffer, path, and snippet completion\n---\n--- ```sh\n--- npm install -g basics-language-server\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'basics-language-server' },\n  settings = {\n    buffer = {\n      enable = true,\n      minCompletionLength = 4,\n    },\n    path = {\n      enable = true,\n    },\n    snippet = {\n      enable = false,\n      sources = {},\n    },\n  },\n}\n"
  },
  {
    "path": "lsp/bazelrc_lsp.lua",
    "content": "---@brief\n---\n--- https://github.com/salesforce-misc/bazelrc-lsp\n---\n--- `bazelrc-lsp` is a LSP for `.bazelrc` configuration files.\n---\n--- The `.bazelrc` file type is not detected automatically, you can register it manually (see below) or override the filetypes:\n---\n--- ```lua\n--- vim.filetype.add {\n---   pattern = {\n---     ['.*.bazelrc'] = 'bazelrc',\n---   },\n--- }\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'bazelrc-lsp', 'lsp' },\n  filetypes = { 'bazelrc' },\n  root_markers = { 'WORKSPACE', 'WORKSPACE.bazel', 'MODULE.bazel' },\n}\n"
  },
  {
    "path": "lsp/beancount.lua",
    "content": "---@brief\n---\n--- https://github.com/polarmutex/beancount-language-server#installation\n---\n--- See https://github.com/polarmutex/beancount-language-server#configuration for configuration options\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'beancount-language-server', '--stdio' },\n  filetypes = { 'beancount', 'bean' },\n  root_markers = { '.git' },\n  init_options = {},\n}\n"
  },
  {
    "path": "lsp/bicep.lua",
    "content": "---@brief\n---\n--- https://github.com/azure/bicep\n--- Bicep language server\n---\n--- Bicep language server can be installed by downloading and extracting a release of bicep-langserver.zip from [Bicep GitHub releases](https://github.com/Azure/bicep/releases).\n---\n--- Bicep language server requires the [dotnet-sdk](https://dotnet.microsoft.com/download) to be installed.\n---\n--- Neovim does not have built-in support for the bicep filetype which is required for lspconfig to automatically launch the language server.\n---\n--- Filetype detection can be added via an autocmd:\n--- ```lua\n--- vim.cmd [[ autocmd BufNewFile,BufRead *.bicep set filetype=bicep ]]\n--- ```\n---\n--- **By default, bicep language server does not have a `cmd` set.** This is because nvim-lspconfig does not make assumptions about your path. You must add the following to your init.vim or init.lua to set `cmd` to the absolute path ($HOME and ~ are not expanded) of the unzipped run script or binary.\n---\n--- ```lua\n--- local bicep_lsp_bin = \"/path/to/bicep-langserver/Bicep.LangServer.dll\"\n--- vim.lsp.config('bicep', {\n---     cmd = { \"dotnet\", bicep_lsp_bin };\n---     ...\n--- })\n--- ```\n---\n--- To download the latest release and place in /usr/local/bin/bicep-langserver:\n--- ```bash\n--- (cd $(mktemp -d) \\\n---     && curl -fLO https://github.com/Azure/bicep/releases/latest/download/bicep-langserver.zip \\\n---     && rm -rf /usr/local/bin/bicep-langserver \\\n---     && unzip -d /usr/local/bin/bicep-langserver bicep-langserver.zip)\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  filetypes = { 'bicep', 'bicep-params' },\n  root_markers = { '.git' },\n  init_options = {},\n}\n"
  },
  {
    "path": "lsp/biome.lua",
    "content": "---@brief\n--- https://biomejs.dev\n---\n--- Toolchain of the web. [Successor of Rome](https://biomejs.dev/blog/annoucing-biome).\n---\n--- ```sh\n--- npm install [-g] @biomejs/biome\n--- ```\n---\n--- ### Monorepo support\n---\n--- `biome` supports monorepos by default. It will automatically find the `biome.json` corresponding to the package you are working on, as described in the [documentation](https://biomejs.dev/guides/big-projects/#monorepo). This works without the need of spawning multiple instances of `biome`, saving memory.\n\nlocal util = require 'lspconfig.util'\n\n---@type vim.lsp.Config\nreturn {\n  cmd = function(dispatchers, config)\n    local cmd = 'biome'\n    local local_cmd = (config or {}).root_dir and config.root_dir .. '/node_modules/.bin/biome'\n    if local_cmd and vim.fn.executable(local_cmd) == 1 then\n      cmd = local_cmd\n    end\n    return vim.lsp.rpc.start({ cmd, 'lsp-proxy' }, dispatchers)\n  end,\n  filetypes = {\n    'astro',\n    'css',\n    'graphql',\n    'html',\n    'javascript',\n    'javascriptreact',\n    'json',\n    'jsonc',\n    'svelte',\n    'typescript',\n    'typescriptreact',\n    'vue',\n  },\n  workspace_required = true,\n  root_dir = function(bufnr, on_dir)\n    -- The project root is where the LSP can be started from\n    -- As stated in the documentation above, this LSP supports monorepos and simple projects.\n    -- We select then from the project root, which is identified by the presence of a package\n    -- manager lock file.\n    local root_markers = {\n      'package-lock.json',\n      'yarn.lock',\n      'pnpm-lock.yaml',\n      'bun.lockb',\n      'bun.lock',\n      'deno.lock',\n    }\n    -- Give the root markers equal priority by wrapping them in a table\n    root_markers = vim.fn.has('nvim-0.11.3') == 1 and { root_markers, { '.git' } }\n      or vim.list_extend(root_markers, { '.git' })\n\n    -- We fallback to the current working directory if no project root is found\n    local project_root = vim.fs.root(bufnr, root_markers) or vim.fn.getcwd()\n\n    -- We know that the buffer is using Biome if it has a config file\n    -- in its directory tree.\n    local filename = vim.api.nvim_buf_get_name(bufnr)\n    local biome_config_files = { 'biome.json', 'biome.jsonc' }\n    biome_config_files = util.insert_package_json(biome_config_files, 'biomejs', filename)\n    local is_buffer_using_biome = vim.fs.find(biome_config_files, {\n      path = filename,\n      type = 'file',\n      limit = 1,\n      upward = true,\n      stop = vim.fs.dirname(project_root),\n    })[1]\n    if not is_buffer_using_biome then\n      return\n    end\n\n    on_dir(project_root)\n  end,\n}\n"
  },
  {
    "path": "lsp/bitbake_language_server.lua",
    "content": "---@brief\n---\n--- https://github.com/Freed-Wu/bitbake-language-server\n---\n--- `bitbake-language-server` can be installed via `pip`:\n--- ```sh\n--- pip install bitbake-language-server\n--- ```\n---\n--- Language server for bitbake.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'bitbake-language-server' },\n  filetypes = { 'bitbake' },\n  root_markers = { '.git' },\n}\n"
  },
  {
    "path": "lsp/blueprint_ls.lua",
    "content": "---@brief\n---\n--- https://gitlab.gnome.org/jwestman/blueprint-compiler\n---\n--- `blueprint-compiler` can be installed via your system package manager.\n---\n--- Language server for the blueprint markup language, written in python and part\n--- of the blueprint-compiler.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'blueprint-compiler', 'lsp' },\n  cmd_env = {\n    -- Prevent recursive scanning which will cause issues when opening a file\n    -- directly in the home directory (e.g. ~/foo.sh).\n    --\n    -- Default upstream pattern is \"**/*@(.sh|.inc|.bash|.command)\".\n    GLOB_PATTERN = vim.env.GLOB_PATTERN or '*@(.blp)',\n  },\n  filetypes = { 'blueprint' },\n  root_markers = { '.git' },\n}\n"
  },
  {
    "path": "lsp/bqls.lua",
    "content": "---@brief\n---\n--- https://github.com/kitagry/bqls\n---\n--- The `bqls` BigQuery language server can be installed by running:\n---\n--- ```sh\n--- $ go install github.com/kitagry/bqls@latest\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'bqls' },\n  filetypes = { 'sql' },\n  root_markers = { '.git' },\n  settings = {},\n}\n"
  },
  {
    "path": "lsp/bright_script.lua",
    "content": "---@brief\n---\n--- https://github.com/RokuCommunity/brighterscript\n---\n--- `brightscript` can be installed via `npm`:\n--- ```sh\n--- npm install -g brighterscript\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'bsc', '--lsp', '--stdio' },\n  filetypes = { 'brs' },\n  root_markers = { 'makefile', 'Makefile', '.git' },\n}\n"
  },
  {
    "path": "lsp/brioche.lua",
    "content": "---@brief\n---\n--- https://github.com/brioche-dev/brioche\n---\n--- `Brioche Language Server`.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'brioche', 'lsp' },\n  filetypes = { 'brioche' },\n  root_markers = { 'project.bri' },\n}\n"
  },
  {
    "path": "lsp/bsl_ls.lua",
    "content": "---@brief\n---\n--- https://github.com/1c-syntax/bsl-language-server\n---\n--- Language Server Protocol implementation for 1C (BSL) - 1C:Enterprise 8 and OneScript languages.\n\n---@type vim.lsp.Config\nreturn {\n  filetypes = { 'bsl', 'os' },\n  root_markers = { '.git' },\n}\n"
  },
  {
    "path": "lsp/buck2.lua",
    "content": "---@brief\n---\n--- https://github.com/facebook/buck2\n---\n--- Build system, successor to Buck\n---\n--- To better detect Buck2 project files, the following can be added:\n---\n--- ```\n--- vim.cmd [[ autocmd BufRead,BufNewFile *.bxl,BUCK,TARGETS set filetype=bzl ]]\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'buck2', 'lsp' },\n  filetypes = { 'bzl' },\n  root_markers = { '.buckconfig' },\n}\n"
  },
  {
    "path": "lsp/buddy_ls.lua",
    "content": "---@brief\n---\n--- https://github.com/buddy-compiler/buddy-mlir#buddy-lsp-server\n--- The Language Server for the buddy-mlir, a drop-in replacement for mlir-lsp-server,\n--- supporting new dialects defined in buddy-mlir.\n--- `buddy-lsp-server` can be installed at the buddy-mlir repository (buddy-compiler/buddy-mlir)\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'buddy-lsp-server' },\n  filetypes = { 'mlir' },\n  root_markers = { '.git' },\n}\n"
  },
  {
    "path": "lsp/buf_ls.lua",
    "content": "--- @brief\n--- https://github.com/bufbuild/buf\n---\n--- buf lsp included in the cli itself\n---\n--- buf lsp is a Protobuf language server compatible with Buf modules and workspaces\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'buf', 'lsp', 'serve', '--log-format=text' },\n  filetypes = { 'proto' },\n  root_markers = { 'buf.yaml', '.git' },\n  reuse_client = function(client, config)\n    -- `buf lsp serve` is meant to be used with multiple workspaces.\n    return client.name == config.name\n  end,\n}\n"
  },
  {
    "path": "lsp/bzl.lua",
    "content": "---@brief\n---\n--- https://bzl.io/\n---\n--- https://docs.stack.build/docs/cli/installation\n---\n--- https://docs.stack.build/docs/vscode/starlark-language-server\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'bzl', 'lsp', 'serve' },\n  filetypes = { 'bzl' },\n  -- https://docs.bazel.build/versions/5.4.1/build-ref.html#workspace\n  root_markers = { 'WORKSPACE', 'WORKSPACE.bazel' },\n}\n"
  },
  {
    "path": "lsp/c3_lsp.lua",
    "content": "---@brief\n---\n--- https://github.com/pherrymason/c3-lsp\n---\n--- Language Server for c3.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'c3lsp' },\n  root_markers = { 'project.json', 'manifest.json', '.git' },\n  filetypes = { 'c3', 'c3i' },\n}\n"
  },
  {
    "path": "lsp/cairo_ls.lua",
    "content": "---@brief\n---\n--- [Cairo Language Server](https://github.com/starkware-libs/cairo/tree/main/crates/cairo-lang-language-server)\n---\n--- First, install Cairo following [this tutorial](https://book.cairo-lang.org/ch01-01-installation.html)\n---\n--- Then enable Cairo Language Server in your Lua configuration.\n--- ```lua\n--- vim.lsp.enable('cairo_ls')\n--- ```\n---\n--- *cairo-language-server is still under active development, some features might not work yet !*\n\n---@type vim.lsp.Config\nreturn {\n  init_options = { hostInfo = 'neovim' },\n  cmd = { 'scarb', 'cairo-language-server', '/C', '--node-ipc' },\n  filetypes = { 'cairo' },\n  root_markers = { 'Scarb.toml', 'cairo_project.toml', '.git' },\n}\n"
  },
  {
    "path": "lsp/ccls.lua",
    "content": "---@brief\n---\n--- https://github.com/MaskRay/ccls/wiki\n---\n--- ccls relies on a [JSON compilation database](https://clang.llvm.org/docs/JSONCompilationDatabase.html) specified\n--- as compile_commands.json or, for simpler projects, a .ccls.\n--- For details on how to automatically generate one using CMake look [here](https://cmake.org/cmake/help/latest/variable/CMAKE_EXPORT_COMPILE_COMMANDS.html). Alternatively, you can use [Bear](https://github.com/rizsotto/Bear).\n---\n--- Customization options are passed to ccls at initialization time via init_options, a list of available options can be found [here](https://github.com/MaskRay/ccls/wiki/Customization#initialization-options). For example:\n---\n--- ```lua\n--- vim.lsp.config(\"ccls\", {\n---   init_options = {\n---     compilationDatabaseDirectory = \"build\";\n---     index = {\n---       threads = 0;\n---     };\n---     clang = {\n---       excludeArgs = { \"-frounding-math\"} ;\n---     };\n---   }\n--- })\n--- ```\n\nlocal function switch_source_header(client, bufnr)\n  local method_name = 'textDocument/switchSourceHeader'\n  local params = vim.lsp.util.make_text_document_params(bufnr)\n  client:request(method_name, params, function(err, result)\n    if err then\n      error(tostring(err))\n    end\n    if not result then\n      vim.notify('corresponding file cannot be determined')\n      return\n    end\n    vim.cmd.edit(vim.uri_to_fname(result))\n  end, bufnr)\nend\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'ccls' },\n  filetypes = { 'c', 'cpp', 'objc', 'objcpp', 'cuda' },\n  root_markers = { 'compile_commands.json', '.ccls', '.git' },\n  offset_encoding = 'utf-32',\n  -- ccls does not support sending a null root directory\n  workspace_required = true,\n  on_attach = function(client, bufnr)\n    vim.api.nvim_buf_create_user_command(bufnr, 'LspCclsSwitchSourceHeader', function()\n      switch_source_header(client, bufnr)\n    end, { desc = 'Switch between source/header' })\n  end,\n}\n"
  },
  {
    "path": "lsp/cds_lsp.lua",
    "content": "---@brief\n---\n--- https://cap.cloud.sap/docs/\n---\n--- `cds-lsp` can be installed via `npm`:\n---\n--- ```sh\n--- npm i -g @sap/cds-lsp\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'cds-lsp', '--stdio' },\n  filetypes = { 'cds' },\n  -- init_options = { provideFormatter = true }, -- needed to enable formatting capabilities\n  root_markers = { 'package.json', 'db', 'srv' },\n  settings = {\n    cds = { validate = true },\n  },\n}\n"
  },
  {
    "path": "lsp/cir_lsp_server.lua",
    "content": "---@brief\n---\n--- https://llvm.github.io/clangir\n---\n--- The Language Server for the LLVM ClangIR language\n---\n--- `cir-lsp-server` can be installed at the llvm-project repository (https://github.com/llvm/llvm-project)\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'cir-lsp-server' },\n  filetypes = { 'cir' },\n  root_markers = { '.git' },\n}\n"
  },
  {
    "path": "lsp/circom-lsp.lua",
    "content": "---@brief\n---\n--- [Circom Language Server](https://github.com/rubydusa/circom-lsp)\n---\n--- `circom-lsp`, the language server for the Circom language.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'circom-lsp' },\n  filetypes = { 'circom' },\n  root_markers = { '.git' },\n}\n"
  },
  {
    "path": "lsp/clangd.lua",
    "content": "---@brief\n---\n--- https://clangd.llvm.org/installation.html\n---\n--- - **NOTE:** Clang >= 11 is recommended! See [#23](https://github.com/neovim/nvim-lspconfig/issues/23).\n--- - If `compile_commands.json` lives in a build directory, you should\n---   symlink it to the root of your source tree.\n---   ```\n---   ln -s /path/to/myproject/build/compile_commands.json /path/to/myproject/\n---   ```\n--- - clangd relies on a [JSON compilation database](https://clang.llvm.org/docs/JSONCompilationDatabase.html)\n---   specified as compile_commands.json, see https://clangd.llvm.org/installation#compile_commandsjson\n\n-- https://clangd.llvm.org/extensions.html#switch-between-sourceheader\nlocal function switch_source_header(bufnr, client)\n  local method_name = 'textDocument/switchSourceHeader'\n  ---@diagnostic disable-next-line:param-type-mismatch\n  if not client or not client:supports_method(method_name) then\n    return vim.notify(('method %s is not supported by any servers active on the current buffer'):format(method_name))\n  end\n  local params = vim.lsp.util.make_text_document_params(bufnr)\n  ---@diagnostic disable-next-line:param-type-mismatch\n  client:request(method_name, params, function(err, result)\n    if err then\n      error(tostring(err))\n    end\n    if not result then\n      vim.notify('corresponding file cannot be determined')\n      return\n    end\n    vim.cmd.edit(vim.uri_to_fname(result))\n  end, bufnr)\nend\n\nlocal function symbol_info(bufnr, client)\n  local method_name = 'textDocument/symbolInfo'\n  ---@diagnostic disable-next-line:param-type-mismatch\n  if not client or not client:supports_method(method_name) then\n    return vim.notify('Clangd client not found', vim.log.levels.ERROR)\n  end\n  local win = vim.api.nvim_get_current_win()\n  local params = vim.lsp.util.make_position_params(win, client.offset_encoding)\n  ---@diagnostic disable-next-line:param-type-mismatch\n  client:request(method_name, params, function(err, res)\n    if err or #res == 0 then\n      -- Clangd always returns an error, there is no reason to parse it\n      return\n    end\n    local container = string.format('container: %s', res[1].containerName) ---@type string\n    local name = string.format('name: %s', res[1].name) ---@type string\n    vim.lsp.util.open_floating_preview({ name, container }, '', {\n      height = 2,\n      width = math.max(string.len(name), string.len(container)),\n      focusable = false,\n      focus = false,\n      title = 'Symbol Info',\n    })\n  end, bufnr)\nend\n\n---@class ClangdInitializeResult: lsp.InitializeResult\n---@field offsetEncoding? string\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'clangd' },\n  filetypes = { 'c', 'cpp', 'objc', 'objcpp', 'cuda' },\n  root_markers = {\n    '.clangd',\n    '.clang-tidy',\n    '.clang-format',\n    'compile_commands.json',\n    'compile_flags.txt',\n    'configure.ac', -- AutoTools\n    '.git',\n  },\n  get_language_id = function(_, ftype)\n    local t = { objc = 'objective-c', objcpp = 'objective-cpp', cuda = 'cuda-cpp' }\n    return t[ftype] or ftype\n  end,\n  capabilities = {\n    textDocument = {\n      completion = {\n        editsNearCursor = true,\n      },\n    },\n    offsetEncoding = { 'utf-8', 'utf-16' },\n  },\n  ---@param init_result ClangdInitializeResult\n  on_init = function(client, init_result)\n    if init_result.offsetEncoding then\n      client.offset_encoding = init_result.offsetEncoding\n    end\n  end,\n  on_attach = function(client, bufnr)\n    vim.api.nvim_buf_create_user_command(bufnr, 'LspClangdSwitchSourceHeader', function()\n      switch_source_header(bufnr, client)\n    end, { desc = 'Switch between source/header' })\n\n    vim.api.nvim_buf_create_user_command(bufnr, 'LspClangdShowSymbolInfo', function()\n      symbol_info(bufnr, client)\n    end, { desc = 'Show symbol info' })\n  end,\n}\n"
  },
  {
    "path": "lsp/clarinet.lua",
    "content": "---@brief\n--- https://github.com/hirosystems/clarinet\n---\n--- Clarinet is the fastest way to build, test, and deploy smart contracts on the Stacks blockchain.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'clarinet', 'lsp' },\n  filetypes = { 'clar', 'clarity' },\n  root_markers = { 'Clarinet.toml' },\n}\n"
  },
  {
    "path": "lsp/clojure_lsp.lua",
    "content": "---@brief\n---\n--- https://github.com/clojure-lsp/clojure-lsp\n---\n--- Clojure Language Server\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'clojure-lsp' },\n  filetypes = { 'clojure', 'edn' },\n  root_markers = { 'project.clj', 'deps.edn', 'build.boot', 'shadow-cljs.edn', '.git', 'bb.edn' },\n}\n"
  },
  {
    "path": "lsp/cmake.lua",
    "content": "---@brief\n---\n--- https://github.com/regen100/cmake-language-server\n---\n--- CMake LSP Implementation\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'cmake-language-server' },\n  filetypes = { 'cmake' },\n  root_markers = { 'CMakePresets.json', 'CTestConfig.cmake', '.git', 'build', 'cmake' },\n  init_options = {\n    buildDirectory = 'build',\n  },\n}\n"
  },
  {
    "path": "lsp/cobol_ls.lua",
    "content": "---@brief\n---\n--- Cobol language support\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'cobol-language-support' },\n  filetypes = { 'cobol' },\n  root_markers = { '.git' },\n}\n"
  },
  {
    "path": "lsp/codebook.lua",
    "content": "---@brief\n---\n--- https://github.com/blopker/codebook\n---\n---  An unholy spell checker for code.\n---\n--- `codebook-lsp` can be installed by following the instructions [here](https://github.com/blopker/codebook/blob/main/README.md#installation).\n---\n--- The default `cmd` assumes that the `codebook-lsp` binary can be found in `$PATH`.\n---\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'codebook-lsp', 'serve' },\n  filetypes = {\n    'c',\n    'css',\n    'gitcommit',\n    'go',\n    'haskell',\n    'html',\n    'java',\n    'javascript',\n    'javascriptreact',\n    'lua',\n    'markdown',\n    'php',\n    'python',\n    'ruby',\n    'rust',\n    'swift',\n    'toml',\n    'text',\n    'typescript',\n    'typescriptreact',\n    'zig',\n  },\n  root_markers = { '.git', 'codebook.toml', '.codebook.toml' },\n}\n"
  },
  {
    "path": "lsp/coffeesense.lua",
    "content": "---@brief\n---\n--- https://github.com/phil294/coffeesense\n---\n--- CoffeeSense Language Server\n--- `coffeesense-language-server` can be installed via `npm`:\n--- ```sh\n--- npm install -g coffeesense-language-server\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'coffeesense-language-server', '--stdio' },\n  filetypes = { 'coffee' },\n  root_markers = { 'package.json' },\n}\n"
  },
  {
    "path": "lsp/contextive.lua",
    "content": "---@brief\n---\n--- https://github.com/dev-cycles/contextive\n---\n--- Language Server for Contextive.\n---\n--- Contextive allows you to define terms in a central file and provides auto-completion suggestions and hover panels for these terms wherever they're used.\n---\n--- To install the language server, you need to download the appropriate [GitHub release asset](https://github.com/dev-cycles/contextive/releases/) for your operating system and architecture.\n---\n--- After the download unzip the Contextive.LanguageServer binary and copy the file into a folder that is included in your system's PATH.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'Contextive.LanguageServer' },\n  root_markers = { '.contextive', '.git' },\n}\n"
  },
  {
    "path": "lsp/copilot.lua",
    "content": "---@brief\n---\n--- https://www.npmjs.com/package/@github/copilot-language-server\n---\n--- The Copilot Language Server enables any editor or IDE\n--- to integrate with GitHub Copilot via\n--- [the language server protocol](https://microsoft.github.io/language-server-protocol/).\n---\n--- **[GitHub Copilot](https://github.com/features/copilot)**\n--- is an AI pair programmer tool that helps you write code faster and smarter.\n---\n--- **Sign up for [GitHub Copilot Free](https://github.com/settings/copilot)!**\n---\n--- Please see [terms of use for GitHub Copilot](https://docs.github.com/en/site-policy/github-terms/github-terms-for-additional-products-and-features#github-copilot)\n---\n--- You need to enable `:help lsp-inline-completion` to receive suggestions. For example, you can enable it in the LspAttach event:\n---\n--- ```lua\n--- vim.api.nvim_create_autocmd('LspAttach', {\n---   callback = function(args)\n---     local bufnr = args.buf\n---     local client = assert(vim.lsp.get_client_by_id(args.data.client_id))\n---\n---     if client:supports_method(vim.lsp.protocol.Methods.textDocument_inlineCompletion, bufnr) then\n---       vim.lsp.inline_completion.enable(true, { bufnr = bufnr })\n---\n---       vim.keymap.set(\n---         'i',\n---         '<C-F>',\n---         vim.lsp.inline_completion.get,\n---         { desc = 'LSP: accept inline completion', buffer = bufnr }\n---       )\n---       vim.keymap.set(\n---         'i',\n---         '<C-G>',\n---         vim.lsp.inline_completion.select,\n---         { desc = 'LSP: switch inline completion', buffer = bufnr }\n---       )\n---     end\n---   end\n--- })\n--- ```\n\n---@param bufnr integer,\n---@param client vim.lsp.Client\nlocal function sign_in(bufnr, client)\n  client:request(\n    ---@diagnostic disable-next-line: param-type-mismatch\n    'signIn',\n    vim.empty_dict(),\n    function(err, result)\n      if err then\n        vim.notify(err.message, vim.log.levels.ERROR)\n        return\n      end\n      if result.command then\n        local code = result.userCode\n        local command = result.command\n        vim.fn.setreg('+', code)\n        vim.fn.setreg('*', code)\n        local continue = vim.fn.confirm(\n          'Copied your one-time code to clipboard.\\n' .. 'Open the browser to complete the sign-in process?',\n          '&Yes\\n&No'\n        )\n        if continue == 1 then\n          client:exec_cmd(command, { bufnr = bufnr }, function(cmd_err, cmd_result)\n            if cmd_err then\n              vim.notify(cmd_err.message, vim.log.levels.ERROR)\n              return\n            end\n            if cmd_result.status == 'OK' then\n              vim.notify('Signed in as ' .. cmd_result.user .. '.')\n            end\n          end)\n        end\n      end\n\n      if result.status == 'PromptUserDeviceFlow' then\n        vim.notify('Enter your one-time code ' .. result.userCode .. ' in ' .. result.verificationUri)\n      elseif result.status == 'AlreadySignedIn' then\n        vim.notify('Already signed in as ' .. result.user .. '.')\n      end\n    end\n  )\nend\n\n---@param client vim.lsp.Client\nlocal function sign_out(_, client)\n  client:request(\n    ---@diagnostic disable-next-line: param-type-mismatch\n    'signOut',\n    vim.empty_dict(),\n    function(err, result)\n      if err then\n        vim.notify(err.message, vim.log.levels.ERROR)\n        return\n      end\n      if result.status == 'NotSignedIn' then\n        vim.notify('Not signed in.')\n      end\n    end\n  )\nend\n\n---@type vim.lsp.Config\nreturn {\n  cmd = {\n    'copilot-language-server',\n    '--stdio',\n  },\n  root_markers = { '.git' },\n  init_options = {\n    editorInfo = {\n      name = 'Neovim',\n      version = tostring(vim.version()),\n    },\n    editorPluginInfo = {\n      name = 'Neovim',\n      version = tostring(vim.version()),\n    },\n  },\n  settings = {\n    telemetry = {\n      telemetryLevel = 'all',\n    },\n  },\n  on_attach = function(client, bufnr)\n    vim.api.nvim_buf_create_user_command(bufnr, 'LspCopilotSignIn', function()\n      sign_in(bufnr, client)\n    end, { desc = 'Sign in Copilot with GitHub' })\n    vim.api.nvim_buf_create_user_command(bufnr, 'LspCopilotSignOut', function()\n      sign_out(bufnr, client)\n    end, { desc = 'Sign out Copilot with GitHub' })\n  end,\n}\n"
  },
  {
    "path": "lsp/coq_lsp.lua",
    "content": "---@brief\n---\n--- https://github.com/ejgallego/coq-lsp/\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'coq-lsp' },\n  filetypes = { 'coq' },\n  root_markers = { '_CoqProject', '.git' },\n}\n"
  },
  {
    "path": "lsp/crystalline.lua",
    "content": "---@brief\n---\n--- https://github.com/elbywan/crystalline\n---\n--- Crystal language server.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'crystalline' },\n  filetypes = { 'crystal' },\n  root_markers = { 'shard.yml', '.git' },\n}\n"
  },
  {
    "path": "lsp/csharp_ls.lua",
    "content": "---@brief\n---\n--- https://github.com/razzmatazz/csharp-language-server\n---\n--- Language Server for C#.\n---\n--- csharp-ls requires the [dotnet-sdk](https://dotnet.microsoft.com/download) to be installed.\n---\n--- The preferred way to install csharp-ls is with `dotnet tool install --global csharp-ls`.\n\nlocal util = require 'lspconfig.util'\n\n---@type vim.lsp.Config\nreturn {\n  cmd = function(dispatchers, config)\n    return vim.lsp.rpc.start({ 'csharp-ls' }, dispatchers, {\n      -- csharp-ls attempt to locate sln, slnx or csproj files from cwd, so set cwd to root directory.\n      -- If cmd_cwd is provided, use it instead.\n      cwd = config.cmd_cwd or config.root_dir,\n      env = config.cmd_env,\n      detached = config.detached,\n    })\n  end,\n  root_dir = function(bufnr, on_dir)\n    local fname = vim.api.nvim_buf_get_name(bufnr)\n    on_dir(util.root_pattern '*.sln'(fname) or util.root_pattern '*.slnx'(fname) or util.root_pattern '*.csproj'(fname))\n  end,\n  filetypes = { 'cs' },\n  init_options = {\n    AutomaticWorkspaceInit = true,\n  },\n  get_language_id = function(_, ft)\n    if ft == 'cs' then\n      return 'csharp'\n    end\n    return ft\n  end,\n}\n"
  },
  {
    "path": "lsp/cspell_ls.lua",
    "content": "---@brief\n---\n--- [cspell language server](https://github.com/vlabo/cspell-lsp)\n---\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'cspell-lsp', '--stdio' },\n  root_markers = {\n    '.git',\n    'cspell.json',\n    '.cspell.json',\n    'cspell.json',\n    '.cSpell.json',\n    'cSpell.json',\n    'cspell.config.js',\n    'cspell.config.cjs',\n    'cspell.config.json',\n    'cspell.config.yaml',\n    'cspell.config.yml',\n    'cspell.yaml',\n    'cspell.yml',\n  },\n}\n"
  },
  {
    "path": "lsp/css_variables.lua",
    "content": "---@brief\n---\n--- https://github.com/vunguyentuan/vscode-css-variables/tree/master/packages/css-variables-language-server\n---\n--- CSS variables autocompletion and go-to-definition\n---\n--- `css-variables-language-server` can be installed via `npm`:\n---\n--- ```sh\n--- npm i -g css-variables-language-server\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'css-variables-language-server', '--stdio' },\n  filetypes = { 'css', 'scss', 'less' },\n\n  -- Taken from lsp/ts_ls.lua to handle simple projects and monorepos.\n  root_dir = function(bufnr, on_dir)\n    local root_markers = { 'package-lock.json', 'yarn.lock', 'pnpm-lock.yaml', 'bun.lockb', 'bun.lock' }\n    -- Give the root markers equal priority by wrapping them in a table\n    root_markers = vim.fn.has 'nvim-0.11.3' == 1 and { root_markers, { '.git' } }\n      or vim.list_extend(root_markers, { '.git' })\n    -- We fallback to the current working directory if no project root is found\n    local project_root = vim.fs.root(bufnr, root_markers) or vim.fn.getcwd()\n\n    on_dir(project_root)\n  end,\n\n  -- Same as inlined defaults that don't seem to work without hardcoding them in the lua config\n  -- https://github.com/vunguyentuan/vscode-css-variables/blob/763a564df763f17aceb5f3d6070e0b444a2f47ff/packages/css-variables-language-server/src/CSSVariableManager.ts#L31-L50\n  settings = {\n    cssVariables = {\n      lookupFiles = { '**/*.less', '**/*.scss', '**/*.sass', '**/*.css' },\n      blacklistFolders = {\n        '**/.cache',\n        '**/.DS_Store',\n        '**/.git',\n        '**/.hg',\n        '**/.next',\n        '**/.svn',\n        '**/bower_components',\n        '**/CVS',\n        '**/dist',\n        '**/node_modules',\n        '**/tests',\n        '**/tmp',\n      },\n    },\n  },\n}\n"
  },
  {
    "path": "lsp/cssls.lua",
    "content": "---@brief\n---\n--- https://github.com/hrsh7th/vscode-langservers-extracted\n---\n--- `css-languageserver` can be installed via `npm`:\n---\n--- ```sh\n--- npm i -g vscode-langservers-extracted\n--- ```\n---\n--- Neovim does not currently include built-in snippets. `vscode-css-language-server` only provides completions when snippet support is enabled. To enable completion, install a snippet plugin and add the following override to your language client capabilities during setup.\n---\n--- ```lua\n--- --Enable (broadcasting) snippet capability for completion\n--- local capabilities = vim.lsp.protocol.make_client_capabilities()\n--- capabilities.textDocument.completion.completionItem.snippetSupport = true\n---\n--- vim.lsp.config('cssls', {\n---   capabilities = capabilities,\n--- })\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'vscode-css-language-server', '--stdio' },\n  filetypes = { 'css', 'scss', 'less' },\n  init_options = { provideFormatter = true }, -- needed to enable formatting capabilities\n  root_markers = { 'package.json', '.git' },\n  ---@type lspconfig.settings.cssls\n  settings = {\n    css = { validate = true },\n    scss = { validate = true },\n    less = { validate = true },\n  },\n}\n"
  },
  {
    "path": "lsp/cssmodules_ls.lua",
    "content": "---@brief\n---\n--- https://github.com/antonk52/cssmodules-language-server\n---\n--- Language server for autocompletion and go-to-definition functionality for CSS modules.\n---\n--- You can install cssmodules-language-server via npm:\n--- ```sh\n--- npm install -g cssmodules-language-server\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'cssmodules-language-server' },\n  filetypes = { 'javascript', 'javascriptreact', 'typescript', 'typescriptreact' },\n  root_markers = { 'package.json' },\n}\n"
  },
  {
    "path": "lsp/cucumber_language_server.lua",
    "content": "---@brief\n---\n--- https://cucumber.io\n--- https://github.com/cucumber/common\n--- https://www.npmjs.com/package/@cucumber/language-server\n---\n--- Language server for Cucumber.\n---\n--- `cucumber-language-server` can be installed via `npm`:\n--- ```sh\n--- npm install -g @cucumber/language-server\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'cucumber-language-server', '--stdio' },\n  filetypes = { 'cucumber' },\n  root_markers = { '.git' },\n}\n"
  },
  {
    "path": "lsp/cue.lua",
    "content": "---@brief\n---\n--- https://github.com/cue-lang/cue\n---\n--- CUE makes it easy to validate data, write schemas, and ensure configurations align with policies.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'cue', 'lsp' },\n  filetypes = { 'cue' },\n  root_markers = { 'cue.mod', '.git' },\n}\n"
  },
  {
    "path": "lsp/custom_elements_ls.lua",
    "content": "---@brief\n---\n--- https://github.com/Matsuuu/custom-elements-language-server\n---\n--- `custom-elements-languageserver` depends on `typescript`. Both packages can be installed via `npm`:\n--- ```sh\n--- npm install -g typescript custom-elements-languageserver\n--- ```\n--- To configure typescript language server, add a\n--- [`tsconfig.json`](https://www.typescriptlang.org/docs/handbook/tsconfig-json.html) or\n--- [`jsconfig.json`](https://code.visualstudio.com/docs/languages/jsconfig) to the root of your\n--- project.\n--- Here's an example that disables type checking in JavaScript files.\n--- ```json\n--- {\n---   \"compilerOptions\": {\n---     \"module\": \"commonjs\",\n---     \"target\": \"es6\",\n---     \"checkJs\": false\n---   },\n---   \"exclude\": [\n---     \"node_modules\"\n---   ]\n--- }\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  init_options = { hostInfo = 'neovim' },\n  cmd = { 'custom-elements-languageserver', '--stdio' },\n  root_markers = { 'tsconfig.json', 'package.json', 'jsconfig.json', '.git' },\n}\n"
  },
  {
    "path": "lsp/cypher_ls.lua",
    "content": "---@brief\n---\n--- https://github.com/neo4j/cypher-language-support/tree/main/packages/language-server\n---\n--- `cypher-language-server`, language server for Cypher query language.\n--- Part of the umbrella project cypher-language-support: https://github.com/neo4j/cypher-language-support\n---\n--- `cypher-language-server` can be installed via `npm`:\n--- ```sh\n--- npm i -g @neo4j-cypher/language-server\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'cypher-language-server', '--stdio' },\n  filetypes = { 'cypher' },\n  root_markers = { '.git' },\n}\n"
  },
  {
    "path": "lsp/daedalus_ls.lua",
    "content": "--- @brief\n---\n--- DaedalusLanguageServer\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'DaedalusLanguageServer' },\n  filetypes = { 'd' },\n  root_markers = {\n    'Gothic.src',\n    'Camera.src',\n    'Menu.src',\n    'Music.src',\n    'ParticleFX.src',\n    'SFX.src',\n    'VisualFX.src',\n  },\n  settings = {\n    DaedalusLanguageServer = {\n      loglevel = 'debug',\n      inlayHints = { constants = true },\n      numParserThreads = 16,\n      fileEncoding = 'Windows-1252',\n      srcFileEncoding = 'Windows-1252',\n    },\n  },\n}\n"
  },
  {
    "path": "lsp/dafny.lua",
    "content": "---@brief\n---\n--- Support for the Dafny language server.\n\n-- The default `cmd` uses \"dafny server\", which works on Dafny 4.0.0+. For\n-- older versions of Dafny, you can compile the language server from source at\n-- [dafny-lang/language-server-csharp](https://github.com/dafny-lang/language-server-csharp)\n-- and set `cmd = {\"dotnet\", \"<Path to your language server>\"}`.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'dafny', 'server' },\n  filetypes = { 'dfy', 'dafny' },\n  root_markers = { '.git' },\n}\n"
  },
  {
    "path": "lsp/dagger.lua",
    "content": "---@brief\n---\n--- https://github.com/dagger/cuelsp\n---\n--- Dagger's lsp server for cuelang.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'cuelsp' },\n  filetypes = { 'cue' },\n  root_markers = { 'cue.mod', '.git' },\n}\n"
  },
  {
    "path": "lsp/dartls.lua",
    "content": "---@brief\n---\n--- https://github.com/dart-lang/sdk/tree/master/pkg/analysis_server/tool/lsp_spec\n---\n--- Language server for dart.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'dart', 'language-server', '--protocol=lsp' },\n  filetypes = { 'dart' },\n  root_markers = { 'pubspec.yaml' },\n  init_options = {\n    onlyAnalyzeProjectsWithOpenFiles = true,\n    suggestFromUnimportedLibraries = true,\n    closingLabels = true,\n    outline = true,\n    flutterOutline = true,\n  },\n  ---@type lspconfig.settings.dartls\n  settings = {\n    dart = {\n      completeFunctionCalls = true,\n      showTodos = true,\n    },\n  },\n}\n"
  },
  {
    "path": "lsp/dcmls.lua",
    "content": "---@brief\n---\n--- https://dcm.dev/\n---\n--- Language server for DCM analyzer.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'dcm', 'start-server', '--client=neovim' },\n  filetypes = { 'dart' },\n  root_markers = { 'pubspec.yaml' },\n}\n"
  },
  {
    "path": "lsp/debputy.lua",
    "content": "---@brief\n---\n--- https://salsa.debian.org/debian/debputy\n---\n--- Language Server for Debian packages.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'debputy', 'lsp', 'server' },\n  filetypes = { 'debcontrol', 'debcopyright', 'debchangelog', 'autopkgtest', 'make', 'yaml' },\n  root_markers = { 'debian' },\n}\n"
  },
  {
    "path": "lsp/denols.lua",
    "content": "---@brief\n---\n--- https://github.com/denoland/deno\n---\n--- Deno's built-in language server\n---\n--- To appropriately highlight codefences returned from denols, you will need to augment vim.g.markdown_fenced languages\n---  in your init.lua. Example:\n---\n--- ```lua\n--- vim.g.markdown_fenced_languages = {\n---   \"ts=typescript\"\n--- }\n--- ```\n---\n--- Some care must be taken here to correctly infer whether a file is part of a Deno program, or a TS program that\n--- expects to run in Node or Web Browsers. This supports having a Deno module that is a part of a mostly-not-Deno\n--- monorepo. We do this by finding the nearest package manager lock file, and the nearest deno.json or deno.jsonc.\n--- Note that this means that without a deno.json, deno.jsonc, or deno.lock file, this LSP client will not attach.\n---\n--- Example:\n---\n--- ```\n--- project-root\n--- +-- node_modules/...\n--- +-- package-lock.json\n--- +-- package.json\n--- +-- packages\n---     +-- deno-module\n---     |   +-- deno.json\n---     |   +-- package.json <-- It's normal for Deno projects to have package.json files!\n---     |   +-- src\n---     |       +-- index.ts <-- this is a Deno file\n---     +-- node-module\n---         +-- package.json\n---         +-- src\n---             +-- index.ts <-- a non-Deno file (ie, should use ts_ls or tsgo)\n--- ```\n---\n--- From the file being edited, we walk up to find the nearest package manager lockfile. This is PROJECT ROOT.\n--- From the file being edited, find the nearest deno.json or deno.jsonc. This is DENO ROOT.\n--- From the file being edited, find the nearest deno.lock. This is DENO LOCK ROOT\n--- If DENO LOCK ROOT is found, and PROJECT ROOT is missing or shorter, then this is a deno file, and we attach.\n--- If DENO ROOT is found, and it's longer than or equal to PROJECT ROOT, then this is a Deno file, and we attach.\n--- Otherwise, we abort, because this is a non-Deno TS file.\n\nlocal lsp = vim.lsp\n\nlocal function virtual_text_document_handler(uri, res, client)\n  if not res then\n    return nil\n  end\n\n  local lines = vim.split(res.result, '\\n')\n  local bufnr = vim.uri_to_bufnr(uri)\n\n  local current_buf = vim.api.nvim_buf_get_lines(bufnr, 0, -1, false)\n  if #current_buf ~= 0 then\n    return nil\n  end\n\n  vim.api.nvim_buf_set_lines(bufnr, 0, -1, false, lines)\n  vim.api.nvim_set_option_value('readonly', true, { buf = bufnr })\n  vim.api.nvim_set_option_value('modified', false, { buf = bufnr })\n  vim.api.nvim_set_option_value('modifiable', false, { buf = bufnr })\n  lsp.buf_attach_client(bufnr, client.id)\nend\n\nlocal function virtual_text_document(uri, client)\n  local params = {\n    textDocument = {\n      uri = uri,\n    },\n  }\n  local result = client:request_sync('deno/virtualTextDocument', params)\n  virtual_text_document_handler(uri, result, client)\nend\n\nlocal function denols_handler(err, result, ctx, config)\n  if not result or vim.tbl_isempty(result) then\n    return nil\n  end\n\n  local client = vim.lsp.get_client_by_id(ctx.client_id)\n  for _, res in pairs(result) do\n    local uri = res.uri or res.targetUri\n    if uri:match '^deno:' then\n      virtual_text_document(uri, client)\n      res['uri'] = uri\n      res['targetUri'] = uri\n    end\n  end\n\n  lsp.handlers[ctx.method](err, result, ctx, config)\nend\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'deno', 'lsp' },\n  cmd_env = { NO_COLOR = true },\n  filetypes = {\n    'javascript',\n    'javascriptreact',\n    'typescript',\n    'typescriptreact',\n  },\n  root_dir = function(bufnr, on_dir)\n    -- The project root is where the LSP can be started from\n    local root_markers = { 'deno.lock', 'deno.json', 'deno.jsonc' }\n    -- Give the root markers equal priority by wrapping them in a table\n    root_markers = vim.fn.has('nvim-0.11.3') == 1 and { root_markers, { '.git' } }\n      or vim.list_extend(root_markers, { '.git' })\n    -- only include deno projects\n    local deno_root = vim.fs.root(bufnr, { 'deno.json', 'deno.jsonc' })\n    local deno_lock_root = vim.fs.root(bufnr, { 'deno.lock' })\n    local project_root = vim.fs.root(bufnr, root_markers)\n    if\n      (deno_lock_root and (not project_root or #deno_lock_root > #project_root))\n      or (deno_root and (not project_root or #deno_root >= #project_root))\n    then\n      -- deno config is closer than or equal to package manager lock,\n      -- or deno lock is closer than package manager lock. Attach at the project root,\n      -- or deno lock or deno config path. At least one of these is always set at this point.\n      on_dir(project_root or deno_lock_root or deno_root)\n    end\n  end,\n  ---@type lspconfig.settings.denols\n  settings = {\n    deno = {\n      enable = true,\n      suggest = {\n        imports = {\n          hosts = {\n            ['https://deno.land'] = true,\n          },\n        },\n      },\n    },\n  },\n  handlers = {\n    ['textDocument/definition'] = denols_handler,\n    ['textDocument/typeDefinition'] = denols_handler,\n    ['textDocument/references'] = denols_handler,\n  },\n  on_attach = function(client, bufnr)\n    vim.api.nvim_buf_create_user_command(bufnr, 'LspDenolsCache', function()\n      client:exec_cmd({\n        title = 'DenolsCache',\n        command = 'deno.cache',\n        arguments = { {}, vim.uri_from_bufnr(bufnr) },\n      }, { bufnr = bufnr }, function(err, _, ctx)\n        if err then\n          local uri = ctx.params.arguments[2]\n          vim.notify('cache command failed for' .. vim.uri_to_fname(uri), vim.log.levels.ERROR)\n        end\n      end)\n    end, {\n      desc = 'Cache a module and all of its dependencies.',\n    })\n  end,\n}\n"
  },
  {
    "path": "lsp/dhall_lsp_server.lua",
    "content": "---@brief\n---\n--- https://github.com/dhall-lang/dhall-haskell/tree/master/dhall-lsp-server\n---\n--- language server for dhall\n---\n--- `dhall-lsp-server` can be installed via cabal:\n--- ```sh\n--- cabal install dhall-lsp-server\n--- ```\n--- prebuilt binaries can be found [here](https://github.com/dhall-lang/dhall-haskell/releases).\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'dhall-lsp-server' },\n  filetypes = { 'dhall' },\n  root_markers = { '.git' },\n}\n"
  },
  {
    "path": "lsp/diagnosticls.lua",
    "content": "---@brief\n---\n--- https://github.com/iamcco/diagnostic-languageserver\n---\n--- Diagnostic language server integrate with linters.\n\n---@type vim.lsp.Config\nreturn {\n  -- Configuration from https://github.com/iamcco/diagnostic-languageserver#config--document\n  cmd = { 'diagnostic-languageserver', '--stdio' },\n  root_markers = { '.git' },\n  -- Empty by default, override to add filetypes.\n  filetypes = {},\n}\n"
  },
  {
    "path": "lsp/digestif.lua",
    "content": "---@brief\n---\n--- https://github.com/astoff/digestif\n---\n--- Digestif is a code analyzer, and a language server, for LaTeX, ConTeXt et caterva. It provides\n---\n--- context-sensitive completion, documentation, code navigation, and related functionality to any\n---\n--- text editor that speaks the LSP protocol.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'digestif' },\n  filetypes = { 'tex', 'plaintex', 'context' },\n  root_markers = { '.git' },\n}\n"
  },
  {
    "path": "lsp/djls.lua",
    "content": "---@brief\n---\n--- https://github.com/joshuadavidthomas/django-language-server\n---\n--- `djls`, a language server for the Django web framework.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'djls', 'serve' },\n  filetypes = { 'htmldjango', 'html', 'python' },\n  root_markers = { 'manage.py', 'pyproject.toml', '.git' },\n}\n"
  },
  {
    "path": "lsp/djlsp.lua",
    "content": "---@brief\n---\n--- https://github.com/fourdigits/django-template-lsp\n---\n--- `djlsp`, a language server for Django templates.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'djlsp' },\n  filetypes = { 'html', 'htmldjango' },\n  root_markers = { '.git' },\n  settings = {},\n}\n"
  },
  {
    "path": "lsp/docker_compose_language_service.lua",
    "content": "---@brief\n---\n--- https://github.com/microsoft/compose-language-service\n--- This project contains a language service for Docker Compose.\n---\n--- `compose-language-service` can be installed via `npm`:\n---\n--- ```sh\n--- npm install @microsoft/compose-language-service\n--- ```\n---\n--- Note: If the docker-compose-langserver doesn't startup when entering a `docker-compose.yaml` file, make sure that the filetype is `yaml.docker-compose`. You can set with: `:set filetype=yaml.docker-compose`.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'docker-compose-langserver', '--stdio' },\n  filetypes = { 'yaml.docker-compose' },\n  root_markers = { 'docker-compose.yaml', 'docker-compose.yml', 'compose.yaml', 'compose.yml' },\n}\n"
  },
  {
    "path": "lsp/docker_language_server.lua",
    "content": "---@brief\n---\n--- https://github.com/docker/docker-language-server\n---\n--- `docker-langserver-server` can be installed via `go`:\n--- ```sh\n--- go install github.com/docker/docker-language-server/cmd/docker-language-server@latest\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'docker-language-server', 'start', '--stdio' },\n  filetypes = { 'dockerfile', 'yaml.docker-compose' },\n  get_language_id = function(_, ftype)\n    if ftype == 'yaml.docker-compose' or ftype:lower():find('ya?ml') then\n      return 'dockercompose'\n    else\n      return ftype\n    end\n  end,\n  root_markers = {\n    'Dockerfile',\n    'docker-compose.yaml',\n    'docker-compose.yml',\n    'compose.yaml',\n    'compose.yml',\n    'docker-bake.json',\n    'docker-bake.hcl',\n    'docker-bake.override.json',\n    'docker-bake.override.hcl',\n  },\n}\n"
  },
  {
    "path": "lsp/dockerls.lua",
    "content": "---@brief\n---\n--- https://github.com/rcjsuen/dockerfile-language-server-nodejs\n---\n--- `docker-langserver` can be installed via `npm`:\n--- ```sh\n--- npm install -g dockerfile-language-server-nodejs\n--- ```\n---\n--- Additional configuration can be applied in the following way:\n--- ```lua\n--- vim.lsp.config('dockerls', {\n---     settings = {\n---         docker = {\n--- \t    languageserver = {\n--- \t        formatter = {\n--- \t\t    ignoreMultilineInstructions = true,\n--- \t\t},\n--- \t    },\n--- \t}\n---     }\n--- })\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'docker-langserver', '--stdio' },\n  filetypes = { 'dockerfile' },\n  root_markers = { 'Dockerfile' },\n}\n"
  },
  {
    "path": "lsp/dolmenls.lua",
    "content": "---@brief\n---\n--- https://github.com/Gbury/dolmen/blob/master/doc/lsp.md\n---\n--- `dolmenls` can be installed via `opam`\n--- ```sh\n--- opam install dolmen_lsp\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'dolmenls' },\n  filetypes = { 'smt2', 'tptp', 'p', 'cnf', 'icnf', 'zf' },\n  root_markers = { '.git' },\n}\n"
  },
  {
    "path": "lsp/dotls.lua",
    "content": "---@brief\n---\n--- https://github.com/nikeee/dot-language-server\n---\n--- `dot-language-server` can be installed via `npm`:\n--- ```sh\n--- npm install -g dot-language-server\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'dot-language-server', '--stdio' },\n  filetypes = { 'dot' },\n  root_markers = { '.git' },\n}\n"
  },
  {
    "path": "lsp/dprint.lua",
    "content": "---@brief\n---\n--- https://github.com/dprint/dprint\n---\n--- Pluggable and configurable code formatting platform written in Rust.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'dprint', 'lsp' },\n  filetypes = {\n    'javascript',\n    'javascriptreact',\n    'typescript',\n    'typescriptreact',\n    'json',\n    'jsonc',\n    'markdown',\n    'python',\n    'toml',\n    'rust',\n    'roslyn',\n    'graphql',\n  },\n  root_markers = { 'dprint.json', '.dprint.json', 'dprint.jsonc', '.dprint.jsonc' },\n  settings = {},\n}\n"
  },
  {
    "path": "lsp/ds_pinyin_lsp.lua",
    "content": "---@brief\n---\n--- https://github.com/iamcco/ds-pinyin-lsp\n--- Dead simple Pinyin language server for input Chinese without IME(input method).\n--- To install, download the latest [release](https://github.com/iamcco/ds-pinyin-lsp/releases) and ensure `ds-pinyin-lsp` is on your path.\n--- And make ensure the database file `dict.db3` is also downloaded. And put the path to `dict.dbs` in the following code.\n---\n--- ```lua\n---\n--- vim.lsp.config('ds_pinyin_lsp', {\n---     init_options = {\n---         db_path = \"your_path_to_database\"\n---     }\n--- })\n---\n--- ```\n\nlocal bin_name = 'ds-pinyin-lsp'\nif vim.fn.has 'win32' == 1 then\n  bin_name = bin_name .. '.exe'\nend\n\nlocal function ds_pinyin_lsp_off(bufnr)\n  local ds_pinyin_lsp_client = vim.lsp.get_clients({ bufnr = bufnr, name = 'ds_pinyin_lsp' })[1]\n  if ds_pinyin_lsp_client then\n    ---@diagnostic disable-next-line: param-type-mismatch\n    ds_pinyin_lsp_client:notify('$/turn/completion', {\n      ['completion_on'] = false,\n    })\n  else\n    vim.notify 'notification $/turn/completion is not supported by any servers active on the current buffer'\n  end\nend\n\nlocal function ds_pinyin_lsp_on(bufnr)\n  local ds_pinyin_lsp_client = vim.lsp.get_clients({ bufnr = bufnr, name = 'ds_pinyin_lsp' })[1]\n  if ds_pinyin_lsp_client then\n    ---@diagnostic disable-next-line: param-type-mismatch\n    ds_pinyin_lsp_client:notify('$/turn/completion', {\n      ['completion_on'] = true,\n    })\n  else\n    vim.notify 'notification $/turn/completion is not supported by any servers active on the current buffer'\n  end\nend\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { bin_name },\n  filetypes = { 'markdown', 'org' },\n  root_markers = { '.git' },\n  init_options = {\n    completion_on = true,\n    show_symbols = true,\n    show_symbols_only_follow_by_hanzi = false,\n    show_symbols_by_n_times = 0,\n    match_as_same_as_input = true,\n    match_long_input = true,\n    max_suggest = 15,\n  },\n  on_attach = function(_, bufnr)\n    vim.api.nvim_buf_create_user_command(bufnr, 'LspDsPinyinCompletionOff', function()\n      ds_pinyin_lsp_off(bufnr)\n    end, { desc = 'Turn off the ds-pinyin-lsp completion' })\n    vim.api.nvim_buf_create_user_command(bufnr, 'LspDsPinyinCompletionOn', function()\n      ds_pinyin_lsp_on(bufnr)\n    end, { desc = 'Turn on the ds-pinyin-lsp completion' })\n  end,\n}\n"
  },
  {
    "path": "lsp/dts_lsp.lua",
    "content": "---@brief\n---\n--- `dts-lsp` is an LSP for Devicetree files built on top of tree-sitter-devicetree grammar.\n--- Language servers can be used in many editors, such as Visual Studio Code, Emacs\n--- or Vim\n---\n--- Install `dts-lsp` from https://github.com/igor-prusov/dts-lsp and add it to path\n---\n--- `dts-lsp` doesn't require any configuration.\n---\n--- More about Devicetree:\n--- https://www.devicetree.org/\n--- https://docs.zephyrproject.org/latest/build/dts/index.html\n\n---@type vim.lsp.Config\nreturn {\n  name = 'dts_lsp',\n  cmd = { 'dts-lsp' },\n  filetypes = { 'dts', 'dtsi', 'overlay' },\n  root_markers = { '.git' },\n  settings = {},\n}\n"
  },
  {
    "path": "lsp/earthlyls.lua",
    "content": "---@brief\n---\n--- https://github.com/glehmann/earthlyls\n---\n--- A fast language server for earthly.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'earthlyls' },\n  filetypes = { 'earthfile' },\n  root_markers = { 'Earthfile' },\n}\n"
  },
  {
    "path": "lsp/ecsact.lua",
    "content": "---@brief\n---\n--- https://github.com/ecsact-dev/ecsact_lsp_server\n---\n--- Language server for Ecsact.\n---\n--- The default cmd assumes `ecsact_lsp_server` is in your PATH. Typically from the\n--- Ecsact SDK: https://ecsact.dev/start\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'ecsact_lsp_server', '--stdio' },\n  filetypes = { 'ecsact' },\n  root_markers = { '.git' },\n}\n"
  },
  {
    "path": "lsp/efm.lua",
    "content": "--- @brief\n---\n--- https://github.com/mattn/efm-langserver\n---\n--- General purpose Language Server that can use specified error message format generated from specified command.\n---\n--- Requires at minimum EFM version [v0.0.38](https://github.com/mattn/efm-langserver/releases/tag/v0.0.38) to support\n--- launching the language server on single files.\n---\n--- Note: In order for neovim's built-in language server client to send the appropriate `languageId` to EFM, **you must\n--- specify `filetypes` in your call to `vim.lsp.config`**. Otherwise the server will be launch on the `BufEnter` instead\n--- of the `FileType` autocommand, and the `filetype` variable used to populate the `languageId` will not yet be set.\n---\n--- ```lua\n--- vim.lsp.config('efm', {\n---   filetypes = { 'python','cpp','lua' }\n---   settings = ..., -- You must populate this according to the EFM readme\n--- })\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'efm-langserver' },\n  root_markers = { '.git' },\n}\n"
  },
  {
    "path": "lsp/elixirls.lua",
    "content": "---@brief\n---\n--- https://github.com/elixir-lsp/elixir-ls\n---\n--- `elixir-ls` can be installed by following the instructions [here](https://github.com/elixir-lsp/elixir-ls#building-and-running).\n---\n--- 1. Download the zip from https://github.com/elixir-lsp/elixir-ls/releases/latest/\n--- 2. Unzip it and make it executable.\n---    ```bash\n---    unzip elixir-ls.zip -d /path/to/elixir-ls\n---    # Unix\n---    chmod +x /path/to/elixir-ls/language_server.sh\n---    ```\n---\n--- **By default, elixir-ls doesn't have a `cmd` set.** This is because nvim-lspconfig does not make assumptions about\n--- your path. You must add the following to your init.vim or init.lua to set `cmd` to the absolute path ($HOME and\n--- ~ are not expanded) of your unzipped elixir-ls.\n---\n--- ```lua\n--- vim.lsp.config('elixirls', {\n---     -- Unix\n---     cmd = { \"/path/to/elixir-ls/language_server.sh\" };\n---     -- Windows\n---     cmd = { \"/path/to/elixir-ls/language_server.bat\" };\n---     ...\n--- })\n--- ```\n---\n--- 'root_dir' is chosen like this: if two or more directories containing `mix.exs` were found when searching\n--- directories upward, the second one (higher up) is chosen, with the assumption that it is the root of an umbrella\n--- app. Otherwise the directory containing the single mix.exs that was found is chosen.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'elixir-ls' },\n  filetypes = { 'elixir', 'eelixir', 'heex', 'surface' },\n  root_dir = function(bufnr, on_dir)\n    local fname = vim.api.nvim_buf_get_name(bufnr)\n    --- Elixir workspaces may have multiple `mix.exs` files, for an \"umbrella\" layout or monorepo.\n    --- So we specify `limit=2` and treat the highest one (if any) as the root of an umbrella app.\n    local matches = vim.fs.find({ 'mix.exs' }, { upward = true, limit = 2, path = fname })\n    local child_or_root_path, maybe_umbrella_path = unpack(matches)\n    local root_dir = vim.fs.dirname(maybe_umbrella_path or child_or_root_path)\n\n    on_dir(root_dir)\n  end,\n}\n"
  },
  {
    "path": "lsp/elmls.lua",
    "content": "---@brief\n---\n--- https://github.com/elm-tooling/elm-language-server#installation\n---\n--- If you don't want to use Nvim to install it, then you can use:\n--- ```sh\n--- npm install -g elm elm-test elm-format @elm-tooling/elm-language-server\n--- ```\n\nlocal api = vim.api\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'elm-language-server' },\n  -- TODO(ashkan) if we comment this out, it will allow elmls to operate on elm.json. It seems like it could do that, but no other editor allows it right now.\n  filetypes = { 'elm' },\n  root_dir = function(bufnr, on_dir)\n    local fname = api.nvim_buf_get_name(bufnr)\n    local filetype = vim.bo[bufnr].filetype\n    if filetype == 'elm' or (filetype == 'json' and fname:match 'elm%.json$') then\n      on_dir(vim.fs.root(fname, 'elm.json'))\n      return\n    end\n    on_dir(nil)\n  end,\n  init_options = {\n    elmReviewDiagnostics = 'off', -- 'off' | 'warning' | 'error'\n    skipInstallPackageConfirmation = false,\n    disableElmLSDiagnostics = false,\n    onlyUpdateDiagnosticsOnSave = false,\n  },\n  capabilities = {\n    offsetEncoding = { 'utf-8', 'utf-16' },\n  },\n}\n"
  },
  {
    "path": "lsp/elp.lua",
    "content": "---@brief\n---\n--- https://whatsapp.github.io/erlang-language-platform\n---\n--- ELP integrates Erlang into modern IDEs via the language server protocol and was\n--- inspired by rust-analyzer.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'elp', 'server' },\n  filetypes = { 'erlang' },\n  root_markers = { 'rebar.config', 'erlang.mk', '.git' },\n}\n"
  },
  {
    "path": "lsp/ember.lua",
    "content": "---@brief\n---\n--- https://github.com/ember-tooling/ember-language-server\n---\n--- `ember-language-server` can be installed via `npm`:\n---\n--- ```sh\n--- npm install -g @ember-tooling/ember-language-server\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'ember-language-server', '--stdio' },\n  filetypes = { 'handlebars', 'typescript', 'javascript', 'typescript.glimmer', 'javascript.glimmer' },\n  root_markers = { 'ember-cli-build.js', '.git' },\n}\n"
  },
  {
    "path": "lsp/emmet_language_server.lua",
    "content": "---@brief\n---\n--- https://github.com/olrtg/emmet-language-server\n---\n--- Package can be installed via `npm`:\n--- ```sh\n--- npm install -g @olrtg/emmet-language-server\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'emmet-language-server', '--stdio' },\n  filetypes = {\n    'astro',\n    'css',\n    'eruby',\n    'html',\n    'htmlangular',\n    'htmldjango',\n    'javascriptreact',\n    'less',\n    'sass',\n    'scss',\n    'svelte',\n    'typescriptreact',\n    'vue',\n  },\n  root_markers = { '.git' },\n}\n"
  },
  {
    "path": "lsp/emmet_ls.lua",
    "content": "---@brief\n---\n--- https://github.com/aca/emmet-ls\n---\n--- Package can be installed via `npm`:\n--- ```sh\n--- npm install -g emmet-ls\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'emmet-ls', '--stdio' },\n  filetypes = {\n    'astro',\n    'css',\n    'eruby',\n    'html',\n    'htmlangular',\n    'htmldjango',\n    'javascriptreact',\n    'less',\n    'pug',\n    'sass',\n    'scss',\n    'svelte',\n    'templ',\n    'typescriptreact',\n    'vue',\n  },\n  root_markers = { '.git' },\n}\n"
  },
  {
    "path": "lsp/emmylua_ls.lua",
    "content": "---@brief\n---\n--- https://github.com/EmmyLuaLs/emmylua-analyzer-rust\n---\n--- Emmylua Analyzer Rust. Language Server for Lua.\n---\n--- `emmylua_ls` can be installed using `cargo` by following the instructions[here]\n--- (https://github.com/EmmyLuaLs/emmylua-analyzer-rust?tab=readme-ov-file#install).\n---\n--- The default `cmd` assumes that the `emmylua_ls` binary can be found in `$PATH`.\n--- It might require you to provide cargo binaries installation path in it.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'emmylua_ls' },\n  filetypes = { 'lua' },\n  root_markers = {\n    '.luarc.json',\n    '.emmyrc.json',\n    '.luacheckrc',\n    '.git',\n  },\n  workspace_required = false,\n}\n"
  },
  {
    "path": "lsp/erg_language_server.lua",
    "content": "---@brief\n---\n--- https://github.com/erg-lang/erg#flags ELS\n---\n--- ELS (erg-language-server) is a language server for the Erg programming language.\n---\n--- erg-language-server can be installed via `cargo` and used as follows:\n---\n--- ```sh\n--- cargo install erg --features els\n--- erg --language-server\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'erg', '--language-server' },\n  filetypes = { 'erg' },\n  root_markers = { 'package.er', '.git' },\n}\n"
  },
  {
    "path": "lsp/esbonio.lua",
    "content": "---@brief\n---\n--- https://github.com/swyddfa/esbonio\n---\n--- Esbonio is a language server for [Sphinx](https://www.sphinx-doc.org/en/master/) documentation projects.\n--- The language server can be installed via pip\n---\n--- ```\n--- pip install esbonio\n--- ```\n---\n--- Since Sphinx is highly extensible you will get best results if you install the language server in the same\n--- Python environment as the one used to build your documentation. To ensure that the correct Python environment\n--- is picked up, you can either launch `nvim` with the correct environment activated.\n---\n--- ```\n--- source env/bin/activate\n--- nvim\n--- ```\n---\n--- Or you can modify the default `cmd` to include the full path to the Python interpreter.\n---\n--- ```lua\n--- vim.lsp.config('esbonio', {\n---   cmd = { '/path/to/virtualenv/bin/python', '-m', 'esbonio' }\n--- })\n--- ```\n---\n--- Esbonio supports a number of config values passed as `init_options` on startup, for example.\n---\n--- ```lua\n--- vim.lsp.config('esbonio', {\n---   init_options = {\n---     server = {\n---       logLevel = \"debug\"\n---     },\n---     sphinx = {\n---       confDir = \"/path/to/docs\",\n---       srcDir = \"${confDir}/../docs-src\"\n---     }\n--- })\n--- ```\n---\n--- A full list and explanation of the available options can be found [here](https://docs.esbon.io/en/esbonio-language-server-v0.16.4/lsp/getting-started.html?editor=neovim-lspconfig#configuration)\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'python3', '-m', 'esbonio' },\n  filetypes = { 'rst' },\n  root_markers = { '.git' },\n}\n"
  },
  {
    "path": "lsp/eslint.lua",
    "content": "--- @brief\n---\n--- https://github.com/hrsh7th/vscode-langservers-extracted\n---\n--- `vscode-eslint-language-server` is a linting engine for JavaScript / Typescript.\n--- It can be installed via `npm`:\n---\n--- ```sh\n--- npm i -g vscode-langservers-extracted\n--- ```\n---\n--- The default `on_attach` config provides the `LspEslintFixAll` command that can be used to format a document on save:\n--- ```lua\n--- local base_on_attach = vim.lsp.config.eslint.on_attach\n--- vim.lsp.config(\"eslint\", {\n---   on_attach = function(client, bufnr)\n---     if not base_on_attach then return end\n---\n---     base_on_attach(client, bufnr)\n---     vim.api.nvim_create_autocmd(\"BufWritePre\", {\n---       buffer = bufnr,\n---       command = \"LspEslintFixAll\",\n---     })\n---   end,\n--- })\n--- ```\n---\n--- See [vscode-eslint](https://github.com/microsoft/vscode-eslint/blob/55871979d7af184bf09af491b6ea35ebd56822cf/server/src/eslintServer.ts#L216-L229) for configuration options.\n---\n--- Messages handled in lspconfig: `eslint/openDoc`, `eslint/confirmESLintExecution`, `eslint/probeFailed`, `eslint/noLibrary`\n---\n--- Additional messages you can handle: `eslint/noConfig`\n---\n--- ### Monorepo support\n---\n--- `vscode-eslint-language-server` supports monorepos by default. It will automatically find the config file corresponding to the package you are working on. You can use different configs in different packages.\n--- This works without the need of spawning multiple instances of `vscode-eslint-language-server`.\n--- You can use a different version of ESLint in each package, but it is recommended to use the same version of ESLint in all packages. The location of the ESLint binary will be determined automatically.\n---\n--- /!\\ When using flat config files, you need to use them across all your packages in your monorepo, as it's a global setting for the server.\n---\n--- ### Flat config in ESLint versions prior to 10.0\n---\n--- If you're using a ESLint version that supports both flat config and eslintrc (>= 8.21, < 10.0) and want to change\n--- the [default behavior](https://eslint.org/blog/2023/10/flat-config-rollout-plans/), you'll need to set\n--- `experimental.useFlatConfig` accordingly:\n--- ```lua\n--- vim.lsp.config(\"eslint\", {\n---   settings = {\n---     experimental = {\n---       -- If you want to use flat config on >= 8.21, < 9.0\n---       useFlatConfig = true,\n---       -- Or if you want to use eslintrc on 9.*\n---       -- useFlatConfig = false,\n---     }\n---   }\n--- })\n--- ```\n\nlocal util = require 'lspconfig.util'\nlocal lsp = vim.lsp\n\nlocal eslint_config_files = {\n  '.eslintrc',\n  '.eslintrc.js',\n  '.eslintrc.cjs',\n  '.eslintrc.yaml',\n  '.eslintrc.yml',\n  '.eslintrc.json',\n  'eslint.config.js',\n  'eslint.config.mjs',\n  'eslint.config.cjs',\n  'eslint.config.ts',\n  'eslint.config.mts',\n  'eslint.config.cts',\n}\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'vscode-eslint-language-server', '--stdio' },\n  filetypes = {\n    'javascript',\n    'javascriptreact',\n    'typescript',\n    'typescriptreact',\n    'vue',\n    'svelte',\n    'astro',\n    'htmlangular',\n  },\n  workspace_required = true,\n  on_attach = function(client, bufnr)\n    vim.api.nvim_buf_create_user_command(bufnr, 'LspEslintFixAll', function()\n      client:request_sync('workspace/executeCommand', {\n        command = 'eslint.applyAllFixes',\n        arguments = {\n          {\n            uri = vim.uri_from_bufnr(bufnr),\n            version = lsp.util.buf_versions[bufnr],\n          },\n        },\n      }, nil, bufnr)\n    end, {})\n  end,\n  root_dir = function(bufnr, on_dir)\n    -- The project root is where the LSP can be started from\n    -- As stated in the documentation above, this LSP supports monorepos and simple projects.\n    -- We select then from the project root, which is identified by the presence of a package\n    -- manager lock file.\n    local root_markers = { 'package-lock.json', 'yarn.lock', 'pnpm-lock.yaml', 'bun.lockb', 'bun.lock' }\n    -- Give the root markers equal priority by wrapping them in a table\n    root_markers = vim.fn.has('nvim-0.11.3') == 1 and { root_markers, { '.git' } }\n      or vim.list_extend(root_markers, { '.git' })\n\n    -- exclude deno\n    if vim.fs.root(bufnr, { 'deno.json', 'deno.jsonc', 'deno.lock' }) then\n      return\n    end\n\n    -- We fallback to the current working directory if no project root is found\n    local project_root = vim.fs.root(bufnr, root_markers) or vim.fn.getcwd()\n\n    -- We know that the buffer is using ESLint if it has a config file\n    -- in its directory tree.\n    --\n    -- Eslint used to support package.json files as config files, but it doesn't anymore.\n    -- We keep this for backward compatibility.\n    local filename = vim.api.nvim_buf_get_name(bufnr)\n    local eslint_config_files_with_package_json =\n      util.insert_package_json(eslint_config_files, 'eslintConfig', filename)\n    local is_buffer_using_eslint = vim.fs.find(eslint_config_files_with_package_json, {\n      path = filename,\n      type = 'file',\n      limit = 1,\n      upward = true,\n      stop = vim.fs.dirname(project_root),\n    })[1]\n    if not is_buffer_using_eslint then\n      return\n    end\n\n    on_dir(project_root)\n  end,\n  -- Refer to https://github.com/Microsoft/vscode-eslint#settings-options for documentation.\n  ---@type lspconfig.settings.eslint\n  settings = {\n    validate = 'on',\n    ---@diagnostic disable-next-line: assign-type-mismatch\n    packageManager = nil,\n    useESLintClass = false,\n    experimental = {},\n    codeActionOnSave = {\n      enable = false,\n      mode = 'all',\n    },\n    format = true,\n    quiet = false,\n    onIgnoredFiles = 'off',\n    rulesCustomizations = {},\n    run = 'onType',\n    problems = {\n      shortenToSingleLine = false,\n    },\n    -- nodePath configures the directory in which the eslint server should start its node_modules resolution.\n    -- This path is relative to the workspace folder (root dir) of the server instance.\n    nodePath = '',\n    -- use the workspace folder location or the file location (if no workspace folder is open) as the working directory\n    workingDirectory = { mode = 'auto' },\n    codeAction = {\n      disableRuleComment = {\n        enable = true,\n        location = 'separateLine',\n      },\n      showDocumentation = {\n        enable = true,\n      },\n    },\n  },\n  before_init = function(_, config)\n    -- The \"workspaceFolder\" is a VSCode concept. It limits how far the\n    -- server will traverse the file system when locating the ESLint config\n    -- file (e.g., .eslintrc).\n    local root_dir = config.root_dir\n\n    if root_dir then\n      config.settings = config.settings or {}\n      config.settings.workspaceFolder = {\n        uri = root_dir,\n        name = vim.fn.fnamemodify(root_dir, ':t'),\n      }\n\n      -- Support Yarn2 (PnP) projects\n      local pnp_cjs = root_dir .. '/.pnp.cjs'\n      local pnp_js = root_dir .. '/.pnp.js'\n      if type(config.cmd) == 'table' and (vim.uv.fs_stat(pnp_cjs) or vim.uv.fs_stat(pnp_js)) then\n        config.cmd = vim.list_extend({ 'yarn', 'exec' }, config.cmd --[[@as table]])\n      end\n    end\n  end,\n  handlers = {\n    ['eslint/openDoc'] = function(_, result)\n      if result then\n        vim.ui.open(result.url)\n      end\n      return {}\n    end,\n    ['eslint/confirmESLintExecution'] = function(_, result)\n      if not result then\n        return\n      end\n      return 4 -- approved\n    end,\n    ['eslint/probeFailed'] = function()\n      vim.notify('[lspconfig] ESLint probe failed.', vim.log.levels.WARN)\n      return {}\n    end,\n    ['eslint/noLibrary'] = function()\n      vim.notify('[lspconfig] Unable to find ESLint library.', vim.log.levels.WARN)\n      return {}\n    end,\n  },\n}\n"
  },
  {
    "path": "lsp/expert.lua",
    "content": "---@brief\n---\n--- https://github.com/elixir-lang/expert\n---\n--- Expert is the official language server implementation for the Elixir programming language.\n---\n--- 'root_dir' is chosen like this: if two or more directories containing `mix.exs` were found when\n--- searching directories upward, the second one (higher up) is chosen, with the assumption that it\n--- is the root of an umbrella app. Otherwise the directory containing the single mix.exs that was\n--- found is chosen.\n\n---@type vim.lsp.Config\nreturn {\n  filetypes = { 'elixir', 'eelixir', 'heex', 'surface' },\n  cmd = { 'expert', '--stdio' },\n  root_dir = function(bufnr, on_dir)\n    local fname = vim.api.nvim_buf_get_name(bufnr)\n    --- Elixir workspaces may have multiple `mix.exs` files, for an \"umbrella\" layout or monorepo.\n    --- So we specify `limit=2` and treat the highest one (if any) as the root of an umbrella app.\n    local matches = vim.fs.find({ 'mix.exs' }, { upward = true, limit = 2, path = fname })\n    local child_or_root_path, maybe_umbrella_path = unpack(matches)\n    local root_dir = vim.fs.dirname(maybe_umbrella_path or child_or_root_path)\n\n    on_dir(root_dir)\n  end,\n}\n"
  },
  {
    "path": "lsp/facility_language_server.lua",
    "content": "---@brief\n---\n--- https://github.com/FacilityApi/FacilityLanguageServer\n---\n--- Facility language server protocol (LSP) support.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'facility-language-server' },\n  filetypes = { 'fsd' },\n  root_markers = { '.git' },\n}\n"
  },
  {
    "path": "lsp/fennel_language_server.lua",
    "content": "---@brief\n---\n--- https://github.com/rydesun/fennel-language-server\n---\n--- Fennel language server protocol (LSP) support.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'fennel-language-server' },\n  filetypes = { 'fennel' },\n  root_markers = { '.git' },\n  settings = {},\n}\n"
  },
  {
    "path": "lsp/fennel_ls.lua",
    "content": "---@brief\n---\n--- https://sr.ht/~xerool/fennel-ls/\n---\n--- A language server for fennel.\n---\n--- fennel-ls is configured using the closest file to your working directory named `flsproject.fnl`.\n--- All fennel-ls configuration options [can be found here](https://git.sr.ht/~xerool/fennel-ls/tree/HEAD/docs/manual.md#configuration).\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'fennel-ls' },\n  filetypes = { 'fennel' },\n  root_dir = function(bufnr, on_dir)\n    local fname = vim.api.nvim_buf_get_name(bufnr)\n    local has_fls_project_cfg = function(path)\n      local fnlpath = vim.fs.joinpath(path, 'flsproject.fnl')\n      return (vim.uv.fs_stat(fnlpath) or {}).type == 'file'\n    end\n    on_dir(vim.iter(vim.fs.parents(fname)):find(has_fls_project_cfg) or vim.fs.root(0, '.git'))\n  end,\n  settings = {},\n  capabilities = {\n    offsetEncoding = { 'utf-8', 'utf-16' },\n  },\n}\n"
  },
  {
    "path": "lsp/fish_lsp.lua",
    "content": "---@brief\n---\n--- https://github.com/ndonfris/fish-lsp\n---\n--- A Language Server Protocol (LSP) tailored for the fish shell.\n--- This project aims to enhance the coding experience for fish,\n--- by introducing a suite of intelligent features like auto-completion,\n--- scope aware symbol analysis, per-token hover generation, and many others.\n---\n--- [homepage](https://www.fish-lsp.dev/)\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'fish-lsp', 'start' },\n  filetypes = { 'fish' },\n  root_markers = { 'config.fish', '.git' },\n}\n"
  },
  {
    "path": "lsp/flow.lua",
    "content": "---@brief\n---\n--- https://flow.org/\n--- https://github.com/facebook/flow\n---\n--- See below for how to setup Flow itself.\n--- https://flow.org/en/docs/install/\n---\n--- See below for lsp command options.\n---\n--- ```sh\n--- npx flow lsp --help\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = function(dispatchers)\n    local cmd = nil\n    if vim.fn.executable('flow') then\n      cmd = { 'flow', 'lsp' }\n    else\n      cmd = { 'npx', '--no-install', 'flow', 'lsp' }\n    end\n\n    return vim.lsp.rpc.start(cmd, dispatchers)\n  end,\n  filetypes = { 'javascript', 'javascriptreact' },\n  root_markers = { '.flowconfig' },\n}\n"
  },
  {
    "path": "lsp/flux_lsp.lua",
    "content": "---@brief\n---\n--- https://github.com/influxdata/flux-lsp\n--- `flux-lsp` can be installed via `cargo`:\n--- ```sh\n--- cargo install --git https://github.com/influxdata/flux-lsp\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'flux-lsp' },\n  filetypes = { 'flux' },\n  root_markers = { '.git' },\n}\n"
  },
  {
    "path": "lsp/foam_ls.lua",
    "content": "---@brief\n---\n--- https://github.com/FoamScience/foam-language-server\n---\n--- `foam-language-server` can be installed via `npm`\n--- ```sh\n--- npm install -g foam-language-server\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'foam-ls', '--stdio' },\n  filetypes = { 'foam', 'OpenFOAM' },\n  root_dir = function(bufnr, on_dir)\n    local fname = vim.api.nvim_buf_get_name(bufnr)\n    for path in vim.fs.parents(fname) do\n      if vim.uv.fs_stat(path .. '/system/controlDict') then\n        on_dir(path)\n        return\n      end\n    end\n    local git_root = vim.fs.root(bufnr, { '.git' })\n    if git_root then\n      on_dir(git_root)\n      return\n    end\n    on_dir(vim.fs.dirname(fname))\n  end,\n}\n"
  },
  {
    "path": "lsp/fortitude.lua",
    "content": "---@brief\n---\n--- https://fortitude.readthedocs.io/en/stable/\n---\n--- Fortitude is a Fortran linter built in Rust and inspired by (and build upon) Ruff\n---\n--- ```sh\n--- # Install With uv:\n--- uv tool install fortitude-lint@latest\n---\n--- # Install with pip:\n--- pip install fortitude-lint\n--- ```\n---\n--- **LSP is available in Fortitude `v0.8.0`.**\n---\n--- Refer to the [documentation](https://fortitude.readthedocs.io/en/stable/editors/) for more details.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'fortitude', 'server' },\n  filetypes = { 'fortran' },\n  root_markers = {\n    'fpm.toml',\n    'fortitude.toml',\n    '.fortitude.toml',\n    '.git',\n  },\n  settings = {},\n}\n"
  },
  {
    "path": "lsp/fortls.lua",
    "content": "---@brief\n---\n--- https://fortls.fortran-lang.org/index.html\n---\n--- fortls is a Fortran Language Server, the server can be installed via pip\n---\n--- ```sh\n--- pip install fortls\n--- ```\n---\n--- Settings to the server can be passed either through the `cmd` option or through\n--- a local configuration file e.g. `.fortls`. For more information\n--- see the `fortls` [documentation](https://fortls.fortran-lang.org/options.html).\n\n---@type vim.lsp.Config\nreturn {\n  cmd = {\n    'fortls',\n    '--notify_init',\n    '--hover_signature',\n    '--hover_language=fortran',\n    '--use_signature_help',\n  },\n  filetypes = { 'fortran' },\n  root_markers = { '.fortls', '.fortlsrc', '.fortls.json', '.git' },\n  settings = {},\n}\n"
  },
  {
    "path": "lsp/fsautocomplete.lua",
    "content": "---@brief\n---\n--- https://github.com/fsharp/FsAutoComplete\n---\n--- Language Server for F# provided by FsAutoComplete (FSAC).\n---\n--- FsAutoComplete requires the [dotnet-sdk](https://dotnet.microsoft.com/download) to be installed.\n---\n--- The preferred way to install FsAutoComplete is with `dotnet tool install --global fsautocomplete`.\n---\n--- Instructions to compile from source are found on the main [repository](https://github.com/fsharp/FsAutoComplete).\n---\n--- You may also need to configure the filetype as Vim defaults to Forth for `*.fs` files:\n---\n--- `autocmd BufNewFile,BufRead *.fs,*.fsx,*.fsi set filetype=fsharp`\n---\n--- This is automatically done by plugins such as [PhilT/vim-fsharp](https://github.com/PhilT/vim-fsharp), [fsharp/vim-fsharp](https://github.com/fsharp/vim-fsharp), and [adelarsq/neofsharp.vim](https://github.com/adelarsq/neofsharp.vim).\n---\n\nlocal util = require 'lspconfig.util'\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'fsautocomplete', '--adaptive-lsp-server-enabled' },\n  root_dir = function(bufnr, on_dir)\n    local fname = vim.api.nvim_buf_get_name(bufnr)\n    on_dir(util.root_pattern('*.sln', '*.slnx', '*.fsproj', '.git')(fname))\n  end,\n  filetypes = { 'fsharp' },\n  init_options = {\n    AutomaticWorkspaceInit = true,\n  },\n  -- this recommended settings values taken from  https://github.com/ionide/FsAutoComplete?tab=readme-ov-file#settings\n  ---@type lspconfig.settings.fsautocomplete\n  settings = {\n    FSharp = {\n      keywordsAutocomplete = true,\n      ExternalAutocomplete = false,\n      Linter = true,\n      UnionCaseStubGeneration = true,\n      UnionCaseStubGenerationBody = 'failwith \"Not Implemented\"',\n      RecordStubGeneration = true,\n      RecordStubGenerationBody = 'failwith \"Not Implemented\"',\n      InterfaceStubGeneration = true,\n      InterfaceStubGenerationObjectIdentifier = 'this',\n      InterfaceStubGenerationMethodBody = 'failwith \"Not Implemented\"',\n      UnusedOpensAnalyzer = true,\n      UnusedDeclarationsAnalyzer = true,\n      UseSdkScripts = true,\n      SimplifyNameAnalyzer = true,\n      ResolveNamespaces = true,\n      EnableReferenceCodeLens = true,\n    },\n  },\n}\n"
  },
  {
    "path": "lsp/fsharp_language_server.lua",
    "content": "---@brief\n---\n--- F# Language Server\n--- https://github.com/faldor20/fsharp-language-server\n---\n--- An implementation of the language server protocol using the F# Compiler Service.\n---\n--- Build the project from source and override the command path to location of DLL.\n---\n--- If filetype determination is not already performed by an available plugin ([PhilT/vim-fsharp](https://github.com/PhilT/vim-fsharp), [fsharp/vim-fsharp](https://github.com/fsharp/vim-fsharp), and [adelarsq/neofsharp.vim](https://github.com/adelarsq/neofsharp.vim).\n--- ), then the following must be added to initialization configuration:\n---\n---\n--- `autocmd BufNewFile,BufRead *.fs,*.fsx,*.fsi set filetype=fsharp`\n\nlocal util = require 'lspconfig.util'\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'dotnet', 'FSharpLanguageServer.dll' },\n  root_dir = function(bufnr, on_dir)\n    local fname = vim.api.nvim_buf_get_name(bufnr)\n    on_dir(util.root_pattern('*.sln', '*.fsproj', '.git')(fname))\n  end,\n  filetypes = { 'fsharp' },\n  init_options = {\n    AutomaticWorkspaceInit = true,\n  },\n  settings = {},\n}\n"
  },
  {
    "path": "lsp/fstar.lua",
    "content": "---@brief\n---\n--- https://github.com/FStarLang/FStar\n---\n--- LSP support is included in FStar. Make sure `fstar.exe` is in your PATH.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'fstar.exe', '--lsp' },\n  filetypes = { 'fstar' },\n  root_markers = { '.git' },\n}\n"
  },
  {
    "path": "lsp/futhark_lsp.lua",
    "content": "---@brief\n---\n--- https://github.com/diku-dk/futhark\n---\n--- Futhark Language Server\n---\n--- This language server comes with the futhark compiler and is run with the command\n--- ```\n--- futhark lsp\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'futhark', 'lsp' },\n  filetypes = { 'futhark', 'fut' },\n  root_markers = { '.git' },\n}\n"
  },
  {
    "path": "lsp/gdscript.lua",
    "content": "---@brief\n---\n--- https://github.com/godotengine/godot\n---\n--- Language server for GDScript, used by Godot Engine.\n\nlocal port = os.getenv 'GDScript_Port' or '6005'\nlocal cmd = vim.lsp.rpc.connect('127.0.0.1', tonumber(port))\n\n---@type vim.lsp.Config\nreturn {\n  cmd = cmd,\n  filetypes = { 'gd', 'gdscript', 'gdscript3' },\n  root_markers = { 'project.godot', '.git' },\n}\n"
  },
  {
    "path": "lsp/gdshader_lsp.lua",
    "content": "---@brief\n---\n--- https://github.com/godofavacyn/gdshader-lsp\n---\n--- A language server for the Godot Shading language.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'gdshader-lsp', '--stdio' },\n  filetypes = { 'gdshader', 'gdshaderinc' },\n  root_markers = { 'project.godot' },\n}\n"
  },
  {
    "path": "lsp/gh_actions_ls.lua",
    "content": "---@brief\n--- https://github.com/lttb/gh-actions-language-server\n---\n--- Language server for GitHub Actions.\n---\n--- The projects [forgejo](https://forgejo.org/) and [gitea](https://about.gitea.com/)\n--- design their actions to be as compatible to github as possible\n--- with only [a few differences](https://docs.gitea.com/usage/actions/comparison#unsupported-workflows-syntax) between the systems.\n--- The `gh_actions_ls` is therefore enabled for those `yaml` files as well.\n---\n--- The `gh-actions-language-server` can be installed via `npm`:\n---\n--- ```sh\n--- npm install -g gh-actions-language-server\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'gh-actions-language-server', '--stdio' },\n  filetypes = { 'yaml' },\n\n  -- `root_dir` ensures that the LSP does not attach to all yaml files\n  root_dir = function(bufnr, on_dir)\n    local parent = vim.fs.dirname(vim.api.nvim_buf_get_name(bufnr))\n    if\n      vim.endswith(parent, '/.github/workflows')\n      or vim.endswith(parent, '/.forgejo/workflows')\n      or vim.endswith(parent, '/.gitea/workflows')\n    then\n      on_dir(parent)\n    end\n  end,\n  handlers = {\n    ['actions/readFile'] = function(_, result)\n      if type(result.path) ~= 'string' then\n        return nil, nil\n      end\n      local file_path = vim.uri_to_fname(result.path)\n      if vim.fn.filereadable(file_path) == 1 then\n        local f = assert(io.open(file_path, 'r'))\n        local text = f:read('*a')\n        f:close()\n\n        return text, nil\n      end\n      return nil, nil\n    end,\n  },\n  init_options = {}, -- needs to be present https://github.com/neovim/nvim-lspconfig/pull/3713#issuecomment-2857394868\n  capabilities = {\n    workspace = {\n      didChangeWorkspaceFolders = {\n        dynamicRegistration = true,\n      },\n    },\n  },\n}\n"
  },
  {
    "path": "lsp/ghcide.lua",
    "content": "---@brief\n---\n--- https://github.com/digital-asset/ghcide\n---\n--- A library for building Haskell IDE tooling.\n--- \"ghcide\" isn't for end users now. Use \"haskell-language-server\" instead of \"ghcide\".\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'ghcide', '--lsp' },\n  filetypes = { 'haskell', 'lhaskell' },\n  root_markers = { 'stack.yaml', 'hie-bios', 'BUILD.bazel', 'cabal.config', 'package.yaml' },\n}\n"
  },
  {
    "path": "lsp/ghdl_ls.lua",
    "content": "---@brief\n---\n--- https://github.com/ghdl/ghdl-language-server\n---\n--- A language server for VHDL, using ghdl as its backend.\n---\n--- `ghdl-ls` is part of pyghdl, for installation instructions see\n--- [the upstream README](https://github.com/ghdl/ghdl/tree/master/pyGHDL/lsp).\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'ghdl-ls' },\n  filetypes = { 'vhdl' },\n  root_markers = { 'hdl-prj.json', '.git' },\n}\n"
  },
  {
    "path": "lsp/ginko_ls.lua",
    "content": "---@brief\n---\n---`ginko_ls` is meant to be a feature-complete language server for device-trees.\n--- Language servers can be used in many editors, such as Visual Studio Code, Emacs\n--- or Vim\n---\n--- Install `ginko_ls` from https://github.com/Schottkyc137/ginko and add it to path\n---\n--- `ginko_ls` doesn't require any configuration.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'ginko_ls' },\n  filetypes = { 'dts' },\n  root_markers = { '.git' },\n  settings = {},\n}\n"
  },
  {
    "path": "lsp/gitlab_ci_ls.lua",
    "content": "---@brief\n---\n--- https://github.com/alesbrelih/gitlab-ci-ls\n---\n--- Language Server for Gitlab CI\n---\n--- `gitlab-ci-ls` can be installed via cargo:\n--- cargo install gitlab-ci-ls\n\nlocal util = require 'lspconfig.util'\n\nlocal cache_dir = vim.uv.os_homedir() .. '/.cache/gitlab-ci-ls/'\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'gitlab-ci-ls' },\n  filetypes = { 'yaml.gitlab' },\n  root_dir = function(bufnr, on_dir)\n    local fname = vim.api.nvim_buf_get_name(bufnr)\n    on_dir(util.root_pattern('.git', '.gitlab*')(fname))\n  end,\n  init_options = {\n    cache_path = cache_dir,\n    log_path = cache_dir .. '/log/gitlab-ci-ls.log',\n  },\n}\n"
  },
  {
    "path": "lsp/gitlab_duo.lua",
    "content": "---@brief\n---\n--- GitLab Duo Language Server Configuration for Neovim\n---\n--- https://gitlab.com/gitlab-org/editor-extensions/gitlab-lsp\n---\n--- The GitLab LSP enables any editor or IDE to integrate with GitLab Duo\n--- for AI-powered code suggestions via the Language Server Protocol.\n---\n--- Prerequisites:\n--- - Node.js and npm installed\n--- - GitLab account with Duo Pro license\n--- - Internet connection for OAuth device flow\n---\n--- Setup:\n--- 1. Run :LspGitLabDuoSignIn to start OAuth authentication\n--- 2. Follow the browser prompts to authorize\n--- 3. Enable inline completion in LspAttach event (see example below)\n---\n--- Inline Completion Example:\n--- ```lua\n--- vim.api.nvim_create_autocmd('LspAttach', {\n---   callback = function(args)\n---     local bufnr = args.buf\n---     local client = assert(vim.lsp.get_client_by_id(args.data.client_id))\n---\n---     if vim.lsp.inline_completion and\n---        client:supports_method(vim.lsp.protocol.Methods.textDocument_inlineCompletion, bufnr) then\n---       vim.lsp.inline_completion.enable(true, { bufnr = bufnr })\n---\n---       -- Tab to accept suggestion\n---       vim.keymap.set('i', '<Tab>', function()\n---         if vim.lsp.inline_completion.is_visible() then\n---           return vim.lsp.inline_completion.accept()\n---         else\n---           return '<Tab>'\n---         end\n---       end, { expr = true, buffer = bufnr, desc = 'GitLab Duo: Accept suggestion' })\n---\n---       -- Alt/Option+[ for previous suggestion\n---       vim.keymap.set('i', '<M-[>', vim.lsp.inline_completion.select_prev,\n---         { buffer = bufnr, desc = 'GitLab Duo: Previous suggestion' })\n---\n---       -- Alt/Option+] for next suggestion\n---       vim.keymap.set('i', '<M-]>', vim.lsp.inline_completion.select_next,\n---         { buffer = bufnr, desc = 'GitLab Duo: Next suggestion' })\n---     end\n---   end\n--- })\n--- ```\n\n-- Configuration\nlocal config = {\n  gitlab_url = 'https://gitlab.com',\n  -- This is a oauth application created from tachyons-gitlab account with `api` scope\n  client_id = '00bb391f527d2e77b3467b0b6b900151cc6a28dcfb18fa1249871e43bc3e5832',\n  scopes = 'api',\n  token_file = vim.fn.stdpath('data') .. '/gitlab_duo_oauth.json',\n}\n\n-- Helper function to make POST requests with curl via vim.system\nlocal function curl_post(url, data, headers)\n  local curl_args = {\n    'curl',\n    '-s',\n    '-w',\n    '\\n%{http_code}',\n    '-X',\n    'POST',\n    url,\n  }\n\n  -- Add headers\n  for key, value in pairs(headers or {}) do\n    table.insert(curl_args, '-H')\n    table.insert(curl_args, key .. ': ' .. value)\n  end\n\n  -- Add data\n  if data then\n    table.insert(curl_args, '-d')\n    table.insert(curl_args, data)\n  end\n\n  local result = vim.system(curl_args, { text = true }):wait()\n\n  -- Split body and status code\n  local output = result.stdout or ''\n  local body_end = output:match('.*\\n()%d+$')\n\n  local body = ''\n  local status = 0\n\n  if body_end then\n    body = output:sub(1, body_end - 2) -- -2 to remove trailing newline\n    status = tonumber(output:match('\\n(%d+)$')) or 0\n  else\n    body = output\n  end\n\n  return {\n    status = status,\n    body = body,\n  }\nend\n\n-- Token management\nlocal function save_token(token_data)\n  token_data.saved_at = os.time()\n  local file = io.open(config.token_file, 'w')\n  if file then\n    file:write(vim.json.encode(token_data))\n    file:close()\n    return true\n  end\n  return false\nend\n\nlocal function load_token()\n  if vim.fn.filereadable(config.token_file) == 0 then\n    return nil\n  end\n\n  local blob = vim.fn.readblob(config.token_file)\n  return vim.json.decode(blob)\nend\n\nlocal function is_token_expired(token_data)\n  if not token_data or not token_data.saved_at or not token_data.expires_in then\n    return true\n  end\n  local token_age = os.time() - token_data.saved_at\n  return token_age >= (token_data.expires_in - 60) -- 60 second buffer\nend\n\nlocal function refresh_access_token(refresh_token)\n  vim.notify('Refreshing GitLab OAuth token...', vim.log.levels.INFO)\n\n  local response = curl_post(\n    config.gitlab_url .. '/oauth/token',\n    string.format('client_id=%s&refresh_token=%s&grant_type=refresh_token', config.client_id, refresh_token),\n    { ['Content-Type'] = 'application/x-www-form-urlencoded' }\n  )\n\n  if response.status ~= 200 then\n    vim.notify('Failed to refresh token: ' .. (response.body or 'Unknown error'), vim.log.levels.ERROR)\n    return nil\n  end\n\n  local ok, body = pcall(vim.json.decode, response.body)\n  if not ok or not body.access_token then\n    vim.notify('Invalid refresh response', vim.log.levels.ERROR)\n    return nil\n  end\n\n  save_token(body)\n  vim.notify('Token refreshed successfully', vim.log.levels.INFO)\n  return body\nend\n\nlocal function get_valid_token()\n  local token_data = load_token()\n\n  if not token_data then\n    return nil, 'no_token'\n  end\n\n  if is_token_expired(token_data) then\n    if token_data.refresh_token then\n      local new_token_data = refresh_access_token(token_data.refresh_token)\n      if new_token_data then\n        return new_token_data.access_token, 'refreshed'\n      end\n      return nil, 'refresh_failed'\n    end\n    return nil, 'expired'\n  end\n\n  return token_data.access_token, 'valid'\nend\n\n-- OAuth Device Flow\nlocal function device_authorization()\n  local response = curl_post(\n    config.gitlab_url .. '/oauth/authorize_device',\n    string.format('client_id=%s&scope=%s', config.client_id, config.scopes),\n    { ['Content-Type'] = 'application/x-www-form-urlencoded' }\n  )\n\n  if response.status ~= 200 then\n    vim.notify('Device authorization failed: ' .. response.status, vim.log.levels.ERROR)\n    return nil\n  end\n\n  local data = vim.json.decode(response.body)\n\n  return data\nend\n\nlocal function poll_for_token(device_code, interval, client)\n  local max_attempts = 60\n  local attempts = 0\n\n  local function poll()\n    attempts = attempts + 1\n\n    local response = curl_post(\n      config.gitlab_url .. '/oauth/token',\n      string.format(\n        'client_id=%s&device_code=%s&grant_type=urn:ietf:params:oauth:grant-type:device_code',\n        config.client_id,\n        device_code\n      ),\n      { ['Content-Type'] = 'application/x-www-form-urlencoded' }\n    )\n\n    local ok, body = pcall(vim.json.decode, response.body)\n    if not ok then\n      vim.notify('Failed to parse token response', vim.log.levels.ERROR)\n      return\n    end\n\n    if response.status == 200 and body.access_token then\n      save_token(body)\n      vim.notify('GitLab Duo authentication successful!', vim.log.levels.INFO)\n\n      -- Update LSP with new token\n      vim.schedule(function()\n        client:notify('workspace/didChangeConfiguration', {\n          settings = {\n            token = body.access_token,\n            baseUrl = config.gitlab_url,\n          },\n        })\n      end)\n      return\n    end\n\n    if body.error == 'authorization_pending' then\n      if attempts < max_attempts then\n        vim.defer_fn(poll, interval * 1000)\n      else\n        vim.notify('Authorization timed out', vim.log.levels.ERROR)\n      end\n    elseif body.error == 'slow_down' then\n      vim.defer_fn(poll, (interval + 5) * 1000)\n    elseif body.error == 'access_denied' then\n      vim.notify('Authorization denied', vim.log.levels.ERROR)\n    elseif body.error == 'expired_token' then\n      vim.notify('Device code expired. Please run :LspGitLabDuoSignIn again', vim.log.levels.ERROR)\n    else\n      vim.notify('OAuth error: ' .. (body.error or 'unknown'), vim.log.levels.ERROR)\n    end\n  end\n\n  poll()\nend\n\n---@param client vim.lsp.Client\nlocal function sign_in(client)\n  vim.notify('Starting GitLab device authorization...', vim.log.levels.INFO)\n\n  local auth_data = device_authorization()\n  if not auth_data then\n    return\n  end\n\n  vim.ui.open(auth_data.verification_uri .. '?user_code=' .. auth_data.user_code)\n\n  poll_for_token(auth_data.device_code, auth_data.interval or 5, client)\nend\n\n---@param client vim.lsp.Client\nlocal function sign_out(client)\n  local ok = os.remove(config.token_file)\n  if ok then\n    vim.notify('Signed out. Token removed.', vim.log.levels.INFO)\n    client:notify('workspace/didChangeConfiguration', {\n      settings = { token = '' },\n    })\n  else\n    vim.notify('Failed to remove token file', vim.log.levels.ERROR)\n  end\nend\n\nlocal function show_status()\n  local token_data = load_token()\n\n  if not token_data then\n    vim.notify('Not signed in. Run :LspGitLabDuoSignIn to authenticate.', vim.log.levels.INFO)\n    return\n  end\n\n  local info = {\n    'GitLab Duo Status:',\n    '',\n    'Instance: ' .. config.gitlab_url,\n    'Signed in: Yes',\n    'Has refresh token: ' .. (token_data.refresh_token and 'Yes' or 'No'),\n  }\n\n  if token_data.saved_at and token_data.expires_in then\n    local time_left = token_data.expires_in - (os.time() - token_data.saved_at)\n    if time_left > 0 then\n      local hours = math.floor(time_left / 3600)\n      local minutes = math.floor((time_left % 3600) / 60)\n      table.insert(info, string.format('Token expires in: %dh %dm', hours, minutes))\n    else\n      table.insert(info, 'Token status: EXPIRED')\n    end\n  end\n\n  vim.notify(table.concat(info, '\\n'), vim.log.levels.INFO)\nend\n\n---@type vim.lsp.Config\nreturn {\n  cmd = {\n    'npx',\n    '--registry=https://gitlab.com/api/v4/packages/npm/',\n    '@gitlab-org/gitlab-lsp',\n    '--stdio',\n  },\n  root_markers = { '.git' },\n  filetypes = {\n    'ruby',\n    'go',\n    'javascript',\n    'typescript',\n    'typescriptreact',\n    'javascriptreact',\n    'rust',\n    'lua',\n    'python',\n    'java',\n    'cpp',\n    'c',\n    'php',\n    'cs',\n    'kotlin',\n    'swift',\n    'scala',\n    'vue',\n    'svelte',\n    'html',\n    'css',\n    'scss',\n    'json',\n    'yaml',\n  },\n  init_options = {\n    editorInfo = {\n      name = 'Neovim',\n      version = tostring(vim.version()),\n    },\n    editorPluginInfo = {\n      name = 'Neovim LSP',\n      version = tostring(vim.version()),\n    },\n    ide = {\n      name = 'Neovim',\n      version = tostring(vim.version()),\n      vendor = 'Neovim',\n    },\n    extension = {\n      name = 'Neovim LSP Client',\n      version = tostring(vim.version()),\n    },\n  },\n  settings = {\n    baseUrl = config.gitlab_url,\n    logLevel = 'info',\n    codeCompletion = {\n      enableSecretRedaction = true,\n    },\n    telemetry = {\n      enabled = false,\n    },\n    featureFlags = {\n      streamCodeGenerations = false,\n    },\n  },\n  on_init = function(client)\n    -- Handle token validation errors\n    client.handlers['$/gitlab/token/check'] = function(_, result)\n      if result and result.reason then\n        vim.notify(string.format('GitLab Duo: %s - %s', result.reason, result.message or ''), vim.log.levels.ERROR)\n\n        -- Try to refresh if possible\n        local token_data = load_token()\n        if token_data and token_data.refresh_token then\n          vim.schedule(function()\n            local new_token_data = refresh_access_token(token_data.refresh_token)\n            if new_token_data then\n              client:notify('workspace/didChangeConfiguration', {\n                settings = { token = new_token_data.access_token, baseUrl = config.gitlab_url },\n              })\n            else\n              vim.notify('Run :LspGitLabDuoSignIn to re-authenticate', vim.log.levels.WARN)\n            end\n          end)\n        else\n          vim.notify('Run :LspGitLabDuoSignIn to authenticate', vim.log.levels.WARN)\n        end\n      end\n    end\n\n    -- Handle feature state changes\n    client.handlers['$/gitlab/featureStateChange'] = function(_, result)\n      if result and result.state == 'disabled' and result.checks then\n        for _, check in ipairs(result.checks) do\n          vim.notify(string.format('GitLab Duo: %s', check.message or check.id), vim.log.levels.WARN)\n        end\n      end\n    end\n\n    -- Check authentication status\n    local token, status = get_valid_token()\n\n    if token then\n      client:notify('workspace/didChangeConfiguration', {\n        settings = {\n          token = token,\n          baseUrl = config.gitlab_url,\n        },\n      })\n    end\n\n    if not token then\n      vim.notify('GitLab Duo: Not authenticated. Run :LspGitLabDuoSignIn to sign in.', vim.log.levels.WARN)\n    elseif status == 'refreshed' then\n      vim.notify('GitLab Duo: Token refreshed automatically', vim.log.levels.INFO)\n    end\n  end,\n  on_attach = function(client, bufnr)\n    vim.api.nvim_buf_create_user_command(bufnr, 'LspGitLabDuoSignIn', function()\n      sign_in(client)\n    end, { desc = 'Sign in to GitLab Duo with OAuth' })\n\n    vim.api.nvim_buf_create_user_command(bufnr, 'LspGitLabDuoSignOut', function()\n      sign_out(client)\n    end, { desc = 'Sign out from GitLab Duo' })\n\n    vim.api.nvim_buf_create_user_command(bufnr, 'LspGitLabDuoStatus', function()\n      show_status()\n    end, { desc = 'Show GitLab Duo authentication status' })\n  end,\n}\n"
  },
  {
    "path": "lsp/glasgow.lua",
    "content": "---@brief\n---\n--- https://github.com/nolanderc/glasgow\n---\n--- Provides language features for WGSL (WebGPU Shading Language):\n--- - Completions:\n---     - Local functions/variables/types.\n---     - Fields and swizzles.\n---     - Builtin types and functions (`dot`, `reflect`, `textureSample`, `vec3`, `mat4x2`, etc.)\n--- - Hover Documentation:\n---     - Function signatures.\n---     - Variable types.\n---     - Includes builtin types and functions. Text is taken from the WGSL specification.\n--- - Goto Definition\n--- - Find all References\n--- - Rename\n--- - Formatter\n---\n--- `glasgow` can be installed via `cargo`:\n--- ```sh\n--- cargo install glasgow\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'glasgow' },\n  filetypes = { 'wgsl' },\n  root_markers = { '.git' },\n  settings = {},\n}\n"
  },
  {
    "path": "lsp/gleam.lua",
    "content": "---@brief\n---\n--- https://github.com/gleam-lang/gleam\n---\n--- A language server for Gleam Programming Language.\n---\n--- It comes with the Gleam compiler, for installation see: [Installing Gleam](https://gleam.run/getting-started/installing/)\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'gleam', 'lsp' },\n  filetypes = { 'gleam' },\n  root_markers = { 'gleam.toml', '.git' },\n}\n"
  },
  {
    "path": "lsp/glint.lua",
    "content": "---@brief\n---\n--- https://github.com/typed-ember/glint\n--- https://typed-ember.gitbook.io/glint/\n--- `glint-language-server` is installed when adding `@glint/core` to your project's devDependencies:\n---\n--- ```sh\n--- npm install @glint/core --save-dev\n--- yarn add -D @glint/core\n---\n--- This configuration uses the local installation of `glint-language-server`\n--- (found in the `node_modules` directory of your project).\n---\n--- To use a global installation of `glint-language-server`,\n--- set the `init_options.glint.useGlobal` to `true`.\n---\n--- vim.lsp.config('glint', {\n---   init_options = {\n---     glint = {\n---       useGlobal = true,\n---     },\n---   },\n--- })\n\n---@type vim.lsp.Config\nreturn {\n  cmd = function(dispatchers, config)\n    ---@diagnostic disable-next-line: undefined-field\n    local cmd = (config.init_options.glint.useGlobal or not config.root_dir) and { 'glint-language-server' }\n      or { config.root_dir .. '/node_modules/.bin/glint-language-server' }\n    return vim.lsp.rpc.start(cmd, dispatchers)\n  end,\n  init_options = {\n    glint = {\n      useGlobal = false,\n    },\n  },\n  filetypes = {\n    'html.handlebars',\n    'handlebars',\n    'typescript',\n    'typescript.glimmer',\n    'javascript',\n    'javascript.glimmer',\n  },\n  root_markers = {\n    '.glintrc.yml',\n    '.glintrc',\n    '.glintrc.json',\n    '.glintrc.js',\n    'glint.config.js',\n    'package.json',\n  },\n  workspace_required = true,\n}\n"
  },
  {
    "path": "lsp/glsl_analyzer.lua",
    "content": "---@brief\n---\n--- https://github.com/nolanderc/glsl_analyzer\n---\n--- Language server for GLSL\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'glsl_analyzer' },\n  filetypes = { 'glsl', 'vert', 'tesc', 'tese', 'frag', 'geom', 'comp' },\n  root_markers = { '.git' },\n  capabilities = {},\n}\n"
  },
  {
    "path": "lsp/glslls.lua",
    "content": "---@brief\n---\n--- https://github.com/svenstaro/glsl-language-server\n---\n--- Language server implementation for GLSL\n---\n--- `glslls` can be compiled and installed manually, or, if your distribution has access to the AUR,\n--- via the `glsl-language-server` AUR package\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'glslls', '--stdin' },\n  filetypes = { 'glsl', 'vert', 'tesc', 'tese', 'frag', 'geom', 'comp' },\n  root_markers = { '.git' },\n  capabilities = {\n    textDocument = {\n      completion = {\n        editsNearCursor = true,\n      },\n    },\n    offsetEncoding = { 'utf-8', 'utf-16' },\n  },\n}\n"
  },
  {
    "path": "lsp/gn_language_server.lua",
    "content": "---@brief\n---\n--- https://github.com/google/gn-language-server\n---\n--- A language server for GN, the build configuration language used in Chromium,\n--- Fuchsia, and other projects.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'gn-language-server', '--stdio' },\n  filetypes = { 'gn' },\n  root_markers = { '.gn', '.git' },\n}\n"
  },
  {
    "path": "lsp/gnls.lua",
    "content": "---@brief\n---\n--- https://github.com/microsoft/gnls\n---\n--- Microsoft's language server for GN build files.\n---\n--- Assuming there is a `gnls` script somewhere in your `$PATH`, containing\n--- for example:\n---\n--- ```shell\n--- GNLS_SRC_DIR=</path/to/gnls>\n---\n--- exec node ${GNLS_SRC_DIR}/build/server.js $@\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'gnls', '--stdio' },\n  filetypes = { 'gn' },\n  root_markers = { '.gn', '.git' },\n}\n"
  },
  {
    "path": "lsp/golangci_lint_ls.lua",
    "content": "---@brief\n---\n--- Combination of both lint server and client\n---\n--- https://github.com/nametake/golangci-lint-langserver\n--- https://github.com/golangci/golangci-lint\n---\n---\n--- Installation of binaries needed is done via\n---\n--- ```\n--- go install github.com/nametake/golangci-lint-langserver@latest\n--- go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'golangci-lint-langserver' },\n  filetypes = { 'go', 'gomod' },\n  init_options = {\n    command = {\n      'golangci-lint',\n      'run',\n      -- disable all output formats that might be enabled by the users .golangci.yml\n      '--output.text.path=',\n      '--output.tab.path=',\n      '--output.html.path=',\n      '--output.checkstyle.path=',\n      '--output.junit-xml.path=',\n      '--output.teamcity.path=',\n      '--output.sarif.path=',\n      -- disable stats output\n      '--show-stats=false',\n      -- enable JSON output to be used by the language server\n      '--output.json.path=stdout',\n    },\n  },\n  root_markers = {\n    '.golangci.yml',\n    '.golangci.yaml',\n    '.golangci.toml',\n    '.golangci.json',\n    'go.work',\n    'go.mod',\n    '.git',\n  },\n  before_init = function(_, config)\n    -- Add support for golangci-lint V1 (in V2 `--out-format=json` was replaced by\n    -- `--output.json.path=stdout`).\n    local v1, v2 = false, false\n    -- PERF: `golangci-lint version` is very slow (about 0.1 sec) so let's find\n    -- version using `go version -m $(which golangci-lint) | grep '^\\smod'`.\n    if vim.fn.executable 'go' == 1 then\n      local exe = vim.fn.exepath 'golangci-lint'\n      local version = vim.system({ 'go', 'version', '-m', exe }):wait()\n      v1 = string.match(version.stdout, '\\tmod\\tgithub.com/golangci/golangci%-lint\\t')\n      v2 = string.match(version.stdout, '\\tmod\\tgithub.com/golangci/golangci%-lint/v2\\t')\n    end\n    if not v1 and not v2 then\n      local version = vim.system({ 'golangci-lint', 'version' }):wait()\n      v1 = string.match(version.stdout, 'version v?1%.')\n    end\n    if v1 then\n      config.init_options.command = { 'golangci-lint', 'run', '--out-format', 'json' }\n    end\n  end,\n}\n"
  },
  {
    "path": "lsp/gopls.lua",
    "content": "---@brief\n---\n--- https://github.com/golang/tools/tree/master/gopls\n---\n--- Google's lsp server for golang.\n\n--- @class go_dir_custom_args\n---\n--- @field envvar_id string\n---\n--- @field custom_subdir string?\n\nlocal mod_cache = nil\nlocal std_lib = nil\n\n---@param custom_args go_dir_custom_args\n---@param on_complete fun(dir: string | nil)\nlocal function identify_go_dir(custom_args, on_complete)\n  local cmd = { 'go', 'env', custom_args.envvar_id }\n  vim.system(cmd, { text = true }, function(output)\n    local res = vim.trim(output.stdout or '')\n    if output.code == 0 and res ~= '' then\n      if custom_args.custom_subdir and custom_args.custom_subdir ~= '' then\n        res = res .. custom_args.custom_subdir\n      end\n      on_complete(res)\n    else\n      vim.schedule(function()\n        vim.notify(\n          ('[gopls] identify ' .. custom_args.envvar_id .. ' dir cmd failed with code %d: %s\\n%s'):format(\n            output.code,\n            vim.inspect(cmd),\n            output.stderr\n          )\n        )\n      end)\n      on_complete(nil)\n    end\n  end)\nend\n\n---@return string?\nlocal function get_std_lib_dir()\n  if std_lib and std_lib ~= '' then\n    return std_lib\n  end\n\n  identify_go_dir({ envvar_id = 'GOROOT', custom_subdir = '/src' }, function(dir)\n    if dir then\n      std_lib = dir\n    end\n  end)\n  return std_lib\nend\n\n---@return string?\nlocal function get_mod_cache_dir()\n  if mod_cache and mod_cache ~= '' then\n    return mod_cache\n  end\n\n  identify_go_dir({ envvar_id = 'GOMODCACHE' }, function(dir)\n    if dir then\n      mod_cache = dir\n    end\n  end)\n  return mod_cache\nend\n\n---@param fname string\n---@return string?\nlocal function get_root_dir(fname)\n  if mod_cache and fname:sub(1, #mod_cache) == mod_cache then\n    local clients = vim.lsp.get_clients({ name = 'gopls' })\n    if #clients > 0 then\n      return clients[#clients].config.root_dir\n    end\n  end\n  if std_lib and fname:sub(1, #std_lib) == std_lib then\n    local clients = vim.lsp.get_clients({ name = 'gopls' })\n    if #clients > 0 then\n      return clients[#clients].config.root_dir\n    end\n  end\n  return vim.fs.root(fname, 'go.work') or vim.fs.root(fname, 'go.mod') or vim.fs.root(fname, '.git')\nend\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'gopls' },\n  filetypes = { 'go', 'gomod', 'gowork', 'gotmpl' },\n  root_dir = function(bufnr, on_dir)\n    local fname = vim.api.nvim_buf_get_name(bufnr)\n    get_mod_cache_dir()\n    get_std_lib_dir()\n    -- see: https://github.com/neovim/nvim-lspconfig/issues/804\n    on_dir(get_root_dir(fname))\n  end,\n}\n"
  },
  {
    "path": "lsp/gradle_ls.lua",
    "content": "---@brief\n---\n--- https://github.com/microsoft/vscode-gradle\n---\n--- Microsoft's lsp server for gradle files\n---\n--- If you're setting this up manually, build vscode-gradle using `./gradlew installDist` and point `cmd` to the `gradle-language-server` generated in the build directory\n\nlocal bin_name = 'gradle-language-server'\nif vim.fn.has 'win32' == 1 then\n  bin_name = bin_name .. '.bat'\nend\n\n---@type vim.lsp.Config\nreturn {\n  filetypes = { 'groovy' },\n  root_markers = {\n    'settings.gradle', -- Gradle (multi-project)\n    'build.gradle', -- Gradle\n  },\n  cmd = { bin_name },\n  -- gradle-language-server expects init_options.settings to be defined\n  init_options = {\n    settings = {\n      gradleWrapperEnabled = true,\n    },\n  },\n}\n"
  },
  {
    "path": "lsp/grammarly.lua",
    "content": "---@brief\n---\n--- https://github.com/znck/grammarly\n---\n--- `grammarly-languageserver` can be installed via `npm`:\n---\n--- ```sh\n--- npm i -g grammarly-languageserver\n--- ```\n---\n--- WARNING: Since this language server uses Grammarly's API, any document you open with it running is shared with them. Please evaluate their [privacy policy](https://www.grammarly.com/privacy-policy) before using this.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'grammarly-languageserver', '--stdio' },\n  filetypes = { 'markdown' },\n  root_markers = { '.git' },\n  handlers = {\n    ['$/updateDocumentState'] = function()\n      return ''\n    end,\n  },\n  init_options = {\n    clientId = 'client_BaDkMgx4X19X9UxxYRCXZo',\n  },\n}\n"
  },
  {
    "path": "lsp/graphql.lua",
    "content": "---@brief\n---\n--- https://github.com/graphql/graphiql/tree/main/packages/graphql-language-service-cli\n---\n--- `graphql-lsp` can be installed via `npm`:\n---\n--- ```sh\n--- npm install -g graphql-language-service-cli\n--- ```\n---\n--- Note that you must also have [the graphql package](https://github.com/graphql/graphql-js) installed within your project and create a [GraphQL config file](https://the-guild.dev/graphql/config/docs).\n\nlocal util = require 'lspconfig.util'\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'graphql-lsp', 'server', '-m', 'stream' },\n  filetypes = { 'graphql', 'typescriptreact', 'javascriptreact' },\n  root_dir = function(bufnr, on_dir)\n    local fname = vim.api.nvim_buf_get_name(bufnr)\n    on_dir(util.root_pattern('.graphqlrc*', '.graphql.config.*', 'graphql.config.*')(fname))\n  end,\n}\n"
  },
  {
    "path": "lsp/groovyls.lua",
    "content": "---@brief\n---\n--- https://github.com/prominic/groovy-language-server.git\n---\n--- Requirements:\n---  - Linux/macOS (for now)\n---  - Java 11+\n---\n--- `groovyls` can be installed by following the instructions [here](https://github.com/prominic/groovy-language-server.git#build).\n---\n--- If you have installed groovy language server, you can set the `cmd` custom path as follow:\n---\n--- ```lua\n--- vim.lsp.config('groovyls', {\n---     -- Unix\n---     cmd = { \"java\", \"-jar\", \"path/to/groovyls/groovy-language-server-all.jar\" },\n---     ...\n--- })\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = {\n    'java',\n    '-jar',\n    'groovy-language-server-all.jar',\n  },\n  filetypes = { 'groovy' },\n  root_markers = { 'Jenkinsfile', '.git' },\n}\n"
  },
  {
    "path": "lsp/guile_ls.lua",
    "content": "---@brief\n---\n--- https://codeberg.org/rgherdt/scheme-lsp-server\n---\n--- The recommended way is to install guile-lsp-server is using Guix. Unfortunately it is still not available at the official Guix channels, but you can use the provided channel guix.scm in the repo:\n--- ```sh\n--- guix package -f guix.scm\n--- ```\n---\n--- Checkout the repo for more info.\n---\n--- Note: This LSP will start on `scheme.guile` filetype. You can set this file type using `:help modeline` or adding https://gitlab.com/HiPhish/guile.vim to your plugins to automatically set it.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'guile-lsp-server' },\n  filetypes = {\n    'scheme.guile',\n  },\n  root_markers = { 'guix.scm', '.git' },\n}\n"
  },
  {
    "path": "lsp/harper_ls.lua",
    "content": "---@brief\n---\n--- https://github.com/automattic/harper\n---\n--- The language server for Harper, the slim, clean language checker for developers.\n---\n--- See our [documentation](https://writewithharper.com/docs/integrations/neovim) for more information on settings.\n---\n--- In short, they should look something like this:\n--- ```lua\n--- vim.lsp.config('harper_ls', {\n---   settings = {\n---     [\"harper-ls\"] = {\n---       userDictPath = \"~/dict.txt\"\n---     }\n---   },\n--- })\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'harper-ls', '--stdio' },\n  filetypes = {\n    'asciidoc',\n    'c',\n    'cpp',\n    'cs',\n    'gitcommit',\n    'go',\n    'html',\n    'java',\n    'javascript',\n    'lua',\n    'markdown',\n    'nix',\n    'python',\n    'ruby',\n    'rust',\n    'swift',\n    'toml',\n    'typescript',\n    'typescriptreact',\n    'haskell',\n    'cmake',\n    'typst',\n    'php',\n    'dart',\n    'clojure',\n    'sh',\n  },\n  root_markers = { '.harper-dictionary.txt', '.git' },\n}\n"
  },
  {
    "path": "lsp/hdl_checker.lua",
    "content": "---@brief\n---\n--- https://github.com/suoto/hdl_checker\n--- Language server for hdl-checker.\n--- Install using: `pip install hdl-checker --upgrade`\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'hdl_checker', '--lsp' },\n  filetypes = { 'vhdl', 'verilog', 'systemverilog' },\n  root_markers = { '.git' },\n}\n"
  },
  {
    "path": "lsp/helm_ls.lua",
    "content": "---@brief\n---\n--- https://github.com/mrjosh/helm-ls\n---\n--- Helm Language server. (This LSP is in early development)\n---\n--- `helm Language server` can be installed by following the instructions [here](https://github.com/mrjosh/helm-ls).\n---\n--- The default `cmd` assumes that the `helm_ls` binary can be found in `$PATH`.\n---\n--- If need Helm file highlight use [vim-helm](https://github.com/towolf/vim-helm) plugin.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'helm_ls', 'serve' },\n  filetypes = { 'helm', 'yaml.helm-values' },\n  root_markers = { 'Chart.yaml' },\n  capabilities = {\n    workspace = {\n      didChangeWatchedFiles = {\n        dynamicRegistration = true,\n      },\n    },\n  },\n}\n"
  },
  {
    "path": "lsp/herb_ls.lua",
    "content": "---@brief\n---\n--- https://www.npmjs.com/package/@herb-tools/language-server\n--- https://github.com/marcoroth/herb\n---\n--- HTML+ERB (HTML + Embedded Ruby)\n--- Powerful and seamless HTML-aware ERB parsing and tooling.\n---\n--- Herb is designed from the ground up to deeply understand `.html.erb` files,\n--- preserving both HTML and embedded Ruby structure without losing any details.\n---\n--- `herb-language-server` can be installed via `npm`:\n---\n--- ```sh\n--- npm install -g @herb-tools/language-server\n--- ```\n---\n--- or via `yarn`:\n---\n--- ```sh\n--- yarn global add @herb-tools/language-server\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'herb-language-server', '--stdio' },\n  filetypes = { 'html', 'eruby' },\n  root_markers = { 'Gemfile', '.git' },\n}\n"
  },
  {
    "path": "lsp/hhvm.lua",
    "content": "---@brief\n---\n--- Language server for programs written in Hack\n--- https://hhvm.com/\n--- https://github.com/facebook/hhvm\n--- See below for how to setup HHVM & typechecker:\n--- https://docs.hhvm.com/hhvm/getting-started/getting-started\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'hh_client', 'lsp' },\n  filetypes = { 'php', 'hack' },\n  root_markers = { '.hhconfig' },\n}\n"
  },
  {
    "path": "lsp/hie.lua",
    "content": "---@brief\n---\n--- https://github.com/haskell/haskell-ide-engine\n---\n--- the following init_options are supported (see https://github.com/haskell/haskell-ide-engine#configuration):\n--- ```lua\n--- init_options = {\n---   languageServerHaskell = {\n---     hlintOn = bool;\n---     maxNumberOfProblems = number;\n---     diagnosticsDebounceDuration = number;\n---     liquidOn = bool (default false);\n---     completionSnippetsOn = bool (default true);\n---     formatOnImportOn = bool (default true);\n---     formattingProvider = string (default \"brittany\", alternate \"floskell\");\n---   }\n--- }\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'hie-wrapper', '--lsp' },\n  filetypes = { 'haskell' },\n  root_markers = { 'stack.yaml', 'package.yaml', '.git' },\n}\n"
  },
  {
    "path": "lsp/hlasm.lua",
    "content": "---@brief\n---\n--- `hlasm_language_server` is a language server for the High Level Assembler language used on IBM SystemZ mainframes.\n---\n--- To learn how to configure the HLASM language server, see the [HLASM Language Support documentation](https://github.com/eclipse-che4z/che-che4z-lsp-for-hlasm).\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'hlasm_language_server' },\n  filetypes = { 'hlasm' },\n  root_markers = { '.hlasmplugin' },\n}\n"
  },
  {
    "path": "lsp/hls.lua",
    "content": "---@brief\n---\n--- https://github.com/haskell/haskell-language-server\n---\n--- Haskell Language Server\n---\n--- If you are using HLS 1.9.0.0, enable the language server to launch on Cabal files as well:\n---\n--- ```lua\n--- vim.lsp.config('hls', {\n---   filetypes = { 'haskell', 'lhaskell', 'cabal' },\n--- })\n--- ```\n\nlocal util = require 'lspconfig.util'\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'haskell-language-server-wrapper', '--lsp' },\n  filetypes = { 'haskell', 'lhaskell' },\n  root_dir = function(bufnr, on_dir)\n    local fname = vim.api.nvim_buf_get_name(bufnr)\n    on_dir(util.root_pattern('hie.yaml', 'stack.yaml', 'cabal.project', '*.cabal', 'package.yaml')(fname))\n  end,\n  settings = {\n    haskell = {\n      formattingProvider = 'ormolu',\n      cabalFormattingProvider = 'cabal-fmt',\n    },\n  },\n}\n"
  },
  {
    "path": "lsp/home_assistant.lua",
    "content": "---@brief\n---\n--- https://github.com/keesschollaart81/vscode-home-assistant\n---\n--- `vscode-home-assistant` can be installed via from source or by downloading\n--- and extracting the VSCode \"Home Assistant Config Helper\" extension\n---\n--- `vscode-home-assistant` is a language server for Home Assistant ported from the VSCode \"Home Assistant Config Helper\" extension.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'vscode-home-assistant', '--stdio' },\n  filetypes = { 'yaml' },\n  root_markers = {\n    'configuration.yaml',\n    'configuration.yml',\n  },\n}\n"
  },
  {
    "path": "lsp/hoon_ls.lua",
    "content": "---@brief\n---\n--- https://github.com/urbit/hoon-language-server\n---\n--- A language server for Hoon.\n---\n--- The language server can be installed via `npm install -g @hoon-language-server`\n---\n--- Start a fake ~zod with `urbit -F zod`.\n--- Start the language server at the Urbit Dojo prompt with: `|start %language-server`\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'hoon-language-server' },\n  filetypes = { 'hoon' },\n  root_markers = { '.git' },\n}\n"
  },
  {
    "path": "lsp/html.lua",
    "content": "---@brief\n---\n--- https://github.com/hrsh7th/vscode-langservers-extracted\n---\n--- `vscode-html-language-server` can be installed via `npm`:\n--- ```sh\n--- npm i -g vscode-langservers-extracted\n--- ```\n---\n--- Neovim does not currently include built-in snippets. `vscode-html-language-server` only provides completions when snippet support is enabled.\n--- To enable completion, install a snippet plugin and add the following override to your language client capabilities during setup.\n---\n--- The code-formatting feature of the lsp can be controlled with the `provideFormatter` option.\n---\n--- ```lua\n--- --Enable (broadcasting) snippet capability for completion\n--- local capabilities = vim.lsp.protocol.make_client_capabilities()\n--- capabilities.textDocument.completion.completionItem.snippetSupport = true\n---\n--- vim.lsp.config('html', {\n---   capabilities = capabilities,\n--- })\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'vscode-html-language-server', '--stdio' },\n  filetypes = { 'html' },\n  root_markers = { 'package.json', '.git' },\n  ---@type lspconfig.settings.html\n  settings = {},\n  init_options = {\n    provideFormatter = true,\n    embeddedLanguages = { css = true, javascript = true },\n    configurationSection = { 'html', 'css', 'javascript' },\n  },\n}\n"
  },
  {
    "path": "lsp/htmx.lua",
    "content": "---@brief\n---\n--- https://github.com/ThePrimeagen/htmx-lsp\n---\n--- `htmx-lsp` can be installed via `cargo`:\n--- ```sh\n--- cargo install htmx-lsp\n--- ```\n---\n--- Lsp is still very much work in progress and experimental. Use at your own risk.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'htmx-lsp' },\n  filetypes = { -- filetypes copied and adjusted from tailwindcss-intellisense\n    -- html\n    'aspnetcorerazor',\n    'astro',\n    'astro-markdown',\n    'blade',\n    'clojure',\n    'django-html',\n    'htmldjango',\n    'edge',\n    'eelixir', -- vim ft\n    'elixir',\n    'ejs',\n    'erb',\n    'eruby', -- vim ft\n    'gohtml',\n    'gohtmltmpl',\n    'haml',\n    'handlebars',\n    'hbs',\n    'html',\n    'htmlangular',\n    'html-eex',\n    'heex',\n    'jade',\n    'leaf',\n    'liquid',\n    'markdown',\n    'mdx',\n    'mustache',\n    'njk',\n    'nunjucks',\n    'php',\n    'razor',\n    'slim',\n    'twig',\n    -- js\n    'javascript',\n    'javascriptreact',\n    'reason',\n    'rescript',\n    'typescript',\n    'typescriptreact',\n    -- mixed\n    'vue',\n    'svelte',\n    'templ',\n  },\n  root_markers = { '.git' },\n}\n"
  },
  {
    "path": "lsp/hydra_lsp.lua",
    "content": "---@brief\n---\n--- https://github.com/Retsediv/hydra-lsp\n---\n--- LSP for Hydra Python package config files.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'hydra-lsp' },\n  filetypes = { 'yaml' },\n  root_markers = { '.git' },\n}\n"
  },
  {
    "path": "lsp/hylo_ls.lua",
    "content": "---@brief\n---\n--- https://github.com/hylo-lang/hylo-language-server\n---\n--- A language server for the Hylo programming language.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'hylo-language-server', '--stdio' },\n  filetypes = { 'hylo' },\n  root_markers = { '.git' },\n  settings = {},\n}\n"
  },
  {
    "path": "lsp/hyprls.lua",
    "content": "---@brief\n---\n--- https://github.com/hyprland-community/hyprls\n---\n--- `hyprls` can be installed via `go`:\n--- ```sh\n--- go install github.com/hyprland-community/hyprls/cmd/hyprls@latest\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'hyprls', '--stdio' },\n  filetypes = { 'hyprlang' },\n  root_markers = { '.git' },\n}\n"
  },
  {
    "path": "lsp/idris2_lsp.lua",
    "content": "---@brief\n---\n--- https://github.com/idris-community/idris2-lsp\n---\n--- The Idris 2 language server.\n---\n--- Plugins for the Idris 2 filetype include\n--- [Idris2-Vim](https://github.com/edwinb/idris2-vim) (fewer features, stable) and\n--- [Nvim-Idris2](https://github.com/ShinKage/nvim-idris2) (cutting-edge,\n--- experimental).\n---\n--- Idris2-Lsp requires a build of Idris 2 that includes the \"Idris 2 API\" package.\n--- Package managers with known support for this build include the\n--- [AUR](https://aur.archlinux.org/packages/idris2/) and\n--- [Homebrew](https://formulae.brew.sh/formula/idris2#default).\n---\n--- If your package manager does not support the Idris 2 API, you will need to build\n--- Idris 2 from source. Refer to the\n--- [the Idris 2 installation instructions](https://github.com/idris-lang/Idris2/blob/main/INSTALL.md)\n--- for details.  Steps 5 and 8 are listed as \"optional\" in that guide, but they are\n--- necessary in order to make the Idris 2 API available.\n---\n--- You need to install a version of Idris2-Lsp that is compatible with your\n--- version of Idris 2. There should be a branch corresponding to every released\n--- Idris 2 version after v0.4.0. Use the latest commit on that branch. For example,\n--- if you have Idris v0.5.1, you should use the v0.5.1 branch of Idris2-Lsp.\n---\n--- If your Idris 2 version is newer than the newest Idris2-Lsp branch, use the\n--- latest commit on the `master` branch, and set a reminder to check the Idris2-Lsp\n--- repo for the release of a compatible versioned branch.\n\nlocal util = require 'lspconfig.util'\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'idris2-lsp' },\n  filetypes = { 'idris2' },\n  root_dir = function(bufnr, on_dir)\n    local fname = vim.api.nvim_buf_get_name(bufnr)\n    on_dir(util.root_pattern '*.ipkg'(fname))\n  end,\n}\n"
  },
  {
    "path": "lsp/intelephense.lua",
    "content": "---@brief\n---\n--- https://intelephense.com/\n---\n--- `intelephense` can be installed via `npm`:\n--- ```sh\n--- npm install -g intelephense\n--- ```\n---\n--- ```lua\n--- -- See https://github.com/bmewburn/intelephense-docs/blob/master/installation.md#initialisation-options\n--- init_options = {\n---   storagePath = …, -- Optional absolute path to storage dir. Defaults to os.tmpdir().\n---   globalStoragePath = …, -- Optional absolute path to a global storage dir. Defaults to os.homedir().\n---   licenceKey = …, -- Optional licence key or absolute path to a text file containing the licence key.\n---   clearCache = …, -- Optional flag to clear server state. State can also be cleared by deleting {storagePath}/intelephense\n--- }\n--- -- See https://github.com/bmewburn/intelephense-docs\n--- settings = {\n---   intelephense = {\n---     files = {\n---       maxSize = 1000000;\n---     };\n---   };\n--- }\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'intelephense', '--stdio' },\n  filetypes = { 'php' },\n  root_markers = { '.git', 'composer.json' },\n  ---@type lspconfig.settings.intelephense\n  settings = {\n    intelephense = {\n      telemetry = {\n        enabled = false,\n      },\n    },\n  },\n}\n"
  },
  {
    "path": "lsp/janet_lsp.lua",
    "content": "---@brief\n---\n--- https://github.com/CFiggers/janet-lsp\n---\n--- A Language Server Protocol implementation for Janet.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = {\n    'janet-lsp',\n    '--stdio',\n  },\n  filetypes = { 'janet' },\n  root_markers = { 'project.janet', '.git' },\n}\n"
  },
  {
    "path": "lsp/java_language_server.lua",
    "content": "---@brief\n---\n--- https://github.com/georgewfraser/java-language-server\n---\n--- Java language server\n---\n--- Point `cmd` to `lang_server_linux.sh` or the equivalent script for macOS/Windows provided by java-language-server\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'java-language-server' },\n  filetypes = { 'java' },\n  root_markers = { 'build.gradle', 'build.gradle.kts', 'pom.xml', '.git' },\n  ---@type lspconfig.settings.java_language_server\n  settings = {},\n}\n"
  },
  {
    "path": "lsp/jdtls.lua",
    "content": "---@brief\n---\n--- https://projects.eclipse.org/projects/eclipse.jdt.ls\n---\n--- Language server for Java.\n---\n--- IMPORTANT: If you want all the features jdtls has to offer, [nvim-jdtls](https://github.com/mfussenegger/nvim-jdtls)\n--- is highly recommended. If all you need is diagnostics, completion, imports, gotos and formatting and some code actions\n--- you can keep reading here.\n---\n--- For manual installation you can download precompiled binaries from the\n--- [official downloads site](http://download.eclipse.org/jdtls/snapshots/?d)\n--- and ensure that the `PATH` variable contains the `bin` directory of the extracted archive.\n---\n--- ```lua\n---   -- init.lua\n---   vim.lsp.enable('jdtls')\n--- ```\n---\n--- You can also pass extra custom jvm arguments with the JDTLS_JVM_ARGS environment variable as a space separated list of arguments,\n--- that will be converted to multiple --jvm-arg=<param> args when passed to the jdtls script. This will allow for example tweaking\n--- the jvm arguments or integration with external tools like lombok:\n---\n--- ```sh\n--- export JDTLS_JVM_ARGS=\"-javaagent:$HOME/.local/share/java/lombok.jar\"\n--- ```\n---\n--- For automatic installation you can use the following unofficial installers/launchers under your own risk:\n---   - [jdtls-launcher](https://github.com/eruizc-dev/jdtls-launcher) (Includes lombok support by default)\n---     ```lua\n---       -- init.lua\n---       vim.lsp.config('jdtls', { cmd = { 'jdtls' } })\n---     ```\n\nlocal function get_jdtls_cache_dir()\n  return vim.fn.stdpath('cache') .. '/jdtls'\nend\n\nlocal function get_jdtls_workspace_dir()\n  return get_jdtls_cache_dir() .. '/workspace'\nend\n\nlocal function get_jdtls_jvm_args()\n  local env = os.getenv('JDTLS_JVM_ARGS')\n  local args = {}\n  for a in string.gmatch((env or ''), '%S+') do\n    local arg = string.format('--jvm-arg=%s', a)\n    table.insert(args, arg)\n  end\n  return unpack(args)\nend\n\nlocal root_markers1 = {\n  -- Multi-module projects\n  'mvnw', -- Maven\n  'gradlew', -- Gradle\n  'settings.gradle', -- Gradle\n  'settings.gradle.kts', -- Gradle\n  -- Use git directory as last resort for multi-module maven projects\n  -- In multi-module maven projects it is not really possible to determine what is the parent directory\n  -- and what is submodule directory. And jdtls does not break if the parent directory is at higher level than\n  -- actual parent pom.xml so propagating all the way to root git directory is fine\n  '.git',\n}\nlocal root_markers2 = {\n  -- Single-module projects\n  'build.xml', -- Ant\n  'pom.xml', -- Maven\n  'build.gradle', -- Gradle\n  'build.gradle.kts', -- Gradle\n}\n\n---@type vim.lsp.Config\nreturn {\n  ---@param dispatchers? vim.lsp.rpc.Dispatchers\n  ---@param config vim.lsp.ClientConfig\n  cmd = function(dispatchers, config)\n    local workspace_dir = get_jdtls_workspace_dir()\n    local data_dir = workspace_dir\n\n    if config.root_dir then\n      data_dir = data_dir .. '/' .. vim.fn.fnamemodify(config.root_dir, ':p:h:t')\n    end\n\n    local config_cmd = {\n      'jdtls',\n      '-data',\n      data_dir,\n      get_jdtls_jvm_args(),\n    }\n\n    return vim.lsp.rpc.start(config_cmd, dispatchers, {\n      cwd = config.cmd_cwd,\n      env = config.cmd_env,\n      detached = config.detached,\n    })\n  end,\n  filetypes = { 'java' },\n  root_markers = vim.fn.has('nvim-0.11.3') == 1 and { root_markers1, root_markers2 }\n    or vim.list_extend(root_markers1, root_markers2),\n  init_options = {},\n}\n"
  },
  {
    "path": "lsp/jedi_language_server.lua",
    "content": "---@brief\n---\n--- https://github.com/pappasam/jedi-language-server\n---\n--- `jedi-language-server`, a language server for Python, built on top of jedi\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'jedi-language-server' },\n  filetypes = { 'python' },\n  root_markers = {\n    'pyproject.toml',\n    'setup.py',\n    'setup.cfg',\n    'requirements.txt',\n    'Pipfile',\n    '.git',\n  },\n}\n"
  },
  {
    "path": "lsp/jinja_lsp.lua",
    "content": "---@brief\n---\n--- jinja-lsp enhances minijinja development experience by providing Helix/Nvim users with advanced features such as autocomplete, syntax highlighting, hover, goto definition, code actions and linting.\n---\n--- The file types are not detected automatically, you can register them manually (see below) or override the filetypes:\n---\n--- ```lua\n--- vim.filetype.add {\n---   extension = {\n---     jinja = 'jinja',\n---     jinja2 = 'jinja',\n---     j2 = 'jinja',\n---   },\n--- }\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  name = 'jinja_lsp',\n  cmd = { 'jinja-lsp' },\n  filetypes = { 'jinja' },\n  root_markers = { '.git' },\n}\n"
  },
  {
    "path": "lsp/jqls.lua",
    "content": "---@brief\n---\n--- https://github.com/wader/jq-lsp\n--- Language server for jq, written using Go.\n--- You can install the server easily using go install:\n--- ```sh\n--- # install directly\n--- go install github.com/wader/jq-lsp@master\n--- # copy binary to $PATH\n--- cp $(go env GOPATH)/bin/jq-lsp /usr/local/bin\n---\n--- ```\n--- Note: To activate properly nvim needs to know the jq filetype.\n--- You can add it via:\n--- ```lua\n--- vim.cmd([[au BufRead,BufNewFile *.jq setfiletype jq]])\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'jq-lsp' },\n  filetypes = { 'jq' },\n  root_markers = { '.git' },\n}\n"
  },
  {
    "path": "lsp/jsonls.lua",
    "content": "---@brief\n---\n--- https://github.com/hrsh7th/vscode-langservers-extracted\n---\n--- vscode-json-language-server, a language server for JSON and JSON schema\n---\n--- `vscode-json-language-server` can be installed via `npm`:\n--- ```sh\n--- npm i -g vscode-langservers-extracted\n--- ```\n---\n--- `vscode-json-language-server` only provides completions when snippet support is enabled. If you use Neovim older than v0.10 you need to enable completion, install a snippet plugin and add the following override to your language client capabilities during setup.\n---\n--- ```lua\n--- --Enable (broadcasting) snippet capability for completion\n--- local capabilities = vim.lsp.protocol.make_client_capabilities()\n--- capabilities.textDocument.completion.completionItem.snippetSupport = true\n---\n--- vim.lsp.config('jsonls', {\n---   capabilities = capabilities,\n--- })\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'vscode-json-language-server', '--stdio' },\n  filetypes = { 'json', 'jsonc' },\n  init_options = {\n    provideFormatter = true,\n  },\n  root_markers = { '.git' },\n}\n"
  },
  {
    "path": "lsp/jsonnet_ls.lua",
    "content": "--- @brief\n---\n--- https://github.com/grafana/jsonnet-language-server\n---\n--- A Language Server Protocol (LSP) server for Jsonnet.\n---\n--- The language server can be installed with `go`:\n--- ```sh\n--- go install github.com/grafana/jsonnet-language-server@latest\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'jsonnet-language-server' },\n  filetypes = {\n    'jsonnet',\n    'libsonnet',\n  },\n  root_markers = { 'jsonnetfile.json', '.git' },\n}\n"
  },
  {
    "path": "lsp/julials.lua",
    "content": "---@brief\n---\n--- https://github.com/julia-vscode/julia-vscode\n---\n--- LanguageServer.jl, SymbolServer.jl and StaticLint.jl can be installed with `julia` and `Pkg`:\n--- ```sh\n--- julia --project=~/.julia/environments/nvim-lspconfig -e 'using Pkg; Pkg.add(\"LanguageServer\"); Pkg.add(\"SymbolServer\"); Pkg.add(\"StaticLint\")'\n--- ```\n--- where `~/.julia/environments/nvim-lspconfig` is the location where\n--- the default configuration expects LanguageServer.jl, SymbolServer.jl and StaticLint.jl to be installed.\n---\n--- To update an existing install, use the following command:\n--- ```sh\n--- julia --project=~/.julia/environments/nvim-lspconfig -e 'using Pkg; Pkg.update()'\n--- ```\n---\n--- Note: In order to have LanguageServer.jl pick up installed packages or dependencies in a\n--- Julia project, you must make sure that the project is instantiated:\n--- ```sh\n--- julia --project=/path/to/my/project -e 'using Pkg; Pkg.instantiate()'\n--- ```\n---\n--- To activate a Julia environment, use the `:LspJuliaActivateEnv` command. A prompt will ask you to select a Julia\n--- environment from the list of environments found in the current working directory and the `environments/` folder of\n--- `$JULIA_DEPOT_PATH` entries. You can also provide a path to a Julia environment directly.\n--- Example: `:LspJuliaActivateEnv /path/to/my/project`.\n---\n--- Note: The julia programming language searches for global environments within the `environments/`\n--- folder of `$JULIA_DEPOT_PATH` entries. By default this simply `~/.julia/environments`\n\nlocal root_files = { 'Project.toml', 'JuliaProject.toml' }\n\nlocal function activate_env(args)\n  assert(vim.fn.has 'nvim-0.10' == 1, 'requires Nvim 0.10 or newer')\n  local bufnr = vim.api.nvim_get_current_buf()\n  local julials_clients = vim.lsp.get_clients { bufnr = bufnr, name = 'julials' }\n  assert(\n    #julials_clients > 0,\n    'method julia/activateenvironment is not supported by any servers active on the current buffer'\n  )\n  local function _activate_env(environment)\n    if environment then\n      for _, julials_client in ipairs(julials_clients) do\n        ---@diagnostic disable-next-line: param-type-mismatch\n        julials_client:notify('julia/activateenvironment', { envPath = environment })\n      end\n      vim.notify('Julia environment activated: \\n`' .. environment .. '`', vim.log.levels.INFO)\n    end\n  end\n  local path = args.args\n  if path ~= nil and #path > 0 then\n    path = vim.fs.normalize(vim.fn.fnamemodify(vim.fn.expand(path), ':p'))\n    local found_env = false\n    for _, project_file in ipairs(root_files) do\n      local file = vim.uv.fs_stat(vim.fs.joinpath(path, project_file))\n      if file and file.type then\n        found_env = true\n        break\n      end\n    end\n    if not found_env then\n      vim.notify('Path is not a julia environment: \\n`' .. path .. '`', vim.log.levels.WARN)\n      return\n    end\n    _activate_env(path)\n  else\n    local depot_paths = vim.env.JULIA_DEPOT_PATH\n        and vim.split(vim.env.JULIA_DEPOT_PATH, vim.fn.has 'win32' == 1 and ';' or ':')\n      or { vim.fn.expand '~/.julia' }\n    local environments = {}\n    vim.list_extend(environments, vim.fs.find(root_files, { type = 'file', upward = true, limit = math.huge }))\n    for _, depot_path in ipairs(depot_paths) do\n      local depot_env = vim.fs.joinpath(vim.fs.normalize(depot_path), 'environments')\n      vim.list_extend(\n        environments,\n        vim.fs.find(function(name, env_path)\n          return vim.tbl_contains(root_files, name) and string.sub(env_path, #depot_env + 1):match '^/[^/]*$'\n        end, { path = depot_env, type = 'file', limit = math.huge })\n      )\n    end\n    environments = vim.tbl_map(vim.fs.dirname, environments)\n    vim.ui.select(environments, { prompt = 'Select a Julia environment' }, _activate_env)\n  end\nend\n\nlocal cmd = {\n  'julia',\n  '--startup-file=no',\n  '--history-file=no',\n  '-e',\n  [[\n    # Load LanguageServer.jl: attempt to load from ~/.julia/environments/nvim-lspconfig\n    # with the regular load path as a fallback\n    ls_install_path = joinpath(\n        get(DEPOT_PATH, 1, joinpath(homedir(), \".julia\")),\n        \"environments\", \"nvim-lspconfig\"\n    )\n    pushfirst!(LOAD_PATH, ls_install_path)\n    using LanguageServer, SymbolServer, StaticLint\n    popfirst!(LOAD_PATH)\n    depot_path = get(ENV, \"JULIA_DEPOT_PATH\", \"\")\n    project_path = let\n        dirname(something(\n            ## 1. Finds an explicitly set project (JULIA_PROJECT)\n            Base.load_path_expand((\n                p = get(ENV, \"JULIA_PROJECT\", nothing);\n                p === nothing ? nothing : isempty(p) ? nothing : p\n            )),\n            ## 2. Look for a Project.toml file in the current working directory,\n            ##    or parent directories, with $HOME as an upper boundary\n            Base.current_project(),\n            ## 3. First entry in the load path\n            get(Base.load_path(), 1, nothing),\n            ## 4. Fallback to default global environment,\n            ##    this is more or less unreachable\n            Base.load_path_expand(\"@v#.#\"),\n        ))\n    end\n    @info \"Running language server\" VERSION pwd() project_path depot_path\n    server = LanguageServer.LanguageServerInstance(stdin, stdout, project_path, depot_path)\n    server.runlinter = true\n    run(server)\n  ]],\n}\n\n---@type vim.lsp.Config\nreturn {\n  cmd = cmd,\n  filetypes = { 'julia' },\n  root_markers = root_files,\n  on_attach = function(_, bufnr)\n    vim.api.nvim_buf_create_user_command(bufnr, 'LspJuliaActivateEnv', activate_env, {\n      desc = 'Activate a Julia environment',\n      nargs = '?',\n      complete = 'file',\n    })\n  end,\n}\n"
  },
  {
    "path": "lsp/just.lua",
    "content": "---@brief\n---\n--- https://github.com/terror/just-lsp\n---\n--- `just-lsp` is an LSP for just built on top of the tree-sitter-just parser.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'just-lsp' },\n  filetypes = { 'just' },\n  root_markers = { '.git' },\n}\n"
  },
  {
    "path": "lsp/kakehashi.lua",
    "content": "--- @brief\n---\n--- https://github.com/atusy/kakehashi\n---\n--- Tree-sitter-based language server that provides semantic tokens, selection ranges,\n--- and LSP bridging for embedded languages (e.g., code blocks in Markdown).\n---\n--- kakehashi works with any language that has a Tree-sitter grammar.\n--- Parsers and queries are automatically installed on first use\n--- when `autoInstall` is enabled (the default). This requires the\n--- `tree-sitter` CLI, a C compiler, and Git.\n---\n--- **You must specify `filetypes` in your call to `vim.lsp.config`** to\n--- restrict which files activate the server:\n---\n--- ```lua\n--- vim.lsp.config('kakehashi', {\n---   filetypes = { 'markdown', 'lua', 'rust', 'python' },\n---   init_options = {\n---     autoInstall = true,\n---     -- Optional: bridge LSP requests in injection regions\n---     languageServers = {\n---       ['lua_ls'] = {\n---         cmd = { 'lua-language-server' },\n---         languages = { 'lua' },\n---       },\n---     },\n---     languages = {\n---       markdown = {\n---         bridge = { lua_ls = { enabled = true } },\n---       },\n---     },\n---   },\n--- })\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'kakehashi' },\n  root_markers = { 'kakehashi.toml', '.git' },\n}\n"
  },
  {
    "path": "lsp/kcl.lua",
    "content": "---@brief\n---\n--- https://github.com/kcl-lang/kcl.nvim\n---\n--- Language server for the KCL configuration and policy language.\n---\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'kcl-language-server' },\n  filetypes = { 'kcl' },\n  root_markers = { '.git' },\n}\n"
  },
  {
    "path": "lsp/koka.lua",
    "content": "---@brief\n---\n--- https://koka-lang.github.io/koka/doc/index.html\n--- Koka is a functional programming language with effect types and handlers.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'koka', '--language-server', '--lsstdio' },\n  filetypes = { 'koka' },\n  root_markers = { '.git' },\n}\n"
  },
  {
    "path": "lsp/kotlin_language_server.lua",
    "content": "---@brief\n---\n--- A kotlin language server which was developed for internal usage and\n--- released afterwards. Maintaining is not done by the original author,\n--- but by fwcd.\n---\n--- It is built via gradle and developed on github.\n--- Source and additional description:\n--- https://github.com/fwcd/kotlin-language-server\n---\n--- This server requires vim to be aware of the kotlin-filetype.\n--- You could refer for this capability to:\n--- https://github.com/udalov/kotlin-vim (recommended)\n--- Note that there is no LICENSE specified yet.\n---\n--- For faster startup, you can setup caching by specifying a storagePath\n--- in the init_options. The default is your home directory.\n\n--- The presence of one of these files indicates a project root directory\n--\n--  These are configuration files for the various build systems supported by\n--  Kotlin. I am not sure whether the language server supports Ant projects,\n--  but I'm keeping it here as well since Ant does support Kotlin.\nlocal root_files = {\n  'settings.gradle', -- Gradle (multi-project)\n  'settings.gradle.kts', -- Gradle (multi-project)\n  'build.xml', -- Ant\n  'pom.xml', -- Maven\n  'build.gradle', -- Gradle\n  'build.gradle.kts', -- Gradle\n}\n\n---@type vim.lsp.Config\nreturn {\n  filetypes = { 'kotlin' },\n  root_markers = root_files,\n  cmd = { 'kotlin-language-server' },\n  init_options = {\n    -- Enables caching and use project root to store cache data.\n    storagePath = vim.fs.root(vim.fn.expand '%:p:h', root_files) --[[@as string]],\n  },\n}\n"
  },
  {
    "path": "lsp/kotlin_lsp.lua",
    "content": "---@brief\n---Pre-alpha official Kotlin support for Visual Studio Code and an implementation of Language Server Protocol for the Kotlin language.\n---\n---The server is based on IntelliJ IDEA and the IntelliJ IDEA Kotlin Plugin implementation.\n\n--- The presence of one of these files indicates a project root directory\n--\n--  These are configuration files for the various build systems supported by\n--  Kotlin.\n\n---@type vim.lsp.Config\nreturn {\n  filetypes = { 'kotlin' },\n  cmd = { 'kotlin-lsp', '--stdio' },\n  root_markers = {\n    'settings.gradle', -- Gradle (multi-project)\n    'settings.gradle.kts', -- Gradle (multi-project)\n    'pom.xml', -- Maven\n    'build.gradle', -- Gradle\n    'build.gradle.kts', -- Gradle\n    'workspace.json', -- Used to integrate your own build system\n  },\n}\n"
  },
  {
    "path": "lsp/kulala_ls.lua",
    "content": "---@brief\n---\n--- https://github.com/mistweaverco/kulala-ls\n---\n--- A minimal language server for HTTP syntax.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'kulala-ls', '--stdio' },\n  filetypes = { 'http' },\n  root_markers = { '.git' },\n}\n"
  },
  {
    "path": "lsp/laravel_ls.lua",
    "content": "---@brief\n---\n--- https://github.com/laravel-ls/laravel-ls\n---\n--- `laravel-ls`, language server for laravel\n---\n--- The default `cmd` assumes that the `laravel-ls` binary can be found in `$PATH`.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'laravel-ls' },\n  filetypes = { 'php', 'blade' },\n  root_markers = { 'artisan' },\n}\n"
  },
  {
    "path": "lsp/lean3ls.lua",
    "content": "---@brief\n---\n--- https://github.com/leanprover/lean-client-js/tree/master/lean-language-server\n---\n--- Lean installation instructions can be found\n--- [here](https://leanprover-community.github.io/get_started.html#regular-install).\n---\n--- Once Lean is installed, you can install the Lean 3 language server by running\n--- ```sh\n--- npm install -g lean-language-server\n--- ```\n---\n--- Note: that if you're using [lean.nvim](https://github.com/Julian/lean.nvim),\n--- that plugin fully handles the setup of the Lean language server,\n--- and you shouldn't set up `lean3ls` both with it and `lspconfig`.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'lean-language-server', '--stdio', '--', '-M', '4096', '-T', '100000' },\n  filetypes = { 'lean3' },\n  offset_encoding = 'utf-32',\n  root_dir = function(bufnr, on_dir)\n    local fname = vim.api.nvim_buf_get_name(bufnr)\n    fname = vim.fs.normalize(fname)\n    -- check if inside elan stdlib\n    local stdlib_dir\n    do\n      local _, endpos = fname:find '/lean/library'\n      if endpos then\n        stdlib_dir = fname:sub(1, endpos)\n      end\n    end\n\n    on_dir(\n      vim.fs.root(fname, { 'leanpkg.toml', 'leanpkg.path' })\n        or stdlib_dir\n        or vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    )\n  end,\n}\n"
  },
  {
    "path": "lsp/lelwel_ls.lua",
    "content": "---@brief\n---\n--- https://github.com/0x2a-42/lelwel\n---\n--- Language server for lelwel grammars.\n---\n--- You can install `lelwel-ls` via cargo:\n--- ```sh\n--- cargo install --features=\"lsp\" lelwel\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'lelwel-ls' },\n  filetypes = { 'llw' },\n  root_markers = { '.git' },\n}\n"
  },
  {
    "path": "lsp/lemminx.lua",
    "content": "---@brief\n---\n--- https://github.com/eclipse/lemminx\n---\n--- The easiest way to install the server is to get a binary from https://github.com/redhat-developer/vscode-xml/releases and place it on your PATH.\n---\n--- NOTE to macOS users: Binaries from unidentified developers are blocked by default. If you trust the downloaded binary, run it once, cancel the prompt, then remove the binary from Gatekeeper quarantine with `xattr -d com.apple.quarantine lemminx`. It should now run without being blocked.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'lemminx' },\n  filetypes = { 'xml', 'xsd', 'xsl', 'xslt', 'svg' },\n  root_markers = { '.git' },\n}\n"
  },
  {
    "path": "lsp/lexical.lua",
    "content": "---@brief\n---\n--- https://github.com/lexical-lsp/lexical\n---\n--- Lexical is a next-generation language server for the Elixir programming language.\n---\n--- To install from source, follow the [Detailed Installation Instructions](https://github.com/lexical-lsp/lexical/blob/main/pages/installation.md).\n--- Ensure to point `cmd` to the generated `_build/dev/package/lexical/start_lexical.sh` executable.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'lexical' },\n  filetypes = { 'elixir', 'eelixir', 'heex', 'surface' },\n  root_markers = { 'mix.exs', '.git' },\n}\n"
  },
  {
    "path": "lsp/lsp_ai.lua",
    "content": "---@brief\n---\n--- https://github.com/SilasMarvin/lsp-ai\n---\n--- LSP-AI is an open source language server that serves as a backend for AI-powered functionality in your favorite code\n--- editors. It offers features like in-editor chatting with LLMs and code completions.\n---\n---\n--- You will need to provide configuration for the inference backends and models you want to use, as well as configure\n--- completion/code actions. See the [wiki docs](https://github.com/SilasMarvin/lsp-ai/wiki/Configuration) and\n--- [examples](https://github.com/SilasMarvin/lsp-ai/blob/main/examples/nvim) for more information.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'lsp-ai' },\n  filetypes = {},\n  root_dir = nil,\n  init_options = {\n    memory = {\n      file_store = vim.empty_dict(),\n    },\n    models = vim.empty_dict(),\n  },\n}\n"
  },
  {
    "path": "lsp/ltex.lua",
    "content": "---@brief\n---\n--- https://github.com/valentjn/ltex-ls\n---\n--- LTeX Language Server: LSP language server for LanguageTool 🔍✔️ with support for LaTeX 🎓, Markdown 📝, and others\n---\n--- To install, download the latest [release](https://github.com/valentjn/ltex-ls/releases) and ensure `ltex-ls` is on your path.\n---\n--- This server accepts configuration via the `settings` key.\n---\n--- ```lua\n---   settings = {\n--- \t\tltex = {\n--- \t\t\tlanguage = \"en-GB\",\n--- \t\t},\n--- \t},\n--- ```\n---\n--- To support org files or R sweave, users can define a custom filetype autocommand (or use a plugin which defines these filetypes):\n---\n--- ```lua\n--- vim.cmd [[ autocmd BufRead,BufNewFile *.org set filetype=org ]]\n--- ```\n\nlocal language_id_mapping = {\n  bib = 'bibtex',\n  plaintex = 'tex',\n  rnoweb = 'rsweave',\n  rst = 'restructuredtext',\n  tex = 'latex',\n  pandoc = 'markdown',\n  text = 'plaintext',\n}\n\nlocal filetypes = {\n  'bib',\n  'gitcommit',\n  'markdown',\n  'org',\n  'plaintex',\n  'rst',\n  'rnoweb',\n  'tex',\n  'pandoc',\n  'quarto',\n  'rmd',\n  'context',\n  'html',\n  'xhtml',\n  'mail',\n  'text',\n}\n\nlocal function get_language_id(_, filetype)\n  local language_id = language_id_mapping[filetype]\n  if language_id then\n    return language_id\n  else\n    return filetype\n  end\nend\nlocal enabled_ids = {}\ndo\n  local enabled_keys = {}\n  for _, ft in ipairs(filetypes) do\n    local id = get_language_id({}, ft)\n    if not enabled_keys[id] then\n      enabled_keys[id] = true\n      table.insert(enabled_ids, id)\n    end\n  end\nend\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'ltex-ls' },\n  filetypes = filetypes,\n  root_markers = { '.git' },\n  get_language_id = get_language_id,\n  ---@type lspconfig.settings.ltex\n  settings = {\n    ltex = {\n      enabled = enabled_ids,\n    },\n  },\n}\n"
  },
  {
    "path": "lsp/ltex_plus.lua",
    "content": "---@brief\n---\n--- https://github.com/ltex-plus/ltex-ls-plus\n---\n--- LTeX Language Server: LSP language server for LanguageTool 🔍✔️ with support for LaTeX 🎓, Markdown 📝, and others\n---\n--- To install, download the latest [release](https://github.com/ltex-plus/ltex-ls-plus) and ensure `ltex-ls-plus` is on your path.\n---\n--- This server accepts configuration via the `settings` key.\n---\n--- ```lua\n---   settings = {\n---     ltex = {\n---       language = \"en-GB\",\n---     },\n---   },\n--- ```\n---\n--- To support org files or R sweave, users can define a custom filetype autocommand (or use a plugin which defines these filetypes):\n---\n--- ```lua\n--- vim.cmd [[ autocmd BufRead,BufNewFile *.org set filetype=org ]]\n--- ```\n\nlocal language_id_mapping = {\n  bib = 'bibtex',\n  pandoc = 'markdown',\n  plaintex = 'tex',\n  rnoweb = 'rsweave',\n  rst = 'restructuredtext',\n  tex = 'latex',\n  text = 'plaintext',\n}\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'ltex-ls-plus' },\n  filetypes = {\n    'asciidoc',\n    'bib',\n    'context',\n    'gitcommit',\n    'html',\n    'markdown',\n    'org',\n    'pandoc',\n    'plaintex',\n    'quarto',\n    'mail',\n    'mdx',\n    'rmd',\n    'rnoweb',\n    'rst',\n    'tex',\n    'text',\n    'typst',\n    'xhtml',\n  },\n  root_markers = { '.git' },\n  get_language_id = function(_, filetype)\n    return language_id_mapping[filetype] or filetype\n  end,\n  settings = {\n    ltex = {\n      enabled = {\n        'asciidoc',\n        'bib',\n        'context',\n        'gitcommit',\n        'html',\n        'markdown',\n        'org',\n        'pandoc',\n        'plaintex',\n        'quarto',\n        'mail',\n        'mdx',\n        'rmd',\n        'rnoweb',\n        'rst',\n        'tex',\n        'latex',\n        'text',\n        'typst',\n        'xhtml',\n      },\n    },\n  },\n}\n"
  },
  {
    "path": "lsp/lua_ls.lua",
    "content": "---@brief\n---\n--- https://github.com/luals/lua-language-server\n---\n--- Lua language server.\n---\n--- `lua-language-server` can be installed by following the instructions [here](https://luals.github.io/#neovim-install).\n---\n--- The default `cmd` assumes that the `lua-language-server` binary can be found in `$PATH`.\n---\n--- If you primarily use `lua-language-server` for Neovim, and want to provide completions,\n--- analysis, and location handling for plugins on runtime path, you can use the following\n--- settings.\n---\n--- ```lua\n--- vim.lsp.config('lua_ls', {\n---   on_init = function(client)\n---     if client.workspace_folders then\n---       local path = client.workspace_folders[1].name\n---       if\n---         path ~= vim.fn.stdpath('config')\n---         and (vim.uv.fs_stat(path .. '/.luarc.json') or vim.uv.fs_stat(path .. '/.luarc.jsonc'))\n---       then\n---         return\n---       end\n---     end\n---\n---     client.config.settings.Lua = vim.tbl_deep_extend('force', client.config.settings.Lua, {\n---       runtime = {\n---         -- Tell the language server which version of Lua you're using (most\n---         -- likely LuaJIT in the case of Neovim)\n---         version = 'LuaJIT',\n---         -- Tell the language server how to find Lua modules same way as Neovim\n---         -- (see `:h lua-module-load`)\n---         path = {\n---           'lua/?.lua',\n---           'lua/?/init.lua',\n---         },\n---       },\n---       -- Make the server aware of Neovim runtime files\n---       workspace = {\n---         checkThirdParty = false,\n---         library = {\n---           vim.env.VIMRUNTIME,\n---           -- Depending on the usage, you might want to add additional paths\n---           -- here.\n---           -- '${3rd}/luv/library',\n---           -- '${3rd}/busted/library',\n---         },\n---         -- Or pull in all of 'runtimepath'.\n---         -- NOTE: this is a lot slower and will cause issues when working on\n---         -- your own configuration.\n---         -- See https://github.com/neovim/nvim-lspconfig/issues/3189\n---         -- library = vim.api.nvim_get_runtime_file('', true),\n---       },\n---     })\n---   end,\n---   settings = {\n---     Lua = {},\n---   },\n--- })\n--- ```\n---\n--- See `lua-language-server`'s [documentation](https://luals.github.io/wiki/settings/) for an explanation of the above fields:\n--- * [Lua.runtime.path](https://luals.github.io/wiki/settings/#runtimepath)\n--- * [Lua.workspace.library](https://luals.github.io/wiki/settings/#workspacelibrary)\n---\n\nlocal root_markers1 = {\n  '.emmyrc.json',\n  '.luarc.json',\n  '.luarc.jsonc',\n}\nlocal root_markers2 = {\n  '.luacheckrc',\n  '.stylua.toml',\n  'stylua.toml',\n  'selene.toml',\n  'selene.yml',\n}\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'lua-language-server' },\n  filetypes = { 'lua' },\n  root_markers = vim.fn.has('nvim-0.11.3') == 1 and { root_markers1, root_markers2, { '.git' } }\n    or vim.list_extend(vim.list_extend(root_markers1, root_markers2), { '.git' }),\n  ---@type lspconfig.settings.lua_ls\n  settings = {\n    Lua = {\n      codeLens = { enable = true },\n      hint = { enable = true, semicolon = 'Disable' },\n    },\n  },\n}\n"
  },
  {
    "path": "lsp/luau_lsp.lua",
    "content": "---@brief\n---\n--- https://github.com/JohnnyMorganz/luau-lsp\n---\n--- Language server for the [Luau](https://luau-lang.org/) language.\n---\n--- `luau-lsp` can be installed by downloading one of the release assets available at https://github.com/JohnnyMorganz/luau-lsp.\n---\n--- You might also have to set up automatic filetype detection for Luau files, for example like so:\n---\n--- ```vim\n--- autocmd BufRead,BufNewFile *.luau setf luau\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'luau-lsp', 'lsp' },\n  filetypes = { 'luau' },\n  root_markers = { '.git' },\n}\n"
  },
  {
    "path": "lsp/lwc_ls.lua",
    "content": "---@brief\n---\n--- https://github.com/forcedotcom/lightning-language-server/\n---\n--- Language server for Lightning Web Components.\n---\n--- For manual installation, utilize the official [NPM package](https://www.npmjs.com/package/@salesforce/lwc-language-server).\n--- Then, configure `cmd` to run the Node script at the unpacked location:\n---\n--- ```lua\n--- vim.lsp.config('lwc_ls', {\n---   cmd = {\n---     'node',\n---     '/path/to/node_modules/@salesforce/lwc-language-server/bin/lwc-language-server.js',\n---     '--stdio'\n---   }\n--- })\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'lwc-language-server', '--stdio' },\n  filetypes = { 'javascript', 'html' },\n  root_markers = { 'sfdx-project.json' },\n  init_options = {\n    embeddedLanguages = {\n      javascript = true,\n    },\n  },\n}\n"
  },
  {
    "path": "lsp/m68k.lua",
    "content": "---@brief\n---\n--- https://github.com/grahambates/m68k-lsp\n---\n--- Language server for Motorola 68000 family assembly\n---\n--- `m68k-lsp-server` can be installed via `npm`:\n---\n--- ```sh\n--- npm install -g m68k-lsp-server\n--- ```\n---\n--- Ensure you are using the 68k asm syntax variant in Neovim.\n---\n--- ```lua\n--- vim.g.asmsyntax = 'asm68k'\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'm68k-lsp-server', '--stdio' },\n  filetypes = { 'asm68k' },\n  root_markers = { 'Makefile', '.git' },\n}\n"
  },
  {
    "path": "lsp/markdown_oxide.lua",
    "content": "---@brief\n---\n--- https://github.com/Feel-ix-343/markdown-oxide\n---\n--- Editor Agnostic PKM: you bring the text editor and we\n--- bring the PKM.\n---\n--- Inspired by and compatible with Obsidian.\n---\n--- Check the readme to see how to properly setup.\n\n---@param client vim.lsp.Client\n---@param bufnr integer\n---@param cmd string\nlocal function command_factory(client, bufnr, cmd)\n  return client:exec_cmd({\n    title = ('Markdown-Oxide-%s'):format(cmd),\n    command = 'jump',\n    arguments = { cmd },\n  }, { bufnr = bufnr })\nend\n\n---@type vim.lsp.Config\nreturn {\n  root_markers = { '.git', '.obsidian', '.moxide.toml' },\n  filetypes = { 'markdown' },\n  cmd = { 'markdown-oxide' },\n  on_attach = function(client, bufnr)\n    for _, cmd in ipairs({ 'today', 'tomorrow', 'yesterday' }) do\n      vim.api.nvim_buf_create_user_command(bufnr, 'Lsp' .. ('%s'):format(cmd:gsub('^%l', string.upper)), function()\n        command_factory(client, bufnr, cmd)\n      end, {\n        desc = ('Open %s daily note'):format(cmd),\n      })\n    end\n  end,\n}\n"
  },
  {
    "path": "lsp/marko-js.lua",
    "content": "---@brief\n---\n--- https://github.com/marko-js/language-server\n---\n--- Using the Language Server Protocol to improve Marko's developer experience.\n---\n--- Can be installed via npm:\n--- ```\n--- npm i -g @marko/language-server\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'marko-language-server', '--stdio' },\n  filetypes = { 'marko' },\n  root_markers = { '.git' },\n}\n"
  },
  {
    "path": "lsp/marksman.lua",
    "content": "---@brief\n---\n--- https://github.com/artempyanykh/marksman\n---\n--- Marksman is a Markdown LSP server providing completion, cross-references, diagnostics, and more.\n---\n--- Marksman works on MacOS, Linux, and Windows and is distributed as a self-contained binary for each OS.\n---\n--- Pre-built binaries can be downloaded from https://github.com/artempyanykh/marksman/releases\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'marksman', 'server' },\n  filetypes = { 'markdown', 'markdown.mdx' },\n  root_markers = { '.marksman.toml', '.git' },\n}\n"
  },
  {
    "path": "lsp/matlab_ls.lua",
    "content": "---@brief\n---\n--- https://github.com/mathworks/MATLAB-language-server\n---\n--- MATLAB® language server implements the Microsoft® Language Server Protocol for the MATLAB language.\n---\n--- Make sure to set `MATLAB.installPath` to your MATLAB path, e.g.:\n--- ```lua\n--- settings = {\n---   MATLAB = {\n---     ...\n---     installPath = '/usr/local/MATLAB/R2023a',\n---     ...\n---   },\n--- },\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'matlab-language-server', '--stdio' },\n  filetypes = { 'matlab' },\n  root_dir = function(bufnr, on_dir)\n    local root_dir = vim.fs.root(bufnr, '.git')\n    on_dir(root_dir or vim.fn.getcwd())\n  end,\n  settings = {\n    MATLAB = {\n      indexWorkspace = true,\n      installPath = '', -- NOTE: Set this to your MATLAB installation path.\n      matlabConnectionTiming = 'onStart',\n      telemetry = true,\n    },\n  },\n}\n"
  },
  {
    "path": "lsp/mdx_analyzer.lua",
    "content": "---@brief\n--- https://github.com/mdx-js/mdx-analyzer\n---\n--- `mdx-analyzer`, a language server for MDX\n\nlocal util = require 'lspconfig.util'\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'mdx-language-server', '--stdio' },\n  filetypes = { 'mdx' },\n  root_markers = { 'package.json' },\n  settings = {},\n  init_options = {\n    typescript = {},\n  },\n  before_init = function(_, config)\n    if config.init_options and config.init_options.typescript and not config.init_options.typescript.tsdk then\n      config.init_options.typescript.tsdk = util.get_typescript_server_path(config.root_dir)\n    end\n  end,\n}\n"
  },
  {
    "path": "lsp/mesonlsp.lua",
    "content": "---@brief\n---\n--- https://github.com/JCWasmx86/mesonlsp\n---\n--- An unofficial, unendorsed language server for meson written in C++\n\n---Checks if a given path contains a valid Meson project root file\n---Looks for 'meson.build' file which contains 'project()' function\nlocal meson_matcher = function(_, path)\n  local pattern = 'meson.build'\n  local f = vim.fn.glob(table.concat({ path, pattern }, '/'))\n  if f == '' then\n    return false\n  end\n  for line in io.lines(f) do\n    -- skip meson comments\n    if not line:match '^%s*#.*' then\n      local str = line:gsub('%s+', '')\n      if str ~= '' then\n        if str:match '^project%(' then\n          return true\n        else\n          break\n        end\n      end\n    end\n  end\n  return false\nend\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'mesonlsp', '--lsp' },\n  filetypes = { 'meson' },\n  root_dir = function(bufnr, on_dir)\n    on_dir(vim.fs.root(bufnr, meson_matcher) or vim.fs.root(bufnr, '.git'))\n  end,\n}\n"
  },
  {
    "path": "lsp/metals.lua",
    "content": "---@brief\n---\n--- https://scalameta.org/metals/\n---\n--- Scala language server with rich IDE features.\n---\n--- See full instructions in the Metals documentation:\n---\n--- https://scalameta.org/metals/docs/editors/vim#using-an-alternative-lsp-client\n---\n--- Note: that if you're using [nvim-metals](https://github.com/scalameta/nvim-metals), that plugin fully handles the setup and installation of Metals, and you shouldn't set up Metals both with it and `lspconfig`.\n---\n--- To install Metals, make sure to have [coursier](https://get-coursier.io/docs/cli-installation) installed, and once you do you can install the latest Metals with `cs install metals`.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'metals' },\n  filetypes = { 'scala' },\n  root_markers = { 'build.sbt', 'build.sc', { 'build.gradle', 'build.gradle.kts' }, 'pom.xml' },\n  init_options = {\n    statusBarProvider = 'show-message',\n    isHttpEnabled = true,\n    compilerOptions = {\n      snippetAutoIndent = false,\n    },\n  },\n  capabilities = {\n    workspace = {\n      configuration = false,\n    },\n  },\n}\n"
  },
  {
    "path": "lsp/millet.lua",
    "content": "---@brief\n---\n--- https://github.com/azdavis/millet\n---\n--- Millet, a language server for Standard ML\n---\n--- To use with nvim:\n---\n--- 1. Install a Rust toolchain: https://rustup.rs\n--- 2. Clone the repo\n--- 3. Run `cargo build --release --bin millet-ls`\n--- 4. Move `target/release/millet-ls` to somewhere on your $PATH as `millet`\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'millet' },\n  filetypes = { 'sml' },\n  root_markers = { 'millet.toml' },\n}\n"
  },
  {
    "path": "lsp/mint.lua",
    "content": "---@brief\n---\n--- https://www.mint-lang.com\n---\n--- Install Mint using the [instructions](https://www.mint-lang.com/install).\n--- The language server is included since version 0.12.0.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'mint', 'ls' },\n  filetypes = { 'mint' },\n  root_markers = { 'mint.json', '.git' },\n}\n"
  },
  {
    "path": "lsp/mlir_lsp_server.lua",
    "content": "---@brief\n---\n--- https://mlir.llvm.org/docs/Tools/MLIRLSP/#mlir-lsp-language-server--mlir-lsp-server=\n---\n--- The Language Server for the LLVM MLIR language\n---\n--- `mlir-lsp-server` can be installed at the llvm-project repository (https://github.com/llvm/llvm-project)\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'mlir-lsp-server' },\n  filetypes = { 'mlir' },\n  root_markers = { '.git' },\n}\n"
  },
  {
    "path": "lsp/mlir_pdll_lsp_server.lua",
    "content": "---@brief\n---\n--- https://mlir.llvm.org/docs/Tools/MLIRLSP/#pdll-lsp-language-server--mlir-pdll-lsp-server\n---\n--- The Language Server for the LLVM PDLL language\n---\n--- `mlir-pdll-lsp-server` can be installed at the llvm-project repository (https://github.com/llvm/llvm-project)\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'mlir-pdll-lsp-server' },\n  filetypes = { 'pdll' },\n  root_markers = { 'pdll_compile_commands.yml', '.git' },\n}\n"
  },
  {
    "path": "lsp/mm0_ls.lua",
    "content": "---@brief\n---\n--- https://github.com/digama0/mm0\n---\n--- Language Server for the metamath-zero theorem prover.\n---\n--- Requires [mm0-rs](https://github.com/digama0/mm0/tree/master/mm0-rs) to be installed\n--- and available on the `PATH`.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'mm0-rs', 'server' },\n  root_markers = { '.git' },\n  filetypes = { 'metamath-zero' },\n}\n"
  },
  {
    "path": "lsp/mojo.lua",
    "content": "---@brief\n---\n--- https://github.com/modularml/mojo\n---\n--- `mojo-lsp-server` can be installed [via Modular](https://developer.modular.com/download)\n---\n--- Mojo is a new programming language that bridges the gap between research and production by combining Python syntax and ecosystem with systems programming and metaprogramming features.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'mojo-lsp-server' },\n  filetypes = { 'mojo' },\n  root_markers = { '.git' },\n}\n"
  },
  {
    "path": "lsp/motoko_lsp.lua",
    "content": "---@brief\n---\n--- https://github.com/dfinity/vscode-motoko\n---\n--- Language server for the Motoko programming language.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'motoko-lsp', '--stdio' },\n  filetypes = { 'motoko' },\n  root_markers = { 'dfx.json', '.git' },\n  init_options = {\n    formatter = 'auto',\n  },\n}\n"
  },
  {
    "path": "lsp/move_analyzer.lua",
    "content": "---@brief\n---\n--- https://github.com/move-language/move/tree/main/language/move-analyzer\n---\n--- Language server for Move\n---\n--- The `move-analyzer` can be installed by running:\n---\n--- ```\n--- cargo install --git https://github.com/move-language/move move-analyzer\n--- ```\n---\n--- See [`move-analyzer`'s doc](https://github.com/move-language/move/blob/1b258a06e3c7d2bc9174578aac92cca3ac19de71/language/move-analyzer/editors/code/README.md#how-to-install) for details.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'move-analyzer' },\n  filetypes = { 'move' },\n  root_markers = { 'Move.toml' },\n}\n"
  },
  {
    "path": "lsp/mpls.lua",
    "content": "---@brief\n---\n--- https://github.com/mhersson/mpls\n---\n--- Markdown Preview Language Server\n\n---@type vim.lsp.Config\nreturn {\n  cmd = {\n    'mpls',\n    '--theme',\n    'dark',\n    '--enable-emoji',\n    '--enable-footnotes',\n    '--no-auto',\n  },\n  root_markers = { '.marksman.toml', '.git' },\n  filetypes = { 'markdown' },\n  on_attach = function(client, bufnr)\n    vim.api.nvim_create_autocmd('BufEnter', {\n      pattern = { '*.md' },\n      group = vim.api.nvim_create_augroup('lspconfig.mpls.focus', { clear = true }),\n      callback = function(ctx)\n        ---@diagnostic disable-next-line:param-type-mismatch\n        client:notify('mpls/editorDidChangeFocus', { uri = ctx.match })\n      end,\n      desc = 'mpls: notify buffer focus changed',\n    })\n    vim.api.nvim_buf_create_user_command(bufnr, 'LspMplsOpenPreview', function()\n      client:exec_cmd({\n        title = 'Preview markdown with mpls',\n        command = 'open-preview',\n      })\n    end, { desc = 'Preview markdown with mpls' })\n  end,\n}\n"
  },
  {
    "path": "lsp/msbuild_project_tools_server.lua",
    "content": "---@brief\n---\n--- https://github.com/tintoy/msbuild-project-tools-server/\n---\n--- MSBuild Project Tools Server can be installed by following the README.MD on the above repository.\n---\n--- Example config:\n--- ```lua\n--- vim.lsp.config('msbuild_project_tools_server', {\n---   cmd = {'dotnet', '/path/to/server/MSBuildProjectTools.LanguageServer.Host.dll'}\n--- })\n--- ```\n---\n--- There's no builtin filetypes for msbuild files, would require some filetype aliases:\n---\n--- ```lua\n--- vim.filetype.add({\n---   extension = {\n---     props = 'msbuild',\n---     tasks = 'msbuild',\n---     targets = 'msbuild',\n---   },\n---   pattern = {\n---     [ [[.*\\..*proj]] ] = 'msbuild',\n---   },\n--- })\n--- ```\n---\n--- Optionally tell treesitter to treat `msbuild` as `xml` so you can get syntax highlighting if you have the treesitter-xml-parser installed.\n---\n--- ```lua\n--- vim.treesitter.language.register('xml', { 'msbuild' })\n--- ```\n\nlocal host_dll_name = 'MSBuildProjectTools.LanguageServer.Host.dll'\nlocal util = require 'lspconfig.util'\n\n---@type vim.lsp.Config\nreturn {\n  filetypes = { 'msbuild' },\n  root_dir = function(bufnr, on_dir)\n    local fname = vim.api.nvim_buf_get_name(bufnr)\n    on_dir(util.root_pattern('*.sln', '*.slnx', '*.*proj', '.git')(fname))\n  end,\n  init_options = {},\n  cmd = { 'dotnet', host_dll_name },\n}\n"
  },
  {
    "path": "lsp/muon.lua",
    "content": "---@brief\n---\n--- https://muon.build\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'muon', 'analyze', 'lsp' },\n  filetypes = { 'meson' },\n  root_dir = function(bufnr, on_dir)\n    local fname = vim.api.nvim_buf_get_name(bufnr)\n    local cmd = { 'muon', 'analyze', 'root-for', fname }\n    vim.system(cmd, { text = true }, function(output)\n      if output.code == 0 then\n        if output.stdout then\n          on_dir(vim.trim(output.stdout))\n          return\n        end\n\n        on_dir(nil)\n      else\n        vim.notify(('[muon] cmd failed with code %d: %s\\n%s'):format(output.code, cmd, output.stderr))\n      end\n    end)\n  end,\n}\n"
  },
  {
    "path": "lsp/mutt_ls.lua",
    "content": "---@brief\n---\n--- https://github.com/neomutt/mutt-language-server\n---\n--- A language server for (neo)mutt's muttrc. It can be installed via pip.\n---\n--- ```sh\n--- pip install mutt-language-server\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'mutt-language-server' },\n  filetypes = { 'muttrc', 'neomuttrc' },\n  root_markers = { '.git' },\n  settings = {},\n}\n"
  },
  {
    "path": "lsp/nelua_lsp.lua",
    "content": "--- @brief\n---\n--- https://github.com/codehz/nelua-lsp\n---\n--- nelua-lsp is an experimental nelua language server.\n---\n--- You need [nelua.vim](https://github.com/stefanos82/nelua.vim/blob/main/ftdetect/nelua.vim) for nelua files to be recognized or add this to your config:\n---\n--- in vimscript:\n--- ```vimscript\n--- au BufNewFile,BufRead *.nelua setf nelua\n--- ```\n---\n--- in lua:\n--- ```lua\n--- vim.api.nvim_create_autocmd({ \"BufNewFile\", \"BufRead\" }, { pattern = { \"*.nelua\" }, command = \"setf nelua\"})\n--- ```\n---\n--- **By default, nelua-lsp doesn't have a `cmd` set.** This is because nvim-lspconfig does not make assumptions about your path. You must add the following to your init.vim or init.lua to set `cmd` to the absolute path ($HOME and ~ are not expanded) of the unzipped run script or binary.\n---\n--- ```lua\n--- vim.lsp.config('nelua_lsp', {\n---     cmd = { \"nelua\", \"-L\", \"/path/to/nelua-lsp/\", \"--script\", \"/path/to/nelua-lsp/nelua-lsp.lua\" },\n--- })\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  filetypes = { 'nelua' },\n  root_markers = { 'Makefile', '.git', '*.nelua' },\n}\n"
  },
  {
    "path": "lsp/neocmake.lua",
    "content": "---@brief\n---\n--- https://github.com/neocmakelsp/neocmakelsp\n---\n--- CMake LSP Implementation\n---\n--- Neovim does not currently include built-in snippets. `neocmakelsp` only provides completions when snippet support is enabled. To enable completion, install a snippet plugin and add the following override to your language client capabilities during setup.\n---\n--- ```lua\n--- --Enable (broadcasting) snippet capability for completion\n--- local capabilities = vim.lsp.protocol.make_client_capabilities()\n--- capabilities.textDocument.completion.completionItem.snippetSupport = true\n---\n--- vim.lsp.config('neocmake', {\n---   capabilities = capabilities,\n--- })\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'neocmakelsp', 'stdio' },\n  filetypes = { 'cmake' },\n  root_markers = { '.neocmake.toml', '.git', 'build', 'cmake' },\n}\n"
  },
  {
    "path": "lsp/nextflow_ls.lua",
    "content": "---@brief\n---\n--- https://github.com/nextflow-io/language-server\n---\n--- Requirements:\n---  - Java 17+\n---\n--- `nextflow_ls` can be installed by following the instructions [here](https://github.com/nextflow-io/language-server#development).\n---\n--- If you have installed nextflow language server, you can set the `cmd` custom path as follow:\n---\n--- ```lua\n--- vim.lsp.config('nextflow_ls', {\n---     cmd = { 'nextflow-language-server' },\n---     filetypes = { 'nextflow' },\n---     settings = {\n---       nextflow = {\n---         files = {\n---           exclude = { '.git', '.nf-test', 'work' },\n---         },\n---       },\n---     },\n--- })\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'nextflow-language-server' },\n  filetypes = { 'nextflow' },\n  root_markers = { 'nextflow.config', '.git' },\n  settings = {\n    nextflow = {\n      files = {\n        exclude = { '.git', '.nf-test', 'work' },\n      },\n    },\n  },\n}\n"
  },
  {
    "path": "lsp/nextls.lua",
    "content": "---@brief\n---\n--- https://github.com/elixir-tools/next-ls\n---\n--- **Please see the following [detailed instructions](https://www.elixir-tools.dev/docs/next-ls/installation/) for possible installation methods.**\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'nextls', '--stdio' },\n  filetypes = { 'elixir', 'eelixir', 'heex', 'surface' },\n  root_markers = { 'mix.exs', '.git' },\n}\n"
  },
  {
    "path": "lsp/nginx_language_server.lua",
    "content": "---@brief\n---\n--- https://pypi.org/project/nginx-language-server/\n---\n--- `nginx-language-server` can be installed via pip:\n---\n--- ```sh\n--- pip install -U nginx-language-server\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'nginx-language-server' },\n  filetypes = { 'nginx' },\n  root_markers = { 'nginx.conf', '.git' },\n}\n"
  },
  {
    "path": "lsp/nickel_ls.lua",
    "content": "---@brief\n---\n--- Nickel Language Server\n---\n--- https://github.com/tweag/nickel\n---\n--- `nls` can be installed with nix, or cargo, from the Nickel repository.\n--- ```sh\n--- git clone https://github.com/tweag/nickel.git\n--- ```\n---\n--- Nix:\n--- ```sh\n--- cd nickel\n--- nix-env -f . -i\n--- ```\n---\n--- cargo:\n--- ```sh\n--- cd nickel/lsp/nls\n--- cargo install --path .\n--- ```\n---\n--- In order to have lspconfig detect Nickel filetypes (a prerequisite for autostarting a server),\n--- install the [Nickel vim plugin](https://github.com/nickel-lang/vim-nickel).\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'nls' },\n  filetypes = { 'ncl', 'nickel' },\n  root_markers = { '.git' },\n}\n"
  },
  {
    "path": "lsp/nil_ls.lua",
    "content": "---@brief\n---\n--- https://github.com/oxalica/nil\n---\n--- A new language server for Nix Expression Language.\n---\n--- If you are using Nix with Flakes support, run `nix profile install github:oxalica/nil` to install.\n--- Check the repository README for more information.\n---\n--- _See an example config at https://github.com/oxalica/nil/blob/main/dev/nvim-lsp.nix._\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'nil' },\n  filetypes = { 'nix' },\n  root_markers = { 'flake.nix', '.git' },\n}\n"
  },
  {
    "path": "lsp/nim_langserver.lua",
    "content": "---@brief\n---\n--- https://github.com/nim-lang/langserver\n---\n---\n--- `nim-langserver` can be installed via the `nimble` package manager:\n--- ```sh\n--- nimble install nimlangserver\n--- ```\n\nlocal util = require 'lspconfig.util'\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'nimlangserver' },\n  filetypes = { 'nim' },\n  root_dir = function(bufnr, on_dir)\n    local fname = vim.api.nvim_buf_get_name(bufnr)\n    on_dir(\n      util.root_pattern '*.nimble'(fname) or vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    )\n  end,\n}\n"
  },
  {
    "path": "lsp/nimls.lua",
    "content": "---@brief\n---\n--- https://github.com/PMunch/nimlsp\n---\n--- `nimlsp` can be installed via the `nimble` package manager:\n---\n--- ```sh\n--- nimble install nimlsp\n--- ```\n\nlocal util = require 'lspconfig.util'\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'nimlsp' },\n  filetypes = { 'nim' },\n  root_dir = function(bufnr, on_dir)\n    local fname = vim.api.nvim_buf_get_name(bufnr)\n    on_dir(\n      util.root_pattern '*.nimble'(fname) or vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    )\n  end,\n}\n"
  },
  {
    "path": "lsp/nixd.lua",
    "content": "---@brief\n---\n--- https://github.com/nix-community/nixd\n---\n--- Nix language server, based on nix libraries.\n---\n--- If you are using Nix with Flakes support, run `nix profile install github:nix-community/nixd` to install.\n--- Check the repository README for more information.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'nixd' },\n  filetypes = { 'nix' },\n  root_markers = { 'flake.nix', '.git' },\n}\n"
  },
  {
    "path": "lsp/nomad_lsp.lua",
    "content": "---@brief\n---\n--- https://github.com/juliosueiras/nomad-lsp\n---\n--- Written in Go, compilation is needed for `nomad_lsp` to be used. Please see the [original repository](https://github.com/juliosuieras/nomad-lsp).\n---\n--- Add the executable to your system or vim PATH and it will be set to go.\n---\n--- No configuration option is needed unless you choose not to add `nomad-lsp` executable to the PATH. You should know what you are doing if you choose so.\n---\n--- ```lua\n--- vim.lsp.enable('nomad_lsp')\n--- ```\n---\n--- However, a `hcl.nomad` or `nomad` filetype should be defined.\n---\n--- Description of your jobs should be written in `.nomad` files for the LSP client to configure the server's `root_dir` configuration option.\n\nlocal util = require 'lspconfig.util'\nlocal bin_name = 'nomad-lsp'\n\nif vim.fn.has 'win32' == 1 then\n  bin_name = bin_name .. '.exe'\nend\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { bin_name },\n  filetypes = { 'hcl.nomad', 'nomad' },\n  root_dir = function(bufnr, on_dir)\n    local fname = vim.api.nvim_buf_get_name(bufnr)\n    on_dir(util.root_pattern '*.nomad'(fname))\n  end,\n}\n"
  },
  {
    "path": "lsp/ntt.lua",
    "content": "---@brief\n---\n--- https://github.com/nokia/ntt\n--- Installation instructions can be found [here](https://github.com/nokia/ntt#Install).\n--- Can be configured by passing a \"settings\" object to vim.lsp.config('ntt'):\n--- ```lua\n--- vim.lsp.config('ntt', {\n---     settings = {\n---       ntt = {\n---       }\n---     }\n--- })\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'ntt', 'langserver' },\n  filetypes = { 'ttcn' },\n  root_markers = { '.git' },\n}\n"
  },
  {
    "path": "lsp/nushell.lua",
    "content": "---@brief\n---\n--- https://github.com/nushell/nushell\n---\n--- Nushell built-in language server.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'nu', '--lsp' },\n  filetypes = { 'nu' },\n  root_dir = function(bufnr, on_dir)\n    on_dir(vim.fs.root(bufnr, { '.git' }) or vim.fs.dirname(vim.api.nvim_buf_get_name(bufnr)))\n  end,\n}\n"
  },
  {
    "path": "lsp/nxls.lua",
    "content": "---@brief\n---\n--- https://github.com/nrwl/nx-console/tree/master/apps/nxls\n---\n--- nxls, a language server for Nx Workspaces\n---\n--- `nxls` can be installed via `npm`:\n--- ```sh\n--- npm i -g nxls\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'nxls', '--stdio' },\n  filetypes = { 'json', 'jsonc' },\n  root_markers = { 'nx.json', '.git' },\n}\n"
  },
  {
    "path": "lsp/ocamllsp.lua",
    "content": "---@brief\n---\n--- https://github.com/ocaml/ocaml-lsp\n---\n--- `ocaml-lsp` can be installed as described in [installation guide](https://github.com/ocaml/ocaml-lsp#installation).\n---\n--- To install the lsp server in a particular opam switch:\n--- ```sh\n--- opam install ocaml-lsp-server\n--- ```\n\n-- https://github.com/ocaml/ocaml-lsp/blob/master/ocaml-lsp-server/docs/ocamllsp/switchImplIntf-spec.md\nlocal function switch_impl_intf(bufnr, client)\n  local method_name = 'ocamllsp/switchImplIntf'\n  ---@diagnostic disable-next-line:param-type-mismatch\n  if not client or not client:supports_method(method_name) then\n    return vim.notify(('method %s is not supported by any servers active on the current buffer'):format(method_name))\n  end\n  local uri = vim.lsp.util.make_given_range_params(nil, nil, bufnr, client.offset_encoding).textDocument.uri\n  if not uri then\n    return vim.notify('could not get URI for current buffer')\n  end\n  local params = { uri }\n  ---@diagnostic disable-next-line:param-type-mismatch\n  client:request(method_name, params, function(err, result)\n    if err then\n      error(tostring(err))\n    end\n    if not result or #result == 0 then\n      vim.notify('corresponding file cannot be determined')\n    elseif #result == 1 then\n      vim.cmd.edit(vim.uri_to_fname(result[1]))\n    else\n      vim.ui.select(\n        result,\n        { prompt = 'Select an implementation/interface:', format_item = vim.uri_to_fname },\n        function(choice)\n          if choice then\n            vim.cmd.edit(vim.uri_to_fname(choice))\n          end\n        end\n      )\n    end\n  end, bufnr)\nend\n\nlocal language_id_of = {\n  menhir = 'ocaml.menhir',\n  ocaml = 'ocaml',\n  ocamlinterface = 'ocaml.interface',\n  ocamllex = 'ocaml.ocamllex',\n  reason = 'reason',\n  dune = 'dune',\n}\n\nlocal language_id_of_ext = {\n  mll = language_id_of.ocamllex,\n  mly = language_id_of.menhir,\n  mli = language_id_of.ocamlinterface,\n}\n\nlocal get_language_id = function(bufnr, ftype)\n  if ftype == 'ocaml' then\n    local path = vim.api.nvim_buf_get_name(bufnr)\n    local ext = vim.fn.fnamemodify(path, ':e')\n    return language_id_of_ext[ext] or language_id_of.ocaml\n  else\n    return language_id_of[ftype]\n  end\nend\n\nlocal root_markers1 = { 'dune-project', 'dune-workspace' }\nlocal root_markers2 = { '*.opam', 'opam', 'esy.json', 'package.json' }\nlocal root_markers3 = { '.git' }\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'ocamllsp' },\n  filetypes = { 'ocaml', 'menhir', 'ocamlinterface', 'ocamllex', 'reason', 'dune' },\n  root_markers = vim.fn.has('nvim-0.11.3') == 1 and { root_markers1, root_markers2, root_markers3 }\n    or vim.list_extend(vim.list_extend(root_markers1, root_markers2), root_markers3),\n  get_language_id = get_language_id,\n  on_attach = function(client, bufnr)\n    vim.api.nvim_buf_create_user_command(bufnr, 'LspOcamllspSwitchImplIntf', function()\n      switch_impl_intf(bufnr, client)\n    end, { desc = 'Switch between implementation/interface' })\n  end,\n}\n"
  },
  {
    "path": "lsp/ols.lua",
    "content": "---@brief\n---\n--- https://github.com/DanielGavin/ols\n---\n--- `Odin Language Server`.\n\nlocal util = require 'lspconfig.util'\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'ols' },\n  filetypes = { 'odin' },\n  root_dir = function(bufnr, on_dir)\n    local fname = vim.api.nvim_buf_get_name(bufnr)\n    on_dir(util.root_pattern('ols.json', '.git', '*.odin')(fname))\n  end,\n}\n"
  },
  {
    "path": "lsp/omnisharp.lua",
    "content": "---@brief\n---\n--- https://github.com/omnisharp/omnisharp-roslyn\n--- OmniSharp server based on Roslyn workspaces\n---\n--- `omnisharp-roslyn` can be installed by downloading and extracting a release from [here](https://github.com/OmniSharp/omnisharp-roslyn/releases).\n--- OmniSharp can also be built from source by following the instructions [here](https://github.com/omnisharp/omnisharp-roslyn#downloading-omnisharp).\n---\n--- OmniSharp requires the [dotnet-sdk](https://dotnet.microsoft.com/download) to be installed.\n---\n--- For `go_to_definition` to work fully, extended `textDocument/definition` handler is needed, for example see [omnisharp-extended-lsp.nvim](https://github.com/Hoffs/omnisharp-extended-lsp.nvim)\n---\n---\n\nlocal util = require 'lspconfig.util'\n\n---@type vim.lsp.Config\nreturn {\n  cmd = {\n    vim.fn.executable('OmniSharp') == 1 and 'OmniSharp' or 'omnisharp',\n    '-z', -- https://github.com/OmniSharp/omnisharp-vscode/pull/4300\n    '--hostPID',\n    tostring(vim.fn.getpid()),\n    'DotNet:enablePackageRestore=false',\n    '--encoding',\n    'utf-8',\n    '--languageserver',\n  },\n  filetypes = { 'cs', 'vb' },\n  root_dir = function(bufnr, on_dir)\n    local fname = vim.api.nvim_buf_get_name(bufnr)\n    on_dir(\n      util.root_pattern '*.slnx'(fname)\n        or util.root_pattern '*.sln'(fname)\n        or util.root_pattern '*.csproj'(fname)\n        or util.root_pattern 'omnisharp.json'(fname)\n        or util.root_pattern 'function.json'(fname)\n    )\n  end,\n  init_options = {},\n  capabilities = {\n    workspace = {\n      workspaceFolders = false, -- https://github.com/OmniSharp/omnisharp-roslyn/issues/909\n    },\n  },\n  ---@type lspconfig.settings.omnisharp\n  settings = {\n    FormattingOptions = {\n      -- Enables support for reading code style, naming convention and analyzer\n      -- settings from .editorconfig.\n      EnableEditorConfigSupport = true,\n      -- Specifies whether 'using' directives should be grouped and sorted during\n      -- document formatting.\n      OrganizeImports = nil,\n    },\n    MsBuild = {\n      -- If true, MSBuild project system will only load projects for files that\n      -- were opened in the editor. This setting is useful for big C# codebases\n      -- and allows for faster initialization of code navigation features only\n      -- for projects that are relevant to code that is being edited. With this\n      -- setting enabled OmniSharp may load fewer projects and may thus display\n      -- incomplete reference lists for symbols.\n      LoadProjectsOnDemand = nil,\n    },\n    RoslynExtensionsOptions = {\n      -- Enables support for roslyn analyzers, code fixes and rulesets.\n      EnableAnalyzersSupport = nil,\n      -- Enables support for showing unimported types and unimported extension\n      -- methods in completion lists. When committed, the appropriate using\n      -- directive will be added at the top of the current file. This option can\n      -- have a negative impact on initial completion responsiveness,\n      -- particularly for the first few completion sessions after opening a\n      -- solution.\n      EnableImportCompletion = nil,\n      -- Only run analyzers against open files when 'enableRoslynAnalyzers' is\n      -- true\n      AnalyzeOpenDocumentsOnly = nil,\n      -- Enables the possibility to see the code in external nuget dependencies\n      EnableDecompilationSupport = nil,\n    },\n    RenameOptions = {\n      RenameInComments = nil,\n      RenameOverloads = nil,\n      RenameInStrings = nil,\n    },\n    Sdk = {\n      -- Specifies whether to include preview versions of the .NET SDK when\n      -- determining which version to use for project loading.\n      IncludePrereleases = true,\n    },\n  },\n}\n"
  },
  {
    "path": "lsp/opencl_ls.lua",
    "content": "---@brief\n---\n--- https://github.com/Galarius/opencl-language-server\n---\n--- Build instructions can be found [here](https://github.com/Galarius/opencl-language-server/blob/main/_dev/build.md).\n---\n--- Prebuilt binaries are available for Linux, macOS and Windows [here](https://github.com/Galarius/opencl-language-server/releases).\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'opencl-language-server' },\n  filetypes = { 'opencl' },\n  root_markers = { '.git' },\n}\n"
  },
  {
    "path": "lsp/openscad_ls.lua",
    "content": "---@brief\n---\n--- https://github.com/dzhu/openscad-language-server\n---\n--- A Language Server Protocol server for OpenSCAD\n---\n--- You can build and install `openscad-language-server` binary with `cargo`:\n--- ```sh\n--- cargo install openscad-language-server\n--- ```\n---\n--- Vim does not have built-in syntax for the `openscad` filetype currently.\n---\n--- This can be added via an autocmd:\n---\n--- ```lua\n--- vim.cmd [[ autocmd BufRead,BufNewFile *.scad set filetype=openscad ]]\n--- ```\n---\n--- or by installing a filetype plugin such as https://github.com/sirtaj/vim-openscad\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'openscad-language-server' },\n  filetypes = { 'openscad' },\n  root_markers = { '.git' },\n}\n"
  },
  {
    "path": "lsp/openscad_lsp.lua",
    "content": "---@brief\n---\n--- https://github.com/Leathong/openscad-LSP\n---\n--- A Language Server Protocol server for OpenSCAD\n---\n--- You can build and install `openscad-lsp` binary with `cargo`:\n--- ```sh\n--- cargo install openscad-lsp\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'openscad-lsp', '--stdio' },\n  filetypes = { 'openscad' },\n  root_markers = { '.git' },\n}\n"
  },
  {
    "path": "lsp/oso.lua",
    "content": "---@brief\n--- https://www.osohq.com/docs/develop/local-dev/env-setup\n---\n--- Oso Polar language server.\n---\n--- `oso-cloud` can be installed by following the instructions\n--- [here](https://www.osohq.com/docs/develop/local-dev/env-setup).\n---\n--- The default `cmd` assumes that the `oso-cloud` binary can be found in the `$PATH`.\n---\n--- You may need to configure the filetype for Polar (*.polar) files:\n---\n--- ```\n--- autocmd BufNewFile,BufRead *.polar set filetype=polar\n--- ```\n---\n--- or\n---\n--- ```lua\n--- vim.filetype.add({\n---   pattern = {\n---     ['.*/*.polar'] = 'polar',\n---   },\n--- })\n---\n--- Alternatively, you may use a syntax plugin like https://github.com/osohq/polar.vim\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'oso-cloud', 'lsp' },\n  filetypes = { 'polar' },\n}\n"
  },
  {
    "path": "lsp/oxfmt.lua",
    "content": "--- @brief\n---\n--- https://github.com/oxc-project/oxc\n--- https://oxc.rs/docs/guide/usage/formatter.html\n---\n--- `oxfmt` is a Prettier-compatible code formatter that supports multiple languages\n--- including JavaScript, TypeScript, JSON, YAML, HTML, CSS, Markdown, and more.\n--- It can be installed via `npm`:\n---\n--- ```sh\n--- npm i -g oxfmt\n--- ```\n\nlocal util = require 'lspconfig.util'\n\n---@type vim.lsp.Config\nreturn {\n  cmd = function(dispatchers, config)\n    local cmd = 'oxfmt'\n    local local_cmd = (config or {}).root_dir and config.root_dir .. '/node_modules/.bin/oxfmt'\n    if local_cmd and vim.fn.executable(local_cmd) == 1 then\n      cmd = local_cmd\n    end\n    return vim.lsp.rpc.start({ cmd, '--lsp' }, dispatchers)\n  end,\n  filetypes = {\n    'javascript',\n    'javascriptreact',\n    'typescript',\n    'typescriptreact',\n    'toml',\n    'json',\n    'jsonc',\n    'json5',\n    'yaml',\n    'html',\n    'vue',\n    'handlebars',\n    'css',\n    'scss',\n    'less',\n    'graphql',\n    'markdown',\n  },\n  workspace_required = true,\n  root_dir = function(bufnr, on_dir)\n    local fname = vim.api.nvim_buf_get_name(bufnr)\n\n    -- Oxfmt resolves configuration by walking upward and using the nearest config file\n    -- to the file being processed. We therefore compute the root directory by locating\n    -- the closest `.oxfmtrc.json` / `.oxfmtrc.jsonc` (or `package.json` fallback) above the buffer.\n    local root_markers = util.insert_package_json({ '.oxfmtrc.json', '.oxfmtrc.jsonc' }, 'oxfmt', fname)\n    on_dir(vim.fs.dirname(vim.fs.find(root_markers, { path = fname, upward = true })[1]))\n  end,\n}\n"
  },
  {
    "path": "lsp/oxlint.lua",
    "content": "--- @brief\n---\n--- https://github.com/oxc-project/oxc\n--- https://oxc.rs/docs/guide/usage/linter.html\n---\n--- `oxlint` is a linter for JavaScript / TypeScript supporting over 500 rules from ESLint and its popular plugins.\n--- It also supports linting framework files (Vue, Svelte, Astro) by analyzing their <script> blocks.\n--- It can be installed via `npm`:\n---\n--- ```sh\n--- npm i -g oxlint\n--- ```\n---\n--- Type-aware linting will automatically be enabled if `tsgolint` exists in your\n--- path and your `.oxlintrc.json` contains the string \"typescript\".\n---\n--- The default `on_attach` function provides an `:LspOxlintFixAll` command which\n--- can be used to fix all fixable diagnostics. See the `eslint` config entry for\n--- an example of how to use this to automatically fix all errors on write.\n\nlocal function oxlint_conf_mentions_typescript(root_dir)\n  local fn = vim.fs.joinpath(root_dir, '.oxlintrc.json')\n  for line in io.lines(fn) do\n    if line:find('typescript') then\n      return true\n    end\n  end\n  return false\nend\n\n---@type vim.lsp.Config\nreturn {\n  cmd = function(dispatchers, config)\n    local cmd = 'oxlint'\n    local local_cmd = (config or {}).root_dir and config.root_dir .. '/node_modules/.bin/oxlint'\n    if local_cmd and vim.fn.executable(local_cmd) == 1 then\n      cmd = local_cmd\n    end\n    return vim.lsp.rpc.start({ cmd, '--lsp' }, dispatchers)\n  end,\n  filetypes = {\n    'javascript',\n    'javascriptreact',\n    'typescript',\n    'typescriptreact',\n    'vue',\n    'svelte',\n    'astro',\n  },\n  root_markers = { '.oxlintrc.json', 'oxlint.config.ts' },\n  workspace_required = true,\n  on_attach = function(client, bufnr)\n    vim.api.nvim_buf_create_user_command(bufnr, 'LspOxlintFixAll', function()\n      client:exec_cmd({\n        title = 'Apply Oxlint automatic fixes',\n        command = 'oxc.fixAll',\n        arguments = { { uri = vim.uri_from_bufnr(bufnr) } },\n      })\n    end, {\n      desc = 'Apply Oxlint automatic fixes',\n    })\n  end,\n  settings = {\n    -- run = 'onType',\n    -- configPath = nil,\n    -- tsConfigPath = nil,\n    -- unusedDisableDirectives = 'allow',\n    -- typeAware = false,\n    -- disableNestedConfig = false,\n    -- fixKind = 'safe_fix',\n  },\n  before_init = function(init_params, config)\n    local settings = config.settings or {}\n    if settings.typeAware == nil and vim.fn.executable('tsgolint') == 1 then\n      local ok, res = pcall(oxlint_conf_mentions_typescript, config.root_dir)\n      if ok and res then\n        settings = vim.tbl_extend('force', settings, { typeAware = true })\n      end\n    end\n    local init_options = config.init_options or {}\n    init_options.settings = vim.tbl_extend('force', init_options.settings or {} --[[@as table]], settings)\n\n    init_params.initializationOptions = init_options\n  end,\n}\n"
  },
  {
    "path": "lsp/pact_ls.lua",
    "content": "---@brief\n---\n--- https://github.com/kadena-io/pact-lsp\n---\n--- The Pact language server\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'pact-lsp' },\n  filetypes = { 'pact' },\n  root_markers = { '.git' },\n}\n"
  },
  {
    "path": "lsp/pasls.lua",
    "content": "---@brief\n---\n--- https://github.com/genericptr/pascal-language-server\n---\n--- An LSP server implementation for Pascal variants that are supported by Free Pascal, including Object Pascal. It uses CodeTools from Lazarus as backend.\n---\n--- First set `cmd` to the Pascal lsp binary.\n---\n--- Customization options are passed to pasls as environment variables for example in your `.bashrc`:\n--- ```bash\n--- export FPCDIR='/usr/lib/fpc/src'      # FPC source directory (This is the only required option for the server to work).\n--- export PP='/usr/lib/fpc/3.2.2/ppcx64' # Path to the Free Pascal compiler executable.\n--- export LAZARUSDIR='/usr/lib/lazarus'  # Path to the Lazarus sources.\n--- export FPCTARGET=''                   # Target operating system for cross compiling.\n--- export FPCTARGETCPU='x86_64'          # Target CPU for cross compiling.\n--- ```\n\nlocal util = require 'lspconfig.util'\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'pasls' },\n  filetypes = { 'pascal' },\n  root_dir = function(bufnr, on_dir)\n    local fname = vim.api.nvim_buf_get_name(bufnr)\n    on_dir(util.root_pattern('*.lpi', '*.lpk', '.git')(fname))\n  end,\n}\n"
  },
  {
    "path": "lsp/pbls.lua",
    "content": "---@brief\n---\n--- https://git.sr.ht/~rrc/pbls\n---\n--- Prerequisites: Ensure protoc is on your $PATH.\n---\n--- `pbls` can be installed via `cargo install`:\n--- ```sh\n--- cargo install --git https://git.sr.ht/~rrc/pbls\n--- ```\n---\n--- pbls is a Language Server for protobuf\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'pbls' },\n  filetypes = { 'proto' },\n  root_markers = { '.pbls.toml', '.git' },\n}\n"
  },
  {
    "path": "lsp/perlls.lua",
    "content": "---@brief\n---\n--- https://github.com/richterger/Perl-LanguageServer/tree/master/clients/vscode/perl\n---\n--- `Perl-LanguageServer`, a language server for Perl.\n---\n--- To use the language server, ensure that you have Perl::LanguageServer installed and perl command is on your path.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = {\n    'perl',\n    '-MPerl::LanguageServer',\n    '-e',\n    'Perl::LanguageServer::run',\n    '--',\n    '--port 13603',\n    '--nostdio 0',\n  },\n  ---@type lspconfig.settings.perlls\n  settings = {\n    perl = {\n      perlCmd = 'perl',\n      perlInc = ' ',\n      fileFilter = { '.pm', '.pl' },\n      ignoreDirs = '.git',\n    },\n  },\n  filetypes = { 'perl' },\n  root_markers = { '.git' },\n}\n"
  },
  {
    "path": "lsp/perlnavigator.lua",
    "content": "---@brief\n---\n--- https://github.com/bscan/PerlNavigator\n---\n--- A Perl language server. It can be installed via npm:\n---\n--- ```sh\n--- npm i -g perlnavigator-server\n--- ```\n---\n--- At minimum, you will need `perl` in your path. If you want to use a non-standard `perl` you will need to set your configuration like so:\n--- ```lua\n--- settings = {\n---   perlnavigator = {\n---     perlPath = '/some/odd/location/my-perl'\n---   }\n--- }\n--- ```\n---\n--- The `contributes.configuration.properties` section of `perlnavigator`'s `package.json` has all available configuration settings. All\n--- settings have a reasonable default, but, at minimum, you may want to point `perlnavigator` at your `perltidy` and `perlcritic` configurations.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'perlnavigator' },\n  filetypes = { 'perl' },\n  root_markers = { '.git' },\n}\n"
  },
  {
    "path": "lsp/perlpls.lua",
    "content": "---@brief\n---\n--- https://github.com/FractalBoy/perl-language-server\n--- https://metacpan.org/pod/PLS\n---\n--- `PLS`, another language server for Perl.\n---\n--- To use the language server, ensure that you have PLS installed and that it is in your path\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'pls' },\n  ---@type lspconfig.settings.perlpls\n  settings = {\n    perl = {\n      perlcritic = { enabled = false },\n      syntax = { enabled = true },\n    },\n  },\n  filetypes = { 'perl' },\n  root_markers = { '.git' },\n}\n"
  },
  {
    "path": "lsp/pest_ls.lua",
    "content": "---@brief\n---\n--- https://github.com/pest-parser/pest-ide-tools\n---\n--- Language server for pest grammars.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'pest-language-server' },\n  filetypes = { 'pest' },\n  root_markers = { '.git' },\n}\n"
  },
  {
    "path": "lsp/phan.lua",
    "content": "---@brief\n---\n--- https://github.com/phan/phan\n---\n--- Installation: https://github.com/phan/phan#getting-started\n\nlocal cmd = {\n  'phan',\n  '-m',\n  'json',\n  '--no-color',\n  '--no-progress-bar',\n  '-x',\n  '-u',\n  '-S',\n  '--language-server-on-stdin',\n  '--allow-polyfill-parser',\n}\n\n---@type vim.lsp.Config\nreturn {\n  cmd = cmd,\n  filetypes = { 'php' },\n  root_dir = function(bufnr, on_dir)\n    local fname = vim.api.nvim_buf_get_name(bufnr)\n    local cwd = assert(vim.uv.cwd())\n    local root = vim.fs.root(fname, { 'composer.json', '.git' })\n\n    -- prefer cwd if root is a descendant\n    on_dir(root and vim.fs.relpath(cwd, root) and cwd)\n  end,\n}\n"
  },
  {
    "path": "lsp/phpactor.lua",
    "content": "---@brief\n---\n--- https://github.com/phpactor/phpactor\n---\n--- Installation: https://phpactor.readthedocs.io/en/master/usage/standalone.html#global-installation\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'phpactor', 'language-server' },\n  filetypes = { 'php' },\n  root_markers = { '.git', 'composer.json', '.phpactor.json', '.phpactor.yml' },\n  workspace_required = true,\n}\n"
  },
  {
    "path": "lsp/phptools.lua",
    "content": "---@brief\n---\n--- https://www.devsense.com/\n---\n--- `devsense-php-ls` can be installed via `npm`:\n--- ```sh\n--- npm install -g devsense-php-ls\n--- ```\n---\n--- ```lua\n--- -- See https://www.npmjs.com/package/devsense-php-ls\n--- init_options = {\n--- }\n--- -- See https://docs.devsense.com/vscode/configuration/\n--- settings = {\n---   php = {\n---   };\n--- }\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'devsense-php-ls', '--stdio' },\n  filetypes = { 'php' },\n  root_dir = function(bufnr, on_dir)\n    local fname = vim.api.nvim_buf_get_name(bufnr)\n    local cwd = assert(vim.uv.cwd())\n    local root = vim.fs.root(fname, { 'composer.json', '.git' })\n\n    -- prefer cwd if root is a descendant\n    on_dir(root and vim.fs.relpath(cwd, root) and cwd)\n  end,\n  init_options = {\n    ['0'] = '{}', --optional premium license validation from https://www.devsense.com/purchase/validation\n  },\n}\n"
  },
  {
    "path": "lsp/pico8_ls.lua",
    "content": "---@brief\n---\n--- https://github.com/japhib/pico8-ls\n---\n--- Full language support for the PICO-8 dialect of Lua.\n\nlocal util = require 'lspconfig.util'\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'pico8-ls', '--stdio' },\n  filetypes = { 'p8' },\n  root_dir = function(bufnr, on_dir)\n    local fname = vim.api.nvim_buf_get_name(bufnr)\n    on_dir(util.root_pattern('*.p8')(fname))\n  end,\n  settings = {},\n}\n"
  },
  {
    "path": "lsp/please.lua",
    "content": "---@brief\n---\n--- https://github.com/thought-machine/please\n---\n--- High-performance extensible build system for reproducible multi-language builds.\n---\n--- The `plz` binary will automatically install the LSP for you on first run\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'plz', 'tool', 'lps' },\n  filetypes = { 'bzl' },\n  root_markers = { '.plzconfig' },\n}\n"
  },
  {
    "path": "lsp/pli.lua",
    "content": "---@brief\n---\n--- `pli_language_server` is a language server for the PL/I language used on IBM SystemZ mainframes.\n---\n--- To learn how to configure the PL/I language server, see the [PL/I Language Support documentation](https://github.com/zowe/zowe-pli-language-support).\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'pli_language_server' },\n  filetypes = { 'pli' },\n  root_markers = { '.pliplugin' },\n}\n"
  },
  {
    "path": "lsp/pony_language_server.lua",
    "content": "---@brief\n---\n--- Renamed to [pony_lsp](#pony_lsp)\n\n---@type vim.lsp.Config\nreturn vim.tbl_extend('force', vim.lsp.config.pony_lsp, {\n  on_init = function(...)\n    vim.deprecate('pony_language_server', 'pony_lsp', '3.0.0', 'nvim-lspconfig', false)\n    if vim.lsp.config.pony_lsp.on_init then\n      vim.lsp.config.pony_lsp.on_init(...)\n    end\n  end,\n})\n"
  },
  {
    "path": "lsp/pony_lsp.lua",
    "content": "---@brief\n---\n--- https://github.com/ponylang/ponyc/tree/main/tools/pony-lsp\n---\n--- Language server for the Pony programming language\n\n--- default settings for pony-lsp\nlocal function default_settings()\n  ---@type table{ defines: string[], ponypath: string[] }\n  return {\n    defines = {},\n    ponypath = {},\n  }\nend\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'pony-lsp' },\n  filetypes = { 'pony' },\n  root_markers = { 'corral.json', '.git' },\n  settings = {\n    ['pony-lsp'] = default_settings(),\n  },\n}\n"
  },
  {
    "path": "lsp/poryscript_pls.lua",
    "content": "---@brief\n---\n--- https://github.com/huderlem/poryscript-pls\n---\n--- Language server for poryscript (a high level scripting language for GBA-era Pokémon decompilation projects)\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'poryscript-pls' },\n  filetypes = { 'pory' },\n  root_markers = { '.git' },\n}\n"
  },
  {
    "path": "lsp/postgres_lsp.lua",
    "content": "---@brief\n---\n--- https://pg-language-server.com\n---\n--- A collection of language tools and a Language Server Protocol (LSP) implementation for Postgres, focusing on developer experience and reliable SQL tooling.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'postgres-language-server', 'lsp-proxy' },\n  filetypes = {\n    'sql',\n  },\n  root_markers = { 'postgres-language-server.jsonc' },\n  workspace_required = true,\n}\n"
  },
  {
    "path": "lsp/powershell_es.lua",
    "content": "--- @brief\n---\n--- https://github.com/PowerShell/PowerShellEditorServices\n---\n--- Language server for PowerShell.\n---\n--- To install, download and extract PowerShellEditorServices.zip\n--- from the [releases](https://github.com/PowerShell/PowerShellEditorServices/releases).\n--- To configure the language server, set the property `bundle_path` to the root\n--- of the extracted PowerShellEditorServices.zip.\n---\n--- ```lua\n--- vim.lsp.config('powershell_es', {\n---   bundle_path = 'c:/w/PowerShellEditorServices',\n--- })\n--- ```\n---\n--- By default the language server is started in `pwsh` (PowerShell Core). This can be changed by specifying `shell`.\n---\n--- ```lua\n--- vim.lsp.config('powershell_es', {\n---   bundle_path = 'c:/w/PowerShellEditorServices',\n---   shell = 'powershell.exe',\n--- })\n--- ```\n---\n--- Note that the execution policy needs to be set to `Unrestricted` for the languageserver run under PowerShell\n---\n--- If necessary, specific `cmd` can be defined instead of `bundle_path`.\n--- See [PowerShellEditorServices](https://github.com/PowerShell/PowerShellEditorServices#standard-input-and-output)\n--- to learn more.\n---\n--- ```lua\n--- vim.lsp.config('powershell_es', {\n---   cmd = {'pwsh', '-NoLogo', '-NoProfile', '-Command', \"c:/PSES/Start-EditorServices.ps1 ...\"},\n--- })\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = function(dispatchers)\n    local temp_path = vim.fn.stdpath('cache')\n    local bundle_path = vim.lsp.config.powershell_es.bundle_path\n\n    local shell = vim.lsp.config.powershell_es.shell or 'pwsh'\n\n    local command_fmt =\n      [[& '%s/PowerShellEditorServices/Start-EditorServices.ps1' -BundledModulesPath '%s' -LogPath '%s/powershell_es.log' -SessionDetailsPath '%s/powershell_es.session.json' -FeatureFlags @() -AdditionalModules @() -HostName nvim -HostProfileId 0 -HostVersion 1.0.0 -Stdio -LogLevel Normal]]\n    local command = command_fmt:format(bundle_path, bundle_path, temp_path, temp_path)\n    local cmd = { shell, '-NoLogo', '-NoProfile', '-Command', command }\n\n    return vim.lsp.rpc.start(cmd, dispatchers)\n  end,\n  filetypes = { 'ps1' },\n  root_markers = { 'PSScriptAnalyzerSettings.psd1', '.git' },\n}\n"
  },
  {
    "path": "lsp/prismals.lua",
    "content": "---@brief\n---\n--- Language Server for the Prisma JavaScript and TypeScript ORM\n---\n--- `@prisma/language-server` can be installed via npm\n--- ```sh\n--- npm install -g @prisma/language-server\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'prisma-language-server', '--stdio' },\n  filetypes = { 'prisma' },\n  settings = {\n    prisma = {\n      prismaFmtBinPath = '',\n    },\n  },\n  root_markers = { '.git', 'package.json' },\n}\n"
  },
  {
    "path": "lsp/prolog_ls.lua",
    "content": "---@brief\n---\n--- https://github.com/jamesnvc/lsp_server\n---\n--- Language Server Protocol server for SWI-Prolog\n\n---@type vim.lsp.Config\nreturn {\n  cmd = {\n    'swipl',\n    '-g',\n    'use_module(library(lsp_server)).',\n    '-g',\n    'lsp_server:main',\n    '-t',\n    'halt',\n    '--',\n    'stdio',\n  },\n  filetypes = { 'prolog' },\n  root_markers = { 'pack.pl' },\n}\n"
  },
  {
    "path": "lsp/prosemd_lsp.lua",
    "content": "---@brief\n---\n--- https://github.com/kitten/prosemd-lsp\n---\n--- An experimental LSP for Markdown.\n---\n--- Please see the manual installation instructions: https://github.com/kitten/prosemd-lsp#manual-installation\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'prosemd-lsp', '--stdio' },\n  filetypes = { 'markdown' },\n  root_markers = { '.git' },\n}\n"
  },
  {
    "path": "lsp/protols.lua",
    "content": "---@brief\n---\n--- https://github.com/coder3101/protols\n---\n--- `protols` can be installed via `cargo`:\n--- ```sh\n--- cargo install protols\n--- ```\n---\n--- A Language Server for proto3 files. It uses tree-sitter and runs in single file mode.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'protols' },\n  filetypes = { 'proto' },\n  root_markers = { '.git' },\n}\n"
  },
  {
    "path": "lsp/psalm.lua",
    "content": "---@brief\n---\n--- https://github.com/vimeo/psalm\n---\n--- Can be installed with composer.\n--- ```sh\n--- composer global require vimeo/psalm\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'psalm', '--language-server' },\n  filetypes = { 'php' },\n  root_markers = { 'psalm.xml', 'psalm.xml.dist' },\n}\n"
  },
  {
    "path": "lsp/pug.lua",
    "content": "---@brief\n---\n--- https://github.com/opa-oz/pug-lsp\n---\n--- An implementation of the Language Protocol Server for [Pug.js](http://pugjs.org)\n---\n--- PugLSP can be installed via `go install github.com/opa-oz/pug-lsp@latest`, or manually downloaded from [releases page](https://github.com/opa-oz/pug-lsp/releases)\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'pug-lsp' },\n  filetypes = { 'pug' },\n  root_markers = { 'package.json' },\n}\n"
  },
  {
    "path": "lsp/puppet.lua",
    "content": "---@brief\n---\n--- LSP server for Puppet.\n---\n--- Installation:\n---\n--- - Clone the editor-services repository:\n---     https://github.com/puppetlabs/puppet-editor-services\n---\n--- - Navigate into that directory and run: `bundle install`\n---\n--- - Install the 'puppet-lint' gem: `gem install puppet-lint`\n---\n--- - Add that repository to $PATH.\n---\n--- - Ensure you can run `puppet-languageserver` from outside the editor-services directory.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'puppet-languageserver', '--stdio' },\n  filetypes = { 'puppet' },\n  root_markers = {\n    'manifests',\n    '.puppet-lint.rc',\n    'hiera.yaml',\n    '.git',\n  },\n}\n"
  },
  {
    "path": "lsp/purescriptls.lua",
    "content": "---@brief\n---\n--- https://github.com/nwolverson/purescript-language-server\n---\n--- The `purescript-language-server` can be added to your project and `$PATH` via\n---\n--- * JavaScript package manager such as npm, pnpm, Yarn, et al.\n--- * Nix under the `nodePackages` and `nodePackages_latest` package sets\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'purescript-language-server', '--stdio' },\n  filetypes = { 'purescript' },\n  root_markers = { 'bower.json', 'flake.nix', 'psc-package.json', 'shell.nix', 'spago.dhall', 'spago.yaml' },\n}\n"
  },
  {
    "path": "lsp/pylsp.lua",
    "content": "---@brief\n---\n--- https://github.com/python-lsp/python-lsp-server\n---\n--- A Python 3.6+ implementation of the Language Server Protocol.\n---\n--- See the [project's README](https://github.com/python-lsp/python-lsp-server) for installation instructions.\n---\n--- Configuration options are documented [here](https://github.com/python-lsp/python-lsp-server/blob/develop/CONFIGURATION.md).\n--- In order to configure an option, it must be translated to a nested Lua table and included in the `settings` argument to the `config('pylsp', {})` function.\n--- For example, in order to set the `pylsp.plugins.pycodestyle.ignore` option:\n--- ```lua\n--- vim.lsp.config('pylsp', {\n---   settings = {\n---     pylsp = {\n---       plugins = {\n---         pycodestyle = {\n---           ignore = {'W391'},\n---           maxLineLength = 100\n---         }\n---       }\n---     }\n---   }\n--- })\n--- ```\n---\n--- Note: This is a community fork of `pyls`.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'pylsp' },\n  filetypes = { 'python' },\n  root_markers = {\n    'pyproject.toml',\n    'setup.py',\n    'setup.cfg',\n    'requirements.txt',\n    'Pipfile',\n    '.git',\n  },\n}\n"
  },
  {
    "path": "lsp/pylyzer.lua",
    "content": "---@brief\n---\n--- https://github.com/mtshiba/pylyzer\n---\n--- `pylyzer`, a fast static code analyzer & language server for Python.\n---\n--- `pylyzer` requires Erg as dependency, and finds it via `ERG_PATH` environment variable.\n--- This config sets `ERG_PATH=\"~/.erg\"`. Set `cmd_env` if you want to change it.\n--- To install Erg, simply extract tarball/zip from [Erg releases](https://github.com/erg-lang/erg/releases/latest)\n--- to the the path where you want to install it, e.g. `~/.erg`.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'pylyzer', '--server' },\n  filetypes = { 'python' },\n  root_markers = {\n    'setup.py',\n    'tox.ini',\n    'requirements.txt',\n    'Pipfile',\n    'pyproject.toml',\n    '.git',\n  },\n  settings = {\n    python = {\n      diagnostics = true,\n      inlayHints = true,\n      smartCompletion = true,\n      checkOnType = false,\n    },\n  },\n  cmd_env = {\n    ERG_PATH = vim.env.ERG_PATH or vim.fs.joinpath(vim.uv.os_homedir(), '.erg'),\n  },\n}\n"
  },
  {
    "path": "lsp/pyre.lua",
    "content": "---@brief\n---\n--- https://pyre-check.org/\n---\n--- `pyre` a static type checker for Python 3.\n---\n--- `pyre` offers an extremely limited featureset. It currently only supports diagnostics,\n--- which are triggered on save.\n---\n--- Do not report issues for missing features in `pyre` to `lspconfig`.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'pyre', 'persistent' },\n  filetypes = { 'python' },\n  root_markers = { '.pyre_configuration' },\n}\n"
  },
  {
    "path": "lsp/pyrefly.lua",
    "content": "---@brief\n---\n--- https://pyrefly.org/\n---\n---`pyrefly`, a faster Python type checker written in Rust.\n--\n-- `pyrefly` is still in development, so please report any errors to\n-- our issues page at https://github.com/facebook/pyrefly/issues.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'pyrefly', 'lsp' },\n  filetypes = { 'python' },\n  root_markers = {\n    'pyrefly.toml',\n    'pyproject.toml',\n    'setup.py',\n    'setup.cfg',\n    'requirements.txt',\n    'Pipfile',\n    '.git',\n  },\n  on_exit = function(code, _, _)\n    vim.schedule(function()\n      vim.notify('Closing Pyrefly LSP exited with code: ' .. code, vim.log.levels.INFO)\n    end)\n  end,\n}\n"
  },
  {
    "path": "lsp/pyright.lua",
    "content": "---@brief\n---\n--- https://github.com/microsoft/pyright\n---\n--- `pyright`, a static type checker and language server for python\n\nlocal function set_python_path(command)\n  local path = command.args\n  local clients = vim.lsp.get_clients {\n    bufnr = vim.api.nvim_get_current_buf(),\n    name = 'pyright',\n  }\n  for _, client in ipairs(clients) do\n    if client.settings then\n      client.settings.python =\n        vim.tbl_deep_extend('force', client.settings.python --[[@as table]], { pythonPath = path })\n    else\n      client.config.settings = vim.tbl_deep_extend('force', client.config.settings, { python = { pythonPath = path } })\n    end\n    client:notify('workspace/didChangeConfiguration', { settings = nil })\n  end\nend\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'pyright-langserver', '--stdio' },\n  filetypes = { 'python' },\n  root_markers = {\n    'pyrightconfig.json',\n    'pyproject.toml',\n    'setup.py',\n    'setup.cfg',\n    'requirements.txt',\n    'Pipfile',\n    '.git',\n  },\n  ---@type lspconfig.settings.pyright\n  settings = {\n    python = {\n      analysis = {\n        autoSearchPaths = true,\n        useLibraryCodeForTypes = true,\n        diagnosticMode = 'openFilesOnly',\n      },\n    },\n  },\n  on_attach = function(client, bufnr)\n    vim.api.nvim_buf_create_user_command(bufnr, 'LspPyrightOrganizeImports', function()\n      local params = {\n        command = 'pyright.organizeimports',\n        arguments = { vim.uri_from_bufnr(bufnr) },\n      }\n\n      -- Using client.request() directly because \"pyright.organizeimports\" is private\n      -- (not advertised via capabilities), which client:exec_cmd() refuses to call.\n      -- https://github.com/neovim/neovim/blob/c333d64663d3b6e0dd9aa440e433d346af4a3d81/runtime/lua/vim/lsp/client.lua#L1024-L1030\n      ---@diagnostic disable-next-line: param-type-mismatch\n      client.request('workspace/executeCommand', params, nil, bufnr)\n    end, {\n      desc = 'Organize Imports',\n    })\n    vim.api.nvim_buf_create_user_command(bufnr, 'LspPyrightSetPythonPath', set_python_path, {\n      desc = 'Reconfigure pyright with the provided python path',\n      nargs = 1,\n      complete = 'file',\n    })\n  end,\n}\n"
  },
  {
    "path": "lsp/qmlls.lua",
    "content": "---@brief\n---\n--- https://doc.qt.io/qt-6/qtqml-tooling-qmlls.html\n---\n--- > QML Language Server is a tool shipped with Qt that helps you write code in your favorite (LSP-supporting) editor.\n---\n--- Source in the [QtDeclarative repository](https://code.qt.io/cgit/qt/qtdeclarative.git/)\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'qmlls' },\n  filetypes = { 'qml', 'qmljs' },\n  root_markers = { '.git' },\n}\n"
  },
  {
    "path": "lsp/quick_lint_js.lua",
    "content": "---@brief\n---\n--- https://quick-lint-js.com/\n---\n--- quick-lint-js finds bugs in JavaScript programs.\n---\n--- See installation [instructions](https://quick-lint-js.com/install/)\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'quick-lint-js', '--lsp-server' },\n  filetypes = { 'javascript', 'typescript' },\n  root_markers = { 'package.json', 'jsconfig.json', '.git' },\n}\n"
  },
  {
    "path": "lsp/r_language_server.lua",
    "content": "---@brief\n---\n--- [languageserver](https://github.com/REditorSupport/languageserver) is an\n--- implementation of the Microsoft's Language Server Protocol for the R\n--- language.\n---\n--- It is released on CRAN and can be easily installed by\n---\n--- ```r\n--- install.packages(\"languageserver\")\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'R', '--no-echo', '-e', 'languageserver::run()' },\n  filetypes = { 'r', 'rmd', 'quarto' },\n  root_dir = function(bufnr, on_dir)\n    on_dir(vim.fs.root(bufnr, '.git') or vim.uv.os_homedir())\n  end,\n}\n"
  },
  {
    "path": "lsp/racket_langserver.lua",
    "content": "---@brief\n---\n--- [https://github.com/jeapostrophe/racket-langserver](https://github.com/jeapostrophe/racket-langserver)\n---\n--- The Racket language server. This project seeks to use\n--- [DrRacket](https://github.com/racket/drracket)'s public API to provide\n--- functionality that mimics DrRacket's code tools as closely as possible.\n---\n--- Install via `raco`: `raco pkg install racket-langserver`\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'racket', '--lib', 'racket-langserver' },\n  filetypes = { 'racket', 'scheme' },\n  root_markers = { '.git' },\n}\n"
  },
  {
    "path": "lsp/raku_navigator.lua",
    "content": "---@brief\n---\n--- https://github.com/bscan/RakuNavigator\n--- A Raku language server\n--- **By default, raku_navigator doesn't have a `cmd` set.** This is because nvim-lspconfig does not make assumptions about your path.\n--- You have to install the language server manually.\n--- Clone the RakuNavigator repo, install based on the [instructions](https://github.com/bscan/raku_Navigator#installation-for-other-editors),\n--- and point `cmd` to `server.js` inside the `server/out` directory:\n--- ```lua\n--- cmd = {'node', '<path_to_repo>/server/out/server.js', '--stdio'}\n--- ```\n--- At minimum, you will need `raku` in your path. If you want to use a non-standard `raku` you will need to set your configuration like so:\n--- ```lua\n--- settings = {\n---   raku_navigator = {\n---     rakuPath = '/some/odd/location/my-raku'\n---   }\n--- }\n--- ```\n--- The `contributes.configuration.properties` section of `raku_navigator`'s `package.json` has all available configuration settings. All\n--- settings have a reasonable default, but, at minimum, you may want to point `raku_navigator` at your `raku_tidy` and `raku_critic` configurations.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = {},\n  filetypes = { 'raku' },\n  root_markers = { '.git' },\n}\n"
  },
  {
    "path": "lsp/reason_ls.lua",
    "content": "---@brief\n---\n--- Reason language server\n---\n--- You can install reason language server from [reason-language-server](https://github.com/jaredly/reason-language-server) repository.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'reason-language-server' },\n  filetypes = { 'reason' },\n  root_markers = { 'bsconfig.json', '.git' },\n}\n"
  },
  {
    "path": "lsp/regal.lua",
    "content": "---@brief\n---\n--- https://github.com/StyraInc/regal\n---\n--- A linter for Rego, with support for running as an LSP server.\n---\n--- `regal` can be installed by running:\n--- ```sh\n--- go install github.com/StyraInc/regal@latest\n--- ```\n\nlocal util = require 'lspconfig.util'\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'regal', 'language-server' },\n  filetypes = { 'rego' },\n  root_dir = function(bufnr, on_dir)\n    local fname = vim.api.nvim_buf_get_name(bufnr)\n    on_dir(util.root_pattern '*.rego'(fname) or vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1]))\n  end,\n}\n"
  },
  {
    "path": "lsp/regols.lua",
    "content": "---@brief\n---\n--- https://github.com/kitagry/regols\n---\n--- OPA Rego language server.\n---\n--- `regols` can be installed by running:\n--- ```sh\n--- go install github.com/kitagry/regols@latest\n--- ```\n\nlocal util = require 'lspconfig.util'\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'regols' },\n  filetypes = { 'rego' },\n  root_dir = function(bufnr, on_dir)\n    local fname = vim.api.nvim_buf_get_name(bufnr)\n    on_dir(util.root_pattern '*.rego'(fname) or vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1]))\n  end,\n}\n"
  },
  {
    "path": "lsp/remark_ls.lua",
    "content": "---@brief\n---\n--- https://github.com/remarkjs/remark-language-server\n---\n--- `remark-language-server` can be installed via `npm`:\n--- ```sh\n--- npm install -g remark-language-server\n--- ```\n---\n--- `remark-language-server` uses the same\n--- [configuration files](https://github.com/remarkjs/remark/tree/main/packages/remark-cli#example-config-files-json-yaml-js)\n--- as `remark-cli`.\n---\n--- This uses a plugin based system. Each plugin needs to be installed locally using `npm` or `yarn`.\n---\n--- For example, given the following `.remarkrc.json`:\n---\n--- ```json\n--- {\n---   \"presets\": [\n---     \"remark-preset-lint-recommended\"\n---   ]\n--- }\n--- ```\n---\n--- `remark-preset-lint-recommended` needs to be installed in the local project:\n---\n--- ```sh\n--- npm install remark-preset-lint-recommended\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'remark-language-server', '--stdio' },\n  filetypes = { 'markdown' },\n  root_markers = {\n    '.remarkrc',\n    '.remarkrc.json',\n    '.remarkrc.js',\n    '.remarkrc.cjs',\n    '.remarkrc.mjs',\n    '.remarkrc.yml',\n    '.remarkrc.yaml',\n    '.remarkignore',\n  },\n}\n"
  },
  {
    "path": "lsp/rescriptls.lua",
    "content": "---@brief\n---\n--- https://github.com/rescript-lang/rescript-vscode/tree/master/server\n---\n--- ReScript Language Server can be installed via npm:\n--- ```sh\n--- npm install -g @rescript/language-server\n--- ```\n---\n--- See [package.json](https://github.com/rescript-lang/rescript-vscode/blob/master/package.json#L139)\n--- for init_options supported.\n---\n--- For example, in order to disable the `inlayHints` option:\n--- ```lua\n--- vim.lsp.config('rescriptls', {\n---   settings = {\n---     rescript = {\n---       settings = {\n---         inlayHints = { enable = false },\n---       },\n---     },\n---   })\n--- }\n--- ```\n---\n--- Detect file changes: While using @rescript/language-server >= 1.63.0 you have to detect file changes by registering the didChangeWatchedFiles hook.\n--- ```lua\n--- capabilities = {\n---     workspace = {\n---         didChangeWatchedFiles = {\n---             dynamicRegistration = true,\n---         },\n---     },\n--- }\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'rescript-language-server', '--stdio' },\n  filetypes = { 'rescript' },\n  root_markers = { 'bsconfig.json', 'rescript.json', '.git' },\n  ---@type lspconfig.settings.rescriptls\n  settings = {},\n  init_options = {\n    extensionConfiguration = {\n      -- buggy, prompts much too often, superseded by incrementalTypechecking, below\n      askToStartBuild = false,\n\n      allowBuiltInFormatter = true, -- lower latency\n      incrementalTypechecking = { -- removes the need for external build process\n        enabled = true,\n        acrossFiles = true,\n      },\n      cache = { projectConfig = { enabled = true } }, -- speed up latency dramatically\n      codeLens = true,\n      inlayHints = { enable = true },\n    },\n  },\n}\n"
  },
  {
    "path": "lsp/rls.lua",
    "content": "---@brief\n---\n--- https://github.com/rust-lang/rls\n---\n--- rls, a language server for Rust\n---\n--- See https://github.com/rust-lang/rls#setup to setup rls itself.\n--- See https://github.com/rust-lang/rls#configuration for rls-specific settings.\n--- All settings listed on the rls configuration section of the readme\n--- must be set under settings.rust as follows:\n---\n--- ```lua\n--- vim.lsp.config('rls', {\n---   settings = {\n---     rust = {\n---       unstable_features = true,\n---       build_on_save = false,\n---       all_features = true,\n---     },\n---   },\n--- })\n--- ```\n---\n--- If you want to use rls for a particular build, eg nightly, set cmd as follows:\n---\n--- ```lua\n--- cmd = {\"rustup\", \"run\", \"nightly\", \"rls\"}\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'rls' },\n  filetypes = { 'rust' },\n  root_markers = { 'Cargo.toml' },\n}\n"
  },
  {
    "path": "lsp/rnix.lua",
    "content": "---@brief\n---\n--- https://github.com/nix-community/rnix-lsp\n---\n--- A language server for Nix providing basic completion and formatting via nixpkgs-fmt.\n---\n--- To install manually, run `cargo install rnix-lsp`. If you are using nix, rnix-lsp is in nixpkgs.\n---\n--- This server accepts configuration via the `settings` key.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'rnix-lsp' },\n  filetypes = { 'nix' },\n  root_dir = function(bufnr, on_dir)\n    on_dir(vim.fs.root(bufnr, '.git') or vim.uv.os_homedir())\n  end,\n  settings = {},\n  init_options = {},\n}\n"
  },
  {
    "path": "lsp/robotcode.lua",
    "content": "---@brief\n---\n--- https://robotcode.io\n---\n--- RobotCode - Language Server Protocol implementation for Robot Framework.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'robotcode', 'language-server' },\n  filetypes = { 'robot', 'resource' },\n  root_markers = { 'robot.toml', 'pyproject.toml', 'Pipfile', '.git' },\n  get_language_id = function(_, _)\n    return 'robotframework'\n  end,\n}\n"
  },
  {
    "path": "lsp/robotframework_ls.lua",
    "content": "---@brief\n---\n--- https://github.com/robocorp/robotframework-lsp\n---\n--- Language Server Protocol implementation for Robot Framework.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'robotframework_ls' },\n  filetypes = { 'robot' },\n  root_markers = { 'robotidy.toml', 'pyproject.toml', 'conda.yaml', 'robot.yaml', '.git' },\n}\n"
  },
  {
    "path": "lsp/roc_ls.lua",
    "content": "---@brief\n---\n--- https://github.com/roc-lang/roc/tree/main/crates/language_server#roc_language_server\n---\n--- The built-in language server for the Roc programming language.\n--- [Installation](https://github.com/roc-lang/roc/tree/main/crates/language_server#installing)\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'roc_language_server' },\n  filetypes = { 'roc' },\n  root_markers = { '.git' },\n}\n"
  },
  {
    "path": "lsp/rome.lua",
    "content": "---@brief\n---\n--- https://rome.tools\n---\n--- Language server for the Rome Frontend Toolchain.\n---\n--- (Unmaintained, use [Biome](https://biomejs.dev/blog/annoucing-biome) instead.)\n---\n--- ```sh\n--- npm install [-g] rome\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'rome', 'lsp-proxy' },\n  filetypes = {\n    'javascript',\n    'javascriptreact',\n    'json',\n    'typescript',\n    'typescriptreact',\n  },\n  root_markers = { 'package.json', 'node_modules', '.git' },\n}\n"
  },
  {
    "path": "lsp/roslyn_ls.lua",
    "content": "---@brief\n---\n--- https://github.com/dotnet/roslyn\n--\n-- To install the server, compile from source or download as nuget package.\n-- Go to `https://dev.azure.com/azure-public/vside/_artifacts/feed/vs-impl/NuGet/Microsoft.CodeAnalysis.LanguageServer.<platform>/overview`\n-- replace `<platform>` with one of the following `linux-x64`, `osx-x64`, `win-x64`, `neutral` (for more info on the download location see https://github.com/dotnet/roslyn/issues/71474#issuecomment-2177303207).\n-- Download and extract it (nuget's are zip files).\n-- - if you chose `neutral` nuget version, then you have to change the `cmd` like so:\n--   ```lua\n--   cmd = {\n--     'dotnet',\n--     '<my_folder>/Microsoft.CodeAnalysis.LanguageServer.dll',\n--     '--logLevel', -- this property is required by the server\n--     'Information',\n--     '--extensionLogDirectory', -- this property is required by the server\n--     fs.joinpath(uv.os_tmpdir(), 'roslyn_ls/logs'),\n--     '--stdio',\n--   },\n--   ```\n--   where `<my_folder>` has to be the folder you extracted the nuget package to.\n-- - for all other platforms put the extracted folder to neovim's PATH (`vim.env.PATH`)\n\nlocal uv = vim.uv\nlocal fs = vim.fs\n\nlocal group = vim.api.nvim_create_augroup('lspconfig.roslyn_ls', { clear = true })\n\n---@param client vim.lsp.Client\n---@param target string\nlocal function on_init_sln(client, target)\n  vim.notify('Initializing: ' .. target, vim.log.levels.TRACE, { title = 'roslyn_ls' })\n  ---@diagnostic disable-next-line: param-type-mismatch\n  client:notify('solution/open', {\n    solution = vim.uri_from_fname(target),\n  })\nend\n\n---@param client vim.lsp.Client\n---@param project_files string[]\nlocal function on_init_project(client, project_files)\n  vim.notify('Initializing: projects', vim.log.levels.TRACE, { title = 'roslyn_ls' })\n  ---@diagnostic disable-next-line: param-type-mismatch\n  client:notify('project/open', {\n    projects = vim.tbl_map(function(file)\n      return vim.uri_from_fname(file)\n    end, project_files),\n  })\nend\n\n---@param client vim.lsp.Client\nlocal function refresh_diagnostics(client)\n  for buf, _ in pairs(vim.lsp.get_client_by_id(client.id).attached_buffers) do\n    if vim.api.nvim_buf_is_loaded(buf) then\n      client:request(\n        vim.lsp.protocol.Methods.textDocument_diagnostic,\n        { textDocument = vim.lsp.util.make_text_document_params(buf) },\n        nil,\n        buf\n      )\n    end\n  end\nend\n\nlocal function roslyn_handlers()\n  return {\n    ['workspace/projectInitializationComplete'] = function(_, _, ctx)\n      vim.notify('Roslyn project initialization complete', vim.log.levels.INFO, { title = 'roslyn_ls' })\n      local client = assert(vim.lsp.get_client_by_id(ctx.client_id))\n      refresh_diagnostics(client)\n      return vim.NIL\n    end,\n    ['workspace/_roslyn_projectNeedsRestore'] = function(_, result, ctx)\n      local client = assert(vim.lsp.get_client_by_id(ctx.client_id))\n\n      ---@diagnostic disable-next-line: param-type-mismatch\n      client:request('workspace/_roslyn_restore', result, function(err, response)\n        if err then\n          vim.notify(err.message, vim.log.levels.ERROR, { title = 'roslyn_ls' })\n        end\n        if response then\n          for _, v in ipairs(response) do\n            vim.notify(v.message, vim.log.levels.INFO, { title = 'roslyn_ls' })\n          end\n        end\n      end)\n\n      return vim.NIL\n    end,\n    ['razor/provideDynamicFileInfo'] = function(_, _, _)\n      vim.notify(\n        'Razor is not supported.\\nPlease use https://github.com/tris203/rzls.nvim',\n        vim.log.levels.WARN,\n        { title = 'roslyn_ls' }\n      )\n      return vim.NIL\n    end,\n  }\nend\n\n---@param bufname string\n---@return boolean\nlocal function is_decompiled(bufname)\n  local _, endpos = bufname:find('[/\\\\]MetadataAsSource[/\\\\]')\n  if endpos == nil then\n    return false\n  end\n  return vim.fn.finddir(bufname:sub(1, endpos), uv.os_tmpdir()) ~= ''\nend\n\n---@type vim.lsp.Config\nreturn {\n  name = 'roslyn_ls',\n  cmd = {\n    vim.fn.executable('Microsoft.CodeAnalysis.LanguageServer') == 1 and 'Microsoft.CodeAnalysis.LanguageServer'\n      or 'roslyn-language-server',\n    '--logLevel',\n    'Information',\n    '--extensionLogDirectory',\n    fs.joinpath(uv.os_tmpdir(), 'roslyn_ls/logs'),\n    '--stdio',\n  },\n\n  cmd_env = {\n    -- Fixes LSP navigation in decompiled files for systems with symlinked TMPDIR (macOS)\n    TMPDIR = vim.env.TMPDIR and vim.env.TMPDIR ~= '' and vim.fn.resolve(vim.env.TMPDIR) or nil,\n  },\n\n  filetypes = { 'cs' },\n  handlers = roslyn_handlers(),\n\n  commands = {\n    ['roslyn.client.completionComplexEdit'] = function(command, ctx)\n      local client = assert(vim.lsp.get_client_by_id(ctx.client_id))\n      local args = command.arguments or {}\n      local uri, edit = args[1], args[2]\n\n      ---@diagnostic disable: undefined-field\n      if uri and edit and edit.newText and edit.range then\n        local workspace_edit = {\n          changes = {\n            [uri.uri] = {\n              {\n                range = edit.range,\n                newText = edit.newText,\n              },\n            },\n          },\n        }\n        vim.lsp.util.apply_workspace_edit(workspace_edit, client.offset_encoding)\n      ---@diagnostic enable: undefined-field\n      else\n        vim.notify('roslyn_ls: completionComplexEdit args not understood: ' .. vim.inspect(args), vim.log.levels.WARN)\n      end\n    end,\n\n    ['roslyn.client.nestedCodeAction'] = function(command, ctx)\n      local client = assert(vim.lsp.get_client_by_id(ctx.client_id))\n      local arg = command.arguments and command.arguments[1]\n\n      if type(arg) ~= 'table' then\n        vim.notify('roslyn_ls: invalid nestedCodeAction arguments', vim.log.levels.ERROR)\n        return\n      end\n\n      local function apply_action(action)\n        if not action then\n          return\n        end\n\n        if action.edit then\n          vim.lsp.util.apply_workspace_edit(action.edit, client.offset_encoding)\n        end\n\n        if action.command then\n          client:exec_cmd(action.command)\n        end\n      end\n\n      local function handle(action)\n        if not action then\n          return\n        end\n\n        if action.data and not action.edit and not action.command then\n          client:request('codeAction/resolve', action, function(err, resolved)\n            if err then\n              vim.notify(err.message or tostring(err), vim.log.levels.ERROR)\n              return\n            end\n\n            if resolved then\n              handle(resolved)\n            end\n          end, ctx.bufnr)\n\n          return\n        end\n\n        local nested = vim.islist(action) and action or action.NestedCodeActions\n        if type(nested) ~= 'table' or vim.tbl_isempty(nested) then\n          apply_action(action)\n          return\n        end\n\n        if #nested == 1 then\n          handle(nested[1])\n          return\n        end\n\n        vim.ui.select(nested, {\n          prompt = action.title or 'Select code action',\n          format_item = function(item)\n            return item.title or (item.command and item.command.title) or 'Unnamed action'\n          end,\n        }, function(choice)\n          if choice then\n            handle(choice)\n          end\n        end)\n      end\n\n      handle(arg)\n    end,\n  },\n\n  root_dir = function(bufnr, cb)\n    local bufname = vim.api.nvim_buf_get_name(bufnr)\n    -- don't try to find sln or csproj for files from libraries\n    -- outside of the project\n    if not is_decompiled(bufname) then\n      -- try find solutions root first\n      local root_dir = fs.root(bufnr, function(fname, _)\n        return fname:match('%.sln[x]?$') ~= nil\n      end)\n\n      if not root_dir then\n        -- try find projects root\n        root_dir = fs.root(bufnr, function(fname, _)\n          return fname:match('%.csproj$') ~= nil\n        end)\n      end\n\n      if root_dir then\n        cb(root_dir)\n      end\n    else\n      -- Decompiled code (example: \"/tmp/MetadataAsSource/f2bfba/DecompilationMetadataAsSourceFileProvider/d5782a/Console.cs\")\n      local prev_buf = vim.fn.bufnr('#')\n      local client = vim.lsp.get_clients({\n        name = 'roslyn_ls',\n        bufnr = prev_buf ~= 1 and prev_buf or nil,\n      })[1]\n      if client then\n        cb(client.config.root_dir)\n      end\n    end\n  end,\n  on_init = {\n    function(client)\n      local root_dir = client.config.root_dir\n\n      -- try load first solution we find\n      for entry, type in fs.dir(root_dir) do\n        if type == 'file' and (vim.endswith(entry, '.sln') or vim.endswith(entry, '.slnx')) then\n          on_init_sln(client, fs.joinpath(root_dir, entry))\n          return\n        end\n      end\n\n      -- if no solution is found load project\n      for entry, type in fs.dir(root_dir) do\n        if type == 'file' and vim.endswith(entry, '.csproj') then\n          on_init_project(client, { fs.joinpath(root_dir, entry) })\n        end\n      end\n    end,\n  },\n\n  on_attach = function(client, bufnr)\n    -- avoid duplicate autocmds for same buffer\n    if vim.api.nvim_get_autocmds({ buffer = bufnr, group = group })[1] then\n      return\n    end\n\n    vim.api.nvim_create_autocmd({ 'BufWritePost', 'InsertLeave' }, {\n      group = group,\n      buffer = bufnr,\n      callback = function()\n        refresh_diagnostics(client)\n      end,\n      desc = 'roslyn_ls: refresh diagnostics',\n    })\n  end,\n\n  capabilities = {\n    -- HACK: Doesn't show any diagnostics if we do not set this to true\n    textDocument = {\n      diagnostic = {\n        dynamicRegistration = true,\n      },\n    },\n  },\n  settings = {\n    ['csharp|background_analysis'] = {\n      dotnet_analyzer_diagnostics_scope = 'fullSolution',\n      dotnet_compiler_diagnostics_scope = 'fullSolution',\n    },\n    ['csharp|inlay_hints'] = {\n      csharp_enable_inlay_hints_for_implicit_object_creation = true,\n      csharp_enable_inlay_hints_for_implicit_variable_types = true,\n      csharp_enable_inlay_hints_for_lambda_parameter_types = true,\n      csharp_enable_inlay_hints_for_types = true,\n      dotnet_enable_inlay_hints_for_indexer_parameters = true,\n      dotnet_enable_inlay_hints_for_literal_parameters = true,\n      dotnet_enable_inlay_hints_for_object_creation_parameters = true,\n      dotnet_enable_inlay_hints_for_other_parameters = true,\n      dotnet_enable_inlay_hints_for_parameters = true,\n      dotnet_suppress_inlay_hints_for_parameters_that_differ_only_by_suffix = true,\n      dotnet_suppress_inlay_hints_for_parameters_that_match_argument_name = true,\n      dotnet_suppress_inlay_hints_for_parameters_that_match_method_intent = true,\n    },\n    ['csharp|symbol_search'] = {\n      dotnet_search_reference_assemblies = true,\n    },\n    ['csharp|completion'] = {\n      dotnet_show_name_completion_suggestions = true,\n      dotnet_show_completion_items_from_unimported_namespaces = true,\n      dotnet_provide_regex_completions = true,\n    },\n    ['csharp|code_lens'] = {\n      dotnet_enable_references_code_lens = true,\n    },\n  },\n}\n"
  },
  {
    "path": "lsp/rpmspec.lua",
    "content": "---@brief\n---\n--- https://github.com/dcermak/rpm-spec-language-server\n---\n--- Language server protocol (LSP) support for RPM Spec files.\n---\n--- `rpm-spec-language-server` can be installed by running,\n---\n--- ```sh\n--- pip install rpm-spec-language-server\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'rpm_lsp_server', '--stdio' },\n  filetypes = { 'spec' },\n  root_markers = { '.git' },\n  settings = {},\n}\n"
  },
  {
    "path": "lsp/rubocop.lua",
    "content": "---@brief\n---\n--- https://github.com/rubocop/rubocop\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'rubocop', '--lsp' },\n  filetypes = { 'ruby' },\n  root_markers = { 'Gemfile', '.git' },\n}\n"
  },
  {
    "path": "lsp/ruby_lsp.lua",
    "content": "---@brief\n---\n--- https://shopify.github.io/ruby-lsp/\n---\n--- This gem is an implementation of the language server protocol specification for\n--- Ruby, used to improve editor features.\n---\n--- Install the gem. There's no need to require it, since the server is used as a\n--- standalone executable.\n---\n--- ```sh\n--- gem install ruby-lsp\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = function(dispatchers, config)\n    return vim.lsp.rpc.start(\n      { 'ruby-lsp' },\n      dispatchers,\n      config and config.root_dir and { cwd = config.cmd_cwd or config.root_dir }\n    )\n  end,\n  filetypes = { 'ruby', 'eruby' },\n  root_markers = { 'Gemfile', '.git' },\n  init_options = {\n    formatter = 'auto',\n  },\n  reuse_client = function(client, config)\n    config.cmd_cwd = config.root_dir\n    return client.config.cmd_cwd == config.cmd_cwd\n  end,\n}\n"
  },
  {
    "path": "lsp/ruff.lua",
    "content": "---@brief\n---\n--- https://github.com/astral-sh/ruff\n---\n--- A Language Server Protocol implementation for Ruff, an extremely fast Python linter and code formatter, written in Rust. It can be installed via `pip`.\n---\n--- ```sh\n--- pip install ruff\n--- ```\n---\n--- **Available in Ruff `v0.4.5` in beta and stabilized in Ruff `v0.5.3`.**\n---\n--- This is the new built-in language server written in Rust. It supports the same feature set as `ruff-lsp`, but with superior performance and no installation required. Note that the `ruff-lsp` server will continue to be maintained until further notice.\n---\n--- Server settings can be provided via:\n---\n--- ```lua\n--- vim.lsp.config('ruff', {\n---   init_options = {\n---     settings = {\n---       -- Server settings should go here\n---     }\n---   }\n--- })\n--- ```\n---\n--- Refer to the [documentation](https://docs.astral.sh/ruff/editors/) for more details.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'ruff', 'server' },\n  filetypes = { 'python' },\n  root_markers = { 'pyproject.toml', 'ruff.toml', '.ruff.toml', '.git' },\n  settings = {},\n}\n"
  },
  {
    "path": "lsp/ruff_lsp.lua",
    "content": "---@brief\n---\n--- https://github.com/astral-sh/ruff-lsp\n---\n--- A Language Server Protocol implementation for Ruff, an extremely fast Python linter and code transformation tool, written in Rust. It can be installed via pip.\n---\n--- ```sh\n--- pip install ruff-lsp\n--- ```\n---\n--- Extra CLI arguments for `ruff` can be provided via\n---\n--- ```lua\n--- vim.lsp.config('ruff_lsp', {\n---   init_options = {\n---     settings = {\n---       -- Any extra CLI arguments for `ruff` go here.\n---       args = {},\n---     }\n---   }\n--- })\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'ruff-lsp' },\n  filetypes = { 'python' },\n  root_markers = { 'pyproject.toml', 'ruff.toml', '.git' },\n  ---@type lspconfig.settings.ruff_lsp\n  settings = {},\n}\n"
  },
  {
    "path": "lsp/rumdl.lua",
    "content": "---@brief\n---\n--- https://github.com/rvben/rumdl\n---\n--- Markdown Linter and Formatter written in Rust.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'rumdl', 'server' },\n  filetypes = { 'markdown' },\n  root_markers = { '.git' },\n}\n"
  },
  {
    "path": "lsp/rune_languageserver.lua",
    "content": "---@brief\n---\n--- https://crates.io/crates/rune-languageserver\n---\n--- A language server for the [Rune](https://rune-rs.github.io/) Language,\n--- an embeddable dynamic programming language for Rust\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'rune-languageserver' },\n  filetypes = { 'rune' },\n  root_markers = { '.git' },\n}\n"
  },
  {
    "path": "lsp/rust_analyzer.lua",
    "content": "---@brief\n---\n--- https://github.com/rust-lang/rust-analyzer\n---\n--- rust-analyzer (aka rls 2.0), a language server for Rust\n---\n---\n--- See [docs](https://rust-analyzer.github.io/book/configuration.html) for extra settings. The settings can be used like this:\n--- ```lua\n--- vim.lsp.config('rust_analyzer', {\n---   settings = {\n---     ['rust-analyzer'] = {\n---       diagnostics = {\n---         enable = false;\n---       }\n---     }\n---   }\n--- })\n--- ```\n---\n--- Note: do not set `init_options` for this LS config, it will be automatically populated by the contents of settings[\"rust-analyzer\"] per\n--- https://github.com/rust-lang/rust-analyzer/blob/eb5da56d839ae0a9e9f50774fa3eb78eb0964550/docs/dev/lsp-extensions.md?plain=1#L26.\n\nlocal function reload_workspace(bufnr)\n  local clients = vim.lsp.get_clients { bufnr = bufnr, name = 'rust_analyzer' }\n  for _, client in ipairs(clients) do\n    vim.notify 'Reloading Cargo Workspace'\n    ---@diagnostic disable-next-line:param-type-mismatch\n    client:request('rust-analyzer/reloadWorkspace', nil, function(err)\n      if err then\n        error(tostring(err))\n      end\n      vim.notify 'Cargo workspace reloaded'\n    end, 0)\n  end\nend\n\nlocal function user_sysroot_src()\n  return vim.tbl_get(vim.lsp.config['rust_analyzer'], 'settings', 'rust-analyzer', 'cargo', 'sysrootSrc')\nend\n\nlocal function default_sysroot_src()\n  local sysroot = vim.tbl_get(vim.lsp.config['rust_analyzer'], 'settings', 'rust-analyzer', 'cargo', 'sysroot')\n  if not sysroot then\n    local rustc = os.getenv 'RUSTC' or 'rustc'\n    local result = vim.system({ rustc, '--print', 'sysroot' }, { text = true }):wait()\n\n    local stdout = result.stdout\n    if result.code == 0 and stdout then\n      if string.sub(stdout, #stdout) == '\\n' then\n        if #stdout > 1 then\n          sysroot = string.sub(stdout, 1, #stdout - 1)\n        else\n          sysroot = ''\n        end\n      else\n        sysroot = stdout\n      end\n    end\n  end\n\n  return sysroot and vim.fs.joinpath(sysroot, 'lib/rustlib/src/rust/library') or nil\nend\n\nlocal function is_library(fname)\n  local user_home = vim.fs.normalize(vim.env.HOME)\n  local cargo_home = os.getenv 'CARGO_HOME' or user_home .. '/.cargo'\n  local registry = cargo_home .. '/registry/src'\n  local git_registry = cargo_home .. '/git/checkouts'\n\n  local rustup_home = os.getenv 'RUSTUP_HOME' or user_home .. '/.rustup'\n  local toolchains = rustup_home .. '/toolchains'\n\n  local sysroot_src = user_sysroot_src() or default_sysroot_src()\n\n  for _, item in ipairs { toolchains, registry, git_registry, sysroot_src } do\n    if item and vim.fs.relpath(item, fname) then\n      local clients = vim.lsp.get_clients { name = 'rust_analyzer' }\n      return #clients > 0 and clients[#clients].config.root_dir or nil\n    end\n  end\nend\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'rust-analyzer' },\n  filetypes = { 'rust' },\n  root_dir = function(bufnr, on_dir)\n    local fname = vim.api.nvim_buf_get_name(bufnr)\n    local reused_dir = is_library(fname)\n    if reused_dir then\n      on_dir(reused_dir)\n      return\n    end\n\n    local cargo_crate_dir = vim.fs.root(fname, { 'Cargo.toml' })\n    local cargo_workspace_root\n\n    if cargo_crate_dir == nil then\n      on_dir(\n        vim.fs.root(fname, { 'rust-project.json' })\n          or vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n      )\n      return\n    end\n\n    local cmd = {\n      'cargo',\n      'metadata',\n      '--no-deps',\n      '--format-version',\n      '1',\n      '--manifest-path',\n      cargo_crate_dir .. '/Cargo.toml',\n    }\n\n    vim.system(cmd, { text = true }, function(output)\n      if output.code == 0 then\n        if output.stdout then\n          local result = vim.json.decode(output.stdout)\n          if result['workspace_root'] then\n            cargo_workspace_root = vim.fs.normalize(result['workspace_root'])\n          end\n        end\n\n        on_dir(cargo_workspace_root or cargo_crate_dir)\n      else\n        vim.schedule(function()\n          vim.notify(('[rust_analyzer] cmd failed with code %d: %s\\n%s'):format(output.code, cmd, output.stderr))\n        end)\n      end\n    end)\n  end,\n  capabilities = {\n    experimental = {\n      serverStatusNotification = true,\n      commands = {\n        commands = {\n          'rust-analyzer.showReferences',\n          'rust-analyzer.runSingle',\n          'rust-analyzer.debugSingle',\n        },\n      },\n    },\n  },\n  ---@type lspconfig.settings.rust_analyzer\n  settings = {\n    ['rust-analyzer'] = {\n      lens = {\n        debug = { enable = true },\n        enable = true,\n        implementations = { enable = true },\n        references = {\n          adt = { enable = true },\n          enumVariant = { enable = true },\n          method = { enable = true },\n          trait = { enable = true },\n        },\n        run = { enable = true },\n        updateTest = { enable = true },\n      },\n    },\n  },\n  before_init = function(init_params, config)\n    -- See https://github.com/rust-lang/rust-analyzer/blob/eb5da56d839ae0a9e9f50774fa3eb78eb0964550/docs/dev/lsp-extensions.md?plain=1#L26\n    if config.settings and config.settings['rust-analyzer'] then\n      init_params.initializationOptions = config.settings['rust-analyzer']\n    end\n    ---@param command table{ title: string, command: string, arguments: any[] }\n    vim.lsp.commands['rust-analyzer.runSingle'] = function(command)\n      local r = command.arguments[1]\n      local cmd = { 'cargo', unpack(r.args.cargoArgs) }\n      if r.args.executableArgs and #r.args.executableArgs > 0 then\n        vim.list_extend(cmd, { '--', unpack(r.args.executableArgs) })\n      end\n\n      local proc = vim.system(cmd, { cwd = r.args.cwd, env = r.args.environment })\n\n      local result = proc:wait()\n\n      if result.code == 0 then\n        vim.notify(result.stdout, vim.log.levels.INFO)\n      else\n        vim.notify(result.stderr, vim.log.levels.ERROR)\n      end\n    end\n  end,\n  on_attach = function(_, bufnr)\n    vim.api.nvim_buf_create_user_command(bufnr, 'LspCargoReload', function()\n      reload_workspace(bufnr)\n    end, { desc = 'Reload current cargo workspace' })\n  end,\n}\n"
  },
  {
    "path": "lsp/salt_ls.lua",
    "content": "---@brief\n---\n--- Language server for Salt configuration files.\n--- https://github.com/dcermak/salt-lsp\n---\n--- The language server can be installed with `pip`:\n--- ```sh\n--- pip install salt-lsp\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'salt_lsp_server' },\n  filetypes = { 'sls' },\n  root_markers = { '.git' },\n}\n"
  },
  {
    "path": "lsp/scheme_langserver.lua",
    "content": "---@brief\n---\n--- https://github.com/ufo5260987423/scheme-langserver\n--- `scheme-langserver`, a language server protocol implementation for scheme.\n--- And for nvim user, please add .sls to scheme file extension list.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'scheme-langserver', '~/.scheme-langserver.log', 'enable', 'disable' },\n  filetypes = { 'scheme' },\n  root_markers = {\n    'Akku.manifest',\n    '.git',\n  },\n}\n"
  },
  {
    "path": "lsp/scry.lua",
    "content": "---@brief\n---\n--- https://github.com/crystal-lang-tools/scry\n---\n--- Crystal language server.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'scry' },\n  filetypes = { 'crystal' },\n  root_markers = { 'shard.yml', '.git' },\n}\n"
  },
  {
    "path": "lsp/selene3p_ls.lua",
    "content": "---@brief\n---\n--- https://github.com/antonk52/lua-3p-language-servers\n---\n--- 3rd party Language Server for Selene lua linter\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'selene-3p-language-server' },\n  filetypes = { 'lua' },\n  root_markers = { 'selene.toml' },\n}\n"
  },
  {
    "path": "lsp/serve_d.lua",
    "content": "---@brief\n---\n--- https://github.com/Pure-D/serve-d\n---\n--- Microsoft language server protocol implementation for D using workspace-d.\n--- Download a binary from https://github.com/Pure-D/serve-d/releases and put it in your $PATH.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'serve-d' },\n  filetypes = { 'd' },\n  root_markers = { 'dub.json', 'dub.sdl', '.git' },\n}\n"
  },
  {
    "path": "lsp/shopify_theme_ls.lua",
    "content": "---@brief\n---\n--- https://shopify.dev/docs/api/shopify-cli\n---\n--- [Language Server](https://shopify.dev/docs/themes/tools/cli/language-server) and Theme Check (linter) for Shopify themes.\n---\n--- `shopify` can be installed via npm `npm install -g @shopify/cli`.\n---\n--- Note: This LSP already includes Theme Check so you don't need to use the `theme_check` server configuration as well.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = {\n    'shopify',\n    'theme',\n    'language-server',\n  },\n  filetypes = { 'liquid' },\n  root_markers = {\n    '.shopifyignore',\n    '.theme-check.yml',\n    '.theme-check.yaml',\n    'shopify.theme.toml',\n  },\n  settings = {},\n}\n"
  },
  {
    "path": "lsp/sixtyfps.lua",
    "content": "---@brief\n---\n--- https://github.com/sixtyfpsui/sixtyfps\n--- `SixtyFPS`'s language server\n---\n--- You can build and install `sixtyfps-lsp` binary with `cargo`:\n--- ```sh\n--- cargo install sixtyfps-lsp\n--- ```\n---\n--- Vim does not have built-in syntax for the `sixtyfps` filetype currently.\n---\n--- This can be added via an autocmd:\n---\n--- ```lua\n--- vim.cmd [[ autocmd BufRead,BufNewFile *.60 set filetype=sixtyfps ]]\n--- ```\n---\n--- or by installing a filetype plugin such as https://github.com/RustemB/sixtyfps-vim\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'sixtyfps-lsp' },\n  filetypes = { 'sixtyfps' },\n}\n"
  },
  {
    "path": "lsp/slangd.lua",
    "content": "---@brief\n---\n--- https://github.com/shader-slang/slang\n---\n--- The `slangd` binary can be downloaded as part of [slang releases](https://github.com/shader-slang/slang/releases) or\n--- by [building `slang` from source](https://github.com/shader-slang/slang/blob/master/docs/building.md).\n---\n--- The server can be configured by passing a \"settings\" object to vim.lsp.config('slangd'):\n---\n--- ```lua\n--- vim.lsp.config('slangd', {\n---   settings = {\n---     slang = {\n---       predefinedMacros = {\"MY_VALUE_MACRO=1\"},\n---       inlayHints = {\n---         deducedTypes = true,\n---         parameterNames = true,\n---       }\n---     }\n---   }\n--- })\n--- ```\n--- Available options are documented [here](https://github.com/shader-slang/slang-vscode-extension/tree/main?tab=readme-ov-file#configurations)\n--- or in more detail [here](https://github.com/shader-slang/slang-vscode-extension/blob/main/package.json#L70).\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'slangd' },\n  filetypes = { 'hlsl', 'shaderslang' },\n  root_markers = { 'slangdconfig.json', '.clang-format', '.git' },\n}\n"
  },
  {
    "path": "lsp/slint_lsp.lua",
    "content": "---@brief\n---\n--- https://github.com/slint-ui/slint\n--- `Slint`'s language server\n---\n--- You can build and install `slint-lsp` binary with `cargo`:\n--- ```sh\n--- cargo install slint-lsp\n--- ```\n---\n--- Vim does not have built-in syntax for the `slint` filetype at this time.\n---\n--- This can be added via an autocmd:\n---\n--- ```lua\n--- vim.cmd [[ autocmd BufRead,BufNewFile *.slint set filetype=slint ]]\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'slint-lsp' },\n  filetypes = { 'slint' },\n  root_markers = { '.git' },\n}\n"
  },
  {
    "path": "lsp/smarty_ls.lua",
    "content": "---@brief\n---\n--- https://github.com/landeaux/vscode-smarty-langserver-extracted\n---\n--- Language server for Smarty.\n---\n--- `smarty-language-server` can be installed via `npm`:\n---\n--- ```sh\n--- npm i -g vscode-smarty-langserver-extracted\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'smarty-language-server', '--stdio' },\n  filetypes = { 'smarty' },\n  root_dir = function(bufnr, on_dir)\n    local fname = vim.api.nvim_buf_get_name(bufnr)\n    local cwd = assert(vim.uv.cwd())\n    local root = vim.fs.root(fname, { 'composer.json', '.git' })\n\n    -- prefer cwd if root is a descendant\n    on_dir(root and vim.fs.relpath(cwd, root) and cwd)\n  end,\n  settings = {\n    smarty = {\n      pluginDirs = {},\n    },\n    css = {\n      validate = true,\n    },\n  },\n  init_options = {\n    storageDir = vim.NIL,\n  },\n}\n"
  },
  {
    "path": "lsp/smithy_ls.lua",
    "content": "---@brief\n---\n--- https://github.com/awslabs/smithy-language-server\n---\n--- \"Smithy Language Server\", a Language server for the Smithy IDL.\n---\n--- smithy-language-server has no docs that say how to actually install it(?), so look at:\n--- https://github.com/smithy-lang/smithy-vscode/blob/600cfcf0db65edce85f02e6d50f5fa2b0862bc8d/src/extension.ts#L78\n---\n--- Maven package: https://central.sonatype.com/artifact/software.amazon.smithy/smithy-language-server\n---\n--- Installation:\n--- 1. Install coursier, or any tool that can install maven packages.\n---    ```\n---    brew install coursier\n---    ```\n--- 2. The LS is auto-installed and launched by:\n---    ```\n---    coursier launch software.amazon.smithy:smithy-language-server:0.7.0\n---    ```\n\n---@type vim.lsp.Config\nreturn {\n  -- pass 0 as the first argument to use STDIN/STDOUT for communication\n  cmd = {\n    'coursier',\n    'launch',\n    'software.amazon.smithy:smithy-language-server:0.7.0',\n    '-M',\n    'software.amazon.smithy.lsp.Main',\n    '--',\n    '0',\n  },\n  filetypes = { 'smithy' },\n  root_markers = { 'smithy-build.json', 'build.gradle', 'build.gradle.kts', '.git' },\n  message_level = vim.lsp.protocol.MessageType.Log,\n  init_options = {\n    statusBarProvider = 'show-message',\n    isHttpEnabled = true,\n    compilerOptions = {\n      snippetAutoIndent = false,\n    },\n  },\n}\n"
  },
  {
    "path": "lsp/snakeskin_ls.lua",
    "content": "---@brief\n---\n--- https://www.npmjs.com/package/@snakeskin/cli\n---\n--- `snakeskin cli` can be installed via `npm`:\n--- ```sh\n--- npm install -g @snakeskin/cli\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'snakeskin-cli', 'lsp', '--stdio' },\n  filetypes = { 'ss' },\n  root_markers = { 'package.json' },\n}\n"
  },
  {
    "path": "lsp/snyk_ls.lua",
    "content": "---@brief\n---\n--- https://github.com/snyk/snyk-ls\n---\n--- **[Snyk](https://snyk.io)** is a developer security platform that helps you find and fix\n--- vulnerabilities in your code, open source dependencies, containers, and infrastructure as code.\n---\n--- The Snyk Language Server provides real-time security scanning for:\n--- - **Snyk Open Source**: Find and fix vulnerabilities in open source dependencies\n--- - **Snyk Code**: Find and fix security vulnerabilities in your code\n--- - **Snyk Infrastructure as Code**: Find and fix security issues in Kubernetes, Terraform, and other IaC files\n---\n--- ## Authentication\n---\n--- **Note**: Currently, only token-based authentication is supported in Neovim.\n---\n--- 1. Get your API token from https://app.snyk.io/account\n--- 2. Set the `SNYK_TOKEN` environment variable:\n---    ```sh\n---    export SNYK_TOKEN=\"your-token-here\"\n---    ```\n---\n--- ## Trusted Folders\n---\n--- Snyk requires you to trust directories before scanning them. To avoid being prompted every time:\n---\n--- ```lua\n--- vim.lsp.config('snyk_ls', {\n---   init_options = {\n---     trustedFolders = {\n---       '/Users/yourname/projects',  -- Trust your projects directory\n---       '/path/to/another/trusted/dir',\n---     },\n---   },\n--- })\n--- ```\n---\n--- **Important**: Trust the top-level directory where you store your repositories, not individual repos.\n--- For example, if you work on `/Users/yourname/projects/my-app`, trust `/Users/yourname/projects`.\n--- Only trust directories containing code you trust to scan.\n---\n--- ## Configuration\n---\n--- Full configuration options available at https://github.com/snyk/snyk-ls#configuration-1\n---\n--- ### Advanced Configuration\n---\n--- For **non-default multi-tenant or single-tenant setups**, you may need to specify:\n---\n--- - `endpoint`: Custom Snyk API endpoint (e.g., `https://api.eu.snyk.io` for EU, or your single-tenant URL)\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'snyk', 'language-server', '-l', 'info' },\n  root_markers = { '.git', '.snyk' },\n  filetypes = {\n    'apex',\n    'apexcode',\n    'c',\n    'cpp',\n    'cs',\n    'dart',\n    'dockerfile',\n    'elixir',\n    'eelixir',\n    'go',\n    'gomod',\n    'groovy',\n    'helm',\n    'java',\n    'javascript',\n    'json',\n    'kotlin',\n    'objc',\n    'objcpp',\n    'php',\n    'python',\n    'requirements',\n    'ruby',\n    'rust',\n    'scala',\n    'swift',\n    'terraform',\n    'terraform-vars',\n    'typescript',\n    'yaml',\n  },\n  settings = {},\n  init_options = {\n    activateSnykOpenSource = 'true', -- Scan open source dependencies\n    activateSnykCode = 'false', -- Scan your code for vulnerabilities\n    activateSnykIac = 'true', -- Scan infrastructure as code\n    integrationName = 'Neovim',\n    integrationVersion = tostring(vim.version()),\n    token = os.getenv('SNYK_TOKEN') or vim.NIL,\n    trustedFolders = {}, -- Add your trusted directories here to avoid being prompted every time\n  },\n}\n"
  },
  {
    "path": "lsp/solang.lua",
    "content": "---@brief\n---\n---A language server for Solidity\n---\n--- See the [documentation](https://solang.readthedocs.io/en/latest/installing.html) for installation instructions.\n---\n--- The language server only provides the following capabilities:\n--- * Syntax highlighting\n--- * Diagnostics\n--- * Hover\n---\n--- There is currently no support for completion, goto definition, references, or other functionality.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'solang', 'language-server', '--target', 'evm' },\n  filetypes = { 'solidity' },\n  root_markers = { '.git' },\n}\n"
  },
  {
    "path": "lsp/solargraph.lua",
    "content": "---@brief\n---\n--- https://solargraph.org/\n---\n--- solargraph, a language server for Ruby\n---\n--- You can install solargraph via gem install.\n---\n--- ```sh\n--- gem install --user-install solargraph\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'solargraph', 'stdio' },\n  ---@type lspconfig.settings.solargraph\n  settings = {\n    solargraph = {\n      diagnostics = true,\n    },\n  },\n  init_options = { formatting = true },\n  filetypes = { 'ruby' },\n  root_markers = { 'Gemfile', '.git' },\n}\n"
  },
  {
    "path": "lsp/solc.lua",
    "content": "---@brief\n---\n--- https://docs.soliditylang.org/en/latest/installing-solidity.html\n---\n--- solc is the native language server for the Solidity language.\n\nlocal util = require 'lspconfig.util'\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'solc', '--lsp' },\n  filetypes = { 'solidity' },\n  root_dir = function(bufnr, on_dir)\n    local fname = vim.api.nvim_buf_get_name(bufnr)\n    on_dir(util.root_pattern('hardhat.config.*', '.git')(fname))\n  end,\n}\n"
  },
  {
    "path": "lsp/solidity.lua",
    "content": "---@brief\n---\n--- https://github.com/qiuxiang/solidity-ls\n---\n--- npm i solidity-ls -g\n---\n--- Make sure that solc is installed and it's the same version of the file.  solc-select is recommended.\n---\n--- Solidity language server is a LSP with autocomplete, go to definition and diagnostics.\n---\n--- If you use brownie, use this root_markers:\n--- root_markers = { 'brownie-config.yaml', '.git' }\n---\n--- on includePath, you can add an extra path to search for external libs, on remapping you can remap lib <> path, like:\n---\n--- ```lua\n--- { solidity = { includePath = '/Users/your_user/.brownie/packages/', remapping = { [\"@OpenZeppelin/\"] = 'OpenZeppelin/openzeppelin-contracts@4.6.0/' } } }\n--- ```\n---\n--- **For brownie users**\n--- Change the root_markers to:\n---\n--- ```lua\n--- root_markers = { 'brownie-config.yaml', '.git' }\n--- ```\n---\n--- The best way of using it is to have a package.json in your project folder with the packages that you will use.\n--- After installing with package.json, just create a `remappings.txt` with:\n---\n--- ```\n--- @OpenZeppelin/=node_modules/OpenZeppelin/openzeppelin-contracts@4.6.0/\n--- ```\n---\n--- You can omit the node_modules as well.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'solidity-ls', '--stdio' },\n  filetypes = { 'solidity' },\n  root_markers = { '.git', 'package.json' },\n  settings = { solidity = { includePath = '', remapping = {} } },\n}\n"
  },
  {
    "path": "lsp/solidity_ls.lua",
    "content": "---@brief\n---\n--- https://github.com/juanfranblanco/vscode-solidity\n---\n--- `vscode-solidity-server` can be installed via `npm`:\n---\n--- ```sh\n--- npm install -g vscode-solidity-server\n--- ```\n---\n--- `vscode-solidity-server` is a language server for the Solidity language ported from the VSCode \"solidity\" extension.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'vscode-solidity-server', '--stdio' },\n  filetypes = { 'solidity' },\n  root_markers = {\n    'hardhat.config.js',\n    'hardhat.config.ts',\n    'foundry.toml',\n    'remappings.txt',\n    'truffle.js',\n    'truffle-config.js',\n    'ape-config.yaml',\n    '.git',\n    'package.json',\n  },\n}\n"
  },
  {
    "path": "lsp/solidity_ls_nomicfoundation.lua",
    "content": "---@brief\n---\n--- https://github.com/NomicFoundation/hardhat-vscode/blob/development/server/README.md\n---\n--- `nomicfoundation-solidity-language-server` can be installed via `npm`:\n---\n--- ```sh\n--- npm install -g @nomicfoundation/solidity-language-server\n--- ```\n---\n--- A language server for the Solidity programming language, built by the Nomic Foundation for the Ethereum community.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'nomicfoundation-solidity-language-server', '--stdio' },\n  filetypes = { 'solidity' },\n  root_markers = {\n    'hardhat.config.js',\n    'hardhat.config.ts',\n    'foundry.toml',\n    'remappings.txt',\n    'truffle.js',\n    'truffle-config.js',\n    'ape-config.yaml',\n    '.git',\n    'package.json',\n  },\n}\n"
  },
  {
    "path": "lsp/somesass_ls.lua",
    "content": "---@brief\n---\n--- https://github.com/wkillerud/some-sass/tree/main/packages/language-server\n---\n--- `some-sass-language-server` can be installed via `npm`:\n---\n--- ```sh\n--- npm i -g some-sass-language-server\n--- ```\n---\n--- The language server provides:\n---\n--- - Full support for @use and @forward, including aliases, prefixes and hiding.\n--- - Workspace-wide code navigation and refactoring, such as Rename Symbol.\n--- - Rich documentation through SassDoc.\n--- - Language features for %placeholder-selectors, both when using them and writing them.\n--- - Suggestions and hover info for built-in Sass modules, when used with @use.\n\n---@type vim.lsp.Config\nreturn {\n  name = 'somesass_ls',\n  cmd = { 'some-sass-language-server', '--stdio' },\n  filetypes = { 'scss', 'sass' },\n  root_markers = { '.git', '.package.json' },\n  settings = {\n    somesass = {\n      suggestAllFromOpenDocument = true,\n    },\n  },\n}\n"
  },
  {
    "path": "lsp/sorbet.lua",
    "content": "---@brief\n---\n--- https://sorbet.org\n---\n--- Sorbet is a fast, powerful type checker designed for Ruby.\n---\n--- You can install Sorbet via gem install. You might also be interested in how to set\n--- Sorbet up for new projects: https://sorbet.org/docs/adopting.\n---\n--- ```sh\n--- gem install sorbet\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'srb', 'tc', '--lsp' },\n  filetypes = { 'ruby' },\n  root_markers = { 'Gemfile', '.git' },\n}\n"
  },
  {
    "path": "lsp/sourcekit.lua",
    "content": "---@brief\n---\n--- https://github.com/swiftlang/sourcekit-lsp\n---\n--- Language server for Swift and C/C++/Objective-C.\n\nlocal util = require 'lspconfig.util'\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'sourcekit-lsp' },\n  filetypes = { 'swift', 'objc', 'objcpp', 'c', 'cpp' },\n  root_dir = function(bufnr, on_dir)\n    local filename = vim.api.nvim_buf_get_name(bufnr)\n    on_dir(\n      util.root_pattern('buildServer.json', '.bsp')(filename)\n        or util.root_pattern('*.xcodeproj', '*.xcworkspace')(filename)\n        -- better to keep it at the end, because some modularized apps contain multiple Package.swift files\n        or util.root_pattern('compile_commands.json', 'Package.swift')(filename)\n        or vim.fs.dirname(vim.fs.find('.git', { path = filename, upward = true })[1])\n    )\n  end,\n  get_language_id = function(_, ftype)\n    local t = { objc = 'objective-c', objcpp = 'objective-cpp' }\n    return t[ftype] or ftype\n  end,\n  capabilities = {\n    workspace = {\n      didChangeWatchedFiles = {\n        dynamicRegistration = true,\n      },\n    },\n    textDocument = {\n      diagnostic = {\n        dynamicRegistration = true,\n        relatedDocumentSupport = true,\n      },\n    },\n  },\n}\n"
  },
  {
    "path": "lsp/spectral.lua",
    "content": "---@brief\n---\n--- https://github.com/luizcorreia/spectral-language-server\n---  `A flexible JSON/YAML linter for creating automated style guides, with baked in support for OpenAPI v2 & v3.`\n---\n--- `spectral-language-server` can be installed via `npm`:\n--- ```sh\n--- npm i -g spectral-language-server\n--- ```\n--- See [vscode-spectral](https://github.com/stoplightio/vscode-spectral#extension-settings) for configuration options.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'spectral-language-server', '--stdio' },\n  filetypes = { 'yaml', 'json', 'yml' },\n  root_markers = { '.spectral.yaml', '.spectral.yml', '.spectral.json', '.spectral.js' },\n  ---@type lspconfig.settings.spectral\n  settings = {\n    enable = true,\n    run = 'onType',\n    validateLanguages = { 'yaml', 'json', 'yml' },\n  },\n}\n"
  },
  {
    "path": "lsp/spyglassmc_language_server.lua",
    "content": "---@brief\n---\n--- https://github.com/SpyglassMC/Spyglass/tree/main/packages/language-server\n---\n--- Language server for Minecraft datapacks.\n---\n--- `spyglassmc-language-server` can be installed via `npm`:\n---\n--- ```sh\n--- npm i -g @spyglassmc/language-server\n--- ```\n---\n--- You may also need to configure the filetype:\n---\n--- `autocmd BufNewFile,BufRead *.mcfunction set filetype=mcfunction`\n---\n--- This is automatically done by [CrystalAlpha358/vim-mcfunction](https://github.com/CrystalAlpha358/vim-mcfunction), which also provide syntax highlight.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'spyglassmc-language-server', '--stdio' },\n  filetypes = { 'mcfunction' },\n  root_markers = { 'pack.mcmeta' },\n}\n"
  },
  {
    "path": "lsp/sqlls.lua",
    "content": "---@brief\n---\n--- https://github.com/joe-re/sql-language-server\n---\n--- This LSP can be installed via  `npm`. Find further instructions on manual installation of the sql-language-server at [joe-re/sql-language-server](https://github.com/joe-re/sql-language-server).\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'sql-language-server', 'up', '--method', 'stdio' },\n  filetypes = { 'sql', 'mysql' },\n  root_markers = { '.sqllsrc.json' },\n  settings = {},\n}\n"
  },
  {
    "path": "lsp/sqls.lua",
    "content": "---@brief\n---\n--- https://github.com/sqls-server/sqls\n---\n--- ```lua\n--- vim.lsp.config('sqls', {\n---   cmd = {\"path/to/command\", \"-config\", \"path/to/config.yml\"};\n---   ...\n--- })\n--- ```\n--- Sqls can be installed via `go install github.com/sqls-server/sqls@latest`. Instructions for compiling Sqls from the source can be found at [sqls-server/sqls](https://github.com/sqls-server/sqls).\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'sqls' },\n  filetypes = { 'sql', 'mysql' },\n  root_markers = { 'config.yml' },\n  settings = {},\n}\n"
  },
  {
    "path": "lsp/sqruff.lua",
    "content": "---@brief\n---\n--- https://github.com/quarylabs/sqruff\n---\n--- `sqruff` can be installed by following the instructions [here](https://github.com/quarylabs/sqruff?tab=readme-ov-file#installation)\n---\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'sqruff', 'lsp' },\n  filetypes = { 'sql' },\n  root_markers = { '.sqruff', '.git' },\n}\n"
  },
  {
    "path": "lsp/stan_ls.lua",
    "content": "---@brief\n---\n--- https://github.com/tomatitito/stan-language-server\n---\n--- Language server for the Stan probabilistic programming language.\n---\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'stan-language-server', '--stdio' },\n  filetypes = { 'stan' },\n  root_markers = { '.git' },\n  settings = {},\n}\n"
  },
  {
    "path": "lsp/standardrb.lua",
    "content": "---@brief\n---\n--- https://github.com/testdouble/standard\n---\n--- Ruby Style Guide, with linter & automatic code fixer.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'standardrb', '--lsp' },\n  filetypes = { 'ruby' },\n  root_markers = { 'Gemfile', '.git' },\n}\n"
  },
  {
    "path": "lsp/starlark_rust.lua",
    "content": "---@brief\n---\n--- https://github.com/facebookexperimental/starlark-rust/\n--- The LSP part of `starlark-rust` is not currently documented,\n--- but the implementation works well for linting.\n--- This gives valuable warnings for potential issues in the code,\n--- but does not support refactorings.\n---\n--- It can be installed with cargo: https://crates.io/crates/starlark\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'starlark', '--lsp' },\n  filetypes = { 'star', 'bzl', 'BUILD.bazel' },\n  root_markers = { '.git' },\n}\n"
  },
  {
    "path": "lsp/starpls.lua",
    "content": "---@brief\n---\n--- https://github.com/withered-magic/starpls\n---\n--- `starpls` is an LSP implementation for Starlark. Installation instructions can be found in the project's README.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'starpls' },\n  filetypes = { 'bzl' },\n  root_markers = { 'WORKSPACE', 'WORKSPACE.bazel', 'MODULE.bazel' },\n}\n"
  },
  {
    "path": "lsp/statix.lua",
    "content": "---@brief\n---\n--- https://github.com/nerdypepper/statix\n---\n--- lints and suggestions for the nix programming language\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'statix', 'check', '--stdin' },\n  filetypes = { 'nix' },\n  root_markers = { 'flake.nix', '.git' },\n}\n"
  },
  {
    "path": "lsp/steep.lua",
    "content": "---@brief\n---\n--- https://github.com/soutaro/steep\n---\n--- `steep` is a static type checker for Ruby.\n---\n--- You need `Steepfile` to make it work. Generate it with `steep init`.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'steep', 'langserver' },\n  filetypes = { 'ruby', 'eruby' },\n  root_markers = { 'Steepfile', '.git' },\n}\n"
  },
  {
    "path": "lsp/stimulus_ls.lua",
    "content": "---@brief\n---\n--- https://www.npmjs.com/package/stimulus-language-server\n---\n--- `stimulus-lsp` can be installed via `npm`:\n---\n--- ```sh\n--- npm install -g stimulus-language-server\n--- ```\n---\n--- or via `yarn`:\n---\n--- ```sh\n--- yarn global add stimulus-language-server\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'stimulus-language-server', '--stdio' },\n  filetypes = { 'html', 'ruby', 'eruby', 'blade', 'php' },\n  root_markers = { 'Gemfile', '.git' },\n}\n"
  },
  {
    "path": "lsp/stylelint_lsp.lua",
    "content": "---@brief\n---\n--- https://github.com/bmatcuk/stylelint-lsp\n---\n--- `stylelint-lsp` can be installed via `npm`:\n---\n--- ```sh\n--- npm i -g stylelint-lsp\n--- ```\n---\n--- Can be configured by passing a `settings.stylelintplus` object to vim.lsp.config('stylelint_lsp'):\n---\n--- ```lua\n--- vim.lsp.config('stylelint_lsp', {\n---   settings = {\n---     stylelintplus = {\n---       -- see available options in stylelint-lsp documentation\n---     }\n---   }\n--- })\n--- ```\n\nlocal util = require 'lspconfig.util'\n\nlocal root_file = {\n  '.stylelintrc',\n  '.stylelintrc.mjs',\n  '.stylelintrc.cjs',\n  '.stylelintrc.js',\n  '.stylelintrc.json',\n  '.stylelintrc.yaml',\n  '.stylelintrc.yml',\n  'stylelint.config.mjs',\n  'stylelint.config.cjs',\n  'stylelint.config.js',\n}\n\nroot_file = util.insert_package_json(root_file, 'stylelint')\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'stylelint-lsp', '--stdio' },\n  filetypes = {\n    'astro',\n    'css',\n    'html',\n    'less',\n    'scss',\n    'sugarss',\n    'vue',\n    'wxss',\n  },\n  root_markers = root_file,\n  ---@type lspconfig.settings.stylelint_lsp\n  settings = {},\n}\n"
  },
  {
    "path": "lsp/stylua.lua",
    "content": "---@brief\n---\n--- https://github.com/JohnnyMorganz/StyLua\n---\n--- A deterministic code formatter for Lua 5.1, 5.2, 5.3, 5.4, LuaJIT, Luau and CfxLua/FiveM Lua\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'stylua', '--lsp' },\n  filetypes = { 'lua' },\n  root_markers = { '.stylua.toml', 'stylua.toml', '.editorconfig' },\n}\n"
  },
  {
    "path": "lsp/stylua3p_ls.lua",
    "content": "---@brief\n---\n--- https://github.com/antonk52/lua-3p-language-servers\n---\n--- 3rd party Language Server for Stylua lua formatter\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'stylua-3p-language-server' },\n  filetypes = { 'lua' },\n  root_markers = { '.stylua.toml', 'stylua.toml' },\n}\n"
  },
  {
    "path": "lsp/superhtml.lua",
    "content": "---@brief\n---\n--- https://github.com/kristoff-it/superhtml\n---\n--- HTML Language Server & Templating Language Library\n---\n--- This LSP is designed to tightly adhere to the HTML spec as well as enforcing\n--- some additional rules that ensure HTML clarity.\n---\n--- If you want to disable HTML support for another HTML LSP, add the following\n--- to your configuration:\n---\n--- ```lua\n--- vim.lsp.config('superhtml', {\n---   filetypes = { 'superhtml' }\n--- })\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'superhtml', 'lsp' },\n  filetypes = { 'superhtml', 'html' },\n  root_markers = { '.git' },\n}\n"
  },
  {
    "path": "lsp/svelte.lua",
    "content": "---@brief\n---\n--- https://github.com/sveltejs/language-tools/tree/master/packages/language-server\n---\n--- Note: assuming that [ts_ls](#ts_ls) is setup, full JavaScript/TypeScript support (find references, rename, etc of symbols in Svelte files when working in JS/TS files) requires per-project installation and configuration of [typescript-svelte-plugin](https://github.com/sveltejs/language-tools/tree/master/packages/typescript-plugin#usage).\n---\n--- `svelte-language-server` can be installed via `npm`:\n--- ```sh\n--- npm install -g svelte-language-server\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'svelteserver', '--stdio' },\n  filetypes = { 'svelte' },\n  settings = {\n    typescript = {\n      inlayHints = {\n        parameterNames = {\n          enabled = 'literals',\n          suppressWhenArgumentMatchesName = true,\n        },\n        parameterTypes = { enabled = true },\n        variableTypes = { enabled = true },\n        propertyDeclarationTypes = { enabled = true },\n        functionLikeReturnTypes = { enabled = true },\n        enumMemberValues = { enabled = true },\n      },\n    },\n  },\n  root_dir = function(bufnr, on_dir)\n    local fname = vim.api.nvim_buf_get_name(bufnr)\n    -- Svelte LSP only supports file:// schema. https://github.com/sveltejs/language-tools/issues/2777\n    if vim.uv.fs_stat(fname) ~= nil then\n      local root_markers = { 'package-lock.json', 'yarn.lock', 'pnpm-lock.yaml', 'bun.lockb', 'bun.lock', 'deno.lock' }\n      root_markers = vim.fn.has('nvim-0.11.3') == 1 and { root_markers, { '.git' } }\n        or vim.list_extend(root_markers, { '.git' })\n      -- We fallback to the current working directory if no project root is found\n      local project_root = vim.fs.root(bufnr, root_markers) or vim.fn.getcwd()\n      on_dir(project_root)\n    end\n  end,\n  on_attach = function(client, bufnr)\n    -- Workaround to trigger reloading JS/TS files\n    -- See https://github.com/sveltejs/language-tools/issues/2008\n    vim.api.nvim_create_autocmd('BufWritePost', {\n      pattern = { '*.js', '*.ts' },\n      group = vim.api.nvim_create_augroup('lspconfig.svelte', {}),\n      callback = function(ctx)\n        -- internal API to sync changes that have not yet been saved to the file system\n        ---@diagnostic disable-next-line: param-type-mismatch\n        client:notify('$/onDidChangeTsOrJsFile', { uri = ctx.match })\n      end,\n    })\n    vim.api.nvim_buf_create_user_command(bufnr, 'LspMigrateToSvelte5', function()\n      client:exec_cmd({\n        title = 'Migrate Component to Svelte 5 Syntax',\n        command = 'migrate_to_svelte_5',\n        arguments = { vim.uri_from_bufnr(bufnr) },\n      })\n    end, { desc = 'Migrate Component to Svelte 5 Syntax' })\n  end,\n}\n"
  },
  {
    "path": "lsp/svlangserver.lua",
    "content": "---@brief\n---\n--- https://github.com/imc-trading/svlangserver\n---\n--- Language server for SystemVerilog.\n---\n--- `svlangserver` can be installed via `npm`:\n---\n--- ```sh\n--- $ npm install -g @imc-trading/svlangserver\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'svlangserver' },\n  filetypes = { 'verilog', 'systemverilog' },\n  root_markers = { '.svlangserver', '.git' },\n  ---@type lspconfig.settings.svlangserver\n  settings = {\n    systemverilog = {\n      includeIndexing = { '*.{v,vh,sv,svh}', '**/*.{v,vh,sv,svh}' },\n    },\n  },\n  on_attach = function(client, bufnr)\n    vim.api.nvim_buf_create_user_command(bufnr, 'LspSvlangserverBuildIndex', function()\n      client:exec_cmd({\n        title = 'Build Index',\n        command = 'systemverilog.build_index',\n      }, { bufnr = bufnr })\n    end, {\n      desc = 'Instructs language server to rerun indexing',\n    })\n    vim.api.nvim_buf_create_user_command(bufnr, 'LspSvlangserverReportHierarchy', function()\n      client:exec_cmd({\n        title = 'Build Index',\n        command = 'systemverilog.build_index',\n        arguments = { vim.fn.expand '<cword>' },\n      }, { bufnr = bufnr })\n    end, {\n      desc = 'Generates hierarchy for the given module',\n    })\n  end,\n}\n"
  },
  {
    "path": "lsp/svls.lua",
    "content": "---@brief\n---\n--- https://github.com/dalance/svls\n---\n--- Language server for verilog and SystemVerilog\n---\n--- `svls` can be installed via `cargo`:\n---  ```sh\n---  cargo install svls\n---  ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'svls' },\n  filetypes = { 'verilog', 'systemverilog' },\n  root_markers = { '.git' },\n}\n"
  },
  {
    "path": "lsp/swift_mesonls.lua",
    "content": "---@brief\n---\n--- https://github.com/JCWasmx86/Swift-MesonLSP\n---\n--- Meson language server written in Swift\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'Swift-MesonLSP', '--lsp' },\n  filetypes = { 'meson' },\n  root_markers = { 'meson.build', 'meson_options.txt', 'meson.options', '.git' },\n}\n"
  },
  {
    "path": "lsp/syntax_tree.lua",
    "content": "---@brief\n---\n--- https://ruby-syntax-tree.github.io/syntax_tree/\n---\n--- A fast Ruby parser and formatter.\n---\n--- Syntax Tree is a suite of tools built on top of the internal CRuby parser. It\n--- provides the ability to generate a syntax tree from source, as well as the\n--- tools necessary to inspect and manipulate that syntax tree. It can be used to\n--- build formatters, linters, language servers, and more.\n---\n--- ```sh\n--- gem install syntax_tree\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'stree', 'lsp' },\n  filetypes = { 'ruby' },\n  root_markers = { '.streerc', 'Gemfile', '.git' },\n}\n"
  },
  {
    "path": "lsp/systemd_ls.lua",
    "content": "---@brief\n---\n--- Renamed to [systemd_lsp](#systemd_lsp)\n\n---@type vim.lsp.Config\nreturn vim.tbl_extend('force', vim.lsp.config.systemd_lsp, {\n  on_init = function(...)\n    vim.deprecate('systemd_ls', 'systemd_lsp', '3.0.0', 'nvim-lspconfig', false)\n    if vim.lsp.config.systemd_lsp.on_init then\n      vim.lsp.config.systemd_lsp.on_init(...)\n    end\n  end,\n})\n"
  },
  {
    "path": "lsp/systemd_lsp.lua",
    "content": "---@brief\n---\n--- https://github.com/JFryy/systemd-lsp\n---\n--- A Language Server Protocol (LSP) implementation for Systemd unit files,\n--- providing editing support with syntax highlighting,\n--- diagnostics, autocompletion, and documentation.\n---\n--- `systemd-lsp` can be installed via `cargo`:\n--- ```sh\n--- cargo install systemd-lsp\n--- ```\n---\n--- A language server implementation for Systemd unit files made in Rust.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'systemd-lsp' },\n  filetypes = { 'systemd' },\n}\n"
  },
  {
    "path": "lsp/tabby_ml.lua",
    "content": "---@brief\n---\n--- https://tabby.tabbyml.com/blog/running-tabby-as-a-language-server\n---\n--- Language server for Tabby, an opensource, self-hosted AI coding assistant.\n---\n--- `tabby-agent` can be installed via `npm`:\n---\n--- ```sh\n--- npm install --global tabby-agent\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'tabby-agent', '--lsp', '--stdio' },\n  filetypes = {},\n  root_markers = { '.git' },\n}\n"
  },
  {
    "path": "lsp/tailwindcss.lua",
    "content": "---@brief\n--- https://github.com/tailwindlabs/tailwindcss-intellisense\n---\n--- Tailwind CSS Language Server can be installed via npm:\n---\n--- npm install -g @tailwindcss/language-server\nlocal util = require 'lspconfig.util'\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'tailwindcss-language-server', '--stdio' },\n  -- filetypes copied and adjusted from tailwindcss-intellisense\n  filetypes = {\n    -- html\n    'aspnetcorerazor',\n    'astro',\n    'astro-markdown',\n    'blade',\n    'clojure',\n    'django-html',\n    'htmldjango',\n    'edge',\n    'eelixir', -- vim ft\n    'elixir',\n    'ejs',\n    'erb',\n    'eruby', -- vim ft\n    'gohtml',\n    'gohtmltmpl',\n    'haml',\n    'handlebars',\n    'hbs',\n    'html',\n    'htmlangular',\n    'html-eex',\n    'heex',\n    'jade',\n    'leaf',\n    'liquid',\n    'markdown',\n    'mdx',\n    'mustache',\n    'njk',\n    'nunjucks',\n    'php',\n    'razor',\n    'slim',\n    'twig',\n    -- css\n    'css',\n    'less',\n    'postcss',\n    'sass',\n    'scss',\n    'stylus',\n    'sugarss',\n    -- js\n    'javascript',\n    'javascriptreact',\n    'reason',\n    'rescript',\n    'typescript',\n    'typescriptreact',\n    -- mixed\n    'vue',\n    'svelte',\n    'templ',\n  },\n  capabilities = {\n    workspace = {\n      didChangeWatchedFiles = {\n        dynamicRegistration = true,\n      },\n    },\n  },\n  ---@type lspconfig.settings.tailwindcss\n  settings = {\n    tailwindCSS = {\n      validate = true,\n      lint = {\n        cssConflict = 'warning',\n        invalidApply = 'error',\n        invalidScreen = 'error',\n        invalidVariant = 'error',\n        invalidConfigPath = 'error',\n        invalidTailwindDirective = 'error',\n        recommendedVariantOrder = 'warning',\n      },\n      classAttributes = {\n        'class',\n        'className',\n        'class:list',\n        'classList',\n        'ngClass',\n      },\n      includeLanguages = {\n        eelixir = 'html-eex',\n        elixir = 'phoenix-heex',\n        eruby = 'erb',\n        heex = 'phoenix-heex',\n        htmlangular = 'html',\n        templ = 'html',\n      },\n    },\n  },\n  before_init = function(_, config)\n    if not config.settings then\n      config.settings = {}\n    end\n    if not config.settings.editor then\n      config.settings.editor = {}\n    end\n    if not config.settings.editor.tabSize then\n      config.settings.editor.tabSize = vim.lsp.util.get_effective_tabstop()\n    end\n  end,\n  workspace_required = true,\n  root_dir = function(bufnr, on_dir)\n    local root_files = {\n      -- Generic\n      'tailwind.config.js',\n      'tailwind.config.cjs',\n      'tailwind.config.mjs',\n      'tailwind.config.ts',\n      'postcss.config.js',\n      'postcss.config.cjs',\n      'postcss.config.mjs',\n      'postcss.config.ts',\n      -- Django\n      'theme/static_src/tailwind.config.js',\n      'theme/static_src/tailwind.config.cjs',\n      'theme/static_src/tailwind.config.mjs',\n      'theme/static_src/tailwind.config.ts',\n      'theme/static_src/postcss.config.js',\n      -- Fallback for tailwind v4, where tailwind.config.* is not required anymore\n      '.git',\n    }\n    local fname = vim.api.nvim_buf_get_name(bufnr)\n    root_files = util.insert_package_json(root_files, 'tailwindcss', fname)\n    root_files = util.root_markers_with_field(root_files, { 'mix.lock', 'Gemfile.lock' }, 'tailwind', fname)\n    on_dir(vim.fs.dirname(vim.fs.find(root_files, { path = fname, upward = true })[1]))\n  end,\n}\n"
  },
  {
    "path": "lsp/taplo.lua",
    "content": "---@brief\n---\n--- https://taplo.tamasfe.dev/cli/usage/language-server.html\n---\n--- Language server for Taplo, a TOML toolkit.\n---\n--- `taplo-cli` can be installed via `cargo`:\n--- ```sh\n--- cargo install --features lsp --locked taplo-cli\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'taplo', 'lsp', 'stdio' },\n  filetypes = { 'toml' },\n  root_markers = { '.taplo.toml', 'taplo.toml', '.git' },\n}\n"
  },
  {
    "path": "lsp/tblgen_lsp_server.lua",
    "content": "---@brief\n---\n--- https://mlir.llvm.org/docs/Tools/MLIRLSP/#tablegen-lsp-language-server--tblgen-lsp-server\n---\n--- The Language Server for the LLVM TableGen language\n---\n--- `tblgen-lsp-server` can be installed at the llvm-project repository (https://github.com/llvm/llvm-project)\n\nlocal function get_command()\n  local cmd = { 'tblgen-lsp-server' }\n  local files = vim.fs.find(\n    { 'tablegen_compile_commands.yml', 'build/tablegen_compile_commands.yml' },\n    { path = vim.fn.expand('%:p:h'), upward = true, type = 'file' }\n  )\n  if #files > 0 then\n    local file = files[1]\n    table.insert(cmd, '--tablegen-compilation-database=' .. file)\n  end\n\n  return cmd\nend\n\n---@type vim.lsp.Config\nreturn {\n  cmd = get_command(),\n  filetypes = { 'tablegen' },\n  root_markers = { 'tablegen_compile_commands.yml', '.git' },\n}\n"
  },
  {
    "path": "lsp/tclsp.lua",
    "content": "---@brief\n---\n--- https://github.com/nmoroze/tclint\n---\n--- `tclsp`, a language server for Tcl\n---\n--- `tclsp` can be installed via `pipx`:\n--- ```sh\n--- pipx install tclint\n--- ```\n---\n--- Or via `pip`:\n--- ```sh\n--- pip install tclint\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'tclsp' },\n  filetypes = { 'tcl', 'sdc', 'xdc', 'upf' },\n  root_markers = { 'tclint.toml', '.tclint', 'pyproject.toml', '.git' },\n}\n"
  },
  {
    "path": "lsp/teal_ls.lua",
    "content": "---@brief\n---\n--- https://github.com/teal-language/teal-language-server\n---\n--- Install with:\n--- ```\n--- luarocks install teal-language-server\n--- ```\n---\n--- Optional Command Args:\n--- * \"--log-mode=by_date\" - Enable logging in $HOME/.cache/teal-language-server. Log name will be date + pid of process\n--- * \"--log-mode=by_proj_path\" - Enable logging in $HOME/.cache/teal-language-server. Log name will be project path + pid of process\n--- * \"--verbose=true\" - Increases log level.  Does nothing unless log-mode is set\n\n---@type vim.lsp.Config\nreturn {\n  cmd = {\n    'teal-language-server',\n  },\n  filetypes = {\n    'teal',\n  },\n  root_markers = { 'tlconfig.lua' },\n}\n"
  },
  {
    "path": "lsp/templ.lua",
    "content": "---@brief\n---\n--- https://templ.guide\n---\n--- The official language server for the templ HTML templating language.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'templ', 'lsp' },\n  filetypes = { 'templ' },\n  root_markers = { 'go.work', 'go.mod', '.git' },\n}\n"
  },
  {
    "path": "lsp/termux_language_server.lua",
    "content": "---@brief\n---\n--- https://github.com/termux/termux-language-server\n---\n--- Language server for various bash scripts such as Arch PKGBUILD, Gentoo ebuild, Termux build.sh, etc.\n\nlocal util = require('lspconfig').util\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'termux-language-server' },\n  root_dir = function(bufnr, on_dir)\n    local patterns = {\n      -- Termux\n      'build.sh',\n      '*.subpackage.sh',\n      -- Arch/MSYS2\n      'PKGBUILD',\n      'makepkg.conf',\n      '*.install',\n      -- Gentoo\n      'make.conf',\n      'color.map',\n      '*.ebuild',\n      '*.eclass',\n    }\n    local fname = vim.api.nvim_buf_get_name(bufnr)\n    local match = util.root_pattern(patterns)(fname)\n    if match then\n      on_dir(vim.fs.root(match, '.git') or match)\n    end\n  end,\n}\n"
  },
  {
    "path": "lsp/terraform_lsp.lua",
    "content": "---@brief\n---\n--- https://github.com/juliosueiras/terraform-lsp\n---\n--- Terraform language server\n--- Download a released binary from\n--- https://github.com/juliosueiras/terraform-lsp/releases.\n---\n--- From https://github.com/hashicorp/terraform-ls#terraform-ls-vs-terraform-lsp:\n---\n--- Both HashiCorp and the maintainer of terraform-lsp expressed interest in\n--- collaborating on a language server and are working towards a _long-term_\n--- goal of a single stable and feature-complete implementation.\n---\n--- For the time being both projects continue to exist, giving users the\n--- choice:\n---\n--- - `terraform-ls` providing\n---   - overall stability (by relying only on public APIs)\n---   - compatibility with any provider and any Terraform >=0.12.0 currently\n---     less features\n---   - due to project being younger and relying on public APIs which may\n---     not offer the same functionality yet\n---\n--- - `terraform-lsp` providing\n---   - currently more features\n---   - compatibility with a single particular Terraform (0.12.20 at time of writing)\n---     - configs designed for other 0.12 versions may work, but interpretation may be inaccurate\n---   - less stability (due to reliance on Terraform's own internal packages)\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'terraform-lsp' },\n  filetypes = { 'terraform', 'hcl' },\n  root_markers = { '.terraform', '.git' },\n}\n"
  },
  {
    "path": "lsp/terraformls.lua",
    "content": "---@brief\n---\n--- https://github.com/hashicorp/terraform-ls\n---\n--- Terraform language server\n--- Download a released binary from https://github.com/hashicorp/terraform-ls/releases.\n---\n--- From https://github.com/hashicorp/terraform-ls#terraform-ls-vs-terraform-lsp:\n---\n--- Both HashiCorp and the maintainer of terraform-lsp expressed interest in\n--- collaborating on a language server and are working towards a _long-term_\n--- goal of a single stable and feature-complete implementation.\n---\n--- For the time being both projects continue to exist, giving users the\n--- choice:\n---\n--- - `terraform-ls` providing\n---   - overall stability (by relying only on public APIs)\n---   - compatibility with any provider and any Terraform >=0.12.0 currently\n---     less features\n---   - due to project being younger and relying on public APIs which may\n---     not offer the same functionality yet\n---\n--- - `terraform-lsp` providing\n---   - currently more features\n---   - compatibility with a single particular Terraform (0.12.20 at time of writing)\n---     - configs designed for other 0.12 versions may work, but interpretation may be inaccurate\n---   - less stability (due to reliance on Terraform's own internal packages)\n---\n--- Note, that the `settings` configuration option uses the `workspace/didChangeConfiguration` event,\n--- [which is not supported by terraform-ls](https://github.com/hashicorp/terraform-ls/blob/main/docs/features.md).\n--- Instead you should use `init_options` which passes the settings as part of the LSP initialize call\n--- [as is required by terraform-ls](https://github.com/hashicorp/terraform-ls/blob/main/docs/SETTINGS.md#how-to-pass-settings).\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'terraform-ls', 'serve' },\n  filetypes = { 'terraform', 'terraform-vars' },\n  root_markers = { '.terraform', '.git' },\n}\n"
  },
  {
    "path": "lsp/texlab.lua",
    "content": "---@brief\n---\n--- https://github.com/latex-lsp/texlab\n---\n--- A completion engine built from scratch for (La)TeX.\n---\n--- See https://github.com/latex-lsp/texlab/wiki/Configuration for configuration options.\n---\n--- There are some non standard commands supported, namely:\n--- `LspTexlabBuild`, `LspTexlabForward`, `LspTexlabCancelBuild`,\n--- `LspTexlabDependencyGraph`, `LspTexlabCleanArtifacts`,\n--- `LspTexlabCleanAuxiliary`, `LspTexlabFindEnvironments`,\n--- and `LspTexlabChangeEnvironment`.\n\nlocal function buf_build(client, bufnr)\n  local win = vim.api.nvim_get_current_win()\n  local params = vim.lsp.util.make_position_params(win, client.offset_encoding)\n  client:request('textDocument/build', params, function(err, result)\n    if err then\n      error(tostring(err))\n    end\n    local texlab_build_status = {\n      [0] = 'Success',\n      [1] = 'Error',\n      [2] = 'Failure',\n      [3] = 'Cancelled',\n    }\n    vim.notify('Build ' .. texlab_build_status[result.status], vim.log.levels.INFO)\n  end, bufnr)\nend\n\nlocal function buf_search(client, bufnr)\n  local win = vim.api.nvim_get_current_win()\n  local params = vim.lsp.util.make_position_params(win, client.offset_encoding)\n  client:request('textDocument/forwardSearch', params, function(err, result)\n    if err then\n      error(tostring(err))\n    end\n    local texlab_forward_status = {\n      [0] = 'Success',\n      [1] = 'Error',\n      [2] = 'Failure',\n      [3] = 'Unconfigured',\n    }\n    vim.notify('Search ' .. texlab_forward_status[result.status], vim.log.levels.INFO)\n  end, bufnr)\nend\n\nlocal function buf_cancel_build(client, bufnr)\n  return client:exec_cmd({\n    title = 'cancel',\n    command = 'texlab.cancelBuild',\n  }, { bufnr = bufnr })\nend\n\nlocal function dependency_graph(client)\n  client:exec_cmd({ command = 'texlab.showDependencyGraph' }, { bufnr = 0 }, function(err, result)\n    if err then\n      return vim.notify(err.code .. ': ' .. err.message, vim.log.levels.ERROR)\n    end\n    vim.notify('The dependency graph has been generated:\\n' .. result, vim.log.levels.INFO)\n  end)\nend\n\nlocal function command_factory(cmd)\n  local cmd_tbl = {\n    Auxiliary = 'texlab.cleanAuxiliary',\n    Artifacts = 'texlab.cleanArtifacts',\n  }\n  return function(client, bufnr)\n    return client:exec_cmd({\n      title = ('clean_%s'):format(cmd),\n      command = cmd_tbl[cmd],\n      arguments = { { uri = vim.uri_from_bufnr(bufnr) } },\n    }, { bufnr = bufnr }, function(err, _)\n      if err then\n        vim.notify(('Failed to clean %s files: %s'):format(cmd, err.message), vim.log.levels.ERROR)\n      else\n        vim.notify(('Command %s executed successfully'):format(cmd), vim.log.levels.INFO)\n      end\n    end)\n  end\nend\n\nlocal function buf_find_envs(client, bufnr)\n  local win = vim.api.nvim_get_current_win()\n  client:exec_cmd({\n    command = 'texlab.findEnvironments',\n    arguments = { vim.lsp.util.make_position_params(win, client.offset_encoding) },\n  }, { bufnr = bufnr }, function(err, result)\n    if err then\n      return vim.notify(err.code .. ': ' .. err.message, vim.log.levels.ERROR)\n    end\n    local env_names = {}\n    local max_length = 1\n    for _, env in ipairs(result) do\n      table.insert(env_names, env.name.text)\n      max_length = math.max(max_length, string.len(env.name.text))\n    end\n    for i, name in ipairs(env_names) do\n      env_names[i] = string.rep(' ', i - 1) .. name\n    end\n    vim.lsp.util.open_floating_preview(env_names, '', {\n      height = #env_names,\n      width = math.max((max_length + #env_names - 1), (string.len 'Environments')),\n      focusable = false,\n      focus = false,\n      title = 'Environments',\n    })\n  end)\nend\n\nlocal function buf_change_env(client, bufnr)\n  vim.ui.input({ prompt = 'New environment name: ' }, function(input)\n    if not input or input == '' then\n      return vim.notify('No environment name provided', vim.log.levels.WARN)\n    end\n    local pos = vim.api.nvim_win_get_cursor(0)\n    return client:exec_cmd({\n      title = 'change_environment',\n      command = 'texlab.changeEnvironment',\n      arguments = {\n        {\n          textDocument = { uri = vim.uri_from_bufnr(bufnr) },\n          position = { line = pos[1] - 1, character = pos[2] },\n          newName = tostring(input),\n        },\n      },\n    }, { bufnr = bufnr })\n  end)\nend\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'texlab' },\n  filetypes = { 'tex', 'plaintex', 'bib' },\n  root_markers = { '.git', '.latexmkrc', 'latexmkrc', '.texlabroot', 'texlabroot', 'Tectonic.toml' },\n  settings = {\n    texlab = {\n      rootDirectory = nil,\n      build = {\n        executable = 'latexmk',\n        args = { '-pdf', '-interaction=nonstopmode', '-synctex=1', '%f' },\n        onSave = false,\n        forwardSearchAfter = false,\n      },\n      forwardSearch = {\n        executable = nil,\n        args = {},\n      },\n      chktex = {\n        onOpenAndSave = false,\n        onEdit = false,\n      },\n      diagnosticsDelay = 300,\n      latexFormatter = 'latexindent',\n      latexindent = {\n        ['local'] = nil, -- local is a reserved keyword\n        modifyLineBreaks = false,\n      },\n      bibtexFormatter = 'texlab',\n      formatterLineLength = 80,\n    },\n  },\n  on_attach = function(client, bufnr)\n    for _, cmd in ipairs({\n      { name = 'TexlabBuild', fn = buf_build, desc = 'Build the current buffer' },\n      { name = 'TexlabForward', fn = buf_search, desc = 'Forward search from current position' },\n      { name = 'TexlabCancelBuild', fn = buf_cancel_build, desc = 'Cancel the current build' },\n      { name = 'TexlabDependencyGraph', fn = dependency_graph, desc = 'Show the dependency graph' },\n      { name = 'TexlabCleanArtifacts', fn = command_factory('Artifacts'), desc = 'Clean the artifacts' },\n      { name = 'TexlabCleanAuxiliary', fn = command_factory('Auxiliary'), desc = 'Clean the auxiliary files' },\n      { name = 'TexlabFindEnvironments', fn = buf_find_envs, desc = 'Find the environments at current position' },\n      { name = 'TexlabChangeEnvironment', fn = buf_change_env, desc = 'Change the environment at current position' },\n    }) do\n      vim.api.nvim_buf_create_user_command(bufnr, 'Lsp' .. cmd.name, function()\n        cmd.fn(client, bufnr)\n      end, { desc = cmd.desc })\n    end\n  end,\n}\n"
  },
  {
    "path": "lsp/textlsp.lua",
    "content": "---@brief\n---\n--- https://github.com/hangyav/textLSP\n---\n--- `textLSP` is an LSP server for text spell and grammar checking with various AI tools.\n--- It supports multiple text file formats, such as LaTeX, Org or txt.\n---\n--- For the available text analyzer tools and their configuration, see the [GitHub](https://github.com/hangyav/textLSP) page.\n--- By default, all analyzers are disabled in textLSP, since most of them need special settings.\n--- For quick testing, LanguageTool is enabled in the default `nvim-lspconfig` configuration.\n---\n--- To install run: `pip install textLSP`\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'textlsp' },\n  filetypes = { 'text', 'tex', 'org' },\n  root_markers = { '.git' },\n  settings = {\n    textLSP = {\n      analysers = {\n        -- by default all analysers are disabled in textLSP, since many of them\n        -- need custom settings. See github page. LanguageTool is enaled here\n        -- only for a quick test.\n        languagetool = {\n          enabled = true,\n          check_text = {\n            on_open = true,\n            on_save = true,\n            on_change = false,\n          },\n        },\n      },\n      documents = {\n        org = {\n          org_todo_keywords = {\n            'TODO',\n            'IN_PROGRESS',\n            'DONE',\n          },\n        },\n      },\n    },\n  },\n}\n"
  },
  {
    "path": "lsp/tflint.lua",
    "content": "---@brief\n---\n--- https://github.com/terraform-linters/tflint\n---\n--- A pluggable Terraform linter that can act as lsp server.\n--- Installation instructions can be found in https://github.com/terraform-linters/tflint#installation.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'tflint', '--langserver' },\n  filetypes = { 'terraform' },\n  root_markers = { '.terraform', '.git', '.tflint.hcl' },\n}\n"
  },
  {
    "path": "lsp/theme_check.lua",
    "content": "---@brief\n---\n--- https://github.com/Shopify/shopify-cli\n---\n--- `theme-check-language-server` is bundled with `shopify-cli` or it can also be installed via\n---\n--- https://github.com/Shopify/theme-check#installation\n---\n--- **NOTE:**\n--- If installed via Homebrew, `cmd` must be set to 'theme-check-liquid-server'\n---\n--- ```lua\n--- vim.lsp.config('theme_check, {\n---   cmd = { 'theme-check-liquid-server' }\n--- })\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'theme-check-language-server', '--stdio' },\n  filetypes = { 'liquid' },\n  root_markers = { '.theme-check.yml' },\n  settings = {},\n}\n"
  },
  {
    "path": "lsp/thriftls.lua",
    "content": "---@brief\n---\n--- https://github.com/joyme123/thrift-ls\n---\n--- you can install thriftls by mason or download binary here: https://github.com/joyme123/thrift-ls/releases\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'thriftls' },\n  filetypes = { 'thrift' },\n  root_markers = { '.thrift' },\n}\n"
  },
  {
    "path": "lsp/tilt_ls.lua",
    "content": "---@brief\n---\n--- https://github.com/tilt-dev/tilt\n---\n--- Tilt language server.\n---\n--- You might need to add filetype detection manually:\n---\n--- ```vim\n--- autocmd BufRead Tiltfile setf=tiltfile\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'tilt', 'lsp', 'start' },\n  filetypes = { 'tiltfile' },\n  root_markers = { '.git' },\n}\n"
  },
  {
    "path": "lsp/tinymist.lua",
    "content": "---@brief\n---\n--- https://github.com/Myriad-Dreamin/tinymist\n--- An integrated language service for Typst [taɪpst]. You can also call it \"微霭\" [wēi ǎi] in Chinese.\n---\n--- Currently some of Tinymist's workspace commands are supported, namely:\n--- `LspTinymistExportSvg`, `LspTinymistExportPng`, `LspTinymistExportPdf`,\n--- `LspTinymistExportMarkdown`, `LspTinymistExportText`, `LspTinymistExportQuery`,\n--- `LspTinymistExportAnsiHighlight`, `LspTinymistGetServerInfo`,\n--- `LspTinymistGetDocumentTrace`, `LspTinymistGetWorkspaceLabels`,\n--- `LspTinymistGetDocumentMetrics`, and `LspTinymistPinMain`.\n\n---@param command_name string\n---@param client vim.lsp.Client\n---@param bufnr integer\n---@return fun():nil run_tinymist_command, string cmd_name, string cmd_desc\nlocal function create_tinymist_command(command_name, client, bufnr)\n  local export_type = command_name:match 'tinymist%.export(%w+)'\n  local info_type = command_name:match 'tinymist%.(%w+)'\n  local cmd_display = export_type or info_type:gsub('^get', 'Get'):gsub('^pin', 'Pin')\n  ---@return nil\n  local function run_tinymist_command()\n    local arguments = { vim.api.nvim_buf_get_name(bufnr) }\n    local title_str = export_type and ('Export ' .. cmd_display) or cmd_display\n    ---@type lsp.Handler\n    local function handler(err, res)\n      if err then\n        return vim.notify(err.code .. ': ' .. err.message, vim.log.levels.ERROR)\n      end\n      vim.notify(vim.inspect(res), vim.log.levels.INFO)\n    end\n    return client:exec_cmd({\n      title = title_str,\n      command = command_name,\n      arguments = arguments,\n    }, { bufnr = bufnr }, handler)\n  end\n  -- Construct a readable command name/desc\n  local cmd_name = export_type and ('TinymistExport' .. cmd_display) or ('Tinymist' .. cmd_display) ---@type string\n  local cmd_desc = export_type and ('Export to ' .. cmd_display) or ('Get ' .. cmd_display) ---@type string\n  return run_tinymist_command, cmd_name, cmd_desc\nend\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'tinymist' },\n  filetypes = { 'typst' },\n  root_markers = { '.git' },\n  on_attach = function(client, bufnr)\n    for _, command in ipairs {\n      'tinymist.exportSvg',\n      'tinymist.exportPng',\n      'tinymist.exportPdf',\n      -- 'tinymist.exportHtml', -- Use typst 0.13\n      'tinymist.exportMarkdown',\n      'tinymist.exportText',\n      'tinymist.exportQuery',\n      'tinymist.exportAnsiHighlight',\n      'tinymist.getServerInfo',\n      'tinymist.getDocumentTrace',\n      'tinymist.getWorkspaceLabels',\n      'tinymist.getDocumentMetrics',\n      'tinymist.pinMain',\n    } do\n      local cmd_func, cmd_name, cmd_desc = create_tinymist_command(command, client, bufnr)\n      vim.api.nvim_buf_create_user_command(bufnr, 'Lsp' .. cmd_name, cmd_func, { nargs = 0, desc = cmd_desc })\n    end\n  end,\n}\n"
  },
  {
    "path": "lsp/tofu_ls.lua",
    "content": "---@brief\n---\n--- [OpenTofu Language Server](https://github.com/opentofu/tofu-ls)\n---\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'tofu-ls', 'serve' },\n  filetypes = { 'opentofu', 'opentofu-vars', 'terraform' },\n  root_markers = { '.terraform', '.git' },\n}\n"
  },
  {
    "path": "lsp/tombi.lua",
    "content": "---@brief\n---\n--- https://tombi-toml.github.io/tombi/\n---\n--- Language server for Tombi, a TOML toolkit.\n---\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'tombi', 'lsp' },\n  filetypes = { 'toml' },\n  root_markers = { 'tombi.toml', 'pyproject.toml', '.git' },\n}\n"
  },
  {
    "path": "lsp/ts_ls.lua",
    "content": "---@brief\n---\n--- https://github.com/typescript-language-server/typescript-language-server\n---\n--- `ts_ls`, aka `typescript-language-server`, is a Language Server Protocol implementation for TypeScript wrapping `tsserver`. Note that `ts_ls` is not `tsserver`.\n---\n--- `typescript-language-server` depends on `typescript`. Both packages can be installed via `npm`:\n--- ```sh\n--- npm install -g typescript typescript-language-server\n--- ```\n---\n--- To configure typescript language server, add a\n--- [`tsconfig.json`](https://www.typescriptlang.org/docs/handbook/tsconfig-json.html) or\n--- [`jsconfig.json`](https://code.visualstudio.com/docs/languages/jsconfig) to the root of your\n--- project.\n---\n--- Here's an example that disables type checking in JavaScript files.\n---\n--- ```json\n--- {\n---   \"compilerOptions\": {\n---     \"module\": \"commonjs\",\n---     \"target\": \"es6\",\n---     \"checkJs\": false\n---   },\n---   \"exclude\": [\n---     \"node_modules\"\n---   ]\n--- }\n--- ```\n---\n--- Use the `:LspTypescriptSourceAction` command to see \"whole file\" (\"source\") code-actions such as:\n--- - organize imports\n--- - remove unused code\n---\n--- Use the `:LspTypescriptGoToSourceDefinition` command to navigate to the source definition of a symbol (e.g., jump to the original implementation instead of type definitions).\n---\n--- ### Monorepo support\n---\n--- `ts_ls` supports monorepos by default. It will automatically find the `tsconfig.json` or `jsconfig.json` corresponding to the package you are working on.\n--- This works without the need of spawning multiple instances of `ts_ls`, saving memory.\n---\n--- It is recommended to use the same version of TypeScript in all packages, and therefore have it available in your workspace root. The location of the TypeScript binary will be determined automatically, but only once.\n---\n--- Some care must be taken here to correctly infer whether a file is part of a Deno program, or a TS program that\n--- expects to run in Node or Web Browsers. This supports having a Deno module using the denols LSP as a part of a\n--- mostly-not-Deno monorepo. We do this by finding the nearest package manager lock file, and the nearest deno.json\n--- or deno.jsonc.\n---\n--- Example:\n---\n--- ```\n--- project-root\n--- +-- node_modules/...\n--- +-- package-lock.json\n--- +-- package.json\n--- +-- packages\n---     +-- deno-module\n---     |   +-- deno.json\n---     |   +-- package.json <-- It's normal for Deno projects to have package.json files!\n---     |   +-- src\n---     |       +-- index.ts <-- this is a Deno file\n---     +-- node-module\n---         +-- package.json\n---         +-- src\n---             +-- index.ts <-- a non-Deno file (ie, should use ts_ls or tsgols)\n--- ```\n---\n--- From the file being edited, we walk up to find the nearest package manager lockfile. This is PROJECT ROOT.\n--- From the file being edited, find the nearest deno.json or deno.jsonc. This is DENO ROOT.\n--- From the file being edited, find the nearest deno.lock. This is DENO LOCK ROOT\n--- If DENO LOCK ROOT is found, and PROJECT ROOT is missing or shorter, then this is a deno file, and we abort.\n--- If DENO ROOT is found, and it's longer than or equal to PROJECT ROOT, then this is a Deno file, and we abort.\n--- Otherwise, attach at PROJECT ROOT, or the cwd if not found.\n\n---@type vim.lsp.Config\nreturn {\n  init_options = { hostInfo = 'neovim' },\n  cmd = { 'typescript-language-server', '--stdio' },\n  filetypes = {\n    'javascript',\n    'javascriptreact',\n    'typescript',\n    'typescriptreact',\n  },\n  root_dir = function(bufnr, on_dir)\n    -- The project root is where the LSP can be started from\n    -- As stated in the documentation above, this LSP supports monorepos and simple projects.\n    -- We select then from the project root, which is identified by the presence of a package\n    -- manager lock file.\n    local root_markers = { 'package-lock.json', 'yarn.lock', 'pnpm-lock.yaml', 'bun.lockb', 'bun.lock' }\n    -- Give the root markers equal priority by wrapping them in a table\n    root_markers = vim.fn.has('nvim-0.11.3') == 1 and { root_markers, { '.git' } }\n      or vim.list_extend(root_markers, { '.git' })\n    -- exclude deno\n    local deno_root = vim.fs.root(bufnr, { 'deno.json', 'deno.jsonc' })\n    local deno_lock_root = vim.fs.root(bufnr, { 'deno.lock' })\n    local project_root = vim.fs.root(bufnr, root_markers)\n    if deno_lock_root and (not project_root or #deno_lock_root > #project_root) then\n      -- deno lock is closer than package manager lock, abort\n      return\n    end\n    if deno_root and (not project_root or #deno_root >= #project_root) then\n      -- deno config is closer than or equal to package manager lock, abort\n      return\n    end\n    -- project is standard TS, not deno\n    -- We fallback to the current working directory if no project root is found\n    on_dir(project_root or vim.fn.getcwd())\n  end,\n  handlers = {\n    -- handle rename request for certain code actions like extracting functions / types\n    ['_typescript.rename'] = function(_, result, ctx)\n      local client = assert(vim.lsp.get_client_by_id(ctx.client_id))\n      vim.lsp.util.show_document({\n        uri = result.textDocument.uri,\n        range = {\n          start = result.position,\n          ['end'] = result.position,\n        },\n      }, client.offset_encoding)\n      vim.lsp.buf.rename()\n      return vim.NIL\n    end,\n  },\n  commands = {\n    ['editor.action.showReferences'] = function(command, ctx)\n      local client = assert(vim.lsp.get_client_by_id(ctx.client_id))\n      local file_uri, position, references = unpack(command.arguments)\n\n      local quickfix_items = vim.lsp.util.locations_to_items(references --[[@as any]], client.offset_encoding)\n      vim.fn.setqflist({}, ' ', {\n        title = command.title,\n        items = quickfix_items,\n        context = {\n          command = command,\n          bufnr = ctx.bufnr,\n        },\n      })\n\n      vim.lsp.util.show_document({\n        uri = file_uri --[[@as string]],\n        range = {\n          start = position --[[@as lsp.Position]],\n          ['end'] = position --[[@as lsp.Position]],\n        },\n      }, client.offset_encoding)\n      ---@diagnostic enable: assign-type-mismatch\n\n      vim.cmd('botright copen')\n    end,\n  },\n  on_attach = function(client, bufnr)\n    -- ts_ls provides `source.*` code actions that apply to the whole file. These only appear in\n    -- `vim.lsp.buf.code_action()` if specified in `context.only`.\n    vim.api.nvim_buf_create_user_command(bufnr, 'LspTypescriptSourceAction', function()\n      local source_actions = vim.tbl_filter(function(action)\n        return vim.startswith(action, 'source.')\n      end, client.server_capabilities.codeActionProvider.codeActionKinds)\n\n      vim.lsp.buf.code_action({\n        context = {\n          only = source_actions,\n          diagnostics = {},\n        },\n      })\n    end, {})\n\n    -- Go to source definition command\n    vim.api.nvim_buf_create_user_command(bufnr, 'LspTypescriptGoToSourceDefinition', function()\n      local win = vim.api.nvim_get_current_win()\n      local params = vim.lsp.util.make_position_params(win, client.offset_encoding)\n      client:exec_cmd({\n        command = '_typescript.goToSourceDefinition',\n        title = 'Go to source definition',\n        arguments = { params.textDocument.uri, params.position },\n      }, { bufnr = bufnr }, function(err, result)\n        if err then\n          vim.notify('Go to source definition failed: ' .. err.message, vim.log.levels.ERROR)\n          return\n        end\n        if not result or vim.tbl_isempty(result) then\n          vim.notify('No source definition found', vim.log.levels.INFO)\n          return\n        end\n        vim.lsp.util.show_document(result[1], client.offset_encoding, { focus = true })\n      end)\n    end, { desc = 'Go to source definition' })\n  end,\n}\n"
  },
  {
    "path": "lsp/ts_query_ls.lua",
    "content": "---@brief\n---\n--- https://github.com/ribru17/ts_query_ls\n--- Can be configured by passing a \"settings\" object to `vim.lsp.config('ts_query_ls', {})`:\n--- ```lua\n--- vim.lsp.config('ts_query_ls', {\n---   init_options = {\n---     parser_install_directories = {\n---       '/my/parser/install/dir',\n---     },\n---     -- This setting is provided by default\n---     parser_aliases = {\n---       ecma = 'javascript',\n---       jsx = 'javascript',\n---       php_only = 'php',\n---     },\n---   },\n--- })\n--- ```\n\n-- Disable the (slow) built-in query linter, which will show duplicate diagnostics. This must be done before the query\n-- ftplugin is sourced.\nvim.g.query_lint_on = {}\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'ts_query_ls' },\n  filetypes = { 'query' },\n  root_markers = { '.tsqueryrc.json', '.git' },\n  init_options = {\n    parser_aliases = {\n      ecma = 'javascript',\n      jsx = 'javascript',\n      php_only = 'php',\n    },\n    parser_install_directories = {\n      vim.fn.stdpath('data') .. '/site/parser',\n    },\n  },\n  on_attach = function(_, buf)\n    vim.bo[buf].omnifunc = 'v:lua.vim.lsp.omnifunc'\n  end,\n}\n"
  },
  {
    "path": "lsp/tsgo.lua",
    "content": "---@brief\n---\n--- https://github.com/microsoft/typescript-go\n---\n--- `typescript-go` is experimental port of the TypeScript compiler (tsc) and language server (tsserver) to the Go programming language.\n---\n--- `tsgo` can be installed via npm `npm install @typescript/native-preview`.\n---\n--- ### Monorepo support\n---\n--- `tsgo` supports monorepos by default. It will automatically find the `tsconfig.json` or `jsconfig.json` corresponding to the package you are working on.\n--- This works without the need of spawning multiple instances of `tsgo`, saving memory.\n---\n--- It is recommended to use the same version of TypeScript in all packages, and therefore have it available in your workspace root. The location of the TypeScript binary will be determined automatically, but only once.\n---\n--- Some care must be taken here to correctly infer whether a file is part of a Deno program, or a TS program that\n--- expects to run in Node or Web Browsers. This supports having a Deno module using the denols LSP as a part of a\n--- mostly-not-Deno monorepo. We do this by finding the nearest package manager lock file, and the nearest deno.json\n--- or deno.jsonc.\n---\n--- Example:\n---\n--- ```\n--- project-root\n--- +-- node_modules/...\n--- +-- package-lock.json\n--- +-- package.json\n--- +-- packages\n---     +-- deno-module\n---     |   +-- deno.json\n---     |   +-- package.json <-- It's normal for Deno projects to have package.json files!\n---     |   +-- src\n---     |       +-- index.ts <-- this is a Deno file\n---     +-- node-module\n---         +-- package.json\n---         +-- src\n---             +-- index.ts <-- a non-Deno file (ie, should use ts_ls or tsgols)\n--- ```\n---\n--- From the file being edited, we walk up to find the nearest package manager lockfile. This is PROJECT ROOT.\n--- From the file being edited, find the nearest deno.json or deno.jsonc. This is DENO ROOT.\n--- From the file being edited, find the nearest deno.lock. This is DENO LOCK ROOT\n--- If DENO LOCK ROOT is found, and PROJECT ROOT is missing or shorter, then this is a deno file, and we abort.\n--- If DENO ROOT is found, and it's longer than or equal to PROJECT ROOT, then this is a Deno file, and we abort.\n--- Otherwise, attach at PROJECT ROOT, or the cwd if not found.\n\n---@type vim.lsp.Config\nreturn {\n  settings = {\n    typescript = {\n      inlayHints = {\n        parameterNames = {\n          enabled = 'literals',\n          suppressWhenArgumentMatchesName = true,\n        },\n        parameterTypes = { enabled = true },\n        variableTypes = { enabled = true },\n        propertyDeclarationTypes = { enabled = true },\n        functionLikeReturnTypes = { enabled = true },\n        enumMemberValues = { enabled = true },\n      },\n    },\n  },\n  cmd = function(dispatchers, config)\n    local cmd = 'tsgo'\n    local local_cmd = (config or {}).root_dir and config.root_dir .. '/node_modules/.bin/tsgo'\n    if local_cmd and vim.fn.executable(local_cmd) == 1 then\n      cmd = local_cmd\n    end\n    return vim.lsp.rpc.start({ cmd, '--lsp', '--stdio' }, dispatchers)\n  end,\n  filetypes = {\n    'javascript',\n    'javascriptreact',\n    'typescript',\n    'typescriptreact',\n  },\n  root_dir = function(bufnr, on_dir)\n    -- The project root is where the LSP can be started from\n    -- As stated in the documentation above, this LSP supports monorepos and simple projects.\n    -- We select then from the project root, which is identified by the presence of a package\n    -- manager lock file.\n    local root_markers = { 'package-lock.json', 'yarn.lock', 'pnpm-lock.yaml', 'bun.lockb', 'bun.lock' }\n    -- Give the root markers equal priority by wrapping them in a table\n    root_markers = vim.fn.has('nvim-0.11.3') == 1 and { root_markers, { '.git' } }\n      or vim.list_extend(root_markers, { '.git' })\n\n    local deno_root = vim.fs.root(bufnr, { 'deno.json', 'deno.jsonc' })\n    local deno_lock_root = vim.fs.root(bufnr, { 'deno.lock' })\n    local project_root = vim.fs.root(bufnr, root_markers)\n    if deno_lock_root and (not project_root or #deno_lock_root > #project_root) then\n      -- deno lock is closer than package manager lock, abort\n      return\n    end\n    if deno_root and (not project_root or #deno_root >= #project_root) then\n      -- deno config is closer than or equal to package manager lock, abort\n      return\n    end\n    -- project is standard TS, not deno\n    -- We fallback to the current working directory if no project root is found\n    on_dir(project_root or vim.fn.getcwd())\n  end,\n}\n"
  },
  {
    "path": "lsp/tsp_server.lua",
    "content": "---@brief\n---\n--- https://github.com/microsoft/typespec\n---\n--- The language server for TypeSpec, a language for defining cloud service APIs and shapes.\n---\n--- `tsp-server` can be installed together with the typespec compiler via `npm`:\n--- ```sh\n--- npm install -g @typespec/compiler\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'tsp-server', '--stdio' },\n  filetypes = { 'typespec' },\n  root_markers = { 'tspconfig.yaml', '.git' },\n}\n"
  },
  {
    "path": "lsp/ttags.lua",
    "content": "---@brief\n---\n--- https://github.com/npezza93/ttags\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'ttags', 'lsp' },\n  filetypes = { 'ruby', 'rust', 'javascript', 'haskell' },\n  root_markers = { '.git' },\n}\n"
  },
  {
    "path": "lsp/turbo_ls.lua",
    "content": "---@brief\n---\n--- https://www.npmjs.com/package/turbo-language-server\n---\n--- `turbo-language-server` can be installed via `npm`:\n---\n--- ```sh\n--- npm install -g turbo-language-server\n--- ```\n---\n--- or via `yarn`:\n---\n--- ```sh\n--- yarn global add turbo-language-server\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'turbo-language-server', '--stdio' },\n  filetypes = { 'html', 'ruby', 'eruby', 'blade', 'php' },\n  root_markers = { 'Gemfile', '.git' },\n}\n"
  },
  {
    "path": "lsp/turtle_ls.lua",
    "content": "---@brief\n---\n--- https://github.com/stardog-union/stardog-language-servers/tree/master/packages/turtle-language-server\n--- `turtle-language-server`, An editor-agnostic server providing language intelligence (diagnostics, hover tooltips, etc.) for the W3C standard Turtle RDF syntax via the Language Server Protocol.\n--- installable via npm install -g turtle-language-server or yarn global add turtle-language-server.\n--- requires node.\n\nlocal bin_name = 'turtle-language-server'\nlocal bin_path = os.getenv 'NVM_BIN'\nlocal full_path\nif bin_path == nil then\n  local paths = {}\n  local sep = ':'\n  if vim.fn.has 'win32' == 1 then\n    sep = ';'\n  end\n  local path = os.getenv 'PATH'\n  if path ~= nil then\n    for str in string.gmatch(path, '([^' .. sep .. ']+)') do\n      paths[#paths + 1] = str\n    end\n  end\n  for _, p in ipairs(paths) do\n    local candidate = table.concat({ p, bin_name }, '/')\n    if (vim.uv.fs_stat(candidate) or {}).type == 'file' then\n      full_path = candidate\n      break\n    end\n  end\nelse\n  full_path = table.concat({ bin_path, bin_name }, '/')\nend\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'node', full_path, '--stdio' },\n  filetypes = { 'turtle', 'ttl' },\n  root_markers = { '.git' },\n}\n"
  },
  {
    "path": "lsp/tvm_ffi_navigator.lua",
    "content": "---@brief\n---\n--- https://github.com/tqchen/ffi-navigator\n---\n--- The Language Server for FFI calls in TVM to be able jump between python and C++\n---\n--- FFI navigator can be installed with `pip install ffi-navigator`, buf for more details, please see\n--- https://github.com/tqchen/ffi-navigator?tab=readme-ov-file#installation\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'python', '-m', 'ffi_navigator.langserver' },\n  filetypes = { 'python', 'cpp' },\n  root_markers = { 'pyproject.toml', '.git' },\n}\n"
  },
  {
    "path": "lsp/twiggy_language_server.lua",
    "content": "---@brief\n---\n--- https://github.com/moetelo/twiggy\n---\n--- `twiggy-language-server` can be installed via `npm`:\n--- ```sh\n--- npm install -g twiggy-language-server\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'twiggy-language-server', '--stdio' },\n  filetypes = { 'twig' },\n  root_markers = { 'composer.json', '.git' },\n}\n"
  },
  {
    "path": "lsp/ty.lua",
    "content": "---@brief\n---\n--- https://github.com/astral-sh/ty\n---\n--- A Language Server Protocol implementation for ty, an extremely fast Python type checker and language server, written in Rust.\n---\n--- For installation instructions, please refer to the [ty documentation](https://github.com/astral-sh/ty/blob/main/README.md#getting-started).\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'ty', 'server' },\n  filetypes = { 'python' },\n  root_markers = { 'ty.toml', 'pyproject.toml', 'setup.py', 'setup.cfg', 'requirements.txt', '.git' },\n}\n"
  },
  {
    "path": "lsp/typeprof.lua",
    "content": "---@brief\n---\n--- https://github.com/ruby/typeprof\n---\n--- `typeprof` is the built-in analysis and LSP tool for Ruby 3.1+.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'typeprof', '--lsp', '--stdio' },\n  filetypes = { 'ruby', 'eruby' },\n  root_markers = { 'Gemfile', '.git' },\n}\n"
  },
  {
    "path": "lsp/typos_lsp.lua",
    "content": "---@brief\n---\n--- https://github.com/crate-ci/typos\n--- https://github.com/tekumara/typos-lsp\n---\n--- A Language Server Protocol implementation for Typos, a low false-positive\n--- source code spell checker, written in Rust. Download it from the releases page\n--- on GitHub: https://github.com/tekumara/typos-lsp/releases\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'typos-lsp' },\n  root_markers = { 'typos.toml', '_typos.toml', '.typos.toml', 'pyproject.toml', 'Cargo.toml' },\n  settings = {},\n}\n"
  },
  {
    "path": "lsp/typst_lsp.lua",
    "content": "---@brief\n---\n--- https://github.com/nvarner/typst-lsp\n---\n--- Language server for Typst.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'typst-lsp' },\n  filetypes = { 'typst' },\n  root_markers = { '.git' },\n}\n"
  },
  {
    "path": "lsp/uiua.lua",
    "content": "---@brief\n---\n--- https://github.com/uiua-lang/uiua/\n---\n--- The builtin language server of the Uiua interpreter.\n---\n--- The Uiua interpreter can be installed with `cargo install uiua`\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'uiua', 'lsp' },\n  filetypes = { 'uiua' },\n  root_markers = { 'main.ua', '.fmt.ua', '.git' },\n}\n"
  },
  {
    "path": "lsp/ungrammar_languageserver.lua",
    "content": "---@brief\n---\n--- https://github.com/binhtran432k/ungrammar-language-features\n--- Language Server for Ungrammar.\n---\n--- Ungrammar Language Server can be installed via npm:\n--- ```sh\n--- npm i ungrammar-languageserver -g\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'ungrammar-languageserver', '--stdio' },\n  filetypes = { 'ungrammar' },\n  root_markers = { '.git' },\n  settings = {\n    ungrammar = {\n      validate = {\n        enable = true,\n      },\n      format = {\n        enable = true,\n      },\n    },\n  },\n}\n"
  },
  {
    "path": "lsp/unison.lua",
    "content": "---@brief\n---\n--- https://github.com/unisonweb/unison/blob/trunk/docs/language-server.markdown\n\nlocal util = require 'lspconfig.util'\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'nc', 'localhost', os.getenv 'UNISON_LSP_PORT' or '5757' },\n  filetypes = { 'unison' },\n  root_dir = function(bufnr, on_dir)\n    local fname = vim.api.nvim_buf_get_name(bufnr)\n    on_dir(util.root_pattern('*.u')(fname))\n  end,\n  settings = {},\n}\n"
  },
  {
    "path": "lsp/unocss.lua",
    "content": "---@brief\n---\n--- https://github.com/xna00/unocss-language-server\n---\n--- UnoCSS Language Server can be installed via npm:\n--- ```sh\n--- npm i unocss-language-server -g\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'unocss-language-server', '--stdio' },\n  -- copied from https://github.com/unocss/unocss/blob/35297359bf61917bda499db86e3728a7ebd05d6c/packages/vscode/src/autocomplete.ts#L12-L35\n  filetypes = {\n    'erb',\n    'haml',\n    'hbs',\n    'html',\n    'css',\n    'postcss',\n    'javascript',\n    'javascriptreact',\n    'markdown',\n    'ejs',\n    'php',\n    'svelte',\n    'typescript',\n    'typescriptreact',\n    'vue-html',\n    'vue',\n    'sass',\n    'scss',\n    'less',\n    'stylus',\n    'astro',\n    'rescript',\n    'rust',\n  },\n  workspace_required = true,\n  root_markers = { 'unocss.config.js', 'unocss.config.ts', 'uno.config.js', 'uno.config.ts' },\n}\n"
  },
  {
    "path": "lsp/uvls.lua",
    "content": "---@brief\n---\n--- https://codeberg.org/caradhras/uvls\n--- Language server for UVL, written using tree sitter and rust.\n--- You can install the server easily using cargo:\n--- ```sh\n--- git clone https://codeberg.org/caradhras/uvls\n--- cd  uvls\n--- cargo install --path .\n--- ```\n---\n--- Note: To activate properly nvim needs to know the uvl filetype.\n--- You can add it via:\n--- ```lua\n--- vim.cmd([[au BufRead,BufNewFile *.uvl setfiletype uvl]])\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'uvls' },\n  filetypes = { 'uvl' },\n  root_markers = { '.git' },\n}\n"
  },
  {
    "path": "lsp/v_analyzer.lua",
    "content": "---@brief\n---\n--- https://github.com/vlang/v-analyzer\n---\n--- V language server.\n---\n--- `v-analyzer` can be installed by following the instructions [here](https://github.com/vlang/v-analyzer#installation).\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'v-analyzer' },\n  filetypes = { 'v', 'vsh', 'vv' },\n  root_markers = { 'v.mod', '.git' },\n}\n"
  },
  {
    "path": "lsp/vacuum.lua",
    "content": "---@brief\n---\n---Vacuum is the worlds fastest OpenAPI 3, OpenAPI 2 / Swagger linter and quality analysis tool.\n---\n--- You can install vacuum using mason or follow the instructions here: https://github.com/daveshanley/vacuum\n---\n--- The file types are not detected automatically, you can register them manually (see below) or override the filetypes:\n---\n--- ```lua\n--- vim.filetype.add {\n---   pattern = {\n---     ['openapi.*%.ya?ml'] = 'yaml.openapi',\n---     ['openapi.*%.json'] = 'json.openapi',\n---   },\n--- }\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'vacuum', 'language-server' },\n  filetypes = { 'yaml.openapi', 'json.openapi' },\n  root_markers = { '.git' },\n}\n"
  },
  {
    "path": "lsp/vala_ls.lua",
    "content": "---@brief\n---\n--- https://github.com/vala-lang/vala-language-server\n\nlocal meson_matcher = function(path)\n  local pattern = 'meson.build'\n  local f = vim.fn.glob(table.concat({ path, pattern }, '/'))\n  if f == '' then\n    return nil\n  end\n  for line in io.lines(f) do\n    -- skip meson comments\n    if not line:match '^%s*#.*' then\n      local str = line:gsub('%s+', '')\n      if str ~= '' then\n        if str:match '^project%(' then\n          return path\n        else\n          break\n        end\n      end\n    end\n  end\nend\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'vala-language-server' },\n  filetypes = { 'vala', 'genie' },\n  root_dir = function(bufnr, on_dir)\n    local fname = vim.api.nvim_buf_get_name(bufnr)\n    local root = vim.iter(vim.fs.parents(fname)):find(meson_matcher)\n    on_dir(root or vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1]))\n  end,\n}\n"
  },
  {
    "path": "lsp/vale_ls.lua",
    "content": "---@brief\n---\n--- https://github.com/errata-ai/vale-ls\n---\n--- An implementation of the Language Server Protocol (LSP) for the Vale command-line tool.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'vale-ls' },\n  filetypes = { 'asciidoc', 'markdown', 'text', 'tex', 'rst', 'html', 'xml' },\n  root_markers = { '.vale.ini' },\n}\n"
  },
  {
    "path": "lsp/vectorcode_server.lua",
    "content": "---@brief\n--- https://github.com/Davidyz/VectorCode\n---\n--- A Language Server Protocol implementation for VectorCode, a code repository indexing tool.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'vectorcode-server' },\n  root_dir = vim.fs.root(0, { '.vectorcode', '.git' }),\n  settings = {},\n}\n"
  },
  {
    "path": "lsp/verible.lua",
    "content": "---@brief\n---\n--- https://github.com/chipsalliance/verible\n---\n--- A linter and formatter for verilog and SystemVerilog files.\n---\n--- Release binaries can be downloaded from [here](https://github.com/chipsalliance/verible/releases)\n--- and placed in a directory on PATH.\n---\n--- See https://github.com/chipsalliance/verible/tree/master/verilog/tools/ls/README.md for options.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'verible-verilog-ls' },\n  filetypes = { 'systemverilog', 'verilog' },\n  root_markers = { '.git' },\n}\n"
  },
  {
    "path": "lsp/veridian.lua",
    "content": "---@brief\n---\n--- https://github.com/vivekmalneedi/veridian\n---\n--- A SystemVerilog LanguageServer.\n---\n--- Download the latest release for your OS from the releases page\n---\n--- Install with slang feature, if C++17 compiler is available:\n--- ```\n--- cargo install --git https://github.com/vivekmalneedi/veridian.git --all-features\n--- ```\n---\n--- Install if C++17 compiler is not available:\n--- ```\n--- cargo install --git https://github.com/vivekmalneedi/veridian.git\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'veridian' },\n  filetypes = { 'systemverilog', 'verilog' },\n  root_markers = { '.git' },\n}\n"
  },
  {
    "path": "lsp/veryl_ls.lua",
    "content": "---@brief\n---\n--- https://github.com/veryl-lang/veryl\n---\n--- Language server for Veryl\n---\n--- `veryl-ls` can be installed via `cargo`:\n---  ```sh\n---  cargo install veryl-ls\n---  ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'veryl-ls' },\n  filetypes = { 'veryl' },\n  root_markers = { '.git' },\n}\n"
  },
  {
    "path": "lsp/vespa_ls.lua",
    "content": "---@brief\n---\n--- https://github.com/vespa-engine/vespa/tree/master/integration/schema-language-server\n---\n--- Vespa Language Server provides LSP features such as completion, diagnostics,\n--- and go-to-definition for Vespa schema files (`.sd`), profile files (`.profile`),\n--- and YQL query files (`.yql`).\n---\n--- This language server requires Java 17 or higher. You can build the jar from source.\n---\n--- You can override the default command by manually configuring it like this:\n---\n--- ```lua\n--- vim.lsp.config('vespa_ls', {\n---   cmd = { 'java', '-jar', '/path/to/vespa-language-server.jar' },\n--- })\n--- ```\n---\n--- The project root is determined based on the presence of a `.git` directory.\n---\n--- To make Neovim recognize the proper filetypes, add the following setting in `init.lua`:\n---\n---     vim.filetype.add {\n---       extension = {\n---         profile = 'sd',\n---         sd = 'sd',\n---         yql = 'yql',\n---       },\n---     }\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'java', '-jar', 'vespa-language-server.jar' },\n  filetypes = { 'sd', 'profile', 'yql' },\n  root_markers = {\n    '.git',\n  },\n}\n"
  },
  {
    "path": "lsp/vhdl_ls.lua",
    "content": "---@brief\n---\n--- Install vhdl_ls from https://github.com/VHDL-LS/rust_hdl and add it to path\n---\n--- Configuration\n---\n--- The language server needs to know your library mapping to perform full analysis of the code. For this it uses a configuration file in the TOML format named vhdl_ls.toml.\n---\n--- vhdl_ls will load configuration files in the following order of priority (first to last):\n---\n---     A file named .vhdl_ls.toml in the user home folder.\n---     A file name from the VHDL_LS_CONFIG environment variable.\n---     A file named vhdl_ls.toml in the workspace root.\n---\n--- Settings in a later files overwrites those from previously loaded files.\n---\n--- Example vhdl_ls.toml\n--- ```\n--- # File names are either absolute or relative to the parent folder of the vhdl_ls.toml file\n--- [libraries]\n--- lib2.files = [\n---   'pkg2.vhd',\n--- ]\n--- lib1.files = [\n---   'pkg1.vhd',\n---   'tb_ent.vhd'\n--- ]\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'vhdl_ls' },\n  filetypes = { 'vhd', 'vhdl' },\n  root_markers = {\n    'vhdl_ls.toml',\n    '.vhdl_ls.toml',\n  },\n}\n"
  },
  {
    "path": "lsp/vimls.lua",
    "content": "---@brief\n---\n--- https://github.com/iamcco/vim-language-server\n---\n--- You can install vim-language-server via npm:\n--- ```sh\n--- npm install -g vim-language-server\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'vim-language-server', '--stdio' },\n  filetypes = { 'vim' },\n  root_markers = { '.git' },\n  init_options = {\n    isNeovim = true,\n    iskeyword = '@,48-57,_,192-255,-#',\n    vimruntime = '',\n    runtimepath = '',\n    diagnostic = { enable = true },\n    indexes = {\n      runtimepath = true,\n      gap = 100,\n      count = 3,\n      projectRootPatterns = { 'runtime', 'nvim', '.git', 'autoload', 'plugin' },\n    },\n    suggest = { fromVimruntime = true, fromRuntimepath = true },\n  },\n}\n"
  },
  {
    "path": "lsp/visualforce_ls.lua",
    "content": "---@brief\n---\n--- https://github.com/forcedotcom/salesforcedx-vscode\n---\n--- Language server for Visualforce.\n---\n--- For manual installation, download the .vsix archive file from the\n--- [forcedotcom/salesforcedx-vscode](https://github.com/forcedotcom/salesforcedx-vscode)\n--- GitHub releases. Then, configure `cmd` to run the Node script at the unpacked location:\n---\n--- ```lua\n--- vim.lsp.config('visualforce_ls', {\n---   cmd = {\n---     'node',\n---     '/path/to/unpacked/archive/extension/node_modules/@salesforce/salesforcedx-visualforce-language-server/out/src/visualforceServer.js',\n---     '--stdio'\n---   }\n--- })\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  filetypes = { 'visualforce' },\n  root_markers = { 'sfdx-project.json' },\n  init_options = {\n    embeddedLanguages = {\n      css = true,\n      javascript = true,\n    },\n  },\n}\n"
  },
  {
    "path": "lsp/vls.lua",
    "content": "---@brief\n---\n--- https://github.com/vlang/vls\n---\n--- V language server.\n---\n--- `v-language-server` can be installed by following the instructions [here](https://github.com/vlang/vls#installation).\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'v', 'ls' },\n  filetypes = { 'v', 'vlang' },\n  root_markers = { 'v.mod', '.git' },\n}\n"
  },
  {
    "path": "lsp/volar.lua",
    "content": "---@brief\n---\n--- Renamed to [vue_ls](#vue_ls)\n\n---@type vim.lsp.Config\nreturn vim.tbl_extend('force', vim.lsp.config.vue_ls, {\n  on_init = function(...)\n    vim.deprecate('volar', 'vue_ls', '3.0.0', 'nvim-lspconfig', false)\n    if vim.lsp.config.vue_ls.on_init then\n      vim.lsp.config.vue_ls.on_init(...)\n    end\n  end,\n})\n"
  },
  {
    "path": "lsp/vscoqtop.lua",
    "content": "---@brief\n---\n--- Renamed to [vsrocq](#vsrocq)\n\n---@type vim.lsp.Config\nreturn vim.tbl_extend('force', vim.lsp.config.vsrocq, {\n  on_init = function(...)\n    vim.deprecate('vscoqtop', 'vsrocq', '3.0.0', 'nvim-lspconfig', false)\n    if vim.lsp.config.vsrocq.on_init then\n      vim.lsp.config.vsrocq.on_init(...)\n    end\n  end,\n})\n"
  },
  {
    "path": "lsp/vsrocq.lua",
    "content": "---@brief\n---\n--- https://github.com/rocq-prover/vsrocq\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'vsrocqtop' },\n  filetypes = { 'coq' },\n  root_markers = { '_RocqProject', '_CoqProject', '.git' },\n}\n"
  },
  {
    "path": "lsp/vtsls.lua",
    "content": "---@brief\n---\n--- https://github.com/yioneko/vtsls\n---\n--- `vtsls` can be installed with npm:\n--- ```sh\n--- npm install -g @vtsls/language-server\n--- ```\n---\n--- To configure a TypeScript project, add a\n--- [`tsconfig.json`](https://www.typescriptlang.org/docs/handbook/tsconfig-json.html)\n--- or [`jsconfig.json`](https://code.visualstudio.com/docs/languages/jsconfig) to\n--- the root of your project.\n---\n--- ### Vue support\n---\n--- Since v3.0.0, the Vue language server requires `vtsls` to support TypeScript.\n---\n--- ```\n--- -- If you are using mason.nvim, you can get the ts_plugin_path like this\n--- -- For Mason v1,\n--- -- local mason_registry = require('mason-registry')\n--- -- local vue_language_server_path = mason_registry.get_package('vue-language-server'):get_install_path() .. '/node_modules/@vue/language-server'\n--- -- For Mason v2,\n--- -- local vue_language_server_path = vim.fn.expand '$MASON/packages' .. '/vue-language-server' .. '/node_modules/@vue/language-server'\n--- -- or even\n--- -- local vue_language_server_path = vim.fn.stdpath('data') .. \"/mason/packages/vue-language-server/node_modules/@vue/language-server\"\n--- local vue_language_server_path = '/path/to/@vue/language-server'\n--- local vue_plugin = {\n---   name = '@vue/typescript-plugin',\n---   location = vue_language_server_path,\n---   languages = { 'vue' },\n---   configNamespace = 'typescript',\n--- }\n--- vim.lsp.config('vtsls', {\n---   settings = {\n---     vtsls = {\n---       tsserver = {\n---         globalPlugins = {\n---           vue_plugin,\n---         },\n---       },\n---     },\n---   },\n---   filetypes = { 'typescript', 'javascript', 'javascriptreact', 'typescriptreact', 'vue' },\n--- })\n--- ```\n---\n--- - `location` MUST be defined. If the plugin is installed in `node_modules`, `location` can have any value.\n--- - `languages` must include vue even if it is listed in filetypes.\n--- - `filetypes` is extended here to include Vue SFC.\n---\n--- You must make sure the Vue language server is setup. For example,\n---\n--- ```\n--- vim.lsp.enable('vue_ls')\n--- ```\n---\n--- See `vue_ls` section and https://github.com/vuejs/language-tools/wiki/Neovim for more information.\n---\n--- ### Monorepo support\n---\n--- `vtsls` supports monorepos by default. It will automatically find the `tsconfig.json` or `jsconfig.json` corresponding to the package you are working on.\n--- This works without the need of spawning multiple instances of `vtsls`, saving memory.\n---\n--- It is recommended to use the same version of TypeScript in all packages, and therefore have it available in your workspace root. The location of the TypeScript binary will be determined automatically, but only once.\n---\n--- This includes the same Deno-excluding logic from `ts_ls`. It is not recommended to enable both `vtsls` and `ts_ls` at the same time!\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'vtsls', '--stdio' },\n  init_options = {\n    hostInfo = 'neovim',\n  },\n  filetypes = {\n    'javascript',\n    'javascriptreact',\n    'typescript',\n    'typescriptreact',\n  },\n  root_dir = function(bufnr, on_dir)\n    -- The project root is where the LSP can be started from\n    -- As stated in the documentation above, this LSP supports monorepos and simple projects.\n    -- We select then from the project root, which is identified by the presence of a package\n    -- manager lock file.\n    local root_markers = { 'package-lock.json', 'yarn.lock', 'pnpm-lock.yaml', 'bun.lockb', 'bun.lock' }\n    -- Give the root markers equal priority by wrapping them in a table\n    root_markers = vim.fn.has('nvim-0.11.3') == 1 and { root_markers, { '.git' } }\n      or vim.list_extend(root_markers, { '.git' })\n    -- exclude deno\n    local deno_root = vim.fs.root(bufnr, { 'deno.json', 'deno.jsonc' })\n    local deno_lock_root = vim.fs.root(bufnr, { 'deno.lock' })\n    local project_root = vim.fs.root(bufnr, root_markers)\n    if deno_lock_root and (not project_root or #deno_lock_root > #project_root) then\n      -- deno lock is closer than package manager lock, abort\n      return\n    end\n    if deno_root and (not project_root or #deno_root >= #project_root) then\n      -- deno config is closer than or equal to package manager lock, abort\n      return\n    end\n    -- project is standard TS, not deno\n    -- We fallback to the current working directory if no project root is found\n    on_dir(project_root or vim.fn.getcwd())\n  end,\n}\n"
  },
  {
    "path": "lsp/vue_ls.lua",
    "content": "---@brief\n---\n--- https://github.com/vuejs/language-tools/tree/master/packages/language-server\n---\n--- The official language server for Vue\n---\n--- It can be installed via npm:\n--- ```sh\n--- npm install -g @vue/language-server\n--- ```\n---\n--- The language server only supports Vue 3 projects by default.\n--- For Vue 2 projects, [additional configuration](https://github.com/vuejs/language-tools/blob/master/extensions/vscode/README.md?plain=1#L19) are required.\n---\n--- The Vue language server works in \"hybrid mode\" that exclusively manages the CSS/HTML sections.\n--- You need the `vtsls` server with the `@vue/typescript-plugin` plugin to support TypeScript in `.vue` files.\n--- See `vtsls` section and https://github.com/vuejs/language-tools/wiki/Neovim for more information.\n---\n--- NOTE: Since v3.0.0, the Vue Language Server [no longer supports takeover mode](https://github.com/vuejs/language-tools/pull/5248).\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'vue-language-server', '--stdio' },\n  filetypes = { 'vue' },\n  root_markers = { 'package.json' },\n  on_init = function(client)\n    local retries = 0\n\n    ---@param _ lsp.ResponseError\n    ---@param result any\n    ---@param context lsp.HandlerContext\n    local function typescriptHandler(_, result, context)\n      local ts_client = vim.lsp.get_clients({ bufnr = context.bufnr, name = 'ts_ls' })[1]\n        or vim.lsp.get_clients({ bufnr = context.bufnr, name = 'vtsls' })[1]\n        or vim.lsp.get_clients({ bufnr = context.bufnr, name = 'typescript-tools' })[1]\n\n      if not ts_client then\n        -- there can sometimes be a short delay until `ts_ls`/`vtsls` are attached so we retry for a few times until it is ready\n        if retries <= 10 then\n          retries = retries + 1\n          vim.defer_fn(function()\n            typescriptHandler(_, result, context)\n          end, 100)\n        else\n          vim.notify(\n            'Could not find `ts_ls`, `vtsls`, or `typescript-tools` lsp client required by `vue_ls`.',\n            vim.log.levels.ERROR\n          )\n        end\n        return\n      end\n\n      local param = unpack(result)\n      local id, command, payload = unpack(param)\n      ts_client:exec_cmd({\n        title = 'vue_request_forward', -- You can give title anything as it's used to represent a command in the UI, `:h Client:exec_cmd`\n        command = 'typescript.tsserverRequest',\n        arguments = {\n          command,\n          payload,\n        },\n      }, { bufnr = context.bufnr }, function(_, r)\n        local response_data = { { id, r and r.body } }\n        ---@diagnostic disable-next-line: param-type-mismatch\n        client:notify('tsserver/response', response_data)\n      end)\n    end\n\n    client.handlers['tsserver/request'] = typescriptHandler\n  end,\n}\n"
  },
  {
    "path": "lsp/wasm_language_tools.lua",
    "content": "---@brief\n---\n--- https://github.com/g-plane/wasm-language-tools\n---\n--- WebAssembly Language Tools aims to provide and improve the editing experience of WebAssembly Text Format.\n--- It also provides an out-of-the-box formatter (a.k.a. pretty printer) for WebAssembly Text Format.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'wat_server' },\n  filetypes = { 'wat' },\n}\n"
  },
  {
    "path": "lsp/wc_language_server.lua",
    "content": "---@brief\n---\n--- https://github.com/wc-toolkit/wc-language-server\n---\n--- Web Components Language Server provides intelligent editor support for Web Components and custom elements.\n--- It offers advanced HTML diagnostics, completion, and validation for custom elements, including support for\n--- attribute types, deprecation, and duplicate attribute detection.\n---\n--- The language server uses the [Custom Elements Manifest](https://github.com/webcomponents/custom-elements-manifest)\n--- to generate component integration and validation information\n---\n--- `wc-language-server` can be installed by following the instructions at the [GitHub repository](https://github.com/wc-toolkit/wc-language-server/blob/main/packages/neovim/README.md).\n---\n--- The default `cmd` assumes that the `wc-language-server` binary can be found in `$PATH`.\n---\n--- Alternatively, you can install it via [mason.nvim](https://github.com/williamboman/mason.nvim):\n--- ```vim\n--- :MasonInstall wc-language-server\n--- ```\n---\n--- ## Configuration\n---\n--- The language server reads settings from `wc.config.js` (or `.ts/.mjs/.cjs`) at the project root.\n--- Use it to customize manifest sources, file scoping, and diagnostic behavior.\n---\n--- Example `wc.config.js`:\n--- ```js\n--- export default {\n---   // Fetch manifest from a custom path or URL\n---   manifestSrc: './dist/custom-elements.json',\n---\n---   // Narrow which files opt into the language server\n---   include: ['src/**/*.ts', 'src/**/*.html'],\n---\n---   // Skip specific globs\n---   exclude: ['**/*.stories.ts'],\n---\n---   // Per-library overrides\n---   libraries: {\n---     '@your/pkg': {\n---       manifestSrc: 'https://cdn.example.com/custom-elements.json',\n---       tagFormatter: (tag) => tag.replace(/^x-/, 'my-'),\n---     },\n---   },\n---\n---   // Customize diagnostic severity levels\n---   diagnosticSeverity: {\n---     duplicateAttribute: 'warning',\n---     unknownElement: 'info',\n---   },\n--- };\n--- ```\n---\n--- See the [configuration documentation](https://github.com/wc-toolkit/wc-language-server#configuration) for more details.\n---\n\n---@type vim.lsp.Config\nreturn {\n  init_options = { hostInfo = 'neovim' },\n  cmd = { 'wc-language-server', '--stdio' },\n  filetypes = {\n    'html',\n    'javascriptreact',\n    'typescriptreact',\n    'astro',\n    'svelte',\n    'vue',\n    'markdown',\n    'mdx',\n    'javascript',\n    'typescript',\n    'css',\n    'scss',\n    'less',\n  },\n  root_markers = {\n    'wc.config.js',\n    'wc.config.ts',\n    'wc.config.mjs',\n    'wc.config.cjs',\n    'custom-elements.json',\n    'package.json',\n    '.git',\n  },\n}\n"
  },
  {
    "path": "lsp/wgsl_analyzer.lua",
    "content": "---@brief\n---\n--- https://github.com/wgsl-analyzer/wgsl-analyzer\n---\n--- `wgsl-analyzer` can be installed via `cargo`:\n--- ```sh\n--- cargo install --git https://github.com/wgsl-analyzer/wgsl-analyzer wgsl-analyzer\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'wgsl-analyzer' },\n  filetypes = { 'wgsl' },\n  root_markers = { '.git' },\n  settings = {},\n}\n"
  },
  {
    "path": "lsp/yamlls.lua",
    "content": "---@brief\n---\n--- https://github.com/redhat-developer/yaml-language-server\n---\n--- `yaml-language-server` can be installed via `yarn`:\n--- ```sh\n--- yarn global add yaml-language-server\n--- ```\n---\n--- To use a schema for validation, there are two options:\n---\n--- 1. Add a modeline to the file. A modeline is a comment of the form:\n---\n--- ```\n--- # yaml-language-server: $schema=<urlToTheSchema|relativeFilePath|absoluteFilePath}>\n--- ```\n---\n--- where the relative filepath is the path relative to the open yaml file, and the absolute filepath\n--- is the filepath relative to the filesystem root ('/' on unix systems)\n---\n--- 2. Associated a schema url, relative , or absolute (to root of project, not to filesystem root) path to\n--- the a glob pattern relative to the detected project root. Check `:checkhealth vim.lsp` to determine the resolved project\n--- root.\n---\n--- ```lua\n--- vim.lsp.config('yamlls', {\n---   ...\n---   settings = {\n---     yaml = {\n---       ... -- other settings. note this overrides the lspconfig defaults.\n---       schemas = {\n---         [\"https://json.schemastore.org/github-workflow.json\"] = \"/.github/workflows/*\",\n---         [\"../path/relative/to/file.yml\"] = \"/.github/workflows/*\",\n---         [\"/path/from/root/of/project\"] = \"/.github/workflows/*\",\n---       },\n---     },\n---   }\n--- })\n--- ```\n---\n--- Currently, kubernetes is special-cased in yammls, see the following upstream issues:\n--- * [#211](https://github.com/redhat-developer/yaml-language-server/issues/211).\n--- * [#307](https://github.com/redhat-developer/yaml-language-server/issues/307).\n---\n--- To override a schema to use a specific k8s schema version (for example, to use 1.18):\n---\n--- ```lua\n--- vim.lsp.config('yamlls', {\n---   ...\n---   settings = {\n---     yaml = {\n---       ... -- other settings. note this overrides the lspconfig defaults.\n---       schemas = {\n---         [\"https://raw.githubusercontent.com/yannh/kubernetes-json-schema/refs/heads/master/v1.32.1-standalone-strict/all.json\"] = \"/*.k8s.yaml\",\n---         ... -- other schemas\n---       },\n---     },\n---   }\n--- })\n--- ```\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'yaml-language-server', '--stdio' },\n  filetypes = { 'yaml', 'yaml.docker-compose', 'yaml.gitlab', 'yaml.helm-values' },\n  root_markers = { '.git' },\n  ---@type lspconfig.settings.yamlls\n  settings = {\n    -- https://github.com/redhat-developer/vscode-redhat-telemetry#how-to-disable-telemetry-reporting\n    redhat = { telemetry = { enabled = false } },\n    -- formatting disabled by default in yaml-language-server; enable it\n    yaml = { format = { enable = true } },\n  },\n  on_init = function(client)\n    --- https://github.com/neovim/nvim-lspconfig/pull/4016\n    --- Since formatting is disabled by default if you check `client:supports_method('textDocument/formatting')`\n    --- during `LspAttach` it will return `false`. This hack sets the capability to `true` to facilitate\n    --- autocmd's which check this capability\n    client.server_capabilities.documentFormattingProvider = true\n  end,\n}\n"
  },
  {
    "path": "lsp/yang_lsp.lua",
    "content": "---@brief\n---\n--- https://github.com/TypeFox/yang-lsp\n---\n--- A Language Server for the YANG data modeling language.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'yang-language-server' },\n  filetypes = { 'yang' },\n  root_markers = { '.git' },\n}\n"
  },
  {
    "path": "lsp/yls.lua",
    "content": "---@brief\n---\n--- https://pypi.org/project/yls-yara/\n---\n--- An YLS plugin adding YARA linting capabilities.\n---\n--- This plugin runs yara.compile on every save, parses the errors, and returns list of diagnostic messages.\n---\n--- Language Server: https://github.com/avast/yls\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'yls', '-vv' },\n  filetypes = { 'yar', 'yara' },\n  root_markers = { '.git' },\n}\n"
  },
  {
    "path": "lsp/ziggy.lua",
    "content": "---@brief\n---\n--- https://ziggy-lang.io/documentation/ziggy-lsp/\n---\n--- Language server for the Ziggy data serialization format\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'ziggy', 'lsp' },\n  filetypes = { 'ziggy' },\n  root_markers = { '.git' },\n}\n"
  },
  {
    "path": "lsp/ziggy_schema.lua",
    "content": "---@brief\n---\n--- https://ziggy-lang.io/documentation/ziggy-lsp/\n---\n--- Language server for schema files of the Ziggy data serialization format\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'ziggy', 'lsp', '--schema' },\n  filetypes = { 'ziggy_schema' },\n  root_markers = { '.git' },\n}\n"
  },
  {
    "path": "lsp/zk.lua",
    "content": "---@brief\n---\n--- https://github.com/zk-org/zk\n---\n--- A plain text note-taking assistant\n\n---List notes\n---@param client vim.lsp.Client\n---@param bufnr integer\n---@param opts table\n---@param action fun(path: string, title: string)\nlocal function zk_list(client, bufnr, opts, action)\n  opts = vim.tbl_extend('keep', { select = { 'path', 'title' } }, opts or {})\n  client:exec_cmd({\n    title = 'ZkList',\n    command = 'zk.list',\n    arguments = { vim.api.nvim_buf_get_name(bufnr), opts },\n  }, { bufnr = bufnr }, function(err, result)\n    if err ~= nil then\n      vim.api.nvim_echo({ { 'zk.list error\\n' }, { vim.inspect(err) } }, true, {})\n      return\n    end\n    if result == nil then\n      return\n    end\n\n    vim.ui.select(result, {\n      format_item = function(item)\n        return item.title\n      end,\n    }, function(item)\n      if item ~= nil then\n        action(vim.fs.joinpath(client.root_dir, item.path), item.title)\n      end\n    end)\n  end)\nend\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'zk', 'lsp' },\n  filetypes = { 'markdown' },\n  root_markers = { '.zk' },\n  workspace_required = true,\n  on_attach = function(client, bufnr)\n    vim.api.nvim_buf_create_user_command(bufnr, 'LspZkIndex', function()\n      client:exec_cmd({\n        title = 'ZkIndex',\n        command = 'zk.index',\n        arguments = { vim.api.nvim_buf_get_name(bufnr) },\n      }, { bufnr = bufnr }, function(err, result)\n        if err ~= nil then\n          vim.api.nvim_echo({ { 'zk.index error\\n' }, { vim.inspect(err) } }, true, {})\n          return\n        end\n        if result ~= nil then\n          vim.api.nvim_echo({ { vim.inspect(result) } }, false, {})\n        end\n      end)\n    end, { desc = 'ZkIndex' })\n\n    vim.api.nvim_buf_create_user_command(bufnr, 'LspZkList', function()\n      zk_list(client, bufnr, {}, function(path)\n        vim.cmd('edit ' .. path)\n      end)\n    end, { desc = 'ZkList' })\n\n    vim.api.nvim_buf_create_user_command(bufnr, 'LspZkTagList', function()\n      client:exec_cmd({\n        title = 'ZkTagList',\n        command = 'zk.tag.list',\n        arguments = { vim.api.nvim_buf_get_name(bufnr) },\n      }, { bufnr = bufnr }, function(err, result)\n        if err ~= nil then\n          vim.api.nvim_echo({ { 'zk.tag.list error\\n' }, { vim.inspect(err) } }, true, {})\n          return\n        end\n        if result == nil then\n          return\n        end\n\n        vim.ui.select(result, {\n          format_item = function(item)\n            return item.name\n          end,\n        }, function(item)\n          if item ~= nil then\n            zk_list(client, bufnr, { tags = { item.name } }, function(path)\n              vim.cmd('edit ' .. path)\n            end)\n          end\n        end)\n      end)\n    end, { desc = 'ZkTagList' })\n\n    vim.api.nvim_buf_create_user_command(bufnr, 'LspZkNew', function(args)\n      local title = #args.fargs >= 1 and args.fargs[1] or ''\n      local dir = #args.fargs >= 2 and args.fargs[2] or ''\n      client:exec_cmd({\n        title = 'ZkNew',\n        command = 'zk.new',\n        arguments = {\n          vim.api.nvim_buf_get_name(bufnr),\n          { title = title, dir = dir },\n        },\n      }, { bufnr = bufnr }, function(err, result)\n        if err ~= nil then\n          vim.api.nvim_echo({ { 'zk.new error\\n' }, { vim.inspect(err) } }, true, {})\n          return\n        end\n\n        vim.cmd('edit ' .. result.path)\n      end)\n    end, { desc = 'ZkNew [title] [dir]', nargs = '*' })\n  end,\n}\n"
  },
  {
    "path": "lsp/zls.lua",
    "content": "---@brief\n--- https://github.com/zigtools/zls\n---\n--- Zig LSP implementation + Zig Language Server\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'zls' },\n  filetypes = { 'zig', 'zir' },\n  root_markers = { 'zls.json', 'build.zig', '.git' },\n  workspace_required = false,\n}\n"
  },
  {
    "path": "lsp/zuban.lua",
    "content": "---@brief\n---\n--- https://zubanls.com/\n---\n--- A high-performance Python Language Server and type checker implemented in Rust, by the author of Jedi.\n\n---@type vim.lsp.Config\nreturn {\n  cmd = { 'zuban', 'server' },\n  filetypes = { 'python' },\n  root_markers = {\n    'pyproject.toml',\n    'setup.py',\n    'setup.cfg',\n    'requirements.txt',\n    'Pipfile',\n    '.git',\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/async.lua",
    "content": "local M = {}\n\nfunction M.run(func)\n  coroutine.resume(coroutine.create(function()\n    local status, err = pcall(func)\n    if not status then\n      vim.notify(('[lspconfig] unhandled error: %s'):format(tostring(err)), vim.log.levels.WARN)\n    end\n  end))\nend\n\n--- @param cmd string|string[]\n--- @return string[]?\nfunction M.run_command(cmd)\n  local co = assert(coroutine.running())\n\n  local stdout = {}\n  local stderr = {}\n  local exit_code = nil\n\n  local jobid = vim.fn.jobstart(cmd, {\n    on_stdout = function(_, data, _)\n      data = table.concat(data, '\\n')\n      if #data > 0 then\n        stdout[#stdout + 1] = data\n      end\n    end,\n    on_stderr = function(_, data, _)\n      stderr[#stderr + 1] = table.concat(data, '\\n')\n    end,\n    on_exit = function(_, code, _)\n      exit_code = code\n      coroutine.resume(co)\n    end,\n    stdout_buffered = true,\n    stderr_buffered = true,\n  })\n\n  if jobid <= 0 then\n    vim.notify(('[lspconfig] unable to run cmd: %s'):format(cmd), vim.log.levels.WARN)\n    return nil\n  end\n\n  coroutine.yield()\n\n  if exit_code ~= 0 then\n    vim.notify(\n      ('[lspconfig] cmd failed with code %d: %s\\n%s'):format(exit_code, cmd, table.concat(stderr, '')),\n      vim.log.levels.WARN\n    )\n    return nil\n  end\n\n  if next(stdout) == nil then\n    return nil\n  end\n  return stdout and stdout or nil\nend\n\nfunction M.reenter()\n  if vim.in_fast_event() then\n    local co = assert(coroutine.running())\n    vim.schedule(function()\n      coroutine.resume(co)\n    end)\n    coroutine.yield()\n  end\nend\n\nreturn M\n"
  },
  {
    "path": "lua/lspconfig/configs/ada_ls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'ada_language_server' },\n    filetypes = { 'ada' },\n    root_dir = util.root_pattern('Makefile', '.git', 'alire.toml', '*.gpr', '*.adc'),\n  },\n  docs = {\n    description = [[\nhttps://github.com/AdaCore/ada_language_server\n\nInstallation instructions can be found [here](https://github.com/AdaCore/ada_language_server#Install).\n\nWorkspace-specific [settings](https://github.com/AdaCore/ada_language_server/blob/master/doc/settings.md) such as `projectFile` can be provided in a `.als.json` file at the root of the workspace.\n\nAlternatively, configuration may be passed as a \"settings\" object to `ada_ls.setup{}`:\n\n```lua\nrequire('lspconfig').ada_ls.setup{\n    settings = {\n      ada = {\n        projectFile = \"project.gpr\";\n        scenarioVariables = { ... };\n      }\n    }\n}\n```\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/agda_ls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'als' },\n    filetypes = { 'agda' },\n    root_dir = util.root_pattern('.git', '*.agda-lib'),\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/agda/agda-language-server\n\nLanguage Server for Agda.\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/aiken.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'aiken', 'lsp' },\n    filetypes = { 'aiken' },\n    root_dir = function(fname)\n      return util.root_pattern('aiken.toml', '.git')(fname)\n    end,\n  },\n  docs = {\n    description = [[\nhttps://github.com/aiken-lang/aiken\n\nA language server for Aiken Programming Language.\n[Installation](https://aiken-lang.org/installation-instructions)\n\nIt can be i\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/air.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'air', 'language-server' },\n    filetypes = { 'r' },\n    root_dir = vim.fs.root(0, { 'air.toml', '.air.toml', '.git' }),\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/posit-dev/air\n\nAir is an R formatter and language server, written in Rust.\n\nRefer to the [documentation](https://posit-dev.github.io/air/editors.html) for more details.\n\n  ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/alloy_ls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'alloy', 'lsp' },\n    filetypes = { 'alloy' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/AlloyTools/org.alloytools.alloy\n\nAlloy is a formal specification language for describing structures and a tool for exploring them.\n\nYou may also need to configure the filetype for Alloy (*.als) files:\n\n```\nautocmd BufNewFile,BufRead *.als set filetype=alloy\n```\n\nor\n\n```lua\nvim.filetype.add({\n  pattern = {\n    ['.*/*.als'] = 'alloy',\n  },\n})\n```\n\nAlternatively, you may use a syntax plugin like https://github.com/runoshun/vim-alloy.\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/anakin_language_server.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'anakinls' },\n    filetypes = { 'python' },\n    root_dir = function(fname)\n      local root_files = {\n        'pyproject.toml',\n        'setup.py',\n        'setup.cfg',\n        'requirements.txt',\n        'Pipfile',\n      }\n      return util.root_pattern(unpack(root_files))(fname)\n        or vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n    settings = {\n      anakinls = {\n        pyflakes_errors = {\n          -- Full list: https://github.com/PyCQA/pyflakes/blob/master/pyflakes/messages.py\n\n          'ImportStarNotPermitted',\n\n          'UndefinedExport',\n          'UndefinedLocal',\n          'UndefinedName',\n\n          'DuplicateArgument',\n          'MultiValueRepeatedKeyLiteral',\n          'MultiValueRepeatedKeyVariable',\n\n          'FutureFeatureNotDefined',\n          'LateFutureImport',\n\n          'ReturnOutsideFunction',\n          'YieldOutsideFunction',\n          'ContinueOutsideLoop',\n          'BreakOutsideLoop',\n\n          'TwoStarredExpressions',\n          'TooManyExpressionsInStarredAssignment',\n\n          'ForwardAnnotationSyntaxError',\n          'RaiseNotImplemented',\n\n          'StringDotFormatExtraPositionalArguments',\n          'StringDotFormatExtraNamedArguments',\n          'StringDotFormatMissingArgument',\n          'StringDotFormatMixingAutomatic',\n          'StringDotFormatInvalidFormat',\n\n          'PercentFormatInvalidFormat',\n          'PercentFormatMixedPositionalAndNamed',\n          'PercentFormatUnsupportedFormat',\n          'PercentFormatPositionalCountMismatch',\n          'PercentFormatExtraNamedArguments',\n          'PercentFormatMissingArgument',\n          'PercentFormatExpectedMapping',\n          'PercentFormatExpectedSequence',\n          'PercentFormatStarRequiresSequence',\n        },\n      },\n    },\n  },\n  docs = {\n    description = [[\nhttps://pypi.org/project/anakin-language-server/\n\n`anakin-language-server` is yet another Jedi Python language server.\n\nAvailable options:\n\n* Initialization: https://github.com/muffinmad/anakin-language-server#initialization-option\n* Configuration: https://github.com/muffinmad/anakin-language-server#configuration-options\n    ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/angularls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\n-- Angular requires a node_modules directory to probe for @angular/language-service and typescript\n-- in order to use your projects configured versions.\n-- This defaults to the vim cwd, but will get overwritten by the resolved root of the file.\nlocal function get_probe_dir(root_dir)\n  local project_root = vim.fs.dirname(vim.fs.find('node_modules', { path = root_dir, upward = true })[1])\n\n  return project_root and (project_root .. '/node_modules') or ''\nend\n\nlocal function get_angular_core_version(root_dir)\n  local project_root = vim.fs.dirname(vim.fs.find('node_modules', { path = root_dir, upward = true })[1])\n\n  if not project_root then\n    return ''\n  end\n\n  local package_json = project_root .. '/package.json'\n  if not vim.uv.fs_stat(package_json) then\n    return ''\n  end\n\n  local contents = io.open(package_json):read '*a'\n  local json = vim.json.decode(contents)\n  if not json.dependencies then\n    return ''\n  end\n\n  local angular_core_version = json.dependencies['@angular/core']\n\n  angular_core_version = angular_core_version and angular_core_version:match('%d+%.%d+%.%d+')\n\n  return angular_core_version\nend\n\nlocal default_probe_dir = get_probe_dir(vim.fn.getcwd())\nlocal default_angular_core_version = get_angular_core_version(vim.fn.getcwd())\n\nreturn {\n  default_config = {\n    cmd = {\n      'ngserver',\n      '--stdio',\n      '--tsProbeLocations',\n      default_probe_dir,\n      '--ngProbeLocations',\n      default_probe_dir,\n      '--angularCoreVersion',\n      default_angular_core_version,\n    },\n    filetypes = { 'typescript', 'html', 'typescriptreact', 'htmlangular' },\n    -- Check for angular.json since that is the root of the project.\n    -- Don't check for tsconfig.json or package.json since there are multiple of these\n    -- in an angular monorepo setup.\n    root_dir = util.root_pattern 'angular.json',\n  },\n  on_new_config = function(new_config, new_root_dir)\n    local new_probe_dir = get_probe_dir(new_root_dir)\n    local angular_core_version = get_angular_core_version(new_root_dir)\n\n    -- We need to check our probe directories because they may have changed.\n    new_config.cmd = {\n      vim.fn.exepath('ngserver'),\n      '--stdio',\n      '--tsProbeLocations',\n      new_probe_dir,\n      '--ngProbeLocations',\n      new_probe_dir,\n      '--angularCoreVersion',\n      angular_core_version,\n    }\n  end,\n  docs = {\n    description = [[\nhttps://github.com/angular/vscode-ng-language-service\n\n`angular-language-server` can be installed via npm `npm install -g @angular/language-server`.\n\nNote, that if you override the default `cmd`, you must also update `on_new_config` to set `new_config.cmd` during startup.\n\n```lua\nlocal project_library_path = \"/path/to/project/lib\"\nlocal cmd = {\"ngserver\", \"--stdio\", \"--tsProbeLocations\", project_library_path , \"--ngProbeLocations\", project_library_path}\n\nrequire'lspconfig'.angularls.setup{\n  cmd = cmd,\n  on_new_config = function(new_config,new_root_dir)\n    new_config.cmd = cmd\n  end,\n}\n```\n    ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/ansiblels.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'ansible-language-server', '--stdio' },\n    settings = {\n      ansible = {\n        python = {\n          interpreterPath = 'python',\n        },\n        ansible = {\n          path = 'ansible',\n        },\n        executionEnvironment = {\n          enabled = false,\n        },\n        validation = {\n          enabled = true,\n          lint = {\n            enabled = true,\n            path = 'ansible-lint',\n          },\n        },\n      },\n    },\n    filetypes = { 'yaml.ansible' },\n    root_dir = util.root_pattern('ansible.cfg', '.ansible-lint'),\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/ansible/vscode-ansible\n\nLanguage server for the ansible configuration management tool.\n\n`ansible-language-server` can be installed via `npm`:\n\n```sh\nnpm install -g @ansible/ansible-language-server\n```\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/antlersls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'antlersls', '--stdio' },\n    filetypes = { 'html', 'antlers' },\n    root_dir = util.root_pattern 'composer.json',\n  },\n  docs = {\n    description = [[\nhttps://www.npmjs.com/package/antlers-language-server\n\n`antlersls` can be installed via `npm`:\n```sh\nnpm install -g antlers-language-server\n```\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/apex_ls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    filetypes = { 'apexcode' },\n    root_dir = util.root_pattern 'sfdx-project.json',\n    on_new_config = function(config)\n      if not config.cmd and config.apex_jar_path then\n        config.cmd = {\n          vim.env.JAVA_HOME and (vim.env.JAVA_HOME .. '/bin/java') or 'java',\n          '-cp',\n          config.apex_jar_path,\n          '-Ddebug.internal.errors=true',\n          '-Ddebug.semantic.errors=' .. tostring(config.apex_enable_semantic_errors or false),\n          '-Ddebug.completion.statistics=' .. tostring(config.apex_enable_completion_statistics or false),\n          '-Dlwc.typegeneration.disabled=true',\n        }\n        if config.apex_jvm_max_heap then\n          table.insert(config.cmd, '-Xmx' .. config.apex_jvm_max_heap)\n        end\n        table.insert(config.cmd, 'apex.jorje.lsp.ApexLanguageServerLauncher')\n      end\n    end,\n  },\n  docs = {\n    description = [[\nhttps://github.com/forcedotcom/salesforcedx-vscode\n\nLanguage server for Apex.\n\nFor manual installation, download the JAR file from the [VSCode\nextension](https://github.com/forcedotcom/salesforcedx-vscode/tree/develop/packages/salesforcedx-vscode-apex).\n\n```lua\nrequire'lspconfig'.apex_ls.setup {\n  apex_jar_path = '/path/to/apex-jorje-lsp.jar',\n  apex_enable_semantic_errors = false, -- Whether to allow Apex Language Server to surface semantic errors\n  apex_enable_completion_statistics = false, -- Whether to allow Apex Language Server to collect telemetry on code completion usage\n}\n```\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/arduino_language_server.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    filetypes = { 'arduino' },\n    root_dir = util.root_pattern '*.ino',\n    cmd = {\n      'arduino-language-server',\n    },\n    capabilities = {\n      textDocument = {\n        semanticTokens = vim.NIL,\n      },\n      workspace = {\n        semanticTokens = vim.NIL,\n      },\n    },\n  },\n  docs = {\n    description = [[\nhttps://github.com/arduino/arduino-language-server\n\nLanguage server for Arduino\n\nThe `arduino-language-server` can be installed by running:\n\n```\ngo install github.com/arduino/arduino-language-server@latest\n```\n\nThe `arduino-cli` tool must also be installed. Follow [these\ninstallation instructions](https://arduino.github.io/arduino-cli/latest/installation/) for\nyour platform.\n\nAfter installing `arduino-cli`, follow [these\ninstructions](https://arduino.github.io/arduino-cli/latest/getting-started/#create-a-configuration-file)\nfor generating a configuration file if you haven't done so already, and make\nsure you [install any relevant platforms\nlibraries](https://arduino.github.io/arduino-cli/latest/getting-started/#install-the-core-for-your-board).\n\nThe language server also requires `clangd` to be installed. Follow [these\ninstallation instructions](https://clangd.llvm.org/installation) for your\nplatform.\n\nIf you don't have a sketch yet create one.\n\n```sh\n$ arduino-cli sketch new test\n$ cd test\n```\n\nYou will need a `sketch.yaml` file in order for the language server to understand your project. It will also save you passing options to `arduino-cli` each time you compile or upload a file. You can generate the file by using the following commands.\n\n\nFirst gather some information about your board. Make sure your board is connected and run the following:\n\n```sh\n$ arduino-cli board list\nPort         Protocol Type              Board Name  FQBN            Core\n/dev/ttyACM0 serial   Serial Port (USB) Arduino Uno arduino:avr:uno arduino:avr\n```\n\nThen generate the file:\n\n```sh\narduino-cli board attach -p /dev/ttyACM0 -b arduino:avr:uno test.ino\n```\n\nThe resulting file should look like this:\n\n```yaml\ndefault_fqbn: arduino:avr:uno\ndefault_port: /dev/ttyACM0\n```\n\nYour folder structure should look like this:\n\n```\n.\n├── test.ino\n└── sketch.yaml\n```\n\nFor further instructions about configuration options, run `arduino-language-server --help`.\n\nNote that an upstream bug makes keywords in some cases become undefined by the language server.\nRef: https://github.com/arduino/arduino-ide/issues/159\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/asm_lsp.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'asm-lsp' },\n    filetypes = { 'asm', 'vmasm' },\n    single_file_support = true,\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find({ '.asm-lsp.toml', '.git' }, { path = fname, upward = true })[1])\n    end,\n  },\n  docs = {\n    description = [[\nhttps://github.com/bergercookie/asm-lsp\n\nLanguage Server for NASM/GAS/GO Assembly\n\n`asm-lsp` can be installed via cargo:\ncargo install asm-lsp\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/ast_grep.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'ast-grep', 'lsp' },\n    filetypes = { -- https://ast-grep.github.io/reference/languages.html\n      'c',\n      'cpp',\n      'rust',\n      'go',\n      'java',\n      'python',\n      'javascript',\n      'typescript',\n      'html',\n      'css',\n      'kotlin',\n      'dart',\n      'lua',\n    },\n    root_dir = util.root_pattern('sgconfig.yaml', 'sgconfig.yml'),\n  },\n  docs = {\n    description = [[\nhttps://ast-grep.github.io/\n\nast-grep(sg) is a fast and polyglot tool for code structural search, lint, rewriting at large scale.\nast-grep LSP only works in projects that have `sgconfig.y[a]ml` in their root directories.\n```sh\nnpm install [-g] @ast-grep/cli\n```\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/astro.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'astro-ls', '--stdio' },\n    filetypes = { 'astro' },\n    root_dir = util.root_pattern('package.json', 'tsconfig.json', 'jsconfig.json', '.git'),\n    init_options = {\n      typescript = {},\n    },\n    on_new_config = function(new_config, new_root_dir)\n      if vim.tbl_get(new_config.init_options, 'typescript') and not new_config.init_options.typescript.tsdk then\n        new_config.init_options.typescript.tsdk = util.get_typescript_server_path(new_root_dir)\n      end\n    end,\n  },\n  docs = {\n    description = [[\nhttps://github.com/withastro/language-tools/tree/main/packages/language-server\n\n`astro-ls` can be installed via `npm`:\n```sh\nnpm install -g @astrojs/language-server\n```\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/atlas.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'atlas', 'tool', 'lsp', '--stdio' },\n    filetypes = {\n      'atlas-*',\n    },\n    root_dir = function(fname)\n      return util.root_pattern('atlas.hcl')(fname)\n    end,\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/ariga/atlas\n\nLanguage server for Atlas config and scheme files.\n\nYou may also need to configure the filetype for *.hcl files:\n\n`autocmd BufNewFile,BufRead atlas.hcl set filetype=atlas-config`\n`autocmd BufNewFile,BufRead *.my.hcl set filetype=atlas-schema-mysql`\n`autocmd BufNewFile,BufRead *.pg.hcl set filetype=atlas-schema-postgresql`\n`autocmd BufNewFile,BufRead *.lt.hcl set filetype=atlas-schema-sqlite`\n`autocmd BufNewFile,BufRead *.ch.hcl set filetype=atlas-schema-clickhouse`\n`autocmd BufNewFile,BufRead *.ms.hcl set filetype=atlas-schema-mssql`\n`autocmd BufNewFile,BufRead *.rs.hcl set filetype=atlas-schema-redshift`\n`autocmd BufNewFile,BufRead *.test.hcl set filetype=atlas-test`\n`autocmd BufNewFile,BufRead *.plan.hcl set filetype=atlas-plan`\n\nor\n\n```lua\nvim.filetype.add({\n  filename = {\n    ['atlas.hcl'] = 'atlas-config',\n  },\n  pattern = {\n    ['.*/*.my.hcl'] = 'atlas-schema-mysql',\n    ['.*/*.pg.hcl'] = 'atlas-schema-postgresql',\n    ['.*/*.lt.hcl'] = 'atlas-schema-sqlite',\n    ['.*/*.ch.hcl'] = 'atlas-schema-clickhouse',\n    ['.*/*.ms.hcl'] = 'atlas-schema-mssql',\n    ['.*/*.rs.hcl'] = 'atlas-schema-redshift',\n    ['.*/*.test.hcl'] = 'atlas-test',\n    ['.*/*.plan.hcl'] = 'atlas-plan',\n  },\n})\n```\n\nOptionally, tell treesitter to treat Atlas filetypes as HCL for better syntax highlighting:\n\n```lua\nvim.treesitter.language.register('hcl', 'atlas-config')\nvim.treesitter.language.register('hcl', 'atlas-schema-mysql')\nvim.treesitter.language.register('hcl', 'atlas-schema-postgresql')\nvim.treesitter.language.register('hcl', 'atlas-schema-sqlite')\nvim.treesitter.language.register('hcl', 'atlas-schema-clickhouse')\nvim.treesitter.language.register('hcl', 'atlas-schema-mssql')\nvim.treesitter.language.register('hcl', 'atlas-schema-redshift')\nvim.treesitter.language.register('hcl', 'atlas-test')\nvim.treesitter.language.register('hcl', 'atlas-plan')\n```\n\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/autohotkey_lsp.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- NOTE: AutoHotkey is used only on windows\nlocal function get_autohotkey_path()\n  local path = vim.fn.exepath('autohotkey.exe')\n  return #path > 0 and path or ''\nend\n\nreturn {\n  default_config = {\n    cmd = { 'autohotkey_lsp', '--stdio' },\n    filetypes = { 'autohotkey' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('package.json', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n    autostart = true,\n    flags = { debounce_text_changes = 500 },\n    --capabilities = capabilities,\n    --on_attach = custom_attach,\n    init_options = {\n      locale = 'en-us',\n      InterpreterPath = get_autohotkey_path(),\n      AutoLibInclude = 'All',\n      CommentTags = '^;;\\\\s*(?<tag>.+)',\n      CompleteFunctionParens = false,\n      SymbolFoldinFromOpenBrace = false,\n      Diagnostics = {\n        ClassStaticMemberCheck = true,\n        ParamsCheck = true,\n      },\n      ActionWhenV1IsDetected = 'Continue',\n      FormatOptions = {\n        array_style = 'expand',\n        break_chained_methods = false,\n        ignore_comment = false,\n        indent_string = '\\t',\n        max_preserve_newlines = 2,\n        brace_style = 'One True Brace',\n        object_style = 'none',\n        preserve_newlines = true,\n        space_after_double_colon = true,\n        space_before_conditional = true,\n        space_in_empty_paren = false,\n        space_in_other = true,\n        space_in_paren = false,\n        wrap_line_length = 0,\n      },\n    },\n  },\n  docs = {\n    description = [[\nhttps://github.com/thqby/vscode-autohotkey2-lsp\n\nAutoHotkey v2.0 LSP implementation\n    ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/autotools_ls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nlocal root_files = { 'configure.ac', 'Makefile', 'Makefile.am', '*.mk' }\n\nreturn {\n  default_config = {\n    cmd = { 'autotools-language-server' },\n    filetypes = { 'config', 'automake', 'make' },\n    root_dir = function(fname)\n      return util.root_pattern(unpack(root_files))(fname)\n    end,\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/Freed-Wu/autotools-language-server\n\n`autotools-language-server` can be installed via `pip`:\n```sh\npip install autotools-language-server\n```\n\nLanguage server for autoconf, automake and make using tree sitter in python.\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/awk_ls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nif vim.version().major == 0 and vim.version().minor < 7 then\n  vim.notify('The AWK language server requires nvim >= 0.7', vim.log.levels.ERROR)\n  return\nend\n\nreturn {\n  default_config = {\n    cmd = { 'awk-language-server' },\n    filetypes = { 'awk' },\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/Beaglefoot/awk-language-server/\n\n`awk-language-server` can be installed via `npm`:\n```sh\nnpm install -g awk-language-server\n```\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/azure_pipelines_ls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'azure-pipelines-language-server', '--stdio' },\n    filetypes = { 'yaml' },\n    root_dir = util.root_pattern 'azure-pipelines.yml',\n    single_file_support = true,\n    settings = {},\n  },\n  docs = {\n    description = [[\nhttps://github.com/microsoft/azure-pipelines-language-server\n\nAn Azure Pipelines language server\n\n`azure-pipelines-ls` can be installed via `npm`:\n\n```sh\nnpm install -g azure-pipelines-language-server\n```\n\nBy default `azure-pipelines-ls` will only work in files named `azure-pipelines.yml`, this can be changed by providing additional settings like so:\n```lua\nrequire(\"lspconfig\").azure_pipelines_ls.setup {\n  ... -- other configuration for setup {}\n  settings = {\n      yaml = {\n          schemas = {\n              [\"https://raw.githubusercontent.com/microsoft/azure-pipelines-vscode/master/service-schema.json\"] = {\n                  \"/azure-pipeline*.y*l\",\n                  \"/*.azure*\",\n                  \"Azure-Pipelines/**/*.y*l\",\n                  \"Pipelines/*.y*l\",\n              },\n          },\n      },\n  },\n}\n```\nThe Azure Pipelines LSP is a fork of `yaml-language-server` and as such the same settings can be passed to it as `yaml-language-server`.\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/bacon_ls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'bacon-ls' },\n    filetypes = { 'rust' },\n    root_dir = util.root_pattern('.bacon-locations', 'Cargo.toml'),\n    single_file_support = true,\n    init_options = {},\n  },\n  docs = {\n    description = [[\nhttps://github.com/crisidev/bacon-ls\n\nA Language Server Protocol wrapper for [bacon](https://dystroy.org/bacon/).\nIt offers textDocument/diagnostic and workspace/diagnostic capabilities for Rust\nworkspaces using the Bacon export locations file.\n\nIt requires `bacon` and `bacon-ls` to be installed on the system using\n[mason.nvim](https://github.com/williamboman/mason.nvim) or manually\n\n```sh\n$ cargo install --locked bacon bacon-ls\n```\n\nSettings can be changed using the `init_options` dictionary:util\n\n```lua\ninit_options = {\n    -- Bacon export filename (default: .bacon-locations).\n    locationsFile = \".bacon-locations\",\n    -- Try to update diagnostics every time the file is saved (default: true).\n    updateOnSave = true,\n    --  How many milliseconds to wait before updating diagnostics after a save (default: 1000).\n    updateOnSaveWaitMillis = 1000,\n    -- Try to update diagnostics every time the file changes (default: true).\n    updateOnChange = true,\n    -- Try to validate that bacon preferences are setup correctly to work with bacon-ls (default: true).\n    validateBaconPreferences = true,\n    -- f no bacon preferences file is found, create a new preferences file with the bacon-ls job definition (default: true).\n    createBaconPreferencesFile = true,\n    -- Run bacon in background for the bacon-ls job (default: true)\n    runBaconInBackground = true,\n    -- Command line arguments to pass to bacon running in background (default \"--headless -j bacon-ls\")\n    runBaconInBackgroundCommandArguments = \"--headless -j bacon-ls\",\n    -- How many milliseconds to wait between background diagnostics check to synchronize all open files (default: 2000).\n    synchronizeAllOpenFilesWaitMillis = 2000,\n}\n```\n    ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/ballerina.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'bal', 'start-language-server' },\n    filetypes = { 'ballerina' },\n    root_dir = util.root_pattern 'Ballerina.toml',\n  },\n  docs = {\n    description = [[\nBallerina language server\n\nThe Ballerina language's CLI tool comes with its own language server implementation.\nThe `bal` command line tool must be installed and available in your system's PATH.\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/basedpyright.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nlocal root_files = {\n  'pyproject.toml',\n  'setup.py',\n  'setup.cfg',\n  'requirements.txt',\n  'Pipfile',\n  'pyrightconfig.json',\n  '.git',\n}\n\nlocal function organize_imports()\n  local params = {\n    command = 'basedpyright.organizeimports',\n    arguments = { vim.uri_from_bufnr(0) },\n  }\n\n  local clients = vim.lsp.get_clients {\n    bufnr = vim.api.nvim_get_current_buf(),\n    name = 'basedpyright',\n  }\n  for _, client in ipairs(clients) do\n    client.request('workspace/executeCommand', params, nil, 0)\n  end\nend\n\nlocal function set_python_path(path)\n  local clients = vim.lsp.get_clients {\n    bufnr = vim.api.nvim_get_current_buf(),\n    name = 'basedpyright',\n  }\n  for _, client in ipairs(clients) do\n    if client.settings then\n      client.settings.python = vim.tbl_deep_extend('force', client.settings.python or {}, { pythonPath = path })\n    else\n      client.config.settings = vim.tbl_deep_extend('force', client.config.settings, { python = { pythonPath = path } })\n    end\n    client.notify('workspace/didChangeConfiguration', { settings = nil })\n  end\nend\n\nreturn {\n  default_config = {\n    cmd = { 'basedpyright-langserver', '--stdio' },\n    filetypes = { 'python' },\n    root_dir = function(fname)\n      return util.root_pattern(unpack(root_files))(fname)\n    end,\n    single_file_support = true,\n    settings = {\n      basedpyright = {\n        analysis = {\n          autoSearchPaths = true,\n          useLibraryCodeForTypes = true,\n          diagnosticMode = 'openFilesOnly',\n        },\n      },\n    },\n  },\n  commands = {\n    PyrightOrganizeImports = {\n      organize_imports,\n      description = 'Organize Imports',\n    },\n    PyrightSetPythonPath = {\n      set_python_path,\n      description = 'Reconfigure basedpyright with the provided python path',\n      nargs = 1,\n      complete = 'file',\n    },\n  },\n  docs = {\n    description = [[\nhttps://detachhead.github.io/basedpyright\n\n`basedpyright`, a static type checker and language server for python\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/bashls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'bash-language-server', 'start' },\n    settings = {\n      bashIde = {\n        -- Glob pattern for finding and parsing shell script files in the workspace.\n        -- Used by the background analysis features across files.\n\n        -- Prevent recursive scanning which will cause issues when opening a file\n        -- directly in the home directory (e.g. ~/foo.sh).\n        --\n        -- Default upstream pattern is \"**/*@(.sh|.inc|.bash|.command)\".\n        globPattern = vim.env.GLOB_PATTERN or '*@(.sh|.inc|.bash|.command)',\n      },\n    },\n    filetypes = { 'bash', 'sh' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/bash-lsp/bash-language-server\n\n`bash-language-server` can be installed via `npm`:\n```sh\nnpm i -g bash-language-server\n```\n\nLanguage server for bash, written using tree sitter in typescript.\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/basics_ls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'basics-language-server' },\n    single_file_support = true,\n    settings = {\n      buffer = {\n        enable = true,\n        minCompletionLength = 4,\n      },\n      path = {\n        enable = true,\n      },\n      snippet = {\n        enable = false,\n        sources = {},\n      },\n    },\n  },\n  docs = {\n    description = [[\nhttps://github.com/antonk52/basics-language-server/\n\nBuffer, path, and snippet completion\n\n```sh\nnpm install -g basics-language-server\n```\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/bazelrc_lsp.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig/util'\n\nreturn {\n  default_config = {\n    cmd = { 'bazelrc-lsp', 'lsp' },\n    filetypes = { 'bazelrc' },\n    root_dir = util.root_pattern('WORKSPACE', 'WORKSPACE.bazel', 'MODULE.bazel'),\n  },\n  docs = {\n    description = [[\nhttps://github.com/salesforce-misc/bazelrc-lsp\n\n`bazelrc-lsp` is a LSP for `.bazelrc` configuration files.\n\nThe `.bazelrc` file type is not detected automatically, you can register it manually (see below) or override the filetypes:\n\n```lua\nvim.filetype.add {\n  pattern = {\n    ['.*.bazelrc'] = 'bazelrc',\n  },\n}\n```\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/beancount.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'beancount-language-server', '--stdio' },\n    filetypes = { 'beancount', 'bean' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n    init_options = {},\n  },\n  docs = {\n    description = [[\nhttps://github.com/polarmutex/beancount-language-server#installation\n\nSee https://github.com/polarmutex/beancount-language-server#configuration for configuration options\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/bicep.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    filetypes = { 'bicep', 'bicep-params' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    init_options = {},\n  },\n  docs = {\n    description = [=[\nhttps://github.com/azure/bicep\nBicep language server\n\nBicep language server can be installed by downloading and extracting a release of bicep-langserver.zip from [Bicep GitHub releases](https://github.com/Azure/bicep/releases).\n\nBicep language server requires the [dotnet-sdk](https://dotnet.microsoft.com/download) to be installed.\n\nNeovim does not have built-in support for the bicep filetype which is required for lspconfig to automatically launch the language server.\n\nFiletype detection can be added via an autocmd:\n```lua\nvim.cmd [[ autocmd BufNewFile,BufRead *.bicep set filetype=bicep ]]\n```\n\n**By default, bicep language server does not have a `cmd` set.** This is because nvim-lspconfig does not make assumptions about your path. You must add the following to your init.vim or init.lua to set `cmd` to the absolute path ($HOME and ~ are not expanded) of the unzipped run script or binary.\n\n```lua\nlocal bicep_lsp_bin = \"/path/to/bicep-langserver/Bicep.LangServer.dll\"\nrequire'lspconfig'.bicep.setup{\n    cmd = { \"dotnet\", bicep_lsp_bin };\n    ...\n}\n```\n\nTo download the latest release and place in /usr/local/bin/bicep-langserver:\n```bash\n(cd $(mktemp -d) \\\n    && curl -fLO https://github.com/Azure/bicep/releases/latest/download/bicep-langserver.zip \\\n    && rm -rf /usr/local/bin/bicep-langserver \\\n    && unzip -d /usr/local/bin/bicep-langserver bicep-langserver.zip)\n```\n]=],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/biome.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'biome', 'lsp-proxy' },\n    filetypes = {\n      'astro',\n      'css',\n      'graphql',\n      'javascript',\n      'javascriptreact',\n      'json',\n      'jsonc',\n      'svelte',\n      'typescript',\n      'typescriptreact',\n      'vue',\n    },\n    root_dir = function(fname)\n      local root_files = { 'biome.json', 'biome.jsonc' }\n      root_files = util.insert_package_json(root_files, 'biome', fname)\n      return vim.fs.dirname(vim.fs.find(root_files, { path = fname, upward = true })[1])\n    end,\n    single_file_support = false,\n  },\n  docs = {\n    description = [[\nhttps://biomejs.dev\n\nToolchain of the web. [Successor of Rome](https://biomejs.dev/blog/annoucing-biome).\n\n```sh\nnpm install [-g] @biomejs/biome\n```\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/bitbake_language_server.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'bitbake-language-server' },\n    filetypes = { 'bitbake' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n  },\n  docs = {\n    description = [[\n🛠️ bitbake language server\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/bitbake_ls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'language-server-bitbake', '--stdio' },\n    filetypes = { 'bitbake' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = false,\n  },\n  docs = {\n    description = [[\nhttps://github.com/yoctoproject/vscode-bitbake/tree/staging/server\nhttps://www.npmjs.com/package/language-server-bitbake\n\nOfficial Bitbake Language Server for the Yocto Project.\n\nCan be installed from npm or github.\n\n```\nnpm install -g language-server-bitbake\n```\n    ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/blueprint_ls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'blueprint-compiler', 'lsp' },\n    cmd_env = {\n      -- Prevent recursive scanning which will cause issues when opening a file\n      -- directly in the home directory (e.g. ~/foo.sh).\n      --\n      -- Default upstream pattern is \"**/*@(.sh|.inc|.bash|.command)\".\n      GLOB_PATTERN = vim.env.GLOB_PATTERN or '*@(.blp)',\n    },\n    filetypes = { 'blueprint' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://gitlab.gnome.org/jwestman/blueprint-compiler\n\n`blueprint-compiler` can be installed via your system package manager.\n\nLanguage server for the blueprint markup language, written in python and part\nof the blueprint-compiler.\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/bqls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'bqls' },\n    filetypes = { 'sql' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n    settings = {},\n  },\n  docs = {\n    description = [[\nhttps://github.com/kitagry/bqls\n\nThe `bqls` BigQuery language server can be installed by running:\n\n```sh\n$ go install github.com/kitagry/bqls@latest\n```\n    ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/bqnlsp.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- set os dependent library path\nlocal function library_path(path, cmd_env)\n  path = path or '/usr/local/lib'\n  cmd_env = cmd_env or {}\n  if vim.fn.has 'macunix' and not cmd_env.DYLD_LIBRARY_PATH then\n    cmd_env.DYLD_LIBRARY_PATH = path\n  elseif vim.fn.has 'linux' and not cmd_env.LD_LIBRARY_PATH then\n    cmd_env.LD_LIBRARY_PATH = path\n  end\n  return cmd_env\nend\n\nreturn {\n  default_config = {\n    cmd = { 'bqnlsp' },\n    filetypes = { 'bqn' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n    libcbqnPath = nil,\n    on_new_config = function(new_config, _)\n      if new_config.libcbqnPath then\n        new_config.cmd_env = library_path(new_config.libcbqnPath, new_config.cmd_env)\n      end\n    end,\n  },\n  docs = {\n    description = [[\nhttps://git.sr.ht/~detegr/bqnlsp\n\n\n`bqnlsp`, a language server for BQN.\n\nThe binary depends on the shared library of [CBQN](https://github.com/dzaima/CBQN) `libcbqn.so`.\nIf CBQN is installed system-wide (using `sudo make install` in its source directory) and `bqnlsp` errors that it can't find the shared library, update the linker cache by executing `sudo ldconfig`.\nIf CBQN has been installed in a non-standard directory or can't be installed globally pass `libcbqnPath = '/path/to/CBQN'` to the setup function.\nThis will set the environment variables `LD_LIBRARY_PATH` (Linux) or `DYLD_LIBRARY_PATH` (macOS) to the provided path.\n\n  ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/bright_script.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig/util'\n\nreturn {\n  default_config = {\n    cmd = { 'bsc', '--lsp', '--stdio' },\n    filetypes = { 'brs' },\n    single_file_support = true,\n    root_dir = util.root_pattern('makefile', 'Makefile', '.git'),\n  },\n  docs = {\n    description = [[\nhttps://github.com/RokuCommunity/brighterscript\n\n`brightscript` can be installed via `npm`:\n```sh\nnpm install -g brighterscript\n```\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/bsl_ls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    filetypes = { 'bsl', 'os' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n  },\n  docs = {\n    description = [[\n    https://github.com/1c-syntax/bsl-language-server\n\n    Language Server Protocol implementation for 1C (BSL) - 1C:Enterprise 8 and OneScript languages.\n\n    ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/buck2.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'buck2', 'lsp' },\n    filetypes = { 'bzl' },\n    root_dir = function(fname)\n      return util.root_pattern '.buckconfig'(fname)\n    end,\n  },\n  docs = {\n    description = [=[\nhttps://github.com/facebook/buck2\n\nBuild system, successor to Buck\n\nTo better detect Buck2 project files, the following can be added:\n\n```\nvim.cmd [[ autocmd BufRead,BufNewFile *.bxl,BUCK,TARGETS set filetype=bzl ]]\n```\n]=],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/buddy_ls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'buddy-lsp-server' },\n    filetypes = { 'mlir' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/buddy-compiler/buddy-mlir#buddy-lsp-server\nThe Language Server for the buddy-mlir, a drop-in replacement for mlir-lsp-server,\nsupporting new dialects defined in buddy-mlir.\n`buddy-lsp-server` can be installed at the buddy-mlir repository (buddy-compiler/buddy-mlir)\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/buf_ls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'buf', 'beta', 'lsp', '--timeout=0', '--log-format=text' },\n    filetypes = { 'proto' },\n    root_dir = require('lspconfig.util').root_pattern('buf.yaml', '.git'),\n  },\n  docs = {\n    description = [[\nhttps://github.com/bufbuild/buf\n\nbuf beta lsp included in the cli itself\n\nbuf beta lsp is a Protobuf language server compatible with Buf modules and workspaces\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/bufls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'bufls', 'serve' },\n    filetypes = { 'proto' },\n    root_dir = function(fname)\n      return util.root_pattern('buf.work.yaml', '.git')(fname)\n    end,\n  },\n  docs = {\n    description = [[\nhttps://github.com/bufbuild/buf-language-server\n\n`buf-language-server` can be installed via `go install`:\n```sh\ngo install github.com/bufbuild/buf-language-server/cmd/bufls@latest\n```\n\nbufls is a Protobuf language server compatible with Buf modules and workspaces\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/bzl.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'bzl', 'lsp', 'serve' },\n    filetypes = { 'bzl' },\n    -- https://docs.bazel.build/versions/5.4.1/build-ref.html#workspace\n    root_dir = util.root_pattern('WORKSPACE', 'WORKSPACE.bazel'),\n  },\n  docs = {\n    description = [[\nhttps://bzl.io/\n\nhttps://docs.stack.build/docs/cli/installation\n\nhttps://docs.stack.build/docs/vscode/starlark-language-server\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/c3_lsp.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'c3lsp' },\n    root_dir = function(fname)\n      return util.root_pattern { 'project.json', 'manifest.json', '.git' }(fname)\n    end,\n    filetypes = { 'c3', 'c3i' },\n  },\n  docs = {\n    description = [[\nhttps://github.com/pherrymason/c3-lsp\n\nLanguage Server for c3.\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/cadence.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'flow', 'cadence', 'language-server' },\n    filetypes = { 'cdc' },\n    init_options = {\n      numberOfAccounts = '1',\n    },\n    root_dir = function(fname, _)\n      return util.root_pattern 'flow.json'(fname) or vim.env.HOME\n    end,\n    on_new_config = function(new_config, new_root_dir)\n      new_config.init_options.configPath = new_root_dir .. '/flow.json'\n    end,\n  },\n  docs = {\n    description = [[\n[Cadence Language Server](https://github.com/onflow/cadence-tools/tree/master/languageserver)\nusing the [flow-cli](https://developers.flow.com/tools/flow-cli).\n\nThe `flow` command from flow-cli must be available. For install instructions see\n[the docs](https://developers.flow.com/tools/flow-cli/install#install-the-flow-cli) or the\n[Github page](https://github.com/onflow/flow-cli).\n\nBy default the configuration is taken from the closest `flow.json` or the `flow.json` in the users home directory.\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/cairo_ls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    init_options = { hostInfo = 'neovim' },\n    cmd = { 'scarb-cairo-language-server', '/C', '--node-ipc' },\n    filetypes = { 'cairo' },\n    root_dir = util.root_pattern('Scarb.toml', 'cairo_project.toml', '.git'),\n  },\n  docs = {\n    description = [[\n[Cairo Language Server](https://github.com/starkware-libs/cairo/tree/main/crates/cairo-lang-language-server)\n\nFirst, install Cairo following [this tutorial](https://book.cairo-lang.org/ch01-01-installation.html)\n\nThen enable Cairo Language Server in your Lua configuration.\n```lua\nrequire'lspconfig'.cairo_ls.setup{}\n```\n\n*cairo-language-server is still under active development, some features might not work yet !*\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/ccls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nlocal function switch_source_header(bufnr)\n  local method_name = 'textDocument/switchSourceHeader'\n  bufnr = util.validate_bufnr(bufnr)\n  local client = vim.lsp.get_clients({ bufnr = bufnr, name = 'ccls' })[1]\n  if not client then\n    return vim.notify(('method %s is not supported by any servers active on the current buffer'):format(method_name))\n  end\n  local params = vim.lsp.util.make_text_document_params(bufnr)\n  client.request(method_name, params, function(err, result)\n    if err then\n      error(tostring(err))\n    end\n    if not result then\n      vim.notify('corresponding file cannot be determined')\n      return\n    end\n    vim.cmd.edit(vim.uri_to_fname(result))\n  end, bufnr)\nend\n\nreturn {\n  default_config = {\n    cmd = { 'ccls' },\n    filetypes = { 'c', 'cpp', 'objc', 'objcpp', 'cuda' },\n    root_dir = function(fname)\n      return util.root_pattern('compile_commands.json', '.ccls')(fname)\n        or vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    offset_encoding = 'utf-32',\n    -- ccls does not support sending a null root directory\n    single_file_support = false,\n  },\n  commands = {\n    CclsSwitchSourceHeader = {\n      function()\n        switch_source_header(0)\n      end,\n      description = 'Switch between source/header',\n    },\n  },\n  docs = {\n    description = [[\nhttps://github.com/MaskRay/ccls/wiki\n\nccls relies on a [JSON compilation database](https://clang.llvm.org/docs/JSONCompilationDatabase.html) specified\nas compile_commands.json or, for simpler projects, a .ccls.\nFor details on how to automatically generate one using CMake look [here](https://cmake.org/cmake/help/latest/variable/CMAKE_EXPORT_COMPILE_COMMANDS.html). Alternatively, you can use [Bear](https://github.com/rizsotto/Bear).\n\nCustomization options are passed to ccls at initialization time via init_options, a list of available options can be found [here](https://github.com/MaskRay/ccls/wiki/Customization#initialization-options). For example:\n\n```lua\nlocal lspconfig = require'lspconfig'\nlspconfig.ccls.setup {\n  init_options = {\n    compilationDatabaseDirectory = \"build\";\n    index = {\n      threads = 0;\n    };\n    clang = {\n      excludeArgs = { \"-frounding-math\"} ;\n    };\n  }\n}\n\n```\n\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/cds_lsp.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'cds-lsp', '--stdio' },\n    filetypes = { 'cds' },\n    -- init_options = { provideFormatter = true }, -- needed to enable formatting capabilities\n    root_dir = util.root_pattern('package.json', 'db', 'srv'),\n    single_file_support = true,\n    settings = {\n      cds = { validate = true },\n    },\n  },\n  docs = {\n    description = [[\n\nhttps://cap.cloud.sap/docs/\n\n`cds-lsp` can be installed via `npm`:\n\n```sh\nnpm i -g @sap/cds-lsp\n```\n\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/circom-lsp.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'circom-lsp' },\n    filetypes = { 'circom' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\n[Circom Language Server](https://github.com/rubydusa/circom-lsp)\n\n`circom-lsp`, the language server for the Circom language.\n    ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/clangd.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\n-- https://clangd.llvm.org/extensions.html#switch-between-sourceheader\nlocal function switch_source_header(bufnr)\n  local method_name = 'textDocument/switchSourceHeader'\n  bufnr = util.validate_bufnr(bufnr)\n  local client = vim.lsp.get_clients({ bufnr = bufnr, name = 'clangd' })[1]\n  if not client then\n    return vim.notify(('method %s is not supported by any servers active on the current buffer'):format(method_name))\n  end\n  local params = vim.lsp.util.make_text_document_params(bufnr)\n  client.request(method_name, params, function(err, result)\n    if err then\n      error(tostring(err))\n    end\n    if not result then\n      vim.notify('corresponding file cannot be determined')\n      return\n    end\n    vim.cmd.edit(vim.uri_to_fname(result))\n  end, bufnr)\nend\n\nlocal function symbol_info()\n  local bufnr = vim.api.nvim_get_current_buf()\n  local clangd_client = vim.lsp.get_clients({ bufnr = bufnr, name = 'clangd' })[1]\n  if not clangd_client or not clangd_client.supports_method 'textDocument/symbolInfo' then\n    return vim.notify('Clangd client not found', vim.log.levels.ERROR)\n  end\n  local win = vim.api.nvim_get_current_win()\n  local params = vim.lsp.util.make_position_params(win, clangd_client.offset_encoding)\n  clangd_client.request('textDocument/symbolInfo', params, function(err, res)\n    if err or #res == 0 then\n      -- Clangd always returns an error, there is not reason to parse it\n      return\n    end\n    local container = string.format('container: %s', res[1].containerName) ---@type string\n    local name = string.format('name: %s', res[1].name) ---@type string\n    vim.lsp.util.open_floating_preview({ name, container }, '', {\n      height = 2,\n      width = math.max(string.len(name), string.len(container)),\n      focusable = false,\n      focus = false,\n      border = 'single',\n      title = 'Symbol Info',\n    })\n  end, bufnr)\nend\n\nreturn {\n  default_config = {\n    cmd = { 'clangd' },\n    filetypes = { 'c', 'cpp', 'objc', 'objcpp', 'cuda' },\n    root_dir = function(fname)\n      return util.root_pattern(\n        '.clangd',\n        '.clang-tidy',\n        '.clang-format',\n        'compile_commands.json',\n        'compile_flags.txt',\n        'configure.ac' -- AutoTools\n      )(fname) or vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n    capabilities = {\n      textDocument = {\n        completion = {\n          editsNearCursor = true,\n        },\n      },\n      offsetEncoding = { 'utf-8', 'utf-16' },\n    },\n  },\n  commands = {\n    ClangdSwitchSourceHeader = {\n      function()\n        switch_source_header(0)\n      end,\n      description = 'Switch between source/header',\n    },\n    ClangdShowSymbolInfo = {\n      function()\n        symbol_info()\n      end,\n      description = 'Show symbol info',\n    },\n  },\n  docs = {\n    description = [[\nhttps://clangd.llvm.org/installation.html\n\n- **NOTE:** Clang >= 11 is recommended! See [#23](https://github.com/neovim/nvim-lspconfig/issues/23).\n- If `compile_commands.json` lives in a build directory, you should\n  symlink it to the root of your source tree.\n  ```\n  ln -s /path/to/myproject/build/compile_commands.json /path/to/myproject/\n  ```\n- clangd relies on a [JSON compilation database](https://clang.llvm.org/docs/JSONCompilationDatabase.html)\n  specified as compile_commands.json, see https://clangd.llvm.org/installation#compile_commandsjson\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/clarity_lsp.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'clarity-lsp' },\n    filetypes = { 'clar', 'clarity' },\n    root_dir = util.root_pattern '.git',\n  },\n  docs = {\n    description = [[\n`clarity-lsp` is a language server for the Clarity language. Clarity is a decidable smart contract language that optimizes for predictability and security. Smart contracts allow developers to encode essential business logic on a blockchain.\n\nTo learn how to configure the clarity language server, see the [clarity-lsp documentation](https://github.com/hirosystems/clarity-lsp).\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/clojure_lsp.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'clojure-lsp' },\n    filetypes = { 'clojure', 'edn' },\n    root_dir = util.root_pattern('project.clj', 'deps.edn', 'build.boot', 'shadow-cljs.edn', '.git', 'bb.edn'),\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/clojure-lsp/clojure-lsp\n\nClojure Language Server\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/cmake.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'cmake-language-server' },\n    filetypes = { 'cmake' },\n    root_dir = function(fname)\n      return util.root_pattern('CMakePresets.json', 'CTestConfig.cmake', '.git', 'build', 'cmake')(fname)\n    end,\n    single_file_support = true,\n    init_options = {\n      buildDirectory = 'build',\n    },\n  },\n  docs = {\n    description = [[\nhttps://github.com/regen100/cmake-language-server\n\nCMake LSP Implementation\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/cobol_ls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'cobol-language-support' },\n    filetypes = { 'cobol' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n  },\n  docs = {\n    description = [[\nCobol language support\n    ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/codeqlls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nlocal workspace_folders = {}\n\nreturn {\n  default_config = {\n    cmd = { 'codeql', 'execute', 'language-server', '--check-errors', 'ON_CHANGE', '-q' },\n    filetypes = { 'ql' },\n    root_dir = util.root_pattern 'qlpack.yml',\n    log_level = vim.lsp.protocol.MessageType.Warning,\n    before_init = function(initialize_params)\n      table.insert(workspace_folders, { name = 'workspace', uri = initialize_params['rootUri'] })\n      initialize_params['workspaceFolders'] = workspace_folders\n    end,\n    settings = {\n      -- List containing all search paths, eg: '~/codeql-home/codeql-repo'.\n      search_path = vim.empty_dict(),\n    },\n  },\n  docs = {\n    description = [[\nReference:\nhttps://codeql.github.com/docs/codeql-cli/\n\nBinaries:\nhttps://github.com/github/codeql-cli-binaries\n        ]],\n  },\n  on_new_config = function(config)\n    if type(config.settings.search_path) == 'table' and not vim.tbl_isempty(config.settings.search_path) then\n      local search_path = '--search-path='\n      for _, path in ipairs(config.settings.search_path) do\n        search_path = search_path .. vim.fn.expand(path) .. ':'\n        table.insert(workspace_folders, {\n          name = 'workspace',\n          uri = string.format('file://%s', path),\n        })\n      end\n      config.cmd = { 'codeql', 'execute', 'language-server', '--check-errors', 'ON_CHANGE', '-q', search_path }\n    else\n      config.cmd = { 'codeql', 'execute', 'language-server', '--check-errors', 'ON_CHANGE', '-q' }\n    end\n  end,\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/coffeesense.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'coffeesense-language-server', '--stdio' },\n    filetypes = { 'coffee' },\n    root_dir = util.root_pattern 'package.json',\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/phil294/coffeesense\n\nCoffeeSense Language Server\n`coffeesense-language-server` can be installed via `npm`:\n```sh\nnpm install -g coffeesense-language-server\n```\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/contextive.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'Contextive.LanguageServer' },\n    root_dir = util.root_pattern('.contextive', '.git'),\n  },\n  docs = {\n    description = [[\nhttps://github.com/dev-cycles/contextive\n\nLanguage Server for Contextive.\n\nContextive allows you to define terms in a central file and provides auto-completion suggestions and hover panels for these terms wherever they're used.\n\nTo install the language server, you need to download the appropriate [GitHub release asset](https://github.com/dev-cycles/contextive/releases/) for your operating system and architecture.\n\nAfter the download unzip the Contextive.LanguageServer binary and copy the file into a folder that is included in your system's PATH.\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/coq_lsp.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'coq-lsp' },\n    filetypes = { 'coq' },\n    root_dir = function(fname)\n      return util.root_pattern '_CoqProject'(fname)\n        or vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/ejgallego/coq-lsp/\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/crystalline.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'crystalline' },\n    filetypes = { 'crystal' },\n    root_dir = function(fname)\n      return util.root_pattern('shard.yml')(fname)\n        or vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/elbywan/crystalline\n\nCrystal language server.\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/csharp_ls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'csharp-ls' },\n    root_dir = function(fname)\n      return util.root_pattern '*.sln'(fname) or util.root_pattern '*.csproj'(fname)\n    end,\n    filetypes = { 'cs' },\n    init_options = {\n      AutomaticWorkspaceInit = true,\n    },\n  },\n  docs = {\n    description = [[\nhttps://github.com/razzmatazz/csharp-language-server\n\nLanguage Server for C#.\n\ncsharp-ls requires the [dotnet-sdk](https://dotnet.microsoft.com/download) to be installed.\n\nThe preferred way to install csharp-ls is with `dotnet tool install --global csharp-ls`.\n    ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/css_variables.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'css-variables-language-server', '--stdio' },\n    filetypes = { 'css', 'scss', 'less' },\n    root_dir = util.root_pattern('package.json', '.git'),\n    -- Same as inlined defaults that don't seem to work without hardcoding them in the lua config\n    -- https://github.com/vunguyentuan/vscode-css-variables/blob/763a564df763f17aceb5f3d6070e0b444a2f47ff/packages/css-variables-language-server/src/CSSVariableManager.ts#L31-L50\n    settings = {\n      cssVariables = {\n        lookupFiles = { '**/*.less', '**/*.scss', '**/*.sass', '**/*.css' },\n        blacklistFolders = {\n          '**/.cache',\n          '**/.DS_Store',\n          '**/.git',\n          '**/.hg',\n          '**/.next',\n          '**/.svn',\n          '**/bower_components',\n          '**/CVS',\n          '**/dist',\n          '**/node_modules',\n          '**/tests',\n          '**/tmp',\n        },\n      },\n    },\n  },\n  docs = {\n    description = [[\nhttps://github.com/vunguyentuan/vscode-css-variables/tree/master/packages/css-variables-language-server\n\nCSS variables autocompletion and go-to-definition\n\n`css-variables-language-server` can be installed via `npm`:\n\n```sh\nnpm i -g css-variables-language-server\n```\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/cssls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'vscode-css-language-server', '--stdio' },\n    filetypes = { 'css', 'scss', 'less' },\n    init_options = { provideFormatter = true }, -- needed to enable formatting capabilities\n    root_dir = util.root_pattern('package.json', '.git'),\n    single_file_support = true,\n    settings = {\n      css = { validate = true },\n      scss = { validate = true },\n      less = { validate = true },\n    },\n  },\n  docs = {\n    description = [[\n\nhttps://github.com/hrsh7th/vscode-langservers-extracted\n\n`css-languageserver` can be installed via `npm`:\n\n```sh\nnpm i -g vscode-langservers-extracted\n```\n\nNeovim does not currently include built-in snippets. `vscode-css-language-server` only provides completions when snippet support is enabled. To enable completion, install a snippet plugin and add the following override to your language client capabilities during setup.\n\n```lua\n--Enable (broadcasting) snippet capability for completion\nlocal capabilities = vim.lsp.protocol.make_client_capabilities()\ncapabilities.textDocument.completion.completionItem.snippetSupport = true\n\nrequire'lspconfig'.cssls.setup {\n  capabilities = capabilities,\n}\n```\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/cssmodules_ls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'cssmodules-language-server' },\n    filetypes = { 'javascript', 'javascriptreact', 'typescript', 'typescriptreact' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('package.json', { path = fname, upward = true })[1])\n    end,\n  },\n  docs = {\n    description = [[\nhttps://github.com/antonk52/cssmodules-language-server\n\nLanguage server for autocompletion and go-to-definition functionality for CSS modules.\n\nYou can install cssmodules-language-server via npm:\n```sh\nnpm install -g cssmodules-language-server\n```\n    ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/cucumber_language_server.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'cucumber-language-server', '--stdio' },\n    filetypes = { 'cucumber' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n  },\n  docs = {\n    description = [[\nhttps://cucumber.io\nhttps://github.com/cucumber/common\nhttps://www.npmjs.com/package/@cucumber/language-server\n\nLanguage server for Cucumber.\n\n`cucumber-language-server` can be installed via `npm`:\n```sh\nnpm install -g @cucumber/language-server\n```\n    ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/cue.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'cue', 'lsp' },\n    filetypes = { 'cue' },\n    root_dir = function(fname)\n      return util.root_pattern(unpack({ 'cue.mod', '.git' }))(fname)\n    end,\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/cue-lang/cue\n\nCUE makes it easy to validate data, write schemas, and ensure configurations align with policies.\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/custom_elements_ls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    init_options = { hostInfo = 'neovim' },\n    cmd = { 'custom-elements-languageserver', '--stdio' },\n    root_dir = util.root_pattern('tsconfig.json', 'package.json', 'jsconfig.json', '.git'),\n  },\n  docs = {\n    description = [[\nhttps://github.com/Matsuuu/custom-elements-language-server\n\n`custom-elements-languageserver` depends on `typescript`. Both packages can be installed via `npm`:\n```sh\nnpm install -g typescript custom-elements-languageserver\n```\nTo configure typescript language server, add a\n[`tsconfig.json`](https://www.typescriptlang.org/docs/handbook/tsconfig-json.html) or\n[`jsconfig.json`](https://code.visualstudio.com/docs/languages/jsconfig) to the root of your\nproject.\nHere's an example that disables type checking in JavaScript files.\n```json\n{\n  \"compilerOptions\": {\n    \"module\": \"commonjs\",\n    \"target\": \"es6\",\n    \"checkJs\": false\n  },\n  \"exclude\": [\n    \"node_modules\"\n  ]\n}\n```\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/cypher_ls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'cypher-language-server', '--stdio' },\n    filetypes = { 'cypher' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/neo4j/cypher-language-support/tree/main/packages/language-server\n\n`cypher-language-server`, language server for Cypher query language.\nPart of the umbrella project cypher-language-support: https://github.com/neo4j/cypher-language-support\n\n`cypher-language-server` can be installed via `npm`:\n```sh\nnpm i -g @neo4j-cypher/language-server\n```\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/daedalus_ls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nlocal root_files = {\n  'Gothic.src',\n  'Camera.src',\n  'Menu.src',\n  'Music.src',\n  'ParticleFX.src',\n  'SFX.src',\n  'VisualFX.src',\n}\n\nreturn {\n  default_config = {\n    cmd = { 'DaedalusLanguageServer' },\n    filetypes = { 'd' },\n    root_dir = util.root_pattern(unpack(root_files)),\n    settings = {\n      DaedalusLanguageServer = {\n        loglevel = 'debug',\n        inlayHints = { constants = true },\n        numParserThreads = 16,\n        fileEncoding = 'Windows-1252',\n        srcFileEncoding = 'Windows-1252',\n      },\n    },\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/dafny.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'dafny', 'server' },\n    filetypes = { 'dfy', 'dafny' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\n    Support for the Dafny language server.\n\n    The default `cmd` uses \"dafny server\", which works on Dafny 4.0.0+. For\n    older versions of Dafny, you can compile the language server from source at\n    [dafny-lang/language-server-csharp](https://github.com/dafny-lang/language-server-csharp)\n    and set `cmd = {\"dotnet\", \"<Path to your language server>\"}`.\n    ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/dagger.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'cuelsp' },\n    filetypes = { 'cue' },\n    root_dir = function(fname)\n      return util.root_pattern('cue.mod', '.git')(fname)\n    end,\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/dagger/cuelsp\n\nDagger's lsp server for cuelang.\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/dartls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'dart', 'language-server', '--protocol=lsp' },\n    filetypes = { 'dart' },\n    root_dir = util.root_pattern 'pubspec.yaml',\n    init_options = {\n      onlyAnalyzeProjectsWithOpenFiles = true,\n      suggestFromUnimportedLibraries = true,\n      closingLabels = true,\n      outline = true,\n      flutterOutline = true,\n    },\n    settings = {\n      dart = {\n        completeFunctionCalls = true,\n        showTodos = true,\n      },\n    },\n  },\n  docs = {\n    description = [[\nhttps://github.com/dart-lang/sdk/tree/master/pkg/analysis_server/tool/lsp_spec\n\nLanguage server for dart.\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/dcmls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'dcm', 'start-server', '--client=neovim' },\n    filetypes = { 'dart' },\n    root_dir = util.root_pattern 'pubspec.yaml',\n  },\n  docs = {\n    description = [[\nhttps://dcm.dev/\n\nLanguage server for DCM analyzer.\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/debputy.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'debputy', 'lsp', 'server' },\n    filetypes = { 'debcontrol', 'debcopyright', 'debchangelog', 'make', 'yaml' },\n    root_dir = util.root_pattern 'debian',\n  },\n  docs = {\n    description = [[\nhttps://salsa.debian.org/debian/debputy\n\nLanguage Server for Debian packages.\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/delphi_ls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'DelphiLSP.exe' },\n    filetypes = { 'pascal' },\n    root_dir = util.root_pattern '*.dpr',\n    single_file_support = false,\n  },\n  docs = {\n    description = [[\nLanguage server for Delphi from Embarcadero.\nhttps://marketplace.visualstudio.com/items?itemName=EmbarcaderoTechnologies.delphilsp\n\nNote, the '*.delphilsp.json' file is required, more details at:\nhttps://docwiki.embarcadero.com/RADStudio/Alexandria/en/Using_DelphiLSP_Code_Insight_with_Other_Editors\n\nBelow, you'll find a sample configuration for the lazy manager.\nWhen on_attach is triggered, it signals DelphiLSP to load settings from a configuration file.\nWithout this step, DelphiLSP initializes but remains non-functional:\n\n```lua\n\"neovim/nvim-lspconfig\",\nlazy = false,\nconfig = function()\n  local capabilities = require(\"cmp_nvim_lsp\").default_capabilities()\n  local lspconfig = require(\"lspconfig\")\n\n  lspconfig.delphi_ls.setup({\n    capabilities = capabilities,\n\n    on_attach = function(client)\n      local lsp_config = vim.fs.find(function(name)\n        return name:match(\".*%.delphilsp.json$\")\n      end, { type = \"file\", path = client.config.root_dir, upward = false })[1]\n\n      if lsp_config then\n        client.config.settings = { settingsFile = lsp_config }\n        client.notify(\"workspace/didChangeConfiguration\", { settings = client.config.settings })\n      else\n        vim.notify_once(\"delphi_ls: '*.delphilsp.json' config file not found\")\n      end\n    end,\n  })\nend,\n```\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/denols.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\nlocal lsp = vim.lsp\n\nlocal function buf_cache(bufnr, client)\n  local params = {\n    command = 'deno.cache',\n    arguments = { {}, vim.uri_from_bufnr(bufnr) },\n  }\n  client.request('workspace/executeCommand', params, function(err, _result, ctx)\n    if err then\n      local uri = ctx.params.arguments[2]\n      vim.api.nvim_err_writeln('cache command failed for ' .. vim.uri_to_fname(uri))\n    end\n  end, bufnr)\nend\n\nlocal function virtual_text_document_handler(uri, res, client)\n  if not res then\n    return nil\n  end\n\n  local lines = vim.split(res.result, '\\n')\n  local bufnr = vim.uri_to_bufnr(uri)\n\n  local current_buf = vim.api.nvim_buf_get_lines(bufnr, 0, -1, false)\n  if #current_buf ~= 0 then\n    return nil\n  end\n\n  vim.api.nvim_buf_set_lines(bufnr, 0, -1, false, lines)\n  vim.api.nvim_set_option_value('readonly', true, { buf = bufnr })\n  vim.api.nvim_set_option_value('modified', false, { buf = bufnr })\n  vim.api.nvim_set_option_value('modifiable', false, { buf = bufnr })\n  lsp.buf_attach_client(bufnr, client.id)\nend\n\nlocal function virtual_text_document(uri, client)\n  local params = {\n    textDocument = {\n      uri = uri,\n    },\n  }\n  local result = client.request_sync('deno/virtualTextDocument', params)\n  virtual_text_document_handler(uri, result, client)\nend\n\nlocal function denols_handler(err, result, ctx, config)\n  if not result or vim.tbl_isempty(result) then\n    return nil\n  end\n\n  local client = vim.lsp.get_client_by_id(ctx.client_id)\n  for _, res in pairs(result) do\n    local uri = res.uri or res.targetUri\n    if uri:match '^deno:' then\n      virtual_text_document(uri, client)\n      res['uri'] = uri\n      res['targetUri'] = uri\n    end\n  end\n\n  lsp.handlers[ctx.method](err, result, ctx, config)\nend\n\nreturn {\n  default_config = {\n    cmd = { 'deno', 'lsp' },\n    cmd_env = { NO_COLOR = true },\n    filetypes = {\n      'javascript',\n      'javascriptreact',\n      'typescript',\n      'typescriptreact',\n    },\n    root_dir = util.root_pattern('deno.json', 'deno.jsonc', '.git'),\n    settings = {\n      deno = {\n        enable = true,\n        suggest = {\n          imports = {\n            hosts = {\n              ['https://deno.land'] = true,\n            },\n          },\n        },\n      },\n    },\n    handlers = {\n      ['textDocument/definition'] = denols_handler,\n      ['textDocument/typeDefinition'] = denols_handler,\n      ['textDocument/references'] = denols_handler,\n    },\n  },\n  commands = {\n    DenolsCache = {\n      function()\n        local clients = vim.lsp.get_clients { bufnr = 0, name = 'denols' }\n        if #clients > 0 then\n          buf_cache(0, clients[#clients])\n        end\n      end,\n      description = 'Cache a module and all of its dependencies.',\n    },\n  },\n  docs = {\n    description = [[\nhttps://github.com/denoland/deno\n\nDeno's built-in language server\n\nTo appropriately highlight codefences returned from denols, you will need to augment vim.g.markdown_fenced languages\n in your init.lua. Example:\n\n```lua\nvim.g.markdown_fenced_languages = {\n  \"ts=typescript\"\n}\n```\n\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/dhall_lsp_server.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'dhall-lsp-server' },\n    filetypes = { 'dhall' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/dhall-lang/dhall-haskell/tree/master/dhall-lsp-server\n\nlanguage server for dhall\n\n`dhall-lsp-server` can be installed via cabal:\n```sh\ncabal install dhall-lsp-server\n```\nprebuilt binaries can be found [here](https://github.com/dhall-lang/dhall-haskell/releases).\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/diagnosticls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  -- Configuration from https://github.com/iamcco/diagnostic-languageserver#config--document\n  default_config = {\n    cmd = { 'diagnostic-languageserver', '--stdio' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n    -- Empty by default, override to add filetypes.\n    filetypes = {},\n  },\n  docs = {\n    description = [[\nhttps://github.com/iamcco/diagnostic-languageserver\n\nDiagnostic language server integrate with linters.\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/digestif.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'digestif' },\n    filetypes = { 'tex', 'plaintex', 'context' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/astoff/digestif\n\nDigestif is a code analyzer, and a language server, for LaTeX, ConTeXt et caterva. It provides\n\ncontext-sensitive completion, documentation, code navigation, and related functionality to any\n\ntext editor that speaks the LSP protocol.\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/djlsp.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'djlsp' },\n    filetypes = { 'html', 'htmldjango' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    settings = {},\n  },\n  docs = {\n    description = [[\n      https://github.com/fourdigits/django-template-lsp\n\n      `djlsp`, a language server for Django templates.\n    ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/docker_compose_language_service.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'docker-compose-langserver', '--stdio' },\n    filetypes = { 'yaml.docker-compose' },\n    root_dir = util.root_pattern('docker-compose.yaml', 'docker-compose.yml', 'compose.yaml', 'compose.yml'),\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/microsoft/compose-language-service\nThis project contains a language service for Docker Compose.\n\n`compose-language-service` can be installed via `npm`:\n\n```sh\nnpm install @microsoft/compose-language-service\n```\n\nNote: If the docker-compose-langserver doesn't startup when entering a `docker-compose.yaml` file, make sure that the filetype is `yaml.docker-compose`. You can set with: `:set filetype=yaml.docker-compose`.\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/dockerls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'docker-langserver', '--stdio' },\n    filetypes = { 'dockerfile' },\n    root_dir = util.root_pattern 'Dockerfile',\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/rcjsuen/dockerfile-language-server-nodejs\n\n`docker-langserver` can be installed via `npm`:\n```sh\nnpm install -g dockerfile-language-server-nodejs\n```\n\nAdditional configuration can be applied in the following way:\n```lua\nrequire(\"lspconfig\").dockerls.setup {\n    settings = {\n        docker = {\n\t    languageserver = {\n\t        formatter = {\n\t\t    ignoreMultilineInstructions = true,\n\t\t},\n\t    },\n\t}\n    }\n}\n```\n    ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/dolmenls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'dolmenls' },\n    filetypes = { 'smt2', 'tptp', 'p', 'cnf', 'icnf', 'zf' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/Gbury/dolmen/blob/master/doc/lsp.md\n\n`dolmenls` can be installed via `opam`\n```sh\nopam install dolmen_lsp\n```\n    ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/dotls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'dot-language-server', '--stdio' },\n    filetypes = { 'dot' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/nikeee/dot-language-server\n\n`dot-language-server` can be installed via `npm`:\n```sh\nnpm install -g dot-language-server\n```\n    ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/dprint.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'dprint', 'lsp' },\n    filetypes = {\n      'javascript',\n      'javascriptreact',\n      'typescript',\n      'typescriptreact',\n      'json',\n      'jsonc',\n      'markdown',\n      'python',\n      'toml',\n      'rust',\n      'roslyn',\n      'graphql',\n    },\n    root_dir = util.root_pattern('dprint.json', '.dprint.json', 'dprint.jsonc', '.dprint.jsonc'),\n    single_file_support = true,\n    settings = {},\n  },\n  docs = {\n    description = [[\nhttps://github.com/dprint/dprint\n\nPluggable and configurable code formatting platform written in Rust.\n  ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/drools_lsp.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal function get_java_bin(config)\n  local java_bin = vim.tbl_get(config, 'drools', 'java', 'bin')\n  if not java_bin then\n    java_bin = vim.env.JAVA_HOME and (vim.env.JAVA_HOME .. '/bin/java') or 'java'\n    if vim.fn.has 'win32' == 1 then\n      java_bin = java_bin .. '.exe'\n    end\n  end\n  return java_bin\nend\n\nlocal function get_java_opts(config)\n  local java_opts = vim.tbl_get(config, 'drools', 'java', 'opts')\n  return java_opts and java_opts or {}\nend\n\nlocal function get_jar(config)\n  local jar = vim.tbl_get(config, 'drools', 'jar')\n  return jar and jar or 'drools-lsp-server-jar-with-dependencies.jar'\nend\n\nlocal function get_cmd(config)\n  local cmd = vim.tbl_get(config, 'cmd')\n  if not cmd then\n    cmd = { get_java_bin(config) }\n    for _, o in ipairs(get_java_opts(config)) do\n      table.insert(cmd, o)\n    end\n    ---@diagnostic disable-next-line:missing-parameter\n    vim.list_extend(cmd, { '-jar', get_jar(config) })\n  end\n  return cmd\nend\n\nreturn {\n  default_config = {\n    filetypes = { 'drools' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n    on_new_config = function(new_config)\n      new_config.cmd = get_cmd(new_config)\n    end,\n  },\n  docs = {\n    description = [=[\nhttps://github.com/kiegroup/drools-lsp\n\nLanguage server for the [Drools Rule Language (DRL)](https://docs.drools.org/latest/drools-docs/docs-website/drools/language-reference/#con-drl_drl-rules).\n\nThe `drools-lsp` server is a self-contained java jar file (`drools-lsp-server-jar-with-dependencies.jar`), and can be downloaded from [https://github.com/kiegroup/drools-lsp/releases/](https://github.com/kiegroup/drools-lsp/releases/).\n\nConfiguration information:\n```lua\n-- Option 1) Specify the entire command:\nrequire('lspconfig').drools_lsp.setup {\n  cmd = { '/path/to/java', '-jar', '/path/to/drools-lsp-server-jar-with-dependencies.jar' },\n}\n\n-- Option 2) Specify just the jar path (the JAVA_HOME environment variable will be respected if present):\nrequire('lspconfig').drools_lsp.setup {\n  drools = { jar = '/path/to/drools-lsp-server-jar-with-dependencies.jar' },\n}\n\n-- Option 3) Specify the java bin and/or java opts in addition to the jar path:\nrequire('lspconfig').drools_lsp.setup {\n  drools = {\n    java = { bin = '/path/to/java', opts = { '-Xmx100m' } },\n    jar = '/path/to/drools-lsp-server-jar-with-dependencies.jar',\n  },\n}\n```\n\nNeovim does not yet have automatic detection for the `drools` filetype, but it can be added with:\n```lua\nvim.cmd [[ autocmd BufNewFile,BufRead *.drl set filetype=drools ]]\n```\n]=],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/ds_pinyin_lsp.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nlocal bin_name = 'ds-pinyin-lsp'\nif vim.fn.has 'win32' == 1 then\n  bin_name = bin_name .. '.exe'\nend\n\nlocal function ds_pinyin_lsp_off(bufnr)\n  bufnr = util.validate_bufnr(bufnr)\n  local ds_pinyin_lsp_client = vim.lsp.get_clients({ bufnr = bufnr, name = 'ds_pinyin_lsp' })[1]\n  if ds_pinyin_lsp_client then\n    ds_pinyin_lsp_client.notify('$/turn/completion', {\n      ['completion_on'] = false,\n    })\n  else\n    vim.notify 'notification $/turn/completion is not supported by any servers active on the current buffer'\n  end\nend\n\nlocal function ds_pinyin_lsp_on(bufnr)\n  bufnr = util.validate_bufnr(bufnr)\n  local ds_pinyin_lsp_client = vim.lsp.get_clients({ bufnr = bufnr, name = 'ds_pinyin_lsp' })[1]\n  if ds_pinyin_lsp_client then\n    ds_pinyin_lsp_client.notify('$/turn/completion', {\n      ['completion_on'] = true,\n    })\n  else\n    vim.notify 'notification $/turn/completion is not supported by any servers active on the current buffer'\n  end\nend\n\nreturn {\n  default_config = {\n    cmd = { bin_name },\n    filetypes = { 'markdown', 'org' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n    init_options = {\n      completion_on = true,\n      show_symbols = true,\n      show_symbols_only_follow_by_hanzi = false,\n      show_symbols_by_n_times = 0,\n      match_as_same_as_input = true,\n      match_long_input = true,\n      max_suggest = 15,\n    },\n  },\n  commands = {\n    DsPinyinCompletionOff = {\n      function()\n        ds_pinyin_lsp_off(0)\n      end,\n      description = 'Turn off the ds-pinyin-lsp completion',\n    },\n    DsPinyinCompletionOn = {\n      function()\n        ds_pinyin_lsp_on(0)\n      end,\n      description = 'Turn on the ds-pinyin-lsp completion',\n    },\n  },\n  docs = {\n    description = [=[\nhttps://github.com/iamcco/ds-pinyin-lsp\nDead simple Pinyin language server for input Chinese without IME(input method).\nTo install, download the latest [release](https://github.com/iamcco/ds-pinyin-lsp/releases) and ensure `ds-pinyin-lsp` is on your path.\nAnd make ensure the database file `dict.db3` is also downloaded. And put the path to `dict.dbs` in the following code.\n\n```lua\n\nrequire('lspconfig').ds_pinyin_lsp.setup {\n    init_options = {\n        db_path = \"your_path_to_database\"\n    }\n}\n\n```\n]=],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/dts_lsp.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    name = 'dts_lsp',\n    cmd = { 'dts-lsp' },\n    filetypes = { 'dts', 'dtsi', 'overlay' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    settings = {},\n  },\n  docs = {\n    description = [[\n`dts-lsp` is an LSP for Devicetree files built on top of tree-sitter-devicetree grammar.\nLanguage servers can be used in many editors, such as Visual Studio Code, Emacs\nor Vim\n\nInstall `dts-lsp` from https://github.com/igor-prusov/dts-lsp and add it to path\n\n`dts-lsp` doesn't require any configuration.\n\nMore about Devicetree:\nhttps://www.devicetree.org/\nhttps://docs.zephyrproject.org/latest/build/dts/index.html\n\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/earthlyls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig/util'\n\nreturn {\n  default_config = {\n    cmd = { 'earthlyls' },\n    filetypes = { 'earthfile' },\n    root_dir = util.root_pattern 'Earthfile',\n  },\n  docs = {\n    description = [[\nhttps://github.com/glehmann/earthlyls\n\nA fast language server for earthly.\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/ecsact.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'ecsact_lsp_server', '--stdio' },\n    filetypes = { 'ecsact' },\n    root_dir = util.root_pattern '.git',\n    single_file_support = true,\n  },\n\n  docs = {\n    description = [[\nhttps://github.com/ecsact-dev/ecsact_lsp_server\n\nLanguage server for Ecsact.\n\nThe default cmd assumes `ecsact_lsp_server` is in your PATH. Typically from the\nEcsact SDK: https://ecsact.dev/start\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/efm.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n\nreturn {\n  default_config = {\n    cmd = { 'efm-langserver' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n  },\n\n  docs = {\n    description = [[\nhttps://github.com/mattn/efm-langserver\n\nGeneral purpose Language Server that can use specified error message format generated from specified command.\n\nRequires at minimum EFM version [v0.0.38](https://github.com/mattn/efm-langserver/releases/tag/v0.0.38) to support\nlaunching the language server on single files. If on an older version of EFM, disable single file support:\n\n```lua\nrequire('lspconfig')['efm'].setup{\n  settings = ..., -- You must populate this according to the EFM readme\n  filetypes = ..., -- Populate this according to the note below\n  single_file_support = false, -- This is the important line for supporting older version of EFM\n}\n```\n\nNote: In order for neovim's built-in language server client to send the appropriate `languageId` to EFM, **you must\nspecify `filetypes` in your call to `setup{}`**. Otherwise `lspconfig` will launch EFM on the `BufEnter` instead\nof the `FileType` autocommand, and the `filetype` variable used to populate the `languageId` will not yet be set.\n\n```lua\nrequire('lspconfig')['efm'].setup{\n  settings = ..., -- You must populate this according to the EFM readme\n  filetypes = { 'python','cpp','lua' }\n}\n```\n\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/elixirls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    filetypes = { 'elixir', 'eelixir', 'heex', 'surface' },\n    root_dir = function(fname)\n      local matches = vim.fs.find({ 'mix.exs' }, { upward = true, limit = 2, path = fname })\n      local child_or_root_path, maybe_umbrella_path = unpack(matches)\n      local root_dir = vim.fs.dirname(maybe_umbrella_path or child_or_root_path)\n\n      return root_dir\n    end,\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/elixir-lsp/elixir-ls\n\n`elixir-ls` can be installed by following the instructions [here](https://github.com/elixir-lsp/elixir-ls#building-and-running).\n\n1. Download the zip from https://github.com/elixir-lsp/elixir-ls/releases/latest/\n2. Unzip it and make it executable.\n   ```bash\n   unzip elixir-ls.zip -d /path/to/elixir-ls\n   # Unix\n   chmod +x /path/to/elixir-ls/language_server.sh\n   ```\n\n**By default, elixir-ls doesn't have a `cmd` set.** This is because nvim-lspconfig does not make assumptions about your path. You must add the following to your init.vim or init.lua to set `cmd` to the absolute path ($HOME and ~ are not expanded) of your unzipped elixir-ls.\n\n```lua\nrequire'lspconfig'.elixirls.setup{\n    -- Unix\n    cmd = { \"/path/to/elixir-ls/language_server.sh\" };\n    -- Windows\n    cmd = { \"/path/to/elixir-ls/language_server.bat\" };\n    ...\n}\n```\n\n'root_dir' is chosen like this: if two or more directories containing `mix.exs` were found when searching directories upward, the second one (higher up) is chosen, with the assumption that it is the root of an umbrella app. Otherwise the directory containing the single mix.exs that was found is chosen.\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/elmls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\nlocal api = vim.api\n\nlocal elm_root_pattern = util.root_pattern 'elm.json'\n\nreturn {\n  default_config = {\n    cmd = { 'elm-language-server' },\n    -- TODO(ashkan) if we comment this out, it will allow elmls to operate on elm.json. It seems like it could do that, but no other editor allows it right now.\n    filetypes = { 'elm' },\n    root_dir = function(fname)\n      local filetype = api.nvim_buf_get_option(0, 'filetype')\n      if filetype == 'elm' or (filetype == 'json' and fname:match 'elm%.json$') then\n        return elm_root_pattern(fname)\n      end\n    end,\n    init_options = {\n      elmReviewDiagnostics = 'off', -- 'off' | 'warning' | 'error'\n      skipInstallPackageConfirmation = false,\n      disableElmLSDiagnostics = false,\n      onlyUpdateDiagnosticsOnSave = false,\n    },\n    capabilities = {\n      offsetEncoding = { 'utf-8', 'utf-16' },\n    },\n  },\n  docs = {\n    description = [[\nhttps://github.com/elm-tooling/elm-language-server#installation\n\nIf you don't want to use Nvim to install it, then you can use:\n```sh\nnpm install -g elm elm-test elm-format @elm-tooling/elm-language-server\n```\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/elp.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'elp', 'server' },\n    filetypes = { 'erlang' },\n    root_dir = util.root_pattern('rebar.config', 'erlang.mk', '.git'),\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://whatsapp.github.io/erlang-language-platform\n\nELP integrates Erlang into modern IDEs via the language server protocol and was\ninspired by rust-analyzer.\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/ember.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'ember-language-server', '--stdio' },\n    filetypes = { 'handlebars', 'typescript', 'javascript', 'typescript.glimmer', 'javascript.glimmer' },\n    root_dir = util.root_pattern('ember-cli-build.js', '.git'),\n  },\n  docs = {\n    description = [[\nhttps://github.com/ember-tooling/ember-language-server\n\n`ember-language-server` can be installed via `npm`:\n\n```sh\nnpm install -g @ember-tooling/ember-language-server\n```\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/emmet_language_server.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'emmet-language-server', '--stdio' },\n    filetypes = {\n      'css',\n      'eruby',\n      'html',\n      'htmldjango',\n      'javascriptreact',\n      'less',\n      'pug',\n      'sass',\n      'scss',\n      'typescriptreact',\n      'htmlangular',\n    },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/olrtg/emmet-language-server\n\nPackage can be installed via `npm`:\n```sh\nnpm install -g @olrtg/emmet-language-server\n```\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/emmet_ls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'emmet-ls', '--stdio' },\n    filetypes = {\n      'astro',\n      'css',\n      'eruby',\n      'html',\n      'htmldjango',\n      'javascriptreact',\n      'less',\n      'pug',\n      'sass',\n      'scss',\n      'svelte',\n      'typescriptreact',\n      'vue',\n      'htmlangular',\n    },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/aca/emmet-ls\n\nPackage can be installed via `npm`:\n```sh\nnpm install -g emmet-ls\n```\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/erg_language_server.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'erg', '--language-server' },\n    filetypes = { 'erg' },\n    root_dir = function(fname)\n      return util.root_pattern 'package.er'(fname)\n        or vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n  },\n  docs = {\n    description = [[\nhttps://github.com/erg-lang/erg#flags ELS\n\nELS (erg-language-server) is a language server for the Erg programming language.\n\nerg-language-server can be installed via `cargo` and used as follows:\n ```sh\n cargo install erg --features els\n erg --language-server\n ```\n    ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/erlangls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'erlang_ls' },\n    filetypes = { 'erlang' },\n    root_dir = util.root_pattern('rebar.config', 'erlang.mk', '.git'),\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://erlang-ls.github.io\n\nLanguage Server for Erlang.\n\nClone [erlang_ls](https://github.com/erlang-ls/erlang_ls)\nCompile the project with `make` and copy resulting binaries somewhere in your $PATH eg. `cp _build/*/bin/* ~/local/bin`\n\nInstallation instruction can be found [here](https://github.com/erlang-ls/erlang_ls).\n\nInstallation requirements:\n    - [Erlang OTP 21+](https://github.com/erlang/otp)\n    - [rebar3 3.9.1+](https://github.com/erlang/rebar3)\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/esbonio.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'python3', '-m', 'esbonio' },\n    filetypes = { 'rst' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n  },\n  docs = {\n    description = [[\nhttps://github.com/swyddfa/esbonio\n\nEsbonio is a language server for [Sphinx](https://www.sphinx-doc.org/en/master/) documentation projects.\nThe language server can be installed via pip\n\n```\npip install esbonio\n```\n\nSince Sphinx is highly extensible you will get best results if you install the language server in the same\nPython environment as the one used to build your documentation. To ensure that the correct Python environment\nis picked up, you can either launch `nvim` with the correct environment activated.\n\n```\nsource env/bin/activate\nnvim\n```\n\nOr you can modify the default `cmd` to include the full path to the Python interpreter.\n\n```lua\nrequire'lspconfig'.esbonio.setup {\n  cmd = { '/path/to/virtualenv/bin/python', '-m', 'esbonio' }\n}\n```\n\nEsbonio supports a number of config values passed as `init_options` on startup, for example.\n\n```lua\nrequire'lspconfig'.esbonio.setup {\n  init_options = {\n    server = {\n      logLevel = \"debug\"\n    },\n    sphinx = {\n      confDir = \"/path/to/docs\",\n      srcDir = \"${confDir}/../docs-src\"\n    }\n}\n```\n\nA full list and explanation of the available options can be found [here](https://docs.esbon.io/en/esbonio-language-server-v0.16.4/lsp/getting-started.html?editor=neovim-lspconfig#configuration)\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/eslint.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\nlocal lsp = vim.lsp\n\nlocal function fix_all(opts)\n  opts = opts or {}\n\n  local eslint_lsp_client = vim.lsp.get_clients({ bufnr = opts.bufnr, name = 'eslint' })[1]\n  if eslint_lsp_client == nil then\n    return\n  end\n\n  local request\n  if opts.sync then\n    request = function(bufnr, method, params)\n      eslint_lsp_client.request_sync(method, params, nil, bufnr)\n    end\n  else\n    request = function(bufnr, method, params)\n      eslint_lsp_client.request(method, params, nil, bufnr)\n    end\n  end\n\n  local bufnr = util.validate_bufnr(opts.bufnr or 0)\n  request(0, 'workspace/executeCommand', {\n    command = 'eslint.applyAllFixes',\n    arguments = {\n      {\n        uri = vim.uri_from_bufnr(bufnr),\n        version = lsp.util.buf_versions[bufnr],\n      },\n    },\n  })\nend\n\nlocal root_file = {\n  '.eslintrc',\n  '.eslintrc.js',\n  '.eslintrc.cjs',\n  '.eslintrc.yaml',\n  '.eslintrc.yml',\n  '.eslintrc.json',\n  'eslint.config.js',\n  'eslint.config.mjs',\n  'eslint.config.cjs',\n  'eslint.config.ts',\n  'eslint.config.mts',\n  'eslint.config.cts',\n}\n\nreturn {\n  default_config = {\n    cmd = { 'vscode-eslint-language-server', '--stdio' },\n    filetypes = {\n      'javascript',\n      'javascriptreact',\n      'typescript',\n      'typescriptreact',\n      'vue',\n      'svelte',\n      'astro',\n    },\n    -- https://eslint.org/docs/user-guide/configuring/configuration-files#configuration-file-formats\n    root_dir = function(fname)\n      root_file = util.insert_package_json(root_file, 'eslintConfig', fname)\n      return util.root_pattern(unpack(root_file))(fname)\n    end,\n    -- Refer to https://github.com/Microsoft/vscode-eslint#settings-options for documentation.\n    settings = {\n      validate = 'on',\n      packageManager = nil,\n      useESLintClass = false,\n      experimental = {\n        useFlatConfig = false,\n      },\n      codeActionOnSave = {\n        enable = false,\n        mode = 'all',\n      },\n      format = true,\n      quiet = false,\n      onIgnoredFiles = 'off',\n      rulesCustomizations = {},\n      run = 'onType',\n      problems = {\n        shortenToSingleLine = false,\n      },\n      -- nodePath configures the directory in which the eslint server should start its node_modules resolution.\n      -- This path is relative to the workspace folder (root dir) of the server instance.\n      nodePath = '',\n      -- use the workspace folder location or the file location (if no workspace folder is open) as the working directory\n      workingDirectory = { mode = 'location' },\n      codeAction = {\n        disableRuleComment = {\n          enable = true,\n          location = 'separateLine',\n        },\n        showDocumentation = {\n          enable = true,\n        },\n      },\n    },\n    on_new_config = function(config, new_root_dir)\n      -- The \"workspaceFolder\" is a VSCode concept. It limits how far the\n      -- server will traverse the file system when locating the ESLint config\n      -- file (e.g., .eslintrc).\n      config.settings.workspaceFolder = {\n        uri = new_root_dir,\n        name = vim.fn.fnamemodify(new_root_dir, ':t'),\n      }\n\n      -- Support flat config\n      if\n        vim.fn.filereadable(new_root_dir .. '/eslint.config.js') == 1\n        or vim.fn.filereadable(new_root_dir .. '/eslint.config.mjs') == 1\n        or vim.fn.filereadable(new_root_dir .. '/eslint.config.cjs') == 1\n        or vim.fn.filereadable(new_root_dir .. '/eslint.config.ts') == 1\n        or vim.fn.filereadable(new_root_dir .. '/eslint.config.mts') == 1\n        or vim.fn.filereadable(new_root_dir .. '/eslint.config.cts') == 1\n      then\n        config.settings.experimental.useFlatConfig = true\n      end\n\n      -- Support Yarn2 (PnP) projects\n      local pnp_cjs = new_root_dir .. '/.pnp.cjs'\n      local pnp_js = new_root_dir .. '/.pnp.js'\n      if vim.uv.fs_stat(pnp_cjs) or vim.uv.fs_stat(pnp_js) then\n        config.cmd = vim.list_extend({ 'yarn', 'exec' }, config.cmd)\n      end\n    end,\n    handlers = {\n      ['eslint/openDoc'] = function(_, result)\n        if result then\n          vim.ui.open(result.url)\n        end\n        return {}\n      end,\n      ['eslint/confirmESLintExecution'] = function(_, result)\n        if not result then\n          return\n        end\n        return 4 -- approved\n      end,\n      ['eslint/probeFailed'] = function()\n        vim.notify('[lspconfig] ESLint probe failed.', vim.log.levels.WARN)\n        return {}\n      end,\n      ['eslint/noLibrary'] = function()\n        vim.notify('[lspconfig] Unable to find ESLint library.', vim.log.levels.WARN)\n        return {}\n      end,\n    },\n  },\n  commands = {\n    EslintFixAll = {\n      function()\n        fix_all { sync = true, bufnr = 0 }\n      end,\n      description = 'Fix all eslint problems for this buffer',\n    },\n  },\n  docs = {\n    description = [[\nhttps://github.com/hrsh7th/vscode-langservers-extracted\n\n`vscode-eslint-language-server` is a linting engine for JavaScript / Typescript.\nIt can be installed via `npm`:\n\n```sh\nnpm i -g vscode-langservers-extracted\n```\n\n`vscode-eslint-language-server` provides an `EslintFixAll` command that can be used to format a document on save:\n```lua\nlspconfig.eslint.setup({\n  --- ...\n  on_attach = function(client, bufnr)\n    vim.api.nvim_create_autocmd(\"BufWritePre\", {\n      buffer = bufnr,\n      command = \"EslintFixAll\",\n    })\n  end,\n})\n```\n\nSee [vscode-eslint](https://github.com/microsoft/vscode-eslint/blob/55871979d7af184bf09af491b6ea35ebd56822cf/server/src/eslintServer.ts#L216-L229) for configuration options.\n\nMessages handled in lspconfig: `eslint/openDoc`, `eslint/confirmESLintExecution`, `eslint/probeFailed`, `eslint/noLibrary`\n\nAdditional messages you can handle: `eslint/noConfig`\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/facility_language_server.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'facility-language-server' },\n    filetypes = { 'fsd' },\n    single_file_support = true,\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n  },\n  docs = {\n    description = [[\nhttps://github.com/FacilityApi/FacilityLanguageServer\n\nFacility language server protocol (LSP) support.\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/fennel_language_server.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'fennel-language-server' },\n    filetypes = { 'fennel' },\n    single_file_support = true,\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    settings = {},\n  },\n  docs = {\n    description = [[\nhttps://github.com/rydesun/fennel-language-server\n\nFennel language server protocol (LSP) support.\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/fennel_ls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'fennel-ls' },\n    filetypes = { 'fennel' },\n    root_dir = function(dir)\n      local has_fls_project_cfg = function(path)\n        local fnlpath = vim.fs.joinpath(path, 'flsproject.fnl')\n        return (vim.uv.fs_stat(fnlpath) or {}).type == 'file'\n      end\n      return util.search_ancestors(dir, has_fls_project_cfg) or vim.fs.root(0, '.git')\n    end,\n    settings = {},\n    single_file_support = true,\n    capabilities = {\n      offsetEncoding = { 'utf-8', 'utf-16' },\n    },\n  },\n  docs = {\n    description = [[\nhttps://sr.ht/~xerool/fennel-ls/\n\nA language server for fennel.\n\nfennel-ls is configured using the closest file to your working directory named `flsproject.fnl`.\nAll fennel-ls configuration options [can be found here](https://git.sr.ht/~xerool/fennel-ls/tree/HEAD/docs/manual.md#configuration).\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/fish_lsp.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'fish-lsp', 'start' },\n    filetypes = { 'fish' },\n    root_dir = function(fname)\n      return util.root_pattern('config.fish')(fname)\n        or vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/ndonfris/fish-lsp\n\nA Language Server Protocol (LSP) tailored for the fish shell.\nThis project aims to enhance the coding experience for fish,\nby introducing a suite of intelligent features like auto-completion,\nscope aware symbol analysis, per-token hover generation, and many others.\n\n[homepage](https://www.fish-lsp.dev/)\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/flow.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'npx', '--no-install', 'flow', 'lsp' },\n    filetypes = { 'javascript', 'javascriptreact' },\n    root_dir = util.root_pattern '.flowconfig',\n  },\n  docs = {\n    description = [[\nhttps://flow.org/\nhttps://github.com/facebook/flow\n\nSee below for how to setup Flow itself.\nhttps://flow.org/en/docs/install/\n\nSee below for lsp command options.\n\n```sh\nnpx flow lsp --help\n```\n    ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/flux_lsp.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'flux-lsp' },\n    filetypes = { 'flux' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/influxdata/flux-lsp\n`flux-lsp` can be installed via `cargo`:\n```sh\ncargo install --git https://github.com/influxdata/flux-lsp\n```\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/foam_ls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'foam-ls', '--stdio' },\n    filetypes = { 'foam', 'OpenFOAM' },\n    root_dir = function(fname)\n      return util.search_ancestors(fname, function(path)\n        if vim.uv.fs_stat(path .. '/system/controlDict') then\n          return path\n        end\n      end)\n    end,\n  },\n  docs = {\n    description = [[\nhttps://github.com/FoamScience/foam-language-server\n\n`foam-language-server` can be installed via `npm`\n```sh\nnpm install -g foam-language-server\n```\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/fortls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = {\n      'fortls',\n      '--notify_init',\n      '--hover_signature',\n      '--hover_language=fortran',\n      '--use_signature_help',\n    },\n    filetypes = { 'fortran' },\n    root_dir = function(fname)\n      return util.root_pattern '.fortls'(fname)\n        or vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    settings = {},\n  },\n  docs = {\n    description = [[\nhttps://fortls.fortran-lang.org/index.html\n\nfortls is a Fortran Language Server, the server can be installed via pip\n\n```sh\npip install fortls\n```\n\nSettings to the server can be passed either through the `cmd` option or through\na local configuration file e.g. `.fortls`. For more information\nsee the `fortls` [documentation](https://fortls.fortran-lang.org/options.html).\n    ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/fsautocomplete.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'fsautocomplete', '--adaptive-lsp-server-enabled' },\n    root_dir = util.root_pattern('*.sln', '*.fsproj', '.git'),\n    filetypes = { 'fsharp' },\n    init_options = {\n      AutomaticWorkspaceInit = true,\n    },\n    -- this recommended settings values taken from  https://github.com/ionide/FsAutoComplete?tab=readme-ov-file#settings\n    settings = {\n      FSharp = {\n        keywordsAutocomplete = true,\n        ExternalAutocomplete = false,\n        Linter = true,\n        UnionCaseStubGeneration = true,\n        UnionCaseStubGenerationBody = 'failwith \"Not Implemented\"',\n        RecordStubGeneration = true,\n        RecordStubGenerationBody = 'failwith \"Not Implemented\"',\n        InterfaceStubGeneration = true,\n        InterfaceStubGenerationObjectIdentifier = 'this',\n        InterfaceStubGenerationMethodBody = 'failwith \"Not Implemented\"',\n        UnusedOpensAnalyzer = true,\n        UnusedDeclarationsAnalyzer = true,\n        UseSdkScripts = true,\n        SimplifyNameAnalyzer = true,\n        ResolveNamespaces = true,\n        EnableReferenceCodeLens = true,\n      },\n    },\n  },\n  docs = {\n    description = [[\nhttps://github.com/fsharp/FsAutoComplete\n\nLanguage Server for F# provided by FsAutoComplete (FSAC).\n\nFsAutoComplete requires the [dotnet-sdk](https://dotnet.microsoft.com/download) to be installed.\n\nThe preferred way to install FsAutoComplete is with `dotnet tool install --global fsautocomplete`.\n\nInstructions to compile from source are found on the main [repository](https://github.com/fsharp/FsAutoComplete).\n\nYou may also need to configure the filetype as Vim defaults to Forth for `*.fs` files:\n\n`autocmd BufNewFile,BufRead *.fs,*.fsx,*.fsi set filetype=fsharp`\n\nThis is automatically done by plugins such as [PhilT/vim-fsharp](https://github.com/PhilT/vim-fsharp), [fsharp/vim-fsharp](https://github.com/fsharp/vim-fsharp), and [adelarsq/neofsharp.vim](https://github.com/adelarsq/neofsharp.vim).\n\n    ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/fsharp_language_server.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'dotnet', 'FSharpLanguageServer.dll' },\n    root_dir = util.root_pattern('*.sln', '*.fsproj', '.git'),\n    filetypes = { 'fsharp' },\n    init_options = {\n      AutomaticWorkspaceInit = true,\n    },\n    settings = {},\n  },\n  docs = {\n    description = [[\nF# Language Server\nhttps://github.com/faldor20/fsharp-language-server\n\nAn implementation of the language server protocol using the F# Compiler Service.\n\nBuild the project from source and override the command path to location of DLL.\n\nIf filetype determination is not already performed by an available plugin ([PhilT/vim-fsharp](https://github.com/PhilT/vim-fsharp), [fsharp/vim-fsharp](https://github.com/fsharp/vim-fsharp), and [adelarsq/neofsharp.vim](https://github.com/adelarsq/neofsharp.vim).\n), then the following must be added to initialization configuration:\n\n\n`autocmd BufNewFile,BufRead *.fs,*.fsx,*.fsi set filetype=fsharp`\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/fstar.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'fstar.exe', '--lsp' },\n    filetypes = { 'fstar' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n  },\n  docs = {\n    description = [[\nhttps://github.com/FStarLang/FStar\n\nLSP support is included in FStar. Make sure `fstar.exe` is in your PATH.\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/futhark_lsp.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'futhark', 'lsp' },\n    filetypes = { 'futhark', 'fut' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/diku-dk/futhark\n\nFuthark Language Server\n\nThis language server comes with the futhark compiler and is run with the command\n```\nfuthark lsp\n```\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/gdscript.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nlocal port = os.getenv 'GDScript_Port' or '6005'\nlocal cmd = vim.lsp.rpc.connect('127.0.0.1', tonumber(port))\n\nreturn {\n  default_config = {\n    cmd = cmd,\n    filetypes = { 'gd', 'gdscript', 'gdscript3' },\n    root_dir = util.root_pattern('project.godot', '.git'),\n  },\n  docs = {\n    description = [[\nhttps://github.com/godotengine/godot\n\nLanguage server for GDScript, used by Godot Engine.\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/gdshader_lsp.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'gdshader-lsp', '--stdio' },\n    filetypes = { 'gdshader', 'gdshaderinc' },\n    root_dir = util.root_pattern 'project.godot',\n  },\n  docs = {\n    description = [[\nhttps://github.com/godofavacyn/gdshader-lsp\n\nA language server for the Godot Shading language.\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/gh_actions_ls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'gh-actions-language-server', '--stdio' },\n    filetypes = { 'yaml' },\n\n    -- Only attach to yaml files that are GitHub workflows instead of all yaml\n    -- files. (A nil root_dir and no single_file_support results in the LSP not\n    -- attaching.) For details, see #3558\n    root_dir = function(filename)\n      local dirs_to_check = {\n        '.github/workflows',\n        '.forgejo/workflows',\n        '.gitea/workflows',\n      }\n\n      local dir = vim.fs.dirname(filename)\n      for _, subdir in ipairs(dirs_to_check) do\n        local match = vim.fs.find(subdir, { path = dir, upward = true })[1]\n        if match and vim.fn.isdirectory(match) == 1 and vim.fs.dirname(filename) == match then\n          return match\n        end\n      end\n\n      return nil\n    end,\n\n    -- Disabling \"single file support\" is a hack to avoid enabling this LS for\n    -- every random yaml file, so `root_dir()` can control the enablement.\n    single_file_support = false,\n\n    capabilities = {\n      workspace = {\n        didChangeWorkspaceFolders = {\n          dynamicRegistration = true,\n        },\n      },\n    },\n  },\n  docs = {\n    description = [[\nhttps://github.com/lttb/gh-actions-language-server\n\nLanguage server for GitHub Actions.\n\nThe projects [forgejo](https://forgejo.org/) and [gitea](https://about.gitea.com/)\ndesign their actions to be as compatible to github as possible\nwith only [a few differences](https://docs.gitea.com/usage/actions/comparison#unsupported-workflows-syntax) between the systems.\nThe `gh_actions_ls` is therefore enabled for those `yaml` files as well.\n\nThe `gh-actions-language-server` can be installed via `npm`:\n\n```sh\nnpm install -g gh-actions-language-server\n```\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/ghcide.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'ghcide', '--lsp' },\n    filetypes = { 'haskell', 'lhaskell' },\n    root_dir = util.root_pattern('stack.yaml', 'hie-bios', 'BUILD.bazel', 'cabal.config', 'package.yaml'),\n  },\n\n  docs = {\n    description = [[\nhttps://github.com/digital-asset/ghcide\n\nA library for building Haskell IDE tooling.\n\"ghcide\" isn't for end users now. Use \"haskell-language-server\" instead of \"ghcide\".\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/ghdl_ls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'ghdl-ls' },\n    filetypes = { 'vhdl' },\n    root_dir = function(fname)\n      return util.root_pattern 'hdl-prj.json'(fname)\n        or vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/ghdl/ghdl-language-server\n\nA language server for VHDL, using ghdl as its backend.\n\n`ghdl-ls` is part of pyghdl, for installation instructions see\n[the upstream README](https://github.com/ghdl/ghdl/tree/master/pyGHDL/lsp).\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/ginko_ls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'ginko_ls' },\n    filetypes = { 'dts' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    settings = {},\n  },\n  docs = {\n    description = [[\n`ginko_ls` is meant to be a feature-complete language server for device-trees.\nLanguage servers can be used in many editors, such as Visual Studio Code, Emacs\nor Vim\n\nInstall `ginko_ls` from https://github.com/Schottkyc137/ginko and add it to path\n\n`ginko_ls` doesn't require any configuration.\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/gitlab_ci_ls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nlocal cache_dir = vim.uv.os_homedir() .. '/.cache/gitlab-ci-ls/'\nreturn {\n  default_config = {\n    cmd = { 'gitlab-ci-ls' },\n    filetypes = { 'yaml.gitlab' },\n    root_dir = util.root_pattern('.git', '.gitlab*'),\n    init_options = {\n      cache_path = cache_dir,\n      log_path = cache_dir .. '/log/gitlab-ci-ls.log',\n    },\n  },\n  docs = {\n    description = [[\nhttps://github.com/alesbrelih/gitlab-ci-ls\n\nLanguage Server for Gitlab CI\n\n`gitlab-ci-ls` can be installed via cargo:\ncargo install gitlab-ci-ls\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/glasgow.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'glasgow' },\n    filetypes = { 'wgsl' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n    settings = {},\n  },\n  docs = {\n    description = [[\nhttps://github.com/nolanderc/glasgow\n\nProvides language features for WGSL (WebGPU Shading Language):\n- Completions:\n    - Local functions/variables/types.\n    - Fields and swizzles.\n    - Builtin types and functions (`dot`, `reflect`, `textureSample`, `vec3`, `mat4x2`, etc.)\n- Hover Documentation:\n    - Function signatures.\n    - Variable types.\n    - Includes builtin types and functions. Text is taken from the WGSL specification.\n- Goto Definition\n- Find all References\n- Rename\n- Formatter\n\n`glasgow` can be installed via `cargo`:\n```sh\ncargo install glasgow\n```\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/gleam.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'gleam', 'lsp' },\n    filetypes = { 'gleam' },\n    root_dir = function(fname)\n      return util.root_pattern('gleam.toml', '.git')(fname)\n    end,\n  },\n  docs = {\n    description = [[\nhttps://github.com/gleam-lang/gleam\n\nA language server for Gleam Programming Language.\n\nIt comes with the Gleam compiler, for installation see: [Installing Gleam](https://gleam.run/getting-started/installing/)\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/glint.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'glint-language-server' },\n    on_new_config = function(config, new_root_dir)\n      local project_root = vim.fs.dirname(vim.fs.find('node_modules', { path = new_root_dir, upward = true })[1])\n      -- Glint should not be installed globally.\n      local node_bin_path = project_root .. '/node_modules/.bin'\n      local path = node_bin_path .. (vim.fn.has('win32') == 1 and ';' or ':') .. vim.env.PATH\n      if config.cmd_env then\n        config.cmd_env.PATH = path\n      else\n        config.cmd_env = { PATH = path }\n      end\n    end,\n    filetypes = {\n      'html.handlebars',\n      'handlebars',\n      'typescript',\n      'typescript.glimmer',\n      'javascript',\n      'javascript.glimmer',\n    },\n    root_dir = util.root_pattern(\n      '.glintrc.yml',\n      '.glintrc',\n      '.glintrc.json',\n      '.glintrc.js',\n      'glint.config.js',\n      'package.json'\n    ),\n  },\n  docs = {\n    description = [[\n  https://github.com/typed-ember/glint\n\n  https://typed-ember.gitbook.io/glint/\n\n  `glint-language-server` is installed when adding `@glint/core` to your project's devDependencies:\n\n  ```sh\n  npm install @glint/core --save-dev\n  ```\n\n  or\n\n  ```sh\n  yarn add -D @glint/core\n  ```\n\n  or\n\n  ```sh\n  pnpm add -D @glint/core\n  ```\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/glsl_analyzer.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'glsl_analyzer' },\n    filetypes = { 'glsl', 'vert', 'tesc', 'tese', 'frag', 'geom', 'comp' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n    capabilities = {},\n  },\n  docs = {\n    description = [[\nhttps://github.com/nolanderc/glsl_analyzer\n\nLanguage server for GLSL\n    ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/glslls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'glslls', '--stdin' },\n    filetypes = { 'glsl', 'vert', 'tesc', 'tese', 'frag', 'geom', 'comp' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n    capabilities = {\n      textDocument = {\n        completion = {\n          editsNearCursor = true,\n        },\n      },\n      offsetEncoding = { 'utf-8', 'utf-16' },\n    },\n  },\n  docs = {\n    description = [[\nhttps://github.com/svenstaro/glsl-language-server\n\nLanguage server implementation for GLSL\n\n`glslls` can be compiled and installed manually, or, if your distribution has access to the AUR,\nvia the `glsl-language-server` AUR package\n    ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/golangci_lint_ls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'golangci-lint-langserver' },\n    filetypes = { 'go', 'gomod' },\n    init_options = {\n      command = {\n        'golangci-lint',\n        'run',\n        -- disable all output formats that might be enabled by the users .golangci.yml\n        '--output.text.path=',\n        '--output.tab.path=',\n        '--output.html.path=',\n        '--output.checkstyle.path=',\n        '--output.junit-xml.path=',\n        '--output.teamcity.path=',\n        '--output.sarif.path=',\n        -- disable stats output\n        '--show-stats=false',\n        -- enable JSON output to be used by the language server\n        '--output.json.path=stdout',\n      },\n    },\n    root_dir = function(fname)\n      return util.root_pattern(\n        '.golangci.yml',\n        '.golangci.yaml',\n        '.golangci.toml',\n        '.golangci.json',\n        'go.work',\n        'go.mod',\n        '.git'\n      )(fname)\n    end,\n    before_init = function(_, config)\n      -- Add support for golangci-lint V1 (in V2 `--out-format=json` was replaced by\n      -- `--output.json.path=stdout`).\n      local v1, v2 = false, false\n      -- PERF: `golangci-lint version` is very slow (about 0.1 sec) so let's find\n      -- version using `go version -m $(which golangci-lint) | grep '^\\smod'`.\n      if vim.fn.executable 'go' == 1 then\n        local exe = vim.fn.exepath 'golangci-lint'\n        local version = vim.system({ 'go', 'version', '-m', exe }):wait()\n        v1 = string.match(version.stdout, '\\tmod\\tgithub.com/golangci/golangci%-lint\\t')\n        v2 = string.match(version.stdout, '\\tmod\\tgithub.com/golangci/golangci%-lint/v2\\t')\n      end\n      if not v1 and not v2 then\n        local version = vim.system({ 'golangci-lint', 'version' }):wait()\n        v1 = string.match(version.stdout, 'version v?1%.')\n      end\n      if v1 then\n        config.init_options.command = { 'golangci-lint', 'run', '--out-format', 'json' }\n      end\n    end,\n  },\n  docs = {\n    description = [[\nCombination of both lint server and client\n\nhttps://github.com/nametake/golangci-lint-langserver\nhttps://github.com/golangci/golangci-lint\n\n\nInstallation of binaries needed is done via\n\n```\ngo install github.com/nametake/golangci-lint-langserver@latest\ngo install github.com/golangci/golangci-lint/cmd/golangci-lint@latest\n```\n\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/gopls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\nlocal async = require 'lspconfig.async'\nlocal mod_cache = nil\n\nreturn {\n  default_config = {\n    cmd = { 'gopls' },\n    filetypes = { 'go', 'gomod', 'gowork', 'gotmpl' },\n    root_dir = function(fname)\n      -- see: https://github.com/neovim/nvim-lspconfig/issues/804\n      if not mod_cache then\n        local result = async.run_command { 'go', 'env', 'GOMODCACHE' }\n        if result and result[1] then\n          mod_cache = vim.trim(result[1])\n        else\n          mod_cache = vim.fn.system 'go env GOMODCACHE'\n        end\n      end\n      if mod_cache and fname:sub(1, #mod_cache) == mod_cache then\n        local clients = vim.lsp.get_clients { name = 'gopls' }\n        if #clients > 0 then\n          return clients[#clients].config.root_dir\n        end\n      end\n      return util.root_pattern('go.work', 'go.mod', '.git')(fname)\n    end,\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/golang/tools/tree/master/gopls\n\nGoogle's lsp server for golang.\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/gradle_ls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nlocal bin_name = 'gradle-language-server'\nif vim.fn.has 'win32' == 1 then\n  bin_name = bin_name .. '.bat'\nend\n\nreturn {\n  default_config = {\n    filetypes = { 'groovy' },\n    root_dir = util.root_pattern(\n      'settings.gradle', -- Gradle (multi-project)\n      'build.gradle' -- Gradle\n    ),\n    cmd = { bin_name },\n    -- gradle-language-server expects init_options.settings to be defined\n    init_options = {\n      settings = {\n        gradleWrapperEnabled = true,\n      },\n    },\n  },\n  docs = {\n    description = [[\nhttps://github.com/microsoft/vscode-gradle\n\nMicrosoft's lsp server for gradle files\n\nIf you're setting this up manually, build vscode-gradle using `./gradlew installDist` and point `cmd` to the `gradle-language-server` generated in the build directory\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/grammarly.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'grammarly-languageserver', '--stdio' },\n    filetypes = { 'markdown' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n    handlers = {\n      ['$/updateDocumentState'] = function()\n        return ''\n      end,\n    },\n    init_options = {\n      clientId = 'client_BaDkMgx4X19X9UxxYRCXZo',\n    },\n  },\n  docs = {\n    description = [[\nhttps://github.com/znck/grammarly\n\n`grammarly-languageserver` can be installed via `npm`:\n\n```sh\nnpm i -g grammarly-languageserver\n```\n\nWARNING: Since this language server uses Grammarly's API, any document you open with it running is shared with them. Please evaluate their [privacy policy](https://www.grammarly.com/privacy-policy) before using this.\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/graphql.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'graphql-lsp', 'server', '-m', 'stream' },\n    filetypes = { 'graphql', 'typescriptreact', 'javascriptreact' },\n    root_dir = util.root_pattern('.graphqlrc*', '.graphql.config.*', 'graphql.config.*'),\n  },\n\n  docs = {\n    description = [[\nhttps://github.com/graphql/graphiql/tree/main/packages/graphql-language-service-cli\n\n`graphql-lsp` can be installed via `npm`:\n\n```sh\nnpm install -g graphql-language-service-cli\n```\n\nNote that you must also have [the graphql package](https://github.com/graphql/graphql-js) installed within your project and create a [GraphQL config file](https://the-guild.dev/graphql/config/docs).\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/groovyls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = {\n      'java',\n      '-jar',\n      'groovy-language-server-all.jar',\n    },\n    filetypes = { 'groovy' },\n    root_dir = function(fname)\n      return util.root_pattern 'Jenkinsfile'(fname)\n        or vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n  },\n  docs = {\n    description = [[\nhttps://github.com/prominic/groovy-language-server.git\n\nRequirements:\n - Linux/macOS (for now)\n - Java 11+\n\n`groovyls` can be installed by following the instructions [here](https://github.com/prominic/groovy-language-server.git#build).\n\nIf you have installed groovy language server, you can set the `cmd` custom path as follow:\n\n```lua\nrequire'lspconfig'.groovyls.setup{\n    -- Unix\n    cmd = { \"java\", \"-jar\", \"path/to/groovyls/groovy-language-server-all.jar\" },\n    ...\n}\n```\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/guile_ls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\nreturn {\n  default_config = {\n    cmd = { 'guile-lsp-server' },\n    filetypes = {\n      'scheme.guile',\n    },\n    root_dir = function(fname)\n      return util.root_pattern 'guix.scm'(fname)\n        or vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://codeberg.org/rgherdt/scheme-lsp-server\n\nThe recommended way is to install guile-lsp-server is using Guix. Unfortunately it is still not available at the official Guix channels, but you can use the provided channel guix.scm in the repo:\n```sh\nguix package -f guix.scm\n```\n\nCheckout the repo for more info.\n\nNote: This LSP will start on `scheme.guile` filetype. You can set this file type using `:help modeline` or adding https://gitlab.com/HiPhish/guile.vim to your plugins to automatically set it.\n    ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/harper_ls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'harper-ls', '--stdio' },\n    filetypes = {\n      'c',\n      'cpp',\n      'cs',\n      'gitcommit',\n      'go',\n      'html',\n      'java',\n      'javascript',\n      'lua',\n      'markdown',\n      'nix',\n      'python',\n      'ruby',\n      'rust',\n      'swift',\n      'toml',\n      'typescript',\n      'typescriptreact',\n      'haskell',\n      'cmake',\n      'typst',\n      'php',\n      'dart',\n      'clojure',\n    },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/automattic/harper\n\nThe language server for Harper, the slim, clean language checker for developers.\n\nSee our [documentation](https://writewithharper.com/docs/integrations/neovim) for more information on settings.\n\nIn short, they should look something like this:\n```lua\nlspconfig.harper_ls.setup {\n  settings = {\n    [\"harper-ls\"] = {\n      userDictPath = \"~/dict.txt\"\n    }\n  },\n}\n```\n    ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/haxe_language_server.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nlocal function find_hxml(path)\n  return vim.fs.find(function(name)\n    return name:match '.hxml$'\n  end, { path = path, type = 'file' })\nend\n\nreturn {\n  default_config = {\n    cmd = { 'haxe-language-server' },\n    filetypes = { 'haxe' },\n    root_dir = util.root_pattern('*.hxml', '.git'),\n    settings = {\n      haxe = {\n        executable = 'haxe',\n      },\n    },\n    -- Default value is set by on_new_config.\n    init_options = {},\n    on_new_config = function(new_config, new_root_dir)\n      if new_config.init_options.displayArguments then\n        return\n      end\n\n      local hxml = find_hxml(new_root_dir)[1]\n      if hxml then\n        vim.notify('Using HXML: ' .. hxml)\n        new_config.init_options.displayArguments = { hxml }\n      end\n    end,\n  },\n  docs = {\n    description = [[\nhttps://github.com/vshaxe/haxe-language-server\n\nThe Haxe language server can be built by running the following commands from\nthe project's root directory:\n\n    npm install\n    npx lix run vshaxe-build -t language-server\n\nThis will create `bin/server.js`. Note that the server requires Haxe 3.4.0 or\nhigher.\n\nAfter building the language server, set the `cmd` setting in your setup\nfunction:\n\n```lua\nlspconfig.haxe_language_server.setup({\n  cmd = {\"node\", \"path/to/bin/server.js\"},\n})\n```\n\nBy default, the language server is configured with the HXML compiler arguments\ncontained in the first `.hxml` file found in your project's root directory.\nIf you want to specify which one to use, set the `init_options.displayArguments`\nsetting:\n\n```lua\nlspconfig.haxe_language_server.setup({\n  -- ...\n  init_options = {\n    displayArguments = { \"build.hxml\" },\n  },\n})\n```\n\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/hdl_checker.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'hdl_checker', '--lsp' },\n    filetypes = { 'vhdl', 'verilog', 'systemverilog' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/suoto/hdl_checker\nLanguage server for hdl-checker.\nInstall using: `pip install hdl-checker --upgrade`\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/helm_ls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'helm_ls', 'serve' },\n    filetypes = { 'helm', 'yaml.helm-values' },\n    root_dir = util.root_pattern 'Chart.yaml',\n    single_file_support = true,\n    capabilities = {\n      workspace = {\n        didChangeWatchedFiles = {\n          dynamicRegistration = true,\n        },\n      },\n    },\n  },\n  docs = {\n    description = [[\nhttps://github.com/mrjosh/helm-ls\n\nHelm Language server. (This LSP is in early development)\n\n`helm Language server` can be installed by following the instructions [here](https://github.com/mrjosh/helm-ls).\n\nThe default `cmd` assumes that the `helm_ls` binary can be found in `$PATH`.\n\nIf need Helm file highlight use [vim-helm](https://github.com/towolf/vim-helm) plugin.\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/hhvm.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'hh_client', 'lsp' },\n    filetypes = { 'php', 'hack' },\n    root_dir = util.root_pattern '.hhconfig',\n  },\n  docs = {\n    description = [[\nLanguage server for programs written in Hack\nhttps://hhvm.com/\nhttps://github.com/facebook/hhvm\nSee below for how to setup HHVM & typechecker:\nhttps://docs.hhvm.com/hhvm/getting-started/getting-started\n    ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/hie.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'hie-wrapper', '--lsp' },\n    filetypes = { 'haskell' },\n    root_dir = util.root_pattern('stack.yaml', 'package.yaml', '.git'),\n  },\n\n  docs = {\n    description = [[\nhttps://github.com/haskell/haskell-ide-engine\n\nthe following init_options are supported (see https://github.com/haskell/haskell-ide-engine#configuration):\n```lua\ninit_options = {\n  languageServerHaskell = {\n    hlintOn = bool;\n    maxNumberOfProblems = number;\n    diagnosticsDebounceDuration = number;\n    liquidOn = bool (default false);\n    completionSnippetsOn = bool (default true);\n    formatOnImportOn = bool (default true);\n    formattingProvider = string (default \"brittany\", alternate \"floskell\");\n  }\n}\n```\n        ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/hlasm.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'hlasm_language_server' },\n    filetypes = { 'hlasm' },\n    root_dir = util.root_pattern '.hlasmplugin',\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\n    `hlasm_language_server` is a language server for the High Level Assembler language used on IBM SystemZ mainframes.\n\n    To learn how to configure the HLASM language server, see the [HLASM Language Support documentation](https://github.com/eclipse-che4z/che-che4z-lsp-for-hlasm).\n    ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/hls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'haskell-language-server-wrapper', '--lsp' },\n    filetypes = { 'haskell', 'lhaskell' },\n    root_dir = util.root_pattern('hie.yaml', 'stack.yaml', 'cabal.project', '*.cabal', 'package.yaml'),\n    single_file_support = true,\n    settings = {\n      haskell = {\n        formattingProvider = 'ormolu',\n        cabalFormattingProvider = 'cabalfmt',\n      },\n    },\n  },\n\n  docs = {\n    description = [[\nhttps://github.com/haskell/haskell-language-server\n\nHaskell Language Server\n\nIf you are using HLS 1.9.0.0, enable the language server to launch on Cabal files as well:\n\n```lua\nrequire('lspconfig')['hls'].setup{\n  filetypes = { 'haskell', 'lhaskell', 'cabal' },\n}\n```\n    ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/hoon_ls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'hoon-language-server' },\n    filetypes = { 'hoon' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/urbit/hoon-language-server\n\nA language server for Hoon.\n\nThe language server can be installed via `npm install -g @hoon-language-server`\n\nStart a fake ~zod with `urbit -F zod`.\nStart the language server at the Urbit Dojo prompt with: `|start %language-server`\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/html.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'vscode-html-language-server', '--stdio' },\n    filetypes = { 'html', 'templ' },\n    root_dir = util.root_pattern('package.json', '.git'),\n    single_file_support = true,\n    settings = {},\n    init_options = {\n      provideFormatter = true,\n      embeddedLanguages = { css = true, javascript = true },\n      configurationSection = { 'html', 'css', 'javascript' },\n    },\n  },\n  docs = {\n    description = [[\nhttps://github.com/hrsh7th/vscode-langservers-extracted\n\n`vscode-html-language-server` can be installed via `npm`:\n```sh\nnpm i -g vscode-langservers-extracted\n```\n\nNeovim does not currently include built-in snippets. `vscode-html-language-server` only provides completions when snippet support is enabled.\nTo enable completion, install a snippet plugin and add the following override to your language client capabilities during setup.\n\nThe code-formatting feature of the lsp can be controlled with the `provideFormatter` option.\n\n```lua\n--Enable (broadcasting) snippet capability for completion\nlocal capabilities = vim.lsp.protocol.make_client_capabilities()\ncapabilities.textDocument.completion.completionItem.snippetSupport = true\n\nrequire'lspconfig'.html.setup {\n  capabilities = capabilities,\n}\n```\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/htmx.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'htmx-lsp' },\n    filetypes = { -- filetypes copied and adjusted from tailwindcss-intellisense\n      -- html\n      'aspnetcorerazor',\n      'astro',\n      'astro-markdown',\n      'blade',\n      'clojure',\n      'django-html',\n      'htmldjango',\n      'edge',\n      'eelixir', -- vim ft\n      'elixir',\n      'ejs',\n      'erb',\n      'eruby', -- vim ft\n      'gohtml',\n      'gohtmltmpl',\n      'haml',\n      'handlebars',\n      'hbs',\n      'html',\n      'htmlangular',\n      'html-eex',\n      'heex',\n      'jade',\n      'leaf',\n      'liquid',\n      'markdown',\n      'mdx',\n      'mustache',\n      'njk',\n      'nunjucks',\n      'php',\n      'razor',\n      'slim',\n      'twig',\n      -- js\n      'javascript',\n      'javascriptreact',\n      'reason',\n      'rescript',\n      'typescript',\n      'typescriptreact',\n      -- mixed\n      'vue',\n      'svelte',\n      'templ',\n    },\n    single_file_support = true,\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n  },\n  docs = {\n    description = [[\nhttps://github.com/ThePrimeagen/htmx-lsp\n\n`htmx-lsp` can be installed via `cargo`:\n```sh\ncargo install htmx-lsp\n```\n\nLsp is still very much work in progress and experimental. Use at your own risk.\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/hydra_lsp.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'hydra-lsp' },\n    filetypes = { 'yaml' },\n    root_dir = util.root_pattern '.git',\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/Retsediv/hydra-lsp\n\nLSP for Hydra Python package config files.\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/hyprls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'hyprls', '--stdio' },\n    filetypes = { 'hyprlang' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/hyprland-community/hyprls\n\n`hyprls` can be installed via `go`:\n```sh\ngo install github.com/ewen-lbh/hyprls/cmd/hyprls@latest\n```\n\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/idris2_lsp.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'idris2-lsp' },\n    filetypes = { 'idris2' },\n    root_dir = util.root_pattern '*.ipkg',\n  },\n  docs = {\n    description = [[\nhttps://github.com/idris-community/idris2-lsp\n\nThe Idris 2 language server.\n\nPlugins for the Idris 2 filetype include\n[Idris2-Vim](https://github.com/edwinb/idris2-vim) (fewer features, stable) and\n[Nvim-Idris2](https://github.com/ShinKage/nvim-idris2) (cutting-edge,\nexperimental).\n\nIdris2-Lsp requires a build of Idris 2 that includes the \"Idris 2 API\" package.\nPackage managers with known support for this build include the\n[AUR](https://aur.archlinux.org/packages/idris2/) and\n[Homebrew](https://formulae.brew.sh/formula/idris2#default).\n\nIf your package manager does not support the Idris 2 API, you will need to build\nIdris 2 from source. Refer to the\n[the Idris 2 installation instructions](https://github.com/idris-lang/Idris2/blob/main/INSTALL.md)\nfor details.  Steps 5 and 8 are listed as \"optional\" in that guide, but they are\nnecessary in order to make the Idris 2 API available.\n\nYou need to install a version of Idris2-Lsp that is compatible with your\nversion of Idris 2. There should be a branch corresponding to every released\nIdris 2 version after v0.4.0. Use the latest commit on that branch. For example,\nif you have Idris v0.5.1, you should use the v0.5.1 branch of Idris2-Lsp.\n\nIf your Idris 2 version is newer than the newest Idris2-Lsp branch, use the\nlatest commit on the `master` branch, and set a reminder to check the Idris2-Lsp\nrepo for the release of a compatible versioned branch.\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/intelephense.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'intelephense', '--stdio' },\n    filetypes = { 'php' },\n    root_dir = function(pattern)\n      local cwd = vim.uv.cwd()\n      local root = util.root_pattern('composer.json', '.git')(pattern)\n\n      -- prefer cwd if root is a descendant\n      return util.path.is_descendant(cwd, root) and cwd or root\n    end,\n  },\n  docs = {\n    description = [[\nhttps://intelephense.com/\n\n`intelephense` can be installed via `npm`:\n```sh\nnpm install -g intelephense\n```\n\n```lua\n-- See https://github.com/bmewburn/intelephense-docs/blob/master/installation.md#initialisation-options\ninit_options = {\n  storagePath = …, -- Optional absolute path to storage dir. Defaults to os.tmpdir().\n  globalStoragePath = …, -- Optional absolute path to a global storage dir. Defaults to os.homedir().\n  licenceKey = …, -- Optional licence key or absolute path to a text file containing the licence key.\n  clearCache = …, -- Optional flag to clear server state. State can also be cleared by deleting {storagePath}/intelephense\n}\n-- See https://github.com/bmewburn/intelephense-docs\nsettings = {\n  intelephense = {\n    files = {\n      maxSize = 1000000;\n    };\n  };\n}\n```\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/janet_lsp.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = {\n      'janet-lsp',\n      '--stdio',\n    },\n    filetypes = { 'janet' },\n    root_dir = function(fname)\n      return util.root_pattern('project.janet')(fname)\n        or vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/CFiggers/janet-lsp\n\nA Language Server Protocol implementation for Janet.\n]],\n    root_dir = [[root_pattern(\"project.janet\", \".git\")]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/java_language_server.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    filetypes = { 'java' },\n    root_dir = util.root_pattern('build.gradle', 'build.gradle.kts', 'pom.xml', '.git'),\n    settings = {},\n  },\n  docs = {\n    description = [[\nhttps://github.com/georgewfraser/java-language-server\n\nJava language server\n\nPoint `cmd` to `lang_server_linux.sh` or the equivalent script for macOS/Windows provided by java-language-server\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/jdtls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\nlocal handlers = require 'vim.lsp.handlers'\n\nlocal env = {\n  HOME = vim.uv.os_homedir(),\n  XDG_CACHE_HOME = os.getenv 'XDG_CACHE_HOME',\n  JDTLS_JVM_ARGS = os.getenv 'JDTLS_JVM_ARGS',\n}\n\nlocal function get_cache_dir()\n  return env.XDG_CACHE_HOME and env.XDG_CACHE_HOME or env.HOME .. '/.cache'\nend\n\nlocal function get_jdtls_cache_dir()\n  return get_cache_dir() .. '/jdtls'\nend\n\nlocal function get_jdtls_config_dir()\n  return get_jdtls_cache_dir() .. '/config'\nend\n\nlocal function get_jdtls_workspace_dir()\n  return get_jdtls_cache_dir() .. '/workspace'\nend\n\nlocal function get_jdtls_jvm_args()\n  local args = {}\n  for a in string.gmatch((env.JDTLS_JVM_ARGS or ''), '%S+') do\n    local arg = string.format('--jvm-arg=%s', a)\n    table.insert(args, arg)\n  end\n  return unpack(args)\nend\n\n-- TextDocument version is reported as 0, override with nil so that\n-- the client doesn't think the document is newer and refuses to update\n-- See: https://github.com/eclipse/eclipse.jdt.ls/issues/1695\nlocal function fix_zero_version(workspace_edit)\n  if workspace_edit and workspace_edit.documentChanges then\n    for _, change in pairs(workspace_edit.documentChanges) do\n      local text_document = change.textDocument\n      if text_document and text_document.version and text_document.version == 0 then\n        text_document.version = nil\n      end\n    end\n  end\n  return workspace_edit\nend\n\nlocal function on_textdocument_codeaction(err, actions, ctx)\n  for _, action in ipairs(actions) do\n    -- TODO: (steelsojka) Handle more than one edit?\n    if action.command == 'java.apply.workspaceEdit' then -- 'action' is Command in java format\n      action.edit = fix_zero_version(action.edit or action.arguments[1])\n    elseif type(action.command) == 'table' and action.command.command == 'java.apply.workspaceEdit' then -- 'action' is CodeAction in java format\n      action.edit = fix_zero_version(action.edit or action.command.arguments[1])\n    end\n  end\n\n  handlers[ctx.method](err, actions, ctx)\nend\n\nlocal function on_textdocument_rename(err, workspace_edit, ctx)\n  handlers[ctx.method](err, fix_zero_version(workspace_edit), ctx)\nend\n\nlocal function on_workspace_applyedit(err, workspace_edit, ctx)\n  handlers[ctx.method](err, fix_zero_version(workspace_edit), ctx)\nend\n\n-- Non-standard notification that can be used to display progress\nlocal function on_language_status(_, result)\n  local command = vim.api.nvim_command\n  command 'echohl ModeMsg'\n  command(string.format('echo \"%s\"', result.message))\n  command 'echohl None'\nend\n\nreturn {\n  default_config = {\n    cmd = {\n      'jdtls',\n      '-configuration',\n      get_jdtls_config_dir(),\n      '-data',\n      get_jdtls_workspace_dir(),\n      get_jdtls_jvm_args(),\n    },\n    filetypes = { 'java' },\n    root_dir = function(fname)\n      local root_files = {\n        -- Multi-module projects\n        { '.git', 'build.gradle', 'build.gradle.kts' },\n        -- Single-module projects\n        {\n          'build.xml', -- Ant\n          'pom.xml', -- Maven\n          'settings.gradle', -- Gradle\n          'settings.gradle.kts', -- Gradle\n        },\n      }\n      for _, patterns in ipairs(root_files) do\n        local root = util.root_pattern(unpack(patterns))(fname)\n        if root then\n          return root\n        end\n      end\n    end,\n    single_file_support = true,\n    init_options = {\n      workspace = get_jdtls_workspace_dir(),\n      jvm_args = {},\n      os_config = nil,\n    },\n    handlers = {\n      -- Due to an invalid protocol implementation in the jdtls we have to conform these to be spec compliant.\n      -- https://github.com/eclipse/eclipse.jdt.ls/issues/376\n      ['textDocument/codeAction'] = on_textdocument_codeaction,\n      ['textDocument/rename'] = on_textdocument_rename,\n      ['workspace/applyEdit'] = on_workspace_applyedit,\n      ['language/status'] = vim.schedule_wrap(on_language_status),\n    },\n  },\n  docs = {\n    description = [[\nhttps://projects.eclipse.org/projects/eclipse.jdt.ls\n\nLanguage server for Java.\n\nIMPORTANT: If you want all the features jdtls has to offer, [nvim-jdtls](https://github.com/mfussenegger/nvim-jdtls)\nis highly recommended. If all you need is diagnostics, completion, imports, gotos and formatting and some code actions\nyou can keep reading here.\n\nFor manual installation you can download precompiled binaries from the\n[official downloads site](http://download.eclipse.org/jdtls/snapshots/?d)\nand ensure that the `PATH` variable contains the `bin` directory of the extracted archive.\n\n```lua\n  -- init.lua\n  require'lspconfig'.jdtls.setup{}\n```\n\nYou can also pass extra custom jvm arguments with the JDTLS_JVM_ARGS environment variable as a space separated list of arguments,\nthat will be converted to multiple --jvm-arg=<param> args when passed to the jdtls script. This will allow for example tweaking\nthe jvm arguments or integration with external tools like lombok:\n\n```sh\nexport JDTLS_JVM_ARGS=\"-javaagent:$HOME/.local/share/java/lombok.jar\"\n```\n\nFor automatic installation you can use the following unofficial installers/launchers under your own risk:\n  - [jdtls-launcher](https://github.com/eruizc-dev/jdtls-launcher) (Includes lombok support by default)\n    ```lua\n      -- init.lua\n      require'lspconfig'.jdtls.setup{ cmd = { 'jdtls' } }\n    ```\n    ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/jedi_language_server.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nlocal root_files = {\n  'pyproject.toml',\n  'setup.py',\n  'setup.cfg',\n  'requirements.txt',\n  'Pipfile',\n  '.git',\n}\n\nreturn {\n  default_config = {\n    cmd = { 'jedi-language-server' },\n    filetypes = { 'python' },\n    root_dir = util.root_pattern(unpack(root_files)),\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/pappasam/jedi-language-server\n\n`jedi-language-server`, a language server for Python, built on top of jedi\n    ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/jinja_lsp.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    name = 'jinja_lsp',\n    cmd = { 'jinja-lsp' },\n    filetypes = { 'jinja' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\njinja-lsp enhances minijinja development experience by providing Helix/Nvim users with advanced features such as autocomplete, syntax highlighting, hover, goto definition, code actions and linting.\n\nThe file types are not detected automatically, you can register them manually (see below) or override the filetypes:\n\n```lua\nvim.filetype.add {\n  extension = {\n    jinja = 'jinja',\n    jinja2 = 'jinja',\n    j2 = 'jinja',\n  },\n}\n```\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/jqls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'jq-lsp' },\n    filetypes = { 'jq' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n  },\n  docs = {\n    description = [=[\nhttps://github.com/wader/jq-lsp\nLanguage server for jq, written using Go.\nYou can install the server easily using go install:\n```sh\n# install directly\ngo install github.com/wader/jq-lsp@master\n# copy binary to $PATH\ncp $(go env GOPATH)/bin/jq-lsp /usr/local/bin\n```\nNote: To activate properly nvim needs to know the jq filetype.\nYou can add it via:\n```lua\nvim.cmd([[au BufRead,BufNewFile *.jq setfiletype jq]])\n```\n]=],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/jsonls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'vscode-json-language-server', '--stdio' },\n    filetypes = { 'json', 'jsonc' },\n    init_options = {\n      provideFormatter = true,\n    },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n  },\n  docs = {\n    -- this language server config is in VSCode built-in package.json\n    description = [[\nhttps://github.com/hrsh7th/vscode-langservers-extracted\n\nvscode-json-language-server, a language server for JSON and JSON schema\n\n`vscode-json-language-server` can be installed via `npm`:\n```sh\nnpm i -g vscode-langservers-extracted\n```\n\n`vscode-json-language-server` only provides completions when snippet support is enabled. If you use Neovim older than v0.10 you need to enable completion, install a snippet plugin and add the following override to your language client capabilities during setup.\n\n```lua\n--Enable (broadcasting) snippet capability for completion\nlocal capabilities = vim.lsp.protocol.make_client_capabilities()\ncapabilities.textDocument.completion.completionItem.snippetSupport = true\n\nrequire'lspconfig'.jsonls.setup {\n  capabilities = capabilities,\n}\n```\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/jsonnet_ls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\n-- common jsonnet library paths\nlocal function jsonnet_path(root_dir)\n  local paths = {\n    root_dir .. '/lib',\n    root_dir .. '/vendor',\n  }\n  return table.concat(paths, ':')\nend\n\nreturn {\n  default_config = {\n    cmd = { 'jsonnet-language-server' },\n    filetypes = { 'jsonnet', 'libsonnet' },\n    single_file_support = true,\n    root_dir = function(fname)\n      return util.root_pattern 'jsonnetfile.json'(fname)\n        or vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    on_new_config = function(new_config, root_dir)\n      if not new_config.cmd_env then\n        new_config.cmd_env = {}\n      end\n      if not new_config.cmd_env.JSONNET_PATH then\n        new_config.cmd_env.JSONNET_PATH = jsonnet_path(root_dir)\n      end\n    end,\n  },\n  docs = {\n    description = [[\nhttps://github.com/grafana/jsonnet-language-server\n\nA Language Server Protocol (LSP) server for Jsonnet.\n\nThe language server can be installed with `go`:\n```sh\ngo install github.com/grafana/jsonnet-language-server@latest\n```\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/julials.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nlocal root_files = { 'Project.toml', 'JuliaProject.toml' }\n\nlocal function activate_env(path)\n  assert(vim.fn.has 'nvim-0.10' == 1, 'requires Nvim 0.10 or newer')\n  local bufnr = vim.api.nvim_get_current_buf()\n  local julials_clients = vim.lsp.get_clients { bufnr = bufnr, name = 'julials' }\n  assert(\n    #julials_clients > 0,\n    'method julia/activateenvironment is not supported by any servers active on the current buffer'\n  )\n  local function _activate_env(environment)\n    if environment then\n      for _, julials_client in ipairs(julials_clients) do\n        julials_client.notify('julia/activateenvironment', { envPath = environment })\n      end\n      vim.notify('Julia environment activated: \\n`' .. environment .. '`', vim.log.levels.INFO)\n    end\n  end\n  if path then\n    path = vim.fs.normalize(vim.fn.fnamemodify(vim.fn.expand(path), ':p'))\n    local found_env = false\n    for _, project_file in ipairs(root_files) do\n      local file = vim.uv.fs_stat(vim.fs.joinpath(path, project_file))\n      if file and file.type then\n        found_env = true\n        break\n      end\n    end\n    if not found_env then\n      vim.notify('Path is not a julia environment: \\n`' .. path .. '`', vim.log.levels.WARN)\n      return\n    end\n    _activate_env(path)\n  else\n    local depot_paths = vim.env.JULIA_DEPOT_PATH\n        and vim.split(vim.env.JULIA_DEPOT_PATH, vim.fn.has 'win32' == 1 and ';' or ':')\n      or { vim.fn.expand '~/.julia' }\n    local environments = {}\n    vim.list_extend(environments, vim.fs.find(root_files, { type = 'file', upward = true, limit = math.huge }))\n    for _, depot_path in ipairs(depot_paths) do\n      local depot_env = vim.fs.joinpath(vim.fs.normalize(depot_path), 'environments')\n      vim.list_extend(\n        environments,\n        vim.fs.find(function(name, env_path)\n          return vim.tbl_contains(root_files, name) and string.sub(env_path, #depot_env + 1):match '^/[^/]*$'\n        end, { path = depot_env, type = 'file', limit = math.huge })\n      )\n    end\n    environments = vim.tbl_map(vim.fs.dirname, environments)\n    vim.ui.select(environments, { prompt = 'Select a Julia environment' }, _activate_env)\n  end\nend\n\nlocal cmd = {\n  'julia',\n  '--startup-file=no',\n  '--history-file=no',\n  '-e',\n  [[\n    # Load LanguageServer.jl: attempt to load from ~/.julia/environments/nvim-lspconfig\n    # with the regular load path as a fallback\n    ls_install_path = joinpath(\n        get(DEPOT_PATH, 1, joinpath(homedir(), \".julia\")),\n        \"environments\", \"nvim-lspconfig\"\n    )\n    pushfirst!(LOAD_PATH, ls_install_path)\n    using LanguageServer\n    popfirst!(LOAD_PATH)\n    depot_path = get(ENV, \"JULIA_DEPOT_PATH\", \"\")\n    project_path = let\n        dirname(something(\n            ## 1. Finds an explicitly set project (JULIA_PROJECT)\n            Base.load_path_expand((\n                p = get(ENV, \"JULIA_PROJECT\", nothing);\n                p === nothing ? nothing : isempty(p) ? nothing : p\n            )),\n            ## 2. Look for a Project.toml file in the current working directory,\n            ##    or parent directories, with $HOME as an upper boundary\n            Base.current_project(),\n            ## 3. First entry in the load path\n            get(Base.load_path(), 1, nothing),\n            ## 4. Fallback to default global environment,\n            ##    this is more or less unreachable\n            Base.load_path_expand(\"@v#.#\"),\n        ))\n    end\n    @info \"Running language server\" VERSION pwd() project_path depot_path\n    server = LanguageServer.LanguageServerInstance(stdin, stdout, project_path, depot_path)\n    server.runlinter = true\n    run(server)\n  ]],\n}\n\nreturn {\n  default_config = {\n    cmd = cmd,\n    filetypes = { 'julia' },\n    root_dir = function(fname)\n      return util.root_pattern(unpack(root_files))(fname)\n        or vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n  },\n  commands = {\n    JuliaActivateEnv = {\n      activate_env,\n      description = 'Activate a Julia environment',\n      nargs = '?',\n      complete = 'file',\n    },\n  },\n  docs = {\n    description = [[\nhttps://github.com/julia-vscode/julia-vscode\n\nLanguageServer.jl can be installed with `julia` and `Pkg`:\n```sh\njulia --project=~/.julia/environments/nvim-lspconfig -e 'using Pkg; Pkg.add(\"LanguageServer\")'\n```\nwhere `~/.julia/environments/nvim-lspconfig` is the location where\nthe default configuration expects LanguageServer.jl to be installed.\n\nTo update an existing install, use the following command:\n```sh\njulia --project=~/.julia/environments/nvim-lspconfig -e 'using Pkg; Pkg.update()'\n```\n\nNote: In order to have LanguageServer.jl pick up installed packages or dependencies in a\nJulia project, you must make sure that the project is instantiated:\n```sh\njulia --project=/path/to/my/project -e 'using Pkg; Pkg.instantiate()'\n```\n\nNote: The julia programming language searches for global environments within the `environments/`\nfolder of `$JULIA_DEPOT_PATH` entries. By default this simply `~/.julia/environments`\n    ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/just.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'just-lsp' },\n    filetypes = { 'just' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/terror/just-lsp\n\n`just-lsp` is an LSP for just built on top of the tree-sitter-just parser.\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/kcl.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'kcl-language-server' },\n    filetypes = { 'kcl' },\n    root_dir = util.root_pattern '.git',\n  },\n  docs = {\n    description = [[\nhttps://github.com/kcl-lang/kcl.nvim\n\nLanguage server for the KCL configuration and policy language.\n\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/koka.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'koka', '--language-server', '--lsstdio' },\n    filetypes = { 'koka' },\n    single_file_support = true,\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n  },\n\n  docs = {\n    description = [[\n    https://koka-lang.github.io/koka/doc/index.html\nKoka is a functional programming language with effect types and handlers.\n    ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/kotlin_language_server.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nlocal bin_name = 'kotlin-language-server'\n\n--- The presence of one of these files indicates a project root directory\n--\n--  These are configuration files for the various build systems supported by\n--  Kotlin. I am not sure whether the language server supports Ant projects,\n--  but I'm keeping it here as well since Ant does support Kotlin.\nlocal root_files = {\n  'settings.gradle', -- Gradle (multi-project)\n  'settings.gradle.kts', -- Gradle (multi-project)\n  'build.xml', -- Ant\n  'pom.xml', -- Maven\n  'build.gradle', -- Gradle\n  'build.gradle.kts', -- Gradle\n}\n\nreturn {\n  default_config = {\n    filetypes = { 'kotlin' },\n    root_dir = util.root_pattern(unpack(root_files)),\n    cmd = { bin_name }, -- kotlin-language-server\n    init_options = {\n      -- Enables caching and use project root to store cache data.\n      storagePath = util.root_pattern(unpack(root_files))(vim.fn.expand '%:p:h'),\n    },\n  },\n  docs = {\n    description = [[\n    A kotlin language server which was developed for internal usage and\n    released afterwards. Maintaining is not done by the original author,\n    but by fwcd.\n\n    It is built via gradle and developed on github.\n    Source and additional description:\n    https://github.com/fwcd/kotlin-language-server\n\n    This server requires vim to be aware of the kotlin-filetype.\n    You could refer for this capability to:\n    https://github.com/udalov/kotlin-vim (recommended)\n    Note that there is no LICENSE specified yet.\n\n    For faster startup, you can setup caching by specifying a storagePath\n    in the init_options. The default is your home directory.\n    ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/kulala_ls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'kulala-ls', '--stdio' },\n    filetypes = { 'http' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/mistweaverco/kulala-ls\n\nA minimal language server for HTTP syntax.\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/laravel_ls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'laravel-ls' },\n    filetypes = { 'php', 'blade' },\n    root_dir = util.root_pattern({ 'artisan' }),\n  },\n  docs = {\n    description = [[\nhttps://github.com/laravel-ls/laravel-ls\n\n`laravel-ls`, language server for laravel\n\nThe default `cmd` assumes that the `laravel-ls` binary can be found in `$PATH`.\n    ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/lean3ls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'lean-language-server', '--stdio', '--', '-M', '4096', '-T', '100000' },\n    filetypes = { 'lean3' },\n    offset_encoding = 'utf-32',\n    root_dir = function(fname)\n      fname = vim.fs.normalize(fname)\n      -- check if inside elan stdlib\n      local stdlib_dir\n      do\n        local _, endpos = fname:find '/lean/library'\n        if endpos then\n          stdlib_dir = fname:sub(1, endpos)\n        end\n      end\n\n      return util.root_pattern 'leanpkg.toml'(fname)\n        or util.root_pattern 'leanpkg.path'(fname)\n        or stdlib_dir\n        or vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/leanprover/lean-client-js/tree/master/lean-language-server\n\nLean installation instructions can be found\n[here](https://leanprover-community.github.io/get_started.html#regular-install).\n\nOnce Lean is installed, you can install the Lean 3 language server by running\n```sh\nnpm install -g lean-language-server\n```\n\nNote: that if you're using [lean.nvim](https://github.com/Julian/lean.nvim),\nthat plugin fully handles the setup of the Lean language server,\nand you shouldn't set up `lean3ls` both with it and `lspconfig`.\n    ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/leanls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'lake', 'serve', '--' },\n    filetypes = { 'lean' },\n    root_dir = function(fname)\n      -- check if inside elan stdlib\n      fname = vim.fs.normalize(fname)\n      local stdlib_dir\n      do\n        local _, endpos = fname:find '/src/lean'\n        if endpos then\n          stdlib_dir = fname:sub(1, endpos)\n        end\n      end\n      if not stdlib_dir then\n        local _, endpos = fname:find '/lib/lean'\n        if endpos then\n          stdlib_dir = fname:sub(1, endpos)\n        end\n      end\n\n      return util.root_pattern('lakefile.toml', 'lakefile.lean', 'lean-toolchain')(fname)\n        or stdlib_dir\n        or vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    on_new_config = function(config, root_dir)\n      -- add root dir as command-line argument for `ps aux`\n      table.insert(config.cmd, root_dir)\n    end,\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/leanprover/lean4\n\nLean installation instructions can be found\n[here](https://leanprover-community.github.io/get_started.html#regular-install).\n\nThe Lean language server is included in any Lean installation and\ndoes not require any additional packages.\n\nNote: that if you're using [lean.nvim](https://github.com/Julian/lean.nvim),\nthat plugin fully handles the setup of the Lean language server,\nand you shouldn't set up `leanls` both with it and `lspconfig`.\n    ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/lelwel_ls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'lelwel-ls' },\n    filetypes = { 'llw' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n  },\n  docs = {\n    description = [[\nhttps://github.com/0x2a-42/lelwel\n\nLanguage server for lelwel grammars.\n\nYou can install `lelwel-ls` via cargo:\n```sh\ncargo install --features=\"lsp\" lelwel\n```\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/lemminx.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'lemminx' },\n    filetypes = { 'xml', 'xsd', 'xsl', 'xslt', 'svg' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/eclipse/lemminx\n\nThe easiest way to install the server is to get a binary from https://github.com/redhat-developer/vscode-xml/releases and place it on your PATH.\n\nNOTE to macOS users: Binaries from unidentified developers are blocked by default. If you trust the downloaded binary, run it once, cancel the prompt, then remove the binary from Gatekeeper quarantine with `xattr -d com.apple.quarantine lemminx`. It should now run without being blocked.\n\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/lexical.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    filetypes = { 'elixir', 'eelixir', 'heex', 'surface' },\n    root_dir = function(fname)\n      return util.root_pattern 'mix.exs'(fname)\n        or vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/lexical-lsp/lexical\n\nLexical is a next-generation language server for the Elixir programming language.\n\nFollow the [Detailed Installation Instructions](https://github.com/lexical-lsp/lexical/blob/main/pages/installation.md)\n\n**By default, `lexical` doesn't have a `cmd` set.**\nThis is because nvim-lspconfig does not make assumptions about your path.\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/lsp_ai.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'lsp-ai' },\n    filetypes = {},\n    root_dir = nil,\n    single_file_support = true,\n    init_options = {\n      memory = {\n        file_store = vim.empty_dict(),\n      },\n      models = vim.empty_dict(),\n    },\n  },\n  docs = {\n    description = [[\nhttps://github.com/SilasMarvin/lsp-ai\n\nLSP-AI is an open source language server that serves as a backend for AI-powered functionality in your favorite code\neditors. It offers features like in-editor chatting with LLMs and code completions.\n\n\nYou will need to provide configuration for the inference backends and models you want to use, as well as configure\ncompletion/code actions. See the [wiki docs](https://github.com/SilasMarvin/lsp-ai/wiki/Configuration) and\n[examples](https://github.com/SilasMarvin/lsp-ai/blob/main/examples/nvim) for more information.\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/ltex.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal language_id_mapping = {\n  bib = 'bibtex',\n  plaintex = 'tex',\n  rnoweb = 'rsweave',\n  rst = 'restructuredtext',\n  tex = 'latex',\n  pandoc = 'markdown',\n  text = 'plaintext',\n}\n\nlocal filetypes = {\n  'bib',\n  'gitcommit',\n  'markdown',\n  'org',\n  'plaintex',\n  'rst',\n  'rnoweb',\n  'tex',\n  'pandoc',\n  'quarto',\n  'rmd',\n  'context',\n  'html',\n  'xhtml',\n  'mail',\n  'text',\n}\n\nlocal function get_language_id(_, filetype)\n  local language_id = language_id_mapping[filetype]\n  if language_id then\n    return language_id\n  else\n    return filetype\n  end\nend\nlocal enabled_ids = {}\ndo\n  local enabled_keys = {}\n  for _, ft in ipairs(filetypes) do\n    local id = get_language_id({}, ft)\n    if not enabled_keys[id] then\n      enabled_keys[id] = true\n      table.insert(enabled_ids, id)\n    end\n  end\nend\n\nreturn {\n  default_config = {\n    cmd = { 'ltex-ls' },\n    filetypes = filetypes,\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n    get_language_id = get_language_id,\n    settings = {\n      ltex = {\n        enabled = enabled_ids,\n      },\n    },\n  },\n  docs = {\n    description = [=[\nhttps://github.com/valentjn/ltex-ls\n\nLTeX Language Server: LSP language server for LanguageTool 🔍✔️ with support for LaTeX 🎓, Markdown 📝, and others\n\nTo install, download the latest [release](https://github.com/valentjn/ltex-ls/releases) and ensure `ltex-ls` is on your path.\n\nThis server accepts configuration via the `settings` key.\n\n```lua\n  settings = {\n\t\tltex = {\n\t\t\tlanguage = \"en-GB\",\n\t\t},\n\t},\n```\n\nTo support org files or R sweave, users can define a custom filetype autocommand (or use a plugin which defines these filetypes):\n\n```lua\nvim.cmd [[ autocmd BufRead,BufNewFile *.org set filetype=org ]]\n```\n]=],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/ltex_plus.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal language_id_mapping = {\n  bib = 'bibtex',\n  pandoc = 'markdown',\n  plaintex = 'tex',\n  rnoweb = 'rsweave',\n  rst = 'restructuredtext',\n  tex = 'latex',\n  text = 'plaintext',\n}\n\nlocal function get_language_id(_, filetype)\n  return language_id_mapping[filetype] or filetype\nend\n\nreturn {\n  default_config = {\n    cmd = { 'ltex-ls-plus' },\n    filetypes = {\n      'bib',\n      'context',\n      'gitcommit',\n      'html',\n      'markdown',\n      'org',\n      'pandoc',\n      'plaintex',\n      'quarto',\n      'mail',\n      'mdx',\n      'rmd',\n      'rnoweb',\n      'rst',\n      'tex',\n      'text',\n      'typst',\n      'xhtml',\n    },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n    get_language_id = get_language_id,\n    settings = {\n      ltex = {\n        enabled = {\n          'bib',\n          'context',\n          'gitcommit',\n          'html',\n          'markdown',\n          'org',\n          'pandoc',\n          'plaintex',\n          'quarto',\n          'mail',\n          'mdx',\n          'rmd',\n          'rnoweb',\n          'rst',\n          'tex',\n          'latex',\n          'text',\n          'typst',\n          'xhtml',\n        },\n      },\n    },\n  },\n  docs = {\n    description = [=[\nhttps://github.com/ltex-plus/ltex-ls-plus\n\nLTeX Language Server: LSP language server for LanguageTool 🔍✔️ with support for LaTeX 🎓, Markdown 📝, and others\n\nTo install, download the latest [release](https://github.com/ltex-plus/ltex-ls-plus) and ensure `ltex-ls-plus` is on your path.\n\nThis server accepts configuration via the `settings` key.\n\n```lua\n  settings = {\n    ltex = {\n      language = \"en-GB\",\n    },\n  },\n```\n\nTo support org files or R sweave, users can define a custom filetype autocommand (or use a plugin which defines these filetypes):\n\n```lua\nvim.cmd [[ autocmd BufRead,BufNewFile *.org set filetype=org ]]\n```\n]=],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/lua_ls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nlocal root_files = {\n  '.luarc.json',\n  '.luarc.jsonc',\n  '.luacheckrc',\n  '.stylua.toml',\n  'stylua.toml',\n  'selene.toml',\n  'selene.yml',\n  '.git',\n}\n\nreturn {\n  default_config = {\n    cmd = { 'lua-language-server' },\n    filetypes = { 'lua' },\n    root_dir = util.root_pattern(root_files),\n    single_file_support = true,\n    log_level = vim.lsp.protocol.MessageType.Warning,\n  },\n  docs = {\n    description = [[\nhttps://github.com/luals/lua-language-server\n\nLua language server.\n\n`lua-language-server` can be installed by following the instructions [here](https://luals.github.io/#neovim-install).\n\nThe default `cmd` assumes that the `lua-language-server` binary can be found in `$PATH`.\n\nIf you primarily use `lua-language-server` for Neovim, and want to provide completions,\nanalysis, and location handling for plugins on runtime path, you can use the following\nsettings.\n\n```lua\nrequire'lspconfig'.lua_ls.setup {\n  on_init = function(client)\n    if client.workspace_folders then\n      local path = client.workspace_folders[1].name\n      if path ~= vim.fn.stdpath('config') and (vim.uv.fs_stat(path..'/.luarc.json') or vim.uv.fs_stat(path..'/.luarc.jsonc')) then\n        return\n      end\n    end\n\n    client.config.settings.Lua = vim.tbl_deep_extend('force', client.config.settings.Lua, {\n      runtime = {\n        -- Tell the language server which version of Lua you're using\n        -- (most likely LuaJIT in the case of Neovim)\n        version = 'LuaJIT'\n      },\n      -- Make the server aware of Neovim runtime files\n      workspace = {\n        checkThirdParty = false,\n        library = {\n          vim.env.VIMRUNTIME\n          -- Depending on the usage, you might want to add additional paths here.\n          -- \"${3rd}/luv/library\"\n          -- \"${3rd}/busted/library\",\n        }\n        -- or pull in all of 'runtimepath'. NOTE: this is a lot slower and will cause issues when working on your own configuration (see https://github.com/neovim/nvim-lspconfig/issues/3189)\n        -- library = vim.api.nvim_get_runtime_file(\"\", true)\n      }\n    })\n  end,\n  settings = {\n    Lua = {}\n  }\n}\n```\n\nSee `lua-language-server`'s [documentation](https://luals.github.io/wiki/settings/) for an explanation of the above fields:\n* [Lua.runtime.path](https://luals.github.io/wiki/settings/#runtimepath)\n* [Lua.workspace.library](https://luals.github.io/wiki/settings/#workspacelibrary)\n\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/luau_lsp.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'luau-lsp', 'lsp' },\n    filetypes = { 'luau' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n  },\n  docs = {\n    [[\nhttps://github.com/JohnnyMorganz/luau-lsp\n\nLanguage server for the [Luau](https://luau-lang.org/) language.\n\n`luau-lsp` can be installed by downloading one of the release assets available at https://github.com/JohnnyMorganz/luau-lsp.\n\nYou might also have to set up automatic filetype detection for Luau files, for example like so:\n\n```vim\nautocmd BufRead,BufNewFile *.luau setf luau\n```\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/lwc_ls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'lwc-language-server', '--stdio' },\n    filetypes = { 'javascript', 'html' },\n    root_dir = util.root_pattern 'sfdx-project.json',\n    init_options = {\n      embeddedLanguages = {\n        javascript = true,\n      },\n    },\n  },\n  docs = {\n    description = [[\nhttps://github.com/forcedotcom/lightning-language-server/\n\nLanguage server for Lightning Web Components.\n\nFor manual installation, utilize the official [NPM package](https://www.npmjs.com/package/@salesforce/lwc-language-server).\nThen, configure `cmd` to run the Node script at the unpacked location:\n\n```lua\nrequire'lspconfig'.lwc_ls.setup {\n  cmd = {\n    'node',\n    '/path/to/node_modules/@salesforce/lwc-language-server/bin/lwc-language-server.js',\n    '--stdio'\n  }\n}\n```\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/m68k.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'm68k-lsp-server', '--stdio' },\n    filetypes = { 'asm68k' },\n    root_dir = util.root_pattern('Makefile', '.git'),\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/grahambates/m68k-lsp\n\nLanguage server for Motorola 68000 family assembly\n\n`m68k-lsp-server` can be installed via `npm`:\n\n```sh\nnpm install -g m68k-lsp-server\n```\n\nEnsure you are using the 68k asm syntax variant in Neovim.\n\n```lua\nvim.g.asmsyntax = 'asm68k'\n```\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/markdown_oxide.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    root_dir = function(fname, _)\n      return require('lspconfig').util.root_pattern('.git', '.obsidian', '.moxide.toml')(fname)\n    end,\n    filetypes = { 'markdown' },\n    single_file_support = true,\n    cmd = { 'markdown-oxide' },\n  },\n  docs = {\n    description = [[\nhttps://github.com/Feel-ix-343/markdown-oxide\n\nEditor Agnostic PKM: you bring the text editor and we\nbring the PKM.\n\nInspired by and compatible with Obsidian.\n\nCheck the readme to see how to properly setup.\n    ]],\n  },\n  commands = {\n    Today = {\n      function()\n        vim.lsp.buf.execute_command { command = 'jump', arguments = { 'today' } }\n      end,\n      description = \"Open today's daily note\",\n    },\n    Tomorrow = {\n      function()\n        vim.lsp.buf.execute_command { command = 'jump', arguments = { 'tomorrow' } }\n      end,\n      description = \"Open tomorrow's daily note\",\n    },\n    Yesterday = {\n      function()\n        vim.lsp.buf.execute_command { command = 'jump', arguments = { 'yesterday' } }\n      end,\n      description = \"Open yesterday's daily note\",\n    },\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/marko-js.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'marko-language-server', '--stdio' },\n    filetypes = { 'marko' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n  },\n  docs = {\n    description = [[\n      https://github.com/marko-js/language-server\n\n      Using the Language Server Protocol to improve Marko's developer experience.\n\n      Can be installed via npm:\n      ```\n      npm i -g @marko/language-server\n      ```\n    ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/marksman.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nlocal bin_name = 'marksman'\nlocal cmd = { bin_name, 'server' }\n\nreturn {\n  default_config = {\n    cmd = cmd,\n    filetypes = { 'markdown', 'markdown.mdx' },\n    root_dir = function(fname)\n      local root_files = { '.marksman.toml' }\n      return util.root_pattern(unpack(root_files))(fname)\n        or vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/artempyanykh/marksman\n\nMarksman is a Markdown LSP server providing completion, cross-references, diagnostics, and more.\n\nMarksman works on MacOS, Linux, and Windows and is distributed as a self-contained binary for each OS.\n\nPre-built binaries can be downloaded from https://github.com/artempyanykh/marksman/releases\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/matlab_ls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'matlab-language-server', '--stdio' },\n    filetypes = { 'matlab' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = false,\n    settings = {\n      MATLAB = {\n        indexWorkspace = false,\n        installPath = '',\n        matlabConnectionTiming = 'onStart',\n        telemetry = true,\n      },\n    },\n  },\n  docs = {\n    description = [[\nhttps://github.com/mathworks/MATLAB-language-server\n\nMATLAB® language server implements the Microsoft® Language Server Protocol for the MATLAB language.\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/mdx_analyzer.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'mdx-language-server', '--stdio' },\n    filetypes = { 'mdx' },\n    root_dir = util.root_pattern 'package.json',\n    single_file_support = true,\n    settings = {},\n    init_options = {\n      typescript = {},\n    },\n    on_new_config = function(new_config, new_root_dir)\n      if vim.tbl_get(new_config.init_options, 'typescript') and not new_config.init_options.typescript.tsdk then\n        new_config.init_options.typescript.tsdk = util.get_typescript_server_path(new_root_dir)\n      end\n    end,\n  },\n  commands = {},\n  docs = {\n    description = [[\nhttps://github.com/mdx-js/mdx-analyzer\n\n`mdx-analyzer`, a language server for MDX\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/mesonlsp.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'mesonlsp', '--lsp' },\n    filetypes = { 'meson' },\n    root_dir = util.root_pattern('meson.build', 'meson_options.txt', 'meson.options', '.git'),\n  },\n  docs = {\n    description = [[\nhttps://github.com/JCWasmx86/mesonlsp\n\nAn unofficial, unendorsed language server for meson written in C++\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/metals.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'metals' },\n    filetypes = { 'scala' },\n    root_dir = util.root_pattern('build.sbt', 'build.sc', 'build.gradle', 'pom.xml'),\n    message_level = vim.lsp.protocol.MessageType.Log,\n    init_options = {\n      statusBarProvider = 'show-message',\n      isHttpEnabled = true,\n      compilerOptions = {\n        snippetAutoIndent = false,\n      },\n    },\n    capabilities = {\n      workspace = {\n        configuration = false,\n      },\n    },\n  },\n  docs = {\n    description = [[\nhttps://scalameta.org/metals/\n\nScala language server with rich IDE features.\n\nSee full instructions in the Metals documentation:\n\nhttps://scalameta.org/metals/docs/editors/vim#using-an-alternative-lsp-client\n\nNote: that if you're using [nvim-metals](https://github.com/scalameta/nvim-metals), that plugin fully handles the setup and installation of Metals, and you shouldn't set up Metals both with it and `lspconfig`.\n\nTo install Metals, make sure to have [coursier](https://get-coursier.io/docs/cli-installation) installed, and once you do you can install the latest Metals with `cs install metals`.\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/millet.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'millet' },\n    filetypes = { 'sml' },\n    root_dir = util.root_pattern 'millet.toml',\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/azdavis/millet\n\nMillet, a language server for Standard ML\n\nTo use with nvim:\n\n1. Install a Rust toolchain: https://rustup.rs\n2. Clone the repo\n3. Run `cargo build --release --bin millet-ls`\n4. Move `target/release/millet-ls` to somewhere on your $PATH as `millet`\n    ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/mint.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'mint', 'ls' },\n    filetypes = { 'mint' },\n    root_dir = function(fname)\n      return util.root_pattern 'mint.json'(fname)\n        or vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://www.mint-lang.com\n\nInstall Mint using the [instructions](https://www.mint-lang.com/install).\nThe language server is included since version 0.12.0.\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/mlir_lsp_server.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'mlir-lsp-server' },\n    filetypes = { 'mlir' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://mlir.llvm.org/docs/Tools/MLIRLSP/#mlir-lsp-language-server--mlir-lsp-server=\n\nThe Language Server for the LLVM MLIR language\n\n`mlir-lsp-server` can be installed at the llvm-project repository (https://github.com/llvm/llvm-project)\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/mlir_pdll_lsp_server.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'mlir-pdll-lsp-server' },\n    filetypes = { 'pdll' },\n    root_dir = function(fname)\n      return util.root_pattern 'pdll_compile_commands.yml'(fname)\n        or vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n  },\n  docs = {\n    description = [[\nhttps://mlir.llvm.org/docs/Tools/MLIRLSP/#pdll-lsp-language-server--mlir-pdll-lsp-server\n\nThe Language Server for the LLVM PDLL language\n\n`mlir-pdll-lsp-server` can be installed at the llvm-project repository (https://github.com/llvm/llvm-project)\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/mm0_ls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'mm0-rs', 'server' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    filetypes = { 'metamath-zero' },\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/digama0/mm0\n\nLanguage Server for the metamath-zero theorem prover.\n\nRequires [mm0-rs](https://github.com/digama0/mm0/tree/master/mm0-rs) to be installed\nand available on the `PATH`.\n    ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/mojo.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'mojo-lsp-server' },\n    filetypes = { 'mojo' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/modularml/mojo\n\n`mojo-lsp-server` can be installed [via Modular](https://developer.modular.com/download)\n\nMojo is a new programming language that bridges the gap between research and production by combining Python syntax and ecosystem with systems programming and metaprogramming features.\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/motoko_lsp.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'motoko-lsp', '--stdio' },\n    filetypes = { 'motoko' },\n    root_dir = util.root_pattern('dfx.json', '.git'),\n    init_options = {\n      formatter = 'auto',\n    },\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/dfinity/vscode-motoko\n\nLanguage server for the Motoko programming language.\n    ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/move_analyzer.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'move-analyzer' },\n    filetypes = { 'move' },\n    root_dir = function(fname)\n      local move_package_dir = util.root_pattern 'Move.toml'(fname)\n      return move_package_dir\n    end,\n  },\n  commands = {},\n  docs = {\n    description = [[\nhttps://github.com/move-language/move/tree/main/language/move-analyzer\n\nLanguage server for Move\n\nThe `move-analyzer` can be installed by running:\n\n```\ncargo install --git https://github.com/move-language/move move-analyzer\n```\n\nSee [`move-analyzer`'s doc](https://github.com/move-language/move/blob/1b258a06e3c7d2bc9174578aac92cca3ac19de71/language/move-analyzer/editors/code/README.md#how-to-install) for details.\n    ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/msbuild_project_tools_server.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal host_dll_name = 'MSBuildProjectTools.LanguageServer.Host.dll'\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    filetypes = { 'msbuild' },\n    root_dir = util.root_pattern('*.sln', '*.slnx', '*.*proj', '.git'),\n    init_options = {},\n    cmd = { 'dotnet', host_dll_name },\n  },\n  docs = {\n    description = [=[\nhttps://github.com/tintoy/msbuild-project-tools-server/\n\nMSBuild Project Tools Server can be installed by following the README.MD on the above repository.\n\nExample config:\n```lua\nlspconfig.msbuild_project_tools_server.setup {\n  cmd = {'dotnet', '/path/to/server/MSBuildProjectTools.LanguageServer.Host.dll'}\n}\n```\n\nThere's no builtin filetypes for msbuild files, would require some filetype aliases:\n\n```lua\nvim.filetype.add({\n  extension = {\n    props = 'msbuild',\n    tasks = 'msbuild',\n    targets = 'msbuild',\n  },\n  pattern = {\n    [ [[.*\\..*proj]] ] = 'msbuild',\n  },\n})\n```\n\nOptionally tell treesitter to treat `msbuild` as `xml` so you can get syntax highlighting if you have the treesitter-xml-parser installed.\n\n```lua\nvim.treesitter.language.register('xml', { 'msbuild' })\n```\n]=],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/muon.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal async = require('lspconfig.async')\n\nreturn {\n  default_config = {\n    cmd = { 'muon', 'analyze', 'lsp' },\n    filetypes = { 'meson' },\n    root_dir = function(fname)\n      local res = async.run_command({ 'muon', 'analyze', 'root-for', fname })\n      if res[1] then\n        return vim.trim(res[1])\n      end\n    end,\n  },\n  docs = {\n    description = [[\nhttps://muon.build\n]],\n    default_config = {},\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/mutt_ls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'mutt-language-server' },\n    filetypes = { 'muttrc', 'neomuttrc' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n    settings = {},\n  },\n  docs = {\n    description = [[\nhttps://github.com/neomutt/mutt-language-server\n\nA language server for (neo)mutt's muttrc. It can be installed via pip.\n\n```sh\npip install mutt-language-server\n```\n  ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/nelua_lsp.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    filetypes = { 'nelua' },\n    root_dir = util.root_pattern('Makefile', '.git', '*.nelua'),\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/codehz/nelua-lsp\n\nnelua-lsp is an experimental nelua language server.\n\nYou need [nelua.vim](https://github.com/stefanos82/nelua.vim/blob/main/ftdetect/nelua.vim) for nelua files to be recognized or add this to your config:\n\nin vimscript:\n```vimscript\nau BufNewFile,BufRead *.nelua setf nelua\n```\n\nin lua:\n```lua\nvim.api.nvim_create_autocmd({ \"BufNewFile\", \"BufRead\" }, { pattern = { \"*.nelua\" }, command = \"setf nelua\"})\n```\n\n**By default, nelua-lsp doesn't have a `cmd` set.** This is because nvim-lspconfig does not make assumptions about your path. You must add the following to your init.vim or init.lua to set `cmd` to the absolute path ($HOME and ~ are not expanded) of the unzipped run script or binary.\n\n```lua\nrequire'lspconfig'.nelua_lsp.setup {\n    cmd = { \"nelua\", \"-L\", \"/path/to/nelua-lsp/\", \"--script\", \"/path/to/nelua-lsp/nelua-lsp.lua\" },\n}\n```\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/neocmake.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'neocmakelsp', '--stdio' },\n    filetypes = { 'cmake' },\n    root_dir = function(fname)\n      return util.root_pattern(unpack({ '.git', 'build', 'cmake' }))(fname)\n    end,\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/Decodetalkers/neocmakelsp\n\nCMake LSP Implementation\n\nNeovim does not currently include built-in snippets. `neocmakelsp` only provides completions when snippet support is enabled. To enable completion, install a snippet plugin and add the following override to your language client capabilities during setup.\n\n```lua\n--Enable (broadcasting) snippet capability for completion\nlocal capabilities = vim.lsp.protocol.make_client_capabilities()\ncapabilities.textDocument.completion.completionItem.snippetSupport = true\n\nrequire'lspconfig'.neocmake.setup {\n  capabilities = capabilities,\n}\n```\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/nextflow_ls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'java', '-jar', 'nextflow-language-server-all.jar' },\n    filetypes = { 'nextflow' },\n    root_dir = util.root_pattern('nextflow.config', '.git'),\n    settings = {\n      nextflow = {\n        files = {\n          exclude = { '.git', '.nf-test', 'work' },\n        },\n      },\n    },\n  },\n  docs = {\n    description = [[\nhttps://github.com/nextflow-io/language-server\n\nRequirements:\n - Java 17+\n\n`nextflow_ls` can be installed by following the instructions [here](https://github.com/nextflow-io/language-server#development).\n\nIf you have installed nextflow language server, you can set the `cmd` custom path as follow:\n\n```lua\nrequire'lspconfig'.nextflow_ls.setup{\n    cmd = { 'java', '-jar', 'nextflow-language-server-all.jar' },\n    filetypes = { 'nextflow' },\n    root_dir = util.root_pattern('nextflow.config', '.git'),\n    settings = {\n      nextflow = {\n        files = {\n          exclude = { '.git', '.nf-test', 'work' },\n        },\n      },\n    },\n}\n```\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/nextls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    filetypes = { 'elixir', 'eelixir', 'heex', 'surface' },\n    root_dir = function(fname)\n      return util.root_pattern 'mix.exs'(fname)\n        or vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/elixir-tools/next-ls\n\n**By default, next-ls does not set its `cmd`. Please see the following [detailed instructions](https://www.elixir-tools.dev/docs/next-ls/installation/) for possible installation methods.**\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/nginx_language_server.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'nginx-language-server' },\n    filetypes = { 'nginx' },\n    root_dir = function(fname)\n      return util.root_pattern('nginx.conf', '.git')(fname)\n        or vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://pypi.org/project/nginx-language-server/\n\n`nginx-language-server` can be installed via pip:\n\n```sh\npip install -U nginx-language-server\n```\n    ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/nickel_ls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'nls' },\n    filetypes = { 'ncl', 'nickel' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n  },\n\n  docs = {\n    description = [[\nNickel Language Server\n\nhttps://github.com/tweag/nickel\n\n`nls` can be installed with nix, or cargo, from the Nickel repository.\n```sh\ngit clone https://github.com/tweag/nickel.git\n```\n\nNix:\n```sh\ncd nickel\nnix-env -f . -i\n```\n\ncargo:\n```sh\ncd nickel/lsp/nls\ncargo install --path .\n```\n\nIn order to have lspconfig detect Nickel filetypes (a prerequisite for autostarting a server),\ninstall the [Nickel vim plugin](https://github.com/nickel-lang/vim-nickel).\n        ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/nil_ls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'nil' },\n    filetypes = { 'nix' },\n    single_file_support = true,\n    root_dir = util.root_pattern('flake.nix', '.git'),\n  },\n  docs = {\n    description = [[\nhttps://github.com/oxalica/nil\n\nA new language server for Nix Expression Language.\n\nIf you are using Nix with Flakes support, run `nix profile install github:oxalica/nil` to install.\nCheck the repository README for more information.\n\n_See an example config at https://github.com/oxalica/nil/blob/main/dev/nvim-lsp.nix._\n    ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/nim_langserver.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'nimlangserver' },\n    filetypes = { 'nim' },\n    root_dir = function(fname)\n      return util.root_pattern '*.nimble'(fname)\n        or vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/nim-lang/langserver\n\n\n`nim-langserver` can be installed via the `nimble` package manager:\n```sh\nnimble install nimlangserver\n```\n    ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/nimls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'nimlsp' },\n    filetypes = { 'nim' },\n    root_dir = function(fname)\n      return util.root_pattern '*.nimble'(fname)\n        or vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/PMunch/nimlsp\n\n`nimlsp` can be installed via the `nimble` package manager:\n\n```sh\nnimble install nimlsp\n```\n    ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/nixd.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'nixd' },\n    filetypes = { 'nix' },\n    single_file_support = true,\n    root_dir = function(fname)\n      return util.root_pattern 'flake.nix'(fname)\n        or vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n  },\n  docs = {\n    description = [[\nhttps://github.com/nix-community/nixd\n\nNix language server, based on nix libraries.\n\nIf you are using Nix with Flakes support, run `nix profile install github:nix-community/nixd` to install.\nCheck the repository README for more information.\n    ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/nomad_lsp.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\nlocal bin_name = 'nomad-lsp'\n\nif vim.fn.has 'win32' == 1 then\n  bin_name = bin_name .. '.exe'\nend\n\nreturn {\n  default_config = {\n    cmd = { bin_name },\n    filetypes = { 'hcl.nomad', 'nomad' },\n    root_dir = util.root_pattern '*.nomad',\n  },\n  docs = {\n    description = [[\nhttps://github.com/juliosueiras/nomad-lsp\n\nWritten in Go, compilation is needed for `nomad_lsp` to be used. Please see the [original repository](https://github.com/juliosuieras/nomad-lsp).\n\nAdd the executable to your system or vim PATH and it will be set to go.\n\nNo configuration option is needed unless you choose not to add `nomad-lsp` executable to the PATH. You should know what you are doing if you choose so.\n\n```lua\nrequire('lspconfig').nomad_lsp.setup{ }\n```\n\nHowever, a `hcl.nomad` or `nomad` filetype should be defined.\n\nDescription of your jobs should be written in `.nomad` files for the LSP client to configure the server's `root_dir` configuration option.\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/ntt.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\nlocal bin_name = 'ntt'\n\nreturn {\n  default_config = {\n    cmd = { bin_name, 'langserver' },\n    filetypes = { 'ttcn' },\n    root_dir = util.root_pattern '.git',\n  },\n  docs = {\n    description = [[\nhttps://github.com/nokia/ntt\nInstallation instructions can be found [here](https://github.com/nokia/ntt#Install).\nCan be configured by passing a \"settings\" object to `ntt.setup{}`:\n```lua\nrequire('lspconfig').ntt.setup{\n    settings = {\n      ntt = {\n      }\n    }\n}\n```\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/nushell.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'nu', '--lsp' },\n    filetypes = { 'nu' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1] or fname)\n    end,\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/nushell/nushell\n\nNushell built-in language server.\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/nxls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'nxls', '--stdio' },\n    filetypes = { 'json', 'jsonc' },\n    root_dir = util.root_pattern('nx.json', '.git'),\n  },\n  docs = {\n    description = [[\nhttps://github.com/nrwl/nx-console/tree/master/apps/nxls\n\nnxls, a language server for Nx Workspaces\n\n`nxls` can be installed via `npm`:\n```sh\nnpm i -g nxls\n```\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/ocamllsp.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nlocal language_id_of = {\n  menhir = 'ocaml.menhir',\n  ocaml = 'ocaml',\n  ocamlinterface = 'ocaml.interface',\n  ocamllex = 'ocaml.ocamllex',\n  reason = 'reason',\n  dune = 'dune',\n}\n\nlocal get_language_id = function(_, ftype)\n  return language_id_of[ftype]\nend\n\nreturn {\n  default_config = {\n    cmd = { 'ocamllsp' },\n    filetypes = { 'ocaml', 'menhir', 'ocamlinterface', 'ocamllex', 'reason', 'dune' },\n    root_dir = util.root_pattern('*.opam', 'esy.json', 'package.json', '.git', 'dune-project', 'dune-workspace'),\n    get_language_id = get_language_id,\n  },\n  docs = {\n    description = [[\nhttps://github.com/ocaml/ocaml-lsp\n\n`ocaml-lsp` can be installed as described in [installation guide](https://github.com/ocaml/ocaml-lsp#installation).\n\nTo install the lsp server in a particular opam switch:\n```sh\nopam install ocaml-lsp-server\n```\n    ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/ols.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'ols' },\n    filetypes = { 'odin' },\n    root_dir = util.root_pattern('ols.json', '.git', '*.odin'),\n  },\n  docs = {\n    description = [[\n           https://github.com/DanielGavin/ols\n\n           `Odin Language Server`.\n        ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/omnisharp.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    settings = {\n      FormattingOptions = {\n        -- Enables support for reading code style, naming convention and analyzer\n        -- settings from .editorconfig.\n        EnableEditorConfigSupport = true,\n        -- Specifies whether 'using' directives should be grouped and sorted during\n        -- document formatting.\n        OrganizeImports = nil,\n      },\n      MsBuild = {\n        -- If true, MSBuild project system will only load projects for files that\n        -- were opened in the editor. This setting is useful for big C# codebases\n        -- and allows for faster initialization of code navigation features only\n        -- for projects that are relevant to code that is being edited. With this\n        -- setting enabled OmniSharp may load fewer projects and may thus display\n        -- incomplete reference lists for symbols.\n        LoadProjectsOnDemand = nil,\n      },\n      RoslynExtensionsOptions = {\n        -- Enables support for roslyn analyzers, code fixes and rulesets.\n        EnableAnalyzersSupport = nil,\n        -- Enables support for showing unimported types and unimported extension\n        -- methods in completion lists. When committed, the appropriate using\n        -- directive will be added at the top of the current file. This option can\n        -- have a negative impact on initial completion responsiveness,\n        -- particularly for the first few completion sessions after opening a\n        -- solution.\n        EnableImportCompletion = nil,\n        -- Only run analyzers against open files when 'enableRoslynAnalyzers' is\n        -- true\n        AnalyzeOpenDocumentsOnly = nil,\n      },\n      Sdk = {\n        -- Specifies whether to include preview versions of the .NET SDK when\n        -- determining which version to use for project loading.\n        IncludePrereleases = true,\n      },\n    },\n\n    filetypes = { 'cs', 'vb' },\n    root_dir = util.root_pattern('*.sln', '*.csproj', 'omnisharp.json', 'function.json'),\n    on_new_config = function(new_config, _)\n      -- Get the initially configured value of `cmd`\n      new_config.cmd = { unpack(new_config.cmd or {}) }\n\n      -- Append hard-coded command arguments\n      table.insert(new_config.cmd, '-z') -- https://github.com/OmniSharp/omnisharp-vscode/pull/4300\n      vim.list_extend(new_config.cmd, { '--hostPID', tostring(vim.fn.getpid()) })\n      table.insert(new_config.cmd, 'DotNet:enablePackageRestore=false')\n      vim.list_extend(new_config.cmd, { '--encoding', 'utf-8' })\n      table.insert(new_config.cmd, '--languageserver')\n\n      -- Append configuration-dependent command arguments\n      local function flatten(tbl)\n        local ret = {}\n        for k, v in pairs(tbl) do\n          if type(v) == 'table' then\n            for _, pair in ipairs(flatten(v)) do\n              ret[#ret + 1] = k .. ':' .. pair\n            end\n          else\n            ret[#ret + 1] = k .. '=' .. vim.inspect(v)\n          end\n        end\n        return ret\n      end\n      if new_config.settings then\n        vim.list_extend(new_config.cmd, flatten(new_config.settings))\n      end\n\n      -- Disable the handling of multiple workspaces in a single instance\n      new_config.capabilities = vim.deepcopy(new_config.capabilities)\n      new_config.capabilities.workspace.workspaceFolders = false -- https://github.com/OmniSharp/omnisharp-roslyn/issues/909\n    end,\n    init_options = {},\n  },\n  docs = {\n    description = [[\nhttps://github.com/omnisharp/omnisharp-roslyn\nOmniSharp server based on Roslyn workspaces\n\n`omnisharp-roslyn` can be installed by downloading and extracting a release from [here](https://github.com/OmniSharp/omnisharp-roslyn/releases).\nOmniSharp can also be built from source by following the instructions [here](https://github.com/omnisharp/omnisharp-roslyn#downloading-omnisharp).\n\nOmniSharp requires the [dotnet-sdk](https://dotnet.microsoft.com/download) to be installed.\n\n**By default, omnisharp-roslyn doesn't have a `cmd` set.** This is because nvim-lspconfig does not make assumptions about your path. You must add the following to your init.vim or init.lua to set `cmd` to the absolute path ($HOME and ~ are not expanded) of the unzipped run script or binary.\n\nFor `go_to_definition` to work fully, extended `textDocument/definition` handler is needed, for example see [omnisharp-extended-lsp.nvim](https://github.com/Hoffs/omnisharp-extended-lsp.nvim)\n\n```lua\nrequire'lspconfig'.omnisharp.setup {\n    cmd = { \"dotnet\", \"/path/to/omnisharp/OmniSharp.dll\" },\n\n    settings = {\n      FormattingOptions = {\n        -- Enables support for reading code style, naming convention and analyzer\n        -- settings from .editorconfig.\n        EnableEditorConfigSupport = true,\n        -- Specifies whether 'using' directives should be grouped and sorted during\n        -- document formatting.\n        OrganizeImports = nil,\n      },\n      MsBuild = {\n        -- If true, MSBuild project system will only load projects for files that\n        -- were opened in the editor. This setting is useful for big C# codebases\n        -- and allows for faster initialization of code navigation features only\n        -- for projects that are relevant to code that is being edited. With this\n        -- setting enabled OmniSharp may load fewer projects and may thus display\n        -- incomplete reference lists for symbols.\n        LoadProjectsOnDemand = nil,\n      },\n      RoslynExtensionsOptions = {\n        -- Enables support for roslyn analyzers, code fixes and rulesets.\n        EnableAnalyzersSupport = nil,\n        -- Enables support for showing unimported types and unimported extension\n        -- methods in completion lists. When committed, the appropriate using\n        -- directive will be added at the top of the current file. This option can\n        -- have a negative impact on initial completion responsiveness,\n        -- particularly for the first few completion sessions after opening a\n        -- solution.\n        EnableImportCompletion = nil,\n        -- Only run analyzers against open files when 'enableRoslynAnalyzers' is\n        -- true\n        AnalyzeOpenDocumentsOnly = nil,\n      },\n      Sdk = {\n        -- Specifies whether to include preview versions of the .NET SDK when\n        -- determining which version to use for project loading.\n        IncludePrereleases = true,\n      },\n    },\n}\n```\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/opencl_ls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'opencl-language-server' },\n    filetypes = { 'opencl' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n  },\n  docs = {\n    description = [[\nhttps://github.com/Galarius/opencl-language-server\n\nBuild instructions can be found [here](https://github.com/Galarius/opencl-language-server/blob/main/_dev/build.md).\n\nPrebuilt binaries are available for Linux, macOS and Windows [here](https://github.com/Galarius/opencl-language-server/releases).\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/openedge_ls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    filetypes = { 'progress' },\n    root_dir = util.root_pattern 'openedge-project.json',\n    on_new_config = function(config)\n      if not config.cmd and config.oe_jar_path then\n        config.cmd = {\n          'java',\n        }\n        config.cmd[#config.cmd + 1] = '-jar'\n        config.cmd[#config.cmd + 1] = config.oe_jar_path\n        if config.debug then\n          config.cmd[#config.cmd + 1] = '--debug'\n        end\n        if config.trace then\n          config.cmd[#config.cmd + 1] = '--trace'\n        end\n      end\n    end,\n  },\n  docs = {\n    description = [[\n[Language server](https://github.com/vscode-abl/vscode-abl) for Progress OpenEdge ABL.\n\nFor manual installation, download abl-lsda.jar from the [VSCode extension](https://github.com/vscode-abl/vscode-abl/releases/latest).\n\nConfiguration\n\n```lua\nrequire('lspconfig').openedge_ls.setup {\n  oe_jar_path = '/path/to/abl-lsda.jar',\n  debug = false, -- Set to true for debug logging\n  trace = false, -- Set to true for trace logging (REALLY verbose)\n  init_options = {\n    abl = {\n      configuration = {\n        runtimes = {\n          { name = '12.8', path = '/opt/progress/dlc' }\n        },\n        maxThreads = 1\n      },\n      completion = {\n        upperCase = false\n      },\n      buildMode = 1 -- Build all\n    }\n  }\n}\n```\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/openscad_ls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'openscad-language-server' },\n    filetypes = { 'openscad' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n  },\n  docs = {\n    description = [=[\nhttps://github.com/dzhu/openscad-language-server\n\nA Language Server Protocol server for OpenSCAD\n\nYou can build and install `openscad-language-server` binary with `cargo`:\n```sh\ncargo install openscad-language-server\n```\n\nVim does not have built-in syntax for the `openscad` filetype currently.\n\nThis can be added via an autocmd:\n\n```lua\nvim.cmd [[ autocmd BufRead,BufNewFile *.scad set filetype=openscad ]]\n```\n\nor by installing a filetype plugin such as https://github.com/sirtaj/vim-openscad\n]=],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/openscad_lsp.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'openscad-lsp', '--stdio' },\n    filetypes = { 'openscad' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n  },\n  docs = {\n    description = [=[\nhttps://github.com/Leathong/openscad-LSP\n\nA Language Server Protocol server for OpenSCAD\n\nYou can build and install `openscad-lsp` binary with `cargo`:\n```sh\ncargo install openscad-lsp\n```\n]=],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/oxlint.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'oxc_language_server' },\n    filetypes = {\n      'astro',\n      'javascript',\n      'javascriptreact',\n      'svelte',\n      'typescript',\n      'typescriptreact',\n      'vue',\n    },\n    root_dir = util.root_pattern('.oxlintrc.json'),\n    single_file_support = false,\n\n    commands = {\n      OxcFixAll = {\n        function()\n          local client = vim.lsp.get_clients({ bufnr = 0, name = 'oxlint' })[1]\n          if client == nil then\n            return\n          end\n\n          client.request('workspace/executeCommand', {\n            command = 'oxc.fixAll',\n            arguments = {\n              {\n                uri = vim.uri_from_bufnr(0),\n              },\n            },\n          }, nil, 0)\n        end,\n        description = 'Apply fixes to current buffer using oxlint (--fix)',\n      },\n    },\n  },\n  docs = {\n    description = [[\nhttps://oxc.rs\n\nA collection of JavaScript tools written in Rust.\n\n```sh\nnpm install [-g] oxlint\n```\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/pact_ls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'pact-lsp' },\n    filetypes = { 'pact' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/kadena-io/pact-lsp\n\nThe Pact language server\n    ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/pasls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'pasls' },\n    filetypes = { 'pascal' },\n    root_dir = util.root_pattern('*.lpi', '*.lpk', '.git'),\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/genericptr/pascal-language-server\n\nAn LSP server implementation for Pascal variants that are supported by Free Pascal, including Object Pascal. It uses CodeTools from Lazarus as backend.\n\nFirst set `cmd` to the Pascal lsp binary.\n\nCustomization options are passed to pasls as environment variables for example in your `.bashrc`:\n```bash\nexport FPCDIR='/usr/lib/fpc/src'      # FPC source directory (This is the only required option for the server to work).\nexport PP='/usr/lib/fpc/3.2.2/ppcx64' # Path to the Free Pascal compiler executable.\nexport LAZARUSDIR='/usr/lib/lazarus'  # Path to the Lazarus sources.\nexport FPCTARGET=''                   # Target operating system for cross compiling.\nexport FPCTARGETCPU='x86_64'          # Target CPU for cross compiling.\n```\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/pbls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'pbls' },\n    filetypes = { 'proto' },\n    root_dir = util.root_pattern('.pbls.toml', '.git'),\n  },\n  docs = {\n    description = [[\nhttps://git.sr.ht/~rrc/pbls\n\nPrerequisites: Ensure protoc is on your $PATH.\n\n`pbls` can be installed via `cargo install`:\n```sh\ncargo install --git https://git.sr.ht/~rrc/pbls\n```\n\npbls is a Language Server for protobuf\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/perlls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = {\n      'perl',\n      '-MPerl::LanguageServer',\n      '-e',\n      'Perl::LanguageServer::run',\n      '--',\n      '--port 13603',\n      '--nostdio 0',\n    },\n    settings = {\n      perl = {\n        perlCmd = 'perl',\n        perlInc = ' ',\n        fileFilter = { '.pm', '.pl' },\n        ignoreDirs = '.git',\n      },\n    },\n    filetypes = { 'perl' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/richterger/Perl-LanguageServer/tree/master/clients/vscode/perl\n\n`Perl-LanguageServer`, a language server for Perl.\n\nTo use the language server, ensure that you have Perl::LanguageServer installed and perl command is on your path.\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/perlnavigator.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'perlnavigator' },\n    filetypes = { 'perl' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/bscan/PerlNavigator\n\nA Perl language server. It can be installed via npm:\n\n```sh\nnpm i -g perlnavigator-server\n```\n\nAt minimum, you will need `perl` in your path. If you want to use a non-standard `perl` you will need to set your configuration like so:\n```lua\nsettings = {\n  perlnavigator = {\n    perlPath = '/some/odd/location/my-perl'\n  }\n}\n```\n\nThe `contributes.configuration.properties` section of `perlnavigator`'s `package.json` has all available configuration settings. All\nsettings have a reasonable default, but, at minimum, you may want to point `perlnavigator` at your `perltidy` and `perlcritic` configurations.\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/perlpls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'pls' },\n    settings = {\n      perl = {\n        perlcritic = { enabled = false },\n        syntax = { enabled = true },\n      },\n    },\n    filetypes = { 'perl' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/FractalBoy/perl-language-server\nhttps://metacpan.org/pod/PLS\n\n`PLS`, another language server for Perl.\n\nTo use the language server, ensure that you have PLS installed and that it is in your path\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/pest_ls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'pest-language-server' },\n    filetypes = { 'pest' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/pest-parser/pest-ide-tools\n\nLanguage server for pest grammars.\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/phan.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nlocal cmd = {\n  'phan',\n  '-m',\n  'json',\n  '--no-color',\n  '--no-progress-bar',\n  '-x',\n  '-u',\n  '-S',\n  '--language-server-on-stdin',\n  '--allow-polyfill-parser',\n}\n\nreturn {\n  default_config = {\n    cmd = cmd,\n    filetypes = { 'php' },\n    single_file_support = true,\n    root_dir = function(pattern)\n      local cwd = vim.uv.cwd()\n      local root = util.root_pattern('composer.json', '.git')(pattern)\n\n      -- prefer cwd if root is a descendant\n      return util.path.is_descendant(cwd, root) and cwd or root\n    end,\n  },\n  docs = {\n    description = [[\nhttps://github.com/phan/phan\n\nInstallation: https://github.com/phan/phan#getting-started\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/phpactor.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'phpactor', 'language-server' },\n    filetypes = { 'php' },\n    root_dir = function(pattern)\n      local cwd = vim.uv.cwd()\n      local root = util.root_pattern('composer.json', '.git', '.phpactor.json', '.phpactor.yml')(pattern)\n\n      -- prefer cwd if root is a descendant\n      return util.path.is_descendant(cwd, root) and cwd or root\n    end,\n  },\n  docs = {\n    description = [[\nhttps://github.com/phpactor/phpactor\n\nInstallation: https://phpactor.readthedocs.io/en/master/usage/standalone.html#global-installation\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/pico8_ls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'pico8-ls', '--stdio' },\n    filetypes = { 'p8' },\n    root_dir = util.root_pattern '*.p8',\n    settings = {},\n  },\n  docs = {\n    description = [[\nhttps://github.com/japhib/pico8-ls\n\nFull language support for the PICO-8 dialect of Lua.\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/pkgbuild_language_server.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'pkgbuild-language-server' },\n    filetypes = { 'PKGBUILD' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n  },\n  docs = {\n    description = [[\nhttps://github.com/Freed-Wu/pkgbuild-language-server\n\nLanguage server for ArchLinux/Windows Msys2's PKGBUILD.\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/please.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'plz', 'tool', 'lps' },\n    filetypes = { 'bzl' },\n    root_dir = util.root_pattern '.plzconfig',\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/thought-machine/please\n\nHigh-performance extensible build system for reproducible multi-language builds.\n\nThe `plz` binary will automatically install the LSP for you on first run\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/poryscript_pls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'poryscript-pls' },\n    filetypes = { 'pory' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/huderlem/poryscript-pls\n\nLanguage server for poryscript (a high level scripting language for GBA-era Pokémon decompilation projects)\n    ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/postgres_lsp.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'postgrestools', 'lsp-proxy' },\n    filetypes = {\n      'sql',\n    },\n    root_dir = vim.fs.root(0, { 'postgrestools.jsonc' }),\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://pgtools.dev\n\nA collection of language tools and a Language Server Protocol (LSP) implementation for Postgres, focusing on developer experience and reliable SQL tooling.\n        ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/powershell_es.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal temp_path = vim.fn.stdpath 'cache'\nlocal util = require 'lspconfig.util'\n\nlocal function make_cmd(new_config)\n  if new_config.bundle_path ~= nil then\n    local command_fmt =\n      [[& '%s/PowerShellEditorServices/Start-EditorServices.ps1' -BundledModulesPath '%s' -LogPath '%s/powershell_es.log' -SessionDetailsPath '%s/powershell_es.session.json' -FeatureFlags @() -AdditionalModules @() -HostName nvim -HostProfileId 0 -HostVersion 1.0.0 -Stdio -LogLevel Normal]]\n    local command = command_fmt:format(new_config.bundle_path, new_config.bundle_path, temp_path, temp_path)\n    return { new_config.shell, '-NoLogo', '-NoProfile', '-Command', command }\n  end\nend\n\nreturn {\n  default_config = {\n    shell = 'pwsh',\n    on_new_config = function(new_config, _)\n      -- Don't overwrite cmd if already set\n      if not new_config.cmd then\n        new_config.cmd = make_cmd(new_config)\n      end\n    end,\n\n    filetypes = { 'ps1' },\n    root_dir = util.root_pattern('PSScriptAnalyzerSettings.psd1', '.git'),\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/PowerShell/PowerShellEditorServices\n\nLanguage server for PowerShell.\n\nTo install, download and extract PowerShellEditorServices.zip\nfrom the [releases](https://github.com/PowerShell/PowerShellEditorServices/releases).\nTo configure the language server, set the property `bundle_path` to the root\nof the extracted PowerShellEditorServices.zip.\n\nThe default configuration doesn't set `cmd` unless `bundle_path` is specified.\n\n```lua\nrequire'lspconfig'.powershell_es.setup{\n  bundle_path = 'c:/w/PowerShellEditorServices',\n}\n```\n\nBy default the languageserver is started in `pwsh` (PowerShell Core). This can be changed by specifying `shell`.\n\n```lua\nrequire'lspconfig'.powershell_es.setup{\n  bundle_path = 'c:/w/PowerShellEditorServices',\n  shell = 'powershell.exe',\n}\n```\n\nNote that the execution policy needs to be set to `Unrestricted` for the languageserver run under PowerShell\n\nIf necessary, specific `cmd` can be defined instead of `bundle_path`.\nSee [PowerShellEditorServices](https://github.com/PowerShell/PowerShellEditorServices#stdio)\nto learn more.\n\n```lua\nrequire'lspconfig'.powershell_es.setup{\n  cmd = {'pwsh', '-NoLogo', '-NoProfile', '-Command', \"c:/PSES/Start-EditorServices.ps1 ...\"}\n}\n```\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/prismals.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'prisma-language-server', '--stdio' },\n    filetypes = { 'prisma' },\n    settings = {\n      prisma = {\n        prismaFmtBinPath = '',\n      },\n    },\n    root_dir = util.root_pattern('.git', 'package.json'),\n  },\n  docs = {\n    description = [[\nLanguage Server for the Prisma JavaScript and TypeScript ORM\n\n`@prisma/language-server` can be installed via npm\n```sh\nnpm install -g @prisma/language-server\n```\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/prolog_ls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = {\n      'swipl',\n      '-g',\n      'use_module(library(lsp_server)).',\n      '-g',\n      'lsp_server:main',\n      '-t',\n      'halt',\n      '--',\n      'stdio',\n    },\n    filetypes = { 'prolog' },\n    root_dir = util.root_pattern 'pack.pl',\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\n  https://github.com/jamesnvc/lsp_server\n\n  Language Server Protocol server for SWI-Prolog\n  ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/prosemd_lsp.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'prosemd-lsp', '--stdio' },\n    filetypes = { 'markdown' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/kitten/prosemd-lsp\n\nAn experimental LSP for Markdown.\n\nPlease see the manual installation instructions: https://github.com/kitten/prosemd-lsp#manual-installation\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/protols.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'protols' },\n    filetypes = { 'proto' },\n    single_file_support = true,\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n  },\n  docs = {\n    description = [[\nhttps://github.com/coder3101/protols\n\n`protols` can be installed via `cargo`:\n```sh\ncargo install protols\n```\n\nA Language Server for proto3 files. It uses tree-sitter and runs in single file mode.\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/psalm.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'psalm', '--language-server' },\n    filetypes = { 'php' },\n    root_dir = util.root_pattern('psalm.xml', 'psalm.xml.dist'),\n  },\n  docs = {\n    description = [[\nhttps://github.com/vimeo/psalm\n\nCan be installed with composer.\n```sh\ncomposer global require vimeo/psalm\n```\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/pug.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'pug-lsp' },\n    filetypes = { 'pug' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('package.json', { path = fname, upward = true })[1])\n    end,\n  },\n  docs = {\n    description = [[\nhttps://github.com/opa-oz/pug-lsp\n\nAn implementation of the Language Protocol Server for [Pug.js](http://pugjs.org)\n\nPugLSP can be installed via `go install github.com/opa-oz/pug-lsp@latest`, or manually downloaded from [releases page](https://github.com/opa-oz/pug-lsp/releases)\n    ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/puppet.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nlocal root_files = {\n  'manifests',\n  '.puppet-lint.rc',\n  'hiera.yaml',\n  '.git',\n}\n\nreturn {\n  default_config = {\n    cmd = { 'puppet-languageserver', '--stdio' },\n    filetypes = { 'puppet' },\n    root_dir = util.root_pattern(unpack(root_files)),\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nLSP server for Puppet.\n\nInstallation:\n\n- Clone the editor-services repository:\n    https://github.com/puppetlabs/puppet-editor-services\n\n- Navigate into that directory and run: `bundle install`\n\n- Install the 'puppet-lint' gem: `gem install puppet-lint`\n\n- Add that repository to $PATH.\n\n- Ensure you can run `puppet-languageserver` from outside the editor-services directory.\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/purescriptls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'purescript-language-server', '--stdio' },\n    filetypes = { 'purescript' },\n    root_dir = util.root_pattern(\n      'bower.json',\n      'flake.nix',\n      'psc-package.json',\n      'shell.nix',\n      'spago.dhall',\n      'spago.yaml'\n    ),\n  },\n  docs = {\n    description = [[\nhttps://github.com/nwolverson/purescript-language-server\n\nThe `purescript-language-server` can be added to your project and `$PATH` via\n\n* JavaScript package manager such as npm, pnpm, Yarn, et al.\n* Nix under the `nodePackages` and `nodePackages_latest` package sets\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/pylsp.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'pylsp' },\n    filetypes = { 'python' },\n    root_dir = function(fname)\n      local root_files = {\n        'pyproject.toml',\n        'setup.py',\n        'setup.cfg',\n        'requirements.txt',\n        'Pipfile',\n      }\n      return util.root_pattern(unpack(root_files))(fname)\n        or vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/python-lsp/python-lsp-server\n\nA Python 3.6+ implementation of the Language Server Protocol.\n\nSee the [project's README](https://github.com/python-lsp/python-lsp-server) for installation instructions.\n\nConfiguration options are documented [here](https://github.com/python-lsp/python-lsp-server/blob/develop/CONFIGURATION.md).\nIn order to configure an option, it must be translated to a nested Lua table and included in the `settings` argument to the `setup{}` function.\nFor example, in order to set the `pylsp.plugins.pycodestyle.ignore` option:\n```lua\nrequire'lspconfig'.pylsp.setup{\n  settings = {\n    pylsp = {\n      plugins = {\n        pycodestyle = {\n          ignore = {'W391'},\n          maxLineLength = 100\n        }\n      }\n    }\n  }\n}\n```\n\nNote: This is a community fork of `pyls`.\n    ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/pylyzer.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require('lspconfig').util\n\nreturn {\n  default_config = {\n    cmd = { 'pylyzer', '--server' },\n    filetypes = { 'python' },\n    root_dir = function(fname)\n      local root_files = {\n        'setup.py',\n        'tox.ini',\n        'requirements.txt',\n        'Pipfile',\n        'pyproject.toml',\n      }\n      return util.root_pattern(unpack(root_files))(fname)\n        or vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n    settings = {\n      python = {\n        diagnostics = true,\n        inlayHints = true,\n        smartCompletion = true,\n        checkOnType = false,\n      },\n    },\n  },\n  docs = {\n    description = [[\n  https://github.com/mtshiba/pylyzer\n\n  `pylyzer`, a fast static code analyzer & language server for Python.\n    ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/pyre.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'pyre', 'persistent' },\n    filetypes = { 'python' },\n    root_dir = util.root_pattern '.pyre_configuration',\n  },\n  docs = {\n    description = [[\nhttps://pyre-check.org/\n\n`pyre` a static type checker for Python 3.\n\n`pyre` offers an extremely limited featureset. It currently only supports diagnostics,\nwhich are triggered on save.\n\nDo not report issues for missing features in `pyre` to `lspconfig`.\n\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/pyright.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nlocal root_files = {\n  'pyproject.toml',\n  'setup.py',\n  'setup.cfg',\n  'requirements.txt',\n  'Pipfile',\n  'pyrightconfig.json',\n  '.git',\n}\n\nlocal function organize_imports()\n  local params = {\n    command = 'pyright.organizeimports',\n    arguments = { vim.uri_from_bufnr(0) },\n  }\n\n  local clients = vim.lsp.get_clients {\n    bufnr = vim.api.nvim_get_current_buf(),\n    name = 'pyright',\n  }\n  for _, client in ipairs(clients) do\n    client.request('workspace/executeCommand', params, nil, 0)\n  end\nend\n\nlocal function set_python_path(path)\n  local clients = vim.lsp.get_clients {\n    bufnr = vim.api.nvim_get_current_buf(),\n    name = 'pyright',\n  }\n  for _, client in ipairs(clients) do\n    if client.settings then\n      client.settings.python = vim.tbl_deep_extend('force', client.settings.python, { pythonPath = path })\n    else\n      client.config.settings = vim.tbl_deep_extend('force', client.config.settings, { python = { pythonPath = path } })\n    end\n    client.notify('workspace/didChangeConfiguration', { settings = nil })\n  end\nend\n\nreturn {\n  default_config = {\n    cmd = { 'pyright-langserver', '--stdio' },\n    filetypes = { 'python' },\n    root_dir = function(fname)\n      return util.root_pattern(unpack(root_files))(fname)\n    end,\n    single_file_support = true,\n    settings = {\n      python = {\n        analysis = {\n          autoSearchPaths = true,\n          useLibraryCodeForTypes = true,\n          diagnosticMode = 'openFilesOnly',\n        },\n      },\n    },\n  },\n  commands = {\n    PyrightOrganizeImports = {\n      organize_imports,\n      description = 'Organize Imports',\n    },\n    PyrightSetPythonPath = {\n      set_python_path,\n      description = 'Reconfigure pyright with the provided python path',\n      nargs = 1,\n      complete = 'file',\n    },\n  },\n  docs = {\n    description = [[\nhttps://github.com/microsoft/pyright\n\n`pyright`, a static type checker and language server for python\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/qmlls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'qmlls' },\n    filetypes = { 'qml', 'qmljs' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://doc.qt.io/qt-6/qtqml-tooling-qmlls.html\n\n> QML Language Server is a tool shipped with Qt that helps you write code in your favorite (LSP-supporting) editor.\n\nSource in the [QtDeclarative repository](https://code.qt.io/cgit/qt/qtdeclarative.git/)\n        ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/quick_lint_js.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'quick-lint-js', '--lsp-server' },\n    filetypes = { 'javascript', 'typescript' },\n    root_dir = util.root_pattern('package.json', 'jsconfig.json', '.git'),\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://quick-lint-js.com/\n\nquick-lint-js finds bugs in JavaScript programs.\n\nSee installation [instructions](https://quick-lint-js.com/install/)\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/r_language_server.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'R', '--no-echo', '-e', 'languageserver::run()' },\n    filetypes = { 'r', 'rmd', 'quarto' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1]) or vim.uv.os_homedir()\n    end,\n    log_level = vim.lsp.protocol.MessageType.Warning,\n  },\n  docs = {\n    description = [[\n[languageserver](https://github.com/REditorSupport/languageserver) is an\nimplementation of the Microsoft's Language Server Protocol for the R\nlanguage.\n\nIt is released on CRAN and can be easily installed by\n\n```r\ninstall.packages(\"languageserver\")\n```\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/racket_langserver.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'racket', '--lib', 'racket-langserver' },\n    filetypes = { 'racket', 'scheme' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\n[https://github.com/jeapostrophe/racket-langserver](https://github.com/jeapostrophe/racket-langserver)\n\nThe Racket language server. This project seeks to use\n[DrRacket](https://github.com/racket/drracket)'s public API to provide\nfunctionality that mimics DrRacket's code tools as closely as possible.\n\nInstall via `raco`: `raco pkg install racket-langserver`\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/raku_navigator.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = {},\n    filetypes = { 'raku' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/bscan/RakuNavigator\nA Raku language server\n**By default, raku_navigator doesn't have a `cmd` set.** This is because nvim-lspconfig does not make assumptions about your path.\nYou have to install the language server manually.\nClone the RakuNavigator repo, install based on the [instructions](https://github.com/bscan/raku_Navigator#installation-for-other-editors),\nand point `cmd` to `server.js` inside the `server/out` directory:\n```lua\ncmd = {'node', '<path_to_repo>/server/out/server.js', '--stdio'}\n```\nAt minimum, you will need `raku` in your path. If you want to use a non-standard `raku` you will need to set your configuration like so:\n```lua\nsettings = {\n  raku_navigator = {\n    rakuPath = '/some/odd/location/my-raku'\n  }\n}\n```\nThe `contributes.configuration.properties` section of `raku_navigator`'s `package.json` has all available configuration settings. All\nsettings have a reasonable default, but, at minimum, you may want to point `raku_navigator` at your `raku_tidy` and `raku_critic` configurations.\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/reason_ls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'reason-language-server' },\n    filetypes = { 'reason' },\n    root_dir = util.root_pattern('bsconfig.json', '.git'),\n  },\n  docs = {\n    description = [[\nReason language server\n\nYou can install reason language server from [reason-language-server](https://github.com/jaredly/reason-language-server) repository.\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/regal.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'regal', 'language-server' },\n    filetypes = { 'rego' },\n    root_dir = function(fname)\n      return util.root_pattern '*.rego'(fname)\n        or vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/StyraInc/regal\n\nA linter for Rego, with support for running as an LSP server.\n\n`regal` can be installed by running:\n```sh\ngo install github.com/StyraInc/regal@latest\n```\n    ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/regols.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'regols' },\n    filetypes = { 'rego' },\n    root_dir = function(fname)\n      return util.root_pattern '*.rego'(fname)\n        or vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/kitagry/regols\n\nOPA Rego language server.\n\n`regols` can be installed by running:\n```sh\ngo install github.com/kitagry/regols@latest\n```\n    ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/relay_lsp.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\nlocal log = require 'vim.lsp.log'\n\nreturn {\n  default_config = {\n    -- (default: false) Whether or not we should automatically start the\n    -- Relay Compiler in watch mode when you open a project\n    auto_start_compiler = false,\n\n    -- (default: nil) Path to a relay config relative to the `root_dir`.\n    -- Without this, the compiler will search for your config. This is\n    -- helpful if your relay project is in a nested directory.\n    path_to_config = nil,\n\n    cmd = { 'relay-compiler', 'lsp' },\n    filetypes = {\n      'javascript',\n      'javascriptreact',\n      'typescript',\n      'typescriptreact',\n    },\n    root_dir = util.root_pattern('relay.config.*', 'package.json'),\n    on_new_config = function(config, root_dir)\n      local project_root = vim.fs.dirname(vim.fs.find('node_modules', { path = root_dir, upward = true })[1])\n      local node_bin_path = project_root .. '/node_modules/.bin'\n      local compiler_cmd = { node_bin_path .. '/relay-compiler', '--watch' }\n      local path = node_bin_path .. (vim.fn.has('win32') == 1 and ';' or ':') .. vim.env.PATH\n      if config.cmd_env then\n        config.cmd_env.PATH = path\n      else\n        config.cmd_env = { PATH = path }\n      end\n\n      if config.path_to_config then\n        config.path_to_config = vim.fs.normalize(config.path_to_config)\n        local path_to_config = table.concat({ root_dir, config.path_to_config }, '/')\n        if vim.uv.fs_stat(path_to_config) then\n          vim.list_extend(config.cmd, { config.path_to_config })\n          vim.list_extend(compiler_cmd, { config.path_to_config })\n        else\n          log.error \"[Relay LSP] Can't find Relay config file. Fallback to the default location...\"\n        end\n      end\n      if config.auto_start_compiler then\n        vim.fn.jobstart(compiler_cmd, {\n          on_exit = function()\n            log.info '[Relay LSP] Relay Compiler exited'\n          end,\n          cwd = project_root,\n        })\n      end\n    end,\n    handlers = {\n      ['window/showStatus'] = function(_, result)\n        if not result then\n          return {}\n        end\n        local log_message = string.format('[Relay LSP] %q', result.message)\n        if result.type == 1 then\n          log.error(log_message)\n        end\n        if result.type == 2 then\n          log.warn(log_message)\n        end\n        if result.type == 3 then\n          log.info(log_message)\n        end\n        return {}\n      end,\n    },\n  },\n  docs = {\n    description = [[\n    https://github.com/facebook/relay\n    `Relay` is a JavaScript framework for building data-driven React applications\n\n    Setup:\n\n    - Make sure you have a Relay config file somewhere in your project.\n    - We support standard config file formats (`.yml`, `.js`, `.json`), and the the `relay` field in your `package.json`\n    - Make sure you have the `relay-compiler` installed in your project. The bare minimum is v13.\n    - Make sure you are able to run the `relay-compiler` command from the command line. If `yarn relay-compiler` works, it's very likely that the LSP will work.\n    - Remove / disable any conflicting GraphQL LSPs you have installed.\n\n    Relay LSP is a part of the Relay Compiler binary and available when adding `relay-compiler` to your project's devDependencies.\n\n    ```lua\n    require'lspconfig'.relay_lsp.setup {\n      -- (default: false) Whether or not we should automatically start\n      -- the Relay Compiler in watch mode when you open a project\n      auto_start_compiler = false,\n\n\n      -- (default: null) Path to a relay config relative to the\n      -- `root_dir`. Without this, the compiler will search for your\n      -- config. This is helpful if your relay project is in a nested\n      -- directory.\n      path_to_config = nil,\n    }\n    ```\n    ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/remark_ls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'remark-language-server', '--stdio' },\n    filetypes = { 'markdown' },\n    root_dir = util.root_pattern(\n      '.remarkrc',\n      '.remarkrc.json',\n      '.remarkrc.js',\n      '.remarkrc.cjs',\n      '.remarkrc.mjs',\n      '.remarkrc.yml',\n      '.remarkrc.yaml',\n      '.remarkignore'\n    ),\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/remarkjs/remark-language-server\n\n`remark-language-server` can be installed via `npm`:\n```sh\nnpm install -g remark-language-server\n```\n\n`remark-language-server` uses the same\n[configuration files](https://github.com/remarkjs/remark/tree/main/packages/remark-cli#example-config-files-json-yaml-js)\nas `remark-cli`.\n\nThis uses a plugin based system. Each plugin needs to be installed locally using `npm` or `yarn`.\n\nFor example, given the following `.remarkrc.json`:\n\n```json\n{\n  \"presets\": [\n    \"remark-preset-lint-recommended\"\n  ]\n}\n```\n\n`remark-preset-lint-recommended` needs to be installed in the local project:\n\n```sh\nnpm install remark-preset-lint-recommended\n```\n\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/rescriptls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'rescript-language-server', '--stdio' },\n    filetypes = { 'rescript' },\n    root_dir = util.root_pattern('bsconfig.json', 'rescript.json', '.git'),\n    settings = {},\n    init_options = {\n      extensionConfiguration = {\n        -- buggy, prompts much too often, superseded by incrementalTypechecking, below\n        askToStartBuild = false,\n\n        allowBuiltInFormatter = true, -- lower latency\n        incrementalTypechecking = { -- removes the need for external build process\n          enabled = true,\n          acrossFiles = true,\n        },\n        cache = { projectConfig = { enabled = true } }, -- speed up latency dramatically\n        codeLens = true,\n        inlayHints = { enable = true },\n      },\n    },\n  },\n  docs = {\n    description = [[\nhttps://github.com/rescript-lang/rescript-vscode/tree/master/server\n\nReScript Language Server can be installed via npm:\n```sh\nnpm install -g @rescript/language-server\n```\n\nSee [package.json](https://github.com/rescript-lang/rescript-vscode/blob/master/package.json#L139)\nfor init_options supported.\n\nFor example, in order to disable the `inlayHints` option:\n```lua\nrequire'lspconfig'.pylsp.setup{\n  settings = {\n    rescript = {\n      settings = {\n        inlayHints = { enable = false },\n      },\n    },\n  }\n}\n```\n]],\n    root_dir = [[root_pattern('bsconfig.json', 'rescript.json', '.git')]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/rls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'rls' },\n    filetypes = { 'rust' },\n    root_dir = util.root_pattern 'Cargo.toml',\n  },\n  docs = {\n    description = [[\nhttps://github.com/rust-lang/rls\n\nrls, a language server for Rust\n\nSee https://github.com/rust-lang/rls#setup to setup rls itself.\nSee https://github.com/rust-lang/rls#configuration for rls-specific settings.\nAll settings listed on the rls configuration section of the readme\nmust be set under settings.rust as follows:\n\n```lua\nnvim_lsp.rls.setup {\n  settings = {\n    rust = {\n      unstable_features = true,\n      build_on_save = false,\n      all_features = true,\n    },\n  },\n}\n```\n\nIf you want to use rls for a particular build, eg nightly, set cmd as follows:\n\n```lua\ncmd = {\"rustup\", \"run\", \"nightly\", \"rls\"}\n```\n    ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/rnix.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'rnix-lsp' },\n    filetypes = { 'nix' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1]) or vim.uv.os_homedir()\n    end,\n    settings = {},\n    init_options = {},\n  },\n  docs = {\n    description = [[\nhttps://github.com/nix-community/rnix-lsp\n\nA language server for Nix providing basic completion and formatting via nixpkgs-fmt.\n\nTo install manually, run `cargo install rnix-lsp`. If you are using nix, rnix-lsp is in nixpkgs.\n\nThis server accepts configuration via the `settings` key.\n\n    ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/robotcode.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'robotcode', 'language-server' },\n    filetypes = { 'robot', 'resource' },\n    root_dir = util.root_pattern('robot.toml', 'pyproject.toml', 'Pipfile', '.git'),\n    single_file_support = true,\n    get_language_id = function(_, _)\n      return 'robotframework'\n    end,\n  },\n  docs = {\n    description = [[\nhttps://robotcode.io\n\nRobotCode - Language Server Protocol implementation for Robot Framework.\n]],\n    default_config = {\n      root_dir = \"util.root_pattern('robot.toml', 'pyproject.toml', 'Pipfile')(fname) or vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\",\n      settings = {},\n    },\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/robotframework_ls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'robotframework_ls' },\n    filetypes = { 'robot' },\n    root_dir = function(fname)\n      return util.root_pattern('robotidy.toml', 'pyproject.toml', 'conda.yaml', 'robot.yaml')(fname)\n        or vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n  },\n  docs = {\n    description = [[\nhttps://github.com/robocorp/robotframework-lsp\n\nLanguage Server Protocol implementation for Robot Framework.\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/roc_ls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'roc_language_server' },\n    filetypes = { 'roc' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/roc-lang/roc/tree/main/crates/language_server#roc_language_server\n\nThe built-in language server for the Roc programming language.\n[Installation](https://github.com/roc-lang/roc/tree/main/crates/language_server#installing)\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/rome.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'rome', 'lsp-proxy' },\n    filetypes = {\n      'javascript',\n      'javascriptreact',\n      'json',\n      'typescript',\n      'typescriptreact',\n    },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('package.json', { path = fname, upward = true })[1])\n        or vim.fs.dirname(vim.fs.find('node_modules', { path = fname, upward = true })[1])\n        or vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://rome.tools\n\nLanguage server for the Rome Frontend Toolchain.\n\n(Unmaintained, use [Biome](https://biomejs.dev/blog/annoucing-biome) instead.)\n\n```sh\nnpm install [-g] rome\n```\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/rpmspec.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'rpm_lsp_server', '--stdio' },\n    filetypes = { 'spec' },\n    single_file_support = true,\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    settings = {},\n  },\n  docs = {\n    description = [[\nhttps://github.com/dcermak/rpm-spec-language-server\n\nLanguage server protocol (LSP) support for RPM Spec files.\n\n`rpm-spec-language-server` can be installed by running,\n\n```sh\npip install rpm-spec-language-server\n```\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/rubocop.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'rubocop', '--lsp' },\n    filetypes = { 'ruby' },\n    root_dir = util.root_pattern('Gemfile', '.git'),\n  },\n  docs = {\n    description = [[\nhttps://github.com/rubocop/rubocop\n    ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/ruby_lsp.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'ruby-lsp' },\n    filetypes = { 'ruby', 'eruby' },\n    root_dir = util.root_pattern('Gemfile', '.git'),\n    init_options = {\n      formatter = 'auto',\n    },\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://shopify.github.io/ruby-lsp/\n\nThis gem is an implementation of the language server protocol specification for\nRuby, used to improve editor features.\n\nInstall the gem. There's no need to require it, since the server is used as a\nstandalone executable.\n\n```sh\ngem install ruby-lsp\n```\n    ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/ruff.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'ruff', 'server' },\n    filetypes = { 'python' },\n    root_dir = function(fname)\n      return util.root_pattern('pyproject.toml', 'ruff.toml', '.ruff.toml')(fname)\n        or vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n    settings = {},\n  },\n  docs = {\n    description = [[\nhttps://github.com/astral-sh/ruff\n\nA Language Server Protocol implementation for Ruff, an extremely fast Python linter and code formatter, written in Rust. It can be installed via `pip`.\n\n```sh\npip install ruff\n```\n\n**Available in Ruff `v0.4.5` in beta and stabilized in Ruff `v0.5.3`.**\n\nThis is the new built-in language server written in Rust. It supports the same feature set as `ruff-lsp`, but with superior performance and no installation required. Note that the `ruff-lsp` server will continue to be maintained until further notice.\n\nServer settings can be provided via:\n\n```lua\nrequire('lspconfig').ruff.setup({\n  init_options = {\n    settings = {\n      -- Server settings should go here\n    }\n  }\n})\n```\n\nRefer to the [documentation](https://docs.astral.sh/ruff/editors/) for more details.\n\n  ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/ruff_lsp.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'ruff-lsp' },\n    filetypes = { 'python' },\n    root_dir = function(fname)\n      return util.root_pattern('pyproject.toml', 'ruff.toml')(fname)\n        or vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n    settings = {},\n  },\n  docs = {\n    description = [[\nhttps://github.com/astral-sh/ruff-lsp\n\nA Language Server Protocol implementation for Ruff, an extremely fast Python linter and code transformation tool, written in Rust. It can be installed via pip.\n\n```sh\npip install ruff-lsp\n```\n\nExtra CLI arguments for `ruff` can be provided via\n\n```lua\nrequire'lspconfig'.ruff_lsp.setup{\n  init_options = {\n    settings = {\n      -- Any extra CLI arguments for `ruff` go here.\n      args = {},\n    }\n  }\n}\n```\n\n  ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/rune_languageserver.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'rune-languageserver' },\n    filetypes = { 'rune' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://crates.io/crates/rune-languageserver\n\nA language server for the [Rune](https://rune-rs.github.io/) Language,\nan embeddable dynamic programming language for Rust\n        ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/rust_analyzer.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\nlocal async = require 'lspconfig.async'\n\nlocal function reload_workspace(bufnr)\n  bufnr = util.validate_bufnr(bufnr)\n  local clients = vim.lsp.get_clients { bufnr = bufnr, name = 'rust_analyzer' }\n  for _, client in ipairs(clients) do\n    vim.notify 'Reloading Cargo Workspace'\n    client.request('rust-analyzer/reloadWorkspace', nil, function(err)\n      if err then\n        error(tostring(err))\n      end\n      vim.notify 'Cargo workspace reloaded'\n    end, 0)\n  end\nend\n\nlocal function is_library(fname)\n  local user_home = vim.fs.normalize(vim.env.HOME)\n  local cargo_home = os.getenv 'CARGO_HOME' or user_home .. '/.cargo'\n  local registry = cargo_home .. '/registry/src'\n  local git_registry = cargo_home .. '/git/checkouts'\n\n  local rustup_home = os.getenv 'RUSTUP_HOME' or user_home .. '/.rustup'\n  local toolchains = rustup_home .. '/toolchains'\n\n  for _, item in ipairs { toolchains, registry, git_registry } do\n    if util.path.is_descendant(item, fname) then\n      local clients = vim.lsp.get_clients { name = 'rust_analyzer' }\n      return #clients > 0 and clients[#clients].config.root_dir or nil\n    end\n  end\nend\n\nreturn {\n  default_config = {\n    cmd = { 'rust-analyzer' },\n    filetypes = { 'rust' },\n    single_file_support = true,\n    root_dir = function(fname)\n      local reuse_active = is_library(fname)\n      if reuse_active then\n        return reuse_active\n      end\n\n      local cargo_crate_dir = util.root_pattern 'Cargo.toml'(fname)\n      local cargo_workspace_root\n\n      if cargo_crate_dir ~= nil then\n        local cmd = {\n          'cargo',\n          'metadata',\n          '--no-deps',\n          '--format-version',\n          '1',\n          '--manifest-path',\n          cargo_crate_dir .. '/Cargo.toml',\n        }\n\n        local result = async.run_command(cmd)\n\n        if result and result[1] then\n          result = vim.json.decode(table.concat(result, ''))\n          if result['workspace_root'] then\n            cargo_workspace_root = vim.fs.normalize(result['workspace_root'])\n          end\n        end\n      end\n\n      return cargo_workspace_root\n        or cargo_crate_dir\n        or util.root_pattern 'rust-project.json'(fname)\n        or vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    capabilities = {\n      experimental = {\n        serverStatusNotification = true,\n      },\n    },\n    before_init = function(init_params, config)\n      -- See https://github.com/rust-lang/rust-analyzer/blob/eb5da56d839ae0a9e9f50774fa3eb78eb0964550/docs/dev/lsp-extensions.md?plain=1#L26\n      if config.settings and config.settings['rust-analyzer'] then\n        init_params.initializationOptions = config.settings['rust-analyzer']\n      end\n    end,\n  },\n  commands = {\n    CargoReload = {\n      function()\n        reload_workspace(0)\n      end,\n      description = 'Reload current cargo workspace',\n    },\n  },\n  docs = {\n    description = [[\nhttps://github.com/rust-lang/rust-analyzer\n\nrust-analyzer (aka rls 2.0), a language server for Rust\n\n\nSee [docs](https://rust-analyzer.github.io/book/configuration.html) for extra settings. The settings can be used like this:\n```lua\nrequire'lspconfig'.rust_analyzer.setup{\n  settings = {\n    ['rust-analyzer'] = {\n      diagnostics = {\n        enable = false;\n      }\n    }\n  }\n}\n```\n\nNote: do not set `init_options` for this LS config, it will be automatically populated by the contents of settings[\"rust-analyzer\"] per\nhttps://github.com/rust-lang/rust-analyzer/blob/eb5da56d839ae0a9e9f50774fa3eb78eb0964550/docs/dev/lsp-extensions.md?plain=1#L26.\n    ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/salt_ls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'salt_lsp_server' },\n    filetypes = { 'sls' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nLanguage server for Salt configuration files.\nhttps://github.com/dcermak/salt-lsp\n\nThe language server can be installed with `pip`:\n```sh\npip install salt-lsp\n```\n    ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/scheme_langserver.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\nlocal cmd = { 'scheme-langserver', '~/.scheme-langserver.log', 'enable', 'disable' }\nlocal root_files = {\n  'Akku.manifest',\n  '.git',\n}\n\nreturn {\n  default_config = {\n    cmd = cmd,\n    filetypes = { 'scheme' },\n    root_dir = util.root_pattern(unpack(root_files)),\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/ufo5260987423/scheme-langserver\n`scheme-langserver`, a language server protocol implementation for scheme.\nAnd for nvim user, please add .sls to scheme file extension list.\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/scry.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'scry' },\n    filetypes = { 'crystal' },\n    root_dir = function(fname)\n      return util.root_pattern 'shard.yml'(fname)\n        or vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/crystal-lang-tools/scry\n\nCrystal language server.\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/selene3p_ls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require('lspconfig.util')\n\nreturn {\n  default_config = {\n    cmd = { 'selene-3p-language-server' },\n    filetypes = { 'lua' },\n    root_dir = util.root_pattern('selene.toml'),\n  },\n  docs = {\n    description = [[\nhttps://github.com/antonk52/lua-3p-language-servers\n\n3rd party Language Server for Selene lua linter\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/serve_d.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'serve-d' },\n    filetypes = { 'd' },\n    root_dir = util.root_pattern('dub.json', 'dub.sdl', '.git'),\n  },\n  docs = {\n    description = [[\n           https://github.com/Pure-D/serve-d\n\n           `Microsoft language server protocol implementation for D using workspace-d.`\n           Download a binary from https://github.com/Pure-D/serve-d/releases and put it in your $PATH.\n        ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/shopify_theme_ls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nlocal root_files = {\n  '.shopifyignore',\n  '.theme-check.yml',\n  '.theme-check.yaml',\n  'shopify.theme.toml',\n}\n\nreturn {\n  default_config = {\n    cmd = {\n      'shopify',\n      'theme',\n      'language-server',\n    },\n    filetypes = { 'liquid' },\n    root_dir = util.root_pattern(unpack(root_files)),\n    settings = {},\n  },\n  docs = {\n    description = [[\nhttps://shopify.dev/docs/api/shopify-cli\n\n[Language Server](https://shopify.dev/docs/themes/tools/cli/language-server) and Theme Check (linter) for Shopify themes.\n\n`shopify` can be installed via npm `npm install -g @shopify/cli`.\n\nNote: This LSP already includes Theme Check so you don't need to use the `theme_check` server configuration as well.\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/sixtyfps.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'sixtyfps-lsp' },\n    filetypes = { 'sixtyfps' },\n    single_file_support = true,\n  },\n  docs = {\n    description = [=[\nhttps://github.com/sixtyfpsui/sixtyfps\n`SixtyFPS`'s language server\n\nYou can build and install `sixtyfps-lsp` binary with `cargo`:\n```sh\ncargo install sixtyfps-lsp\n```\n\nVim does not have built-in syntax for the `sixtyfps` filetype currently.\n\nThis can be added via an autocmd:\n\n```lua\nvim.cmd [[ autocmd BufRead,BufNewFile *.60 set filetype=sixtyfps ]]\n```\n\nor by installing a filetype plugin such as https://github.com/RustemB/sixtyfps-vim\n]=],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/slangd.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal bin_name = 'slangd'\n\nif vim.fn.has 'win32' == 1 then\n  bin_name = 'slangd.exe'\nend\n\nreturn {\n  default_config = {\n    cmd = { bin_name },\n    filetypes = { 'hlsl', 'shaderslang' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/shader-slang/slang\n\nThe `slangd` binary can be downloaded as part of [slang releases](https://github.com/shader-slang/slang/releases) or\nby [building `slang` from source](https://github.com/shader-slang/slang/blob/master/docs/building.md).\n\nThe server can be configured by passing a \"settings\" object to `slangd.setup{}`:\n\n```lua\nrequire('lspconfig').slangd.setup{\n  settings = {\n    slang = {\n      predefinedMacros = {\"MY_VALUE_MACRO=1\"},\n      inlayHints = {\n        deducedTypes = true,\n        parameterNames = true,\n      }\n    }\n  }\n}\n```\nAvailable options are documented [here](https://github.com/shader-slang/slang-vscode-extension/tree/main?tab=readme-ov-file#configurations)\nor in more detail [here](https://github.com/shader-slang/slang-vscode-extension/blob/main/package.json#L70).\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/slint_lsp.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'slint-lsp' },\n    filetypes = { 'slint' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n  },\n  docs = {\n    description = [=[\nhttps://github.com/slint-ui/slint\n`Slint`'s language server\n\nYou can build and install `slint-lsp` binary with `cargo`:\n```sh\ncargo install slint-lsp\n```\n\nVim does not have built-in syntax for the `slint` filetype at this time.\n\nThis can be added via an autocmd:\n\n```lua\nvim.cmd [[ autocmd BufRead,BufNewFile *.slint set filetype=slint ]]\n```\n]=],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/smarty_ls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'smarty-language-server', '--stdio' },\n    filetypes = { 'smarty' },\n    root_dir = function(pattern)\n      local cwd = vim.uv.cwd()\n      local root = util.root_pattern('composer.json', '.git')(pattern)\n\n      -- prefer cwd if root is a descendant\n      return util.path.is_descendant(cwd, root) and cwd or root\n    end,\n    settings = {\n      smarty = {\n        pluginDirs = {},\n      },\n      css = {\n        validate = true,\n      },\n    },\n    init_options = {\n      storageDir = nil,\n    },\n  },\n  docs = {\n    description = [[\nhttps://github.com/landeaux/vscode-smarty-langserver-extracted\n\nLanguage server for Smarty.\n\n`smarty-language-server` can be installed via `npm`:\n\n```sh\nnpm i -g vscode-smarty-langserver-extracted\n```\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/smithy_ls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\n-- pass 0 as the first argument to use STDIN/STDOUT for communication\nlocal cmd = { 'smithy-language-server', '0' }\n\nreturn {\n  default_config = {\n    cmd = cmd,\n    filetypes = { 'smithy' },\n    single_file_support = true,\n    root_dir = util.root_pattern('smithy-build.json', 'build.gradle', 'build.gradle.kts', '.git'),\n  },\n  docs = {\n    description = [[\nhttps://github.com/awslabs/smithy-language-server\n\n`Smithy Language Server`, A Language Server Protocol implementation for the Smithy IDL\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/snakeskin_ls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'snakeskin-cli', 'lsp', '--stdio' },\n    filetypes = { 'ss' },\n    root_dir = util.root_pattern 'package.json',\n  },\n  docs = {\n    description = [[\nhttps://www.npmjs.com/package/@snakeskin/cli\n\n`snakeskin cli` can be installed via `npm`:\n```sh\nnpm install -g @snakeskin/cli\n```\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/snyk_ls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'snyk-ls' },\n    root_dir = util.root_pattern('.git', '.snyk'),\n    filetypes = {\n      'go',\n      'gomod',\n      'javascript',\n      'typescript',\n      'json',\n      'python',\n      'requirements',\n      'helm',\n      'yaml',\n      'terraform',\n      'terraform-vars',\n    },\n    single_file_support = true,\n    settings = {},\n    -- Configuration from https://github.com/snyk/snyk-ls#configuration-1\n    init_options = {\n      activateSnykCode = 'true',\n    },\n  },\n  docs = {\n    description = [[\nhttps://github.com/snyk/snyk-ls\n\nLSP for Snyk Open Source, Snyk Infrastructure as Code, and Snyk Code.\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/solang.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'solang', 'language-server', '--target', 'evm' },\n    filetypes = { 'solidity' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n  },\n  docs = {\n    description = [[\nA language server for Solidity\n\nSee the [documentation](https://solang.readthedocs.io/en/latest/installing.html) for installation instructions.\n\nThe language server only provides the following capabilities:\n* Syntax highlighting\n* Diagnostics\n* Hover\n\nThere is currently no support for completion, goto definition, references, or other functionality.\n\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/solargraph.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'solargraph', 'stdio' },\n    settings = {\n      solargraph = {\n        diagnostics = true,\n      },\n    },\n    init_options = { formatting = true },\n    filetypes = { 'ruby' },\n    root_dir = util.root_pattern('Gemfile', '.git'),\n  },\n  docs = {\n    description = [[\nhttps://solargraph.org/\n\nsolargraph, a language server for Ruby\n\nYou can install solargraph via gem install.\n\n```sh\ngem install --user-install solargraph\n```\n    ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/solc.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'solc', '--lsp' },\n    filetypes = { 'solidity' },\n    root_dir = util.root_pattern('hardhat.config.*', '.git'),\n  },\n  docs = {\n    description = [[\nhttps://docs.soliditylang.org/en/latest/installing-solidity.html\n\nsolc is the native language server for the Solidity language.\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/solidity.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'solidity-ls', '--stdio' },\n    filetypes = { 'solidity' },\n    root_dir = util.root_pattern('.git', 'package.json'),\n    settings = { solidity = { includePath = '', remapping = {} } },\n  },\n  docs = {\n    description = [[\nhttps://github.com/qiuxiang/solidity-ls\n\nnpm i solidity-ls -g\n\nMake sure that solc is installed and it's the same version of the file.  solc-select is recommended.\n\nSolidity language server is a LSP with autocomplete, go to definition and diagnostics.\n\nIf you use brownie, use this root_dir:\nroot_dir = util.root_pattern('brownie-config.yaml', '.git')\n\non includePath, you can add an extra path to search for external libs, on remapping you can remap lib <> path, like:\n\n```lua\n{ solidity = { includePath = '/Users/your_user/.brownie/packages/', remapping = { [\"@OpenZeppelin/\"] = 'OpenZeppelin/openzeppelin-contracts@4.6.0/' } } }\n```\n\n**For brownie users**\nChange the root_dir to:\n\n```lua\nroot_pattern(\"brownie-config.yaml\", \".git\")\n```\n\nThe best way of using it is to have a package.json in your project folder with the packages that you will use.\nAfter installing with package.json, just create a `remappings.txt` with:\n\n```\n@OpenZeppelin/=node_modules/OpenZeppelin/openzeppelin-contracts@4.6.0/\n```\n\nYou can omit the node_modules as well.\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/solidity_ls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nlocal root_files = {\n  'hardhat.config.js',\n  'hardhat.config.ts',\n  'foundry.toml',\n  'remappings.txt',\n  'truffle.js',\n  'truffle-config.js',\n  'ape-config.yaml',\n}\n\nreturn {\n  default_config = {\n    cmd = { 'vscode-solidity-server', '--stdio' },\n    filetypes = { 'solidity' },\n    root_dir = util.root_pattern(unpack(root_files)) or util.root_pattern('.git', 'package.json'),\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/juanfranblanco/vscode-solidity\n\n`vscode-solidity-server` can be installed via `npm`:\n\n```sh\nnpm install -g vscode-solidity-server\n```\n\n`vscode-solidity-server` is a language server for the Solidity language ported from the VSCode \"solidity\" extension.\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/solidity_ls_nomicfoundation.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nlocal root_files = {\n  'hardhat.config.js',\n  'hardhat.config.ts',\n  'foundry.toml',\n  'remappings.txt',\n  'truffle.js',\n  'truffle-config.js',\n  'ape-config.yaml',\n}\n\nreturn {\n  default_config = {\n    cmd = { 'nomicfoundation-solidity-language-server', '--stdio' },\n    filetypes = { 'solidity' },\n    root_dir = util.root_pattern(unpack(root_files)) or util.root_pattern('.git', 'package.json'),\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/NomicFoundation/hardhat-vscode/blob/development/server/README.md\n\n`nomicfoundation-solidity-language-server` can be installed via `npm`:\n\n```sh\nnpm install -g @nomicfoundation/solidity-language-server\n```\n\nA language server for the Solidity programming language, built by the Nomic Foundation for the Ethereum community.\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/somesass_ls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    name = 'somesass_ls',\n    cmd = { 'some-sass-language-server', '--stdio' },\n    filetypes = { 'scss', 'sass' },\n    root_dir = util.root_pattern('.git', '.package.json'),\n    single_file_support = true,\n    settings = {\n      somesass = {\n        suggestAllFromOpenDocument = true,\n      },\n    },\n  },\n  docs = {\n    description = [[\n\nhttps://github.com/wkillerud/some-sass/tree/main/packages/language-server\n\n`some-sass-language-server` can be installed via `npm`:\n\n```sh\nnpm i -g some-sass-language-server\n```\n\nThe language server provides:\n\n- Full support for @use and @forward, including aliases, prefixes and hiding.\n- Workspace-wide code navigation and refactoring, such as Rename Symbol.\n- Rich documentation through SassDoc.\n- Language features for %placeholder-selectors, both when using them and writing them.\n- Suggestions and hover info for built-in Sass modules, when used with @use.\n\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/sorbet.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'srb', 'tc', '--lsp' },\n    filetypes = { 'ruby' },\n    root_dir = util.root_pattern('Gemfile', '.git'),\n  },\n  docs = {\n    description = [[\nhttps://sorbet.org\n\nSorbet is a fast, powerful type checker designed for Ruby.\n\nYou can install Sorbet via gem install. You might also be interested in how to set\nSorbet up for new projects: https://sorbet.org/docs/adopting.\n\n```sh\ngem install sorbet\n```\n    ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/sourcekit.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'sourcekit-lsp' },\n    filetypes = { 'swift', 'objc', 'objcpp', 'c', 'cpp' },\n    root_dir = function(filename, _)\n      return util.root_pattern 'buildServer.json'(filename)\n        or util.root_pattern('*.xcodeproj', '*.xcworkspace')(filename)\n        -- better to keep it at the end, because some modularized apps contain multiple Package.swift files\n        or util.root_pattern('compile_commands.json', 'Package.swift')(filename)\n        or vim.fs.dirname(vim.fs.find('.git', { path = filename, upward = true })[1])\n    end,\n    get_language_id = function(_, ftype)\n      local t = { objc = 'objective-c', objcpp = 'objective-cpp' }\n      return t[ftype] or ftype\n    end,\n    capabilities = {\n      workspace = {\n        didChangeWatchedFiles = {\n          dynamicRegistration = true,\n        },\n      },\n      textDocument = {\n        diagnostic = {\n          dynamicRegistration = true,\n          relatedDocumentSupport = true,\n        },\n      },\n    },\n  },\n  docs = {\n    description = [[\nhttps://github.com/swiftlang/sourcekit-lsp\n\nLanguage server for Swift and C/C++/Objective-C.\n    ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/sourcery.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nlocal root_files = {\n  'pyproject.toml',\n  'setup.py',\n  'setup.cfg',\n  'requirements.txt',\n  'Pipfile',\n  'pyrightconfig.json',\n}\n\nlocal token_in_auth_file = function()\n  local is_windows = vim.fn.has 'win32' == 1\n  local path_sep = is_windows and '\\\\' or '/'\n\n  local config_home = is_windows and vim.fn.getenv 'APPDATA' or vim.fn.expand '~/.config'\n  local auth_file_path = config_home .. path_sep .. 'sourcery' .. path_sep .. 'auth.yaml'\n\n  if vim.fn.filereadable(auth_file_path) == 1 then\n    local content = vim.fn.readfile(auth_file_path)\n    for _, line in ipairs(content) do\n      if line:match 'sourcery_token: (.+)' then\n        return true\n      end\n    end\n  end\n\n  return false\nend\n\nreturn {\n  default_config = {\n    cmd = { 'sourcery', 'lsp' },\n    filetypes = { 'javascript', 'javascriptreact', 'python', 'typescript', 'typescriptreact' },\n    init_options = {\n      editor_version = 'vim',\n      extension_version = 'vim.lsp',\n      token = nil,\n    },\n    root_dir = function(fname)\n      return util.root_pattern(unpack(root_files))(fname)\n        or vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n  },\n  on_new_config = function(new_config, _)\n    if not new_config.init_options.token and not token_in_auth_file() then\n      local notify = vim.notify_once or vim.notify\n      notify(\n        '[lspconfig] The authentication token must be provided in config.init_options or configured via \"sourcery login\"',\n        vim.log.levels.ERROR\n      )\n    end\n  end,\n  docs = {\n    description = [[\nhttps://github.com/sourcery-ai/sourcery\n\nRefactor Python instantly using the power of AI.\n\nIt requires the init_options param to be populated as shown below and will respond with the list of ServerCapabilities that it supports:\n\n```lua\nrequire'lspconfig'.sourcery.setup {\n    init_options = {\n        --- The Sourcery token for authenticating the user.\n        --- This is retrieved from the Sourcery website and must be\n        --- provided by each user. The extension must provide a\n        --- configuration option for the user to provide this value.\n        token = <YOUR_TOKEN>,\n\n        --- The extension's name and version as defined by the extension.\n        extension_version = 'vim.lsp',\n\n        --- The editor's name and version as defined by the editor.\n        editor_version = 'vim',\n    },\n}\n```\n\nAlternatively, you can login to sourcery by running `sourcery login` with sourcery-cli.\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/spectral.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nlocal bin_name = 'spectral-language-server'\n\nreturn {\n  default_config = {\n    cmd = { bin_name, '--stdio' },\n    filetypes = { 'yaml', 'json', 'yml' },\n    root_dir = util.root_pattern('.spectral.yaml', '.spectral.yml', '.spectral.json', '.spectral.js'),\n    single_file_support = true,\n    settings = {\n      enable = true,\n      run = 'onType',\n      validateLanguages = { 'yaml', 'json', 'yml' },\n    },\n  },\n  docs = {\n    description = [[\nhttps://github.com/luizcorreia/spectral-language-server\n `A flexible JSON/YAML linter for creating automated style guides, with baked in support for OpenAPI v2 & v3.`\n\n`spectral-language-server` can be installed via `npm`:\n```sh\nnpm i -g spectral-language-server\n```\nSee [vscode-spectral](https://github.com/stoplightio/vscode-spectral#extension-settings) for configuration options.\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/spyglassmc_language_server.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'spyglassmc-language-server', '--stdio' },\n    filetypes = { 'mcfunction' },\n    root_dir = util.root_pattern 'pack.mcmeta',\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/SpyglassMC/Spyglass/tree/main/packages/language-server\n\nLanguage server for Minecraft datapacks.\n\n`spyglassmc-language-server` can be installed via `npm`:\n\n```sh\nnpm i -g @spyglassmc/language-server\n```\n\nYou may also need to configure the filetype:\n\n`autocmd BufNewFile,BufRead *.mcfunction set filetype=mcfunction`\n\nThis is automatically done by [CrystalAlpha358/vim-mcfunction](https://github.com/CrystalAlpha358/vim-mcfunction), which also provide syntax highlight.\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/sqlls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'sql-language-server', 'up', '--method', 'stdio' },\n    filetypes = { 'sql', 'mysql' },\n    root_dir = util.root_pattern '.sqllsrc.json',\n    settings = {},\n  },\n  docs = {\n    description = [[\nhttps://github.com/joe-re/sql-language-server\n\nThis LSP can be installed via  `npm`. Find further instructions on manual installation of the sql-language-server at [joe-re/sql-language-server](https://github.com/joe-re/sql-language-server).\n<br>\n    ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/sqls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'sqls' },\n    filetypes = { 'sql', 'mysql' },\n    root_dir = util.root_pattern 'config.yml',\n    single_file_support = true,\n    settings = {},\n  },\n  docs = {\n    description = [[\nhttps://github.com/sqls-server/sqls\n\n```lua\nrequire'lspconfig'.sqls.setup{\n  cmd = {\"path/to/command\", \"-config\", \"path/to/config.yml\"};\n  ...\n}\n```\nSqls can be installed via `go install github.com/sqls-server/sqls@latest`. Instructions for compiling Sqls from the source can be found at [sqls-server/sqls](https://github.com/sqls-server/sqls).\n\n    ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/standardrb.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'standardrb', '--lsp' },\n    filetypes = { 'ruby' },\n    root_dir = util.root_pattern('Gemfile', '.git'),\n  },\n  docs = {\n    description = [[\nhttps://github.com/testdouble/standard\n\nRuby Style Guide, with linter & automatic code fixer.\n    ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/starlark_rust.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'starlark', '--lsp' },\n    filetypes = { 'star', 'bzl', 'BUILD.bazel' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n  },\n  docs = {\n    description = [[\nhttps://github.com/facebookexperimental/starlark-rust/\nThe LSP part of `starlark-rust` is not currently documented,\n but the implementation works well for linting.\nThis gives valuable warnings for potential issues in the code,\nbut does not support refactorings.\n\nIt can be installed with cargo: https://crates.io/crates/starlark\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/starpls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig/util'\n\nreturn {\n  default_config = {\n    cmd = { 'starpls' },\n    filetypes = { 'bzl' },\n    root_dir = util.root_pattern('WORKSPACE', 'WORKSPACE.bazel', 'MODULE.bazel'),\n  },\n  docs = {\n    description = [[\nhttps://github.com/withered-magic/starpls\n\n`starpls` is an LSP implementation for Starlark. Installation instructions can be found in the project's README.\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/statix.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'statix', 'check', '--stdin' },\n    filetypes = { 'nix' },\n    single_file_support = true,\n    root_dir = util.root_pattern('flake.nix', '.git'),\n  },\n  docs = {\n    description = [[\nhttps://github.com/nerdypepper/statix\n\nlints and suggestions for the nix programming language\n    ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/steep.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'steep', 'langserver' },\n    filetypes = { 'ruby', 'eruby' },\n    root_dir = util.root_pattern('Steepfile', '.git'),\n  },\n  docs = {\n    description = [[\nhttps://github.com/soutaro/steep\n\n`steep` is a static type checker for Ruby.\n\nYou need `Steepfile` to make it work. Generate it with `steep init`.\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/stimulus_ls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'stimulus-language-server', '--stdio' },\n    filetypes = { 'html', 'ruby', 'eruby', 'blade', 'php' },\n    root_dir = util.root_pattern('Gemfile', '.git'),\n  },\n  docs = {\n    description = [[\nhttps://www.npmjs.com/package/stimulus-language-server\n\n`stimulus-lsp` can be installed via `npm`:\n\n```sh\nnpm install -g stimulus-language-server\n```\n\nor via `yarn`:\n\n```sh\nyarn global add stimulus-language-server\n```\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/stylelint_lsp.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nlocal root_file = {\n  '.stylelintrc',\n  '.stylelintrc.mjs',\n  '.stylelintrc.cjs',\n  '.stylelintrc.js',\n  '.stylelintrc.json',\n  '.stylelintrc.yaml',\n  '.stylelintrc.yml',\n  'stylelint.config.mjs',\n  'stylelint.config.cjs',\n  'stylelint.config.js',\n}\n\nroot_file = util.insert_package_json(root_file, 'stylelint')\n\nreturn {\n  default_config = {\n    cmd = { 'stylelint-lsp', '--stdio' },\n    filetypes = {\n      'astro',\n      'css',\n      'html',\n      'less',\n      'scss',\n      'sugarss',\n      'vue',\n      'wxss',\n    },\n    root_dir = util.root_pattern(unpack(root_file)),\n    settings = {},\n  },\n  docs = {\n    description = [[\nhttps://github.com/bmatcuk/stylelint-lsp\n\n`stylelint-lsp` can be installed via `npm`:\n\n```sh\nnpm i -g stylelint-lsp\n```\n\nCan be configured by passing a `settings.stylelintplus` object to `stylelint_lsp.setup`:\n\n```lua\nrequire'lspconfig'.stylelint_lsp.setup{\n  settings = {\n    stylelintplus = {\n      -- see available options in stylelint-lsp documentation\n    }\n  }\n}\n```\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/stylua3p_ls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require('lspconfig.util')\n\nreturn {\n  default_config = {\n    cmd = { 'stylua-3p-language-server' },\n    filetypes = { 'lua' },\n    root_dir = util.root_pattern('.stylua.toml', 'stylua.toml'),\n  },\n  docs = {\n    description = [[\nhttps://github.com/antonk52/lua-3p-language-servers\n\n3rd party Language Server for Stylua lua formatter\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/superhtml.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'superhtml', 'lsp' },\n    filetypes = { 'superhtml', 'html' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/kristoff-it/superhtml\n\nHTML Language Server & Templating Language Library\n\nThis LSP is designed to tightly adhere to the HTML spec as well as enforcing\nsome additional rules that ensure HTML clarity.\n\nIf you want to disable HTML support for another HTML LSP, add the following\nto your configuration:\n\n```lua\nrequire'lspconfig'.superhtml.setup {\n  filetypes = { 'superhtml' }\n}\n```\n        ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/svelte.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nlocal function migrate_to_svelte_5()\n  local clients = vim.lsp.get_clients({\n    bufnr = 0,\n    name = 'svelte',\n  })\n  for _, client in ipairs(clients) do\n    client:exec_cmd({\n      command = 'migrate_to_svelte_5',\n      arguments = { vim.uri_from_bufnr(0) },\n    })\n  end\nend\n\nreturn {\n  default_config = {\n    cmd = { 'svelteserver', '--stdio' },\n    filetypes = { 'svelte' },\n    root_dir = util.root_pattern('package.json', '.git'),\n  },\n  commands = {\n    MigrateToSvelte5 = {\n      migrate_to_svelte_5,\n      description = 'Migrate Component to Svelte 5 Syntax',\n    },\n  },\n  docs = {\n    description = [[\nhttps://github.com/sveltejs/language-tools/tree/master/packages/language-server\n\nNote: assuming that [ts_ls](#ts_ls) is setup, full JavaScript/TypeScript support (find references, rename, etc of symbols in Svelte files when working in JS/TS files) requires per-project installation and configuration of [typescript-svelte-plugin](https://github.com/sveltejs/language-tools/tree/master/packages/typescript-plugin#usage).\n\n`svelte-language-server` can be installed via `npm`:\n```sh\nnpm install -g svelte-language-server\n```\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/svlangserver.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nlocal function build_index()\n  local params = {\n    command = 'systemverilog.build_index',\n  }\n  vim.lsp.buf.execute_command(params)\nend\n\nlocal function report_hierarchy()\n  local params = {\n    command = 'systemverilog.report_hierarchy',\n    arguments = { vim.fn.expand '<cword>' },\n  }\n  vim.lsp.buf.execute_command(params)\nend\n\nreturn {\n  default_config = {\n    cmd = { 'svlangserver' },\n    filetypes = { 'verilog', 'systemverilog' },\n    root_dir = function(fname)\n      return util.root_pattern '.svlangserver'(fname)\n        or vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n    settings = {\n      systemverilog = {\n        includeIndexing = { '*.{v,vh,sv,svh}', '**/*.{v,vh,sv,svh}' },\n      },\n    },\n  },\n  commands = {\n    SvlangserverBuildIndex = {\n      build_index,\n      description = 'Instructs language server to rerun indexing',\n    },\n    SvlangserverReportHierarchy = {\n      report_hierarchy,\n      description = 'Generates hierarchy for the given module',\n    },\n  },\n  docs = {\n    description = [[\nhttps://github.com/imc-trading/svlangserver\n\nLanguage server for SystemVerilog.\n\n`svlangserver` can be installed via `npm`:\n\n```sh\n$ npm install -g @imc-trading/svlangserver\n```\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/svls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'svls' },\n    filetypes = { 'verilog', 'systemverilog' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n  },\n  docs = {\n    description = [[\nhttps://github.com/dalance/svls\n\nLanguage server for verilog and SystemVerilog\n\n`svls` can be installed via `cargo`:\n ```sh\n cargo install svls\n ```\n    ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/swift_mesonls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'Swift-MesonLSP', '--lsp' },\n    filetypes = { 'meson' },\n    root_dir = util.root_pattern('meson.build', 'meson_options.txt', 'meson.options', '.git'),\n  },\n  docs = {\n    description = [[\nhttps://github.com/JCWasmx86/Swift-MesonLSP\n\nMeson language server written in Swift\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/syntax_tree.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'stree', 'lsp' },\n    filetypes = { 'ruby' },\n    root_dir = util.root_pattern('.streerc', 'Gemfile', '.git'),\n  },\n  docs = {\n    description = [[\nhttps://ruby-syntax-tree.github.io/syntax_tree/\n\nA fast Ruby parser and formatter.\n\nSyntax Tree is a suite of tools built on top of the internal CRuby parser. It\nprovides the ability to generate a syntax tree from source, as well as the\ntools necessary to inspect and manipulate that syntax tree. It can be used to\nbuild formatters, linters, language servers, and more.\n\n```sh\ngem install syntax_tree\n```\n    ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/systemd_ls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'systemd-language-server' },\n    filetypes = { 'systemd' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/psacawa/systemd-language-server\n\n`systemd-language-server` can be installed via `pip`:\n```sh\npip install systemd-language-server\n```\n\nLanguage Server for Systemd unit files\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/tabby_ml.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'tabby-agent', '--lsp', '--stdio' },\n    filetypes = {},\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://tabby.tabbyml.com/blog/running-tabby-as-a-language-server\n\nLanguage server for Tabby, an opensource, self-hosted AI coding assistant.\n\n`tabby-agent` can be installed via `npm`:\n\n```sh\nnpm install --global tabby-agent\n```\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/tailwindcss.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'tailwindcss-language-server', '--stdio' },\n    -- filetypes copied and adjusted from tailwindcss-intellisense\n    filetypes = {\n      -- html\n      'aspnetcorerazor',\n      'astro',\n      'astro-markdown',\n      'blade',\n      'clojure',\n      'django-html',\n      'htmldjango',\n      'edge',\n      'eelixir', -- vim ft\n      'elixir',\n      'ejs',\n      'erb',\n      'eruby', -- vim ft\n      'gohtml',\n      'gohtmltmpl',\n      'haml',\n      'handlebars',\n      'hbs',\n      'html',\n      'htmlangular',\n      'html-eex',\n      'heex',\n      'jade',\n      'leaf',\n      'liquid',\n      'markdown',\n      'mdx',\n      'mustache',\n      'njk',\n      'nunjucks',\n      'php',\n      'razor',\n      'slim',\n      'twig',\n      -- css\n      'css',\n      'less',\n      'postcss',\n      'sass',\n      'scss',\n      'stylus',\n      'sugarss',\n      -- js\n      'javascript',\n      'javascriptreact',\n      'reason',\n      'rescript',\n      'typescript',\n      'typescriptreact',\n      -- mixed\n      'vue',\n      'svelte',\n      'templ',\n    },\n    settings = {\n      tailwindCSS = {\n        validate = true,\n        lint = {\n          cssConflict = 'warning',\n          invalidApply = 'error',\n          invalidScreen = 'error',\n          invalidVariant = 'error',\n          invalidConfigPath = 'error',\n          invalidTailwindDirective = 'error',\n          recommendedVariantOrder = 'warning',\n        },\n        classAttributes = {\n          'class',\n          'className',\n          'class:list',\n          'classList',\n          'ngClass',\n        },\n        includeLanguages = {\n          eelixir = 'html-eex',\n          eruby = 'erb',\n          templ = 'html',\n          htmlangular = 'html',\n        },\n      },\n    },\n    on_new_config = function(new_config)\n      if not new_config.settings then\n        new_config.settings = {}\n      end\n      if not new_config.settings.editor then\n        new_config.settings.editor = {}\n      end\n      if not new_config.settings.editor.tabSize then\n        -- set tab size for hover\n        new_config.settings.editor.tabSize = vim.lsp.util.get_effective_tabstop()\n      end\n    end,\n    root_dir = function(fname)\n      local root_file = {\n        'tailwind.config.js',\n        'tailwind.config.cjs',\n        'tailwind.config.mjs',\n        'tailwind.config.ts',\n        'postcss.config.js',\n        'postcss.config.cjs',\n        'postcss.config.mjs',\n        'postcss.config.ts',\n      }\n      root_file = util.insert_package_json(root_file, 'tailwindcss', fname)\n      return util.root_pattern(unpack(root_file))(fname)\n    end,\n  },\n  docs = {\n    description = [[\nhttps://github.com/tailwindlabs/tailwindcss-intellisense\n\nTailwind CSS Language Server can be installed via npm:\n```sh\nnpm install -g @tailwindcss/language-server\n```\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/taplo.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'taplo', 'lsp', 'stdio' },\n    filetypes = { 'toml' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://taplo.tamasfe.dev/cli/usage/language-server.html\n\nLanguage server for Taplo, a TOML toolkit.\n\n`taplo-cli` can be installed via `cargo`:\n```sh\ncargo install --features lsp --locked taplo-cli\n```\n    ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/tblgen_lsp_server.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nlocal function get_command()\n  local cmd = { 'tblgen-lsp-server' }\n  local files = vim.fs.find('tablegen_compile_commands.yml', { path = vim.fn.expand('%:p:h'), upward = true })\n  if #files > 0 then\n    local file = files[1]\n    table.insert(cmd, '--tablegen-compilation-database=' .. vim.fs.dirname(file) .. '/tablegen_compile_commands.yml')\n  end\n\n  return cmd\nend\n\nreturn {\n  default_config = {\n    cmd = get_command(),\n    filetypes = { 'tablegen' },\n    root_dir = function(fname)\n      return util.root_pattern 'tablegen_compile_commands.yml'(fname)\n        or vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n  },\n  docs = {\n    description = [[\nhttps://mlir.llvm.org/docs/Tools/MLIRLSP/#tablegen-lsp-language-server--tblgen-lsp-server\n\nThe Language Server for the LLVM TableGen language\n\n`tblgen-lsp-server` can be installed at the llvm-project repository (https://github.com/llvm/llvm-project)\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/teal_ls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = {\n      'teal-language-server',\n    },\n    filetypes = {\n      'teal',\n    },\n    root_dir = util.root_pattern 'tlconfig.lua',\n  },\n  docs = {\n    description = [[\nhttps://github.com/teal-language/teal-language-server\n\nInstall with:\n```\nluarocks install teal-language-server\n```\n\nOptional Command Args:\n* \"--log-mode=by_date\" - Enable logging in $HOME/.cache/teal-language-server. Log name will be date + pid of process\n* \"--log-mode=by_proj_path\" - Enable logging in $HOME/.cache/teal-language-server. Log name will be project path + pid of process\n* \"--verbose=true\" - Increases log level.  Does nothing unless log-mode is set\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/templ.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'templ', 'lsp' },\n    filetypes = { 'templ' },\n    root_dir = function(fname)\n      return util.root_pattern('go.work', 'go.mod', '.git')(fname)\n    end,\n  },\n  docs = {\n    description = [[\nhttps://templ.guide\n\nThe official language server for the templ HTML templating language.\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/terraform_lsp.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'terraform-lsp' },\n    filetypes = { 'terraform', 'hcl' },\n    root_dir = util.root_pattern('.terraform', '.git'),\n  },\n  docs = {\n    description = [[\nhttps://github.com/juliosueiras/terraform-lsp\n\nTerraform language server\nDownload a released binary from\nhttps://github.com/juliosueiras/terraform-lsp/releases.\n\nFrom https://github.com/hashicorp/terraform-ls#terraform-ls-vs-terraform-lsp:\n\nBoth HashiCorp and the maintainer of terraform-lsp expressed interest in\ncollaborating on a language server and are working towards a _long-term_\ngoal of a single stable and feature-complete implementation.\n\nFor the time being both projects continue to exist, giving users the\nchoice:\n\n- `terraform-ls` providing\n  - overall stability (by relying only on public APIs)\n  - compatibility with any provider and any Terraform >=0.12.0 currently\n    less features\n  - due to project being younger and relying on public APIs which may\n    not offer the same functionality yet\n\n- `terraform-lsp` providing\n  - currently more features\n  - compatibility with a single particular Terraform (0.12.20 at time of writing)\n    - configs designed for other 0.12 versions may work, but interpretation may be inaccurate\n  - less stability (due to reliance on Terraform's own internal packages)\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/terraformls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'terraform-ls', 'serve' },\n    filetypes = { 'terraform', 'terraform-vars' },\n    root_dir = util.root_pattern('.terraform', '.git'),\n  },\n  docs = {\n    description = [[\nhttps://github.com/hashicorp/terraform-ls\n\nTerraform language server\nDownload a released binary from https://github.com/hashicorp/terraform-ls/releases.\n\nFrom https://github.com/hashicorp/terraform-ls#terraform-ls-vs-terraform-lsp:\n\nBoth HashiCorp and the maintainer of terraform-lsp expressed interest in\ncollaborating on a language server and are working towards a _long-term_\ngoal of a single stable and feature-complete implementation.\n\nFor the time being both projects continue to exist, giving users the\nchoice:\n\n- `terraform-ls` providing\n  - overall stability (by relying only on public APIs)\n  - compatibility with any provider and any Terraform >=0.12.0 currently\n    less features\n  - due to project being younger and relying on public APIs which may\n    not offer the same functionality yet\n\n- `terraform-lsp` providing\n  - currently more features\n  - compatibility with a single particular Terraform (0.12.20 at time of writing)\n    - configs designed for other 0.12 versions may work, but interpretation may be inaccurate\n  - less stability (due to reliance on Terraform's own internal packages)\n\nNote, that the `settings` configuration option uses the `workspace/didChangeConfiguration` event,\n[which is not supported by terraform-ls](https://github.com/hashicorp/terraform-ls/blob/main/docs/features.md).\nInstead you should use `init_options` which passes the settings as part of the LSP initialize call\n[as is required by terraform-ls](https://github.com/hashicorp/terraform-ls/blob/main/docs/SETTINGS.md#how-to-pass-settings).\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/texlab.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nlocal function client_with_fn(fn)\n  return function()\n    local bufnr = vim.api.nvim_get_current_buf()\n    local client = vim.lsp.get_clients({ bufnr = bufnr, name = 'texlab' })[1]\n    if not client then\n      return vim.notify(('texlab client not found in bufnr %d'):format(bufnr), vim.log.levels.ERROR)\n    end\n    fn(client, bufnr)\n  end\nend\n\nlocal function buf_build(client, bufnr)\n  local win = vim.api.nvim_get_current_win()\n  local params = vim.lsp.util.make_position_params(win, client.offset_encoding)\n  client.request('textDocument/build', params, function(err, result)\n    if err then\n      error(tostring(err))\n    end\n    local texlab_build_status = {\n      [0] = 'Success',\n      [1] = 'Error',\n      [2] = 'Failure',\n      [3] = 'Cancelled',\n    }\n    vim.notify('Build ' .. texlab_build_status[result.status], vim.log.levels.INFO)\n  end, bufnr)\nend\n\nlocal function buf_search(client, bufnr)\n  local win = vim.api.nvim_get_current_win()\n  local params = vim.lsp.util.make_position_params(win, client.offset_encoding)\n  client.request('textDocument/forwardSearch', params, function(err, result)\n    if err then\n      error(tostring(err))\n    end\n    local texlab_forward_status = {\n      [0] = 'Success',\n      [1] = 'Error',\n      [2] = 'Failure',\n      [3] = 'Unconfigured',\n    }\n    vim.notify('Search ' .. texlab_forward_status[result.status], vim.log.levels.INFO)\n  end, bufnr)\nend\n\nlocal function buf_cancel_build(client, bufnr)\n  if vim.fn.has 'nvim-0.11' == 1 then\n    return client:exec_cmd({\n      title = 'cancel',\n      command = 'texlab.cancelBuild',\n    }, { bufnr = bufnr })\n  end\n  vim.lsp.buf.execute_command { command = 'texlab.cancelBuild' }\n  vim.notify('Build cancelled', vim.log.levels.INFO)\nend\n\nlocal function dependency_graph(client)\n  client.request('workspace/executeCommand', { command = 'texlab.showDependencyGraph' }, function(err, result)\n    if err then\n      return vim.notify(err.code .. ': ' .. err.message, vim.log.levels.ERROR)\n    end\n    vim.notify('The dependency graph has been generated:\\n' .. result, vim.log.levels.INFO)\n  end, 0)\nend\n\nlocal function command_factory(cmd)\n  local cmd_tbl = {\n    Auxiliary = 'texlab.cleanAuxiliary',\n    Artifacts = 'texlab.cleanArtifacts',\n    CancelBuild = 'texlab.cancelBuild',\n  }\n  return function(client, bufnr)\n    if vim.fn.has 'nvim-0.11' == 1 then\n      return client:exec_cmd({\n        title = ('clean_%s'):format(cmd),\n        command = cmd_tbl[cmd],\n        arguments = { { uri = vim.uri_from_bufnr(bufnr) } },\n      }, { bufnr = bufnr }, function(err, _)\n        if err then\n          vim.notify(('Failed to clean %s files: %s'):format(cmd, err.message), vim.log.levels.ERROR)\n        else\n          vim.notify(('command %s executed successfully'):format(cmd), vim.log.levels.INFO)\n        end\n      end)\n    end\n\n    vim.lsp.buf.execute_command {\n      command = cmd_tbl[cmd],\n      arguments = { { uri = vim.uri_from_bufnr(bufnr) } },\n    }\n    vim.notify(('command %s executed successfully'):format(cmd_tbl[cmd]))\n  end\nend\n\nlocal function buf_find_envs(client, bufnr)\n  local win = vim.api.nvim_get_current_win()\n  client.request('workspace/executeCommand', {\n    command = 'texlab.findEnvironments',\n    arguments = { vim.lsp.util.make_position_params(win, client.offset_encoding) },\n  }, function(err, result)\n    if err then\n      return vim.notify(err.code .. ': ' .. err.message, vim.log.levels.ERROR)\n    end\n    local env_names = {}\n    local max_length = 1\n    for _, env in ipairs(result) do\n      table.insert(env_names, env.name.text)\n      max_length = math.max(max_length, string.len(env.name.text))\n    end\n    for i, name in ipairs(env_names) do\n      env_names[i] = string.rep(' ', i - 1) .. name\n    end\n    vim.lsp.util.open_floating_preview(env_names, '', {\n      height = #env_names,\n      width = math.max((max_length + #env_names - 1), (string.len 'Environments')),\n      focusable = false,\n      focus = false,\n      border = 'single',\n      title = 'Environments',\n    })\n  end, bufnr)\nend\n\nlocal function buf_change_env(client, bufnr)\n  local new = vim.fn.input 'Enter the new environment name: '\n  if not new or new == '' then\n    return vim.notify('No environment name provided', vim.log.levels.WARN)\n  end\n  local pos = vim.api.nvim_win_get_cursor(0)\n  if vim.fn.has 'nvim-0.11' == 1 then\n    return client:exec_cmd({\n      title = 'change_environment',\n      command = 'texlab.changeEnvironment',\n      arguments = {\n        {\n          textDocument = { uri = vim.uri_from_bufnr(bufnr) },\n          position = { line = pos[1] - 1, character = pos[2] },\n          newName = tostring(new),\n        },\n      },\n    }, { bufnr = bufnr })\n  end\n\n  vim.lsp.buf.execute_command {\n    command = 'texlab.changeEnvironment',\n    arguments = {\n      {\n        textDocument = { uri = vim.uri_from_bufnr(bufnr) },\n        position = { line = pos[1] - 1, character = pos[2] },\n        newName = tostring(new),\n      },\n    },\n  }\nend\n\nreturn {\n  default_config = {\n    cmd = { 'texlab' },\n    filetypes = { 'tex', 'plaintex', 'bib' },\n    root_dir = util.root_pattern('.git', '.latexmkrc', '.texlabroot', 'texlabroot', 'Tectonic.toml'),\n    single_file_support = true,\n    settings = {\n      texlab = {\n        rootDirectory = nil,\n        build = {\n          executable = 'latexmk',\n          args = { '-pdf', '-interaction=nonstopmode', '-synctex=1', '%f' },\n          onSave = false,\n          forwardSearchAfter = false,\n        },\n        forwardSearch = {\n          executable = nil,\n          args = {},\n        },\n        chktex = {\n          onOpenAndSave = false,\n          onEdit = false,\n        },\n        diagnosticsDelay = 300,\n        latexFormatter = 'latexindent',\n        latexindent = {\n          ['local'] = nil, -- local is a reserved keyword\n          modifyLineBreaks = false,\n        },\n        bibtexFormatter = 'texlab',\n        formatterLineLength = 80,\n      },\n    },\n  },\n  commands = {\n    TexlabBuild = {\n      client_with_fn(buf_build),\n      description = 'Build the current buffer',\n    },\n    TexlabForward = {\n      client_with_fn(buf_search),\n      description = 'Forward search from current position',\n    },\n    TexlabCancelBuild = {\n      client_with_fn(buf_cancel_build),\n      description = 'Cancel the current build',\n    },\n    TexlabDependencyGraph = {\n      client_with_fn(dependency_graph),\n      description = 'Show the dependency graph',\n    },\n    TexlabCleanArtifacts = {\n      client_with_fn(command_factory('Artifacts')),\n      description = 'Clean the artifacts',\n    },\n    TexlabCleanAuxiliary = {\n      client_with_fn(command_factory('Auxiliary')),\n      description = 'Clean the auxiliary files',\n    },\n    TexlabFindEnvironments = {\n      client_with_fn(buf_find_envs),\n      description = 'Find the environments at current position',\n    },\n    TexlabChangeEnvironment = {\n      client_with_fn(buf_change_env),\n      description = 'Change the environment at current position',\n    },\n  },\n  docs = {\n    description = [[\nhttps://github.com/latex-lsp/texlab\n\nA completion engine built from scratch for (La)TeX.\n\nSee https://github.com/latex-lsp/texlab/wiki/Configuration for configuration options.\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/textlsp.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'textlsp' },\n    filetypes = { 'text', 'tex', 'org' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n    settings = {\n      textLSP = {\n        analysers = {\n          -- by default all analysers are disabled in textLSP, since many of them\n          -- need custom settings. See github page. LanguageTool is enaled here\n          -- only for a quick test.\n          languagetool = {\n            enabled = true,\n            check_text = {\n              on_open = true,\n              on_save = true,\n              on_change = false,\n            },\n          },\n        },\n        documents = {\n          org = {\n            org_todo_keywords = {\n              'TODO',\n              'IN_PROGRESS',\n              'DONE',\n            },\n          },\n        },\n      },\n    },\n  },\n  docs = {\n    description = [[\nhttps://github.com/hangyav/textLSP\n\n`textLSP` is an LSP server for text spell and grammar checking with various AI tools.\nIt supports multiple text file formats, such as LaTeX, Org or txt.\n\nFor the available text analyzer tools and their configuration, see the [GitHub](https://github.com/hangyav/textLSP) page.\nBy default, all analyzers are disabled in textLSP, since most of them need special settings.\nFor quick testing, LanguageTool is enabled in the default `nvim-lspconfig` configuration.\n\nTo install run: `pip install textLSP`\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/tflint.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'tflint', '--langserver' },\n    filetypes = { 'terraform' },\n    root_dir = util.root_pattern('.terraform', '.git', '.tflint.hcl'),\n  },\n  docs = {\n    description = [[\nhttps://github.com/terraform-linters/tflint\n\nA pluggable Terraform linter that can act as lsp server.\nInstallation instructions can be found in https://github.com/terraform-linters/tflint#installation.\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/theme_check.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nlocal bin_name = 'theme-check-language-server'\n\nreturn {\n  default_config = {\n    cmd = { bin_name, '--stdio' },\n    filetypes = { 'liquid' },\n    root_dir = util.root_pattern '.theme-check.yml',\n    settings = {},\n  },\n  docs = {\n    description = [[\nhttps://github.com/Shopify/shopify-cli\n\n`theme-check-language-server` is bundled with `shopify-cli` or it can also be installed via\n\nhttps://github.com/Shopify/theme-check#installation\n\n**NOTE:**\nIf installed via Homebrew, `cmd` must be set to 'theme-check-liquid-server'\n\n```lua\nrequire lspconfig.theme_check.setup {\n  cmd = { 'theme-check-liquid-server' }\n}\n```\n\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/thriftls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'thriftls' },\n    filetypes = { 'thrift' },\n    root_dir = util.root_pattern '.thrift',\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/joyme123/thrift-ls\n\nyou can install thriftls by mason or download binary here: https://github.com/joyme123/thrift-ls/releases\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/tilt_ls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'tilt', 'lsp', 'start' },\n    filetypes = { 'tiltfile' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/tilt-dev/tilt\n\nTilt language server.\n\nYou might need to add filetype detection manually:\n\n```vim\nautocmd BufRead Tiltfile setf=tiltfile\n```\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/tinymist.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n---@param command_name string\n---@return fun():nil run_tinymist_command, string cmd_name, string cmd_desc\nlocal function create_tinymist_command(command_name)\n  local export_type = command_name:match 'tinymist%.export(%w+)'\n  local info_type = command_name:match 'tinymist%.(%w+)'\n  if info_type and info_type:match '^get' then\n    info_type = info_type:gsub('^get', 'Get')\n  end\n  local cmd_display = export_type or info_type\n  ---Execute the Tinymist command, supporting both 0.10 and 0.11 exec methods\n  ---@return nil\n  local function run_tinymist_command()\n    local bufnr = vim.api.nvim_get_current_buf()\n    local client = vim.lsp.get_clients({ name = 'tinymist', buffer = bufnr })[1]\n    if not client then\n      return vim.notify('No Tinymist client attached to the current buffer', vim.log.levels.ERROR)\n    end\n    local arguments = { vim.api.nvim_buf_get_name(bufnr) }\n    local title_str = export_type and ('Export ' .. cmd_display) or cmd_display\n    ---@type lsp.Handler\n    local function handler(err, res)\n      if err then\n        return vim.notify(err.code .. ': ' .. err.message, vim.log.levels.ERROR)\n      end\n      -- If exporting, show the string result; else, show the table for inspection\n      vim.notify(export_type and res or vim.inspect(res), vim.log.levels.INFO)\n    end\n    if vim.fn.has 'nvim-0.11' == 1 then\n      -- For Neovim 0.11+\n      return client:exec_cmd({\n        title = title_str,\n        command = command_name,\n        arguments = arguments,\n      }, { bufnr = bufnr }, handler)\n    else\n      return vim.notify('Tinymist commands require Neovim 0.11+', vim.log.levels.WARN)\n    end\n  end\n  -- Construct a readable command name/desc\n  local cmd_name = export_type and ('LspTinymistExport' .. cmd_display) or ('LspTinymist' .. cmd_display) ---@type string\n  local cmd_desc = export_type and ('Export to ' .. cmd_display) or ('Get ' .. cmd_display) ---@type string\n  return run_tinymist_command, cmd_name, cmd_desc\nend\n\nreturn {\n  default_config = {\n    cmd = { 'tinymist' },\n    filetypes = { 'typst' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n    on_attach = function(_, bufnr)\n      for _, command in ipairs {\n        'tinymist.exportSvg',\n        'tinymist.exportPng',\n        'tinymist.exportPdf',\n        -- 'tinymist.exportHtml', -- Use typst 0.13\n        'tinymist.exportMarkdown',\n        'tinymist.exportText',\n        'tinymist.exportQuery',\n        'tinymist.exportAnsiHighlight',\n        'tinymist.getServerInfo',\n        'tinymist.getDocumentTrace',\n        'tinymist.getWorkspaceLabels',\n        'tinymist.getDocumentMetrics',\n      } do\n        local cmd_func, cmd_name, cmd_desc = create_tinymist_command(command)\n        vim.api.nvim_buf_create_user_command(bufnr, cmd_name, cmd_func, { nargs = 0, desc = cmd_desc })\n      end\n    end,\n  },\n  docs = {\n    description = [[\nhttps://github.com/Myriad-Dreamin/tinymist\nAn integrated language service for Typst [taɪpst]. You can also call it \"微霭\" [wēi ǎi] in Chinese.\n\nCurrently some of Tinymist's workspace commands are supported, namely:\n`LspTinymistExportSvg`, `LspTinymistExportPng`, `LspTinymistExportPdf\n`LspTinymistExportMarkdown`, `LspTinymistExportText`, `LspTinymistExportQuery`,\n`LspTinymistExportAnsiHighlight`, `LspTinymistGetServerInfo`,\n`LspTinymistGetDocumentTrace`, `LspTinymistGetWorkspaceLabels`, and\n`LspTinymistGetDocumentMetrics`.\n    ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/ts_ls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    init_options = { hostInfo = 'neovim' },\n    cmd = { 'typescript-language-server', '--stdio' },\n    filetypes = {\n      'javascript',\n      'javascriptreact',\n      'typescript',\n      'typescriptreact',\n    },\n    root_dir = util.root_pattern('tsconfig.json', 'jsconfig.json', 'package.json', '.git'),\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/typescript-language-server/typescript-language-server\n\n`ts_ls`, aka `typescript-language-server`, is a Language Server Protocol implementation for TypeScript wrapping `tsserver`. Note that `ts_ls` is not `tsserver`.\n\n`typescript-language-server` depends on `typescript`. Both packages can be installed via `npm`:\n```sh\nnpm install -g typescript typescript-language-server\n```\n\nTo configure typescript language server, add a\n[`tsconfig.json`](https://www.typescriptlang.org/docs/handbook/tsconfig-json.html) or\n[`jsconfig.json`](https://code.visualstudio.com/docs/languages/jsconfig) to the root of your\nproject.\n\nHere's an example that disables type checking in JavaScript files.\n\n```json\n{\n  \"compilerOptions\": {\n    \"module\": \"commonjs\",\n    \"target\": \"es6\",\n    \"checkJs\": false\n  },\n  \"exclude\": [\n    \"node_modules\"\n  ]\n}\n```\n\n### Vue support\n\nAs of 2.0.0, Volar no longer supports TypeScript itself. Instead, a plugin\nadds Vue support to this language server.\n\n*IMPORTANT*: It is crucial to ensure that `@vue/typescript-plugin` and `volar `are of identical versions.\n\n```lua\nrequire'lspconfig'.ts_ls.setup{\n  init_options = {\n    plugins = {\n      {\n        name = \"@vue/typescript-plugin\",\n        location = \"/usr/local/lib/node_modules/@vue/typescript-plugin\",\n        languages = {\"javascript\", \"typescript\", \"vue\"},\n      },\n    },\n  },\n  filetypes = {\n    \"javascript\",\n    \"typescript\",\n    \"vue\",\n  },\n}\n\n-- You must make sure volar is setup\n-- e.g. require'lspconfig'.volar.setup{}\n-- See volar's section for more information\n```\n\n`location` MUST be defined. If the plugin is installed in `node_modules`,\n`location` can have any value.\n\n`languages` must include `vue` even if it is listed in `filetypes`.\n\n`filetypes` is extended here to include Vue SFC.\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/ts_query_ls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'ts_query_ls' },\n    filetypes = { 'query' },\n    root_dir = util.root_pattern('queries', '.git'),\n    settings = {\n      parser_aliases = {\n        ecma = 'javascript',\n        jsx = 'javascript',\n        php_only = 'php',\n      },\n    },\n  },\n  docs = {\n    description = [[\nhttps://github.com/ribru17/ts_query_ls\nCan be configured by passing a \"settings\" object to `ts_query_ls.setup{}`:\n```lua\nrequire('lspconfig').ts_query_ls.setup{\n    settings = {\n      parser_install_directories = {\n        -- If using nvim-treesitter with lazy.nvim\n        vim.fs.joinpath(\n          vim.fn.stdpath('data'),\n          '/lazy/nvim-treesitter/parser/'\n        ),\n      },\n      -- This setting is provided by default\n      parser_aliases = {\n        ecma = 'javascript',\n        jsx = 'javascript',\n        php_only = 'php',\n      },\n      -- E.g. zed support\n      language_retrieval_patterns = {\n        'languages/src/([^/]+)/[^/]+\\\\.scm$',\n      },\n    },\n}\n```\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/tsp_server.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'tsp-server', '--stdio' },\n    filetypes = { 'typespec' },\n    root_dir = util.root_pattern('tspconfig.yaml', '.git'),\n  },\n  docs = {\n    description = [[\nhttps://github.com/microsoft/typespec\n\nThe language server for TypeSpec, a language for defining cloud service APIs and shapes.\n\n`tsp-server` can be installed together with the typespec compiler via `npm`:\n```sh\nnpm install -g @typespec/compiler\n```\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/ttags.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'ttags', 'lsp' },\n    filetypes = { 'ruby', 'rust', 'javascript', 'haskell' },\n    root_dir = util.root_pattern '.git',\n  },\n  docs = {\n    description = [[\nhttps://github.com/npezza93/ttags\n    ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/turbo_ls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'turbo-language-server', '--stdio' },\n    filetypes = { 'html', 'ruby', 'eruby', 'blade', 'php' },\n    root_dir = vim.fs.root(0, { 'Gemfile', '.git' }),\n  },\n  docs = {\n    description = [[\nhttps://www.npmjs.com/package/turbo-language-server\n\n`turbo-language-server` can be installed via `npm`:\n\n```sh\nnpm install -g turbo-language-server\n```\n\nor via `yarn`:\n\n```sh\nyarn global add turbo-language-server\n```\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/turtle_ls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal bin_name = 'turtle-language-server'\nlocal bin_path = os.getenv 'NVM_BIN'\nlocal full_path\nif bin_path == nil then\n  local paths = {}\n  local sep = ':'\n  if vim.fn.has 'win32' == 1 then\n    sep = ';'\n  end\n  local path = os.getenv 'PATH'\n  if path ~= nil then\n    for str in string.gmatch(path, '([^' .. sep .. ']+)') do\n      paths[#paths + 1] = str\n    end\n  end\n  for _, p in ipairs(paths) do\n    local candidate = table.concat({ p, bin_name }, '/')\n    if (vim.uv.fs_stat(candidate) or {}).type == 'file' then\n      full_path = candidate\n      break\n    end\n  end\nelse\n  full_path = table.concat({ bin_path, bin_name }, '/')\nend\n\nreturn {\n  default_config = {\n    cmd = { 'node', full_path, '--stdio' },\n    filetypes = { 'turtle', 'ttl' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n  },\n  docs = {\n    description = [[\nhttps://github.com/stardog-union/stardog-language-servers/tree/master/packages/turtle-language-server\n`turtle-language-server`, An editor-agnostic server providing language intelligence (diagnostics, hover tooltips, etc.) for the W3C standard Turtle RDF syntax via the Language Server Protocol.\ninstallable via npm install -g turtle-language-server or yarn global add turtle-language-server.\nrequires node.\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/tvm_ffi_navigator.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'python', '-m', 'ffi_navigator.langserver' },\n    filetypes = { 'python', 'cpp' },\n    root_dir = util.root_pattern('pyproject.toml', '.git'),\n  },\n  docs = {\n    description = [[\nhttps://github.com/tqchen/ffi-navigator\n\nThe Language Server for FFI calls in TVM to be able jump between python and C++\n\nFFI navigator can be installed with `pip install ffi-navigator`, buf for more details, please see\nhttps://github.com/tqchen/ffi-navigator?tab=readme-ov-file#installation\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/twiggy_language_server.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'twiggy-language-server', '--stdio' },\n    filetypes = { 'twig' },\n    root_dir = util.root_pattern('composer.json', '.git'),\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/moetelo/twiggy\n\n`twiggy-language-server` can be installed via `npm`:\n```sh\nnpm install -g twiggy-language-server\n```\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/typeprof.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'typeprof', '--lsp', '--stdio' },\n    filetypes = { 'ruby', 'eruby' },\n    root_dir = util.root_pattern('Gemfile', '.git'),\n  },\n  docs = {\n    description = [[\nhttps://github.com/ruby/typeprof\n\n`typeprof` is the built-in analysis and LSP tool for Ruby 3.1+.\n    ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/typos_lsp.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'typos-lsp' },\n    root_dir = util.root_pattern('typos.toml', '_typos.toml', '.typos.toml', 'pyproject.toml', 'Cargo.toml'),\n    single_file_support = true,\n    settings = {},\n  },\n  docs = {\n    description = [[\nhttps://github.com/crate-ci/typos\nhttps://github.com/tekumara/typos-lsp\n\nA Language Server Protocol implementation for Typos, a low false-positive\nsource code spell checker, written in Rust. Download it from the releases page\non GitHub: https://github.com/tekumara/typos-lsp/releases\n    ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/typst_lsp.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'typst-lsp' },\n    filetypes = { 'typst' },\n    single_file_support = true,\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n  },\n  docs = {\n    description = [[\nhttps://github.com/nvarner/typst-lsp\n\nLanguage server for Typst.\n    ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/uiua.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'uiua', 'lsp' },\n    filetypes = { 'uiua' },\n    root_dir = function(fname)\n      return util.root_pattern('main.ua', '.fmt.ua')(fname)\n        or vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n  },\n  docs = {\n    description = [[\nhttps://github.com/uiua-lang/uiua/\n\nThe builtin language server of the Uiua interpreter.\n\nThe Uiua interpreter can be installed with `cargo install uiua`\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/ungrammar_languageserver.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'ungrammar-languageserver', '--stdio' },\n    filetypes = { 'ungrammar' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n    settings = {\n      ungrammar = {\n        validate = {\n          enable = true,\n        },\n        format = {\n          enable = true,\n        },\n      },\n    },\n  },\n  docs = {\n    description = [[\nhttps://github.com/binhtran432k/ungrammar-language-features\nLanguage Server for Ungrammar.\n\nUngrammar Language Server can be installed via npm:\n```sh\nnpm i ungrammar-languageserver -g\n```\n    ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/unison.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'nc', 'localhost', os.getenv 'UNISON_LSP_PORT' or '5757' },\n    filetypes = { 'unison' },\n    root_dir = util.root_pattern '*.u',\n    settings = {},\n  },\n  docs = {\n    description = [[\nhttps://github.com/unisonweb/unison/blob/trunk/docs/language-server.markdown\n\n\n    ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/unocss.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'unocss-language-server', '--stdio' },\n    -- copied from https://github.com/unocss/unocss/blob/35297359bf61917bda499db86e3728a7ebd05d6c/packages/vscode/src/autocomplete.ts#L12-L35\n    filetypes = {\n      'erb',\n      'haml',\n      'hbs',\n      'html',\n      'css',\n      'postcss',\n      'javascript',\n      'javascriptreact',\n      'markdown',\n      'ejs',\n      'php',\n      'svelte',\n      'typescript',\n      'typescriptreact',\n      'vue-html',\n      'vue',\n      'sass',\n      'scss',\n      'less',\n      'stylus',\n      'astro',\n      'rescript',\n      'rust',\n    },\n    root_dir = function(fname)\n      return util.root_pattern('unocss.config.js', 'unocss.config.ts', 'uno.config.js', 'uno.config.ts')(fname)\n    end,\n  },\n  docs = {\n    description = [[\nhttps://github.com/xna00/unocss-language-server\n\nUnoCSS Language Server can be installed via npm:\n```sh\nnpm i unocss-language-server -g\n```\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/uvls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'uvls' },\n    filetypes = { 'uvl' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n  },\n  docs = {\n    description = [=[\nhttps://codeberg.org/caradhras/uvls\nLanguage server for UVL, written using tree sitter and rust.\nYou can install the server easily using cargo:\n```sh\ngit clone https://codeberg.org/caradhras/uvls\ncd  uvls\ncargo install --path .\n```\nNote: To activate properly nvim needs to know the uvl filetype.\nYou can add it via:\n```lua\nvim.cmd([[au BufRead,BufNewFile *.uvl setfiletype uvl]])\n```\n]=],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/v_analyzer.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'v-analyzer' },\n    filetypes = { 'v', 'vsh', 'vv' },\n    root_dir = util.root_pattern('v.mod', '.git'),\n  },\n  docs = {\n    description = [[\nhttps://github.com/vlang/v-analyzer\n\nV language server.\n\n`v-analyzer` can be installed by following the instructions [here](https://github.com/vlang/v-analyzer#installation).\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/vacuum.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'vacuum', 'language-server' },\n    filetypes = { 'yaml.openapi', 'json.openapi' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nVacuum is the worlds fastest OpenAPI 3, OpenAPI 2 / Swagger linter and quality analysis tool.\n\nYou can install vacuum using mason or follow the instructions here: https://github.com/daveshanley/vacuum\n\nThe file types are not detected automatically, you can register them manually (see below) or override the filetypes:\n\n```lua\nvim.filetype.add {\n  pattern = {\n    ['openapi.*%.ya?ml'] = 'yaml.openapi',\n    ['openapi.*%.json'] = 'json.openapi',\n  },\n}\n```\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/vala_ls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nlocal meson_matcher = function(path)\n  local pattern = 'meson.build'\n  local f = vim.fn.glob(table.concat({ path, pattern }, '/'))\n  if f == '' then\n    return nil\n  end\n  for line in io.lines(f) do\n    -- skip meson comments\n    if not line:match '^%s*#.*' then\n      local str = line:gsub('%s+', '')\n      if str ~= '' then\n        if str:match '^project%(' then\n          return path\n        else\n          break\n        end\n      end\n    end\n  end\nend\n\nreturn {\n  default_config = {\n    cmd = { 'vala-language-server' },\n    filetypes = { 'vala', 'genie' },\n    root_dir = function(fname)\n      local root = util.search_ancestors(fname, meson_matcher)\n      return root or vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n  },\n  docs = {\n    description = 'https://github.com/Prince781/vala-language-server',\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/vale_ls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'vale-ls' },\n    filetypes = { 'markdown', 'text', 'tex', 'rst' },\n    root_dir = util.root_pattern '.vale.ini',\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/errata-ai/vale-ls\n\nAn implementation of the Language Server Protocol (LSP) for the Vale command-line tool.\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/vdmj.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nlocal function get_default_mavenrepo()\n  local repo = vim.env.HOME .. '/.m2/repository/dk/au/ece/vdmj'\n  if vim.uv.fs_stat(repo) then\n    return repo\n  else\n    return vim.env.HOME .. '/.m2/repository/com/fujitsu'\n  end\nend\n\nlocal function get_jar_path(config, package, version)\n  return table.concat({ config.options.mavenrepo, package, version, package .. '-' .. version .. '.jar' }, '/')\nend\n\nlocal function with_precision(version, is_high_precision)\n  return is_high_precision and version:gsub('([%d.]+)', '%1-P') or version\nend\n\nlocal function get_latest_installed_version(repo)\n  local path = repo .. '/lsp'\n  local sort = vim.fn.sort\n\n  local subdirs = function(file)\n    local stat = vim.uv.fs_stat(table.concat({ path, file }, '/'))\n    return stat.type == 'directory' and 1 or 0\n  end\n\n  local candidates = vim.fn.readdir(path, subdirs)\n  local sorted = sort(sort(candidates, 'l'), 'N')\n  return sorted[#sorted]\nend\n\n-- Special case, as vdmj store particular settings under root_dir/.vscode\nlocal function find_vscode_ancestor(startpath)\n  return util.search_ancestors(startpath, function(path)\n    if vim.fn.isdirectory(path .. '/.vscode') == 1 then\n      return path\n    end\n  end)\nend\n\nreturn {\n  default_config = {\n    cmd = { 'java' },\n    filetypes = { 'vdmsl', 'vdmpp', 'vdmrt' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1]) or find_vscode_ancestor(fname)\n    end,\n    options = {\n      java = vim.env.JAVA_HOME and (vim.env.JAVA_HOME .. '/bin/java') or 'java',\n      java_opts = { '-Xmx3000m', '-Xss1m' },\n      annotation_paths = {},\n      mavenrepo = get_default_mavenrepo(),\n      logfile = vim.fn.stdpath('cache') .. '/vdm-lsp.log',\n      debugger_port = -1,\n      high_precision = false,\n    },\n  },\n  docs = {\n    description = [[\nhttps://github.com/nickbattle/vdmj\n\nThe VDMJ language server can be installed by cloning the VDMJ repository and\nrunning `mvn clean install`.\n\nVarious options are provided to configure the language server (see below). In\nparticular:\n- `annotation_paths` is a list of folders and/or jar file paths for annotations\nthat should be used with the language server;\n- any value of `debugger_port` less than zero will disable the debugger; note\nthat if a non-zero value is used, only one instance of the server can be active\nat a time.\n\nMore settings for VDMJ can be changed in a file called `vdmj.properties` under\n`root_dir/.vscode`. For a description of the available settings, see\n[Section 7 of the VDMJ User Guide](https://raw.githubusercontent.com/nickbattle/vdmj/master/vdmj/documentation/UserGuide.pdf).\n\nNote: proof obligations and combinatorial testing are not currently supported\nby neovim.\n]],\n  },\n  on_new_config = function(config, root_dir)\n    local version = with_precision(\n      config.options.version or get_latest_installed_version(config.options.mavenrepo),\n      config.options.high_precision\n    )\n\n    local classpath = table.concat({\n      get_jar_path(config, 'vdmj', version),\n      get_jar_path(config, 'annotations', version),\n      get_jar_path(config, 'lsp', version),\n      root_dir .. '/.vscode',\n      unpack(config.options.annotation_paths),\n    }, ':')\n\n    local java_cmd = {\n      config.options.java,\n      config.options.java_opts,\n      '-Dlsp.log.filename=' .. config.options.logfile,\n      '-cp',\n      classpath,\n    }\n\n    local dap = {}\n\n    if config.options.debugger_port >= 0 then\n      -- TODO: LS will fail to start if port is already in use\n      dap = { '-dap', tostring(config.options.debugger_port) }\n    end\n\n    local vdmj_cmd = {\n      'lsp.LSPServerStdio',\n      '-' .. vim.bo.filetype,\n      dap,\n    }\n\n    config.cmd = util.tbl_flatten { java_cmd, vdmj_cmd }\n  end,\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/vectorcode_server.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'vectorcode-server' },\n    root_dir = vim.fs.root(0, { '.vectorcode', '.git' }),\n    single_file_support = false,\n    settings = {},\n  },\n  docs = {\n    description = [[\nhttps://github.com/Davidyz/VectorCode\n\nA Language Server Protocol implementation for VectorCode, a code repository indexing tool.\n    ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/verible.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'verible-verilog-ls' },\n    filetypes = { 'systemverilog', 'verilog' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n  },\n  docs = {\n    description = [[\nhttps://github.com/chipsalliance/verible\n\nA linter and formatter for verilog and SystemVerilog files.\n\nRelease binaries can be downloaded from [here](https://github.com/chipsalliance/verible/releases)\nand placed in a directory on PATH.\n\nSee https://github.com/chipsalliance/verible/tree/master/verilog/tools/ls/README.md for options.\n    ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/veridian.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'veridian' },\n    filetypes = { 'systemverilog', 'verilog' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n  },\n  docs = {\n    description = [[\nhttps://github.com/vivekmalneedi/veridian\n\nA SystemVerilog LanguageServer.\n\nDownload the latest release for your OS from the releases page\n\nInstall with slang feature, if C++17 compiler is available:\n```\ncargo install --git https://github.com/vivekmalneedi/veridian.git --all-features\n```\n\nInstall if C++17 compiler is not available:\n```\ncargo install --git https://github.com/vivekmalneedi/veridian.git\n```\n    ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/veryl_ls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'veryl-ls' },\n    filetypes = { 'veryl' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n  },\n  docs = {\n    description = [[\nhttps://github.com/veryl-lang/veryl\n\nLanguage server for Veryl\n\n`veryl-ls` can be installed via `cargo`:\n ```sh\n cargo install veryl-ls\n ```\n    ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/vhdl_ls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nlocal root_files = {\n  'vhdl_ls.toml',\n  '.vhdl_ls.toml',\n}\n\nreturn {\n  default_config = {\n    cmd = { 'vhdl_ls' },\n    filetypes = { 'vhd', 'vhdl' },\n    root_dir = util.root_pattern(unpack(root_files)),\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nInstall vhdl_ls from https://github.com/VHDL-LS/rust_hdl and add it to path\n\nConfiguration\n\nThe language server needs to know your library mapping to perform full analysis of the code. For this it uses a configuration file in the TOML format named vhdl_ls.toml.\n\nvhdl_ls will load configuration files in the following order of priority (first to last):\n\n    A file named .vhdl_ls.toml in the user home folder.\n    A file name from the VHDL_LS_CONFIG environment variable.\n    A file named vhdl_ls.toml in the workspace root.\n\nSettings in a later files overwrites those from previously loaded files.\n\nExample vhdl_ls.toml\n```\n# File names are either absolute or relative to the parent folder of the vhdl_ls.toml file\n[libraries]\nlib2.files = [\n  'pkg2.vhd',\n]\nlib1.files = [\n  'pkg1.vhd',\n  'tb_ent.vhd'\n]\n```\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/vimls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'vim-language-server', '--stdio' },\n    filetypes = { 'vim' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n    init_options = {\n      isNeovim = true,\n      iskeyword = '@,48-57,_,192-255,-#',\n      vimruntime = '',\n      runtimepath = '',\n      diagnostic = { enable = true },\n      indexes = {\n        runtimepath = true,\n        gap = 100,\n        count = 3,\n        projectRootPatterns = { 'runtime', 'nvim', '.git', 'autoload', 'plugin' },\n      },\n      suggest = { fromVimruntime = true, fromRuntimepath = true },\n    },\n  },\n  docs = {\n    description = [[\nhttps://github.com/iamcco/vim-language-server\n\nYou can install vim-language-server via npm:\n```sh\nnpm install -g vim-language-server\n```\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/visualforce_ls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    filetypes = { 'visualforce' },\n    root_dir = util.root_pattern 'sfdx-project.json',\n    init_options = {\n      embeddedLanguages = {\n        css = true,\n        javascript = true,\n      },\n    },\n  },\n  docs = {\n    description = [[\nhttps://github.com/forcedotcom/salesforcedx-vscode\n\nLanguage server for Visualforce.\n\nFor manual installation, download the .vsix archive file from the\n[forcedotcom/salesforcedx-vscode](https://github.com/forcedotcom/salesforcedx-vscode)\nGitHub releases. Then, configure `cmd` to run the Node script at the unpacked location:\n\n```lua\nrequire'lspconfig'.visualforce_ls.setup {\n  cmd = {\n    'node',\n    '/path/to/unpacked/archive/extension/node_modules/@salesforce/salesforcedx-visualforce-language-server/out/src/visualforceServer.js',\n    '--stdio'\n  }\n}\n```\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/vls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'v', 'ls' },\n    filetypes = { 'v', 'vlang' },\n    root_dir = util.root_pattern('v.mod', '.git'),\n  },\n  docs = {\n    description = [[\nhttps://github.com/vlang/vls\n\nV language server.\n\n`v-language-server` can be installed by following the instructions [here](https://github.com/vlang/vls#installation).\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/volar.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\n-- https://github.com/vuejs/language-tools/blob/master/packages/language-server/lib/types.ts\nlocal volar_init_options = {\n  typescript = {\n    tsdk = '',\n  },\n}\n\nreturn {\n  default_config = {\n    cmd = { 'vue-language-server', '--stdio' },\n    filetypes = { 'vue' },\n    root_dir = util.root_pattern 'package.json',\n    init_options = volar_init_options,\n    on_new_config = function(new_config, new_root_dir)\n      if\n        new_config.init_options\n        and new_config.init_options.typescript\n        and new_config.init_options.typescript.tsdk == ''\n      then\n        new_config.init_options.typescript.tsdk = util.get_typescript_server_path(new_root_dir)\n      end\n    end,\n  },\n  docs = {\n    description = [[\nhttps://github.com/vuejs/language-tools/tree/master/packages/language-server\n\nVolar language server for Vue\n\nVolar can be installed via npm:\n```sh\nnpm install -g @vue/language-server\n```\n\nVolar by default supports Vue 3 projects.\nFor Vue 2 projects, [additional configuration](https://github.com/vuejs/language-tools/blob/master/extensions/vscode/README.md?plain=1#L19) are required.\n\n**Hybrid Mode (by default)**\n\nIn this mode, the Vue Language Server exclusively manages the CSS/HTML sections.\nYou need the `ts_ls` server with the `@vue/typescript-plugin` plugin to support TypeScript in `.vue` files.\nSee `ts_ls` section for more information\n\n**No Hybrid Mode**\n\nVolar will run embedded `ts_ls` therefore there is no need to run it separately.\n```lua\nlocal lspconfig = require('lspconfig')\n\nlspconfig.volar.setup {\n  -- add filetypes for typescript, javascript and vue\n  filetypes = { 'typescript', 'javascript', 'javascriptreact', 'typescriptreact', 'vue' },\n  init_options = {\n    vue = {\n      -- disable hybrid mode\n      hybridMode = false,\n    },\n  },\n}\n-- you must remove ts_ls setup\n-- lspconfig.ts_ls.setup {}\n```\n\n**Overriding the default TypeScript Server used by Volar**\n\nThe default config looks for TypeScript in the local `node_modules`. This can lead to issues\ne.g. when working on a [monorepo](https://monorepo.tools/). The alternatives are:\n\n- use a global TypeScript Server installation\n```lua\nrequire'lspconfig'.volar.setup {\n  init_options = {\n    typescript = {\n      -- replace with your global TypeScript library path\n      tsdk = '/path/to/node_modules/typescript/lib'\n    }\n  }\n}\n```\n\n- use a local server and fall back to a global TypeScript Server installation\n```lua\nrequire'lspconfig'.volar.setup {\n  init_options = {\n    typescript = {\n      -- replace with your global TypeScript library path\n      tsdk = '/path/to/node_modules/typescript/lib'\n    }\n  },\n  on_new_config = function(new_config, new_root_dir)\n    local lib_path = vim.fs.find('node_modules/typescript/lib', { path = new_root_dir, upward = true })[1]\n    if lib_path then\n      new_config.init_options.typescript.tsdk = lib_path\n    end\n  end\n}\n```\n    ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/vscoqtop.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'vscoqtop' },\n    filetypes = { 'coq' },\n    root_dir = function(fname)\n      return util.root_pattern '_CoqProject'(fname)\n        or vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/coq-community/vscoq\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/vtsls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'vtsls', '--stdio' },\n    filetypes = {\n      'javascript',\n      'javascriptreact',\n      'typescript',\n      'typescriptreact',\n    },\n    root_dir = util.root_pattern('tsconfig.json', 'package.json', 'jsconfig.json', '.git'),\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/yioneko/vtsls\n\n`vtsls` can be installed with npm:\n```sh\nnpm install -g @vtsls/language-server\n```\n\nTo configure a TypeScript project, add a\n[`tsconfig.json`](https://www.typescriptlang.org/docs/handbook/tsconfig-json.html)\nor [`jsconfig.json`](https://code.visualstudio.com/docs/languages/jsconfig) to\nthe root of your project.\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/vuels.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'vls' },\n    filetypes = { 'vue' },\n    root_dir = util.root_pattern('package.json', 'vue.config.js'),\n    init_options = {\n      config = {\n        vetur = {\n          useWorkspaceDependencies = false,\n          validation = {\n            template = true,\n            style = true,\n            script = true,\n          },\n          completion = {\n            autoImport = false,\n            useScaffoldSnippets = false,\n            tagCasing = 'kebab',\n          },\n          format = {\n            defaultFormatter = {\n              js = 'none',\n              ts = 'none',\n            },\n            defaultFormatterOptions = {},\n            scriptInitialIndent = false,\n            styleInitialIndent = false,\n          },\n        },\n        css = {},\n        html = {\n          suggest = {},\n        },\n        javascript = {\n          format = {},\n        },\n        typescript = {\n          format = {},\n        },\n        emmet = {},\n        stylusSupremacy = {},\n      },\n    },\n  },\n  docs = {\n    description = [[\nhttps://github.com/vuejs/vetur/tree/master/server\n\nVue language server(vls)\n`vue-language-server` can be installed via `npm`:\n```sh\nnpm install -g vls\n```\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/wasm_language_tools.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'wat_server' },\n    filetypes = { 'wat' },\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/g-plane/wasm-language-tools\n\nWebAssembly Language Tools aims to provide and improve the editing experience of WebAssembly Text Format.\nIt also provides an out-of-the-box formatter (a.k.a. pretty printer) for WebAssembly Text Format.\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/wgsl_analyzer.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'wgsl-analyzer' },\n    filetypes = { 'wgsl' },\n    root_dir = util.root_pattern '.git',\n    settings = {},\n  },\n  docs = {\n    description = [[\nhttps://github.com/wgsl-analyzer/wgsl-analyzer\n\n`wgsl-analyzer` can be installed via `cargo`:\n```sh\ncargo install --git https://github.com/wgsl-analyzer/wgsl-analyzer wgsl-analyzer\n```\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/yamlls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'yaml-language-server', '--stdio' },\n    filetypes = { 'yaml', 'yaml.docker-compose', 'yaml.gitlab', 'yaml.helm-values' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n    settings = {\n      -- https://github.com/redhat-developer/vscode-redhat-telemetry#how-to-disable-telemetry-reporting\n      redhat = { telemetry = { enabled = false } },\n      -- formatting disabled by default in yaml-language-server; enable it\n      yaml = { format = { enable = true } },\n    },\n  },\n  docs = {\n    description = [[\nhttps://github.com/redhat-developer/yaml-language-server\n\n`yaml-language-server` can be installed via `yarn`:\n```sh\nyarn global add yaml-language-server\n```\n\nTo use a schema for validation, there are two options:\n\n1. Add a modeline to the file. A modeline is a comment of the form:\n\n```\n# yaml-language-server: $schema=<urlToTheSchema|relativeFilePath|absoluteFilePath}>\n```\n\nwhere the relative filepath is the path relative to the open yaml file, and the absolute filepath\nis the filepath relative to the filesystem root ('/' on unix systems)\n\n2. Associated a schema url, relative , or absolute (to root of project, not to filesystem root) path to\nthe a glob pattern relative to the detected project root. Check `:LspInfo` to determine the resolved project\nroot.\n\n```lua\nrequire('lspconfig').yamlls.setup {\n  ... -- other configuration for setup {}\n  settings = {\n    yaml = {\n      ... -- other settings. note this overrides the lspconfig defaults.\n      schemas = {\n        [\"https://json.schemastore.org/github-workflow.json\"] = \"/.github/workflows/*\",\n        [\"../path/relative/to/file.yml\"] = \"/.github/workflows/*\",\n        [\"/path/from/root/of/project\"] = \"/.github/workflows/*\",\n      },\n    },\n  }\n}\n```\n\nCurrently, kubernetes is special-cased in yammls, see the following upstream issues:\n* [#211](https://github.com/redhat-developer/yaml-language-server/issues/211).\n* [#307](https://github.com/redhat-developer/yaml-language-server/issues/307).\n\nTo override a schema to use a specific k8s schema version (for example, to use 1.18):\n\n```lua\nrequire('lspconfig').yamlls.setup {\n  ... -- other configuration for setup {}\n  settings = {\n    yaml = {\n      ... -- other settings. note this overrides the lspconfig defaults.\n      schemas = {\n        [\"https://raw.githubusercontent.com/yannh/kubernetes-json-schema/refs/heads/master/v1.32.1-standalone-strict/all.json\"] = \"/*.k8s.yaml\",\n        ... -- other schemas\n      },\n    },\n  }\n}\n```\n\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/yang_lsp.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'yang-language-server' },\n    filetypes = { 'yang' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n  },\n  docs = {\n    description = [[\nhttps://github.com/TypeFox/yang-lsp\n\nA Language Server for the YANG data modeling language.\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/yls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'yls', '-vv' },\n    filetypes = { 'yar', 'yara' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://pypi.org/project/yls-yara/\n\nAn YLS plugin adding YARA linting capabilities.\n\nThis plugin runs yara.compile on every save, parses the errors, and returns list of diagnostic messages.\n\nLanguage Server: https://github.com/avast/yls\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/ziggy.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'ziggy', 'lsp' },\n    filetypes = { 'ziggy' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://ziggy-lang.io/documentation/ziggy-lsp/\n\nLanguage server for the Ziggy data serialization format\n\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/ziggy_schema.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nreturn {\n  default_config = {\n    cmd = { 'ziggy', 'lsp', '--schema' },\n    filetypes = { 'ziggy_schema' },\n    root_dir = function(fname)\n      return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])\n    end,\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://ziggy-lang.io/documentation/ziggy-lsp/\n\nLanguage server for schema files of the Ziggy data serialization format\n\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/zk.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nlocal function find_zk_root(startpath)\n  for dir in vim.fs.parents(startpath) do\n    if vim.fn.isdirectory(vim.fs.joinpath(dir, '.zk')) == 1 then\n      return dir\n    end\n  end\nend\n\nreturn {\n  default_config = {\n    cmd = { 'zk', 'lsp' },\n    filetypes = { 'markdown' },\n    root_dir = util.root_pattern '.zk',\n  },\n  commands = {\n    ZkIndex = {\n      function()\n        vim.lsp.buf.execute_command {\n          command = 'zk.index',\n          arguments = { vim.api.nvim_buf_get_name(0) },\n        }\n      end,\n      description = 'ZkIndex',\n    },\n    ZkList = {\n      function()\n        local bufpath = vim.api.nvim_buf_get_name(0)\n        local root = find_zk_root(bufpath)\n\n        vim.lsp.buf_request(0, 'workspace/executeCommand', {\n          command = 'zk.list',\n          arguments = { root, { select = { 'path' } } },\n        }, function(_, result, _, _)\n          if not result then\n            return\n          end\n          local paths = vim.tbl_map(function(item)\n            return item.path\n          end, result)\n          vim.ui.select(paths, {}, function(choice)\n            vim.cmd('edit ' .. choice)\n          end)\n        end)\n      end,\n\n      description = 'ZkList',\n    },\n    ZkNew = {\n      function(...)\n        vim.lsp.buf_request(0, 'workspace/executeCommand', {\n          command = 'zk.new',\n          arguments = {\n            vim.api.nvim_buf_get_name(0),\n            ...,\n          },\n        }, function(_, result, _, _)\n          if not (result and result.path) then\n            return\n          end\n          vim.cmd('edit ' .. result.path)\n        end)\n      end,\n\n      description = 'ZkNew',\n    },\n  },\n  docs = {\n    description = [[\nhttps://github.com/mickael-menu/zk\n\nA plain text note-taking assistant\n]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs/zls.lua",
    "content": "-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n-- This config is DEPRECATED.\n-- Use the configs in `lsp/` instead (requires Nvim 0.11).\n--\n-- ALL configs in `lua/lspconfig/configs/` will be DELETED.\n-- They exist only to support Nvim 0.10 or older.\n-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nlocal util = require 'lspconfig.util'\n\nreturn {\n  default_config = {\n    cmd = { 'zls' },\n    on_new_config = function(new_config, new_root_dir)\n      if vim.fn.filereadable(vim.fs.joinpath(new_root_dir, 'zls.json')) ~= 0 then\n        new_config.cmd = { 'zls', '--config-path', 'zls.json' }\n      end\n    end,\n    filetypes = { 'zig', 'zir' },\n    root_dir = util.root_pattern('zls.json', 'build.zig', '.git'),\n    single_file_support = true,\n  },\n  docs = {\n    description = [[\nhttps://github.com/zigtools/zls\n\nZig LSP implementation + Zig Language Server\n        ]],\n  },\n}\n"
  },
  {
    "path": "lua/lspconfig/configs.lua",
    "content": "-- This entire module will only be usfeul for Nvim older than 0.11, since vim.lsp.config makes this module obsolete. So\n-- it's easier to just disable all warnings for now and remove this file when it's no longer relevant.\n--- @diagnostic disable: assign-type-mismatch\n--- @diagnostic disable: param-type-mismatch\n\nlocal util = require 'lspconfig.util'\nlocal async = require 'lspconfig.async'\nlocal api, lsp, fn = vim.api, vim.lsp, vim.fn\nlocal tbl_deep_extend = vim.tbl_deep_extend\n\nlocal configs = {}\n\n--- @alias lspconfig.Config.command {[1]:string|fun(args: vim.api.keyset.create_user_command.command_args)}|vim.api.keyset.user_command\n\n--- @class lspconfig.Config : vim.lsp.ClientConfig\n--- @field enabled? boolean\n--- @field single_file_support? boolean\n--- @field silent? boolean\n--- @field filetypes? string[]\n--- @field filetype? string\n--- @field on_new_config? fun(new_config: lspconfig.Config?, new_root_dir: string)\n--- @field autostart? boolean\n--- @field package _on_attach? fun(client: vim.lsp.Client, bufnr: integer)\n--- @field root_dir? string|fun(filename: string, bufnr: number)\n--- @field commands? table<string, lspconfig.Config.command>\n\n--- For Windows: calls exepath() to ensure .cmd/.bat (if appropriate) on commands. https://github.com/neovim/nvim-lspconfig/issues/3704\n--- @param cmd any\nlocal function sanitize_cmd(cmd)\n  -- exepath() is slow, so avoid it on non-Windows.\n  if vim.fn.has('win32') == 0 then\n    return\n  end\n  if cmd and type(cmd) == 'table' and not vim.tbl_isempty(cmd) then\n    local original = cmd[1]\n    cmd[1] = vim.fn.exepath(cmd[1])\n    if #cmd[1] == 0 then\n      cmd[1] = original\n    end\n  end\nend\n\n---@param t table\n---@param config_name string\n---@param config_def table Config definition read from `lspconfig.configs.<name>`.\nfunction configs.__newindex(t, config_name, config_def)\n  if config_def.default_config.deprecate then\n    vim.deprecate(\n      config_name,\n      config_def.default_config.deprecate.to,\n      config_def.default_config.deprecate.version,\n      'nvim-lspconfig',\n      false\n    )\n  end\n\n  config_def.commands = config_def.commands or {}\n\n  local M = {}\n\n  local default_config = tbl_deep_extend('keep', config_def.default_config, util.default_config)\n\n  -- Force this part.\n  default_config.name = config_name\n\n  --- @param user_config lspconfig.Config\n  function M.setup(user_config)\n    local lsp_group = api.nvim_create_augroup('lspconfig', { clear = false })\n\n    local config = tbl_deep_extend('keep', user_config, default_config)\n\n    sanitize_cmd(config.cmd)\n\n    if util.on_setup then\n      pcall(util.on_setup, config, user_config)\n    end\n\n    if config.autostart == true then\n      local event_conf = config.filetypes and { event = 'FileType', pattern = config.filetypes }\n        or { event = 'BufReadPost' }\n      api.nvim_create_autocmd(event_conf.event, {\n        pattern = event_conf.pattern or '*',\n        callback = function(opt)\n          M.manager:try_add(opt.buf, nil, config.silent)\n        end,\n        group = lsp_group,\n        desc = string.format(\n          'Checks whether server %s should start a new instance or attach to an existing one.',\n          config.name\n        ),\n      })\n    end\n\n    local get_root_dir = config.root_dir\n\n    function M.launch(bufnr)\n      bufnr = bufnr or api.nvim_get_current_buf()\n      if not api.nvim_buf_is_valid(bufnr) then\n        return\n      end\n      local bufname = api.nvim_buf_get_name(bufnr)\n      if (#bufname == 0 and not config.single_file_support) or (#bufname ~= 0 and not util.bufname_valid(bufname)) then\n        return\n      end\n\n      local pwd = vim.uv.cwd()\n\n      async.run(function()\n        local root_dir\n        if type(get_root_dir) == 'function' then\n          root_dir = get_root_dir(vim.fs.normalize(bufname), bufnr)\n          async.reenter()\n          if not api.nvim_buf_is_valid(bufnr) then\n            return\n          end\n        elseif type(get_root_dir) == 'string' then\n          root_dir = get_root_dir\n        end\n\n        if root_dir then\n          api.nvim_create_autocmd('BufReadPost', {\n            pattern = fn.fnameescape(root_dir) .. '/*',\n            callback = function(arg)\n              if #M.manager:clients() == 0 then\n                return true\n              end\n              M.manager:try_add_wrapper(arg.buf, root_dir)\n            end,\n            group = lsp_group,\n            desc = string.format(\n              'Checks whether server %s should attach to a newly opened buffer inside workspace %q.',\n              config.name,\n              root_dir\n            ),\n          })\n\n          for _, buf in ipairs(api.nvim_list_bufs()) do\n            local buf_name = api.nvim_buf_get_name(buf)\n            if util.bufname_valid(buf_name) then\n              local buf_dir = vim.fs.normalize(buf_name)\n              if buf_dir:sub(1, root_dir:len()) == root_dir then\n                M.manager:try_add_wrapper(buf, root_dir)\n              end\n            end\n          end\n        elseif config.single_file_support then\n          -- This allows on_new_config to use the parent directory of the file\n          -- Effectively this is the root from lspconfig's perspective, as we use\n          -- this to attach additional files in the same parent folder to the same server.\n          -- We just no longer send rootDirectory or workspaceFolders during initialization.\n          if not api.nvim_buf_is_valid(bufnr) or (#bufname ~= 0 and not util.bufname_valid(bufname)) then\n            return\n          end\n          local pseudo_root = #bufname == 0 and pwd or vim.fs.dirname(vim.fs.normalize(bufname))\n          M.manager:add(pseudo_root, true, bufnr, config.silent)\n        end\n      end)\n    end\n\n    -- Used by :LspInfo (evil, mutable aliases?)\n    M.get_root_dir = get_root_dir\n    M.filetypes = config.filetypes\n    M.handlers = config.handlers\n    M.cmd = config.cmd\n    M.autostart = config.autostart\n\n    -- In the case of a reload, close existing things.\n    local reload = false\n    if M.manager then\n      for _, client in ipairs(M.manager:clients()) do\n        client.stop(true)\n      end\n      reload = true\n      M.manager = nil\n    end\n\n    local make_config = function(root_dir)\n      local new_config = tbl_deep_extend('keep', vim.empty_dict(), config) --[[@as lspconfig.Config]]\n      new_config.capabilities = tbl_deep_extend('keep', new_config.capabilities, {\n        workspace = {\n          configuration = true,\n        },\n      })\n\n      if config_def.on_new_config then\n        pcall(config_def.on_new_config, new_config, root_dir)\n      end\n      if config.on_new_config then\n        pcall(config.on_new_config, new_config, root_dir)\n      end\n\n      new_config.on_init = util.add_hook_after(new_config.on_init, function(client, result)\n        -- Handle offset encoding by default\n        if result.offsetEncoding then\n          client.offset_encoding = result.offsetEncoding\n        end\n\n        -- Send `settings` to server via workspace/didChangeConfiguration\n        function client.workspace_did_change_configuration(settings)\n          if not settings then\n            return\n          end\n          if vim.tbl_isempty(settings) then\n            settings = { [vim.type_idx] = vim.types.dictionary }\n          end\n          return client.notify('workspace/didChangeConfiguration', {\n            settings = settings,\n          })\n        end\n      end)\n\n      -- Save the old _on_attach so that we can reference it via the BufEnter.\n      new_config._on_attach = new_config.on_attach\n      new_config.on_attach = function(client, bufnr)\n        if bufnr == api.nvim_get_current_buf() then\n          M._setup_buffer(client.id, bufnr)\n        else\n          if api.nvim_buf_is_valid(bufnr) then\n            api.nvim_create_autocmd('BufEnter', {\n              callback = function()\n                M._setup_buffer(client.id, bufnr)\n              end,\n              group = lsp_group,\n              buffer = bufnr,\n              once = true,\n              desc = 'Reattaches the server with the updated configurations if changed.',\n            })\n          end\n        end\n      end\n\n      new_config.root_dir = root_dir\n      new_config.workspace_folders = {\n        {\n          uri = vim.uri_from_fname(root_dir),\n          name = string.format('%s', root_dir),\n        },\n      }\n      return new_config\n    end\n\n    local manager = require('lspconfig.manager').new(config, make_config)\n\n    M.manager = manager\n    M.make_config = make_config\n    if reload and config.autostart ~= false then\n      for _, bufnr in ipairs(api.nvim_list_bufs()) do\n        manager:try_add_wrapper(bufnr)\n      end\n    end\n  end\n\n  function M._setup_buffer(client_id, bufnr)\n    local client = lsp.get_client_by_id(client_id)\n    if not client then\n      return\n    end\n    local config = client.config --[[@as lspconfig.Config]]\n    if config._on_attach then\n      config._on_attach(client, bufnr)\n    end\n    if client.config.commands and not vim.tbl_isempty(client.config.commands) then\n      M.commands = vim.tbl_deep_extend('force', M.commands, client.config.commands)\n    end\n    if not M.commands_created and not vim.tbl_isempty(M.commands) then\n      util.create_module_commands(config_name, M.commands)\n    end\n  end\n\n  M.commands = config_def.commands\n  M.name = config_name\n  -- Expose the (original?) values of a config (non-active, or before `setup()`).\n  M.config_def = config_def\n  M.document_config = config_def -- For back-compat.\n\n  rawset(t, config_name, M)\nend\n\nreturn setmetatable({}, configs)\n"
  },
  {
    "path": "lua/lspconfig/health.lua",
    "content": "local M = {}\nlocal health = require('vim.health')\n\nlocal api, fn = vim.api, vim.fn\nlocal util = require 'lspconfig.util'\n\nlocal error_messages = {\n  cmd_not_found = 'Unable to find executable. Check your $PATH and ensure the server is installed.',\n  no_filetype_defined = 'No filetypes defined. Define filetypes in setup().',\n  root_dir_not_found = 'Not found.',\n  async_root_dir_function = 'Asynchronous root_dir functions are not supported by `:checkhealth lspconfig`',\n}\n\nlocal helptags = {\n  [error_messages.no_filetype_defined] = { 'lspconfig-setup' },\n  [error_messages.root_dir_not_found] = { 'lspconfig-root-detection' },\n}\n\nlocal function trim_blankspace(cmd)\n  local trimmed_cmd = {}\n  for _, str in ipairs(cmd) do\n    trimmed_cmd[#trimmed_cmd + 1] = str:match '^%s*(.*)'\n  end\n  return trimmed_cmd\nend\n\nlocal function remove_newlines(cmd)\n  cmd = trim_blankspace(cmd)\n  cmd = table.concat(cmd, ' ')\n  cmd = vim.split(cmd, '\\n')\n  cmd = trim_blankspace(cmd)\n  cmd = table.concat(cmd, ' ')\n  return cmd\nend\n\n--- Tries to run `cmd` and kills it if it takes more than `ms` milliseconds.\n---\n--- This avoids hangs if a command waits for input (especially LSP servers).\n---\n--- @param cmd string[]\n--- @return string? # Command output (stdout+stderr), or `nil` on timeout or nonzero exit.\nlocal function try_get_cmd_output(cmd)\n  local out = nil\n  local function on_data(_, data, _)\n    out = (out or '') .. table.concat(data, '\\n')\n  end\n  local chanid = vim.fn.jobstart(cmd, {\n    -- cwd = ?,\n    stdout_buffered = true,\n    stderr_buffered = true,\n    on_stdout = on_data,\n    on_stderr = on_data,\n  })\n  local rv = vim.fn.jobwait({ chanid }, 500)\n  vim.fn.jobstop(chanid)\n  return rv[1] == 0 and out or nil\nend\n\n--- Finds a \"x.y.z\" version string from the output of `prog` after attempting to invoke it with `--version`, `-v`,\n--- `--help`, etc.\n---\n--- Returns the whole line.\n---\n--- If a version string is not found, returns the concatenated output.\n---\n--- @param prog string\nlocal function try_fmt_version(prog)\n  local all = nil --- Collected output from all attempts.\n  local tried = '' --- Attempted commands.\n  for _, v_arg in ipairs { '--version', '-version', 'version', '--help' } do\n    local cmd = { prog, v_arg }\n    local out = try_get_cmd_output(cmd)\n    all = out and ('%s\\n%s'):format(all or '', out) or all\n    local v_line = out and out:match('[^\\r\\n]*%d+%.[0-9.]+[^\\r\\n]*') or nil\n    if v_line then\n      return ('`%s`'):format(vim.trim(v_line))\n    end\n    tried = tried .. ('`%s %s`\\n'):format(prog, v_arg)\n  end\n\n  all = all and vim.trim(all:sub(1, 80):gsub('[\\r\\n]', ' ')) .. '…' or '?'\n  return ('`%s` (Failed to get version) Tried:\\n%s'):format(all, tried)\nend\n\n--- Prettify a path for presentation.\nlocal function fmtpath(p)\n  if vim.startswith(p, 'Running') or vim.startswith(p, 'Not') then\n    return p\n  end\n  local isdir = 0 ~= vim.fn.isdirectory(vim.fn.expand(p))\n  local r = vim.fn.fnamemodify(p, ':~')\n  -- Force directory path to end with \"/\".\n  -- Bonus: avoids wrong highlighting for \"~\" (because :checkhealth currently uses ft=help).\n  return r .. ((isdir and not r:find('[/\\\\\\\\]%s*$')) and '/' or '')\nend\n\nlocal cmd_type = {\n  ['function'] = function(_)\n    return '<function>', 'NA'\n  end,\n  ['table'] = function(config)\n    local cmd = remove_newlines(config.cmd)\n    if vim.fn.executable(config.cmd[1]) == 1 then\n      return cmd, 'true'\n    end\n    return cmd, error_messages.cmd_not_found\n  end,\n}\n\n--- Builds info displayed by both make_config_info and make_client_info.\nlocal function make_info(config_or_client)\n  local info = vim.deepcopy(config_or_client)\n  local config = config_or_client.config and config_or_client.config or config_or_client\n\n  if config.cmd then\n    info.cmd_desc, info.cmd_is_executable = cmd_type[type(config.cmd)](config)\n  else\n    info.cmd_desc = 'cmd not defined'\n    info.cmd_is_executable = 'NA'\n  end\n\n  info.autostart = (config.autostart and 'true') or 'false'\n  info.filetypes = table.concat(config.filetypes or {}, ', ')\n\n  local version = type(config.cmd) == 'function' and '? (cmd is a function)' or try_fmt_version(config.cmd[1])\n  local info_lines = {\n    'filetypes:         ' .. info.filetypes,\n    'cmd:               ' .. fmtpath(info.cmd_desc),\n    ('%-18s %s'):format('version:', version),\n    'executable:        ' .. info.cmd_is_executable,\n    'autostart:         ' .. info.autostart,\n  }\n\n  return info, info_lines\nend\n\nlocal function make_config_info(config, bufnr)\n  local config_info, info_lines = make_info(config)\n  config_info.helptags = {}\n\n  local buffer_dir = api.nvim_buf_call(bufnr, function()\n    return vim.fn.expand '%:p:h'\n  end)\n\n  if config.get_root_dir then\n    local root_dir\n    local co = coroutine.create(function()\n      local status, err = pcall(function()\n        root_dir = config.get_root_dir(buffer_dir)\n      end)\n      if not status then\n        vim.notify(('[lspconfig] unhandled error: %s'):format(tostring(err), vim.log.levels.WARN))\n      end\n    end)\n    coroutine.resume(co)\n    if root_dir then\n      config_info.root_dir = root_dir\n    elseif coroutine.status(co) == 'suspended' then\n      config_info.root_dir = error_messages.async_root_dir_function\n    else\n      config_info.root_dir = error_messages.root_dir_not_found\n    end\n  else\n    config_info.root_dir = error_messages.root_dir_not_found\n    vim.list_extend(config_info.helptags, helptags[error_messages.root_dir_not_found])\n  end\n\n  local handlers = vim.tbl_keys(config.handlers)\n  config_info.handlers = table.concat(handlers, ', ')\n\n  table.insert(info_lines, 1, 'Config: ' .. config_info.name)\n  table.insert(info_lines, 'root directory:    ' .. fmtpath(config_info.root_dir))\n  if #handlers > 0 then\n    table.insert(info_lines, 'custom handlers:   ' .. config_info.handlers)\n  end\n\n  if vim.tbl_count(config_info.helptags) > 0 then\n    local help = vim.tbl_map(function(helptag)\n      return string.format(':h %s', helptag)\n    end, config_info.helptags)\n    table.insert(info_lines, 'Refer to ' .. table.concat(help, ', ') .. ' for help.')\n  end\n\n  return table.concat(info_lines, '\\n')\nend\n\n---@param client vim.lsp.Client\n---@param fname string\nlocal function make_client_info(client, fname)\n  local client_info, info_lines = make_info(client)\n\n  local workspace_folders = client.workspace_folders\n  fname = vim.fs.normalize(vim.uv.fs_realpath(fname) or fn.fnamemodify(fn.resolve(fname), ':p'))\n\n  if workspace_folders then\n    for _, schema in ipairs(workspace_folders) do\n      local matched = true\n      local root_dir = vim.uv.fs_realpath(schema.name)\n      if root_dir == nil or fname:sub(1, root_dir:len()) ~= root_dir then\n        matched = false\n      end\n\n      if matched then\n        client_info.root_dir = schema.name\n        break\n      end\n    end\n  end\n  if not client_info.root_dir then\n    client_info.root_dir = 'Running in single file mode.'\n  end\n\n  client_info.attached_bufs = table.concat(vim.lsp.get_buffers_by_client_id(client.id), ', ')\n\n  info_lines = vim.list_extend({\n    ('Client: `%s` (id: %s, bufnr: [%s])'):format(client.name, client.id, client_info.attached_bufs),\n    'root directory:    ' .. fmtpath(client_info.root_dir),\n  }, info_lines)\n\n  return table.concat(info_lines, '\\n')\nend\n\nlocal function check_lspconfig(bufnr)\n  bufnr = (bufnr and bufnr ~= -1) and bufnr or nil\n\n  health.start('LSP configs active in this session (globally)')\n  health.info('Configured servers: ' .. table.concat(util.available_servers(), ', '))\n  local deprecated_servers = {}\n  for server_name, deprecate in pairs(require('lspconfig').server_aliases()) do\n    table.insert(deprecated_servers, ('%s -> %s'):format(server_name, deprecate.to))\n  end\n  if #deprecated_servers == 0 then\n    health.ok('Deprecated servers: (none)')\n  else\n    health.warn('Deprecated servers: ' .. table.concat(deprecated_servers, ', '))\n  end\n\n  local buf_clients = not bufnr and {} or vim.lsp.get_clients { bufnr = bufnr }\n  local clients = vim.lsp.get_clients()\n  local buffer_filetype = bufnr and vim.fn.getbufvar(bufnr, '&filetype') or '(invalid buffer)'\n  local fname = bufnr and api.nvim_buf_get_name(bufnr) or '(invalid buffer)'\n\n  local buf_client_ids = {}\n  for _, client in ipairs(buf_clients) do\n    buf_client_ids[#buf_client_ids + 1] = client.id\n  end\n\n  local other_active_clients = {}\n  for _, client in ipairs(clients) do\n    if not vim.tbl_contains(buf_client_ids, client.id) then\n      other_active_clients[#other_active_clients + 1] = client\n    end\n  end\n\n  health.start(('LSP configs active in this buffer (bufnr: %s)'):format(bufnr or '(invalid buffer)'))\n  health.info('Language client log: ' .. fmtpath(vim.lsp.log.get_filename()))\n  health.info(('Detected filetype: `%s`'):format(buffer_filetype))\n  health.info(('%d client(s) attached to this buffer'):format(#vim.tbl_keys(buf_clients)))\n  for _, client in ipairs(buf_clients) do\n    health.info(make_client_info(client, fname))\n  end\n\n  if not vim.tbl_isempty(other_active_clients) then\n    health.info(('%s active client(s) not attached to this buffer:'):format(#other_active_clients))\n    for _, client in ipairs(other_active_clients) do\n      health.info(make_client_info(client, fname))\n    end\n  end\n\n  local other_matching_configs = not bufnr and {} or util.get_other_matching_providers(buffer_filetype)\n  if not vim.tbl_isempty(other_matching_configs) then\n    health.info(('Other clients that match the \"%s\" filetype:'):format(buffer_filetype))\n    for _, config in ipairs(other_matching_configs) do\n      health.info(make_config_info(config, bufnr))\n    end\n  end\n\n  vim.fn.matchadd(\n    'Error',\n    error_messages.no_filetype_defined\n      .. '.\\\\|'\n      .. 'cmd not defined\\\\|'\n      .. error_messages.cmd_not_found\n      .. '\\\\|'\n      .. error_messages.root_dir_not_found\n  )\n\n  -- TODO(justimk): enhance :checkhealth's highlighting instead of doing this only for lspconfig.\n  vim.cmd [[\n    syn keyword String true\n    syn keyword Error false\n  ]]\n\n  return buf_clients, other_matching_configs\nend\n\nlocal function check_lspdocs(buf_clients, other_matching_configs)\n  health.start('Docs for active configs:')\n\n  local function fmt_doc(config)\n    local lines = {}\n    if not config then\n      return lines\n    end\n    local desc = vim.tbl_get(config, 'config_def', 'docs', 'description')\n    if desc then\n      lines[#lines + 1] = string.format('%s docs: >markdown', config.name)\n      lines[#lines + 1] = ''\n      vim.list_extend(lines, vim.split(desc, '\\n'))\n      lines[#lines + 1] = ''\n    end\n    return lines\n  end\n\n  for _, client in ipairs(buf_clients) do\n    local config = require('lspconfig.configs')[client.name]\n    health.info(table.concat(fmt_doc(config), '\\n'))\n  end\n\n  for _, config in ipairs(other_matching_configs) do\n    health.info(table.concat(fmt_doc(config), '\\n'))\n  end\nend\n\nfunction M.check()\n  if vim.fn.has('nvim-0.11') == 1 then\n    local bufempty = vim.fn.line('$') < 3\n    if bufempty then\n      -- Infer that `:checkhealth lspconfig` was called directly.\n      health.info('`:checkhealth lspconfig` was removed. Use `:checkhealth vim.lsp` instead.')\n      vim.deprecate(':checkhealth lspconfig', ':checkhealth vim.lsp', '0.12', 'nvim-lspconfig', false)\n    else\n      -- Healthcheck was auto-discovered  by `:checkhealth` (no args).\n      health.info('Skipped. This healthcheck is redundant with `:checkhealth vim.lsp`.')\n    end\n\n    return\n  end\n\n  -- XXX: create \"q\" mapping until :checkhealth has this feature in Nvim stable.\n  vim.cmd [[nnoremap <buffer> q <c-w>q]]\n\n  -- XXX: :checkhealth switches to its buffer before invoking the healthcheck(s).\n  local orig_bufnr = vim.fn.bufnr('#')\n  local buf_clients, other_matching_configs = check_lspconfig(orig_bufnr)\n  check_lspdocs(buf_clients, other_matching_configs)\nend\n\nreturn M\n"
  },
  {
    "path": "lua/lspconfig/manager.lua",
    "content": "local api = vim.api\nlocal lsp = vim.lsp\n\nlocal async = require 'lspconfig.async'\nlocal util = require 'lspconfig.util'\n\n---@param client vim.lsp.Client\n---@param root_dir string\n---@return boolean\nlocal function is_dir_in_workspace_folders(client, root_dir)\n  if not client.workspace_folders then\n    return false\n  end\n\n  for _, dir in ipairs(client.workspace_folders) do\n    if (root_dir .. '/'):sub(1, #dir.name + 1) == dir.name .. '/' then\n      return true\n    end\n  end\n\n  return false\nend\n\n--- @class lspconfig.Manager\n--- @field _clients table<string,table<string, vim.lsp.Client>> root dir -> (client name -> client)\n--- @field config lspconfig.Config\n--- @field make_config fun(root_dir: string): lspconfig.Config\nlocal M = {}\n\n--- @param config lspconfig.Config\n--- @param make_config fun(root_dir: string): lspconfig.Config\n--- @return lspconfig.Manager\nfunction M.new(config, make_config)\n  return setmetatable({\n    _clients = {},\n    config = config,\n    make_config = make_config,\n  }, {\n    __index = M,\n  })\nend\n\n--- @private\n--- @param root string\n--- @param client vim.lsp.Client\nfunction M:_cache_client(root, client)\n  local clients = self._clients\n  if not clients[root] then\n    clients[root] = {}\n  end\n  if not clients[root][client.name] then\n    clients[root][client.name] = client\n  end\nend\n\n--- @private\n--- @param root_dir string\n--- @param client vim.lsp.Client\nfunction M:_notify_workspace_folder_added(root_dir, client)\n  if is_dir_in_workspace_folders(client, root_dir) then\n    return\n  end\n\n  local supported = vim.tbl_get(client, 'server_capabilities', 'workspace', 'workspaceFolders', 'supported')\n  if not supported then\n    return\n  end\n\n  local params = {\n    event = {\n      added = { { uri = vim.uri_from_fname(root_dir), name = root_dir } },\n      removed = {},\n    },\n  }\n  client.rpc.notify('workspace/didChangeWorkspaceFolders', params)\n  if not client.workspace_folders then\n    client.workspace_folders = {}\n  end\n  client.workspace_folders[#client.workspace_folders + 1] = params.event.added[1]\nend\n\n--- @private\n--- @param bufnr integer\n--- @param new_config lspconfig.Config\n--- @param root_dir string\n--- @param single_file boolean\n--- @param silent boolean\nfunction M:_start_client(bufnr, new_config, root_dir, single_file, silent)\n  -- do nothing if the client is not enabled\n  if new_config.enabled == false then\n    return\n  end\n  if not new_config.cmd then\n    vim.notify(\n      string.format(\n        '[lspconfig] cmd not defined for %q. Manually set cmd in the setup {} call according to configs.md, see :help lspconfig-setup.',\n        new_config.name\n      ),\n      vim.log.levels.ERROR\n    )\n    return\n  end\n\n  new_config.on_init = util.add_hook_before(new_config.on_init, function(client)\n    self:_notify_workspace_folder_added(root_dir, client)\n  end)\n\n  new_config.on_exit = util.add_hook_before(new_config.on_exit, function()\n    for name in pairs(self._clients[root_dir]) do\n      if name == new_config.name then\n        self._clients[root_dir][name] = nil\n      end\n    end\n  end)\n\n  -- Launch the server in the root directory used internally by lspconfig, if otherwise unset\n  -- also check that the path exist\n  if not new_config.cmd_cwd and vim.uv.fs_realpath(root_dir) then\n    new_config.cmd_cwd = root_dir\n  end\n\n  -- Sending rootDirectory and workspaceFolders as null is not explicitly\n  -- codified in the spec. Certain servers crash if initialized with a NULL\n  -- root directory.\n  if single_file then\n    new_config.root_dir = nil\n    new_config.workspace_folders = nil\n  end\n\n  local client_id = lsp.start(new_config, {\n    bufnr = bufnr,\n    silent = silent,\n    reuse_client = function(existing_client)\n      if (self._clients[root_dir] or {})[existing_client.name] then\n        self:_notify_workspace_folder_added(root_dir, existing_client)\n        return true\n      end\n\n      for _, dir_clients in pairs(self._clients) do\n        if dir_clients[existing_client.name] then\n          self:_notify_workspace_folder_added(root_dir, existing_client)\n          return true\n        end\n      end\n\n      return false\n    end,\n  })\n  if client_id then\n    self:_cache_client(root_dir, assert(lsp.get_client_by_id(client_id)))\n  end\nend\n\n---@param root_dir string\n---@param single_file boolean\n---@param bufnr integer\n---@param silent boolean\nfunction M:add(root_dir, single_file, bufnr, silent)\n  root_dir = vim.fs.normalize(root_dir)\n  local new_config = self.make_config(root_dir)\n  self:_start_client(bufnr, new_config, root_dir, single_file, silent)\nend\n\n--- @return vim.lsp.Client[]\nfunction M:clients()\n  local res = {}\n  for _, dir_clients in pairs(self._clients) do\n    for _, client in pairs(dir_clients) do\n      res[#res + 1] = client\n    end\n  end\n  return res\nend\n\n--- Try to attach the buffer `bufnr` to a client using this config, creating\n--- a new client if one doesn't already exist for `bufnr`.\n--- @param bufnr integer\n--- @param project_root? string\n--- @param silent boolean\nfunction M:try_add(bufnr, project_root, silent)\n  bufnr = bufnr or api.nvim_get_current_buf()\n\n  if vim.bo[bufnr].buftype == 'nofile' then\n    return\n  end\n\n  local bufname = api.nvim_buf_get_name(bufnr)\n  if #bufname == 0 and not self.config.single_file_support then\n    return\n  end\n\n  if #bufname ~= 0 and not util.bufname_valid(bufname) then\n    return\n  end\n\n  if project_root then\n    self:add(project_root, false, bufnr, silent)\n    return\n  end\n\n  local buf_path = vim.fs.normalize(bufname)\n\n  local get_root_dir = self.config.root_dir\n\n  local pwd = assert(vim.uv.cwd())\n\n  async.run(function()\n    local root_dir\n    if type(get_root_dir) == 'function' then\n      root_dir = get_root_dir(buf_path, bufnr)\n      async.reenter()\n      if not api.nvim_buf_is_valid(bufnr) then\n        return\n      end\n    elseif type(get_root_dir) == 'string' then\n      root_dir = get_root_dir\n    end\n\n    if root_dir then\n      self:add(root_dir, false, bufnr, silent)\n    elseif self.config.single_file_support then\n      local pseudo_root = #bufname == 0 and pwd or vim.fs.dirname(buf_path)\n      self:add(pseudo_root, true, bufnr, silent)\n    end\n  end)\nend\n\n--- Check that the buffer `bufnr` has a valid filetype according to\n--- `config.filetypes`, then do `manager.try_add(bufnr)`.\n--- @param bufnr integer\n--- @param project_root? string\nfunction M:try_add_wrapper(bufnr, project_root)\n  local config = self.config\n  -- `config.filetypes = nil` means all filetypes are valid.\n  if not config.filetypes or vim.tbl_contains(config.filetypes, vim.bo[bufnr].filetype) then\n    self:try_add(bufnr, project_root, config.silent)\n  end\nend\n\nreturn M\n"
  },
  {
    "path": "lua/lspconfig/types/lsp/ada_ls.lua",
    "content": "---@meta\n\n---@class _.lspconfig.settings.ada_ls.Ada.OnTypeFormatting\n---If the VS Code `editor.formatOnType` setting is enabled, the Ada Language Server will format Ada code while it is being typed in the editor, in particular when a new line is typed.\n---\n---This setting controls whether formatting should only perform the indentation of the new line (true) or also format the previous line (false).\n---\n---If not set in VS Code, this setting takes its value from the [`.als.json`](https://github.com/AdaCore/ada_language_server/blob/master/doc/settings.md) file at the root of the workspace, if that file exists. Otherwise it defaults to `false`.\n---@field indentOnly? true | false\n\n---@class _.lspconfig.settings.ada_ls.Ada.Trace\n---Traces the communication between VS Code and the Ada language server in the 'Ada Language Server' Output view.\n---\n---```lua\n---default = \"off\"\n---```\n---@field server? \"off\" | \"messages\" | \"verbose\"\n\n---@class _.lspconfig.settings.ada_ls.Ada\n---Controls whether or not the Ada Language Server should emit diagnostics related to the edition of Ada files into the VS Code Problems view.\n---\n---If not set in VS Code, this setting takes its value from the [`.als.json`](https://github.com/AdaCore/ada_language_server/blob/master/doc/settings.md) file at the root of the workspace, if that file exists. Otherwise it defaults to `true`.\n---@field adaFileDiagnostics? true | false\n---Controls whether or not the Ada Language Server should emit diagnostics related to alire into the VS Code Problems view.\n---\n---If not set in VS Code, this setting takes its value from the [`.als.json`](https://github.com/AdaCore/ada_language_server/blob/master/doc/settings.md) file at the root of the workspace, if that file exists. Otherwise it defaults to `true`.\n---@field alireDiagnostics? true | false\n---The character set that the Ada Language Server should use when reading files from disk.\n---\n---If not set in VS Code, this setting takes its value from the [`.als.json`](https://github.com/AdaCore/ada_language_server/blob/master/doc/settings.md) file at the root of the workspace, if that file exists.\n---@field defaultCharset? string\n---Controls the policy for displaying overriding and overridden subprograms on navigation requests such as 'Go To Definition' or 'Go To Implementations'.\n---\n---If not set in VS Code, this setting takes its value from the [`.als.json`](https://github.com/AdaCore/ada_language_server/blob/master/doc/settings.md) file at the root of the workspace, if that file exists. Otherwise it defaults to `\"usage_and_abstract_only\"`.\n---@field displayMethodAncestryOnNavigation? \"never\" | \"usage_and_abstract_only\" | \"definition_only\" | \"always\"\n---Controls the primary documentation style of entities.\n---\n---If not set in VS Code, this setting takes its value from the [`.als.json`](https://github.com/AdaCore/ada_language_server/blob/master/doc/settings.md) file at the root of the workspace, if that file exists. Otherwise it defaults to `\"gnat\"`.\n---@field documentationStyle? \"gnat\" | \"leading\"\n---Enable experimental features still in development.\n---@field enableExperimentalFeatures? boolean\n---Controls whether the Ada Language Server should index the source files immediately after loading a project.\n---\n---If set to false, indexing will be deferred to the time when an action requiring the index is first performed, e.g. hovering over a referenced entity to get its documentation.\n---\n---If not set in VS Code, this setting takes its value from the [`.als.json`](https://github.com/AdaCore/ada_language_server/blob/master/doc/settings.md) file at the root of the workspace, if that file exists. Otherwise it defaults to `true`.\n---@field enableIndexing? true | false\n---Controls whether comments should be folded like code blocks.\n---\n---If not set in VS Code, this setting takes its value from the [`.als.json`](https://github.com/AdaCore/ada_language_server/blob/master/doc/settings.md) file at the root of the workspace, if that file exists. Otherwise it defaults to `true`.\n---@field foldComments? true | false\n---Controls the Ada Language Server normalizes the file paths received from the client.\n---\n---If not set in VS Code, this setting takes its value from the [`.als.json`](https://github.com/AdaCore/ada_language_server/blob/master/doc/settings.md) file at the root of the workspace, if that file exists. Otherwise it defaults to `true`.\n---@field followSymlinks? true | false\n---GPR configuration file (*.cgpr) for this workspace.\n---\n---It is recommended to set this to a relative path starting at the root of the workspace.\n---\n---If not set in VS Code, this setting takes its value from the [`.als.json`](https://github.com/AdaCore/ada_language_server/blob/master/doc/settings.md) file at the root of the workspace, if that file exists.\n---@field gprConfigurationFile? string\n---Controls whether or not the Ada Language Server should emit diagnostics related to the edition of GPR files into the VS Code Problems view.\n---\n---If not set in VS Code, this setting takes its value from the [`.als.json`](https://github.com/AdaCore/ada_language_server/blob/master/doc/settings.md) file at the root of the workspace, if that file exists. Otherwise it defaults to `true`.\n---@field gprFileDiagnostics? true | false\n---Enable insertion of missing with-clauses when accepting completion for invisible symbols.\n---\n---If not set in VS Code, this setting takes its value from the [`.als.json`](https://github.com/AdaCore/ada_language_server/blob/master/doc/settings.md) file at the root of the workspace, if that file exists. Otherwise it defaults to `true`.\n---@field insertWithClauses? true | false\n---Controls the maximum number of trace files preserved in the ALS log directory (which defaults to `~/.als`). When this threshold is reached, old trace files get deleted automatically. The default number of preserved trace files is `10`.\n---\n---If not set in VS Code, this setting takes its value from the [`.als.json`](https://github.com/AdaCore/ada_language_server/blob/master/doc/settings.md) file at the root of the workspace, if that file exists. Otherwise it defaults to `10`.\n---\n---```lua\n---default = 10\n---```\n---@field logThreshold? integer\n---Defines the number of parameters/components beyond which named notation is used for completion snippets.\n---\n---If not set in VS Code, this setting takes its value from the [`.als.json`](https://github.com/AdaCore/ada_language_server/blob/master/doc/settings.md) file at the root of the workspace, if that file exists. Otherwise it defaults to `3`.\n---\n---```lua\n---default = 3\n---```\n---@field namedNotationThreshold? integer\n---@field onTypeFormatting? _.lspconfig.settings.ada_ls.Ada.OnTypeFormatting\n---Controls whether or not the Ada Language Server should emit diagnostics related to project loading into the VS Code Problems view.\n---\n---If not set in VS Code, this setting takes its value from the [`.als.json`](https://github.com/AdaCore/ada_language_server/blob/master/doc/settings.md) file at the root of the workspace, if that file exists. Otherwise it defaults to `true`.\n---@field projectDiagnostics? true | false\n---GPR project file (*.gpr) for this workspace.\n---\n---It is recommended to set this to a relative path starting at the root of the workspace.\n---\n---If not set in VS Code, this setting takes its value from the [`.als.json`](https://github.com/AdaCore/ada_language_server/blob/master/doc/settings.md) file at the root of the workspace, if that file exists.\n---@field projectFile? string\n---Enable fallback indenter in case the file is not syntactically correct.\n---\n---If not set in VS Code, this setting takes its value from the [`.als.json`](https://github.com/AdaCore/ada_language_server/blob/master/doc/settings.md) file at the root of the workspace, if that file exists. Otherwise it defaults to `true`.\n---@field rangeFormattingFallback? true | false\n---The path to a directory used for out-of-tree builds. This feature is related to the [--relocate-build-tree GPRbuild command line switch](https://docs.adacore.com/gprbuild-docs/html/gprbuild_ug/building_with_gprbuild.html#switches).\n---\n---If not set in VS Code, this setting takes its value from the [`.als.json`](https://github.com/AdaCore/ada_language_server/blob/master/doc/settings.md) file at the root of the workspace, if that file exists.\n---@field relocateBuildTree? string\n---Enable editing Ada comments to update references to an entity when it is being renamed.\n---\n---If not set in VS Code, this setting takes its value from the [`.als.json`](https://github.com/AdaCore/ada_language_server/blob/master/doc/settings.md) file at the root of the workspace, if that file exists. Otherwise it defaults to `false`.\n---@field renameInComments? true | false\n---This setting must be used in conjunction with the `relocateBuildTree` setting.\n---\n---It specifies the root directory for artifact relocation. It corresponds to the [--root-dir GPRbuild command line switch](https://docs.adacore.com/gprbuild-docs/html/gprbuild_ug/building_with_gprbuild.html#switches).\n---\n---If not set in VS Code, this setting takes its value from the [`.als.json`](https://github.com/AdaCore/ada_language_server/blob/master/doc/settings.md) file at the root of the workspace, if that file exists.\n---@field rootDir? string\n---Scenario variables to apply to the GPR project file.\n---\n---This value should be provided as an object where the property names are GPR scenario variables and the values are strings.\n---\n---If not set in VS Code, this setting takes its value from the [`.als.json`](https://github.com/AdaCore/ada_language_server/blob/master/doc/settings.md) file at the root of the workspace, if that file exists.\n---@field scenarioVariables? table\n---Whether to show error notifications in VS Code for failing LSP requests.\n---@field showNotificationsOnErrors? boolean\n---Controls whether or not the Ada Language Server should emit source information diagnostics (e.g: for opened files that do not belong to the loaded project tree).\n---\n---If not set in VS Code, this setting takes its value from the [`.als.json`](https://github.com/AdaCore/ada_language_server/blob/master/doc/settings.md) file at the root of the workspace, if that file exists. Otherwise it defaults to `true`.\n---@field sourceInfoDiagnostics? true | false\n---@field trace? _.lspconfig.settings.ada_ls.Ada.Trace\n---Enable snippets in completion results (e.g. subprogram calls).\n---\n---If not set in VS Code, this setting takes its value from the [`.als.json`](https://github.com/AdaCore/ada_language_server/blob/master/doc/settings.md) file at the root of the workspace, if that file exists. Otherwise it defaults to `true`.\n---@field useCompletionSnippets? true | false\n\n---@class _.lspconfig.settings.ada_ls.E3Testsuite\n---Command line arguments to pass to testsuite.py when running tests\n---\n---```lua\n---default = {}\n---```\n---@field args? any[]\n---Path to python interpreter, useful when you want to use a specific venv\n---\n---```lua\n---default = \"python\"\n---```\n---@field python? string\n---Path to testsuite.py\n---@field testsuitePath? string\n\n---@class _.lspconfig.settings.ada_ls.Gpr.Trace\n---Traces the communication between VS Code and the GPR language server in the 'GPR Language Server' Output view.\n---\n---```lua\n---default = \"off\"\n---```\n---@field server? \"off\" | \"messages\" | \"verbose\"\n\n---@class _.lspconfig.settings.ada_ls.Gpr\n---@field trace? _.lspconfig.settings.ada_ls.Gpr.Trace\n\n---@class lspconfig.settings.ada_ls\n---@field ada? _.lspconfig.settings.ada_ls.Ada\n---@field [\"e3-testsuite\"]? _.lspconfig.settings.ada_ls.E3Testsuite\n---@field gpr? _.lspconfig.settings.ada_ls.Gpr\n"
  },
  {
    "path": "lua/lspconfig/types/lsp/astro.lua",
    "content": "---@meta\n\n---@class _.lspconfig.settings.astro.Astro.AutoImportCache\n---Enable the auto import cache. Yields a faster intellisense when automatically importing a file, but can cause issues with new files not being detected. Change is applied on restart. See [#1035](https://github.com/withastro/language-tools/issues/1035).\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.astro.Astro.LanguageServer\n---Path to the language server executable. You won't need this in most cases, set this only when needing a specific version of the language server\n---@field [\"ls-path\"]? string\n---Path to the node executable used to execute the language server. You won't need this in most cases\n---@field runtime? string\n\n---@class _.lspconfig.settings.astro.Astro.Trace\n---Traces the communication between VS Code and the language server.\n---\n---```lua\n---default = \"off\"\n---```\n---@field server? \"off\" | \"messages\" | \"verbose\"\n\n---@class _.lspconfig.settings.astro.Astro.UpdateImportsOnFileMove\n---Controls whether the extension updates imports when a file is moved to a new location. In most cases, you'll want to keep this disabled as TypeScript and the Astro TypeScript plugin already handles this for you. Having multiple tools updating imports at the same time can lead to corrupted files.\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.astro.Astro\n---@field [\"auto-import-cache\"]? _.lspconfig.settings.astro.Astro.AutoImportCache\n---Enable experimental support for content collection intellisense inside Markdown, MDX and Markdoc. Note that this require also enabling the feature in your Astro config (experimental.contentCollectionIntellisense) (Astro 4.14+)\n---@field [\"content-intellisense\"]? boolean\n---@field [\"language-server\"]? _.lspconfig.settings.astro.Astro.LanguageServer\n---@field trace? _.lspconfig.settings.astro.Astro.Trace\n---@field updateImportsOnFileMove? _.lspconfig.settings.astro.Astro.UpdateImportsOnFileMove\n\n---@class lspconfig.settings.astro\n---@field astro? _.lspconfig.settings.astro.Astro\n"
  },
  {
    "path": "lua/lspconfig/types/lsp/awk_ls.lua",
    "content": "---@meta\n\n---@class _.lspconfig.settings.awk_ls.AwkIdeVscode.Trace\n---Traces the communication between VS Code and the language server.\n---\n---```lua\n---default = \"off\"\n---```\n---@field server? \"off\" | \"messages\" | \"verbose\"\n\n---@class _.lspconfig.settings.awk_ls.AwkIdeVscode\n---Turns on/off source files indexing. Requires restart.\n---\n---```lua\n---default = true\n---```\n---@field indexing? boolean\n---@field trace? _.lspconfig.settings.awk_ls.AwkIdeVscode.Trace\n\n---@class lspconfig.settings.awk_ls\n---@field [\"awk-ide-vscode\"]? _.lspconfig.settings.awk_ls.AwkIdeVscode\n"
  },
  {
    "path": "lua/lspconfig/types/lsp/basedpyright.lua",
    "content": "---@meta\n\n---Allows a user to override the severity levels for individual diagnostics. Use the rule name as a key and one of \"error\", \"warning\", \"information\", \"none\", `true` (alias for \"error\") or `false` (alias for \"none\") as value. The default value shown for each diagnostic is the default when \"basedpyright.analysis.typeCheckingMode\" is set to \"standard\". See [here](https://docs.basedpyright.com/latest/configuration/config-files/#diagnostic-settings-defaults) for defaults for each type checking mode (\"off\", \"basic\", \"standard\", \"strict\", and \"all\").\n---@class _.lspconfig.settings.basedpyright.Basedpyright.Analysis.DiagnosticSeverityOverrides\n---Diagnostics for an attempt to instantiate an abstract or protocol class or use an abstract method.\n---\n---```lua\n---default = \"error\"\n---```\n---@field reportAbstractUsage? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for expressions with the `Any` type\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportAny? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for a type incompatibility for an argument to a call.\n---\n---```lua\n---default = \"error\"\n---```\n---@field reportArgumentType? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for 'assert' statement that will provably always assert. This can be indicative of a programming error.\n---\n---```lua\n---default = \"warning\"\n---```\n---@field reportAssertAlwaysTrue? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for a type incompatibility detected by a typing.assert_type call.\n---\n---```lua\n---default = \"error\"\n---```\n---@field reportAssertTypeFailure? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for type incompatibilities for assignments.\n---\n---```lua\n---default = \"error\"\n---```\n---@field reportAssignmentType? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for issues involving attribute accesses.\n---\n---```lua\n---default = \"error\"\n---```\n---@field reportAttributeAccessIssue? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for function calls within a default value initialization expression. Such calls can mask expensive operations that are performed at module initialization time.\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportCallInDefaultInitializer? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for issues involving call expressions and arguments.\n---\n---```lua\n---default = \"error\"\n---```\n---@field reportCallIssue? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for attempts to redefine variables whose names are all-caps with underscores and numerals.\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportConstantRedefinition? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for use of deprecated classes or functions.\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportDeprecated? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for an imported symbol or module that is imported more than once.\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportDuplicateImport? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for type annotations that use the `Any` type\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportExplicitAny? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for member accesses on functions.\n---\n---```lua\n---default = \"error\"\n---```\n---@field reportFunctionMemberAccess? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for general type inconsistencies, unsupported operations, argument/parameter mismatches, etc. Covers all of the basic type-checking rules not covered by other rules. Does not include syntax errors.\n---\n---```lua\n---default = \"error\"\n---```\n---@field reportGeneralTypeIssues? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for `# type: ignore` and `# pyright: ignore` comments without specifying a rule\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportIgnoreCommentWithoutRule? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for abstract classes that do not explicitly extend `ABC`\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportImplicitAbstractClass? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for overridden methods that do not include an `@override` decorator.\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportImplicitOverride? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for non-relative imports that do not specify the full path to the module\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportImplicitRelativeImport? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for two or more string literals that follow each other, indicating an implicit concatenation. This is considered a bad practice and often masks bugs such as missing commas.\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportImplicitStringConcatenation? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for cyclical import chains. These are not errors in Python, but they do slow down type analysis and often hint at architectural layering issues. Generally, they should be avoided.\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportImportCycles? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for methods that override a method of the same name in a base class in an incompatible manner (wrong number of parameters, incompatible parameter types, or incompatible return type).\n---\n---```lua\n---default = \"error\"\n---```\n---@field reportIncompatibleMethodOverride? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for overrides in subclasses that redefine a variable without a type annotation in an incompatible way\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportIncompatibleUnannotatedOverride? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for overrides in subclasses that redefine a variable in an incompatible way.\n---\n---```lua\n---default = \"error\"\n---```\n---@field reportIncompatibleVariableOverride? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for the use of a module-level “__getattr__” function, indicating that the stub is incomplete.\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportIncompleteStub? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for __init__ and __new__ methods whose signatures are inconsistent.\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportInconsistentConstructor? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for inconsistencies between function overload signatures and implementation.\n---\n---```lua\n---default = \"error\"\n---```\n---@field reportInconsistentOverload? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics related to index operations and expressions.\n---\n---```lua\n---default = \"error\"\n---```\n---@field reportIndexIssue? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for usages of `@abstractmethod` on a non-abstract class\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportInvalidAbstractMethod? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for `cast`s to non-overlapping types\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportInvalidCast? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for invalid escape sequences used within string literals. The Python specification indicates that such sequences will generate a syntax error in future versions.\n---\n---```lua\n---default = \"warning\"\n---```\n---@field reportInvalidStringEscapeSequence? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for type stub statements that do not conform to PEP 484.\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportInvalidStubStatement? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for invalid type argument usage.\n---\n---```lua\n---default = \"error\"\n---```\n---@field reportInvalidTypeArguments? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for type expression that uses an invalid form.\n---\n---```lua\n---default = \"error\"\n---```\n---@field reportInvalidTypeForm? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for improper use of type variables in a function signature.\n---\n---```lua\n---default = \"warning\"\n---```\n---@field reportInvalidTypeVarUse? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for 'match' statements that do not exhaustively match all possible values.\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportMatchNotExhaustive? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for imports that have no corresponding imported python file or type stub file.\n---\n---```lua\n---default = \"error\"\n---```\n---@field reportMissingImports? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for imports that have no corresponding source file. This happens when a type stub is found, but the module source file was not found, indicating that the code may fail at runtime when using this execution environment. Type checking will be done using the type stub.\n---\n---```lua\n---default = \"warning\"\n---```\n---@field reportMissingModuleSource? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for parameters that are missing a type annotation.\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportMissingParameterType? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for missing call to parent class for inherited `__init__` methods.\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportMissingSuperCall? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for generic class reference with missing type arguments.\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportMissingTypeArgument? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for imports that have no corresponding type stub file (either a typeshed file or a custom type stub). The type checker requires type stubs to do its best job at analysis.\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportMissingTypeStubs? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for an overloaded function or method with a missing implementation.\n---\n---```lua\n---default = \"error\"\n---```\n---@field reportNoOverloadImplementation? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for related to unary or binary operators.\n---\n---```lua\n---default = \"error\"\n---```\n---@field reportOperatorIssue? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for an attempt to call a variable with an Optional type.\n---\n---```lua\n---default = \"error\"\n---```\n---@field reportOptionalCall? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for an attempt to use an Optional type as a context manager (as a parameter to a with statement).\n---\n---```lua\n---default = \"error\"\n---```\n---@field reportOptionalContextManager? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for an attempt to use an Optional type as an iterable value (e.g. within a for statement).\n---\n---```lua\n---default = \"error\"\n---```\n---@field reportOptionalIterable? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for an attempt to access a member of a variable with an Optional type.\n---\n---```lua\n---default = \"error\"\n---```\n---@field reportOptionalMemberAccess? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for an attempt to use an Optional type as an operand to a binary or unary operator (like '+', '<<', '~').\n---\n---```lua\n---default = \"error\"\n---```\n---@field reportOptionalOperand? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for an attempt to subscript (index) a variable with an Optional type.\n---\n---```lua\n---default = \"error\"\n---```\n---@field reportOptionalSubscript? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for function overloads that overlap in signature and obscure each other or have incompatible return types.\n---\n---```lua\n---default = \"error\"\n---```\n---@field reportOverlappingOverload? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for the use of variables that may be unbound on some code paths.\n---\n---```lua\n---default = \"error\"\n---```\n---@field reportPossiblyUnboundVariable? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for incorrect usage of symbol imported from a \"py.typed\" module that is not re-exported from that module.\n---\n---```lua\n---default = \"error\"\n---```\n---@field reportPrivateImportUsage? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for incorrect usage of symbol imported from a non-\"py.typed\" module that is not re-exported from that module. Should be used along with `reportNonPrivateImportUsage`\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportPrivateLocalImportUsage? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for incorrect usage of private or protected variables or functions. Protected class members begin with a single underscore _ and can be accessed only by subclasses. Private class members begin with a double underscore but do not end in a double underscore and can be accessed only within the declaring class. Variables and functions declared outside of a class are considered private if their names start with either a single or double underscore, and they cannot be accessed outside of the declaring module.\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportPrivateUsage? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for property whose setter and getter have mismatched types.\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportPropertyTypeMismatch? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for an attempt to declare the type of a symbol multiple times.\n---\n---```lua\n---default = \"error\"\n---```\n---@field reportRedeclaration? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics related to function return type compatibility.\n---\n---```lua\n---default = \"error\"\n---```\n---@field reportReturnType? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for providing a default value for a `self` or `cls` parameter\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportSelfClsDefault? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for a missing or misnamed “self” parameter in instance methods and “cls” parameter in class methods. Instance methods in metaclasses (classes that derive from “type”) are allowed to use “cls” for instance methods.\n---\n---```lua\n---default = \"warning\"\n---```\n---@field reportSelfClsParameterName? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for usage of deprecated type comments.\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportTypeCommentUsage? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for an attempt to access a non-required key within a TypedDict without a check for its presence.\n---\n---```lua\n---default = \"error\"\n---```\n---@field reportTypedDictNotRequiredAccess? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for class variable declarations that do not have a type annotation, which is required due to performance reasons for strict validation of subclasses\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportUnannotatedClassAttribute? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for the use of unbound variables.\n---\n---```lua\n---default = \"error\"\n---```\n---@field reportUnboundVariable? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for undefined variables.\n---\n---```lua\n---default = \"error\"\n---```\n---@field reportUndefinedVariable? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for the use of an unhashable object in a container that requires hashability.\n---\n---```lua\n---default = \"error\"\n---```\n---@field reportUnhashable? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for instance variables that are not declared or initialized within class body or `__init__` method.\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportUninitializedInstanceVariable? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for call arguments for functions or methods that have an unknown type.\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportUnknownArgumentType? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for input or return parameters for lambdas that have an unknown type.\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportUnknownLambdaType? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for class or instance variables that have an unknown type.\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportUnknownMemberType? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for input or return parameters for functions or methods that have an unknown type.\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportUnknownParameterType? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for variables that have an unknown type..\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportUnknownVariableType? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for 'cast' calls that are statically determined to be unnecessary. Such calls are sometimes indicative of a programming error.\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportUnnecessaryCast? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for '==' and '!=' comparisons that are statically determined to be unnecessary. Such calls are sometimes indicative of a programming error.\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportUnnecessaryComparison? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for 'in' operation that is statically determined to be unnecessary. Such operations are sometimes indicative of a programming error.\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportUnnecessaryContains? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for 'isinstance' or 'issubclass' calls where the result is statically determined to be always (or never) true. Such calls are often indicative of a programming error.\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportUnnecessaryIsInstance? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for '# type: ignore' comments that have no effect.\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportUnnecessaryTypeIgnoreComment? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for code that is determined by type analysis to be unreachable.\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportUnreachable? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for multiple inheritance where a base class's constructor may not get called\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportUnsafeMultipleInheritance? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for unsupported operations performed on __all__.\n---\n---```lua\n---default = \"warning\"\n---```\n---@field reportUnsupportedDunderAll? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for base classes whose type cannot be determined statically. These obscure the class type, defeating many type analysis features.\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportUntypedBaseClass? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for class decorators that have no type annotations. These obscure the class type, defeating many type analysis features.\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportUntypedClassDecorator? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for function decorators that have no type annotations. These obscure the function type, defeating many type analysis features.\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportUntypedFunctionDecorator? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics when “namedtuple” is used rather than “NamedTuple”. The former contains no type information, whereas the latter does.\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportUntypedNamedTuple? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for call expressions whose results are not consumed and are not None.\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportUnusedCallResult? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for a class with a private name (starting with an underscore) that is not accessed.\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportUnusedClass? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for call expressions that return a Coroutine and whose results are not consumed.\n---\n---```lua\n---default = \"error\"\n---```\n---@field reportUnusedCoroutine? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for unreachable except clause.\n---\n---```lua\n---default = \"error\"\n---```\n---@field reportUnusedExcept? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for simple expressions whose value is not used in any way.\n---\n---```lua\n---default = \"warning\"\n---```\n---@field reportUnusedExpression? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for a function or method with a private name (starting with an underscore) that is not accessed.\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportUnusedFunction? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for an imported symbol that is not referenced within that file.\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportUnusedImport? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for unused function parameters\n---\n---```lua\n---default = \"hint\"\n---```\n---@field reportUnusedParameter? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for a variable that is not accessed.\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportUnusedVariable? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for an wildcard import from an external library.\n---\n---```lua\n---default = \"warning\"\n---```\n---@field reportWildcardImportFromLibrary? \"none\" | \"hint\" | \"information\" | \"warning\" | \"error\" | true | false\n\n---@class _.lspconfig.settings.basedpyright.Basedpyright.Analysis.InlayHints\n---Whether to show inlay hints on function arguments.\n---\n---```lua\n---default = true\n---```\n---@field callArgumentNames? boolean\n---Whether to show inlay hints on function arguments when the input expression is a variable with the same name as the parameter.\n---@field callArgumentNamesMatching? boolean\n---Whether to show inlay hints on function return types.\n---\n---```lua\n---default = true\n---```\n---@field functionReturnTypes? boolean\n---Whether to show inlay hints on inferred generic types.\n---\n---```lua\n---default = true\n---```\n---@field genericTypes? boolean\n---Whether to show inlay hints on assignments to variables.\n---\n---```lua\n---default = true\n---```\n---@field variableTypes? boolean\n\n---@class _.lspconfig.settings.basedpyright.Basedpyright.Analysis\n---Whether to automatically insert an `f` in front of a string when typing a `{` inside it.\n---\n---```lua\n---default = true\n---```\n---@field autoFormatStrings? boolean\n---Offer auto-import completions.\n---\n---```lua\n---default = true\n---```\n---@field autoImportCompletions? boolean\n---Automatically add common search paths like 'src'?\n---\n---```lua\n---default = true\n---```\n---@field autoSearchPaths? boolean\n---Path to the baseline file. Defaults to `./.basedpyright/baseline.json`\n---\n---```lua\n---default = \"\"\n---```\n---@field baselineFile? string\n---Controls how the baseline file is updated when files are saved.\n---\n---```lua\n---default = \"auto\"\n---```\n---@field baselineMode? \"auto\" | \"discard\"\n---Path to the directory or file containing the Pyright configuration (`pyrightconfig.json` or `pyproject.toml`). If a directory is specified, basedpyright will search for the config file in that directory. This is useful for monorepo structures where the config file is in a subdirectory. Example: `${workspaceFolder}/backend`\n---\n---```lua\n---default = \"\"\n---```\n---@field configFilePath? string\n---```lua\n---default = \"openFilesOnly\"\n---```\n---@field diagnosticMode? \"openFilesOnly\" | \"workspace\"\n---Allows a user to override the severity levels for individual diagnostics. Use the rule name as a key and one of \"error\", \"warning\", \"information\", \"none\", `true` (alias for \"error\") or `false` (alias for \"none\") as value. The default value shown for each diagnostic is the default when \"basedpyright.analysis.typeCheckingMode\" is set to \"standard\". See [here](https://docs.basedpyright.com/latest/configuration/config-files/#diagnostic-settings-defaults) for defaults for each type checking mode (\"off\", \"basic\", \"standard\", \"strict\", and \"all\").\n---@field diagnosticSeverityOverrides? _.lspconfig.settings.basedpyright.Basedpyright.Analysis.DiagnosticSeverityOverrides\n---Paths of directories or files that should not be included. These override the include directories, allowing specific subdirectories to be excluded. Note that files in the exclude paths may still be included in the analysis if they are referenced (imported) by source files that are not excluded. Paths may contain wildcard characters ** (a directory or multiple levels of directories), * (a sequence of zero or more characters), or ? (a single character). If no exclude paths are specified, pyright automatically excludes the following: `**/node_modules`, `**/__pycache__`, `.git` and any virtual environment directories.\n---\n---```lua\n---default = {}\n---```\n---@field exclude? string[]\n---Additional import search resolution paths\n---\n---```lua\n---default = {}\n---```\n---@field extraPaths? string[]\n---Timeout (in seconds) for file enumeration operations. Default is 10 seconds.\n---\n---```lua\n---default = 10\n---```\n---@field fileEnumerationTimeout? integer\n---Paths of directories or files whose diagnostic output (errors and warnings) should be suppressed even if they are an included file or within the transitive closure of an included file. Paths may contain wildcard characters ** (a directory or multiple levels of directories), * (a sequence of zero or more characters), or ? (a single character). If no value is provided, the value of python.linting.ignorePatterns (if set) will be used.\n---\n---```lua\n---default = {}\n---```\n---@field ignore? string[]\n---Paths of directories or files that should be included. If no paths are specified, pyright defaults to the workspace root directory. Paths may contain wildcard characters ** (a directory or multiple levels of directories), * (a sequence of zero or more characters), or ? (a single character).\n---\n---```lua\n---default = {}\n---```\n---@field include? string[]\n---@field inlayHints? _.lspconfig.settings.basedpyright.Basedpyright.Analysis.InlayHints\n---Specifies the level of logging for the Output panel\n---\n---```lua\n---default = \"Information\"\n---```\n---@field logLevel? \"Error\" | \"Warning\" | \"Information\" | \"Trace\"\n---Path to directory containing custom type stub files.\n---\n---```lua\n---default = \"typings\"\n---```\n---@field stubPath? string\n---Defines the default rule set for type checking.\n---\n---```lua\n---default = \"recommended\"\n---```\n---@field typeCheckingMode? \"off\" | \"basic\" | \"standard\" | \"strict\" | \"recommended\" | \"all\"\n---Paths to look for typeshed modules.\n---\n---```lua\n---default = {}\n---```\n---@field typeshedPaths? string[]\n---Use library implementations to extract type information when type stub is not present.\n---\n---```lua\n---default = true\n---```\n---@field useLibraryCodeForTypes? boolean\n---Whether to rely on imports from the `typing_extensions` module when targeting older versions of python that do not include certain typing features such as the `@override` decorator.\n---@field useTypingExtensions? boolean\n\n---@class _.lspconfig.settings.basedpyright.Basedpyright\n---@field analysis? _.lspconfig.settings.basedpyright.Basedpyright.Analysis\n---Disables type completion, definitions, and references.\n---@field disableLanguageServices? boolean\n---Disables the “Organize Imports” command.\n---@field disableOrganizeImports? boolean\n---Disables the use of pull diagnostics from VS Code.\n---@field disablePullDiagnostics? boolean\n---Disable hint diagnostics with special hints for grayed-out or strike-through text.\n---@field disableTaggedHints? boolean\n---Whether to use the version of pyright installed in the project (recommended) or the one bundled with the extension (not recommended).\n---\n---```lua\n---default = \"fromEnvironment\"\n---```\n---@field importStrategy? \"fromEnvironment\" | \"useBundled\"\n\n---@class _.lspconfig.settings.basedpyright.Python\n---Path to Python, you can use a custom version of Python.\n---\n---```lua\n---default = \"python\"\n---```\n---@field pythonPath? string\n---Path to folder with a list of Virtual Environments.\n---\n---```lua\n---default = \"\"\n---```\n---@field venvPath? string\n\n---@class lspconfig.settings.basedpyright\n---@field basedpyright? _.lspconfig.settings.basedpyright.Basedpyright\n---@field python? _.lspconfig.settings.basedpyright.Python\n"
  },
  {
    "path": "lua/lspconfig/types/lsp/bashls.lua",
    "content": "---@meta\n\n---@class _.lspconfig.settings.bashls.BashIde.Shfmt\n---Allow boolean operators (like && and ||) to start a line.\n---@field binaryNextLine? boolean\n---Indent patterns in case statements.\n---@field caseIndent? boolean\n---Place function opening braces on a separate line.\n---@field funcNextLine? boolean\n---Ignore shfmt config options in .editorconfig (always use language server config)\n---@field ignoreEditorconfig? boolean\n---**([Deprecated](https://github.com/mvdan/sh/issues/658))** Keep column alignment padding.\n---@field keepPadding? boolean\n---Language dialect to use when parsing (bash/posix/mksh/bats).\n---\n---```lua\n---default = \"auto\"\n---```\n---@field languageDialect? \"auto\" | \"bash\" | \"posix\" | \"mksh\" | \"bats\"\n---Controls the executable used for Shfmt formatting. An empty string will disable formatting.\n---\n---```lua\n---default = \"shfmt\"\n---```\n---@field path? string\n---Simplify code before formatting.\n---@field simplifyCode? boolean\n---Follow redirection operators with a space.\n---@field spaceRedirects? boolean\n\n---@class _.lspconfig.settings.bashls.BashIde\n---Maximum number of files to analyze in the background. Set to 0 to disable background analysis.\n---\n---```lua\n---default = 500\n---```\n---@field backgroundAnalysisMaxFiles? number\n---Enable diagnostics for source errors. Ignored if includeAllWorkspaceSymbols is true.\n---@field enableSourceErrorDiagnostics? boolean\n---Configure explainshell server endpoint in order to get hover documentation on flags and options.\n---\n---```lua\n---default = \"\"\n---```\n---@field explainshellEndpoint? string\n---Glob pattern for finding and parsing shell script files in the workspace. Used by the background analysis features across files.\n---\n---```lua\n---default = \"**/*@(.sh|.inc|.bash|.command)\"\n---```\n---@field globPattern? string\n---Controls how symbols (e.g. variables and functions) are included and used for completion, documentation, and renaming. If false (default and recommended), then we only include symbols from sourced files (i.e. using non dynamic statements like 'source file.sh' or '. file.sh' or following ShellCheck directives). If true, then all symbols from the workspace are included.\n---@field includeAllWorkspaceSymbols? boolean\n---Controls the log level of the language server.\n---\n---```lua\n---default = \"info\"\n---```\n---@field logLevel? \"debug\" | \"info\" | \"warning\" | \"error\"\n---Additional ShellCheck arguments. Note that we already add the following arguments: --shell, --format, and --external-sources (if shellcheckExternalSources is true).\n---\n---```lua\n---default = \"\"\n---```\n---@field shellcheckArguments? string\n---Controls whether ShellCheck is invoked with --external-sources. When enabled (default), ShellCheck follows source directives to lint referenced files. On projects with many cross-sourcing scripts this can cause unbounded memory growth. Set to false to disable.\n---\n---```lua\n---default = true\n---```\n---@field shellcheckExternalSources? boolean\n---Controls the executable used for ShellCheck linting information. An empty string will disable linting.\n---\n---```lua\n---default = \"shellcheck\"\n---```\n---@field shellcheckPath? string\n---@field shfmt? _.lspconfig.settings.bashls.BashIde.Shfmt\n\n---@class lspconfig.settings.bashls\n---@field bashIde? _.lspconfig.settings.bashls.BashIde\n"
  },
  {
    "path": "lua/lspconfig/types/lsp/clangd.lua",
    "content": "---@meta\n\n---@class _.lspconfig.settings.clangd.Clangd.InactiveRegions\n---Opacity of inactive regions (used only if clangd.inactiveRegions.useBackgroundHighlight=false)\n---\n---```lua\n---default = 0.55\n---```\n---@field opacity? number\n---Use a background highlight rather than opacity to identify inactive preprocessor regions.\n---@field useBackgroundHighlight? boolean\n\n---@class _.lspconfig.settings.clangd.Clangd\n---Arguments for clangd server.\n---\n---```lua\n---default = {}\n---```\n---@field arguments? string[]\n---Check for language server updates on startup.\n---@field checkUpdates? boolean\n---Warn about conflicting extensions and suggest disabling them.\n---\n---```lua\n---default = true\n---```\n---@field detectExtensionConflicts? boolean\n---Enable clangd language server features\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n---Enable code completion provided by the language server\n---\n---```lua\n---default = true\n---```\n---@field enableCodeCompletion? boolean\n---Enable hovers provided by the language server\n---\n---```lua\n---default = true\n---```\n---@field enableHover? boolean\n---Extra clang flags used to parse files when no compilation database is found.\n---\n---```lua\n---default = {}\n---```\n---@field fallbackFlags? string[]\n---@field inactiveRegions? _.lspconfig.settings.clangd.Clangd.InactiveRegions\n---What to do when clangd configuration files are changed. Ignored for clangd 12+, which can reload such files itself; however, this can be overridden with clangd.onConfigChangedForceEnable.\n---\n---```lua\n---default = \"prompt\"\n---```\n---@field onConfigChanged? \"prompt\" | \"restart\" | \"ignore\"\n---Force enable of \"On Config Changed\" option regardless of clangd version.\n---@field onConfigChangedForceEnable? boolean\n---The path to clangd executable, e.g.: /usr/bin/clangd.\n---\n---```lua\n---default = \"clangd\"\n---```\n---@field path? string\n---Auto restart clangd (up to 4 times) if it crashes.\n---\n---```lua\n---default = true\n---```\n---@field restartAfterCrash? boolean\n---Enable semantic highlighting in clangd.\n---\n---```lua\n---default = true\n---```\n---@field semanticHighlighting? boolean\n---Always rank completion items on the server as you type. This produces more accurate results at the cost of higher latency than client-side filtering.\n---\n---```lua\n---default = true\n---```\n---@field serverCompletionRanking? boolean\n---Names a file that clangd should log a performance trace to, in chrome trace-viewer JSON format.\n---@field trace? string\n---Allows the path to be a script e.g.: clangd.sh.\n---@field useScriptAsExecutable? boolean\n\n---@class lspconfig.settings.clangd\n---@field clangd? _.lspconfig.settings.clangd.Clangd\n"
  },
  {
    "path": "lua/lspconfig/types/lsp/cssls.lua",
    "content": "---@meta\n\n---@class _.lspconfig.settings.cssls.Css.Completion\n---Insert semicolon at end of line when completing CSS properties.\n---\n---```lua\n---default = true\n---```\n---@field completePropertyWithSemicolon? boolean\n---By default, VS Code triggers property value completion after selecting a CSS property. Use this setting to disable this behavior.\n---\n---```lua\n---default = true\n---```\n---@field triggerPropertyValueCompletion? boolean\n\n---@class _.lspconfig.settings.cssls.Css.Format\n---Put braces on the same line as rules (`collapse`) or put braces on own line (`expand`).\n---\n---```lua\n---default = \"collapse\"\n---```\n---@field braceStyle? \"collapse\" | \"expand\"\n---Enable/disable default CSS formatter.\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n---Maximum number of line breaks to be preserved in one chunk, when `#css.format.preserveNewLines#` is enabled.\n---@field maxPreserveNewLines? number\n---Separate rulesets by a blank line.\n---\n---```lua\n---default = true\n---```\n---@field newlineBetweenRules? boolean\n---Separate selectors with a new line.\n---\n---```lua\n---default = true\n---```\n---@field newlineBetweenSelectors? boolean\n---Whether existing line breaks before rules and declarations should be preserved.\n---\n---```lua\n---default = true\n---```\n---@field preserveNewLines? boolean\n---Ensure a space character around selector separators `>`, `+`, `~` (e.g. `a > b`).\n---@field spaceAroundSelectorSeparator? boolean\n\n---@class _.lspconfig.settings.cssls.Css.Hover\n---Show property and value documentation in CSS hovers.\n---\n---```lua\n---default = true\n---```\n---@field documentation? boolean\n---Show references to MDN in CSS hovers.\n---\n---```lua\n---default = true\n---```\n---@field references? boolean\n\n---@class _.lspconfig.settings.cssls.Css.Lint\n---Invalid number of parameters.\n---\n---```lua\n---default = \"error\"\n---```\n---@field argumentsInColorFunction? \"ignore\" | \"warning\" | \"error\"\n---Do not use `width` or `height` when using `padding` or `border`.\n---\n---```lua\n---default = \"ignore\"\n---```\n---@field boxModel? \"ignore\" | \"warning\" | \"error\"\n---When using a vendor-specific prefix make sure to also include all other vendor-specific properties.\n---\n---```lua\n---default = \"ignore\"\n---```\n---@field compatibleVendorPrefixes? \"ignore\" | \"warning\" | \"error\"\n---Do not use duplicate style definitions.\n---\n---```lua\n---default = \"ignore\"\n---```\n---@field duplicateProperties? \"ignore\" | \"warning\" | \"error\"\n---Do not use empty rulesets.\n---\n---```lua\n---default = \"warning\"\n---```\n---@field emptyRules? \"ignore\" | \"warning\" | \"error\"\n---Avoid using `float`. Floats lead to fragile CSS that is easy to break if one aspect of the layout changes.\n---\n---```lua\n---default = \"ignore\"\n---```\n---@field float? \"ignore\" | \"warning\" | \"error\"\n---`@font-face` rule must define `src` and `font-family` properties.\n---\n---```lua\n---default = \"warning\"\n---```\n---@field fontFaceProperties? \"ignore\" | \"warning\" | \"error\"\n---Hex colors must consist of 3, 4, 6 or 8 hex numbers.\n---\n---```lua\n---default = \"error\"\n---```\n---@field hexColorLength? \"ignore\" | \"warning\" | \"error\"\n---Selectors should not contain IDs because these rules are too tightly coupled with the HTML.\n---\n---```lua\n---default = \"ignore\"\n---```\n---@field idSelector? \"ignore\" | \"warning\" | \"error\"\n---IE hacks are only necessary when supporting IE7 and older.\n---\n---```lua\n---default = \"ignore\"\n---```\n---@field ieHack? \"ignore\" | \"warning\" | \"error\"\n---Import statements do not load in parallel.\n---\n---```lua\n---default = \"ignore\"\n---```\n---@field importStatement? \"ignore\" | \"warning\" | \"error\"\n---Avoid using `!important`. It is an indication that the specificity of the entire CSS has gotten out of control and needs to be refactored.\n---\n---```lua\n---default = \"ignore\"\n---```\n---@field important? \"ignore\" | \"warning\" | \"error\"\n---Property is ignored due to the display. E.g. with `display: inline`, the `width`, `height`, `margin-top`, `margin-bottom`, and `float` properties have no effect.\n---\n---```lua\n---default = \"warning\"\n---```\n---@field propertyIgnoredDueToDisplay? \"ignore\" | \"warning\" | \"error\"\n---The universal selector (`*`) is known to be slow.\n---\n---```lua\n---default = \"ignore\"\n---```\n---@field universalSelector? \"ignore\" | \"warning\" | \"error\"\n---Unknown at-rule.\n---\n---```lua\n---default = \"warning\"\n---```\n---@field unknownAtRules? \"ignore\" | \"warning\" | \"error\"\n---Unknown property.\n---\n---```lua\n---default = \"warning\"\n---```\n---@field unknownProperties? \"ignore\" | \"warning\" | \"error\"\n---Unknown vendor specific property.\n---\n---```lua\n---default = \"ignore\"\n---```\n---@field unknownVendorSpecificProperties? \"ignore\" | \"warning\" | \"error\"\n---A list of properties that are not validated against the `unknownProperties` rule.\n---\n---```lua\n---default = {}\n---```\n---@field validProperties? string[]\n---When using a vendor-specific prefix, also include the standard property.\n---\n---```lua\n---default = \"warning\"\n---```\n---@field vendorPrefix? \"ignore\" | \"warning\" | \"error\"\n---No unit for zero needed.\n---\n---```lua\n---default = \"ignore\"\n---```\n---@field zeroUnits? \"ignore\" | \"warning\" | \"error\"\n\n---@class _.lspconfig.settings.cssls.Css.Trace\n---Traces the communication between VS Code and the CSS language server.\n---\n---```lua\n---default = \"off\"\n---```\n---@field server? \"off\" | \"messages\" | \"verbose\"\n\n---@class _.lspconfig.settings.cssls.Css\n---@field completion? _.lspconfig.settings.cssls.Css.Completion\n---A list of relative file paths pointing to JSON files following the [custom data format](https://github.com/microsoft/vscode-css-languageservice/blob/master/docs/customData.md).\n---\n---VS Code loads custom data on startup to enhance its CSS support for CSS custom properties (variables), at-rules, pseudo-classes, and pseudo-elements you specify in the JSON files.\n---\n---The file paths are relative to workspace and only workspace folder settings are considered.\n---\n---```lua\n---default = {}\n---```\n---@field customData? string[]\n---@field format? _.lspconfig.settings.cssls.Css.Format\n---@field hover? _.lspconfig.settings.cssls.Css.Hover\n---@field lint? _.lspconfig.settings.cssls.Css.Lint\n---@field trace? _.lspconfig.settings.cssls.Css.Trace\n---Enables or disables all validations.\n---\n---```lua\n---default = true\n---```\n---@field validate? boolean\n\n---@class _.lspconfig.settings.cssls.Less.Completion\n---Insert semicolon at end of line when completing CSS properties.\n---\n---```lua\n---default = true\n---```\n---@field completePropertyWithSemicolon? boolean\n---By default, VS Code triggers property value completion after selecting a CSS property. Use this setting to disable this behavior.\n---\n---```lua\n---default = true\n---```\n---@field triggerPropertyValueCompletion? boolean\n\n---@class _.lspconfig.settings.cssls.Less.Format\n---Put braces on the same line as rules (`collapse`) or put braces on own line (`expand`).\n---\n---```lua\n---default = \"collapse\"\n---```\n---@field braceStyle? \"collapse\" | \"expand\"\n---Enable/disable default LESS formatter.\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n---Maximum number of line breaks to be preserved in one chunk, when `#less.format.preserveNewLines#` is enabled.\n---@field maxPreserveNewLines? number\n---Separate rulesets by a blank line.\n---\n---```lua\n---default = true\n---```\n---@field newlineBetweenRules? boolean\n---Separate selectors with a new line.\n---\n---```lua\n---default = true\n---```\n---@field newlineBetweenSelectors? boolean\n---Whether existing line breaks before rules and declarations should be preserved.\n---\n---```lua\n---default = true\n---```\n---@field preserveNewLines? boolean\n---Ensure a space character around selector separators `>`, `+`, `~` (e.g. `a > b`).\n---@field spaceAroundSelectorSeparator? boolean\n\n---@class _.lspconfig.settings.cssls.Less.Hover\n---Show property and value documentation in LESS hovers.\n---\n---```lua\n---default = true\n---```\n---@field documentation? boolean\n---Show references to MDN in LESS hovers.\n---\n---```lua\n---default = true\n---```\n---@field references? boolean\n\n---@class _.lspconfig.settings.cssls.Less.Lint\n---Invalid number of parameters.\n---\n---```lua\n---default = \"error\"\n---```\n---@field argumentsInColorFunction? \"ignore\" | \"warning\" | \"error\"\n---Do not use `width` or `height` when using `padding` or `border`.\n---\n---```lua\n---default = \"ignore\"\n---```\n---@field boxModel? \"ignore\" | \"warning\" | \"error\"\n---When using a vendor-specific prefix make sure to also include all other vendor-specific properties.\n---\n---```lua\n---default = \"ignore\"\n---```\n---@field compatibleVendorPrefixes? \"ignore\" | \"warning\" | \"error\"\n---Do not use duplicate style definitions.\n---\n---```lua\n---default = \"ignore\"\n---```\n---@field duplicateProperties? \"ignore\" | \"warning\" | \"error\"\n---Do not use empty rulesets.\n---\n---```lua\n---default = \"warning\"\n---```\n---@field emptyRules? \"ignore\" | \"warning\" | \"error\"\n---Avoid using `float`. Floats lead to fragile CSS that is easy to break if one aspect of the layout changes.\n---\n---```lua\n---default = \"ignore\"\n---```\n---@field float? \"ignore\" | \"warning\" | \"error\"\n---`@font-face` rule must define `src` and `font-family` properties.\n---\n---```lua\n---default = \"warning\"\n---```\n---@field fontFaceProperties? \"ignore\" | \"warning\" | \"error\"\n---Hex colors must consist of 3, 4, 6 or 8 hex numbers.\n---\n---```lua\n---default = \"error\"\n---```\n---@field hexColorLength? \"ignore\" | \"warning\" | \"error\"\n---Selectors should not contain IDs because these rules are too tightly coupled with the HTML.\n---\n---```lua\n---default = \"ignore\"\n---```\n---@field idSelector? \"ignore\" | \"warning\" | \"error\"\n---IE hacks are only necessary when supporting IE7 and older.\n---\n---```lua\n---default = \"ignore\"\n---```\n---@field ieHack? \"ignore\" | \"warning\" | \"error\"\n---Import statements do not load in parallel.\n---\n---```lua\n---default = \"ignore\"\n---```\n---@field importStatement? \"ignore\" | \"warning\" | \"error\"\n---Avoid using `!important`. It is an indication that the specificity of the entire CSS has gotten out of control and needs to be refactored.\n---\n---```lua\n---default = \"ignore\"\n---```\n---@field important? \"ignore\" | \"warning\" | \"error\"\n---Property is ignored due to the display. E.g. with `display: inline`, the `width`, `height`, `margin-top`, `margin-bottom`, and `float` properties have no effect.\n---\n---```lua\n---default = \"warning\"\n---```\n---@field propertyIgnoredDueToDisplay? \"ignore\" | \"warning\" | \"error\"\n---The universal selector (`*`) is known to be slow.\n---\n---```lua\n---default = \"ignore\"\n---```\n---@field universalSelector? \"ignore\" | \"warning\" | \"error\"\n---Unknown at-rule.\n---\n---```lua\n---default = \"warning\"\n---```\n---@field unknownAtRules? \"ignore\" | \"warning\" | \"error\"\n---Unknown property.\n---\n---```lua\n---default = \"warning\"\n---```\n---@field unknownProperties? \"ignore\" | \"warning\" | \"error\"\n---Unknown vendor specific property.\n---\n---```lua\n---default = \"ignore\"\n---```\n---@field unknownVendorSpecificProperties? \"ignore\" | \"warning\" | \"error\"\n---A list of properties that are not validated against the `unknownProperties` rule.\n---\n---```lua\n---default = {}\n---```\n---@field validProperties? string[]\n---When using a vendor-specific prefix, also include the standard property.\n---\n---```lua\n---default = \"warning\"\n---```\n---@field vendorPrefix? \"ignore\" | \"warning\" | \"error\"\n---No unit for zero needed.\n---\n---```lua\n---default = \"ignore\"\n---```\n---@field zeroUnits? \"ignore\" | \"warning\" | \"error\"\n\n---@class _.lspconfig.settings.cssls.Less\n---@field completion? _.lspconfig.settings.cssls.Less.Completion\n---@field format? _.lspconfig.settings.cssls.Less.Format\n---@field hover? _.lspconfig.settings.cssls.Less.Hover\n---@field lint? _.lspconfig.settings.cssls.Less.Lint\n---Enables or disables all validations.\n---\n---```lua\n---default = true\n---```\n---@field validate? boolean\n\n---@class _.lspconfig.settings.cssls.Scss.Completion\n---Insert semicolon at end of line when completing CSS properties.\n---\n---```lua\n---default = true\n---```\n---@field completePropertyWithSemicolon? boolean\n---By default, VS Code triggers property value completion after selecting a CSS property. Use this setting to disable this behavior.\n---\n---```lua\n---default = true\n---```\n---@field triggerPropertyValueCompletion? boolean\n\n---@class _.lspconfig.settings.cssls.Scss.Format\n---Put braces on the same line as rules (`collapse`) or put braces on own line (`expand`).\n---\n---```lua\n---default = \"collapse\"\n---```\n---@field braceStyle? \"collapse\" | \"expand\"\n---Enable/disable default SCSS formatter.\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n---Maximum number of line breaks to be preserved in one chunk, when `#scss.format.preserveNewLines#` is enabled.\n---@field maxPreserveNewLines? number\n---Separate rulesets by a blank line.\n---\n---```lua\n---default = true\n---```\n---@field newlineBetweenRules? boolean\n---Separate selectors with a new line.\n---\n---```lua\n---default = true\n---```\n---@field newlineBetweenSelectors? boolean\n---Whether existing line breaks before rules and declarations should be preserved.\n---\n---```lua\n---default = true\n---```\n---@field preserveNewLines? boolean\n---Ensure a space character around selector separators `>`, `+`, `~` (e.g. `a > b`).\n---@field spaceAroundSelectorSeparator? boolean\n\n---@class _.lspconfig.settings.cssls.Scss.Hover\n---Show property and value documentation in SCSS hovers.\n---\n---```lua\n---default = true\n---```\n---@field documentation? boolean\n---Show references to MDN in SCSS hovers.\n---\n---```lua\n---default = true\n---```\n---@field references? boolean\n\n---@class _.lspconfig.settings.cssls.Scss.Lint\n---Invalid number of parameters.\n---\n---```lua\n---default = \"error\"\n---```\n---@field argumentsInColorFunction? \"ignore\" | \"warning\" | \"error\"\n---Do not use `width` or `height` when using `padding` or `border`.\n---\n---```lua\n---default = \"ignore\"\n---```\n---@field boxModel? \"ignore\" | \"warning\" | \"error\"\n---When using a vendor-specific prefix make sure to also include all other vendor-specific properties.\n---\n---```lua\n---default = \"ignore\"\n---```\n---@field compatibleVendorPrefixes? \"ignore\" | \"warning\" | \"error\"\n---Do not use duplicate style definitions.\n---\n---```lua\n---default = \"ignore\"\n---```\n---@field duplicateProperties? \"ignore\" | \"warning\" | \"error\"\n---Do not use empty rulesets.\n---\n---```lua\n---default = \"warning\"\n---```\n---@field emptyRules? \"ignore\" | \"warning\" | \"error\"\n---Avoid using `float`. Floats lead to fragile CSS that is easy to break if one aspect of the layout changes.\n---\n---```lua\n---default = \"ignore\"\n---```\n---@field float? \"ignore\" | \"warning\" | \"error\"\n---`@font-face` rule must define `src` and `font-family` properties.\n---\n---```lua\n---default = \"warning\"\n---```\n---@field fontFaceProperties? \"ignore\" | \"warning\" | \"error\"\n---Hex colors must consist of 3, 4, 6 or 8 hex numbers.\n---\n---```lua\n---default = \"error\"\n---```\n---@field hexColorLength? \"ignore\" | \"warning\" | \"error\"\n---Selectors should not contain IDs because these rules are too tightly coupled with the HTML.\n---\n---```lua\n---default = \"ignore\"\n---```\n---@field idSelector? \"ignore\" | \"warning\" | \"error\"\n---IE hacks are only necessary when supporting IE7 and older.\n---\n---```lua\n---default = \"ignore\"\n---```\n---@field ieHack? \"ignore\" | \"warning\" | \"error\"\n---Import statements do not load in parallel.\n---\n---```lua\n---default = \"ignore\"\n---```\n---@field importStatement? \"ignore\" | \"warning\" | \"error\"\n---Avoid using `!important`. It is an indication that the specificity of the entire CSS has gotten out of control and needs to be refactored.\n---\n---```lua\n---default = \"ignore\"\n---```\n---@field important? \"ignore\" | \"warning\" | \"error\"\n---Property is ignored due to the display. E.g. with `display: inline`, the `width`, `height`, `margin-top`, `margin-bottom`, and `float` properties have no effect.\n---\n---```lua\n---default = \"warning\"\n---```\n---@field propertyIgnoredDueToDisplay? \"ignore\" | \"warning\" | \"error\"\n---The universal selector (`*`) is known to be slow.\n---\n---```lua\n---default = \"ignore\"\n---```\n---@field universalSelector? \"ignore\" | \"warning\" | \"error\"\n---Unknown at-rule.\n---\n---```lua\n---default = \"warning\"\n---```\n---@field unknownAtRules? \"ignore\" | \"warning\" | \"error\"\n---Unknown property.\n---\n---```lua\n---default = \"warning\"\n---```\n---@field unknownProperties? \"ignore\" | \"warning\" | \"error\"\n---Unknown vendor specific property.\n---\n---```lua\n---default = \"ignore\"\n---```\n---@field unknownVendorSpecificProperties? \"ignore\" | \"warning\" | \"error\"\n---A list of properties that are not validated against the `unknownProperties` rule.\n---\n---```lua\n---default = {}\n---```\n---@field validProperties? string[]\n---When using a vendor-specific prefix, also include the standard property.\n---\n---```lua\n---default = \"warning\"\n---```\n---@field vendorPrefix? \"ignore\" | \"warning\" | \"error\"\n---No unit for zero needed.\n---\n---```lua\n---default = \"ignore\"\n---```\n---@field zeroUnits? \"ignore\" | \"warning\" | \"error\"\n\n---@class _.lspconfig.settings.cssls.Scss\n---@field completion? _.lspconfig.settings.cssls.Scss.Completion\n---@field format? _.lspconfig.settings.cssls.Scss.Format\n---@field hover? _.lspconfig.settings.cssls.Scss.Hover\n---@field lint? _.lspconfig.settings.cssls.Scss.Lint\n---Enables or disables all validations.\n---\n---```lua\n---default = true\n---```\n---@field validate? boolean\n\n---@class lspconfig.settings.cssls\n---@field css? _.lspconfig.settings.cssls.Css\n---@field less? _.lspconfig.settings.cssls.Less\n---@field scss? _.lspconfig.settings.cssls.Scss\n"
  },
  {
    "path": "lua/lspconfig/types/lsp/dartls.lua",
    "content": "---@meta\n\n---Custom settings for launching DevTools. This setting is intended for use by Dart DevTools developers.\n---@class _.lspconfig.settings.dartls.Dart.CustomDevTools\n---Extra arguments to pass when running the `devtools_tool serve` command.\n---\n---```lua\n---default = {}\n---```\n---@field args? string[]\n---Any environment variables to set when spawning the command. 'LOCAL_DART_SDK' should usually be set to your Dart SDK checkout and 'FLUTTER_ROOT' to the version of Flutter that DevTools is pinned to.\n---\n---```lua\n---default = {\n---  FLUTTER_ROOT = \"/path/to/devtools/tool/flutter-sdk\",\n---  LOCAL_DART_SDK = \"/path/to/dart-sdk\"\n---}\n---```\n---@field env? table\n---The root directory containing a clone of the flutter/devtools repository.\n---\n---```lua\n---default = \"/path/to/devtools\"\n---```\n---@field path? string\n\n---Where to open [Dart DevTools](https://dart.dev/tools/dart-devtools) pages.\n---\n---```lua\n---default = {\n---  default = \"beside\",\n---  inspector = \"sidebar\"\n---}\n---```\n---@class _.lspconfig.settings.dartls.Dart.DevToolsLocation\n---@field [\"cpu-profiler\"]? \"beside\" | \"active\" | \"external\" | \"sidebar\"\n---@field default? \"beside\" | \"active\" | \"external\" | \"sidebar\"\n---@field inspector? \"beside\" | \"active\" | \"external\" | \"sidebar\"\n---@field logging? \"beside\" | \"active\" | \"external\" | \"sidebar\"\n---@field memory? \"beside\" | \"active\" | \"external\" | \"sidebar\"\n---@field network? \"beside\" | \"active\" | \"external\" | \"sidebar\"\n---@field performance? \"beside\" | \"active\" | \"external\" | \"sidebar\"\n\n---@class _.lspconfig.settings.dartls.Dart\n---Whether to add your selected Dart/Flutter SDK path to the `PATH` environment variable for the embedded terminal. This is useful when switching SDKs via `#dart.sdkPaths#` / `#dart.flutterSdkPaths#` to ensure commands run from the terminal are the same version as being used by the editor/debugger (requires restart).\n---\n---```lua\n---default = true\n---```\n---@field addSdkToTerminalPath? boolean\n---Whether to consider files ending `_test.dart` that are outside of the test directory as tests. This should be enabled if you put tests inside the `lib` directory of your Flutter app so they will be run with `flutter test` and not `flutter run`.\n---@field allowTestsOutsideTestFolder? boolean\n---An array of paths to be excluded from Dart analysis. This option should usually be set at the Workspace level. Excluded folders will also be ignored when detecting project types.\n---\n---```lua\n---default = {}\n---```\n---@field analysisExcludedFolders? string[]\n---Additional arguments to pass to the Dart Analysis Server. This setting is can be useful for troubleshooting issues with the Dart Analysis Server.\n---\n---```lua\n---default = {}\n---```\n---@field analyzerAdditionalArgs? string[]\n---The port number to be used for the Dart analyzer diagnostic server. This setting is can be useful for troubleshooting issues with the Dart Analysis Server.\n---@field analyzerDiagnosticsPort? number\n---The path to a log file for very detailed logging in the Dart Analysis Server that may be useful when trying to diagnose Analysis Server issues. Use `${workspaceName}` to insert the name of the current workspace in the file path. Use `~` to insert the user's home directory (the path should then use `/` separators even on Windows). Only the noted substitutions are supported, others will stay as-is.\n---@field analyzerInstrumentationLogFile? string\n---The path to a log file for communication between Dart Code and the Analysis Server. Use `${workspaceName}` to insert the name of the current workspace in the file path. Use `~` to insert the user's home directory (the path should then use `/` separators even on Windows). Only the noted substitutions are supported, others will stay as-is.\n---@field analyzerLogFile? string\n---The path to a custom Dart Analysis Server. This setting is intended for use by Dart Analysis Server developers. Use `~` to insert the user's home directory (the path should then use `/` separators even on Windows).\n---@field analyzerPath? string\n---An SSH host to run the Analysis Server.\n---This can be useful when modifying code on a remote machine using SSHFS.\n---@field analyzerSshHost? string\n---Additional arguments to pass to the VM running the Dart Analysis Server. This setting is can be useful for troubleshooting issues with the Dart Analysis Server.\n---\n---```lua\n---default = {}\n---```\n---@field analyzerVmAdditionalArgs? string[]\n---The port number to be used for the Dart Analysis Server VM service. This setting is intended for use by Dart Analysis Server developers.\n---@field analyzerVmServicePort? number\n---Whether to include symbols that have not been imported in the code completion list and automatically insert the required import when selecting them (requires restart).\n---\n---```lua\n---default = true\n---```\n---@field autoImportCompletions? boolean\n---Determines when to insert comment slashes when pressing `<enter>` in the editor (requires restart).\n---\n---When using `tripleSlash`, double-slashes will still be included when breaking existing double-slash comments across additional lines.\n---\n---```lua\n---default = \"tripleSlash\"\n---```\n---@field automaticCommentSlashes? \"none\" | \"tripleSlash\" | \"all\"\n---Additional args to pass to the `build_runner` when building/watching/serving.\n---\n---```lua\n---default = {}\n---```\n---@field buildRunnerAdditionalArgs? string[]\n---Whether to check you are using the latest version of the Dart SDK at startup.\n---\n---```lua\n---default = true\n---```\n---@field checkForSdkUpdates? boolean\n---Additional args to pass to the `dart` command when running CLI scripts. Using the `args`/`toolArgs` fields in `launch.json` is usually better than this setting as this setting will apply to _all_ projects.\n---\n---```lua\n---default = {}\n---```\n---@field cliAdditionalArgs? string[]\n---Whether to run Dart CLI apps in the Debug Console or a terminal. The Debug Console has more functionality because the process is controlled by the debug adapter, but is unable to accept input from the user via stdin.\n---\n---```lua\n---default = \"debugConsole\"\n---```\n---@field cliConsole? \"debugConsole\" | \"terminal\" | \"externalTerminal\"\n---Whether to automatically close embedded DevTools tabs when a debug session ends.\n---\n---```lua\n---default = \"never\"\n---```\n---@field closeDevTools? \"never\" | \"ifOpened\" | \"always\"\n---Whether to show annotations against constructor, method invocations and lists that span multiple lines.\n---\n---```lua\n---default = true\n---```\n---@field closingLabels? boolean\n---The prefix to use in closing labels.\n---\n---```lua\n---default = \" // \"\n---```\n---@field closingLabelsPrefix? string\n---The text style to use in closing labels. Using _Italic_ requires a font that supports italic text.\n---\n---```lua\n---default = \"normal\"\n---```\n---@field closingLabelsTextStyle? \"normal\" | \"italic\"\n---Whether to insert parentheses and placeholders for positional and required arguments during code completions when using LSP. This feature is automatically disabled if commit characters are enabled.\n---\n---```lua\n---default = true\n---```\n---@field completeFunctionCalls? boolean\n---An array of glob patterns to exclude from code coverage results. Paths matching any of these patterns will still be collected by the Dart VM but not be included in coverage reported to VS Code.\n---\n---```lua\n---default = {}\n---```\n---@field coverageExcludePatterns? string[]\n---The path to a custom Dart Debug Adapter. This setting is intended for use by Dart Debug Adapter developers. Use `~` to insert the user's home directory (the path should then use `/` separators even on Windows).\n---@field customDartDapPath? string\n---Custom settings for launching DevTools. This setting is intended for use by Dart DevTools developers.\n---@field customDevTools? _.lspconfig.settings.dartls.Dart.CustomDevTools\n---The path to a custom Flutter Debug Adapter. This setting is intended for use by Dart Debug Adapter developers. Use `~` to insert the user's home directory (the path should then use `/` separators even on Windows).\n---@field customFlutterDapPath? string\n---EXPERIMENTAL: The port where flutter daemon can be accessed if daemon is run remotely. This setting is intended for use by Google developers.\n---@field daemonPort? number\n---The path to a log file for communication with the DAP debug adapters. This is useful when trying to diagnose issues with debugging such as missed breakpoints. Use `${name}` in the log file name to insert the Debug Session name to prevent concurrent debug sessions overwriting each others logs. Use `${workspaceName}` to insert the name of the current workspace in the file path. Use `${kind}` to insert a description of the kind of debug session ('dart', 'dart_test', 'flutter' etc.). Use `~` to insert the user's home directory (the path should then use `/` separators even on Windows). Only the noted substitutions are supported, others will stay as-is.\n---@field dapLogFile? string\n---The protocol to use for the Dart Debug Extension backend service and injected client. Using WebSockets can improve performance but may fail when connecting through some proxy servers.\n---\n---```lua\n---default = \"ws\"\n---```\n---@field debugExtensionBackendProtocol? \"sse\" | \"ws\"\n---Whether to mark external pub package libraries (including `package:flutter`) as debuggable, enabling stepping into them while debugging.\n---@field debugExternalPackageLibraries? boolean\n---Whether to mark Dart SDK libraries (`dart:*`) as debuggable, enabling stepping into them while debugging.\n---@field debugSdkLibraries? boolean\n---Whether to launch external DevTools windows using Chrome or the system default browser. This setting is ignored for remote workspaces (including Docker, SSH, WSL).\n---\n---```lua\n---default = \"chrome\"\n---```\n---@field devToolsBrowser? \"chrome\" | \"default\"\n---Where to open [Dart DevTools](https://dart.dev/tools/dart-devtools) pages.\n---\n---```lua\n---default = {\n---  default = \"beside\",\n---  inspector = \"sidebar\"\n---}\n---```\n---@field devToolsLocation? _.lspconfig.settings.dartls.Dart.DevToolsLocation\n---The path to a low-traffic log file for the Dart DevTools service. Use `${workspaceName}` to insert the name of the current workspace in the file path. Use `~` to insert the user's home directory (the path should then use `/` separators even on Windows). Only the noted substitutions are supported, others will stay as-is.\n---@field devToolsLogFile? string\n---The port number to be used for the Dart DevTools (requires restart).\n---@field devToolsPort? number\n---Whether to try to reuse existing DevTools windows instead of launching new ones. Only works for instances of DevTools launched by the DevTools server on the local machine.\n---\n---```lua\n---default = true\n---```\n---@field devToolsReuseWindows? boolean\n---The theme to use for Dart DevTools.\n---\n---```lua\n---default = \"dark\"\n---```\n---@field devToolsTheme? \"dark\" | \"light\"\n---What level of documentation to show in Hovers and Code Completion details. When `null`, defaults to 'full' when running locally and 'none' in remote workspaces. This setting is only supported for Dart SDKs after v2.18.\n---@field documentation? \"full\" | \"summary\" | \"none\"\n---How long (in ms) to delay sending editor location change events over the Dart Tooling Daemon. Increasing this results in less events which may improve performance, at the expensive of tools that use these events not updating as quickly after your location/editor changes (requires restart).\n---\n---```lua\n---default = 200\n---```\n---@field dtdEditorActiveLocationDelay? integer\n---Whether to use the new dynamic test tracking. This is a temporary setting that will be removed in an upcoming release.\n---\n---```lua\n---default = true\n---```\n---@field dynamicTestTracking? boolean\n---Whether to automatically commit the selected completion item when pressing certain keys such as . , ( and \\[. This setting does not currently apply to LSP, see `#dart.previewCommitCharacters#`.\n---@field enableCompletionCommitCharacters? boolean\n---Whether to enable functionality for using Pub. Turning this setting off will prevent the extension from ever running pub and hide all commands relating to this. Use this if you are using an alternative package manager.\n---\n---```lua\n---default = true\n---```\n---@field enablePub? boolean\n---Whether to enable the [dart_style](https://pub.dev/packages/dart_style) formatter for Dart code.\n---\n---```lua\n---default = true\n---```\n---@field enableSdkFormatter? boolean\n---Whether to use code snippets from the Dart Analysis Server instead of those included in the extension. Server snippets are context and language-version aware and should be preferred.\n---\n---```lua\n---default = true\n---```\n---@field enableServerSnippets? boolean\n---Whether to include Dart and Flutter snippets in code completion.\n---\n---```lua\n---default = true\n---```\n---@field enableSnippets? boolean\n---Additional environment variables to be added to all Dart/Flutter processes spawned by the Dart and Flutter extensions.\n---\n---```lua\n---default = {}\n---```\n---@field env? table\n---Whether to evaluate getters in order to display them in debug views (such as the Variables, Watch and Hovers views).\n---\n---```lua\n---default = true\n---```\n---@field evaluateGettersInDebugViews? boolean\n---Whether to call toString() on objects when rendering them in debug views (such as the Variables, Watch and Hovers views). Only applies to views of 100 or fewer values for performance reasons.\n---\n---```lua\n---default = true\n---```\n---@field evaluateToStringInDebugViews? boolean\n---Whether to enable experimental (possibly unfinished or unstable) LSP handlers through DTD. This setting is passed to the analysis server in the connectToDtd request and therefore relies on DTD being supported and enabled for the analysis server (requires restart).\n---@field experimentalDtdHandlers? boolean\n---Whether to enable experimental (possibly unfinished or unstable) refactors on the lightbulb menu. This setting is intended for use by Dart Analysis Server developers or users that want to try out and provide feedback on in-progress refactors.\n---@field experimentalRefactors? boolean\n---The path to a low-traffic log file for basic extension and editor issues. Use `${workspaceName}` to insert the name of the current workspace in the file path. Use `~` to insert the user's home directory (the path should then use `/` separators even on Windows). Only the noted substitutions are supported, others will stay as-is.\n---@field extensionLogFile? string\n---Whether to automatically run `adb connect 100.115.92.2:5555` when spawning the Flutter daemon when running on Chrome OS.\n---@field flutterAdbConnectOnChromeOs? boolean\n---Additional args to pass to all `flutter` commands including `flutter daemon`. Do not use this to pass arguments to your Flutter app, use the `args` field in a `launch.json` or the `#dart.flutterRunAdditionalArgs#` setting.\n---\n---```lua\n---default = {}\n---```\n---@field flutterAdditionalArgs? string[]\n---Additional args to pass to the `flutter attach` command. Using the `args`/`toolArgs` fields in `launch.json` is usually better than this setting as this setting will apply to _all_ projects.\n---\n---```lua\n---default = {}\n---```\n---@field flutterAttachAdditionalArgs? string[]\n---The programming language to use for Android apps when creating new projects using the 'Flutter: New Project' command.\n---\n---```lua\n---default = \"kotlin\"\n---```\n---@field flutterCreateAndroidLanguage? \"java\" | \"kotlin\"\n---The programming language to use for iOS apps when creating new projects using the 'Flutter: New Project' command. This is only supported up until Flutter 3.22 after which it will be ignored.\n---\n---```lua\n---default = \"swift\"\n---```\n---@field flutterCreateIOSLanguage? \"objc\" | \"swift\"\n---The organization responsible for your new Flutter project, in reverse domain name notation (e.g. `com.google`). This string is used in Java package names and as prefix in the iOS bundle identifier when creating new projects using the 'Flutter: New Project' command.\n---@field flutterCreateOrganization? string\n---The platforms to enable for new projects created using the 'Flutter: New Project' command. If unset, all platforms will be enabled.\n---@field flutterCreatePlatforms? string[]\n---Custom emulators to show in the emulator list for easier launching. If IDs match existing emulators returned by Flutter, the custom emulators will override them.\n---\n---```lua\n---default = {}\n---```\n---@field flutterCustomEmulators? table[]\n---The path to a log file for the `flutter daemon` service, which provides information about connected devices accessible from the status bar. Use `${workspaceName}` to insert the name of the current workspace in the file path. Use `~` to insert the user's home directory (the path should then use `/` separators even on Windows). Only the noted substitutions are supported, others will stay as-is.\n---@field flutterDaemonLogFile? string\n---Whether to automatically run the Generate Localizations command for Flutter apps when saving .arb files.\n---\n---```lua\n---default = \"never\"\n---```\n---@field flutterGenerateLocalizationsOnSave? \"never\" | \"manual\" | \"manualIfDirty\" | \"all\" | \"allIfDirty\"\n---Whether to show Flutter icons and colors in the editor gutter.\n---\n---```lua\n---default = true\n---```\n---@field flutterGutterIcons? boolean\n---Whether to automatically send a Hot Reload request to Flutter apps during a debug session when saving files. Dart apps are controlled by the hotReloadOnSave setting.\n---\n---```lua\n---default = \"manual\"\n---```\n---@field flutterHotReloadOnSave? \"never\" | \"manual\" | \"manualIfDirty\" | \"all\" | \"allIfDirty\"\n---Whether to show the Flutter Outline tree in the sidebar.\n---\n---```lua\n---default = true\n---```\n---@field flutterOutline? boolean\n---Whether to remember which device was last (explicitly) selected for each project. When the remembered device is selected, it will prevent newly-connected mobile devices from being automatically selected (regardless of the `#dart.flutterSelectDeviceWhenConnected#` setting).\n---\n---```lua\n---default = true\n---```\n---@field flutterRememberSelectedDevice? boolean\n---Additional args to pass to the `flutter run` command. Using the `args`/`toolArgs` fields in `launch.json` is usually better than this setting as this setting will apply to _all_ projects.\n---\n---```lua\n---default = {}\n---```\n---@field flutterRunAdditionalArgs? string[]\n---The path to a directory to save Flutter screenshots. Use `~` to insert the user's home directory (the path should then use `/` separators even on Windows).\n---@field flutterScreenshotPath? string\n---The location of the Flutter SDK to use. If blank (or not a valid SDK), Dart Code will attempt to find it from the project directory, `FLUTTER_ROOT` environment variable and the `PATH` environment variable. Use `~` to insert the user's home directory (the path should then use `/` separators even on Windows).\n---@field flutterSdkPath? string\n---An array of paths that either directly point to a Flutter SDK or the parent directory of multiple Flutter SDKs that can be used for fast SDK switching. These paths are not used directly when searching for an SDK. When this setting is populated, the version number in the status bar can be used to quickly switch between SDKs. Use `~` to insert the user's home directory (the path should then use `/` separators even on Windows).\n---\n---```lua\n---default = {}\n---```\n---@field flutterSdkPaths? string[]\n---Whether to set newly connected devices as the current device in Flutter projects.\n---\n---```lua\n---default = true\n---```\n---@field flutterSelectDeviceWhenConnected? boolean\n---When to show the Flutter emulators. These are usually hidden for remote workspaces because it is usually not possible to see or interact with emulators in a remote session. If you are using remoting/containers in a way that you can interact with launched emulator processes, you may wish to set this to 'always'.\n---\n---```lua\n---default = \"local\"\n---```\n---@field flutterShowEmulators? \"local\" | \"always\" | \"never\"\n---When to show the Flutter headless web-server device. This requires using the Dart Debug extension for Chrome and is usually only used for remote environments where Chrome is not available such as browser/cloud-based IDEs (requires restart).\n---\n---```lua\n---default = \"remote\"\n---```\n---@field flutterShowWebServerDevice? \"remote\" | \"always\"\n---Additional args to pass to the `flutter test` command. Using the `args`/`toolArgs` fields in `launch.json` is usually better than this setting as this setting will apply to _all_ projects.\n---\n---```lua\n---default = {}\n---```\n---@field flutterTestAdditionalArgs? string[]\n---Sets the [Web renderer](https://flutter.dev/to/web-renderers) used for Flutter web apps.\n---\n---```lua\n---default = \"flutter-default\"\n---```\n---@field flutterWebRenderer? \"flutter-default\" | \"canvaskit\" | \"html\" | \"auto\"\n---Controls whether the Widget Preview is enabled, and if so whether it is started eagerly or lazily. Starting lazily will avoid consuming any resources until you first use the Widget Preview, but will cause the first load to be slower. Requires restart.\n---\n---```lua\n---default = \"startLazily\"\n---```\n---@field flutterWidgetPreview? \"startEagerly\" | \"startLazily\" | \"disabled\"\n---Where to display the Flutter Widget Preview. Requires restart.\n---\n---```lua\n---default = \"sidebar\"\n---```\n---@field flutterWidgetPreviewLocation? \"beside\" | \"sidebar\"\n---The path to a log file for the `flutter widget-preview` service. Use `${workspaceName}` to insert the name of the current workspace in the file path. Use `~` to insert the user's home directory (the path should then use `/` separators even on Windows). Only the noted substitutions are supported, others will stay as-is.\n---@field flutterWidgetPreviewLogFile? string\n---Get the Dart SDK path from a command. Useful when using tools such as direnv, asdf, mise... The command should exit with a 0 status code and it should print to the standard output just the path to the SDK. If the command fails (non zero exit or bad path), the extension will keep looking for other SDK paths. Some configuration examples can be found in: https://github.com/Dart-Code/Dart-Code/pull/5377\n---@field getDartSdkCommand? table\n---Get the Flutter SDK path from a command. Useful when using tools such as direnv, asdf, mise... The command should exit with a 0 status code and it should print to the standard output just the path to the SDK. If the command fails (non zero exit or bad path), the extension will keep looking for other SDK paths. Some configuration examples can be found in: https://github.com/Dart-Code/Dart-Code/pull/5377\n---@field getFlutterSdkCommand? table\n---Whether to automatically send a Hot Reload request to Dart apps during a debug session when saving files. Flutter apps are controlled by the flutterHotReloadOnSave setting.\n---\n---```lua\n---default = \"never\"\n---```\n---@field hotReloadOnSave? \"never\" | \"manual\" | \"manualIfDirty\" | \"all\" | \"allIfDirty\"\n---An array of glob patterns that should trigger Hot Reload when saved. The pattern is matched against the absolute path of the file. Use `**/assets/**` to trigger reloading for everything in the assets directory. Must always start with \"**/\" and use forward slashes (even on Windows) as backslashes are used for escaping.\n---\n---```lua\n---default = {}\n---```\n---@field hotReloadPatterns? string[]\n---Determines how to display Hot Restart and Hot Reload progress.\n---\n---```lua\n---default = \"notification\"\n---```\n---@field hotReloadProgress? \"notification\" | \"statusBar\"\n---Whether to include symbols from the SDK and package dependencies in the \"Go to Symbol in Workspace\" (`cmd/ctrl`+`T`) list. This can only be disabled when using Dart 3.0 / Flutter 3.10 or later.\n---\n---```lua\n---default = true\n---```\n---@field includeDependenciesInWorkspaceSymbols? boolean\n---Whether to show Inlay Hints. When set to `true`, enables all inlay hints with default settings. When set to `false`, disables all inlay hints. Can also be an object to configure individual hint types. Requires Dart 3.10.\n---\n---```lua\n---default = true\n---```\n---@field inlayHints? boolean|table\n---Whether to insert argument placeholders during code completions. This feature is automatically disabled when `enableCompletionCommitCharacters` is enabled.\n---\n---```lua\n---default = true\n---```\n---@field insertArgumentPlaceholders? boolean\n---The maximum length of a line of code. This is used by the document formatter. If you change this value, you may wish to update `editor.rulers` (which draws vertical lines in the editor) in the `[\"dart\"]` section of your settings to match.\n---\n---```lua\n---default = 80\n---```\n---@field lineLength? integer\n---Whether to enable [Snippet support in LSP TextEdits](https://github.com/rust-analyzer/rust-analyzer/blob/979e788957ced1957ee9ac1da70fb97abf9fe2b1/docs/dev/lsp-extensions.md#snippet-textedit).\n---\n---```lua\n---default = true\n---```\n---@field lspSnippetTextEdits? boolean\n---The maximum number of completion items to return from a code completion request. Updated results will be fetched as additional characters are typed. Lower numbers may improved performance. Defaults to a lower value in remote workspaces. Only affects LSP for > Dart SDK 2.17.\n---@field maxCompletionItems? number\n---The maximum length of a line in the log file. Lines longer than this will be truncated and suffixed with an ellipsis.\n---\n---```lua\n---default = 2000\n---```\n---@field maxLogLineLength? number\n---Whether to register the Dart SDK's MCP server with VS Code. This only applies to Dart SDKs >= v3.9.0 which added the server.\n---\n---```lua\n---default = true\n---```\n---@field mcpServer? boolean\n---The path to a log file for the Dart SDK's MCP server. Use `${workspaceName}` to insert the name of the current workspace in the file path. Use `~` to insert the user's home directory (the path should then use `/` separators even on Windows). Only the noted substitutions are supported, others will stay as-is.\n---@field mcpServerLogFile? string\n---A map of MCP tool names to booleans to enable/disable specific tools from the Dart MCP server. Tools set to `false` will be excluded (if supported). By default, tools that overlap with built-in VS Code functionality will be excluded.\n---\n---```lua\n---default = {\n---  analyze_files = false,\n---  dart_fix = false,\n---  dart_format = false,\n---  run_tests = false\n---}\n---```\n---@field mcpServerTools? table\n---Whether to normalize file casings before sending them to the LSP server. This may fix issues with file_names lints not disappearing after renaming a file if the VS Code API continues to use the original casing.\n---@field normalizeFileCasing? boolean\n---Whether to show a notification the first few times an Analysis Server exception occurs.\n---\n---```lua\n---default = true\n---```\n---@field notifyAnalyzerErrors? boolean\n---Whether to use the --offline switch for commands like 'pub get' and 'Flutter: New Project'.\n---@field offline? boolean\n---**Deprecated**: Whether to ignore workspace folders and perform analysis based on the open files. This setting can make performance significantly worse when moving around a project and is not recommended.\n---@field onlyAnalyzeProjectsWithOpenFiles? boolean\n---Whether to automatically open DevTools at the start of a debug session. If embedded DevTools is enabled, this will launch the Widget Inspector embedded for Flutter projects, or launch DevTools externally in a browser for Dart projects.\n---\n---```lua\n---default = \"never\"\n---```\n---@field openDevTools? \"never\" | \"flutter\" | \"always\"\n---When to automatically switch focus to the test list (array to support multiple values).\n---\n---```lua\n---default = { \"testRunStart\" }\n---```\n---@field openTestView? any[]\n---EXPERIMENTAL: Whether to enable commit characters for the LSP server. In a future release, the dart.enableCompletionCommitCharacters setting will also apply to LSP.\n---@field previewCommitCharacters? boolean\n---EXPERIMENTAL: Whether to enable the [Flutter UI Guides preview](https://dartcode.org/releases/v3-1/#preview-flutter-ui-guides).\n---@field previewFlutterUiGuides? boolean\n---EXPERIMENTAL: Whether to enable custom tracking of Flutter UI guidelines (to hide some latency of waiting for the next Flutter Outline).\n---@field previewFlutterUiGuidesCustomTracking? boolean\n---Whether to perform hot reload on save based on a filesystem watcher for Dart files rather than using VS Code's `onDidSave` event. This allows reloads to trigger when external tools modify Dart source files.\n---@field previewHotReloadOnSaveWatcher? boolean\n---How many levels (including the workspace roots) down the workspace to search for Dart/Flutter projects. Increasing this number may help detect Flutter projects that are deeply nested in your workspace but slow down all operations that search for projects, including extension activation (requires restart).\n---\n---```lua\n---default = 5\n---```\n---@field projectSearchDepth? number\n---Whether to prompt to get/upgrade packages when opening a project with missing/out of date packages.\n---\n---```lua\n---default = true\n---```\n---@field promptToGetPackages? boolean\n---Whether to prompt before running if there are errors in your project. Test scripts will be excluded from the check unless they're the script being run.\n---\n---```lua\n---default = true\n---```\n---@field promptToRunIfErrors? boolean\n---Additional args to pass to all `pub` commands.\n---\n---```lua\n---default = {}\n---```\n---@field pubAdditionalArgs? string[]\n---Whether to rename files when renaming classes with matching names (for example renaming 'class Person' inside 'person.dart'). If set to 'prompt', will ask each time before renaming. If set to 'always', the file will automatically be renamed. This setting requires using LSP and a Dart SDK of at least v2.15.\n---\n---```lua\n---default = \"never\"\n---```\n---@field renameFilesWithClasses? \"never\" | \"prompt\" | \"always\"\n---Whether to run Pub operations across multiple folders concurrently.\n---\n---```lua\n---default = true\n---```\n---@field runPubConcurrently? boolean\n---Whether to automatically run `pub get` on nested projects above or below the one where the pubspec was changed.\n---\n---```lua\n---default = \"none\"\n---```\n---@field runPubGetOnNestedProjects? \"none\" | \"both\" | \"above\" | \"below\"\n---Whether to run `pub get` whenever `pubspec.yaml` is saved.\n---\n---```lua\n---default = \"always\"\n---```\n---@field runPubGetOnPubspecChanges? \"always\" | \"prompt\" | \"never\"\n---The location of the Dart SDK to use for analyzing and executing code. If blank (or not a valid SDK), Dart Code will attempt to find it from the `PATH` environment variable. When editing a Flutter project, the version of Dart included in the Flutter SDK is used in preference. Use `~` to insert the user's home directory (the path should then use `/` separators even on Windows).\n---@field sdkPath? string\n---An array of paths that either directly point to a Dart SDK or the parent directory of multiple Dart SDKs that can be used for fast SDK switching. These paths are not used directly when searching for an SDK. When this setting is populated, the SDK version number in the status bar can be used to quickly switch between SDKs. Use `~` to insert the user's home directory (the path should then use `/` separators even on Windows).\n---\n---```lua\n---default = {}\n---```\n---@field sdkPaths? string[]\n---Where to save SDK selections when using fast SDK switching from the language status entry.\n---\n---```lua\n---default = \"workspace\"\n---```\n---@field sdkSwitchingTarget? \"workspace\" | \"global\"\n---Whether to eagerly run DevTools for Flutter workspaces and share the spawned server with `flutter run`.\n---\n---```lua\n---default = true\n---```\n---@field shareDevToolsWithFlutter? boolean\n---Whether to show logs from the `dart:developer` `log()` function in the debug console.\n---\n---```lua\n---default = true\n---```\n---@field showDartDeveloperLogs? boolean\n---Whether to show CodeLens actions in the editor for opening online DartPad samples.\n---\n---```lua\n---default = true\n---```\n---@field showDartPadSampleCodeLens? boolean\n---Whether to show integers formatted as Hex in Variables, Watch, Debug Consoles.\n---@field showDebuggerNumbersAsHex? boolean\n---Whether to show DevTools buttons in the floating Debug toolbar.\n---\n---```lua\n---default = true\n---```\n---@field showDevToolsDebugToolBarButtons? boolean\n---Whether to show recommendations for other VS Code extensions based on the packages you're using.\n---\n---```lua\n---default = true\n---```\n---@field showExtensionRecommendations? boolean\n---Whether to show getters in order to display them in debug views (such as the Variables, Watch and Hovers views). If `evaluateGettersInDebugViews` is `true` getters will be eagerly evaluated, otherwise they will require clicking to evaluate.\n---\n---```lua\n---default = true\n---```\n---@field showGettersInDebugViews? boolean\n---Whether to show notifications for widget errors that offer Inspect Widget links. This requires that the `#dart.shareDevToolsWithFlutter#` setting is also enabled.\n---\n---```lua\n---default = true\n---```\n---@field showInspectorNotificationsForWidgetErrors? boolean\n---Whether to show CodeLens actions in the editor for quick running / debugging scripts with main functions.\n---\n---```lua\n---default = true\n---```\n---@field showMainCodeLens? boolean\n---Whether to show skipped tests in the test tree.\n---\n---```lua\n---default = true\n---```\n---@field showSkippedTests? boolean\n---Whether to show CodeLens actions in the editor for quick running / debugging tests.\n---\n---```lua\n---default = true\n---```\n---@field showTestCodeLens? boolean\n---Whether to show TODOs in the Problems list. Can be a boolean to enable all TODO comments (TODO, FIXME, HACK, UNDONE) or an array of which types to enable. Older Dart SDKs may not support some TODO kinds.\n---\n---```lua\n---default = true\n---```\n---@field showTodos? boolean|string[]\n---Whether to suppress test timeouts when running/debugging tests. To work properly this requires package:test version 1.20.1 or newer. For older versions, the default timeout will be increased to 1d but this will not affect tests that have explicit (non-factor) timeouts set with @timeout.\n---\n---```lua\n---default = \"debug\"\n---```\n---@field suppressTestTimeouts? \"never\" | \"debug\" | \"always\"\n---Additional args to pass to the `dart test` command. Using the `args`/`toolArgs` fields in `launch.json` is usually better than this setting as this setting will apply to _all_ projects.\n---\n---```lua\n---default = {}\n---```\n---@field testAdditionalArgs? string[]\n---How to identify tests when running/debugging. `name` is compatible with older versions of `package:test` but cannot handle some complex/dynamic test names. `line` will prefer to run tests by their line numbers (when available) and fall back to `name` only if the line number is unavailable.\n---\n---```lua\n---default = \"name\"\n---```\n---@field testInvocationMode? \"name\" | \"line\"\n---Additional args to pass to the `dart tooling-daemon` command that runs as a background service (requires restart).\n---\n---```lua\n---default = {}\n---```\n---@field toolingDaemonAdditionalArgs? string[]\n---The path to a log file for the `dart tooling-daemon` service, which coordinates between various Dart and Flutter tools and extensions. Use `${workspaceName}` to insert the name of the current workspace in the file path. Use `~` to insert the user's home directory (the path should then use `/` separators even on Windows). Only the noted substitutions are supported, others will stay as-is.\n---@field toolingDaemonLogFile? string\n---Whether to automatically update imports when moving or renaming files. Currently only supports single file moves / renames.\n---\n---```lua\n---default = true\n---```\n---@field updateImportsOnRename? boolean\n---Whether to use `flutter-dev` instead of `flutter`. This is a script for developers of the `flutter` tool to run from source and will run more slowly than the compiled tool.\n---@field useFlutterDev? boolean\n---Arguments to be passed to the Dart VM when running Dart CLI scripts/tests.\n---\n---These arguments appear after \"dart\" but before subcommands like \"test\":\n---\n---`dart (vmAdditionalArgs) test (toolArgs) test/my_test.dart (args)`\n---\n---```lua\n---default = {}\n---```\n---@field vmAdditionalArgs? string[]\n---Whether to show a warning when modifying files in the [system package cache](https://dart.dev/tools/pub/glossary#system-cache) directory.\n---\n---```lua\n---default = true\n---```\n---@field warnWhenEditingFilesInPubCache? boolean\n---Whether to show a warning when modifying files outside of the workspace.\n---\n---```lua\n---default = true\n---```\n---@field warnWhenEditingFilesOutsideWorkspace? boolean\n---**LEGACY SETTING: Only applies when using the legacy debug adapters.**\n---\n---The path to a log file for communication between Dart Code and the webdev daemon. This is useful when trying to diagnose issues with launching web apps. Use `${name}` in the log file name to insert the Debug Session name to prevent concurrent debug sessions overwriting each others logs. Use `${workspaceName}` to insert the name of the current workspace in the file path. Use `~` to insert the user's home directory (the path should then use `/` separators even on Windows). Only the noted substitutions are supported, others will stay as-is.\n---@field webDaemonLogFile? string\n\n---@class lspconfig.settings.dartls\n---@field dart? _.lspconfig.settings.dartls.Dart\n"
  },
  {
    "path": "lua/lspconfig/types/lsp/denols.lua",
    "content": "---@meta\n\n---@class _.lspconfig.settings.denols.Deno.CodeLens\n---Enables or disables the display of code lens information for implementations of items in the code.\n---@field implementations? boolean\n---Enables or disables the display of code lens information for references of items in the code.\n---@field references? boolean\n---Enables or disables the display of code lens information for all functions in the code.\n---@field referencesAllFunctions? boolean\n---Enables or disables the display of code lenses that allow running of individual tests in the code.\n---@field test? boolean\n---Additional arguments to use with the run test code lens.  Defaults to `[ \"--allow-all\", \"--no-check\" ]`.\n---\n---```lua\n---default = { \"--allow-all\", \"--no-check\" }\n---```\n---@field testArgs? string[]\n\n---@class _.lspconfig.settings.denols.Deno.InlayHints.EnumMemberValues\n---Enable/disable inlay hints for enum values.\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.denols.Deno.InlayHints.FunctionLikeReturnTypes\n---Enable/disable inlay hints for implicit function return types.\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.denols.Deno.InlayHints.ParameterNames\n---Enable/disable inlay hints for parameter names.\n---\n---```lua\n---default = \"none\"\n---```\n---@field enabled? \"none\" | \"literals\" | \"all\"\n---Do not display an inlay hint when the argument name matches the parameter.\n---\n---```lua\n---default = true\n---```\n---@field suppressWhenArgumentMatchesName? boolean\n\n---@class _.lspconfig.settings.denols.Deno.InlayHints.ParameterTypes\n---Enable/disable inlay hints for implicit parameter types.\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.denols.Deno.InlayHints.PropertyDeclarationTypes\n---Enable/disable inlay hints for implicit property declarations.\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.denols.Deno.InlayHints.VariableTypes\n---Enable/disable inlay hints for implicit variable types.\n---@field enabled? boolean\n---Suppress type hints where the variable name matches the implicit type.\n---\n---```lua\n---default = true\n---```\n---@field suppressWhenTypeMatchesName? boolean\n\n---@class _.lspconfig.settings.denols.Deno.InlayHints\n---@field enumMemberValues? _.lspconfig.settings.denols.Deno.InlayHints.EnumMemberValues\n---@field functionLikeReturnTypes? _.lspconfig.settings.denols.Deno.InlayHints.FunctionLikeReturnTypes\n---@field parameterNames? _.lspconfig.settings.denols.Deno.InlayHints.ParameterNames\n---@field parameterTypes? _.lspconfig.settings.denols.Deno.InlayHints.ParameterTypes\n---@field propertyDeclarationTypes? _.lspconfig.settings.denols.Deno.InlayHints.PropertyDeclarationTypes\n---@field variableTypes? _.lspconfig.settings.denols.Deno.InlayHints.VariableTypes\n\n---@class _.lspconfig.settings.denols.Deno.OrganizeImports\n---Controls if the Deno language server contributes organize imports code actions. Disable to rely on VS Code's built-in TypeScript/JavaScript organize imports instead.\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.denols.Deno.Suggest.Imports\n---If enabled, when new hosts/origins are encountered that support import suggestions, you will be prompted to enable or disable it.  Defaults to `true`.\n---\n---```lua\n---default = true\n---```\n---@field autoDiscover? boolean\n---Controls which hosts are enabled for import suggestions.\n---\n---```lua\n---default = {\n---  [\"https://deno.land\"] = true\n---}\n---```\n---@field hosts? table\n\n---@class _.lspconfig.settings.denols.Deno.Suggest\n---```lua\n---default = true\n---```\n---@field autoImports? boolean\n---@field completeFunctionCalls? boolean\n---@field imports? _.lspconfig.settings.denols.Deno.Suggest.Imports\n---```lua\n---default = true\n---```\n---@field names? boolean\n---```lua\n---default = true\n---```\n---@field paths? boolean\n\n---@class _.lspconfig.settings.denols.Deno.Symbols.Document\n---Controls if the Deno language server provides document symbols. Disable to rely on VS Code's built-in providers instead.\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.denols.Deno.Symbols.Workspace\n---Controls if the Deno language server provides workspace symbols. Disable to rely on VS Code's built-in providers instead.\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.denols.Deno.Symbols\n---@field document? _.lspconfig.settings.denols.Deno.Symbols.Document\n---@field workspace? _.lspconfig.settings.denols.Deno.Symbols.Workspace\n\n---@class _.lspconfig.settings.denols.Deno.Testing\n---Arguments to use when running tests via the Test Explorer.  Defaults to `[ \"--allow-all\" ]`.\n---\n---```lua\n---default = { \"--allow-all\", \"--no-check\" }\n---```\n---@field args? string[]\n\n---@class _.lspconfig.settings.denols.Deno.Trace\n---Traces the communication between VS Code and the Deno Language Server.\n---\n---```lua\n---default = \"off\"\n---```\n---@field server? \"messages\" | \"off\" | \"verbose\"\n\n---@class _.lspconfig.settings.denols.Deno\n---A path to the cache directory for Deno. By default, the operating system's cache path plus `deno` is used, or the `DENO_DIR` environment variable, but if set, this path will be used instead.\n---@field cache? string\n---Controls if the extension should cache the active document's dependencies on save.\n---\n---```lua\n---default = true\n---```\n---@field cacheOnSave? boolean\n---A list of root certificate stores used to validate TLS certificates when fetching and caching remote resources. This overrides the `DENO_TLS_CA_STORE` environment variable if set.\n---@field certificateStores? string[]\n---@field codeLens? _.lspconfig.settings.denols.Deno.CodeLens\n---The file path to a configuration file. This is the equivalent to using `--config` on the command line. The path can be either be relative to the workspace, or an absolute path.\n---\n---It is recommend you name it `deno.json` or `deno.jsonc`.\n---\n---**Not recommended to be set globally.**\n---@field config? string\n---Controls the default action when clicking on a task in the _Deno Tasks sidebar_.\n---\n---```lua\n---default = \"open\"\n---```\n---@field defaultTaskCommand? \"open\" | \"run\"\n---Disables the Deno Language Server for specific paths. This will leave the built in TypeScript/JavaScript language server enabled for those paths. Takes priority over `deno.enablePaths`.\n---\n---**Not recommended to be enabled in user settings.**\n---\n---```lua\n---default = {}\n---```\n---@field disablePaths? string[]\n---Maximum number of file system entries to traverse when finding scripts to preload into TypeScript on startup. Set this to 0 to disable document preloading.\n---\n---```lua\n---default = 1000\n---```\n---@field documentPreloadLimit? number\n---Controls if the Deno Language Server is enabled. When enabled, the extension will disable the built-in VSCode JavaScript and TypeScript language services, and will use the Deno Language Server instead.\n---\n---If omitted, your preference will be inferred as true if there is a `deno.json[c]` at your workspace root and false if not.\n---\n---If you want to enable only part of your workspace folder, consider using `deno.enablePaths` setting instead.\n---\n---**Not recommended to be enabled globally.**\n---@field enable? boolean\n---Enables the Deno Language Server for specific paths, instead of for the whole workspace folder. This will disable the built in TypeScript/JavaScript language server for those paths.\n---\n---When a value is set, the value of `\"deno.enable\"` is ignored.\n---\n---The workspace folder is used as the base for the supplied paths. If for example you have all your Deno code in `worker` path in your workspace, you can add an item with the value of `./worker`, and the Deno will only provide diagnostics for the files within `worker` or any of its sub paths.\n---\n---**Not recommended to be enabled in user settings.**\n---@field enablePaths? string[]\n---Additional environment variables to pass to Deno processes. Overrides the user's env and `deno.envFile`. These will be overridden by more specific settings such as `deno.future` for `DENO_FUTURE`, and invariables like `NO_COLOR=1`.\n---\n---```lua\n---default = {}\n---```\n---@field env? table\n---Env file containing additional environment variables to pass to Deno processes. Overrides the user's env. These will be overridden by `deno.env`, more specific settings such as `deno.future` for `DENO_FUTURE`, and invariables like `NO_COLOR=1`.\n---@field envFile? string\n---Disables the server-capability for pull diagnostics to force push-based diagnostics.\n---@field forcePushBasedDiagnostics? boolean\n---Enable breaking features likely to be shipped in Deno 2.0.\n---@field future? boolean\n---The file path to an import map. This is the equivalent to using `--import-map` on the command line.\n---\n---[Import maps](https://deno.land/manual@v1.6.0/linking_to_external_code/import_maps) provide a way to \"relocate\" modules based on their specifiers. The path can either be relative to the workspace, or an absolute path.\n---\n---**Not recommended to be set globally.**\n---@field importMap? string\n---@field inlayHints? _.lspconfig.settings.denols.Deno.InlayHints\n---Determines if the internal debugging information for the Deno language server will be logged to the _Deno Language Server_ console.\n---@field internalDebug? boolean\n---Enables the inspector server for the JS runtime used by the Deno Language Server to host its TS server. Optionally provide an address for the inspector listener e.g. \"127.0.0.1:9222\" (default).\n---@field internalInspect? boolean|string\n---Controls if linting information will be provided by the Deno Language Server.\n---\n---**Not recommended to be enabled globally.**\n---\n---```lua\n---default = true\n---```\n---@field lint? boolean\n---Write logs to a file in a project-local directory.\n---@field logFile? boolean\n---Maximum amount of memory the TypeScript isolate can use. Defaults to 3072 (3GB).\n---\n---```lua\n---default = 3072\n---```\n---@field maxTsServerMemory? number\n---@field organizeImports? _.lspconfig.settings.denols.Deno.OrganizeImports\n---A path to the `deno` CLI executable. By default, the extension looks for `deno` in the `PATH`, but if set, will use the path specified instead.\n---@field path? string\n---@field suggest? _.lspconfig.settings.denols.Deno.Suggest\n---@field symbols? _.lspconfig.settings.denols.Deno.Symbols\n---@field testing? _.lspconfig.settings.denols.Deno.Testing\n---A path to a PEM certificate to use as the certificate authority when validating TLS certificates when fetching and caching remote resources. This is like using `--cert` on the Deno CLI and overrides the `DENO_CERT` environment variable if set.\n---@field tlsCertificate? string\n---@field trace? _.lspconfig.settings.denols.Deno.Trace\n---**DANGER** disables verification of TLS certificates for the hosts provided. There is likely a better way to deal with any errors than use this option. This is like using `--unsafely-ignore-certificate-errors` in the Deno CLI.\n---@field unsafelyIgnoreCertificateErrors? string[]\n---Controls which `--unstable-*` features tests will be run with when running them via the explorer.\n---\n---**Not recommended to be enabled globally.**\n---\n---```lua\n---default = {}\n---```\n---@field unstable? string[]\n\n---@class lspconfig.settings.denols\n---@field deno? _.lspconfig.settings.denols.Deno\n"
  },
  {
    "path": "lua/lspconfig/types/lsp/elixirls.lua",
    "content": "---@meta\n\n---@class _.lspconfig.settings.elixirls.ElixirLS.Trace\n---Traces the communication between VS Code and the Elixir language server.\n---\n---```lua\n---default = \"off\"\n---```\n---@field server? \"off\" | \"messages\" | \"verbose\"\n\n---@class _.lspconfig.settings.elixirls.ElixirLS\n---Additional file types capable of triggering a build on change\n---\n---```lua\n---default = {}\n---```\n---@field additionalWatchedExtensions? string[]\n---Trigger ElixirLS build when code is saved\n---\n---```lua\n---default = true\n---```\n---@field autoBuild? boolean\n---Enable auto-insert required alias. This is true (enabled) by default.\n---\n---```lua\n---default = true\n---```\n---@field autoInsertRequiredAlias? boolean\n---Run ElixirLS's rapid Dialyzer when code is saved\n---\n---```lua\n---default = true\n---```\n---@field dialyzerEnabled? boolean\n---Formatter to use for Dialyzer warnings\n---\n---```lua\n---default = \"dialyxir_long\"\n---```\n---@field dialyzerFormat? \"dialyzer\" | \"dialyxir_short\" | \"dialyxir_long\"\n---Dialyzer options to enable or disable warnings - See Dialyzer's documentation for options. Note that the \"race_conditions\" option is unsupported\n---\n---```lua\n---default = {}\n---```\n---@field dialyzerWarnOpts? string[]\n---Path to a custom .formatter.exs file used when formatting documents\n---@field dotFormatter? string\n---Show code lenses to run tests in terminal.\n---@field enableTestLenses? boolean\n---Environment variables to use for compilation\n---@field envVariables? table\n---Automatically fetch project dependencies when compiling.\n---@field fetchDeps? boolean\n---Use OTP incremental dialyzer (available on OTP 26+)\n---\n---```lua\n---default = true\n---```\n---@field incrementalDialyzer? boolean\n---Absolute path to alternative ElixirLS release that will override the packaged release\n---@field languageServerOverridePath? string\n---Enable or disable the MCP server\n---@field mcpEnabled? boolean\n---Set a specific port for the MCP server. If not set, uses `3789 + hash(workspace_path)` for predictable port assignment per workspace\n---\n---```lua\n---default = 0\n---```\n---@field mcpPort? integer\n---Mix environment to use for compilation\n---\n---```lua\n---default = \"test\"\n---```\n---@field mixEnv? string\n---Mix target to use for compilation\n---@field mixTarget? string\n---Subdirectory containing Mix project if not in the project root\n---\n---```lua\n---default = \"\"\n---```\n---@field projectDir? string\n---Show signature help after confirming autocomplete.\n---\n---```lua\n---default = true\n---```\n---@field signatureAfterComplete? boolean\n---Subdirectory where the Elixir stdlib resides to allow for source code lookup. E.g. /home/youruser/.asdf/installs/elixir/1.18.2\n---\n---```lua\n---default = \"\"\n---```\n---@field stdlibSrcDir? string\n---Suggest @spec annotations inline using Dialyzer's inferred success typings (Requires Dialyzer).\n---\n---```lua\n---default = true\n---```\n---@field suggestSpecs? boolean\n---@field trace? _.lspconfig.settings.elixirls.ElixirLS.Trace\n---Don't try to look for mix.exs in parent directories\n---@field useCurrentRootFolderAsProjectDir? boolean\n\n---@class lspconfig.settings.elixirls\n---@field elixirLS? _.lspconfig.settings.elixirls.ElixirLS\n"
  },
  {
    "path": "lua/lspconfig/types/lsp/elmls.lua",
    "content": "---@meta\n\n---@class _.lspconfig.settings.elmls.ElmLS.ElmTestRunner\n---Show output of elm-test as terminal task\n---@field showElmTestOutput? boolean\n\n---@class _.lspconfig.settings.elmls.ElmLS.Trace\n---Traces the communication between VS Code and the language server.\n---\n---```lua\n---default = \"off\"\n---```\n---@field server? \"off\" | \"messages\" | \"verbose\"\n\n---@class _.lspconfig.settings.elmls.ElmLS\n---Disable linting diagnostics from the language server.\n---@field disableElmLSDiagnostics? boolean\n---The path to your elm-format executable. Should be empty by default, in that case it will assume the name and try to first get it from a local npm installation or a global one. If you set it manually it will not try to load from the npm folder.\n---\n---```lua\n---default = \"\"\n---```\n---@field elmFormatPath? string\n---The path to your elm executable. Should be empty by default, in that case it will assume the name and try to first get it from a local npm installation or a global one. If you set it manually it will not try to load from the npm folder.\n---\n---```lua\n---default = \"\"\n---```\n---@field elmPath? string\n---Set severity or disable linting diagnostics for elm-review.\n---\n---```lua\n---default = \"off\"\n---```\n---@field elmReviewDiagnostics? \"off\" | \"warning\" | \"error\"\n---The path to your elm-review executable. Should be empty by default, in that case it will assume the name and try to first get it from a local npm installation or a global one. If you set it manually it will not try to load from the npm folder.\n---\n---```lua\n---default = \"\"\n---```\n---@field elmReviewPath? string\n---The path to your elm-test executable. Should be empty by default, in that case it will assume the name and try to first get it from a local npm installation or a global one. If you set it manually it will not try to load from the npm folder.\n---\n---```lua\n---default = \"\"\n---```\n---@field elmTestPath? string\n---@field elmTestRunner? _.lspconfig.settings.elmls.ElmLS.ElmTestRunner\n---Only update compiler diagnostics on save, not on document change.\n---@field onlyUpdateDiagnosticsOnSave? boolean\n---Skips confirmation for the Install Package code action.\n---@field skipInstallPackageConfirmation? boolean\n---@field trace? _.lspconfig.settings.elmls.ElmLS.Trace\n\n---@class lspconfig.settings.elmls\n---@field elmLS? _.lspconfig.settings.elmls.ElmLS\n"
  },
  {
    "path": "lua/lspconfig/types/lsp/eslint.lua",
    "content": "---@meta\n\n---Show disable lint rule in the quick fix menu.\n---\n---```lua\n---default = {\n---  commentStyle = \"line\",\n---  enable = true,\n---  location = \"separateLine\"\n---}\n---```\n---@class _.lspconfig.settings.eslint.Eslint.CodeAction.DisableRuleComment\n---```lua\n---default = \"line\"\n---```\n---@field commentStyle? \"line\" | \"block\"\n---Show the disable code actions.\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n---Configure the disable rule code action to insert the comment on the same line or a new line.\n---\n---```lua\n---default = \"separateLine\"\n---```\n---@field location? \"separateLine\" | \"sameLine\"\n\n---Show open lint rule documentation web page in the quick fix menu.\n---\n---```lua\n---default = {\n---  enable = true\n---}\n---```\n---@class _.lspconfig.settings.eslint.Eslint.CodeAction.ShowDocumentation\n---Show the documentation code actions.\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n\n---@class _.lspconfig.settings.eslint.Eslint.CodeAction\n---Show disable lint rule in the quick fix menu.\n---\n---```lua\n---default = {\n---  commentStyle = \"line\",\n---  enable = true,\n---  location = \"separateLine\"\n---}\n---```\n---@field disableRuleComment? _.lspconfig.settings.eslint.Eslint.CodeAction.DisableRuleComment\n---Show open lint rule documentation web page in the quick fix menu.\n---\n---```lua\n---default = {\n---  enable = true\n---}\n---```\n---@field showDocumentation? _.lspconfig.settings.eslint.Eslint.CodeAction.ShowDocumentation\n\n---@class _.lspconfig.settings.eslint.Eslint.CodeActionsOnSave\n---Specifies the code action mode. Possible values are 'all' and 'problems'.\n---\n---```lua\n---default = \"all\"\n---```\n---@field mode? \"all\" | \"problems\"\n---The ESLint options object to use on save (see https://eslint.org/docs/developer-guide/nodejs-api#eslint-class). `eslint.codeActionsOnSave.rules`, if specified, will take priority over any rule options here.\n---\n---```lua\n---default = {}\n---```\n---@field options? table\n---The rules that should be executed when computing the code actions on save or formatting a file. Defaults to the rules configured via the ESLint configuration\n---@field rules? string[]|any\n\n---@class _.lspconfig.settings.eslint.Eslint.Experimental\n---Enables support of experimental Flat Config (aka eslint.config.js). Requires ESLint version >= 8.21 < 8.57.0).\n---@field useFlatConfig? boolean\n\n---@class _.lspconfig.settings.eslint.Eslint.Format\n---Enables ESLint as a formatter.\n---@field enable? boolean\n\n---@class _.lspconfig.settings.eslint.Eslint.LintTask\n---The command to run the task for linting the whole workspace. Defaults to the found eslint binary for the workspace, or 'eslint' if no binary could be found.\n---\n---```lua\n---default = \"eslint\"\n---```\n---@field command? string\n---Controls whether a task for linting the whole workspace will be available.\n---@field enable? boolean\n---Command line options applied when running the task for linting the whole workspace (see https://eslint.org/docs/user-guide/command-line-interface).\n---\n---```lua\n---default = \".\"\n---```\n---@field options? string\n\n---@class _.lspconfig.settings.eslint.Eslint.Migration\n---Whether ESlint should migrate auto fix on save settings.\n---\n---```lua\n---default = \"on\"\n---```\n---@field [\"2_x\"]? \"off\" | \"on\"\n\n---@class _.lspconfig.settings.eslint.Eslint.Notebooks.Rules\n---A special rules customization section for text cells in notebook documents.\n---@field customizations? table[]\n\n---@class _.lspconfig.settings.eslint.Eslint.Notebooks\n---@field rules? _.lspconfig.settings.eslint.Eslint.Notebooks.Rules\n\n---@class _.lspconfig.settings.eslint.Eslint.Problems\n---Shortens the text spans of underlined problems to their first related line.\n---@field shortenToSingleLine? boolean\n\n---@class _.lspconfig.settings.eslint.Eslint.Rules\n---Override the severity of one or more rules reported by this extension, regardless of the project's ESLint config. Use globs to apply default severities for multiple rules.\n---@field customizations? table[]\n\n---The time budget in milliseconds to spend on computing fixes before showing a warning or error.\n---\n---```lua\n---default = {\n---  error = 6000,\n---  warn = 3000\n---}\n---```\n---@class _.lspconfig.settings.eslint.Eslint.TimeBudget.OnFixes\n---The time budget in milliseconds to spend on computing fixes before showing an error.\n---\n---```lua\n---default = 6000\n---```\n---@field error? number\n---The time budget in milliseconds to spend on computing fixes before showing a warning.\n---\n---```lua\n---default = 3000\n---```\n---@field warn? number\n\n---The time budget in milliseconds to spend on validation before showing a warning or error.\n---\n---```lua\n---default = {\n---  error = 8000,\n---  warn = 4000\n---}\n---```\n---@class _.lspconfig.settings.eslint.Eslint.TimeBudget.OnValidation\n---The time budget in milliseconds to spend on validation before showing an error.\n---\n---```lua\n---default = 8000\n---```\n---@field error? number\n---The time budget in milliseconds to spend on validation before showing a warning.\n---\n---```lua\n---default = 4000\n---```\n---@field warn? number\n\n---@class _.lspconfig.settings.eslint.Eslint.TimeBudget\n---The time budget in milliseconds to spend on computing fixes before showing a warning or error.\n---\n---```lua\n---default = {\n---  error = 6000,\n---  warn = 3000\n---}\n---```\n---@field onFixes? _.lspconfig.settings.eslint.Eslint.TimeBudget.OnFixes\n---The time budget in milliseconds to spend on validation before showing a warning or error.\n---\n---```lua\n---default = {\n---  error = 8000,\n---  warn = 4000\n---}\n---```\n---@field onValidation? _.lspconfig.settings.eslint.Eslint.TimeBudget.OnValidation\n\n---@class _.lspconfig.settings.eslint.Eslint.Trace\n---Traces the communication between VSCode and the eslint linter service.\n---\n---```lua\n---default = \"off\"\n---```\n---@field server? \"off\" | \"messages\" | \"verbose\"|table\n\n---@class _.lspconfig.settings.eslint.Eslint\n---Turns auto fix on save on or off.\n---@field autoFixOnSave? boolean\n---@field codeAction? _.lspconfig.settings.eslint.Eslint.CodeAction\n---@field codeActionsOnSave? _.lspconfig.settings.eslint.Eslint.CodeActionsOnSave\n---Enables ESLint debug mode (same as `--debug` on the command line)\n---@field debug? boolean\n---Controls whether eslint is enabled or not.\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n---Additional exec argv argument passed to the runtime. This can for example be used to control the maximum heap space using --max_old_space_size\n---@field execArgv? string[]|any\n---@field experimental? _.lspconfig.settings.eslint.Eslint.Experimental\n---@field format? _.lspconfig.settings.eslint.Eslint.Format\n---If true, untitled files won't be validated by ESLint.\n---@field ignoreUntitled? boolean\n---@field lintTask? _.lspconfig.settings.eslint.Eslint.LintTask\n---@field migration? _.lspconfig.settings.eslint.Eslint.Migration\n---The value of `NODE_ENV` to use when running eslint tasks.\n---@field nodeEnv? string\n---A path added to `NODE_PATH` when resolving the eslint module.\n---@field nodePath? string\n---@field notebooks? _.lspconfig.settings.eslint.Eslint.Notebooks\n---Whether ESLint should issue a warning on ignored files.\n---\n---```lua\n---default = \"off\"\n---```\n---@field onIgnoredFiles? \"warn\" | \"off\"\n---The eslint options object to provide args normally passed to eslint when executed from a command line (see https://eslint.org/docs/developer-guide/nodejs-api#eslint-class).\n---\n---```lua\n---default = {}\n---```\n---@field options? table\n---The package manager you use to install node modules.\n---\n---```lua\n---default = \"npm\"\n---```\n---@field packageManager? \"npm\" | \"yarn\" | \"pnpm\"\n---An array of language ids for which the extension should probe if support is installed.\n---\n---```lua\n---default = { \"astro\", \"civet\", \"javascript\", \"javascriptreact\", \"typescript\", \"typescriptreact\", \"html\", \"mdx\", \"vue\", \"markdown\", \"json\", \"jsonc\", \"css\", \"glimmer-js\", \"glimmer-ts\", \"svelte\" }\n---```\n---@field probe? string[]\n---@field problems? _.lspconfig.settings.eslint.Eslint.Problems\n---Controls whether a task for linting the whole workspace will be available.\n---@field provideLintTask? boolean\n---Turns on quiet mode, which ignores warnings and info diagnostics.\n---@field quiet? boolean\n---@field rules? _.lspconfig.settings.eslint.Eslint.Rules\n---Run the linter on save (onSave) or on type (onType)\n---\n---```lua\n---default = \"onType\"\n---```\n---@field run? \"onSave\" | \"onType\"\n---The location of the node binary to run ESLint under.\n---@field runtime? string\n---@field timeBudget? _.lspconfig.settings.eslint.Eslint.TimeBudget\n---@field trace? _.lspconfig.settings.eslint.Eslint.Trace\n---Since version 7 ESLint offers a new API call ESLint. Use it even if the old CLIEngine is available. From version 8 on forward on ESLint class is available.\n---@field useESLintClass? boolean\n---Controls whether flat config should be used or not. This setting requires ESLint version 8.57 or later and is interpreted according to the [ESLint Flat Config rollout plan](https://eslint.org/blog/2023/10/flat-config-rollout-plans/). This means:\n---\n--- - *8.57.0 <= ESLint version < 9.x*: setting is honored and defaults to false\n---- *9.0.0 <= ESLint version < 10.x*: settings is honored and defaults to true\n---- *10.0.0 <= ESLint version*: setting is ignored. Flat configs are the default and can't be turned off.\n---@field useFlatConfig? boolean\n---Whether ESLint should use real paths when resolving files. This is useful when working with symlinks or when the casing of file paths is inconsistent.\n---@field useRealpaths? boolean\n---An array of language ids which should be validated by ESLint. If not installed ESLint will show an error.\n---@field validate? any[]\n---Specifies how the working directories ESLint is using are computed. ESLint resolves configuration files (e.g. `eslintrc`, `.eslintignore`) relative to a working directory so it is important to configure this correctly.\n---@field workingDirectories? any[]\n\n---@class lspconfig.settings.eslint\n---@field eslint? _.lspconfig.settings.eslint.Eslint\n"
  },
  {
    "path": "lua/lspconfig/types/lsp/flow.lua",
    "content": "---@meta\n\n---@class _.lspconfig.settings.flow.Flow.Trace\n---Traces the communication between VSCode and the flow lsp service.\n---\n---```lua\n---default = \"off\"\n---```\n---@field server? \"off\" | \"messages\" | \"verbose\"\n\n---@class _.lspconfig.settings.flow.Flow\n---Type coverage diagnostic severity\n---\n---```lua\n---default = \"info\"\n---```\n---@field coverageSeverity? \"error\" | \"warn\" | \"info\"\n---Is flow enabled\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n---Set value to enable flow lazy mode\n---@field lazyMode? string\n---Log level for output panel logs\n---\n---```lua\n---default = \"info\"\n---```\n---@field logLevel? \"error\" | \"warn\" | \"info\" | \"trace\"\n---Absolute path to flow binary. Special var ${workspaceFolder} or ${flowconfigDir} can be used in path (NOTE: in windows you can use '/' and can omit '.cmd' in path)\n---\n---```lua\n---default = \"flow\"\n---```\n---@field pathToFlow? string\n---If true will show uncovered code by default\n---@field showUncovered? boolean\n---Stop Flow on Exit\n---\n---```lua\n---default = true\n---```\n---@field stopFlowOnExit? boolean\n---@field trace? _.lspconfig.settings.flow.Flow.Trace\n---If true will use flow bundled with this plugin if nothing works\n---\n---```lua\n---default = true\n---```\n---@field useBundledFlow? boolean\n---Complete functions with their parameter signature.\n---\n---```lua\n---default = true\n---```\n---@field useCodeSnippetOnFunctionSuggest? boolean\n---Support using flow through your node_modules folder, WARNING: Checking this box is a security risk. When you open a project we will immediately run code contained within it.\n---\n---```lua\n---default = true\n---```\n---@field useNPMPackagedFlow? boolean\n\n---@class lspconfig.settings.flow\n---@field flow? _.lspconfig.settings.flow.Flow\n"
  },
  {
    "path": "lua/lspconfig/types/lsp/fsautocomplete.lua",
    "content": "---@meta\n\n---@class _.lspconfig.settings.fsautocomplete.FSharp.TestExplorer\n---Decides if the test explorer will automatically try discover tests when the workspace loads. You can still manually refresh the explorer to discover tests at any time\n---\n---```lua\n---default = true\n---```\n---@field AutoDiscoverTestsOnLoad? boolean\n---Use the dotnet cli to discover and run tests instead of the language server. Will lose features like streamed test results and Microsoft Testing Platform support.\n---@field UseLegacyDotnetCliIntegration? boolean\n\n---@class _.lspconfig.settings.fsautocomplete.FSharp.CodeLenses.References\n---If enabled, code lenses for reference counts for methods and functions will be shown.\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.fsautocomplete.FSharp.CodeLenses.Signature\n---If enabled, code lenses for type signatures on methods and functions will be shown.\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.fsautocomplete.FSharp.CodeLenses\n---@field references? _.lspconfig.settings.fsautocomplete.FSharp.CodeLenses.References\n---@field signature? _.lspconfig.settings.fsautocomplete.FSharp.CodeLenses.Signature\n\n---@class _.lspconfig.settings.fsautocomplete.FSharp.Fcs.TransparentCompiler\n---EXPERIMENTAL: Enables the FSharp Compiler Service's [transparent compiler](https://github.com/dotnet/fsharp/pull/15179) feature. Requires restart.\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.fsautocomplete.FSharp.Fcs\n---@field transparentCompiler? _.lspconfig.settings.fsautocomplete.FSharp.Fcs.TransparentCompiler\n\n---@class _.lspconfig.settings.fsautocomplete.FSharp.Fsac.Gc\n---Configures the garbage collector to [conserve memory](https://learn.microsoft.com/en-us/dotnet/core/runtime-config/garbage-collector#conserve-memory) at the expense of more frequent garbage collections and possibly longer pause times. Acceptable values are 0-9. Any non-zero value will allow the [Large Object Heap](https://learn.microsoft.com/en-us/dotnet/standard/garbage-collection/large-object-heap) to be compacted automatically if it has too much fragmentation. Requires restart.\n---@field conserveMemory? integer\n---Limits the number of [heaps](https://learn.microsoft.com/en-us/dotnet/standard/garbage-collection/fundamentals#the-managed-heap) created by the garbage collector. Applies to server garbage collection only. See [Middle Ground between Server and Workstation GC](https://devblogs.microsoft.com/dotnet/middle-ground-between-server-and-workstation-gc/) for more details. This can allow FSAC to still benefit from Server garbage collection while still limiting the number of heaps. [Only available on .NET 7 or higher](https://github.com/ionide/ionide-vscode-fsharp/issues/1899#issuecomment-1649009462). Requires restart. If FSAC is run on .NET 8 runtimes, this will be set to 2 by default to prevent inflated memory use. On .NET 9 with DATAS enabled, this will not be set. \n---@field heapCount? integer\n---Configures whether the application uses workstation garbage collection or server garbage collection. See [Workstation vs Server Garbage Collection](https://devblogs.microsoft.com/premier-developer/understanding-different-gc-modes-with-concurrency-visualizer/#workstation-gc-vs-server-gc) for more details. Workstation will use less memory but Server will have more throughput. Requires restart.\n---\n---```lua\n---default = true\n---```\n---@field server? boolean\n---Configures whether the application uses the DATAS(dynamic adaptation to application sizes) server garbage collection mode. See [DATAS](https://learn.microsoft.com/dotnet/core/runtime-config/garbage-collector#dynamic-adaptation-to-application-sizes-datas) for more details. Requires restart. When FSAC is run on .NET 8 runtimes, this will be set to false by default. On .NET 9 runtimes, this will be set to true by default.\n---@field useDatas? boolean\n\n---@class _.lspconfig.settings.fsautocomplete.FSharp.Fsac\n---Appends the `--attachdebugger` argument to fsac, this will allow you to attach a debugger.\n---@field attachDebugger? boolean\n---The MemoryCacheOptions.SizeLimit for caching typechecks.\n---\n---```lua\n---default = 200\n---```\n---@field cachedTypeCheckCount? integer\n---Configures FsAutoComplete with settings intended to reduce memory consumption. Requires restart.\n---@field conserveMemory? boolean\n---additional CLI arguments to be provided to the dotnet runner for FSAC\n---\n---```lua\n---default = {}\n---```\n---@field dotnetArgs? string[]\n---additional CLI arguments to be provided to FSAC itself. Useful for flags that aren't exposed in the settings or CLI arguments that only exist in custom built versions of FSAC. Requires restart.\n---\n---```lua\n---default = {}\n---```\n---@field fsacArgs? string[]\n---@field gc? _.lspconfig.settings.fsautocomplete.FSharp.Fsac.Gc\n---The path to the 'fsautocomplete.dll', a directory containing TFM-specific versions of fsautocomplete.dll, or a directory containing fsautocomplete.dll. Useful for debugging a self-built FSAC. If a DLL is specified, uses it directly. If a directory is specified and it contains TFM-specific folders (net6.0, net7.0, etc) then that directory will be probed for the best TFM to use for the current runtime. This is useful when working with a local copy of FSAC, you can point directly to the bin/Debug or bin/Release folder and it'll Just Work. Finally, if a directory is specified and there are no TFM paths, then fsautocomplete.dll from that directory is used. Requires restart.\n---\n---```lua\n---default = \"\"\n---```\n---@field netCoreDllPath? string\n---EXPERIMENTAL: Speed up analyzing of projects in parallel. Requires restart.\n---@field parallelReferenceResolution? boolean\n---An array of log categories for FSAC to filter out. These can be found by viewing your log output and noting the text in between the brackets in the log line. For example, in the log line `[16:07:14.626 INF] [Compiler] done compiling foo.fsx`, the category is 'Compiler'. \n---\n---```lua\n---default = {}\n---```\n---@field silencedLogs? string[]\n---Enables the use of a new source text implementation. This may have better memory characteristics. Requires restart.\n---\n---```lua\n---default = \"RoslynSourceText\"\n---```\n---@field sourceTextImplementation? \"NamedText\" | \"RoslynSourceText\"\n\n---@class _.lspconfig.settings.fsautocomplete.FSharp.InlayHints\n---Hides the explanatory tooltip that appears on InlayHints to describe the different configuration toggles.\n---@field disableLongTooltip? boolean\n---Controls if the inlay hints feature is enabled\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n---Controls if parameter-name inlay hints will be displayed for functions and methods\n---\n---```lua\n---default = true\n---```\n---@field parameterNames? boolean\n---Controls if type-annotation inlay hints will be displayed for bindings.\n---\n---```lua\n---default = true\n---```\n---@field typeAnnotations? boolean\n\n---@class _.lspconfig.settings.fsautocomplete.FSharp.InlineValues\n---Enables rendering all kinds of hints inline with your code. Currently supports pipelineHints, which are like LineLenses that appear along each step of a chain of piped expressions\n---@field enabled? boolean\n---The prefix used when rendering inline values.\n---\n---```lua\n---default = \"  // \"\n---```\n---@field prefix? string\n\n---@class _.lspconfig.settings.fsautocomplete.FSharp.LineLens\n---Usage mode for LineLens. If `never`, LineLens will never be shown.  If `replaceCodeLens`, LineLens will be placed in a decoration on top of the current line.\n---\n---```lua\n---default = \"replaceCodeLens\"\n---```\n---@field enabled? \"never\" | \"replaceCodeLens\" | \"always\"\n---The prefix displayed before the signature in a LineLens\n---\n---```lua\n---default = \"  // \"\n---```\n---@field prefix? string\n\n---@class _.lspconfig.settings.fsautocomplete.FSharp.Notifications\n---Enables more verbose notifications using System.Diagnostics.Activity to view traces from FSharp.Compiler.Service.\n---@field trace? boolean\n---The set of System.Diagnostics.Activity names to watch.\n---\n---```lua\n---default = { \"BoundModel.TypeCheck\", \"BackgroundCompiler.\" }\n---```\n---@field traceNamespaces? string[]\n\n---@class _.lspconfig.settings.fsautocomplete.FSharp.OpenTelemetry\n---Enables OpenTelemetry exporter. See [OpenTelemetry Protocol Exporter](https://opentelemetry.io/docs/reference/specification/protocol/exporter/) for environment variables to configure for the exporter. Requires Restart.\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.fsautocomplete.FSharp.PipelineHints\n---Enables PipeLine hints, which are like LineLenses that appear along each step of a chain of piped expressions\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n---The prefix displayed before the signature\n---\n---```lua\n---default = \"  // \"\n---```\n---@field prefix? string\n\n---@class _.lspconfig.settings.fsautocomplete.FSharp.Trace\n---Trace server messages at the LSP protocol level for diagnostics.\n---\n---```lua\n---default = \"off\"\n---```\n---@field server? \"off\" | \"messages\" | \"verbose\"\n\n---@class _.lspconfig.settings.fsautocomplete.FSharp\n---An array of additional command line parameters to pass to FSI when it is launched. See [the Microsoft documentation](https://docs.microsoft.com/en-us/dotnet/fsharp/language-reference/fsharp-interactive-options) for an exhaustive list.  If both this and `#FSharp.fsiExtraParameters#` are used, both sets of arguments will be passed to the launched FSI.\n---@field FSIExtraInteractiveParameters? any[]\n---An array of additional command line parameters to pass to the compiler to use when checking FSI scripts. See [the Microsoft documentation](https://docs.microsoft.com/en-us/dotnet/fsharp/language-reference/fsharp-interactive-options) for an exhaustive list. If both this and `#FSharp.fsiExtraParameters#` are used, only `#FSharp.fsiExtraParameters#` will be used.\n---@field FSIExtraSharedParameters? any[]\n---@field TestExplorer? _.lspconfig.settings.fsautocomplete.FSharp.TestExplorer\n---Enables a codefix that generates missing members for an abstract class when in an type inheriting from that abstract class.\n---\n---```lua\n---default = true\n---```\n---@field abstractClassStubGeneration? boolean\n---The expression to fill in the right-hand side of inherited members when generating missing members for an abstract base class\n---\n---```lua\n---default = 'failwith \"Not Implemented\"'\n---```\n---@field abstractClassStubGenerationMethodBody? string\n---The name of the 'self' identifier in an inherited member. For example, `this` in the expression `this.Member(x: int) = ()`\n---\n---```lua\n---default = \"this\"\n---```\n---@field abstractClassStubGenerationObjectIdentifier? string\n---Enables a panel for FSI that shows the value of all existing bindings in the FSI session\n---@field addFsiWatcher? boolean\n---Enables a codefix that adds a private access modifier\n---@field addPrivateAccessModifier? boolean\n---Directories in the array are used as a source of custom analyzers. Requires restart.\n---\n---```lua\n---default = { \"packages/Analyzers\", \"analyzers\" }\n---```\n---@field analyzersPath? any[]\n---Controls whether the solution explorer should automatically reveal and select files when opening them. If `sameAsFileExplorer` is set, then the value of the `explorer.autoReveal` setting will be used instead.\n---\n---```lua\n---default = \"sameAsFileExplorer\"\n---```\n---@field autoRevealInExplorer? \"sameAsFileExplorer\" | \"enabled\" | \"disabled\"\n---@field codeLenses? _.lspconfig.settings.fsautocomplete.FSharp.CodeLenses\n---Disables popup notifications for failed project loading\n---@field disableFailedProjectNotifications? boolean\n---Sets the root path for finding locating the dotnet CLI binary. Defaults to the `dotnet` binary found on your system PATH.\n---@field dotnetRoot? string\n---Enables Enable LSP Server based on FSharp.Data.Adaptive. This can improve stability. Requires restart.\n---\n---```lua\n---default = true\n---```\n---@field enableAdaptiveLspServer? boolean\n---EXPERIMENTAL. Enables F# analyzers for custom code diagnostics. Requires restart.\n---@field enableAnalyzers? boolean\n---EXPERIMENTAL. Enables support for loading workspaces with MsBuild's ProjectGraph. This can improve load times. Requires restart.\n---@field enableMSBuildProjectGraph? boolean\n---Enables additional code lenses showing number of references of a function or value. Requires background services to be enabled.\n---\n---```lua\n---default = true\n---```\n---@field enableReferenceCodeLens? boolean\n---Enables TouchBar integration of build/run/debug buttons\n---\n---```lua\n---default = true\n---```\n---@field enableTouchBar? boolean\n---Enables the solution explorer view of the current workspace, which shows the workspace as MSBuild sees it\n---\n---```lua\n---default = true\n---```\n---@field enableTreeView? boolean\n---The names of custom analyzers that should not be executed.\n---\n---```lua\n---default = {}\n---```\n---@field excludeAnalyzers? any[]\n---Directories in the array are excluded from project file search. Requires restart.\n---\n---```lua\n---default = { \".git\", \"paket-files\", \".fable\", \"packages\", \"node_modules\" }\n---```\n---@field excludeProjectDirectories? any[]\n---Includes external (from unopened modules and namespaces) symbols in autocomplete\n---@field externalAutocomplete? boolean\n---@field fcs? _.lspconfig.settings.fsautocomplete.FSharp.Fcs\n---@field fsac? _.lspconfig.settings.fsautocomplete.FSharp.Fsac\n---An array of additional command line parameters to pass to FSI when it is started. See [the Microsoft documentation](https://docs.microsoft.com/en-us/dotnet/fsharp/language-reference/fsharp-interactive-options) for an exhaustive list.\n---@field fsiExtraParameters? any[]\n---The path to the F# Interactive tool used by Ionide-FSharp (When using .NET SDK scripts)\n---\n---```lua\n---default = \"\"\n---```\n---@field fsiSdkFilePath? string\n---When selecting an external symbols in autocomplete, insert the full name to the editor rather than open its module/namespace. Also allow filtering suggestions by typing its full name. \n---\n--- Requires `FSharp.externalAutocomplete` enabled.\n---@field fullNameExternalAutocomplete? boolean\n---Enables generation of `msbuild.binlog` files for project loading. It works only for fresh, non-cached project loading. Run `F#: Clear Project Cache` and `Developer: Reload Window` to force fresh loading of all projects. These files can be loaded and inspected using the [MSBuild Structured Logger](https://github.com/KirillOsenkov/MSBuildStructuredLog)\n---@field generateBinlog? boolean\n---The names of custom analyzers that should exclusively be executed, others should be ignored.\n---\n---```lua\n---default = {}\n---```\n---@field includeAnalyzers? any[]\n---The number of spaces used for indentation when generating code, e.g. for interface stubs\n---\n---```lua\n---default = 4\n---```\n---@field indentationSize? number\n---Controls whether the info panel replaces tooltips\n---@field infoPanelReplaceHover? boolean\n---Controls whether the info panel should be displayed at startup\n---@field infoPanelShowOnStartup? boolean\n---Controls whether the info panel should be locked at startup\n---@field infoPanelStartLocked? boolean\n---Controls when the info panel is updated\n---\n---```lua\n---default = \"onCursorMove\"\n---```\n---@field infoPanelUpdate? \"onCursorMove\" | \"onHover\" | \"both\" | \"none\"\n---@field inlayHints? _.lspconfig.settings.fsautocomplete.FSharp.InlayHints\n---@field inlineValues? _.lspconfig.settings.fsautocomplete.FSharp.InlineValues\n---Enables a codefix that generates missing interface members when inside of an interface implementation expression\n---\n---```lua\n---default = true\n---```\n---@field interfaceStubGeneration? boolean\n---The expression to fill in the right-hand side of interface members when generating missing members for an interface implementation expression\n---\n---```lua\n---default = 'failwith \"Not Implemented\"'\n---```\n---@field interfaceStubGenerationMethodBody? string\n---The name of the 'self' identifier in an interface member. For example, `this` in the expression `this.Member(x: int) = ()`\n---\n---```lua\n---default = \"this\"\n---```\n---@field interfaceStubGenerationObjectIdentifier? string\n---Includes keywords in autocomplete\n---\n---```lua\n---default = true\n---```\n---@field keywordsAutocomplete? boolean\n---@field lineLens? _.lspconfig.settings.fsautocomplete.FSharp.LineLens\n---Enables integration with [FSharpLint](https://fsprojects.github.io/FSharpLint/) for additional (user-defined) warnings\n---\n---```lua\n---default = true\n---```\n---@field linter? boolean\n---Automatically shows the MSBuild output panel when MSBuild functionality is invoked\n---@field msbuildAutoshow? boolean\n---@field notifications? _.lspconfig.settings.fsautocomplete.FSharp.Notifications\n---@field openTelemetry? _.lspconfig.settings.fsautocomplete.FSharp.OpenTelemetry\n---@field pipelineHints? _.lspconfig.settings.fsautocomplete.FSharp.PipelineHints\n---Enables a codefix that will generate missing record fields when inside a record construction expression\n---\n---```lua\n---default = true\n---```\n---@field recordStubGeneration? boolean\n---The expression to fill in the right-hand side of record fields when generating missing fields for a record construction expression\n---\n---```lua\n---default = 'failwith \"Not Implemented\"'\n---```\n---@field recordStubGenerationBody? string\n---Enables a codefix that will suggest namespaces or module to open when a name is not recognized\n---\n---```lua\n---default = true\n---```\n---@field resolveNamespaces? boolean\n---If enabled, the current file will be saved before sending the last selection to FSI for evaluation\n---@field saveOnSendLastSelection? boolean\n---Automatically shows solution explorer on plugin startup\n---@field showExplorerOnStartup? boolean\n---Set the activity (left bar) where the project explorer view will be displayed. If `explorer`, then the project explorer will be a collapsible tab in the main explorer view, a sibling to the file system explorer. If `fsharp`, a new activity with the F# logo will be added and the project explorer will be rendered in this activity.Requires restart.\n---\n---```lua\n---default = \"fsharp\"\n---```\n---@field showProjectExplorerIn? \"explorer\" | \"fsharp\"\n---Enables detection of cases when names of functions and values can be simplified\n---\n---```lua\n---default = true\n---```\n---@field simplifyNameAnalyzer? boolean\n---A set of regex patterns to exclude from the simplify name analyzer\n---\n---```lua\n---default = { \".*\\\\.g\\\\.fs\", \".*\\\\.cg\\\\.fs\" }\n---```\n---@field simplifyNameAnalyzerExclusions? string[]\n---Enables smart indent feature\n---@field smartIndent? boolean\n---Allow Ionide to prompt whenever internal data files aren't included in your project's .gitignore\n---\n---```lua\n---default = true\n---```\n---@field suggestGitignore? boolean\n---Allow Ionide to prompt to use SdkScripts\n---\n---```lua\n---default = true\n---```\n---@field suggestSdkScripts? boolean\n---@field trace? _.lspconfig.settings.fsautocomplete.FSharp.Trace\n---Enables a codefix that generates missing union cases when in a match expression\n---\n---```lua\n---default = true\n---```\n---@field unionCaseStubGeneration? boolean\n---The expression to fill in the right-hand side of match cases when generating missing cases for a match on a discriminated union\n---\n---```lua\n---default = 'failwith \"Not Implemented\"'\n---```\n---@field unionCaseStubGenerationBody? string\n---Enables detection of unnecessary parentheses\n---\n---```lua\n---default = true\n---```\n---@field unnecessaryParenthesesAnalyzer? boolean\n---A set of regex patterns to exclude from the unnecessary parentheses analyzer\n---\n---```lua\n---default = { \".*\\\\.g\\\\.fs\", \".*\\\\.cg\\\\.fs\" }\n---```\n---@field unnecessaryParenthesesAnalyzerExclusions? string[]\n---Enables detection of unused declarations\n---\n---```lua\n---default = true\n---```\n---@field unusedDeclarationsAnalyzer? boolean\n---A set of regex patterns to exclude from the unused declarations analyzer\n---\n---```lua\n---default = { \".*\\\\.g\\\\.fs\", \".*\\\\.cg\\\\.fs\" }\n---```\n---@field unusedDeclarationsAnalyzerExclusions? string[]\n---Enables detection of unused opens\n---\n---```lua\n---default = true\n---```\n---@field unusedOpensAnalyzer? boolean\n---A set of regex patterns to exclude from the unused opens analyzer\n---\n---```lua\n---default = { \".*\\\\.g\\\\.fs\", \".*\\\\.cg\\\\.fs\" }\n---```\n---@field unusedOpensAnalyzerExclusions? string[]\n---Logs additional information to F# output channel. This is equivalent to passing the `--verbose` flag to FSAC. Requires restart.\n---@field verboseLogging? boolean\n---The deep level of directory hierarchy when searching for sln/projects\n---\n---```lua\n---default = 4\n---```\n---@field workspaceModePeekDeepLevel? integer\n---Path to the directory or solution file that should be loaded as a workspace. If set, no workspace probing or discovery is done by Ionide at all.\n---@field workspacePath? string\n\n---@class _.lspconfig.settings.fsautocomplete.Fsharp.Fsac.Gc\n---Specifies whether to [affinitize](https://learn.microsoft.com/en-us/dotnet/core/runtime-config/garbage-collector#affinitize) garbage collection threads with processors. To affinitize a GC thread means that it can only run on its specific CPU.. Applies to server garbage collection only. See [GCNoAffinitize](https://learn.microsoft.com/en-us/dotnet/framework/configure-apps/file-schema/runtime/gcnoaffinitize-element#remarks) for more details. [Only available on .NET 7 or higher](https://github.com/ionide/ionide-vscode-fsharp/issues/1899#issuecomment-1649009462). Requires restart. If FSAC is run on .NET 8 runtimes, this will be set by default. On .NET 9 with DATAS enabled, this will not be set.\n---@field noAffinitize? boolean\n\n---@class _.lspconfig.settings.fsautocomplete.Fsharp.Fsac\n---@field gc? _.lspconfig.settings.fsautocomplete.Fsharp.Fsac.Gc\n\n---@class _.lspconfig.settings.fsautocomplete.Fsharp\n---@field fsac? _.lspconfig.settings.fsautocomplete.Fsharp.Fsac\n\n---@class lspconfig.settings.fsautocomplete\n---@field FSharp? _.lspconfig.settings.fsautocomplete.FSharp\n---@field Fsharp? _.lspconfig.settings.fsautocomplete.Fsharp\n"
  },
  {
    "path": "lua/lspconfig/types/lsp/grammarly.lua",
    "content": "---@meta\n\n---@class _.lspconfig.settings.grammarly.Grammarly.Config.SuggestionCategories\n---Flags use of conjunctions such as \"but\" and \"and\" at the beginning of sentences.\n---\n---```lua\n---default = \"off\"\n---```\n---@field conjugationAtStartOfSentence? \"on\" | \"off\"\n---Suggests ways to sound more natural and fluent.\n---\n---```lua\n---default = \"on\"\n---```\n---@field fluency? \"on\" | \"off\"\n---Flags use of personal pronouns such as \"I\" and \"you\" in academic writing.\n---\n---```lua\n---default = \"off\"\n---```\n---@field informalPronounsAcademic? \"on\" | \"off\"\n---Suggests adding missing spacing after a numeral when writing times.\n---\n---```lua\n---default = \"on\"\n---```\n---@field missingSpaces? \"on\" | \"off\"\n---Flags a series of nouns that modify a final noun.\n---\n---```lua\n---default = \"on\"\n---```\n---@field nounStrings? \"on\" | \"off\"\n---Suggests spelling out numbers at the beginning of sentences.\n---\n---```lua\n---default = \"on\"\n---```\n---@field numbersBeginningSentences? \"on\" | \"off\"\n---Suggests spelling out numbers zero through ten.\n---\n---```lua\n---default = \"on\"\n---```\n---@field numbersZeroThroughTen? \"on\" | \"off\"\n---Suggests adding the Oxford comma after the second-to-last item in a list of things.\n---\n---```lua\n---default = \"off\"\n---```\n---@field oxfordComma? \"on\" | \"off\"\n---Flags use of passive voice.\n---\n---```lua\n---default = \"off\"\n---```\n---@field passiveVoice? \"on\" | \"off\"\n---Suggests using person-first language to refer respectfully to an individual with a disability.\n---\n---```lua\n---default = \"on\"\n---```\n---@field personFirstLanguage? \"on\" | \"off\"\n---Suggests alternatives to potentially biased language related to older adults.\n---\n---```lua\n---default = \"on\"\n---```\n---@field possiblyBiasedLanguageAgeRelated? \"on\" | \"off\"\n---Suggests alternatives to potentially ableist language.\n---\n---```lua\n---default = \"on\"\n---```\n---@field possiblyBiasedLanguageDisabilityRelated? \"on\" | \"off\"\n---Suggests alternatives to potentially biased language related to parenting and family systems.\n---\n---```lua\n---default = \"on\"\n---```\n---@field possiblyBiasedLanguageFamilyRelated? \"on\" | \"off\"\n---Suggests alternatives to potentially gender-biased and non-inclusive phrasing.\n---\n---```lua\n---default = \"on\"\n---```\n---@field possiblyBiasedLanguageGenderRelated? \"on\" | \"off\"\n---Suggests alternatives to language related to human slavery.\n---\n---```lua\n---default = \"on\"\n---```\n---@field possiblyBiasedLanguageHumanRights? \"on\" | \"off\"\n---Suggests alternatives to terms with origins in the institution of slavery.\n---\n---```lua\n---default = \"on\"\n---```\n---@field possiblyBiasedLanguageHumanRightsRelated? \"on\" | \"off\"\n---Flags LGBTQIA+-related terms that may be seen as biased, outdated, or disrespectful in some contexts.\n---\n---```lua\n---default = \"on\"\n---```\n---@field possiblyBiasedLanguageLGBTQIARelated? \"on\" | \"off\"\n---Suggests alternatives to potentially biased language related to race and ethnicity.\n---\n---```lua\n---default = \"on\"\n---```\n---@field possiblyBiasedLanguageRaceEthnicityRelated? \"on\" | \"off\"\n---Suggests alternatives to language that may be considered politically incorrect.\n---\n---```lua\n---default = \"on\"\n---```\n---@field possiblyPoliticallyIncorrectLanguage? \"on\" | \"off\"\n---Flags use of prepositions such as \"with\" and \"in\" at the end of sentences.\n---\n---```lua\n---default = \"off\"\n---```\n---@field prepositionAtTheEndOfSentence? \"on\" | \"off\"\n---Suggests placing punctuation before closing quotation marks.\n---\n---```lua\n---default = \"on\"\n---```\n---@field punctuationWithQuotation? \"on\" | \"off\"\n---Flags long, complicated sentences that could potentially confuse your reader.\n---\n---```lua\n---default = \"on\"\n---```\n---@field readabilityFillerWords? \"on\" | \"off\"\n---Suggests splitting long, complicated sentences that could potentially confuse your reader.\n---\n---```lua\n---default = \"on\"\n---```\n---@field readabilityTransforms? \"on\" | \"off\"\n---Flags series of sentences that follow the same pattern.\n---\n---```lua\n---default = \"on\"\n---```\n---@field sentenceVariety? \"on\" | \"off\"\n---Suggests removing extra spaces surrounding a slash.\n---\n---```lua\n---default = \"on\"\n---```\n---@field spacesSurroundingSlash? \"on\" | \"off\"\n---Suggests rewriting split infinitives so that an adverb doesn't come between \"to\" and the verb.\n---\n---```lua\n---default = \"on\"\n---```\n---@field splitInfinitive? \"on\" | \"off\"\n---Suggests completing all incomplete sentences, including stylistic sentence fragments that may be intentional.\n---\n---```lua\n---default = \"off\"\n---```\n---@field stylisticFragments? \"on\" | \"off\"\n---Flags unnecessary use of ellipses (...).\n---\n---```lua\n---default = \"off\"\n---```\n---@field unnecessaryEllipses? \"on\" | \"off\"\n---Suggests alternatives to words that occur frequently in the same paragraph.\n---\n---```lua\n---default = \"on\"\n---```\n---@field variety? \"on\" | \"off\"\n---Suggests alternatives to bland and overused words such as \"good\" and \"nice\".\n---\n---```lua\n---default = \"on\"\n---```\n---@field vocabulary? \"on\" | \"off\"\n\n---@class _.lspconfig.settings.grammarly.Grammarly.Config.Suggestions\n---Flags use of conjunctions such as 'but' and 'and' at the beginning of sentences.\n---@field ConjunctionAtStartOfSentence? true | false\n---Suggests ways to sound more natural and fluent.\n---@field Fluency? true | false\n---Flags use of personal pronouns such as 'I' and 'you' in academic writing.\n---@field InformalPronounsAcademic? true | false\n---Suggests adding missing spacing after a numeral when writing times.\n---@field MissingSpaces? true | false\n---Flags a series of nouns that modify a final noun.\n---@field NounStrings? true | false\n---Suggests spelling out numbers at the beginning of sentences.\n---@field NumbersBeginningSentences? true | false\n---Suggests spelling out numbers zero through ten.\n---@field NumbersZeroThroughTen? true | false\n---Suggests adding the Oxford comma after the second-to-last item in a list of things.\n---@field OxfordComma? true | false\n---Flags use of passive voice.\n---@field PassiveVoice? true | false\n---Suggests using person-first language to refer respectfully to an individual with a disability.\n---@field PersonFirstLanguage? true | false\n---Suggests alternatives to potentially biased language related to older adults.\n---@field PossiblyBiasedLanguageAgeRelated? true | false\n---Suggests alternatives to potentially ableist language.\n---@field PossiblyBiasedLanguageDisabilityRelated? true | false\n---Suggests alternatives to potentially biased language related to parenting and family systems.\n---@field PossiblyBiasedLanguageFamilyRelated? true | false\n---Suggests alternatives to potentially gender-biased and non-inclusive phrasing.\n---@field PossiblyBiasedLanguageGenderRelated? true | false\n---Suggests alternatives to language related to human slavery.\n---@field PossiblyBiasedLanguageHumanRights? true | false\n---Suggests alternatives to terms with origins in the institution of slavery.\n---@field PossiblyBiasedLanguageHumanRightsRelated? true | false\n---Flags LGBTQIA+-related terms that may be seen as biased, outdated, or disrespectful in some contexts.\n---@field PossiblyBiasedLanguageLgbtqiaRelated? true | false\n---Suggests alternatives to potentially biased language related to race and ethnicity.\n---@field PossiblyBiasedLanguageRaceEthnicityRelated? true | false\n---Suggests alternatives to language that may be considered politically incorrect.\n---@field PossiblyPoliticallyIncorrectLanguage? true | false\n---Flags use of prepositions such as 'with' and 'in' at the end of sentences.\n---@field PrepositionAtTheEndOfSentence? true | false\n---Suggests placing punctuation before closing quotation marks.\n---@field PunctuationWithQuotation? true | false\n---Flags long, complicated sentences that could potentially confuse your reader.\n---@field ReadabilityFillerwords? true | false\n---Suggests splitting long, complicated sentences that could potentially confuse your reader.\n---@field ReadabilityTransforms? true | false\n---Flags series of sentences that follow the same pattern.\n---@field SentenceVariety? true | false\n---Suggests removing extra spaces surrounding a slash.\n---@field SpacesSurroundingSlash? true | false\n---Suggests rewriting split infinitives so that an adverb doesn't come between 'to' and the verb.\n---@field SplitInfinitive? true | false\n---Suggests completing all incomplete sentences, including stylistic sentence fragments that may be intentional.\n---@field StylisticFragments? true | false\n---Flags unnecessary use of ellipses (...).\n---@field UnnecessaryEllipses? true | false\n---Suggests alternatives to words that occur frequently in the same paragraph.\n---@field Variety? true | false\n---Suggests alternatives to bland and overused words such as 'good' and 'nice'.\n---@field Vocabulary? true | false\n\n---@class _.lspconfig.settings.grammarly.Grammarly.Config\n---Specific variety of English being written. See [this article](https://support.grammarly.com/hc/en-us/articles/115000089992-Select-between-British-English-American-English-Canadian-English-and-Australian-English) for differences.\n---\n---```lua\n---default = \"auto-text\"\n---```\n---@field documentDialect? \"american\" | \"australian\" | \"british\" | \"canadian\" | \"auto-text\"\n---The style or type of writing to be checked. See [What is domain/document type](https://support.grammarly.com/hc/en-us/articles/115000091472-What-is-domain-document-type-)?\n---\n---```lua\n---default = \"general\"\n---```\n---@field documentDomain? \"academic\" | \"business\" | \"general\" | \"mail\" | \"casual\" | \"creative\"\n---@field suggestionCategories? _.lspconfig.settings.grammarly.Grammarly.Config.SuggestionCategories\n---@field suggestions? _.lspconfig.settings.grammarly.Grammarly.Config.Suggestions\n\n---@class _.lspconfig.settings.grammarly.Grammarly.Files\n---Configure [glob patterns](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options) for excluding files and folders.\n---\n---```lua\n---default = {}\n---```\n---@field exclude string[]\n---Configure [glob patterns](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options) for including files and folders.\n---\n---```lua\n---default = { \"**/readme.md\", \"**/README.md\", \"**/*.txt\" }\n---```\n---@field include string[]\n\n---@class _.lspconfig.settings.grammarly.Grammarly\n---@field config? _.lspconfig.settings.grammarly.Grammarly.Config\n---@field files? _.lspconfig.settings.grammarly.Grammarly.Files\n---A glob pattern, like `*.{md,txt}` for file scheme.\n---\n---```lua\n---default = { \"**/readme.md\", \"**/README.md\", \"**/*.txt\" }\n---```\n---@field patterns string[]\n---Filter documents to be checked with Grammarly.\n---\n---```lua\n---default = {}\n---```\n---@field selectors table[]\n---Start text checking session in paused state\n---@field startTextCheckInPausedState? boolean\n\n---@class lspconfig.settings.grammarly\n---@field grammarly? _.lspconfig.settings.grammarly.Grammarly\n"
  },
  {
    "path": "lua/lspconfig/types/lsp/hhvm.lua",
    "content": "---@meta\n\n---@class _.lspconfig.settings.hhvm.Hack.Remote.Docker\n---Name of the local Docker container to run the language tools in\n---@field containerName? string\n\n---@class _.lspconfig.settings.hhvm.Hack.Remote.Ssh\n---Additional command line options to pass when establishing the SSH connection\n---@field flags? any[]\n---Address for the remote development server to connect to (in the format `[user@]hostname`)\n---@field host? string\n\n---@class _.lspconfig.settings.hhvm.Hack.Remote\n---@field docker? _.lspconfig.settings.hhvm.Hack.Remote.Docker\n---Run the Hack language tools on an external host\n---@field enabled? boolean\n---@field ssh? _.lspconfig.settings.hhvm.Hack.Remote.Ssh\n---The remote connection method\n---@field type? \"ssh\" | \"docker\"\n---Absolute location of workspace root in the remote file system\n---@field workspacePath? string\n\n---@class _.lspconfig.settings.hhvm.Hack.Trace\n---Traces the communication between VS Code and the Hack & HHAST language servers\n---\n---```lua\n---default = \"off\"\n---```\n---@field server? \"off\" | \"messages\" | \"verbose\"\n\n---@class _.lspconfig.settings.hhvm.Hack\n---Absolute path to the hh_client executable. This can be left empty if hh_client is already in your environment $PATH.\n---\n---```lua\n---default = \"hh_client\"\n---```\n---@field clientPath? string\n---Enable calculation of Hack type coverage percentage for every file and display in status bar.\n---@field enableCoverageCheck? boolean\n---Optional list of arguments passed to hhast-lint executable\n---\n---```lua\n---default = {}\n---```\n---@field hhastArgs? string[]\n---Whether to lint the entire project or just the open files\n---@field hhastLintMode? \"whole-project\" | \"open-files\"\n---Use an alternate `hhast-lint` path. Can be abolute or relative to workspace root.\n---\n---```lua\n---default = \"vendor/bin/hhast-lint\"\n---```\n---@field hhastPath? string\n---@field remote? _.lspconfig.settings.hhvm.Hack.Remote\n---@field trace? _.lspconfig.settings.hhvm.Hack.Trace\n---Enable linting (needs [HHAST](https://github.com/hhvm/hhast) library set up and configured in project)\n---\n---```lua\n---default = true\n---```\n---@field useHhast? boolean\n---Absolute path to the workspace root directory. This will be the VS Code workspace root by default, but can be changed if the project is in a subdirectory or mounted in a Docker container.\n---@field workspaceRootPath? string\n\n---@class lspconfig.settings.hhvm\n---@field hack? _.lspconfig.settings.hhvm.Hack\n"
  },
  {
    "path": "lua/lspconfig/types/lsp/hie.lua",
    "content": "---@meta\n\n---@class _.lspconfig.settings.hie.Haskell.Plugin.AlternateNumberFormat\n---Enables alternateNumberFormat plugin\n---\n---```lua\n---default = true\n---```\n---@field globalOn? boolean\n\n---@class _.lspconfig.settings.hie.Haskell.Plugin.Cabal\n---Enables cabal code actions\n---\n---```lua\n---default = true\n---```\n---@field codeActionsOn? boolean\n---Enables cabal completions\n---\n---```lua\n---default = true\n---```\n---@field completionOn? boolean\n---Enables cabal diagnostics\n---\n---```lua\n---default = true\n---```\n---@field diagnosticsOn? boolean\n---Enables cabal hover\n---\n---```lua\n---default = true\n---```\n---@field hoverOn? boolean\n---Enables cabal symbols\n---\n---```lua\n---default = true\n---```\n---@field symbolsOn? boolean\n\n---@class _.lspconfig.settings.hie.Haskell.Plugin.CabalFmt.Config\n---Set path to 'cabal-fmt' executable\n---\n---```lua\n---default = \"cabal-fmt\"\n---```\n---@field path? string\n\n---@class _.lspconfig.settings.hie.Haskell.Plugin.CabalFmt\n---@field config? _.lspconfig.settings.hie.Haskell.Plugin.CabalFmt.Config\n\n---@class _.lspconfig.settings.hie.Haskell.Plugin.CabalGild.Config\n---Set path to 'cabal-gild' executable\n---\n---```lua\n---default = \"cabal-gild\"\n---```\n---@field path? string\n\n---@class _.lspconfig.settings.hie.Haskell.Plugin.CabalGild\n---@field config? _.lspconfig.settings.hie.Haskell.Plugin.CabalGild.Config\n\n---@class _.lspconfig.settings.hie.Haskell.Plugin.CabalHaskellIntegration\n---Enables cabalHaskellIntegration plugin\n---\n---```lua\n---default = true\n---```\n---@field globalOn? boolean\n\n---@class _.lspconfig.settings.hie.Haskell.Plugin.CallHierarchy\n---Enables callHierarchy plugin\n---\n---```lua\n---default = true\n---```\n---@field globalOn? boolean\n\n---@class _.lspconfig.settings.hie.Haskell.Plugin.ChangeTypeSignature\n---Enables changeTypeSignature plugin\n---\n---```lua\n---default = true\n---```\n---@field globalOn? boolean\n\n---@class _.lspconfig.settings.hie.Haskell.Plugin.Class\n---Enables class code actions\n---\n---```lua\n---default = true\n---```\n---@field codeActionsOn? boolean\n---Enables class code lenses\n---\n---```lua\n---default = true\n---```\n---@field codeLensOn? boolean\n\n---@class _.lspconfig.settings.hie.Haskell.Plugin.Eval.Config\n---Enable the diff output (WAS/NOW) of eval lenses\n---\n---```lua\n---default = true\n---```\n---@field diff? boolean\n---Enable marking exceptions with `*** Exception:` similarly to doctest and GHCi.\n---@field exception? boolean\n\n---@class _.lspconfig.settings.hie.Haskell.Plugin.Eval\n---Enables eval code actions\n---\n---```lua\n---default = true\n---```\n---@field codeActionsOn? boolean\n---Enables eval code lenses\n---\n---```lua\n---default = true\n---```\n---@field codeLensOn? boolean\n---@field config? _.lspconfig.settings.hie.Haskell.Plugin.Eval.Config\n\n---@class _.lspconfig.settings.hie.Haskell.Plugin.ExplicitFields\n---Enables explicit-fields code actions\n---\n---```lua\n---default = true\n---```\n---@field codeActionsOn? boolean\n---Enables explicit-fields inlay hints\n---\n---```lua\n---default = true\n---```\n---@field inlayHintsOn? boolean\n\n---@class _.lspconfig.settings.hie.Haskell.Plugin.ExplicitFixity\n---Enables explicit-fixity plugin\n---\n---```lua\n---default = true\n---```\n---@field globalOn? boolean\n\n---@class _.lspconfig.settings.hie.Haskell.Plugin.Fourmolu.Config\n---Call out to an external \"fourmolu\" executable, rather than using the bundled library.\n---@field external? boolean\n---Set path to executable (for \"external\" mode).\n---\n---```lua\n---default = \"fourmolu\"\n---```\n---@field path? string\n\n---@class _.lspconfig.settings.hie.Haskell.Plugin.Fourmolu\n---@field config? _.lspconfig.settings.hie.Haskell.Plugin.Fourmolu.Config\n\n---@class _.lspconfig.settings.hie.Haskell.Plugin.Gadt\n---Enables gadt plugin\n---\n---```lua\n---default = true\n---```\n---@field globalOn? boolean\n\n---@class _.lspconfig.settings.hie.Haskell.Plugin.GhcideCodeActionsBindings\n---Enables ghcide-code-actions-bindings plugin\n---\n---```lua\n---default = true\n---```\n---@field globalOn? boolean\n\n---@class _.lspconfig.settings.hie.Haskell.Plugin.GhcideCodeActionsFillHoles\n---Enables ghcide-code-actions-fill-holes plugin\n---\n---```lua\n---default = true\n---```\n---@field globalOn? boolean\n\n---@class _.lspconfig.settings.hie.Haskell.Plugin.GhcideCodeActionsImportsExports\n---Enables ghcide-code-actions-imports-exports plugin\n---\n---```lua\n---default = true\n---```\n---@field globalOn? boolean\n\n---@class _.lspconfig.settings.hie.Haskell.Plugin.GhcideCodeActionsTypeSignatures\n---Enables ghcide-code-actions-type-signatures plugin\n---\n---```lua\n---default = true\n---```\n---@field globalOn? boolean\n\n---@class _.lspconfig.settings.hie.Haskell.Plugin.GhcideCompletions.Config\n---Extends the import list automatically when completing a out-of-scope identifier\n---\n---```lua\n---default = true\n---```\n---@field autoExtendOn? boolean\n---Inserts snippets when using code completions\n---\n---```lua\n---default = true\n---```\n---@field snippetsOn? boolean\n\n---@class _.lspconfig.settings.hie.Haskell.Plugin.GhcideCompletions\n---@field config? _.lspconfig.settings.hie.Haskell.Plugin.GhcideCompletions.Config\n---Enables ghcide-completions plugin\n---\n---```lua\n---default = true\n---```\n---@field globalOn? boolean\n\n---@class _.lspconfig.settings.hie.Haskell.Plugin.GhcideHoverAndSymbols\n---Enables ghcide-hover-and-symbols hover\n---\n---```lua\n---default = true\n---```\n---@field hoverOn? boolean\n---Enables ghcide-hover-and-symbols symbols\n---\n---```lua\n---default = true\n---```\n---@field symbolsOn? boolean\n\n---@class _.lspconfig.settings.hie.Haskell.Plugin.GhcideTypeLenses.Config\n---Control how type lenses are shown\n---\n---```lua\n---default = \"always\"\n---```\n---@field mode? \"always\" | \"exported\" | \"diagnostics\"\n\n---@class _.lspconfig.settings.hie.Haskell.Plugin.GhcideTypeLenses\n---@field config? _.lspconfig.settings.hie.Haskell.Plugin.GhcideTypeLenses.Config\n---Enables ghcide-type-lenses plugin\n---\n---```lua\n---default = true\n---```\n---@field globalOn? boolean\n\n---@class _.lspconfig.settings.hie.Haskell.Plugin.Hlint.Config\n---Flags used by hlint\n---\n---```lua\n---default = {}\n---```\n---@field flags? any[]\n\n---@class _.lspconfig.settings.hie.Haskell.Plugin.Hlint\n---Enables hlint code actions\n---\n---```lua\n---default = true\n---```\n---@field codeActionsOn? boolean\n---@field config? _.lspconfig.settings.hie.Haskell.Plugin.Hlint.Config\n---Enables hlint diagnostics\n---\n---```lua\n---default = true\n---```\n---@field diagnosticsOn? boolean\n\n---@class _.lspconfig.settings.hie.Haskell.Plugin.ImportLens\n---Enables importLens code actions\n---\n---```lua\n---default = true\n---```\n---@field codeActionsOn? boolean\n---Enables importLens code lenses\n---\n---```lua\n---default = true\n---```\n---@field codeLensOn? boolean\n---Enables importLens inlay hints\n---\n---```lua\n---default = true\n---```\n---@field inlayHintsOn? boolean\n\n---@class _.lspconfig.settings.hie.Haskell.Plugin.ModuleName\n---Enables moduleName plugin\n---\n---```lua\n---default = true\n---```\n---@field globalOn? boolean\n\n---@class _.lspconfig.settings.hie.Haskell.Plugin.Ormolu.Config\n---Call out to an external \"ormolu\" executable, rather than using the bundled library\n---@field external? boolean\n\n---@class _.lspconfig.settings.hie.Haskell.Plugin.Ormolu\n---@field config? _.lspconfig.settings.hie.Haskell.Plugin.Ormolu.Config\n\n---@class _.lspconfig.settings.hie.Haskell.Plugin.OverloadedRecordDot\n---Enables overloaded-record-dot plugin\n---\n---```lua\n---default = true\n---```\n---@field globalOn? boolean\n\n---@class _.lspconfig.settings.hie.Haskell.Plugin.PragmasCompletion\n---Enables pragmas-completion plugin\n---\n---```lua\n---default = true\n---```\n---@field globalOn? boolean\n\n---@class _.lspconfig.settings.hie.Haskell.Plugin.PragmasDisable\n---Enables pragmas-disable plugin\n---\n---```lua\n---default = true\n---```\n---@field globalOn? boolean\n\n---@class _.lspconfig.settings.hie.Haskell.Plugin.PragmasSuggest\n---Enables pragmas-suggest plugin\n---\n---```lua\n---default = true\n---```\n---@field globalOn? boolean\n\n---@class _.lspconfig.settings.hie.Haskell.Plugin.QualifyImportedNames\n---Enables qualifyImportedNames plugin\n---\n---```lua\n---default = true\n---```\n---@field globalOn? boolean\n\n---@class _.lspconfig.settings.hie.Haskell.Plugin.Rename.Config\n---Enable experimental cross-module renaming\n---@field crossModule? boolean\n\n---@class _.lspconfig.settings.hie.Haskell.Plugin.Rename\n---@field config? _.lspconfig.settings.hie.Haskell.Plugin.Rename.Config\n---Enables rename plugin\n---\n---```lua\n---default = true\n---```\n---@field globalOn? boolean\n\n---@class _.lspconfig.settings.hie.Haskell.Plugin.Retrie\n---Enables retrie plugin\n---\n---```lua\n---default = true\n---```\n---@field globalOn? boolean\n\n---@class _.lspconfig.settings.hie.Haskell.Plugin.SemanticTokens.Config\n---LSP semantic token type to use for typeclass methods\n---\n---```lua\n---default = \"method\"\n---```\n---@field classMethodToken? \"namespace\" | \"type\" | \"class\" | \"enum\" | \"interface\" | \"struct\" | \"typeParameter\" | \"parameter\" | \"variable\" | \"property\" | \"enumMember\" | \"event\" | \"function\" | \"method\" | \"macro\" | \"keyword\" | \"modifier\" | \"comment\" | \"string\" | \"number\" | \"regexp\" | \"operator\" | \"decorator\"\n---LSP semantic token type to use for typeclasses\n---\n---```lua\n---default = \"class\"\n---```\n---@field classToken? \"namespace\" | \"type\" | \"class\" | \"enum\" | \"interface\" | \"struct\" | \"typeParameter\" | \"parameter\" | \"variable\" | \"property\" | \"enumMember\" | \"event\" | \"function\" | \"method\" | \"macro\" | \"keyword\" | \"modifier\" | \"comment\" | \"string\" | \"number\" | \"regexp\" | \"operator\" | \"decorator\"\n---LSP semantic token type to use for data constructors\n---\n---```lua\n---default = \"enumMember\"\n---```\n---@field dataConstructorToken? \"namespace\" | \"type\" | \"class\" | \"enum\" | \"interface\" | \"struct\" | \"typeParameter\" | \"parameter\" | \"variable\" | \"property\" | \"enumMember\" | \"event\" | \"function\" | \"method\" | \"macro\" | \"keyword\" | \"modifier\" | \"comment\" | \"string\" | \"number\" | \"regexp\" | \"operator\" | \"decorator\"\n---LSP semantic token type to use for functions\n---\n---```lua\n---default = \"function\"\n---```\n---@field functionToken? \"namespace\" | \"type\" | \"class\" | \"enum\" | \"interface\" | \"struct\" | \"typeParameter\" | \"parameter\" | \"variable\" | \"property\" | \"enumMember\" | \"event\" | \"function\" | \"method\" | \"macro\" | \"keyword\" | \"modifier\" | \"comment\" | \"string\" | \"number\" | \"regexp\" | \"operator\" | \"decorator\"\n---LSP semantic token type to use for modules\n---\n---```lua\n---default = \"namespace\"\n---```\n---@field moduleToken? \"namespace\" | \"type\" | \"class\" | \"enum\" | \"interface\" | \"struct\" | \"typeParameter\" | \"parameter\" | \"variable\" | \"property\" | \"enumMember\" | \"event\" | \"function\" | \"method\" | \"macro\" | \"keyword\" | \"modifier\" | \"comment\" | \"string\" | \"number\" | \"regexp\" | \"operator\" | \"decorator\"\n---LSP semantic token type to use for operators\n---\n---```lua\n---default = \"operator\"\n---```\n---@field operatorToken? \"namespace\" | \"type\" | \"class\" | \"enum\" | \"interface\" | \"struct\" | \"typeParameter\" | \"parameter\" | \"variable\" | \"property\" | \"enumMember\" | \"event\" | \"function\" | \"method\" | \"macro\" | \"keyword\" | \"modifier\" | \"comment\" | \"string\" | \"number\" | \"regexp\" | \"operator\" | \"decorator\"\n---LSP semantic token type to use for pattern synonyms\n---\n---```lua\n---default = \"macro\"\n---```\n---@field patternSynonymToken? \"namespace\" | \"type\" | \"class\" | \"enum\" | \"interface\" | \"struct\" | \"typeParameter\" | \"parameter\" | \"variable\" | \"property\" | \"enumMember\" | \"event\" | \"function\" | \"method\" | \"macro\" | \"keyword\" | \"modifier\" | \"comment\" | \"string\" | \"number\" | \"regexp\" | \"operator\" | \"decorator\"\n---LSP semantic token type to use for record fields\n---\n---```lua\n---default = \"property\"\n---```\n---@field recordFieldToken? \"namespace\" | \"type\" | \"class\" | \"enum\" | \"interface\" | \"struct\" | \"typeParameter\" | \"parameter\" | \"variable\" | \"property\" | \"enumMember\" | \"event\" | \"function\" | \"method\" | \"macro\" | \"keyword\" | \"modifier\" | \"comment\" | \"string\" | \"number\" | \"regexp\" | \"operator\" | \"decorator\"\n---LSP semantic token type to use for type constructors\n---\n---```lua\n---default = \"enum\"\n---```\n---@field typeConstructorToken? \"namespace\" | \"type\" | \"class\" | \"enum\" | \"interface\" | \"struct\" | \"typeParameter\" | \"parameter\" | \"variable\" | \"property\" | \"enumMember\" | \"event\" | \"function\" | \"method\" | \"macro\" | \"keyword\" | \"modifier\" | \"comment\" | \"string\" | \"number\" | \"regexp\" | \"operator\" | \"decorator\"\n---LSP semantic token type to use for type families\n---\n---```lua\n---default = \"interface\"\n---```\n---@field typeFamilyToken? \"namespace\" | \"type\" | \"class\" | \"enum\" | \"interface\" | \"struct\" | \"typeParameter\" | \"parameter\" | \"variable\" | \"property\" | \"enumMember\" | \"event\" | \"function\" | \"method\" | \"macro\" | \"keyword\" | \"modifier\" | \"comment\" | \"string\" | \"number\" | \"regexp\" | \"operator\" | \"decorator\"\n---LSP semantic token type to use for type synonyms\n---\n---```lua\n---default = \"type\"\n---```\n---@field typeSynonymToken? \"namespace\" | \"type\" | \"class\" | \"enum\" | \"interface\" | \"struct\" | \"typeParameter\" | \"parameter\" | \"variable\" | \"property\" | \"enumMember\" | \"event\" | \"function\" | \"method\" | \"macro\" | \"keyword\" | \"modifier\" | \"comment\" | \"string\" | \"number\" | \"regexp\" | \"operator\" | \"decorator\"\n---LSP semantic token type to use for type variables\n---\n---```lua\n---default = \"typeParameter\"\n---```\n---@field typeVariableToken? \"namespace\" | \"type\" | \"class\" | \"enum\" | \"interface\" | \"struct\" | \"typeParameter\" | \"parameter\" | \"variable\" | \"property\" | \"enumMember\" | \"event\" | \"function\" | \"method\" | \"macro\" | \"keyword\" | \"modifier\" | \"comment\" | \"string\" | \"number\" | \"regexp\" | \"operator\" | \"decorator\"\n---LSP semantic token type to use for variables\n---\n---```lua\n---default = \"variable\"\n---```\n---@field variableToken? \"namespace\" | \"type\" | \"class\" | \"enum\" | \"interface\" | \"struct\" | \"typeParameter\" | \"parameter\" | \"variable\" | \"property\" | \"enumMember\" | \"event\" | \"function\" | \"method\" | \"macro\" | \"keyword\" | \"modifier\" | \"comment\" | \"string\" | \"number\" | \"regexp\" | \"operator\" | \"decorator\"\n\n---@class _.lspconfig.settings.hie.Haskell.Plugin.SemanticTokens\n---@field config? _.lspconfig.settings.hie.Haskell.Plugin.SemanticTokens.Config\n---Enables semanticTokens plugin\n---@field globalOn? boolean\n\n---@class _.lspconfig.settings.hie.Haskell.Plugin.SignatureHelp\n---Enables signatureHelp plugin\n---\n---```lua\n---default = true\n---```\n---@field globalOn? boolean\n\n---@class _.lspconfig.settings.hie.Haskell.Plugin.Splice\n---Enables splice plugin\n---\n---```lua\n---default = true\n---```\n---@field globalOn? boolean\n\n---@class _.lspconfig.settings.hie.Haskell.Plugin.Stan\n---Enables stan plugin\n---@field globalOn? boolean\n\n---@class _.lspconfig.settings.hie.Haskell.Plugin\n---@field alternateNumberFormat? _.lspconfig.settings.hie.Haskell.Plugin.AlternateNumberFormat\n---@field cabal? _.lspconfig.settings.hie.Haskell.Plugin.Cabal\n---@field [\"cabal-fmt\"]? _.lspconfig.settings.hie.Haskell.Plugin.CabalFmt\n---@field [\"cabal-gild\"]? _.lspconfig.settings.hie.Haskell.Plugin.CabalGild\n---@field cabalHaskellIntegration? _.lspconfig.settings.hie.Haskell.Plugin.CabalHaskellIntegration\n---@field callHierarchy? _.lspconfig.settings.hie.Haskell.Plugin.CallHierarchy\n---@field changeTypeSignature? _.lspconfig.settings.hie.Haskell.Plugin.ChangeTypeSignature\n---@field class? _.lspconfig.settings.hie.Haskell.Plugin.Class\n---@field eval? _.lspconfig.settings.hie.Haskell.Plugin.Eval\n---@field [\"explicit-fields\"]? _.lspconfig.settings.hie.Haskell.Plugin.ExplicitFields\n---@field [\"explicit-fixity\"]? _.lspconfig.settings.hie.Haskell.Plugin.ExplicitFixity\n---@field fourmolu? _.lspconfig.settings.hie.Haskell.Plugin.Fourmolu\n---@field gadt? _.lspconfig.settings.hie.Haskell.Plugin.Gadt\n---@field [\"ghcide-code-actions-bindings\"]? _.lspconfig.settings.hie.Haskell.Plugin.GhcideCodeActionsBindings\n---@field [\"ghcide-code-actions-fill-holes\"]? _.lspconfig.settings.hie.Haskell.Plugin.GhcideCodeActionsFillHoles\n---@field [\"ghcide-code-actions-imports-exports\"]? _.lspconfig.settings.hie.Haskell.Plugin.GhcideCodeActionsImportsExports\n---@field [\"ghcide-code-actions-type-signatures\"]? _.lspconfig.settings.hie.Haskell.Plugin.GhcideCodeActionsTypeSignatures\n---@field [\"ghcide-completions\"]? _.lspconfig.settings.hie.Haskell.Plugin.GhcideCompletions\n---@field [\"ghcide-hover-and-symbols\"]? _.lspconfig.settings.hie.Haskell.Plugin.GhcideHoverAndSymbols\n---@field [\"ghcide-type-lenses\"]? _.lspconfig.settings.hie.Haskell.Plugin.GhcideTypeLenses\n---@field hlint? _.lspconfig.settings.hie.Haskell.Plugin.Hlint\n---@field importLens? _.lspconfig.settings.hie.Haskell.Plugin.ImportLens\n---@field moduleName? _.lspconfig.settings.hie.Haskell.Plugin.ModuleName\n---@field ormolu? _.lspconfig.settings.hie.Haskell.Plugin.Ormolu\n---@field [\"overloaded-record-dot\"]? _.lspconfig.settings.hie.Haskell.Plugin.OverloadedRecordDot\n---@field [\"pragmas-completion\"]? _.lspconfig.settings.hie.Haskell.Plugin.PragmasCompletion\n---@field [\"pragmas-disable\"]? _.lspconfig.settings.hie.Haskell.Plugin.PragmasDisable\n---@field [\"pragmas-suggest\"]? _.lspconfig.settings.hie.Haskell.Plugin.PragmasSuggest\n---@field qualifyImportedNames? _.lspconfig.settings.hie.Haskell.Plugin.QualifyImportedNames\n---@field rename? _.lspconfig.settings.hie.Haskell.Plugin.Rename\n---@field retrie? _.lspconfig.settings.hie.Haskell.Plugin.Retrie\n---@field semanticTokens? _.lspconfig.settings.hie.Haskell.Plugin.SemanticTokens\n---@field signatureHelp? _.lspconfig.settings.hie.Haskell.Plugin.SignatureHelp\n---@field splice? _.lspconfig.settings.hie.Haskell.Plugin.Splice\n---@field stan? _.lspconfig.settings.hie.Haskell.Plugin.Stan\n\n---@class _.lspconfig.settings.hie.Haskell.Trace\n---Sets the log level in the client side.\n---\n---```lua\n---default = \"info\"\n---```\n---@field client? \"off\" | \"error\" | \"info\" | \"debug\"\n---Traces the communication between VS Code and the language server.\n---\n---```lua\n---default = \"off\"\n---```\n---@field server? \"off\" | \"messages\" | \"verbose\"\n\n---@class _.lspconfig.settings.hie.Haskell\n---The formatter to use when formatting a document or range of a cabal formatter. Ensure the plugin is enabled.\n---\n---```lua\n---default = \"cabal-gild\"\n---```\n---@field cabalFormattingProvider? \"cabal-gild\" | \"cabal-fmt\" | \"none\"\n---Whether to typecheck the entire project on load. It could drive to bad performance in large projects.\n---\n---```lua\n---default = true\n---```\n---@field checkProject? boolean\n---The formatter to use when formatting a document or range. Ensure the plugin is enabled.\n---\n---```lua\n---default = \"ormolu\"\n---```\n---@field formattingProvider? \"brittany\" | \"floskell\" | \"fourmolu\" | \"ormolu\" | \"stylish-haskell\" | \"none\"\n---Manually set a ghcup executable path.\n---\n---```lua\n---default = \"\"\n---```\n---@field ghcupExecutablePath? string\n---If set, redirects the logs to a file.\n---\n---```lua\n---default = \"\"\n---```\n---@field logFile? string\n---How to manage/find HLS installations.\n---\n---```lua\n---default = \"PATH\"\n---```\n---@field manageHLS? \"GHCup\" | \"PATH\"\n---Maximum number of completions sent to the editor.\n---\n---```lua\n---default = 40\n---```\n---@field maxCompletions? integer\n---An optional URL to override where ghcup checks for tool download info (usually at: https://raw.githubusercontent.com/haskell/ghcup-metadata/master/ghcup-0.0.7.yaml)\n---\n---```lua\n---default = \"\"\n---```\n---@field metadataURL? string\n---When opening 'Documentation' for external libraries, open in hackage by default. Set to false to instead open in vscode.\n---\n---```lua\n---default = true\n---```\n---@field openDocumentationInHackage? boolean\n---When opening 'Source' for external libraries, open in hackage by default. Set to false to instead open in vscode.\n---\n---```lua\n---default = true\n---```\n---@field openSourceInHackage? boolean\n---@field plugin? _.lspconfig.settings.hie.Haskell.Plugin\n---Prompt before performing any downloads.\n---\n---```lua\n---default = \"true\"\n---```\n---@field promptBeforeDownloads? boolean\n---An optional path where downloaded metadata will be stored. Check the default value [here](https://github.com/haskell/vscode-haskell#downloaded-binaries)\n---\n---```lua\n---default = \"\"\n---```\n---@field releasesDownloadStoragePath? string\n---An optional URL to override where ghcup checks for HLS-GHC compatibility list (usually at: https://raw.githubusercontent.com/haskell/ghcup-metadata/master/hls-metadata-0.0.1.json)\n---\n---```lua\n---default = \"\"\n---```\n---@field releasesURL? string\n---Define environment variables for the language server.\n---\n---```lua\n---default = {}\n---```\n---@field serverEnvironment? table\n---Manually set a language server executable. Can be something on the $PATH or the full path to the executable itself. Works with `~,` `${HOME}` and `${workspaceFolder}`.\n---\n---```lua\n---default = \"\"\n---```\n---@field serverExecutablePath? string\n---Pass additional arguments to the language server.\n---\n---```lua\n---default = \"\"\n---```\n---@field serverExtraArgs? string\n---Preferred approach for loading package components. Setting this to 'multiple components' (EXPERIMENTAL) allows the build tool (such as `cabal` or `stack`) to [load multiple components at once](https://github.com/haskell/cabal/pull/8726), which is a significant improvement.\n---\n---```lua\n---default = \"singleComponent\"\n---```\n---@field sessionLoading? \"singleComponent\" | \"multipleComponents\"\n---Enable Language Server support for `.cabal` files. Requires Haskell Language Server version >= 1.9.0.0.\n---\n---```lua\n---default = \"automatic\"\n---```\n---@field supportCabalFiles? \"enable\" | \"disable\" | \"automatic\"\n---When manageHLS is set to GHCup, this can overwrite the automatic toolchain configuration with a more specific one. When a tool is omitted, the extension will manage the version (for 'ghc' we try to figure out the version the project requires). The format is '{\"tool\": \"version\", ...}'. 'version' accepts all identifiers that 'ghcup' accepts.\n---\n---```lua\n---default = {}\n---```\n---@field toolchain? table\n---@field trace? _.lspconfig.settings.hie.Haskell.Trace\n---Whether to upgrade GHCup automatically when 'manageHLS' is set to 'GHCup'.\n---\n---```lua\n---default = true\n---```\n---@field upgradeGHCup? boolean\n\n---@class lspconfig.settings.hie\n---@field haskell? _.lspconfig.settings.hie.Haskell\n"
  },
  {
    "path": "lua/lspconfig/types/lsp/html.lua",
    "content": "---@meta\n\n---@class _.lspconfig.settings.html.Html.Completion\n---Controls the default value for attributes when completion is accepted.\n---\n---```lua\n---default = \"doublequotes\"\n---```\n---@field attributeDefaultValue? \"doublequotes\" | \"singlequotes\" | \"empty\"\n\n---@class _.lspconfig.settings.html.Html.Format\n---List of tags, comma separated, where the content shouldn't be reformatted. `null` defaults to the `pre` tag.\n---\n---```lua\n---default = \"pre,code,textarea\"\n---```\n---@field contentUnformatted? string\n---Enable/disable default HTML formatter.\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n---List of tags, comma separated, that should have an extra newline before them. `null` defaults to `\"head, body, /html\"`.\n---\n---```lua\n---default = \"head, body, /html\"\n---```\n---@field extraLiners? string\n---Format and indent `{{#foo}}` and `{{/foo}}`.\n---@field indentHandlebars? boolean\n---Indent `<head>` and `<body>` sections.\n---@field indentInnerHtml? boolean\n---Maximum number of line breaks to be preserved in one chunk. Use `null` for unlimited.\n---@field maxPreserveNewLines? number\n---Controls whether existing line breaks before elements should be preserved. Only works before elements, not inside tags or for text.\n---\n---```lua\n---default = true\n---```\n---@field preserveNewLines? boolean\n---Honor django, erb, handlebars and php templating language tags.\n---@field templating? boolean\n---List of tags, comma separated, that shouldn't be reformatted. `null` defaults to all tags listed at https://www.w3.org/TR/html5/dom.html#phrasing-content.\n---\n---```lua\n---default = \"wbr\"\n---```\n---@field unformatted? string\n---Keep text content together between this string.\n---\n---```lua\n---default = \"\"\n---```\n---@field unformattedContentDelimiter? string\n---Wrap attributes.\n---\n---```lua\n---default = \"auto\"\n---```\n---@field wrapAttributes? \"auto\" | \"force\" | \"force-aligned\" | \"force-expand-multiline\" | \"aligned-multiple\" | \"preserve\" | \"preserve-aligned\"\n---Indent wrapped attributes to after N characters. Use `null` to use the default indent size. Ignored if `#html.format.wrapAttributes#` is set to `aligned`.\n---@field wrapAttributesIndentSize? number\n---Maximum amount of characters per line (0 = disable).\n---\n---```lua\n---default = 120\n---```\n---@field wrapLineLength? integer\n\n---@class _.lspconfig.settings.html.Html.Hover\n---Show tag and attribute documentation in hover.\n---\n---```lua\n---default = true\n---```\n---@field documentation? boolean\n---Show references to MDN in hover.\n---\n---```lua\n---default = true\n---```\n---@field references? boolean\n\n---@class _.lspconfig.settings.html.Html.Suggest\n---Controls whether the built-in HTML language support suggests closing tags. When disabled, end tag completions like `</div>` will not be shown.\n---@field hideEndTagSuggestions? boolean\n---Controls whether the built-in HTML language support suggests HTML5 tags, properties and values.\n---\n---```lua\n---default = true\n---```\n---@field html5? boolean\n\n---@class _.lspconfig.settings.html.Html.Trace\n---Traces the communication between VS Code and the HTML language server.\n---\n---```lua\n---default = \"off\"\n---```\n---@field server? \"off\" | \"messages\" | \"verbose\"\n\n---@class _.lspconfig.settings.html.Html.Validate\n---Controls whether the built-in HTML language support validates embedded scripts.\n---\n---```lua\n---default = true\n---```\n---@field scripts? boolean\n---Controls whether the built-in HTML language support validates embedded styles.\n---\n---```lua\n---default = true\n---```\n---@field styles? boolean\n\n---@class _.lspconfig.settings.html.Html\n---Enable/disable autoclosing of HTML tags.\n---\n---```lua\n---default = true\n---```\n---@field autoClosingTags? boolean\n---Enable/disable auto creation of quotes for HTML attribute assignment. The type of quotes can be configured by `#html.completion.attributeDefaultValue#`.\n---\n---```lua\n---default = true\n---```\n---@field autoCreateQuotes? boolean\n---@field completion? _.lspconfig.settings.html.Html.Completion\n---A list of relative file paths pointing to JSON files following the [custom data format](https://github.com/microsoft/vscode-html-languageservice/blob/master/docs/customData.md).\n---\n---VS Code loads custom data on startup to enhance its HTML support for the custom HTML tags, attributes and attribute values you specify in the JSON files.\n---\n---The file paths are relative to workspace and only workspace folder settings are considered.\n---\n---```lua\n---default = {}\n---```\n---@field customData? string[]\n---@field format? _.lspconfig.settings.html.Html.Format\n---@field hover? _.lspconfig.settings.html.Html.Hover\n---Enable/disable mirroring cursor on matching HTML tag.\n---@field mirrorCursorOnMatchingTag? boolean\n---@field suggest? _.lspconfig.settings.html.Html.Suggest\n---@field trace? _.lspconfig.settings.html.Html.Trace\n---@field validate? _.lspconfig.settings.html.Html.Validate\n\n---@class lspconfig.settings.html\n---@field html? _.lspconfig.settings.html.Html\n"
  },
  {
    "path": "lua/lspconfig/types/lsp/intelephense.lua",
    "content": "---@meta\n\n---@class _.lspconfig.settings.intelephense.Intelephense.CodeLens.Implementations\n---Enable a code lens that shows an abstract and interface implementations count and command to peek locations.\n---@field enable? boolean\n\n---@class _.lspconfig.settings.intelephense.Intelephense.CodeLens.Overrides\n---Enable a code lens that shows method override count and command to peek locations.\n---@field enable? boolean\n\n---@class _.lspconfig.settings.intelephense.Intelephense.CodeLens.Parent\n---Enable a code lens that indicates if a method has a parent implementation and command to peek location.\n---@field enable? boolean\n\n---@class _.lspconfig.settings.intelephense.Intelephense.CodeLens.References\n---Enable a code lens that shows a reference count and command to peek locations.\n---@field enable? boolean\n\n---@class _.lspconfig.settings.intelephense.Intelephense.CodeLens.Usages\n---Enable a code lens that shows a trait usages count and command to peek locations.\n---@field enable? boolean\n\n---@class _.lspconfig.settings.intelephense.Intelephense.CodeLens\n---@field implementations? _.lspconfig.settings.intelephense.Intelephense.CodeLens.Implementations\n---@field overrides? _.lspconfig.settings.intelephense.Intelephense.CodeLens.Overrides\n---@field parent? _.lspconfig.settings.intelephense.Intelephense.CodeLens.Parent\n---@field references? _.lspconfig.settings.intelephense.Intelephense.CodeLens.References\n---@field usages? _.lspconfig.settings.intelephense.Intelephense.CodeLens.Usages\n\n---@class _.lspconfig.settings.intelephense.Intelephense.Compatibility\n---Resolves `ArrayAccess` and `Traversable` implementations that are unioned with a typed array to generic syntax.\n---\n---For example: `ArrayAccessAndTraversable|Element[]` => `ArrayAccessAndTraversable&ArrayAccess<int, Element>&Traversable<int, Element>`.\n---\n---```lua\n---default = true\n---```\n---@field correctForArrayAccessArrayAndTraversableArrayUnionTypes? boolean\n---Prefer `@psalm-` and `@phpstan-` prefixed `@return`, `@var`, `@param` tags when determining symbol types.\n---@field preferPsalmPhpstanPrefixedAnnotations? boolean\n\n---@class _.lspconfig.settings.intelephense.Intelephense.Completion\n---Global namespace constants and functions will be fully qualified (prefixed with a backslash).\n---@field fullyQualifyGlobalConstantsAndFunctions? boolean\n---Use declarations will be automatically inserted for namespaced classes, traits, interfaces, functions, and constants.\n---\n---```lua\n---default = true\n---```\n---@field insertUseDeclaration? boolean\n---The maximum number of completion items returned per request.\n---\n---```lua\n---default = 100\n---```\n---@field maxItems? number\n---The preferred font case to use when suggesting parameter names. Defaults to camel case.\n---\n---```lua\n---default = \"camel\"\n---```\n---@field parameterCase? \"camel\" | \"snake\"\n---The preferred font case to use when suggesting property names. Defaults to snake case.\n---\n---```lua\n---default = \"snake\"\n---```\n---@field propertyCase? \"camel\" | \"snake\"\n---Controls whether suggestions will include a `sortText` property that may influence sort order.\n---\n---```lua\n---default = \"multi-factor\"\n---```\n---@field sortText? \"none\" | \"multi-factor\"\n---PHP permits the calling of static methods using the object operator eg `$obj->myStaticMethod();`. If you would prefer not to have static methods suggested in this context then set this value to `false`. Defaults to `true`.\n---\n---```lua\n---default = true\n---```\n---@field suggestObjectOperatorStaticMethods? boolean\n---Inserted text will be relative to any existing partial use declarations that may match the symbol. The value is the maximum number of namespace segments that may appear in the inserted text. Defaults to 0 (disabled).\n---\n---```lua\n---default = 0\n---```\n---@field suggestRelativeToPartialUseDeclaration? number\n---Method and function completions will include parentheses and trigger parameter hints.\n---\n---```lua\n---default = true\n---```\n---@field triggerParameterHints? boolean\n\n---@class _.lspconfig.settings.intelephense.Intelephense.Diagnostics\n---Enables argument count diagnostics.\n---\n---```lua\n---default = true\n---```\n---@field argumentCount? boolean\n---Enables deprecated diagnostics.\n---\n---```lua\n---default = true\n---```\n---@field deprecated? boolean\n---Enables duplicate symbol diagnostics.\n---\n---```lua\n---default = true\n---```\n---@field duplicateSymbols? boolean\n---Enables diagnostics in embedded languages.\n---\n---```lua\n---default = true\n---```\n---@field embeddedLanguages? boolean\n---Enables diagnostics.\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n---A map of globs to diagnostic codes to be excluded for the matching files. Use `*` as a value in the array to exclude all diagnostics. By default the vendor directory is excluded. You can override this by setting `**/vendor/**` to an empty array.\n---\n---```lua\n---default = {\n---  [\"**/vendor/**\"] = { \"*\" }\n---}\n---```\n---@field exclude? table\n---Enables reporting of problems associated with method and class implementations. For example, unimplemented methods or method signature incompatibilities.\n---\n---```lua\n---default = true\n---```\n---@field implementationErrors? boolean\n---Enables reporting of various language constraint errors.\n---\n---```lua\n---default = true\n---```\n---@field languageConstraints? boolean\n---Enables reporting of errors associated with type member access.\n---\n---```lua\n---default = true\n---```\n---@field memberAccess? boolean\n---This setting turns off type checking for the `mixed` type. This is useful for projects that may have incomplete or innacurate typings. Set to `false` to make type checking more thorough by not allowing `mixed` to satisy any type constraint. This setting has no effect when `relaxedTypeCheck` is `true`.\n---\n---```lua\n---default = true\n---```\n---@field noMixedTypeCheck? boolean\n---This setting makes type checking less thorough by allowing contravariant (wider) types to also satisfy a type constraint. This is useful for projects that may have incomplete or innacurate typings. Set to `false` for more thorough type checks. When this setting is `true`, the `noMixedTypeCheck` setting is ignored.\n---\n---```lua\n---default = true\n---```\n---@field relaxedTypeCheck? boolean\n---Controls when diagnostics are run.\n---\n---```lua\n---default = \"onType\"\n---```\n---@field run? \"onType\" | \"onSave\"\n---Sets the severity level for each diagnostic code.\n---@field severity? table\n---When enabled, type checks will be performed as if a `declare(strict_types=1)` directive is present in all files.\n---@field strictTypes? boolean\n---Suppresses undefined property and method errors when `__get` or `__call` magic methods are declared.\n---\n---```lua\n---default = true\n---```\n---@field suppressUndefinedMembersWhenMagicMethodDeclared? boolean\n---Enables diagnostics on type compatibility of arguments, property assignments, and return statements where types have been declared.\n---\n---```lua\n---default = true\n---```\n---@field typeErrors? boolean\n---Enables undefined class constant diagnostics.\n---\n---```lua\n---default = true\n---```\n---@field undefinedClassConstants? boolean\n---Enables undefined constant diagnostics.\n---\n---```lua\n---default = true\n---```\n---@field undefinedConstants? boolean\n---Enables undefined function diagnostics.\n---\n---```lua\n---default = true\n---```\n---@field undefinedFunctions? boolean\n---Enables undefined method diagnostics.\n---\n---```lua\n---default = true\n---```\n---@field undefinedMethods? boolean\n---Enables undefined property diagnostics.\n---\n---```lua\n---default = true\n---```\n---@field undefinedProperties? boolean\n---DEPRECATED. Use the setting for each symbol category.\n---\n---```lua\n---default = true\n---```\n---@field undefinedSymbols? boolean\n---Enables undefined class, interface and trait diagnostics.\n---\n---```lua\n---default = true\n---```\n---@field undefinedTypes? boolean\n---Enables undefined variable diagnostics.\n---\n---```lua\n---default = true\n---```\n---@field undefinedVariables? boolean\n---Enables unexpected token diagnostics.\n---\n---```lua\n---default = true\n---```\n---@field unexpectedTokens? boolean\n---Enables reporting of unreachable code.\n---\n---```lua\n---default = true\n---```\n---@field unreachableCode? boolean\n---Enables unused variable, private member, and import diagnostics.\n---\n---```lua\n---default = true\n---```\n---@field unusedSymbols? boolean\n\n---@class _.lspconfig.settings.intelephense.Intelephense.Environment\n---The directory of the entry point to the application (directory of index.php). Can be absolute or relative to the workspace folder. Used for resolving script inclusion and path suggestions.\n---@field documentRoot? string\n---The include paths (as individual path items) as defined in the include_path ini setting or paths to external libraries. Can be absolute or relative to the workspace folder. Used for resolving script inclusion and/or adding external symbols to folder.\n---@field includePaths? string[]\n---A semver compatible string that represents the target PHP version. Used for providing version appropriate suggestions and diagnostics. PHP 5.3.0 and greater supported.\n---\n---```lua\n---default = \"8.5.0\"\n---```\n---@field phpVersion? string\n---When enabled '<?' will be parsed as a PHP open tag. Defaults to true.\n---\n---```lua\n---default = true\n---```\n---@field shortOpenTag? boolean\n\n---@class _.lspconfig.settings.intelephense.Intelephense.Files\n---Configure glob patterns to make files available for language server features. Inherits from files.associations.\n---\n---```lua\n---default = { \"*.php\", \"*.phtml\" }\n---```\n---@field associations? any[]\n---Configure glob patterns to exclude certain files and folders from all language server features. Inherits from files.exclude.\n---\n---```lua\n---default = { \"**/.git/**\", \"**/.svn/**\", \"**/.hg/**\", \"**/CVS/**\", \"**/.DS_Store/**\", \"**/node_modules/**\", \"**/bower_components/**\", \"**/vendor/**/{Tests,tests}/**\", \"**/.history/**\", \"**/vendor/**/vendor/**\" }\n---```\n---@field exclude? string[]\n---Maximum file size in bytes.\n---\n---```lua\n---default = 1000000\n---```\n---@field maxSize? number\n\n---@class _.lspconfig.settings.intelephense.Intelephense.Format\n---Controls formatting style of braces\n---\n---```lua\n---default = \"per\"\n---```\n---@field braces? \"per\" | \"allman\" | \"k&r\"\n---Enables formatting.\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n\n---@class _.lspconfig.settings.intelephense.Intelephense.InlayHint\n---Will show inlay hints for call argument parameter names if named arguments are not already in use.\n---\n---```lua\n---default = true\n---```\n---@field parameterNames? boolean\n---Will show inlay hints for anonymous function declaration parameter types if not already declared.\n---\n---```lua\n---default = true\n---```\n---@field parameterTypes? boolean\n---Will show an inlay hint for call declaration return type if not already declared.\n---\n---```lua\n---default = true\n---```\n---@field returnTypes? boolean\n\n---An object that describes the format of generated class/interface/trait phpdoc. The following snippet variables are available: SYMBOL_NAME; SYMBOL_KIND; SYMBOL_TYPE; SYMBOL_NAMESPACE.\n---\n---```lua\n---default = {\n---  summary = \"$1\",\n---  tags = { \"@package ${1:$SYMBOL_NAMESPACE}\" }\n---}\n---```\n---@class _.lspconfig.settings.intelephense.Intelephense.Phpdoc.ClassTemplate\n---A snippet string representing a phpdoc description.\n---@field description? string\n---A snippet string representing a phpdoc summary.\n---@field summary? string\n---An array of snippet strings representing phpdoc tags.\n---@field tags? string[]\n\n---An object that describes the format of generated function/method phpdoc. The following snippet variables are available: SYMBOL_NAME; SYMBOL_KIND; SYMBOL_TYPE; SYMBOL_NAMESPACE.\n---\n---```lua\n---default = {\n---  summary = \"$1\",\n---  tags = { \"@param ${1:$SYMBOL_TYPE} $SYMBOL_NAME $2\", \"@return ${1:$SYMBOL_TYPE} $2\", \"@throws ${1:$SYMBOL_TYPE} $2\" }\n---}\n---```\n---@class _.lspconfig.settings.intelephense.Intelephense.Phpdoc.FunctionTemplate\n---A snippet string representing a phpdoc description.\n---@field description? string\n---A snippet string representing a phpdoc summary.\n---@field summary? string\n---An array of snippet strings representing phpdoc tags.\n---@field tags? string[]\n\n---An object that describes the format of generated property phpdoc. The following snippet variables are available: SYMBOL_NAME; SYMBOL_KIND; SYMBOL_TYPE; SYMBOL_NAMESPACE.\n---\n---```lua\n---default = {\n---  summary = \"$1\",\n---  tags = { \"@var ${1:$SYMBOL_TYPE}\" }\n---}\n---```\n---@class _.lspconfig.settings.intelephense.Intelephense.Phpdoc.PropertyTemplate\n---A snippet string representing a phpdoc description.\n---@field description? string\n---A snippet string representing a phpdoc summary.\n---@field summary? string\n---An array of snippet strings representing phpdoc tags.\n---@field tags? string[]\n\n---@class _.lspconfig.settings.intelephense.Intelephense.Phpdoc\n---An object that describes the format of generated class/interface/trait phpdoc. The following snippet variables are available: SYMBOL_NAME; SYMBOL_KIND; SYMBOL_TYPE; SYMBOL_NAMESPACE.\n---\n---```lua\n---default = {\n---  summary = \"$1\",\n---  tags = { \"@package ${1:$SYMBOL_NAMESPACE}\" }\n---}\n---```\n---@field classTemplate? _.lspconfig.settings.intelephense.Intelephense.Phpdoc.ClassTemplate\n---An object that describes the format of generated function/method phpdoc. The following snippet variables are available: SYMBOL_NAME; SYMBOL_KIND; SYMBOL_TYPE; SYMBOL_NAMESPACE.\n---\n---```lua\n---default = {\n---  summary = \"$1\",\n---  tags = { \"@param ${1:$SYMBOL_TYPE} $SYMBOL_NAME $2\", \"@return ${1:$SYMBOL_TYPE} $2\", \"@throws ${1:$SYMBOL_TYPE} $2\" }\n---}\n---```\n---@field functionTemplate? _.lspconfig.settings.intelephense.Intelephense.Phpdoc.FunctionTemplate\n---An object that describes the format of generated property phpdoc. The following snippet variables are available: SYMBOL_NAME; SYMBOL_KIND; SYMBOL_TYPE; SYMBOL_NAMESPACE.\n---\n---```lua\n---default = {\n---  summary = \"$1\",\n---  tags = { \"@var ${1:$SYMBOL_TYPE}\" }\n---}\n---```\n---@field propertyTemplate? _.lspconfig.settings.intelephense.Intelephense.Phpdoc.PropertyTemplate\n---Adds `@return void` to auto generated phpdoc for definitions that do not return a value.\n---\n---```lua\n---default = true\n---```\n---@field returnVoid? boolean\n---```lua\n---default = \"snippet\"\n---```\n---@field textFormat? \"snippet\" | \"text\"\n---Fully qualified names will be used for types when true. When false short type names will be used and imported where appropriate. Overrides intelephense.completion.insertUseDeclaration.\n---@field useFullyQualifiedNames? boolean\n\n---@class _.lspconfig.settings.intelephense.Intelephense.References\n---Glob patterns matching files and folders that should be excluded from references search.\n---\n---```lua\n---default = { \"**/vendor/**\" }\n---```\n---@field exclude? string[]\n\n---@class _.lspconfig.settings.intelephense.Intelephense.Rename\n---Glob patterns matching files and folders that should be excluded when renaming symbols. Rename operation will fail if the symbol definition is found in the excluded files/folders.\n---\n---```lua\n---default = { \"**/vendor/**\" }\n---```\n---@field exclude? string[]\n---Controls the scope of a namespace rename operation.\n---\n---```lua\n---default = \"single\"\n---```\n---@field namespaceMode? \"single\" | \"all\"\n\n---@class _.lspconfig.settings.intelephense.Intelephense.Telemetry\n---Anonymous usage and crash data will be sent to Azure Application Insights. Inherits from telemetry.enableTelemetry.\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.intelephense.Intelephense.Trace\n---Traces the communication between VSCode and the intelephense language server.\n---\n---```lua\n---default = \"off\"\n---```\n---@field server? \"off\" | \"messages\" | \"verbose\"\n\n---@class _.lspconfig.settings.intelephense.Intelephense\n---@field codeLens? _.lspconfig.settings.intelephense.Intelephense.CodeLens\n---@field compatibility? _.lspconfig.settings.intelephense.Intelephense.Compatibility\n---@field completion? _.lspconfig.settings.intelephense.Intelephense.Completion\n---@field diagnostics? _.lspconfig.settings.intelephense.Intelephense.Diagnostics\n---@field environment? _.lspconfig.settings.intelephense.Intelephense.Environment\n---@field files? _.lspconfig.settings.intelephense.Intelephense.Files\n---@field format? _.lspconfig.settings.intelephense.Intelephense.Format\n---@field inlayHint? _.lspconfig.settings.intelephense.Intelephense.InlayHint\n---DEPRECATED. Don't use this. Go to command palette and search for enter licence key.\n---@field licenceKey? string\n---Maximum memory (in MB) that the server should use. On some systems this may only have effect when runtime has been set. Minimum 256.\n---@field maxMemory? number\n---@field phpdoc? _.lspconfig.settings.intelephense.Intelephense.Phpdoc\n---@field references? _.lspconfig.settings.intelephense.Intelephense.References\n---@field rename? _.lspconfig.settings.intelephense.Intelephense.Rename\n---Path to a Node.js executable. Use this if you wish to use a different version of Node.js. Defaults to Node.js shipped with VSCode.\n---@field runtime? string\n---Will auto-close short open echo tags (`<?=`). VSCode only.\n---\n---```lua\n---default = true\n---```\n---@field shortOpenEchoAutoClose? boolean\n---Configure stub files for built in symbols and common extensions. The default setting includes PHP core and all bundled extensions.\n---\n---```lua\n---default = { \"apache\", \"bcmath\", \"bz2\", \"calendar\", \"com_dotnet\", \"Core\", \"ctype\", \"curl\", \"date\", \"dba\", \"dom\", \"enchant\", \"exif\", \"FFI\", \"fileinfo\", \"filter\", \"fpm\", \"ftp\", \"gd\", \"gettext\", \"gmp\", \"hash\", \"iconv\", \"imap\", \"intl\", \"json\", \"ldap\", \"libxml\", \"mbstring\", \"meta\", \"mysqli\", \"oci8\", \"odbc\", \"openssl\", \"pcntl\", \"pcre\", \"PDO\", \"pgsql\", \"Phar\", \"posix\", \"pspell\", \"random\", \"readline\", \"Reflection\", \"session\", \"shmop\", \"SimpleXML\", \"snmp\", \"soap\", \"sockets\", \"sodium\", \"SPL\", \"sqlite3\", \"standard\", \"superglobals\", \"sysvmsg\", \"sysvsem\", \"sysvshm\", \"tidy\", \"tokenizer\", \"uri\", \"xml\", \"xmlreader\", \"xmlrpc\", \"xmlwriter\", \"xsl\", \"Zend OPcache\", \"zip\", \"zlib\" }\n---```\n---@field stubs? string[]\n---@field telemetry? _.lspconfig.settings.intelephense.Intelephense.Telemetry\n---@field trace? _.lspconfig.settings.intelephense.Intelephense.Trace\n\n---@class lspconfig.settings.intelephense\n---@field intelephense? _.lspconfig.settings.intelephense.Intelephense\n"
  },
  {
    "path": "lua/lspconfig/types/lsp/java_language_server.lua",
    "content": "---@meta\n\n---@class _.lspconfig.settings.java_language_server.Java.Trace\n---Traces the communication between VSCode and the language server.\n---\n---```lua\n---default = \"off\"\n---```\n---@field server? \"off\" | \"messages\" | \"verbose\"\n\n---@class _.lspconfig.settings.java_language_server.Java\n---List of modules to allow access to, for example [\"jdk.compiler/com.sun.tools.javac.api\"]\n---@field addExports? string[]\n---Relative paths from workspace root to .jar files, .zip files, or folders that should be included in the Java class path\n---@field classPath? string[]\n---Command to debug one test method, for example [\"mvn\", \"test\", \"-Dmaven.surefire.debug\", \"-Dtest=${class}#${method}\". The test should start paused, listening for the debugger on port 5005.\n---@field debugTestMethod? string[]\n---Relative paths from workspace root to .jar files or .zip files containing source code, or to folders that should be included in the Java doc path\n---@field docPath? string[]\n---External dependencies of the form groupId:artifactId:version or groupId:artifactId:packaging:version:scope\n---@field externalDependencies? string[]\n---Absolute path to your Java home directory\n---@field home? string\n---Command to run all tests in a class, for example [\"mvn\", \"test\", \"-Dtest=${class}\"\n---@field testClass? string[]\n---Command to run one test method, for example [\"mvn\", \"test\", \"-Dtest=${class}#${method}\"\n---@field testMethod? string[]\n---@field trace? _.lspconfig.settings.java_language_server.Java.Trace\n\n---@class lspconfig.settings.java_language_server\n---@field java? _.lspconfig.settings.java_language_server.Java\n"
  },
  {
    "path": "lua/lspconfig/types/lsp/jdtls.lua",
    "content": "---@meta\n\n---@class _.lspconfig.settings.jdtls.Java.Autobuild\n---Enable/disable the 'auto build'\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.jdtls.Java.Cleanup\n---The list of clean ups to be run on the current document when it's saved or when the cleanup command is issued. Clean ups can automatically fix code style or programming mistakes. Click [HERE](command:_java.learnMoreAboutCleanUps) to learn more about what each clean up does.\n---\n---```lua\n---default = { \"renameFileToType\" }\n---```\n---@field actions? string[]\n---```lua\n---default = {}\n---```\n---@field actionsOnSave? string[]\n\n---@class _.lspconfig.settings.jdtls.Java.CodeAction.SortMembers\n---Reordering of fields, enum constants, and initializers can result in semantic and runtime changes due to different initialization and persistence order. This setting prevents this from occurring.\n---\n---```lua\n---default = true\n---```\n---@field avoidVolatileChanges? boolean\n\n---@class _.lspconfig.settings.jdtls.Java.CodeAction\n---@field sortMembers? _.lspconfig.settings.jdtls.Java.CodeAction.SortMembers\n\n---@class _.lspconfig.settings.jdtls.Java.CodeGeneration.HashCodeEquals\n---Use 'instanceof' to compare types when generating the hashCode and equals methods.\n---@field useInstanceof? boolean\n---Use Objects.hash and Objects.equals when generating the hashCode and equals methods. This setting only applies to Java 7 and higher.\n---@field useJava7Objects? boolean\n\n---@class _.lspconfig.settings.jdtls.Java.CodeGeneration.ToString\n---The code style for generating the toString method.\n---\n---```lua\n---default = \"STRING_CONCATENATION\"\n---```\n---@field codeStyle? \"STRING_CONCATENATION\" | \"STRING_BUILDER\" | \"STRING_BUILDER_CHAINED\" | \"STRING_FORMAT\"\n---Limit number of items in arrays/collections/maps to list, if 0 then list all.\n---\n---```lua\n---default = 0\n---```\n---@field limitElements? integer\n---List contents of arrays instead of using native toString().\n---\n---```lua\n---default = true\n---```\n---@field listArrayContents? boolean\n---Skip null values when generating the toString method.\n---@field skipNullValues? boolean\n---The template for generating the toString method.\n---\n---```lua\n---default = \"${object.className} [${member.name()}=${member.value}, ${otherMembers}]\"\n---```\n---@field template? string\n\n---@class _.lspconfig.settings.jdtls.Java.CodeGeneration\n---Whether to generate the 'final' modifer for code actions that create new declarations.\n---\n---```lua\n---default = \"none\"\n---```\n---@field addFinalForNewDeclaration? \"none\" | \"fields\" | \"variables\" | \"all\"\n---Generate method comments when generating the methods.\n---@field generateComments? boolean\n---@field hashCodeEquals? _.lspconfig.settings.jdtls.Java.CodeGeneration.HashCodeEquals\n---Specifies the insertion location of the code generated by source actions.\n---\n---```lua\n---default = \"afterCursor\"\n---```\n---@field insertionLocation? \"afterCursor\" | \"beforeCursor\" | \"lastMember\"\n---@field toString? _.lspconfig.settings.jdtls.Java.CodeGeneration.ToString\n---Use blocks in 'if' statements when generating the methods.\n---@field useBlocks? boolean\n\n---@class _.lspconfig.settings.jdtls.Java.Compile.NullAnalysis\n---Specify how to enable the annotation-based null analysis.\n---\n---```lua\n---default = \"interactive\"\n---```\n---@field mode? \"disabled\" | \"interactive\" | \"automatic\"\n---Specify the Nonnull annotation types to be used for null analysis. If more than one annotation is specified, then the topmost annotation will be used first if it exists in project dependencies. This setting will be ignored if `java.compile.nullAnalysis.mode` is set to `disabled`\n---\n---```lua\n---default = { \"javax.annotation.Nonnull\", \"org.eclipse.jdt.annotation.NonNull\", \"org.springframework.lang.NonNull\", \"org.jspecify.annotations.NonNull\" }\n---```\n---@field nonnull? any[]\n---Specify the NonNullByDefault annotation types to be used for null analysis. If more than one annotation is specified, then the topmost annotation will be used first if it exists in project dependencies. This setting will be ignored if `java.compile.nullAnalysis.mode` is set to `disabled`\n---\n---```lua\n---default = { \"javax.annotation.ParametersAreNonnullByDefault\", \"org.eclipse.jdt.annotation.NonNullByDefault\", \"org.springframework.lang.NonNullApi\", \"org.jspecify.annotations.NullMarked\" }\n---```\n---@field nonnullbydefault? any[]\n---Specify the Nullable annotation types to be used for null analysis. If more than one annotation is specified, then the topmost annotation will be used first if it exists in project dependencies. This setting will be ignored if `java.compile.nullAnalysis.mode` is set to `disabled`\n---\n---```lua\n---default = { \"javax.annotation.Nullable\", \"org.eclipse.jdt.annotation.Nullable\", \"org.springframework.lang.Nullable\", \"org.jspecify.annotations.Nullable\" }\n---```\n---@field nullable? any[]\n\n---@class _.lspconfig.settings.jdtls.Java.Compile\n---@field nullAnalysis? _.lspconfig.settings.jdtls.Java.Compile.NullAnalysis\n\n---@class _.lspconfig.settings.jdtls.Java.Completion.Chain\n---Enable/disable chain completion support. Chain completions are only available when completions are invoked by the completions shortcut\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.jdtls.Java.Completion.LazyResolveTextEdit\n---[Experimental] Enable/disable lazily resolving text edits for code completion.\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.jdtls.Java.Completion.Postfix\n---Enable/disable postfix completion support. `#editor.snippetSuggestions#` can be used to customize how postfix snippets are sorted.\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.jdtls.Java.Completion\n---@field chain? _.lspconfig.settings.jdtls.Java.Completion.Chain\n---Enable/disable the collapse of overloaded methods in completion items. Overrides `#java.completion.guessMethodArguments#`.\n---@field collapseCompletionItems? boolean\n---Enable/disable code completion support\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n---[Experimental] Select code completion engine\n---\n---```lua\n---default = \"ecj\"\n---```\n---@field engine? \"ecj\" | \"dom\"\n---Defines a list of static members or types with static members. Content assist will propose those static members even if the import is missing.\n---\n---```lua\n---default = { \"org.junit.Assert.*\", \"org.junit.Assume.*\", \"org.junit.jupiter.api.Assertions.*\", \"org.junit.jupiter.api.Assumptions.*\", \"org.junit.jupiter.api.DynamicContainer.*\", \"org.junit.jupiter.api.DynamicTest.*\", \"org.mockito.Mockito.*\", \"org.mockito.ArgumentMatchers.*\", \"org.mockito.Answers.*\" }\n---```\n---@field favoriteStaticMembers? any[]\n---Defines the type filters. All types whose fully qualified name matches the selected filter strings will be ignored in content assist or quick fix proposals and when organizing imports. For example 'java.awt.*' will hide all types from the awt packages.\n---\n---```lua\n---default = { \"java.awt.*\", \"com.sun.*\", \"sun.*\", \"jdk.*\", \"org.graalvm.*\", \"io.micrometer.shaded.*\" }\n---```\n---@field filteredTypes? any[]\n---Specify how the arguments will be filled during completion.\n---\n---```lua\n---default = \"auto\"\n---```\n---@field guessMethodArguments? \"auto\" | \"off\" | \"insertParameterNames\" | \"insertBestGuessedArguments\"\n---Defines the sorting order of import statements. A package or type name prefix (e.g. 'org.eclipse') is a valid entry. An import is always added to the most specific group. As a result, the empty string (e.g. '') can be used to group all other imports. Static imports are prefixed with a '#'\n---\n---```lua\n---default = { \"#\", \"java\", \"javax\", \"org\", \"com\", \"\" }\n---```\n---@field importOrder? any[]\n---@field lazyResolveTextEdit? _.lspconfig.settings.jdtls.Java.Completion.LazyResolveTextEdit\n---Specify whether to match case for code completion.\n---\n---```lua\n---default = \"firstLetter\"\n---```\n---@field matchCase? \"firstLetter\" | \"off\"\n---Maximum number of completion results (not including snippets).\n---`0` (the default value) disables the limit, all results are returned. In case of performance problems, consider setting a sensible limit.\n---\n---```lua\n---default = 0\n---```\n---@field maxResults? integer\n---@field postfix? _.lspconfig.settings.jdtls.Java.Completion.Postfix\n\n---@class _.lspconfig.settings.jdtls.Java.Configuration.Maven\n---Specifies default mojo execution action when no associated metadata can be detected.\n---\n---```lua\n---default = \"ignore\"\n---```\n---@field defaultMojoExecutionAction? \"ignore\" | \"warn\" | \"error\" | \"execute\"\n---Path to Maven's global settings.xml\n---@field globalSettings? string\n---Path to Maven's lifecycle mappings xml\n---@field lifecycleMappings? string\n---Specifies severity if the plugin execution is not covered by Maven build lifecycle.\n---\n---```lua\n---default = \"warning\"\n---```\n---@field notCoveredPluginExecutionSeverity? \"ignore\" | \"warning\" | \"error\"\n---Path to Maven's user settings.xml\n---@field userSettings? string\n\n---@class _.lspconfig.settings.jdtls.Java.Configuration\n---Controls whether to exclude extension-generated project settings files (.project, .classpath, .factorypath, .settings/) from the file explorer.\n---@field checkProjectSettingsExclusions? boolean\n---Automatically detect JDKs installed on local machine at startup. If you have specified the same JDK version in `#java.configuration.runtimes#`, the extension will use that version first.\n---\n---```lua\n---default = true\n---```\n---@field detectJdksAtStart? boolean\n---@field maven? _.lspconfig.settings.jdtls.Java.Configuration.Maven\n---Map Java Execution Environments to local JDKs.\n---\n---```lua\n---default = {}\n---```\n---@field runtimes? table[]\n---Specifies how modifications on build files update the Java classpath/configuration\n---\n---```lua\n---default = \"interactive\"\n---```\n---@field updateBuildConfiguration? \"disabled\" | \"interactive\" | \"automatic\"\n---The number of days (if enabled) to keep unused workspace cache data. Beyond this limit, cached workspace data may be removed.\n---\n---```lua\n---default = 90\n---```\n---@field workspaceCacheLimit? integer\n\n---@class _.lspconfig.settings.jdtls.Java.ContentProvider\n---Preferred content provider (a 3rd party decompiler id, usually)\n---@field preferred? string\n\n---@class _.lspconfig.settings.jdtls.Java.Diagnostic\n---Specifies a list of file patterns for which matching documents should not have their diagnostics reported (eg. '**/Foo.java').\n---\n---```lua\n---default = {}\n---```\n---@field filter? string[]\n\n---@class _.lspconfig.settings.jdtls.Java.Eclipse\n---Enable/disable download of Maven source artifacts for Eclipse projects.\n---@field downloadSources? boolean\n\n---@class _.lspconfig.settings.jdtls.Java.Edit.SmartSemicolonDetection\n---Defines the `smart semicolon` detection. Defaults to `false`.\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.jdtls.Java.Edit\n---@field smartSemicolonDetection? _.lspconfig.settings.jdtls.Java.Edit.SmartSemicolonDetection\n---Specifies whether to recheck all open Java files for diagnostics when editing a Java file.\n---@field validateAllOpenBuffersOnChanges? boolean\n\n---@class _.lspconfig.settings.jdtls.Java.Editor\n---Specifies whether to reload the sources of the open class files when their source jar files are changed.\n---\n---```lua\n---default = \"ask\"\n---```\n---@field reloadChangedSources? \"ask\" | \"auto\" | \"manual\"\n\n---@class _.lspconfig.settings.jdtls.Java.Errors.IncompleteClasspath\n---Specifies the severity of the message when the classpath is incomplete for a Java file\n---\n---```lua\n---default = \"warning\"\n---```\n---@field severity? \"ignore\" | \"info\" | \"warning\" | \"error\"\n\n---@class _.lspconfig.settings.jdtls.Java.Errors\n---@field incompleteClasspath? _.lspconfig.settings.jdtls.Java.Errors.IncompleteClasspath\n\n---@class _.lspconfig.settings.jdtls.Java.FoldingRange\n---Enable/disable smart folding range support. If disabled, it will use the default indentation-based folding range provided by VS Code.\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.jdtls.Java.Format.Comments\n---Includes the comments during code formatting.\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.jdtls.Java.Format.OnType\n---Enable/disable automatic block formatting when typing `;`, `<enter>` or `}`\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.jdtls.Java.Format.Settings\n---Optional formatter profile name from the Eclipse formatter settings.\n---@field profile? string\n---Specifies the url or file path to the [Eclipse formatter xml settings](https://github.com/redhat-developer/vscode-java/wiki/Formatter-settings).\n---@field url? string\n\n---@class _.lspconfig.settings.jdtls.Java.Format\n---@field comments? _.lspconfig.settings.jdtls.Java.Format.Comments\n---Enable/disable default Java formatter\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n---@field onType? _.lspconfig.settings.jdtls.Java.Format.OnType\n---@field settings? _.lspconfig.settings.jdtls.Java.Format.Settings\n\n---@class _.lspconfig.settings.jdtls.Java.Hover.Javadoc\n---Enable/disable displaying Javadoc on hover.\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.jdtls.Java.Hover\n---@field javadoc? _.lspconfig.settings.jdtls.Java.Hover.Javadoc\n\n---@class _.lspconfig.settings.jdtls.Java.Import.Gradle.AnnotationProcessing\n---Enable/disable the annotation processing on Gradle projects and delegate Annotation Processing to JDT APT. Only works for Gradle 5.2 or higher.\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.jdtls.Java.Import.Gradle.Java\n---The location to the JVM used to run the Gradle daemon.\n---@field home? string\n\n---@class _.lspconfig.settings.jdtls.Java.Import.Gradle.Offline\n---Enable/disable the Gradle offline mode.\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.jdtls.Java.Import.Gradle.User\n---Setting for GRADLE_USER_HOME.\n---@field home? string\n\n---@class _.lspconfig.settings.jdtls.Java.Import.Gradle.Wrapper\n---Use Gradle from the 'gradle-wrapper.properties' file.\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.jdtls.Java.Import.Gradle\n---@field annotationProcessing? _.lspconfig.settings.jdtls.Java.Import.Gradle.AnnotationProcessing\n---Arguments to pass to Gradle.\n---@field arguments? string\n---Enable/disable the Gradle importer.\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n---Use Gradle from the specified local installation directory or GRADLE_HOME if the Gradle wrapper is missing or disabled and no 'java.import.gradle.version' is specified.\n---@field home? string\n---@field java? _.lspconfig.settings.jdtls.Java.Import.Gradle.Java\n---JVM arguments to pass to Gradle.\n---@field jvmArguments? string\n---@field offline? _.lspconfig.settings.jdtls.Java.Import.Gradle.Offline\n---@field user? _.lspconfig.settings.jdtls.Java.Import.Gradle.User\n---Use Gradle from the specific version if the Gradle wrapper is missing or disabled.\n---@field version? string\n---@field wrapper? _.lspconfig.settings.jdtls.Java.Import.Gradle.Wrapper\n\n---@class _.lspconfig.settings.jdtls.Java.Import.Maven.Offline\n---Enable/disable the Maven offline mode.\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.jdtls.Java.Import.Maven\n---Enable/disable test classpath segregation. When enabled, this permits the usage of test resources within a Maven project as dependencies within the compile scope of other projects.\n---@field disableTestClasspathFlag? boolean\n---Enable/disable the Maven importer.\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n---@field offline? _.lspconfig.settings.jdtls.Java.Import.Maven.Offline\n\n---@class _.lspconfig.settings.jdtls.Java.Import\n---Configure glob patterns for excluding folders. Use `!` to negate patterns to allow subfolders imports. You have to include a parent directory. The order is important.\n---\n---```lua\n---default = { \"**/node_modules/**\", \"**/.metadata/**\", \"**/archetype-resources/**\", \"**/META-INF/maven/**\" }\n---```\n---@field exclusions? any[]\n---Specify whether the project metadata files(.project, .classpath, .factorypath, .settings/) will be generated at the project root. Click [HERE](command:_java.metadataFilesGeneration) to learn how to change the setting to make it take effect.\n---@field generatesMetadataFilesAtProjectRoot? boolean\n---@field gradle? _.lspconfig.settings.jdtls.Java.Import.Gradle\n---@field maven? _.lspconfig.settings.jdtls.Java.Import.Maven\n---[Experimental] Specifies how to select build configuration files to import. \n---Note: Currently, `Gradle` projects cannot be partially imported.\n---\n---```lua\n---default = \"automatic\"\n---```\n---@field projectSelection? \"manual\" | \"automatic\"\n\n---@class _.lspconfig.settings.jdtls.Java.Imports.Gradle.Wrapper\n---Defines allowed/disallowed SHA-256 checksums of Gradle Wrappers\n---\n---```lua\n---default = {}\n---```\n---@field checksums? table[]\n\n---@class _.lspconfig.settings.jdtls.Java.Imports.Gradle\n---@field wrapper? _.lspconfig.settings.jdtls.Java.Imports.Gradle.Wrapper\n\n---@class _.lspconfig.settings.jdtls.Java.Imports\n---@field gradle? _.lspconfig.settings.jdtls.Java.Imports.Gradle\n\n---@class _.lspconfig.settings.jdtls.Java.InlayHints.FormatParameters\n---Enable/disable inlay hints for format specifiers in format strings (e.g. `String.format()`, `String.formatted()`, `PrintStream.printf()`). Shows which argument corresponds to each format specifier.\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.jdtls.Java.InlayHints.ParameterNames\n---Enable/disable inlay hints for parameter names:\n---```java\n---\n---Integer.valueOf(/* s: */ '123', /* radix: */ 10)\n--- \n---```\n--- `#java.inlayHints.parameterNames.exclusions#` can be used to disable the inlay hints for methods.\n---\n---```lua\n---default = \"literals\"\n---```\n---@field enabled? \"none\" | \"literals\" | \"all\"\n---The patterns for the methods that will be disabled to show the inlay hints. Supported pattern examples:\n--- - `java.lang.Math.*` - All the methods from java.lang.Math.\n--- - `*.Arrays.asList` - Methods named as 'asList' in the types named as 'Arrays'.\n--- - `*.println(*)` - Methods named as 'println'.\n--- - `(from, to)` - Methods with two parameters named as 'from' and 'to'.\n--- - `(arg*)` - Methods with one parameter whose name starts with 'arg'.\n---\n---```lua\n---default = {}\n---```\n---@field exclusions? string[]\n---Suppress parameter name hints on arguments following the same-name numbered pattern.\n---\n---```lua\n---default = true\n---```\n---@field suppressWhenSameNameNumbered? boolean\n\n---@class _.lspconfig.settings.jdtls.Java.InlayHints.ParameterTypes\n---Enable/disable inlay hints for (lambda) parameter types:\n---```java\n---\n---List.of(1, 2, 3, 4).filter(/*Integer */ n -> n % 2 == 0).toList();\n--- \n---```\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.jdtls.Java.InlayHints.VariableTypes\n---Enable/disable inlay hints for implicit variable types:\n---```java\n---\n---var foo /* :Path */ = Path.of(\"foo\");\n--- \n---```\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.jdtls.Java.InlayHints\n---@field formatParameters? _.lspconfig.settings.jdtls.Java.InlayHints.FormatParameters\n---@field parameterNames? _.lspconfig.settings.jdtls.Java.InlayHints.ParameterNames\n---@field parameterTypes? _.lspconfig.settings.jdtls.Java.InlayHints.ParameterTypes\n---@field variableTypes? _.lspconfig.settings.jdtls.Java.InlayHints.VariableTypes\n\n---@class _.lspconfig.settings.jdtls.Java.Jdt.Ls.AndroidSupport\n---[Experimental] Specify whether to enable Android project importing. When set to `auto`, the Android support will be enabled in Visual Studio Code - Insiders.\n---\n---**Note:** Only works for Android Gradle Plugin `3.2.0` or higher.\n---\n---```lua\n---default = \"auto\"\n---```\n---@field enabled? \"auto\" | \"on\" | \"off\"\n\n---@class _.lspconfig.settings.jdtls.Java.Jdt.Ls.Appcds\n---[Experimental] Enable Java AppCDS (Application Class Data Sharing) for improvements to extension activation. When set to `auto`, AppCDS will be enabled in Visual Studio Code - Insiders, and for pre-release versions.\n---\n---```lua\n---default = \"auto\"\n---```\n---@field enabled? \"auto\" | \"on\" | \"off\"\n\n---@class _.lspconfig.settings.jdtls.Java.Jdt.Ls.AspectjSupport\n---Specify whether to enable `io.freefair.aspectj` plugin in Gradle projects. Defaults to `false`.\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.jdtls.Java.Jdt.Ls.GroovySupport\n---[Experimental] Specify whether to enable `groovy` plugin in Gradle projects. Defaults to `true`.\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.jdtls.Java.Jdt.Ls.Java\n---Specifies the folder path to the JDK (21 or more recent) used to launch the Java Language Server. This setting will replace the Java extension's embedded JRE to start the Java Language Server. \n---\n---On Windows, backslashes must be escaped, i.e.\n---\"java.jdt.ls.java.home\":\"C:\\\\Program Files\\\\Java\\\\jdk-21.0_5\"\n---@field home? string\n\n---@class _.lspconfig.settings.jdtls.Java.Jdt.Ls.Javac\n---[Experimental] Specify whether to enable Javac-based compilation in the language server. Requires running this extension with Java 25\n---\n---```lua\n---default = \"off\"\n---```\n---@field enabled? \"on\" | \"off\"\n\n---@class _.lspconfig.settings.jdtls.Java.Jdt.Ls.KotlinSupport\n---[Experimental] Specify whether to enable `org.jetbrains.kotlin.jvm` plugin in Gradle projects. Defaults to `true`.\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.jdtls.Java.Jdt.Ls.LombokSupport\n---Whether to load lombok processors from project classpath\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.jdtls.Java.Jdt.Ls.ProtobufSupport\n---Specify whether to automatically add Protobuf output source directories to the classpath.\n---\n---**Note:** Only works for Gradle `com.google.protobuf` plugin `0.8.4` or higher.\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.jdtls.Java.Jdt.Ls\n---@field androidSupport? _.lspconfig.settings.jdtls.Java.Jdt.Ls.AndroidSupport\n---@field appcds? _.lspconfig.settings.jdtls.Java.Jdt.Ls.Appcds\n---@field aspectjSupport? _.lspconfig.settings.jdtls.Java.Jdt.Ls.AspectjSupport\n---@field groovySupport? _.lspconfig.settings.jdtls.Java.Jdt.Ls.GroovySupport\n---@field java? _.lspconfig.settings.jdtls.Java.Jdt.Ls.Java\n---@field javac? _.lspconfig.settings.jdtls.Java.Jdt.Ls.Javac\n---@field kotlinSupport? _.lspconfig.settings.jdtls.Java.Jdt.Ls.KotlinSupport\n---@field lombokSupport? _.lspconfig.settings.jdtls.Java.Jdt.Ls.LombokSupport\n---@field protobufSupport? _.lspconfig.settings.jdtls.Java.Jdt.Ls.ProtobufSupport\n---Specifies extra VM arguments used to launch the Java Language Server. Eg. use `-XX:+UseParallelGC -XX:GCTimeRatio=4 -XX:AdaptiveSizePolicyWeight=90 -Dsun.zip.disableMemoryMapping=true -Xmx2G -Xms100m -Xlog:disable` to optimize memory usage with the parallel garbage collector\n---\n---```lua\n---default = \"-XX:+UseParallelGC -XX:GCTimeRatio=4 -XX:AdaptiveSizePolicyWeight=90 -Dsun.zip.disableMemoryMapping=true -Xmx2G -Xms100m -Xlog:disable\"\n---```\n---@field vmargs? string\n\n---@class _.lspconfig.settings.jdtls.Java.Jdt\n---@field ls? _.lspconfig.settings.jdtls.Java.Jdt.Ls\n\n---@class _.lspconfig.settings.jdtls.Java.Maven\n---Enable/disable download of Maven source artifacts as part of importing Maven projects.\n---@field downloadSources? boolean\n---Force update of Snapshots/Releases.\n---@field updateSnapshots? boolean\n\n---@class _.lspconfig.settings.jdtls.Java.Project\n---Project encoding settings\n---\n---```lua\n---default = \"ignore\"\n---```\n---@field encoding? \"ignore\" | \"warning\" | \"setDefault\"\n---Enable/disable the server-mode switch information, when Java projects import is skipped on startup.\n---\n---```lua\n---default = true\n---```\n---@field importHint? boolean\n---Specifies whether to import the Java projects, when opening the folder in Hybrid mode for the first time.\n---\n---```lua\n---default = \"automatic\"\n---```\n---@field importOnFirstTimeStartup? \"disabled\" | \"interactive\" | \"automatic\"\n---A relative path to the workspace where stores the compiled output. `Only` effective in the `WORKSPACE` scope. The setting will `NOT` affect Maven or Gradle project.\n---\n---```lua\n---default = \"\"\n---```\n---@field outputPath? string\n---Configure glob patterns for referencing local libraries to a Java project.\n---\n---```lua\n---default = { \"lib/**/*.jar\" }\n---```\n---@field referencedLibraries? any[]|table\n---Excludes files and folders from being refreshed by the Java Language Server, which can improve the overall performance. For example, [\"node_modules\",\"\\.git\"] will exclude all files and folders named `node_modules` or `.git`. Pattern expressions must be compatible with `java.util.regex.Pattern`. Defaults to [\"node_modules\",\"\\.git\"].\n---\n---```lua\n---default = { \"node_modules\", \"\\\\.git\" }\n---```\n---@field resourceFilters? string[]\n---Relative paths to the workspace where stores the source files. `Only` effective in the `WORKSPACE` scope. The setting will `NOT` affect Maven or Gradle project.\n---\n---```lua\n---default = {}\n---```\n---@field sourcePaths? string[]\n\n---@class _.lspconfig.settings.jdtls.Java.Quickfix\n---Show quickfixes at the problem or line level.\n---\n---```lua\n---default = \"line\"\n---```\n---@field showAt? \"line\" | \"problem\"\n\n---@class _.lspconfig.settings.jdtls.Java.Refactoring.Extract.Interface\n---Specify whether to replace all the occurrences of the subtype with the new extracted interface.\n---\n---```lua\n---default = true\n---```\n---@field replace? boolean\n\n---@class _.lspconfig.settings.jdtls.Java.Refactoring.Extract\n---@field interface? _.lspconfig.settings.jdtls.Java.Refactoring.Extract.Interface\n\n---@class _.lspconfig.settings.jdtls.Java.Refactoring\n---@field extract? _.lspconfig.settings.jdtls.Java.Refactoring.Extract\n\n---@class _.lspconfig.settings.jdtls.Java.References\n---Include getter, setter and builder/constructor when finding references.\n---\n---```lua\n---default = true\n---```\n---@field includeAccessors? boolean\n---Include declarations when finding references.\n---\n---```lua\n---default = true\n---```\n---@field includeDeclarations? boolean\n---Include the decompiled sources when finding references.\n---\n---```lua\n---default = true\n---```\n---@field includeDecompiledSources? boolean\n\n---@class _.lspconfig.settings.jdtls.Java.ReferencesCodeLens\n---Enable/disable the references code lens.\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.jdtls.Java.SaveActions\n---Enable/disable cleanup actions on save.\n---\n---```lua\n---default = true\n---```\n---@field cleanup? boolean\n---Enable/disable auto organize imports on save action\n---@field organizeImports? boolean\n\n---@class _.lspconfig.settings.jdtls.Java.Search\n---Specifies the scope which must be used for search operation like \n--- - Find Reference\n--- - Call Hierarchy\n--- - Workspace Symbols\n---\n---```lua\n---default = \"all\"\n---```\n---@field scope? \"all\" | \"main\"\n\n---@class _.lspconfig.settings.jdtls.Java.SelectionRange\n---Enable/disable Smart Selection support for Java. Disabling this option will not affect the VS Code built-in word-based and bracket-based smart selection.\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.jdtls.Java.Server\n---The launch mode for the Java extension\n---\n---```lua\n---default = \"Hybrid\"\n---```\n---@field launchMode? \"Standard\" | \"LightWeight\" | \"Hybrid\"\n\n---@class _.lspconfig.settings.jdtls.Java.Settings\n---Specifies the url or file path to the workspace Java settings. See [Setting Global Preferences](https://github.com/redhat-developer/vscode-java/wiki/Settings-Global-Preferences)\n---@field url? string\n\n---@class _.lspconfig.settings.jdtls.Java.SharedIndexes\n---[Experimental] Specify whether to share indexes between different workspaces. When set to `auto`, shared indexes will be enabled in Visual Studio Code - Insiders.\n---\n---```lua\n---default = \"auto\"\n---```\n---@field enabled? \"auto\" | \"on\" | \"off\"\n---Specifies a common index location for all workspaces. See default values as follows:\n--- \n---Windows: First use `\"$APPDATA\\\\.jdt\\\\index\"`, or `\"~\\\\.jdt\\\\index\"` if it does not exist\n--- \n---macOS: `\"~/Library/Caches/.jdt/index\"`\n--- \n---Linux: First use `\"$XDG_CACHE_HOME/.jdt/index\"`, or `\"~/.cache/.jdt/index\"` if it does not exist\n---\n---```lua\n---default = \"\"\n---```\n---@field location? string\n\n---@class _.lspconfig.settings.jdtls.Java.ShowBuildStatusOnStart\n---Automatically show build status on startup.\n---\n---```lua\n---default = \"notification\"\n---```\n---@field enabled? \"notification\" | \"terminal\" | \"off\"|any\n\n---@class _.lspconfig.settings.jdtls.Java.SignatureHelp.Description\n---Enable/disable to show the description in signature help.\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.jdtls.Java.SignatureHelp\n---@field description? _.lspconfig.settings.jdtls.Java.SignatureHelp.Description\n---Enable/disable the signature help.\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.jdtls.Java.Sources.OrganizeImports\n---Specifies the number of imports added before a star-import declaration is used.\n---\n---```lua\n---default = 99\n---```\n---@field starThreshold? integer\n---Specifies the number of static imports added before a star-import declaration is used.\n---\n---```lua\n---default = 99\n---```\n---@field staticStarThreshold? integer\n\n---@class _.lspconfig.settings.jdtls.Java.Sources\n---@field organizeImports? _.lspconfig.settings.jdtls.Java.Sources.OrganizeImports\n\n---@class _.lspconfig.settings.jdtls.Java.Symbols\n---Include generated code (e.g. Lombok getters, setters, constructors) in document outline/symbols.\n---@field includeGeneratedCode? boolean\n---Include method declarations from source files in symbol search.\n---@field includeSourceMethodDeclarations? boolean\n\n---@class _.lspconfig.settings.jdtls.Java.Templates.NewFile\n---Enable/disable automatic generation of class body and package declaration when creating a new Java file. Set to `false` to create empty Java files. Defaults to `true`.\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.jdtls.Java.Templates\n---Specifies the file header comment for new Java file. Supports configuring multi-line comments with an array of strings, and using ${variable} to reference the [predefined variables](command:_java.templateVariables).\n---\n---```lua\n---default = {}\n---```\n---@field fileHeader? any[]\n---@field newFile? _.lspconfig.settings.jdtls.Java.Templates.NewFile\n---Specifies the type comment for new Java type. Supports configuring multi-line comments with an array of strings, and using ${variable} to reference the [predefined variables](command:_java.templateVariables).\n---\n---```lua\n---default = {}\n---```\n---@field typeComment? any[]\n\n---@class _.lspconfig.settings.jdtls.Java.Trace\n---Traces the communication between VS Code and the Java language server.\n---\n---```lua\n---default = \"off\"\n---```\n---@field server? \"off\" | \"messages\" | \"verbose\"\n\n---@class _.lspconfig.settings.jdtls.Java.TypeHierarchy\n---Enable/disable lazy loading the content in type hierarchy. Lazy loading could save a lot of loading time but every type should be expanded manually to load its content.\n---@field lazyLoad? boolean\n\n---@class _.lspconfig.settings.jdtls.Java.UpdateImportsOnPaste\n---Enable/disable auto organize imports when pasting code\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.jdtls.Java\n---@field autobuild? _.lspconfig.settings.jdtls.Java.Autobuild\n---@field cleanup? _.lspconfig.settings.jdtls.Java.Cleanup\n---@field codeAction? _.lspconfig.settings.jdtls.Java.CodeAction\n---@field codeGeneration? _.lspconfig.settings.jdtls.Java.CodeGeneration\n---@field compile? _.lspconfig.settings.jdtls.Java.Compile\n---@field completion? _.lspconfig.settings.jdtls.Java.Completion\n---@field configuration? _.lspconfig.settings.jdtls.Java.Configuration\n---@field contentProvider? _.lspconfig.settings.jdtls.Java.ContentProvider\n---@field diagnostic? _.lspconfig.settings.jdtls.Java.Diagnostic\n---@field eclipse? _.lspconfig.settings.jdtls.Java.Eclipse\n---@field edit? _.lspconfig.settings.jdtls.Java.Edit\n---@field editor? _.lspconfig.settings.jdtls.Java.Editor\n---@field errors? _.lspconfig.settings.jdtls.Java.Errors\n---@field foldingRange? _.lspconfig.settings.jdtls.Java.FoldingRange\n---@field format? _.lspconfig.settings.jdtls.Java.Format\n---Specifies the folder path to the JDK (21 or more recent) used to launch the Java Language Server.\n---On Windows, backslashes must be escaped, i.e.\n---\"java.home\":\"C:\\\\Program Files\\\\Java\\\\jdk-21.0_5\"\n---@field home? string\n---@field hover? _.lspconfig.settings.jdtls.Java.Hover\n---Enable/disable the implementations code lens for the provided categories.\n---\n---```lua\n---default = \"none\"\n---```\n---@field implementationCodeLens? \"none\" | \"types\" | \"methods\" | \"all\"\n---@field import? _.lspconfig.settings.jdtls.Java.Import\n---@field imports? _.lspconfig.settings.jdtls.Java.Imports\n---@field inlayHints? _.lspconfig.settings.jdtls.Java.InlayHints\n---@field jdt? _.lspconfig.settings.jdtls.Java.Jdt\n---@field maven? _.lspconfig.settings.jdtls.Java.Maven\n---Max simultaneous project builds\n---\n---```lua\n---default = 1\n---```\n---@field maxConcurrentBuilds? integer\n---@field project? _.lspconfig.settings.jdtls.Java.Project\n---@field quickfix? _.lspconfig.settings.jdtls.Java.Quickfix\n---@field refactoring? _.lspconfig.settings.jdtls.Java.Refactoring\n---@field references? _.lspconfig.settings.jdtls.Java.References\n---@field referencesCodeLens? _.lspconfig.settings.jdtls.Java.ReferencesCodeLens\n---@field saveActions? _.lspconfig.settings.jdtls.Java.SaveActions\n---@field search? _.lspconfig.settings.jdtls.Java.Search\n---@field selectionRange? _.lspconfig.settings.jdtls.Java.SelectionRange\n---@field server? _.lspconfig.settings.jdtls.Java.Server\n---@field settings? _.lspconfig.settings.jdtls.Java.Settings\n---@field sharedIndexes? _.lspconfig.settings.jdtls.Java.SharedIndexes\n---@field showBuildStatusOnStart? _.lspconfig.settings.jdtls.Java.ShowBuildStatusOnStart\n---@field signatureHelp? _.lspconfig.settings.jdtls.Java.SignatureHelp\n---@field sources? _.lspconfig.settings.jdtls.Java.Sources\n---@field symbols? _.lspconfig.settings.jdtls.Java.Symbols\n---@field templates? _.lspconfig.settings.jdtls.Java.Templates\n---@field trace? _.lspconfig.settings.jdtls.Java.Trace\n---@field typeHierarchy? _.lspconfig.settings.jdtls.Java.TypeHierarchy\n---@field updateImportsOnPaste? _.lspconfig.settings.jdtls.Java.UpdateImportsOnPaste\n\n---@class _.lspconfig.settings.jdtls.Redhat.Telemetry\n---Enable usage data and errors to be sent to Red Hat servers. Read our [privacy statement](https://developers.redhat.com/article/tool-data-collection).\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.jdtls.Redhat\n---@field telemetry? _.lspconfig.settings.jdtls.Redhat.Telemetry\n\n---@class lspconfig.settings.jdtls\n---@field java? _.lspconfig.settings.jdtls.Java\n---@field redhat? _.lspconfig.settings.jdtls.Redhat\n"
  },
  {
    "path": "lua/lspconfig/types/lsp/jsonls.lua",
    "content": "---@meta\n\n---@class _.lspconfig.settings.jsonls.Json.ColorDecorators\n---Enables or disables color decorators\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n\n---@class _.lspconfig.settings.jsonls.Json.Format\n---Enable/disable default JSON formatter\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n---Keep all existing new lines when formatting.\n---@field keepLines? boolean\n\n---@class _.lspconfig.settings.jsonls.Json.SchemaDownload\n---When enabled, JSON schemas can be fetched from http and https locations.\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n---List of trusted domains for downloading JSON schemas over http(s). Use `*` to trust all domains. `*` can also be used as a wildcard in domain names.\n---\n---```lua\n---default = {\n---  [\"https://developer.microsoft.com/json-schemas/\"] = true,\n---  [\"https://json-schema.org/\"] = true,\n---  [\"https://json.schemastore.org/\"] = true,\n---  [\"https://raw.githubusercontent.com/devcontainers/spec/\"] = true,\n---  [\"https://raw.githubusercontent.com/microsoft/vscode/\"] = true,\n---  [\"https://schemastore.azurewebsites.net/\"] = true,\n---  [\"https://www.schemastore.org/\"] = true\n---}\n---```\n---@field trustedDomains? table\n\n---@class _.lspconfig.settings.jsonls.Json.Trace\n---Traces the communication between VS Code and the JSON language server.\n---\n---```lua\n---default = \"off\"\n---```\n---@field server? \"off\" | \"messages\" | \"verbose\"\n\n---@class _.lspconfig.settings.jsonls.Json.Validate\n---Enable/disable JSON validation.\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n\n---@class _.lspconfig.settings.jsonls.Json\n---@field colorDecorators? _.lspconfig.settings.jsonls.Json.ColorDecorators\n---@field format? _.lspconfig.settings.jsonls.Json.Format\n---The maximum number of outline symbols and folding regions computed (limited for performance reasons).\n---\n---```lua\n---default = 5000\n---```\n---@field maxItemsComputed? number\n---@field schemaDownload? _.lspconfig.settings.jsonls.Json.SchemaDownload\n---Associate schemas to JSON files in the current project.\n---@field schemas? table[]\n---@field trace? _.lspconfig.settings.jsonls.Json.Trace\n---@field validate? _.lspconfig.settings.jsonls.Json.Validate\n\n---@class lspconfig.settings.jsonls\n---@field json? _.lspconfig.settings.jsonls.Json\n"
  },
  {
    "path": "lua/lspconfig/types/lsp/julials.lua",
    "content": "---@meta\n\n---@class _.lspconfig.settings.julials.Julia.Execution\n---Print executed code in REPL and append it to the REPL history.\n---@field codeInREPL? boolean\n---Show separate inline results for all code blocks in a cell\n---@field inlineResultsForCellEvaluation? boolean\n---Global override for the code execution module. Leave empty to automatically choose a context module.\n---\n---```lua\n---default = \"\"\n---```\n---@field module? string\n---Specifies how to show inline execution results\n---\n---```lua\n---default = \"both\"\n---```\n---@field resultType? \"REPL\" | \"inline\" | \"inline, errors in REPL\" | \"both\"\n---Save file before execution\n---@field saveOnEval? boolean\n\n---@class _.lspconfig.settings.julials.Julia.InlayHints.Runtime\n---Enable display of runtime inlay hints. These hints are provided by packages that overload a `show` method for the `application/vnd.julia-vscode.inlayHints` MIME type.\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.julials.Julia.InlayHints.Static.ParameterNames\n---Enable name hints for function parameters:\n---```julia\n---foo(#= bar: =# 42)\n---```\n---\n---```lua\n---default = \"literals\"\n---```\n---@field enabled? \"none\" | \"literals\" | \"all\"\n\n---@class _.lspconfig.settings.julials.Julia.InlayHints.Static.VariableTypes\n---Enable type hints for variable definitions:\n---```julia\n---foo #=::Int64=# = 42\n---```\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.julials.Julia.InlayHints.Static\n---Enable display of static inlay hints.\n---@field enabled? boolean\n---@field parameterNames? _.lspconfig.settings.julials.Julia.InlayHints.Static.ParameterNames\n---@field variableTypes? _.lspconfig.settings.julials.Julia.InlayHints.Static.VariableTypes\n\n---@class _.lspconfig.settings.julials.Julia.InlayHints\n---@field runtime? _.lspconfig.settings.julials.Julia.InlayHints.Runtime\n---@field static? _.lspconfig.settings.julials.Julia.InlayHints.Static\n\n---@class _.lspconfig.settings.julials.Julia.Juliaup.Install\n---Show Juliaup install recommendation.\n---\n---```lua\n---default = true\n---```\n---@field hint? boolean\n\n---@class _.lspconfig.settings.julials.Julia.Juliaup\n---If enabled and a custom Juliaup server is set via `julia.juliaup.server`, Juliaup related configuration will be stored in a server-scoped directory. If the `JULIAUP_DEPOT_PATH` environment variable is set, this setting has no effect.\n---\n---```lua\n---default = true\n---```\n---@field customDepot? boolean\n---@field install? _.lspconfig.settings.julials.Julia.Juliaup.Install\n---Juliaup mirror. Defaults to the official sources.\n---@field server? string\n\n---@class _.lspconfig.settings.julials.Julia.Lint\n---This compares call signatures against all known methods for the called function. Calls with too many or too few arguments, or unknown keyword parameters are highlighted.\n---\n---```lua\n---default = true\n---```\n---@field call? boolean\n---Check for constant conditionals in if statements that result in branches never being reached.\n---\n---```lua\n---default = true\n---```\n---@field constif? boolean\n---Check variables used in type declarations are datatypes.\n---\n---```lua\n---default = true\n---```\n---@field datadecl? boolean\n---Specifies sub-directories in [a package directory](https://docs.julialang.org/en/v1/manual/code-loading/#Package-directories-1) where only basic linting is. This drastically lowers the chance for false positives.\n---\n---```lua\n---default = { \"docs\", \"test\" }\n---```\n---@field disabledDirs? any[]\n---Check iterator syntax of loops. Will identify, for example, attempts to iterate over single values.\n---\n---```lua\n---default = true\n---```\n---@field iter? boolean\n---Check for deterministic lazy boolean operators.\n---\n---```lua\n---default = true\n---```\n---@field lazy? boolean\n---Highlight unknown symbols. The `symbols` option will not mark unknown fields.\n---\n---```lua\n---default = \"none\"\n---```\n---@field missingrefs? \"none\" | \"symbols\" | \"all\"\n---Check submodule names do not shadow their parent's name.\n---\n---```lua\n---default = true\n---```\n---@field modname? boolean\n---Check for use of `==` rather than `===` when comparing against `nothing`.\n---\n---```lua\n---default = true\n---```\n---@field nothingcomp? boolean\n---Check for type piracy - the overloading of external functions with methods specified for external datatypes. 'External' here refers to imported code.\n---\n---```lua\n---default = true\n---```\n---@field pirates? boolean\n---Run the linter on active files.\n---\n---```lua\n---default = true\n---```\n---@field run? boolean\n---Check parameters declared in `where` statements or datatype declarations are used.\n---\n---```lua\n---default = true\n---```\n---@field typeparam? boolean\n---Check that all declared arguments are used within the function body.\n---\n---```lua\n---default = true\n---```\n---@field useoffuncargs? boolean\n\n---@class _.lspconfig.settings.julials.Julia.PersistentSession\n---Always copy the command for connecting to an external REPL to the clipboard.\n---@field alwaysCopy? boolean\n---Behaviour when stopping a persistent session.\n---\n---```lua\n---default = \"ask\"\n---```\n---@field closeStrategy? \"ask\" | \"close\" | \"disconnect\"\n---Experimental: Starts the interactive Julia session in a persistent `tmux` session. Note that `tmux` must be available in the shell defined with `#julia.persistentSession.shell#`.\n---@field enabled? boolean\n---Shell used to start the persistent session.\n---\n---```lua\n---default = \"/bin/sh\"\n---```\n---@field shell? string\n---Argument to execute code in the configured shell, e.g. `-c` for sh-likes or `/c` for `cmd`. Can contain multiple arguments separated by spaces.\n---\n---```lua\n---default = \"-c\"\n---```\n---@field shellExecutionArgument? string\n---Name of the `tmux` session. Explicitly supports substitution for the `${userHome}`, `${workspaceFolder}`, `${workspaceFolderBasename}`, `${workspaceFolder:<FOLDER_NAME>}`, `${pathSeparator}`, `${env:<ENVIRONMENT_VARIABLE>}`, `${config:<CONFIG_VARIABLE>} tokens.\n---\n---```lua\n---default = \"julia_vscode\"\n---```\n---@field tmuxSessionName? string\n\n---@class _.lspconfig.settings.julials.Julia.Plots\n---Default MIME type for plots. Determines whether plots are rendered as PNG or SVG by default.\n---\n---```lua\n---default = \"image/png\"\n---```\n---@field defaultMimeType? \"image/png\" | \"image/svg+xml\"\n---Default directory for saving plots. Can either be relative to the current workspace or absolute.\n---@field path? string\n\n---@class _.lspconfig.settings.julials.Julia.Repl\n---Experimental: Keeps the terminal window around even if the underlying Julia process is terminated to help debugging of fatal errors. Try disabling this if you see rendering issues in the integrated Julia REPL.\n---@field keepAlive? boolean\n\n---@class _.lspconfig.settings.julials.Julia.Trace\n---Traces the communication between VS Code and the language server.\n---\n---```lua\n---default = \"off\"\n---```\n---@field server? \"off\" | \"messages\" | \"verbose\"\n\n---@class _.lspconfig.settings.julials.Julia.Workspace\n---Show top-level modules in the workspace.\n---\n---```lua\n---default = true\n---```\n---@field showModules? boolean\n\n---@class _.lspconfig.settings.julials.Julia\n---Number of threads to use for Julia processes. A value of `auto` works on Julia versions that allow for `--threads=auto`.\n---@field NumThreads? integer|string\n---Additional Julia arguments.\n---\n---```lua\n---default = {}\n---```\n---@field additionalArgs? any[]\n---Cell delimiter regular expressions for Julia files.\n---\n---```lua\n---default = { \"^[ \\\\t]?#[ \\\\t]#+\", \"^##(?!#)\", \"^#([ \\\\t]?)%%\", \"^##([ \\\\t]?)-\", \"^##([ \\\\t]?)\\\\+\" }\n---```\n---@field cellDelimiters? any[]\n---Sets the mode for completions.\n---\n---```lua\n---default = \"qualify\"\n---```\n---@field completionmode? \"exportedonly\" | \"import\" | \"qualify\"\n---Functions or modules that are set to compiled mode when setting the defaults.\n---\n---```lua\n---default = { \"ALL_MODULES_EXCEPT_MAIN\" }\n---```\n---@field debuggerDefaultCompiled? any[]\n---Delete Julia .cov files when running tests with coverage, leaving only a .lcov file behind.\n---\n---```lua\n---default = true\n---```\n---@field deleteJuliaCovFiles? boolean\n---Command to open files from the REPL (via setting the `JULIA_EDITOR` environment variable).\n---\n---```lua\n---default = \"code\"\n---```\n---@field editor? string\n---Enable crash reports to be sent to the julia VS Code extension developers.\n---@field enableCrashReporter? boolean\n---Enable usage data and errors to be sent to the julia VS Code extension developers.\n---@field enableTelemetry? boolean\n---Path to a julia environment. VS Code needs to be reloaded for changes to take effect. Explicitly supports substitution for the `${userHome}`, `${workspaceFolder}`, `${workspaceFolderBasename}`, `${workspaceFolder:<FOLDER_NAME>}`, `${pathSeparator}`, `${env:<ENVIRONMENT_VARIABLE>}`, `${config:<CONFIG_VARIABLE>}` tokens.\n---@field environmentPath? string\n---Environment variables that are added to the Julia executable's environment for every Julia process started by this extension. Variables defined here will be merged with (and usually override) the default process environment, but various environment variables will get overridden for some processes for stability reasons.\n---\n---```lua\n---default = {}\n---```\n---@field environmentVariables? table\n---Points to the Julia executable. This can either be an absolute path, an executable on your PATH, or a juliaup channel (valid formats `julia +$channel`, `+$channel`).\n---\n---```lua\n---default = \"\"\n---```\n---@field executablePath? string\n---@field execution? _.lspconfig.settings.julials.Julia.Execution\n---Whether to automatically show the plot navigator when plotting.\n---@field focusPlotNavigator? boolean\n---@field inlayHints? _.lspconfig.settings.julials.Julia.InlayHints\n---@field juliaup? _.lspconfig.settings.julials.Julia.Juliaup\n---Points to the julia executable used to launch the language server process. This overwrites julia.executablePath for the language server launch if present.\n---\n---```lua\n---default = \"\"\n---```\n---@field languageServerExecutablePath? string\n---Juliaup channel to use for the language server (e.g., 'release', 'lts', 'beta'). Can be overridden by JULIA_VSCODE_LANGUAGESERVER_CHANNEL environment variable.\n---\n---```lua\n---default = \"release\"\n---```\n---@field languageServerJuliaupChannel? string\n---@field lint? _.lspconfig.settings.julials.Julia.Lint\n---Number of processes to use for testing.\n---\n---```lua\n---default = 1\n---```\n---@field numTestProcesses? integer\n---Julia package server. Sets the `JULIA_PKG_SERVER` environment variable *before* starting a Julia process. Leave this empty to use the systemwide default. Requires a restart of the Julia process.\n---\n---```lua\n---default = \"\"\n---```\n---@field packageServer? string\n---@field persistentSession? _.lspconfig.settings.julials.Julia.PersistentSession\n---@field plots? _.lspconfig.settings.julials.Julia.Plots\n---@field repl? _.lspconfig.settings.julials.Julia.Repl\n---Request runtime completions from the integrated REPL.\n---@field runtimeCompletions? boolean\n---Enable display of runtime diagnostics. These diagnostics are provided by packages that overload a `show` method for the `application/vnd.julia-vscode.diagnostics` MIME type.\n---\n---```lua\n---default = true\n---```\n---@field showRuntimeDiagnostics? boolean\n---Download symbol server cache files from GitHub.\n---@field symbolCacheDownload? boolean\n---Symbol server cache download URL.\n---\n---```lua\n---default = \"https://www.julia-vscode.org/symbolcache\"\n---```\n---@field symbolserverUpstream? string\n---@field trace? _.lspconfig.settings.julials.Julia.Trace\n---Enable highlighting of the current cell delimited by `#julia.cellDelimiters#`.\n---\n---```lua\n---default = true\n---```\n---@field useCellHighlighting? boolean\n---Enable CodeLens for showing run actions above cells delimited by `#julia.cellDelimiters#`.\n---\n---```lua\n---default = true\n---```\n---@field useCodeLens? boolean\n---Display plots within VS Code. Might require a restart of the Julia process.\n---\n---```lua\n---default = true\n---```\n---@field usePlotPane? boolean\n---Display [progress bars](https://github.com/JunoLab/ProgressLogging.jl) within VS Code.\n---\n---```lua\n---default = true\n---```\n---@field useProgressFrontend? boolean\n---Load Revise.jl on startup of the REPL.\n---\n---```lua\n---default = true\n---```\n---@field useRevise? boolean\n---@field workspace? _.lspconfig.settings.julials.Julia.Workspace\n\n---@class lspconfig.settings.julials\n---@field julia? _.lspconfig.settings.julials.Julia\n"
  },
  {
    "path": "lua/lspconfig/types/lsp/kotlin_language_server.lua",
    "content": "---@meta\n\n---@class _.lspconfig.settings.kotlin_language_server.Kotlin.Codegen\n---Whether to enable code generation to a temporary build output directory for Java interoperability (via the non-standard kotlin/buildOutputLocation LSP method). Experimental.\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.kotlin_language_server.Kotlin.Compiler.Jvm\n---Specifies the JVM target, e.g. \"1.6\" or \"1.8\"\n---\n---```lua\n---default = \"default\"\n---```\n---@field target? string\n\n---@class _.lspconfig.settings.kotlin_language_server.Kotlin.Compiler\n---@field jvm? _.lspconfig.settings.kotlin_language_server.Kotlin.Compiler.Jvm\n\n---@class _.lspconfig.settings.kotlin_language_server.Kotlin.Completion.Snippets\n---Specifies whether code completion should provide snippets (true) or plain-text items (false).\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.kotlin_language_server.Kotlin.Completion\n---@field snippets? _.lspconfig.settings.kotlin_language_server.Kotlin.Completion.Snippets\n\n---@class _.lspconfig.settings.kotlin_language_server.Kotlin.DebugAdapter\n---[Recommended] Specifies whether the debug adapter should be used. When enabled a debugger for Kotlin will be available.\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n---Optionally a custom path to the debug adapter executable.\n---\n---```lua\n---default = \"\"\n---```\n---@field path? string\n\n---@class _.lspconfig.settings.kotlin_language_server.Kotlin.Diagnostics\n---[DEBUG] Specifies the debounce time limit. Lower to increase responsiveness at the cost of possible stability issues.\n---\n---```lua\n---default = 250\n---```\n---@field debounceTime? integer\n---Whether diagnostics (e.g. errors or warnings from the Kotlin compiler) should be emitted.\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n---The minimum severity of diagnostics to emit.\n---\n---```lua\n---default = \"hint\"\n---```\n---@field level? \"error\" | \"warning\" | \"information\" | \"hint\"\n\n---@class _.lspconfig.settings.kotlin_language_server.Kotlin.ExternalSources\n---Specifies whether decompiled/external classes should be auto-converted to Kotlin.\n---@field autoConvertToKotlin? boolean\n---[Recommended] Specifies whether URIs inside JARs should be represented using the 'kls'-scheme.\n---\n---```lua\n---default = true\n---```\n---@field useKlsScheme? boolean\n\n---@class _.lspconfig.settings.kotlin_language_server.Kotlin.Indexing\n---Whether global symbols in the project should be indexed automatically in the background. This enables e.g. code completion for unimported classes and functions.\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.kotlin_language_server.Kotlin.InlayHints\n---Whether to provide inlay hints on chained function calls or not.\n---@field chainedHints? boolean\n---Whether to provide inlay hints for parameters on call sites or not.\n---@field parameterHints? boolean\n---Whether to provide inlay hints for types on declaration sites or not.\n---@field typeHints? boolean\n\n---@class _.lspconfig.settings.kotlin_language_server.Kotlin.Java\n---A custom JAVA_HOME for the language server and debug adapter to use.\n---\n---```lua\n---default = \"\"\n---```\n---@field home? string\n---Custom options using JAVA_OPTS for the language server and debug adapter.\n---\n---```lua\n---default = \"\"\n---```\n---@field opts? string\n\n---@class _.lspconfig.settings.kotlin_language_server.Kotlin.LanguageServer.DebugAttach\n---[DEBUG] If enabled (together with debugAttach.enabled), the language server will not immediately launch but instead listen on the specified attach port and wait for a debugger. This is ONLY useful if you need to debug the language server ITSELF.\n---@field autoSuspend? boolean\n---[DEBUG] Whether the language server should listen for debuggers, i.e. be debuggable while running in VSCode. This is ONLY useful if you need to debug the language server ITSELF.\n---@field enabled? boolean\n---[DEBUG] If transport is stdio this enables you to attach to the running language server with a debugger. This is ONLY useful if you need to debug the language server ITSELF.\n---\n---```lua\n---default = 5005\n---```\n---@field port? integer\n\n---@class _.lspconfig.settings.kotlin_language_server.Kotlin.LanguageServer\n---@field debugAttach? _.lspconfig.settings.kotlin_language_server.Kotlin.LanguageServer.DebugAttach\n---[Recommended] Specifies whether the language server should be used. When enabled the extension will provide code completions and linting, otherwise just syntax highlighting. Might require a reload to apply.\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n---Optionally a custom path to the language server executable.\n---\n---```lua\n---default = \"\"\n---```\n---@field path? string\n---The port to which the client will attempt to connect to. A random port is used if zero. Only used if the transport layer is TCP.\n---\n---```lua\n---default = 0\n---```\n---@field port? integer\n---The transport layer beneath the language server protocol. Note that the extension will launch the server even if a TCP socket is used.\n---\n---```lua\n---default = \"stdio\"\n---```\n---@field transport? \"stdio\" | \"tcp\"\n---Specifies glob patterns of files, which would be watched by LSP client. The LSP client doesn't support watching files outside a workspace folder.\n---\n---```lua\n---default = { \"**/*.kt\", \"**/*.kts\", \"**/*.java\", \"**/pom.xml\", \"**/build.gradle\", \"**/settings.gradle\" }\n---```\n---@field watchFiles? any[]\n\n---@class _.lspconfig.settings.kotlin_language_server.Kotlin.Linting\n---[DEBUG] Specifies the debounce time limit. Lower to increase responsiveness at the cost of possible stability issues.\n---\n---```lua\n---default = 250\n---```\n---@field debounceTime? integer\n\n---@class _.lspconfig.settings.kotlin_language_server.Kotlin.Scripts\n---Whether language features are provided for .gradle.kts scripts. Experimental and may not work properly.\n---@field buildScriptsEnabled? boolean\n---Whether language features are provided for .kts scripts. Experimental and may not work properly.\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.kotlin_language_server.Kotlin.Trace\n---Traces the communication between VSCode and the Kotlin language server.\n---\n---```lua\n---default = \"off\"\n---```\n---@field server? \"off\" | \"messages\" | \"verbose\"\n\n---@class _.lspconfig.settings.kotlin_language_server.Kotlin\n---@field codegen? _.lspconfig.settings.kotlin_language_server.Kotlin.Codegen\n---@field compiler? _.lspconfig.settings.kotlin_language_server.Kotlin.Compiler\n---@field completion? _.lspconfig.settings.kotlin_language_server.Kotlin.Completion\n---[DEPRECATED] Specifies the debounce time limit. Lower to increase responsiveness at the cost of possible stability issues.\n---\n---```lua\n---default = 250\n---```\n---@field debounceTime? integer\n---@field debugAdapter? _.lspconfig.settings.kotlin_language_server.Kotlin.DebugAdapter\n---@field diagnostics? _.lspconfig.settings.kotlin_language_server.Kotlin.Diagnostics\n---@field externalSources? _.lspconfig.settings.kotlin_language_server.Kotlin.ExternalSources\n---@field indexing? _.lspconfig.settings.kotlin_language_server.Kotlin.Indexing\n---@field inlayHints? _.lspconfig.settings.kotlin_language_server.Kotlin.InlayHints\n---@field java? _.lspconfig.settings.kotlin_language_server.Kotlin.Java\n---@field languageServer? _.lspconfig.settings.kotlin_language_server.Kotlin.LanguageServer\n---@field linting? _.lspconfig.settings.kotlin_language_server.Kotlin.Linting\n---@field scripts? _.lspconfig.settings.kotlin_language_server.Kotlin.Scripts\n---[DEPRECATED] Specifies whether code completion should provide snippets (true) or plain-text items (false).\n---\n---```lua\n---default = true\n---```\n---@field snippetsEnabled? boolean\n---@field trace? _.lspconfig.settings.kotlin_language_server.Kotlin.Trace\n\n---@class lspconfig.settings.kotlin_language_server\n---@field kotlin? _.lspconfig.settings.kotlin_language_server.Kotlin\n"
  },
  {
    "path": "lua/lspconfig/types/lsp/ltex.lua",
    "content": "---@meta\n\n---@class _.lspconfig.settings.ltex.Ltex.AdditionalRules\n---Enable LanguageTool rules that are marked as picky and that are disabled by default, e.g., rules about passive voice, sentence length, etc., at the cost of more false positives.\n---@field enablePickyRules? boolean\n---Optional path to a directory with rules of a language model with *n*-gram occurrence counts. Set this setting to the parent directory that contains subdirectories for languages (e.g., `en`).\n---\n---```lua\n---default = \"\"\n---```\n---@field languageModel? string\n---Optional mother tongue of the user (e.g., `\"de-DE\"`). [More info...](https://valentjn.github.io/ltex/settings.html#ltexadditionalrulesmothertongue)\n---\n---```lua\n---default = \"\"\n---```\n---@field motherTongue? \"\" | \"ar\" | \"ast-ES\" | \"be-BY\" | \"br-FR\" | \"ca-ES\" | \"ca-ES-valencia\" | \"da-DK\" | \"de\" | \"de-AT\" | \"de-CH\" | \"de-DE\" | \"de-DE-x-simple-language\" | \"el-GR\" | \"en\" | \"en-AU\" | \"en-CA\" | \"en-GB\" | \"en-NZ\" | \"en-US\" | \"en-ZA\" | \"eo\" | \"es\" | \"es-AR\" | \"fa\" | \"fr\" | \"ga-IE\" | \"gl-ES\" | \"it\" | \"ja-JP\" | \"km-KH\" | \"nl\" | \"nl-BE\" | \"pl-PL\" | \"pt\" | \"pt-AO\" | \"pt-BR\" | \"pt-MZ\" | \"pt-PT\" | \"ro-RO\" | \"ru-RU\" | \"sk-SK\" | \"sl-SI\" | \"sv\" | \"ta-IN\" | \"tl-PH\" | \"uk-UA\" | \"zh-CN\"\n---Optional path to a directory with rules of a pretrained neural network model.\n---\n---```lua\n---default = \"\"\n---```\n---@field neuralNetworkModel? string\n---Optional path to a directory with rules of a word2vec language model.\n---\n---```lua\n---default = \"\"\n---```\n---@field word2VecModel? string\n\n---@class _.lspconfig.settings.ltex.Ltex.Bibtex\n---List of BibTeX fields whose values are to be checked in BibTeX files. [More info...](https://valentjn.github.io/ltex/settings.html#ltexbibtexfields)\n---\n---```lua\n---default = {}\n---```\n---@field fields? table\n\n---Controls which `settings.json` or external setting file ([see documentation](https://valentjn.github.io/ltex/vscode-ltex/setting-scopes-files.html#external-setting-files)) to update when using one of the quick fixes.\n---\n---```lua\n---default = {\n---  dictionary = \"workspaceFolderExternalFile\",\n---  disabledRules = \"workspaceFolderExternalFile\",\n---  hiddenFalsePositives = \"workspaceFolderExternalFile\"\n---}\n---```\n---@class _.lspconfig.settings.ltex.Ltex.ConfigurationTarget\n---@field dictionary? \"user\" | \"workspace\" | \"workspaceFolder\" | \"userExternalFile\" | \"workspaceExternalFile\" | \"workspaceFolderExternalFile\"\n---@field disabledRules? \"user\" | \"workspace\" | \"workspaceFolder\" | \"userExternalFile\" | \"workspaceExternalFile\" | \"workspaceFolderExternalFile\"\n---@field hiddenFalsePositives? \"user\" | \"workspace\" | \"workspaceFolder\" | \"userExternalFile\" | \"workspaceExternalFile\" | \"workspaceFolderExternalFile\"\n\n---Lists of additional words that should not be counted as spelling errors. [More info...](https://valentjn.github.io/ltex/settings.html#ltexdictionary)\n---\n---```lua\n---default = {}\n---```\n---@class _.lspconfig.settings.ltex.Ltex.Dictionary\n---List of additional `ar` (Arabic) words that should not be counted as spelling errors.\n---@field ar? string[]\n---List of additional `ast-ES` (Asturian) words that should not be counted as spelling errors.\n---@field [\"ast-ES\"]? string[]\n---List of additional `be-BY` (Belarusian) words that should not be counted as spelling errors.\n---@field [\"be-BY\"]? string[]\n---List of additional `br-FR` (Breton) words that should not be counted as spelling errors.\n---@field [\"br-FR\"]? string[]\n---List of additional `ca-ES` (Catalan) words that should not be counted as spelling errors.\n---@field [\"ca-ES\"]? string[]\n---List of additional `ca-ES-valencia` (Catalan (Valencian)) words that should not be counted as spelling errors.\n---@field [\"ca-ES-valencia\"]? string[]\n---List of additional `da-DK` (Danish) words that should not be counted as spelling errors.\n---@field [\"da-DK\"]? string[]\n---List of additional `de` (German) words that should not be counted as spelling errors.\n---@field de? string[]\n---List of additional `de-AT` (German (Austria)) words that should not be counted as spelling errors.\n---@field [\"de-AT\"]? string[]\n---List of additional `de-CH` (German (Swiss)) words that should not be counted as spelling errors.\n---@field [\"de-CH\"]? string[]\n---List of additional `de-DE` (German (Germany)) words that should not be counted as spelling errors.\n---@field [\"de-DE\"]? string[]\n---List of additional `de-DE-x-simple-language` (Simple German) words that should not be counted as spelling errors.\n---@field [\"de-DE-x-simple-language\"]? string[]\n---List of additional `el-GR` (Greek) words that should not be counted as spelling errors.\n---@field [\"el-GR\"]? string[]\n---List of additional `en` (English) words that should not be counted as spelling errors.\n---@field en? string[]\n---List of additional `en-AU` (English (Australian)) words that should not be counted as spelling errors.\n---@field [\"en-AU\"]? string[]\n---List of additional `en-CA` (English (Canadian)) words that should not be counted as spelling errors.\n---@field [\"en-CA\"]? string[]\n---List of additional `en-GB` (English (GB)) words that should not be counted as spelling errors.\n---@field [\"en-GB\"]? string[]\n---List of additional `en-NZ` (English (New Zealand)) words that should not be counted as spelling errors.\n---@field [\"en-NZ\"]? string[]\n---List of additional `en-US` (English (US)) words that should not be counted as spelling errors.\n---@field [\"en-US\"]? string[]\n---List of additional `en-ZA` (English (South African)) words that should not be counted as spelling errors.\n---@field [\"en-ZA\"]? string[]\n---List of additional `eo` (Esperanto) words that should not be counted as spelling errors.\n---@field eo? string[]\n---List of additional `es` (Spanish) words that should not be counted as spelling errors.\n---@field es? string[]\n---List of additional `es-AR` (Spanish (voseo)) words that should not be counted as spelling errors.\n---@field [\"es-AR\"]? string[]\n---List of additional `fa` (Persian) words that should not be counted as spelling errors.\n---@field fa? string[]\n---List of additional `fr` (French) words that should not be counted as spelling errors.\n---@field fr? string[]\n---List of additional `ga-IE` (Irish) words that should not be counted as spelling errors.\n---@field [\"ga-IE\"]? string[]\n---List of additional `gl-ES` (Galician) words that should not be counted as spelling errors.\n---@field [\"gl-ES\"]? string[]\n---List of additional `it` (Italian) words that should not be counted as spelling errors.\n---@field it? string[]\n---List of additional `ja-JP` (Japanese) words that should not be counted as spelling errors.\n---@field [\"ja-JP\"]? string[]\n---List of additional `km-KH` (Khmer) words that should not be counted as spelling errors.\n---@field [\"km-KH\"]? string[]\n---List of additional `nl` (Dutch) words that should not be counted as spelling errors.\n---@field nl? string[]\n---List of additional `nl-BE` (Dutch (Belgium)) words that should not be counted as spelling errors.\n---@field [\"nl-BE\"]? string[]\n---List of additional `pl-PL` (Polish) words that should not be counted as spelling errors.\n---@field [\"pl-PL\"]? string[]\n---List of additional `pt` (Portuguese) words that should not be counted as spelling errors.\n---@field pt? string[]\n---List of additional `pt-AO` (Portuguese (Angola preAO)) words that should not be counted as spelling errors.\n---@field [\"pt-AO\"]? string[]\n---List of additional `pt-BR` (Portuguese (Brazil)) words that should not be counted as spelling errors.\n---@field [\"pt-BR\"]? string[]\n---List of additional `pt-MZ` (Portuguese (Moçambique preAO)) words that should not be counted as spelling errors.\n---@field [\"pt-MZ\"]? string[]\n---List of additional `pt-PT` (Portuguese (Portugal)) words that should not be counted as spelling errors.\n---@field [\"pt-PT\"]? string[]\n---List of additional `ro-RO` (Romanian) words that should not be counted as spelling errors.\n---@field [\"ro-RO\"]? string[]\n---List of additional `ru-RU` (Russian) words that should not be counted as spelling errors.\n---@field [\"ru-RU\"]? string[]\n---List of additional `sk-SK` (Slovak) words that should not be counted as spelling errors.\n---@field [\"sk-SK\"]? string[]\n---List of additional `sl-SI` (Slovenian) words that should not be counted as spelling errors.\n---@field [\"sl-SI\"]? string[]\n---List of additional `sv` (Swedish) words that should not be counted as spelling errors.\n---@field sv? string[]\n---List of additional `ta-IN` (Tamil) words that should not be counted as spelling errors.\n---@field [\"ta-IN\"]? string[]\n---List of additional `tl-PH` (Tagalog) words that should not be counted as spelling errors.\n---@field [\"tl-PH\"]? string[]\n---List of additional `uk-UA` (Ukrainian) words that should not be counted as spelling errors.\n---@field [\"uk-UA\"]? string[]\n---List of additional `zh-CN` (Chinese) words that should not be counted as spelling errors.\n---@field [\"zh-CN\"]? string[]\n\n---Lists of rules that should be disabled (if enabled by default by LanguageTool). [More info...](https://valentjn.github.io/ltex/settings.html#ltexdisabledrules)\n---\n---```lua\n---default = {}\n---```\n---@class _.lspconfig.settings.ltex.Ltex.DisabledRules\n---List of additional `ar` (Arabic) rules that should be disabled (if enabled by default by LanguageTool).\n---@field ar? string[]\n---List of additional `ast-ES` (Asturian) rules that should be disabled (if enabled by default by LanguageTool).\n---@field [\"ast-ES\"]? string[]\n---List of additional `be-BY` (Belarusian) rules that should be disabled (if enabled by default by LanguageTool).\n---@field [\"be-BY\"]? string[]\n---List of additional `br-FR` (Breton) rules that should be disabled (if enabled by default by LanguageTool).\n---@field [\"br-FR\"]? string[]\n---List of additional `ca-ES` (Catalan) rules that should be disabled (if enabled by default by LanguageTool).\n---@field [\"ca-ES\"]? string[]\n---List of additional `ca-ES-valencia` (Catalan (Valencian)) rules that should be disabled (if enabled by default by LanguageTool).\n---@field [\"ca-ES-valencia\"]? string[]\n---List of additional `da-DK` (Danish) rules that should be disabled (if enabled by default by LanguageTool).\n---@field [\"da-DK\"]? string[]\n---List of additional `de` (German) rules that should be disabled (if enabled by default by LanguageTool).\n---@field de? string[]\n---List of additional `de-AT` (German (Austria)) rules that should be disabled (if enabled by default by LanguageTool).\n---@field [\"de-AT\"]? string[]\n---List of additional `de-CH` (German (Swiss)) rules that should be disabled (if enabled by default by LanguageTool).\n---@field [\"de-CH\"]? string[]\n---List of additional `de-DE` (German (Germany)) rules that should be disabled (if enabled by default by LanguageTool).\n---@field [\"de-DE\"]? string[]\n---List of additional `de-DE-x-simple-language` (Simple German) rules that should be disabled (if enabled by default by LanguageTool).\n---@field [\"de-DE-x-simple-language\"]? string[]\n---List of additional `el-GR` (Greek) rules that should be disabled (if enabled by default by LanguageTool).\n---@field [\"el-GR\"]? string[]\n---List of additional `en` (English) rules that should be disabled (if enabled by default by LanguageTool).\n---@field en? string[]\n---List of additional `en-AU` (English (Australian)) rules that should be disabled (if enabled by default by LanguageTool).\n---@field [\"en-AU\"]? string[]\n---List of additional `en-CA` (English (Canadian)) rules that should be disabled (if enabled by default by LanguageTool).\n---@field [\"en-CA\"]? string[]\n---List of additional `en-GB` (English (GB)) rules that should be disabled (if enabled by default by LanguageTool).\n---@field [\"en-GB\"]? string[]\n---List of additional `en-NZ` (English (New Zealand)) rules that should be disabled (if enabled by default by LanguageTool).\n---@field [\"en-NZ\"]? string[]\n---List of additional `en-US` (English (US)) rules that should be disabled (if enabled by default by LanguageTool).\n---@field [\"en-US\"]? string[]\n---List of additional `en-ZA` (English (South African)) rules that should be disabled (if enabled by default by LanguageTool).\n---@field [\"en-ZA\"]? string[]\n---List of additional `eo` (Esperanto) rules that should be disabled (if enabled by default by LanguageTool).\n---@field eo? string[]\n---List of additional `es` (Spanish) rules that should be disabled (if enabled by default by LanguageTool).\n---@field es? string[]\n---List of additional `es-AR` (Spanish (voseo)) rules that should be disabled (if enabled by default by LanguageTool).\n---@field [\"es-AR\"]? string[]\n---List of additional `fa` (Persian) rules that should be disabled (if enabled by default by LanguageTool).\n---@field fa? string[]\n---List of additional `fr` (French) rules that should be disabled (if enabled by default by LanguageTool).\n---@field fr? string[]\n---List of additional `ga-IE` (Irish) rules that should be disabled (if enabled by default by LanguageTool).\n---@field [\"ga-IE\"]? string[]\n---List of additional `gl-ES` (Galician) rules that should be disabled (if enabled by default by LanguageTool).\n---@field [\"gl-ES\"]? string[]\n---List of additional `it` (Italian) rules that should be disabled (if enabled by default by LanguageTool).\n---@field it? string[]\n---List of additional `ja-JP` (Japanese) rules that should be disabled (if enabled by default by LanguageTool).\n---@field [\"ja-JP\"]? string[]\n---List of additional `km-KH` (Khmer) rules that should be disabled (if enabled by default by LanguageTool).\n---@field [\"km-KH\"]? string[]\n---List of additional `nl` (Dutch) rules that should be disabled (if enabled by default by LanguageTool).\n---@field nl? string[]\n---List of additional `nl-BE` (Dutch (Belgium)) rules that should be disabled (if enabled by default by LanguageTool).\n---@field [\"nl-BE\"]? string[]\n---List of additional `pl-PL` (Polish) rules that should be disabled (if enabled by default by LanguageTool).\n---@field [\"pl-PL\"]? string[]\n---List of additional `pt` (Portuguese) rules that should be disabled (if enabled by default by LanguageTool).\n---@field pt? string[]\n---List of additional `pt-AO` (Portuguese (Angola preAO)) rules that should be disabled (if enabled by default by LanguageTool).\n---@field [\"pt-AO\"]? string[]\n---List of additional `pt-BR` (Portuguese (Brazil)) rules that should be disabled (if enabled by default by LanguageTool).\n---@field [\"pt-BR\"]? string[]\n---List of additional `pt-MZ` (Portuguese (Moçambique preAO)) rules that should be disabled (if enabled by default by LanguageTool).\n---@field [\"pt-MZ\"]? string[]\n---List of additional `pt-PT` (Portuguese (Portugal)) rules that should be disabled (if enabled by default by LanguageTool).\n---@field [\"pt-PT\"]? string[]\n---List of additional `ro-RO` (Romanian) rules that should be disabled (if enabled by default by LanguageTool).\n---@field [\"ro-RO\"]? string[]\n---List of additional `ru-RU` (Russian) rules that should be disabled (if enabled by default by LanguageTool).\n---@field [\"ru-RU\"]? string[]\n---List of additional `sk-SK` (Slovak) rules that should be disabled (if enabled by default by LanguageTool).\n---@field [\"sk-SK\"]? string[]\n---List of additional `sl-SI` (Slovenian) rules that should be disabled (if enabled by default by LanguageTool).\n---@field [\"sl-SI\"]? string[]\n---List of additional `sv` (Swedish) rules that should be disabled (if enabled by default by LanguageTool).\n---@field sv? string[]\n---List of additional `ta-IN` (Tamil) rules that should be disabled (if enabled by default by LanguageTool).\n---@field [\"ta-IN\"]? string[]\n---List of additional `tl-PH` (Tagalog) rules that should be disabled (if enabled by default by LanguageTool).\n---@field [\"tl-PH\"]? string[]\n---List of additional `uk-UA` (Ukrainian) rules that should be disabled (if enabled by default by LanguageTool).\n---@field [\"uk-UA\"]? string[]\n---List of additional `zh-CN` (Chinese) rules that should be disabled (if enabled by default by LanguageTool).\n---@field [\"zh-CN\"]? string[]\n\n---Lists of rules that should be enabled (if disabled by default by LanguageTool). [More info...](https://valentjn.github.io/ltex/settings.html#ltexenabledrules)\n---\n---```lua\n---default = {}\n---```\n---@class _.lspconfig.settings.ltex.Ltex.EnabledRules\n---List of additional `ar` (Arabic) rules that should be enabled (if disabled by default by LanguageTool).\n---@field ar? string[]\n---List of additional `ast-ES` (Asturian) rules that should be enabled (if disabled by default by LanguageTool).\n---@field [\"ast-ES\"]? string[]\n---List of additional `be-BY` (Belarusian) rules that should be enabled (if disabled by default by LanguageTool).\n---@field [\"be-BY\"]? string[]\n---List of additional `br-FR` (Breton) rules that should be enabled (if disabled by default by LanguageTool).\n---@field [\"br-FR\"]? string[]\n---List of additional `ca-ES` (Catalan) rules that should be enabled (if disabled by default by LanguageTool).\n---@field [\"ca-ES\"]? string[]\n---List of additional `ca-ES-valencia` (Catalan (Valencian)) rules that should be enabled (if disabled by default by LanguageTool).\n---@field [\"ca-ES-valencia\"]? string[]\n---List of additional `da-DK` (Danish) rules that should be enabled (if disabled by default by LanguageTool).\n---@field [\"da-DK\"]? string[]\n---List of additional `de` (German) rules that should be enabled (if disabled by default by LanguageTool).\n---@field de? string[]\n---List of additional `de-AT` (German (Austria)) rules that should be enabled (if disabled by default by LanguageTool).\n---@field [\"de-AT\"]? string[]\n---List of additional `de-CH` (German (Swiss)) rules that should be enabled (if disabled by default by LanguageTool).\n---@field [\"de-CH\"]? string[]\n---List of additional `de-DE` (German (Germany)) rules that should be enabled (if disabled by default by LanguageTool).\n---@field [\"de-DE\"]? string[]\n---List of additional `de-DE-x-simple-language` (Simple German) rules that should be enabled (if disabled by default by LanguageTool).\n---@field [\"de-DE-x-simple-language\"]? string[]\n---List of additional `el-GR` (Greek) rules that should be enabled (if disabled by default by LanguageTool).\n---@field [\"el-GR\"]? string[]\n---List of additional `en` (English) rules that should be enabled (if disabled by default by LanguageTool).\n---@field en? string[]\n---List of additional `en-AU` (English (Australian)) rules that should be enabled (if disabled by default by LanguageTool).\n---@field [\"en-AU\"]? string[]\n---List of additional `en-CA` (English (Canadian)) rules that should be enabled (if disabled by default by LanguageTool).\n---@field [\"en-CA\"]? string[]\n---List of additional `en-GB` (English (GB)) rules that should be enabled (if disabled by default by LanguageTool).\n---@field [\"en-GB\"]? string[]\n---List of additional `en-NZ` (English (New Zealand)) rules that should be enabled (if disabled by default by LanguageTool).\n---@field [\"en-NZ\"]? string[]\n---List of additional `en-US` (English (US)) rules that should be enabled (if disabled by default by LanguageTool).\n---@field [\"en-US\"]? string[]\n---List of additional `en-ZA` (English (South African)) rules that should be enabled (if disabled by default by LanguageTool).\n---@field [\"en-ZA\"]? string[]\n---List of additional `eo` (Esperanto) rules that should be enabled (if disabled by default by LanguageTool).\n---@field eo? string[]\n---List of additional `es` (Spanish) rules that should be enabled (if disabled by default by LanguageTool).\n---@field es? string[]\n---List of additional `es-AR` (Spanish (voseo)) rules that should be enabled (if disabled by default by LanguageTool).\n---@field [\"es-AR\"]? string[]\n---List of additional `fa` (Persian) rules that should be enabled (if disabled by default by LanguageTool).\n---@field fa? string[]\n---List of additional `fr` (French) rules that should be enabled (if disabled by default by LanguageTool).\n---@field fr? string[]\n---List of additional `ga-IE` (Irish) rules that should be enabled (if disabled by default by LanguageTool).\n---@field [\"ga-IE\"]? string[]\n---List of additional `gl-ES` (Galician) rules that should be enabled (if disabled by default by LanguageTool).\n---@field [\"gl-ES\"]? string[]\n---List of additional `it` (Italian) rules that should be enabled (if disabled by default by LanguageTool).\n---@field it? string[]\n---List of additional `ja-JP` (Japanese) rules that should be enabled (if disabled by default by LanguageTool).\n---@field [\"ja-JP\"]? string[]\n---List of additional `km-KH` (Khmer) rules that should be enabled (if disabled by default by LanguageTool).\n---@field [\"km-KH\"]? string[]\n---List of additional `nl` (Dutch) rules that should be enabled (if disabled by default by LanguageTool).\n---@field nl? string[]\n---List of additional `nl-BE` (Dutch (Belgium)) rules that should be enabled (if disabled by default by LanguageTool).\n---@field [\"nl-BE\"]? string[]\n---List of additional `pl-PL` (Polish) rules that should be enabled (if disabled by default by LanguageTool).\n---@field [\"pl-PL\"]? string[]\n---List of additional `pt` (Portuguese) rules that should be enabled (if disabled by default by LanguageTool).\n---@field pt? string[]\n---List of additional `pt-AO` (Portuguese (Angola preAO)) rules that should be enabled (if disabled by default by LanguageTool).\n---@field [\"pt-AO\"]? string[]\n---List of additional `pt-BR` (Portuguese (Brazil)) rules that should be enabled (if disabled by default by LanguageTool).\n---@field [\"pt-BR\"]? string[]\n---List of additional `pt-MZ` (Portuguese (Moçambique preAO)) rules that should be enabled (if disabled by default by LanguageTool).\n---@field [\"pt-MZ\"]? string[]\n---List of additional `pt-PT` (Portuguese (Portugal)) rules that should be enabled (if disabled by default by LanguageTool).\n---@field [\"pt-PT\"]? string[]\n---List of additional `ro-RO` (Romanian) rules that should be enabled (if disabled by default by LanguageTool).\n---@field [\"ro-RO\"]? string[]\n---List of additional `ru-RU` (Russian) rules that should be enabled (if disabled by default by LanguageTool).\n---@field [\"ru-RU\"]? string[]\n---List of additional `sk-SK` (Slovak) rules that should be enabled (if disabled by default by LanguageTool).\n---@field [\"sk-SK\"]? string[]\n---List of additional `sl-SI` (Slovenian) rules that should be enabled (if disabled by default by LanguageTool).\n---@field [\"sl-SI\"]? string[]\n---List of additional `sv` (Swedish) rules that should be enabled (if disabled by default by LanguageTool).\n---@field sv? string[]\n---List of additional `ta-IN` (Tamil) rules that should be enabled (if disabled by default by LanguageTool).\n---@field [\"ta-IN\"]? string[]\n---List of additional `tl-PH` (Tagalog) rules that should be enabled (if disabled by default by LanguageTool).\n---@field [\"tl-PH\"]? string[]\n---List of additional `uk-UA` (Ukrainian) rules that should be enabled (if disabled by default by LanguageTool).\n---@field [\"uk-UA\"]? string[]\n---List of additional `zh-CN` (Chinese) rules that should be enabled (if disabled by default by LanguageTool).\n---@field [\"zh-CN\"]? string[]\n\n---Lists of false-positive diagnostics to hide (by hiding all diagnostics of a specific rule within a specific sentence). [More info...](https://valentjn.github.io/ltex/settings.html#ltexhiddenfalsepositives)\n---\n---```lua\n---default = {}\n---```\n---@class _.lspconfig.settings.ltex.Ltex.HiddenFalsePositives\n---List of `ar` (Arabic) false-positive diagnostics to hide.\n---@field ar? string[]\n---List of `ast-ES` (Asturian) false-positive diagnostics to hide.\n---@field [\"ast-ES\"]? string[]\n---List of `be-BY` (Belarusian) false-positive diagnostics to hide.\n---@field [\"be-BY\"]? string[]\n---List of `br-FR` (Breton) false-positive diagnostics to hide.\n---@field [\"br-FR\"]? string[]\n---List of `ca-ES` (Catalan) false-positive diagnostics to hide.\n---@field [\"ca-ES\"]? string[]\n---List of `ca-ES-valencia` (Catalan (Valencian)) false-positive diagnostics to hide.\n---@field [\"ca-ES-valencia\"]? string[]\n---List of `da-DK` (Danish) false-positive diagnostics to hide.\n---@field [\"da-DK\"]? string[]\n---List of `de` (German) false-positive diagnostics to hide.\n---@field de? string[]\n---List of `de-AT` (German (Austria)) false-positive diagnostics to hide.\n---@field [\"de-AT\"]? string[]\n---List of `de-CH` (German (Swiss)) false-positive diagnostics to hide.\n---@field [\"de-CH\"]? string[]\n---List of `de-DE` (German (Germany)) false-positive diagnostics to hide.\n---@field [\"de-DE\"]? string[]\n---List of `de-DE-x-simple-language` (Simple German) false-positive diagnostics to hide.\n---@field [\"de-DE-x-simple-language\"]? string[]\n---List of `el-GR` (Greek) false-positive diagnostics to hide.\n---@field [\"el-GR\"]? string[]\n---List of `en` (English) false-positive diagnostics to hide.\n---@field en? string[]\n---List of `en-AU` (English (Australian)) false-positive diagnostics to hide.\n---@field [\"en-AU\"]? string[]\n---List of `en-CA` (English (Canadian)) false-positive diagnostics to hide.\n---@field [\"en-CA\"]? string[]\n---List of `en-GB` (English (GB)) false-positive diagnostics to hide.\n---@field [\"en-GB\"]? string[]\n---List of `en-NZ` (English (New Zealand)) false-positive diagnostics to hide.\n---@field [\"en-NZ\"]? string[]\n---List of `en-US` (English (US)) false-positive diagnostics to hide.\n---@field [\"en-US\"]? string[]\n---List of `en-ZA` (English (South African)) false-positive diagnostics to hide.\n---@field [\"en-ZA\"]? string[]\n---List of `eo` (Esperanto) false-positive diagnostics to hide.\n---@field eo? string[]\n---List of `es` (Spanish) false-positive diagnostics to hide.\n---@field es? string[]\n---List of `es-AR` (Spanish (voseo)) false-positive diagnostics to hide.\n---@field [\"es-AR\"]? string[]\n---List of `fa` (Persian) false-positive diagnostics to hide.\n---@field fa? string[]\n---List of `fr` (French) false-positive diagnostics to hide.\n---@field fr? string[]\n---List of `ga-IE` (Irish) false-positive diagnostics to hide.\n---@field [\"ga-IE\"]? string[]\n---List of `gl-ES` (Galician) false-positive diagnostics to hide.\n---@field [\"gl-ES\"]? string[]\n---List of `it` (Italian) false-positive diagnostics to hide.\n---@field it? string[]\n---List of `ja-JP` (Japanese) false-positive diagnostics to hide.\n---@field [\"ja-JP\"]? string[]\n---List of `km-KH` (Khmer) false-positive diagnostics to hide.\n---@field [\"km-KH\"]? string[]\n---List of `nl` (Dutch) false-positive diagnostics to hide.\n---@field nl? string[]\n---List of `nl-BE` (Dutch (Belgium)) false-positive diagnostics to hide.\n---@field [\"nl-BE\"]? string[]\n---List of `pl-PL` (Polish) false-positive diagnostics to hide.\n---@field [\"pl-PL\"]? string[]\n---List of `pt` (Portuguese) false-positive diagnostics to hide.\n---@field pt? string[]\n---List of `pt-AO` (Portuguese (Angola preAO)) false-positive diagnostics to hide.\n---@field [\"pt-AO\"]? string[]\n---List of `pt-BR` (Portuguese (Brazil)) false-positive diagnostics to hide.\n---@field [\"pt-BR\"]? string[]\n---List of `pt-MZ` (Portuguese (Moçambique preAO)) false-positive diagnostics to hide.\n---@field [\"pt-MZ\"]? string[]\n---List of `pt-PT` (Portuguese (Portugal)) false-positive diagnostics to hide.\n---@field [\"pt-PT\"]? string[]\n---List of `ro-RO` (Romanian) false-positive diagnostics to hide.\n---@field [\"ro-RO\"]? string[]\n---List of `ru-RU` (Russian) false-positive diagnostics to hide.\n---@field [\"ru-RU\"]? string[]\n---List of `sk-SK` (Slovak) false-positive diagnostics to hide.\n---@field [\"sk-SK\"]? string[]\n---List of `sl-SI` (Slovenian) false-positive diagnostics to hide.\n---@field [\"sl-SI\"]? string[]\n---List of `sv` (Swedish) false-positive diagnostics to hide.\n---@field sv? string[]\n---List of `ta-IN` (Tamil) false-positive diagnostics to hide.\n---@field [\"ta-IN\"]? string[]\n---List of `tl-PH` (Tagalog) false-positive diagnostics to hide.\n---@field [\"tl-PH\"]? string[]\n---List of `uk-UA` (Ukrainian) false-positive diagnostics to hide.\n---@field [\"uk-UA\"]? string[]\n---List of `zh-CN` (Chinese) false-positive diagnostics to hide.\n---@field [\"zh-CN\"]? string[]\n\n---@class _.lspconfig.settings.ltex.Ltex.Java\n---Initial size of the Java heap memory in megabytes (corresponds to Java's `-Xms` option, must be a positive integer). [More info...](https://valentjn.github.io/ltex/settings.html#ltexjavainitialheapsize)\n---\n---```lua\n---default = 64\n---```\n---@field initialHeapSize? integer\n---Maximum size of the Java heap memory in megabytes (corresponds to Java's `-Xmx` option, must be a positive integer). [More info...](https://valentjn.github.io/ltex/settings.html#ltexjavamaximumheapsize)\n---\n---```lua\n---default = 512\n---```\n---@field maximumHeapSize? integer\n---If set to an empty string, LTeX uses a Java distribution that is bundled with ltex-ls. You can point this setting to an existing Java installation on your computer to use that installation instead. [More info...](https://valentjn.github.io/ltex/settings.html#ltexjavapath)\n---\n---```lua\n---default = \"\"\n---```\n---@field path? string\n\n---@class _.lspconfig.settings.ltex.Ltex.LanguageToolOrg\n---API key for Premium API access. Only relevant if `ltex.languageToolHttpServerUri` is set.\n---\n---```lua\n---default = \"\"\n---```\n---@field apiKey? string\n---Username/email as used to log in at languagetool.org for Premium API access. Only relevant if `ltex.languageToolHttpServerUri` is set.\n---\n---```lua\n---default = \"\"\n---```\n---@field username? string\n\n---@class _.lspconfig.settings.ltex.Ltex.Latex\n---List of LaTeX commands to be handled by the LaTeX parser, listed together with empty arguments (e.g., `\"\\ref{}\"`, `\"\\documentclass[]{}\"`). [More info...](https://valentjn.github.io/ltex/settings.html#ltexlatexcommands)\n---\n---```lua\n---default = {}\n---```\n---@field commands? table\n---List of names of LaTeX environments to be handled by the LaTeX parser. [More info...](https://valentjn.github.io/ltex/settings.html#ltexlatexenvironments)\n---\n---```lua\n---default = {}\n---```\n---@field environments? table\n\n---@class _.lspconfig.settings.ltex.Ltex.LtexLs\n---```lua\n---default = \"\"\n---```\n---@field languageToolHttpServerUri? string\n---```lua\n---default = \"\"\n---```\n---@field languageToolOrgApiKey? string\n---```lua\n---default = \"\"\n---```\n---@field languageToolOrgUsername? string\n---Logging level (verbosity) of the ltex-ls server log, which is accessible via `View` › `Output` › `LTeX Language Server`. [More info...](https://valentjn.github.io/ltex/settings.html#ltexltex-lsloglevel)\n---\n---```lua\n---default = \"fine\"\n---```\n---@field logLevel? \"severe\" | \"warning\" | \"info\" | \"config\" | \"fine\" | \"finer\" | \"finest\"\n---If set to an empty string, LTeX automatically downloads [ltex-ls from GitHub](https://github.com/valentjn/ltex-ls/releases), stores it in the folder of the extension, and uses it for the checking process. You can point this setting to an ltex-ls release you downloaded by yourself. [More info...](https://valentjn.github.io/ltex/settings.html#ltexltex-lspath)\n---\n---```lua\n---default = \"\"\n---```\n---@field path? string\n\n---@class _.lspconfig.settings.ltex.Ltex.Markdown\n---List of Markdown node types to be handled by the Markdown parser. [More info...](https://valentjn.github.io/ltex/settings.html#ltexmarkdownnodes)\n---\n---```lua\n---default = {}\n---```\n---@field nodes? table\n\n---@class _.lspconfig.settings.ltex.Ltex.Trace\n---Debug setting to log the communication between language client and server. [More info...](https://valentjn.github.io/ltex/settings.html#ltextraceserver)\n---\n---```lua\n---default = \"off\"\n---```\n---@field server? \"off\" | \"messages\" | \"verbose\"\n\n---@class _.lspconfig.settings.ltex.Ltex\n---@field additionalRules? _.lspconfig.settings.ltex.Ltex.AdditionalRules\n---@field bibtex? _.lspconfig.settings.ltex.Ltex.Bibtex\n---Controls when documents should be checked. [More info...](https://valentjn.github.io/ltex/settings.html#ltexcheckfrequency)\n---\n---```lua\n---default = \"edit\"\n---```\n---@field checkFrequency? \"edit\" | \"save\" | \"manual\"\n---If set to `true`, diagnostics of a file are cleared when the file is closed.\n---\n---```lua\n---default = true\n---```\n---@field clearDiagnosticsWhenClosingFile? boolean\n---Whether completion is enabled (also known as auto-completion, suggestions, or IntelliSense). [More info...](https://valentjn.github.io/ltex/settings.html#ltexcompletionenabled)\n---@field completionEnabled? boolean\n---Controls which `settings.json` or external setting file ([see documentation](https://valentjn.github.io/ltex/vscode-ltex/setting-scopes-files.html#external-setting-files)) to update when using one of the quick fixes.\n---\n---```lua\n---default = {\n---  dictionary = \"workspaceFolderExternalFile\",\n---  disabledRules = \"workspaceFolderExternalFile\",\n---  hiddenFalsePositives = \"workspaceFolderExternalFile\"\n---}\n---```\n---@field configurationTarget? _.lspconfig.settings.ltex.Ltex.ConfigurationTarget\n---Severity of the diagnostics corresponding to the grammar and spelling errors. [More info...](https://valentjn.github.io/ltex/settings.html#ltexdiagnosticseverity)\n---\n---```lua\n---default = \"information\"\n---```\n---@field diagnosticSeverity? any\n---Lists of additional words that should not be counted as spelling errors. [More info...](https://valentjn.github.io/ltex/settings.html#ltexdictionary)\n---\n---```lua\n---default = {}\n---```\n---@field dictionary? _.lspconfig.settings.ltex.Ltex.Dictionary\n---Lists of rules that should be disabled (if enabled by default by LanguageTool). [More info...](https://valentjn.github.io/ltex/settings.html#ltexdisabledrules)\n---\n---```lua\n---default = {}\n---```\n---@field disabledRules? _.lspconfig.settings.ltex.Ltex.DisabledRules\n---Controls whether the extension is enabled. Allows disabling LanguageTool on specific workspaces or for specific code language modes (i.e., file types). [More info...](https://valentjn.github.io/ltex/settings.html#ltexenabled)\n---\n---```lua\n---default = { \"bibtex\", \"context\", \"context.tex\", \"html\", \"latex\", \"markdown\", \"org\", \"restructuredtext\", \"rsweave\" }\n---```\n---@field enabled? any\n---Lists of rules that should be enabled (if disabled by default by LanguageTool). [More info...](https://valentjn.github.io/ltex/settings.html#ltexenabledrules)\n---\n---```lua\n---default = {}\n---```\n---@field enabledRules? _.lspconfig.settings.ltex.Ltex.EnabledRules\n---Lists of false-positive diagnostics to hide (by hiding all diagnostics of a specific rule within a specific sentence). [More info...](https://valentjn.github.io/ltex/settings.html#ltexhiddenfalsepositives)\n---\n---```lua\n---default = {}\n---```\n---@field hiddenFalsePositives? _.lspconfig.settings.ltex.Ltex.HiddenFalsePositives\n---@field java? _.lspconfig.settings.ltex.Ltex.Java\n---The language (e.g., `\"en-US\"`) LanguageTool should check against. If possible, use a specific variant like `\"en-US\"` or `\"de-DE\"` instead of the generic language code like `\"en\"` or `\"de\"` to obtain spelling corrections (in addition to grammar corrections). [More info...](https://valentjn.github.io/ltex/settings.html#ltexlanguage)\n---\n---```lua\n---default = \"en-US\"\n---```\n---@field language? \"auto\" | \"ar\" | \"ast-ES\" | \"be-BY\" | \"br-FR\" | \"ca-ES\" | \"ca-ES-valencia\" | \"da-DK\" | \"de\" | \"de-AT\" | \"de-CH\" | \"de-DE\" | \"de-DE-x-simple-language\" | \"el-GR\" | \"en\" | \"en-AU\" | \"en-CA\" | \"en-GB\" | \"en-NZ\" | \"en-US\" | \"en-ZA\" | \"eo\" | \"es\" | \"es-AR\" | \"fa\" | \"fr\" | \"ga-IE\" | \"gl-ES\" | \"it\" | \"ja-JP\" | \"km-KH\" | \"nl\" | \"nl-BE\" | \"pl-PL\" | \"pt\" | \"pt-AO\" | \"pt-BR\" | \"pt-MZ\" | \"pt-PT\" | \"ro-RO\" | \"ru-RU\" | \"sk-SK\" | \"sl-SI\" | \"sv\" | \"ta-IN\" | \"tl-PH\" | \"uk-UA\" | \"zh-CN\"\n---If set to a non-empty string, LTeX will not use the bundled, built-in version of LanguageTool. Instead, LTeX will connect to an external [LanguageTool HTTP server](http://wiki.languagetool.org/http-server). Set this setting to the root URI of the server, and do not append `v2/check` or similar. [More info...](https://valentjn.github.io/ltex/settings.html#ltexlanguagetoolhttpserveruri)\n---\n---```lua\n---default = \"\"\n---```\n---@field languageToolHttpServerUri? string\n---@field languageToolOrg? _.lspconfig.settings.ltex.Ltex.LanguageToolOrg\n---@field latex? _.lspconfig.settings.ltex.Ltex.Latex\n---@field [\"ltex-ls\"]? _.lspconfig.settings.ltex.Ltex.LtexLs\n---@field markdown? _.lspconfig.settings.ltex.Ltex.Markdown\n---Size of the LanguageTool `ResultCache` in sentences (must be a positive integer). [More info...](https://valentjn.github.io/ltex/settings.html#ltexsentencecachesize)\n---\n---```lua\n---default = 2000\n---```\n---@field sentenceCacheSize? integer\n---If set to `true`, an item about the status of LTeX is shown permanently in the status bar.\n---@field statusBarItem? boolean\n---@field trace? _.lspconfig.settings.ltex.Ltex.Trace\n\n---@class lspconfig.settings.ltex\n---@field ltex? _.lspconfig.settings.ltex.Ltex\n"
  },
  {
    "path": "lua/lspconfig/types/lsp/lua_ls.lua",
    "content": "---@meta\n\n---@class _.lspconfig.settings.lua_ls.Lua.AddonManager\n---Whether the addon manager is enabled or not.\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n---Specifies the git branch used by the addon manager.\n---\n---```lua\n---default = \"\"\n---```\n---@field repositoryBranch? string\n---Specifies the git path used by the addon manager.\n---\n---```lua\n---default = \"\"\n---```\n---@field repositoryPath? string\n\n---@class _.lspconfig.settings.lua_ls.Lua.CodeLens\n---Enable code lens.\n---@field enable? boolean\n\n---@class _.lspconfig.settings.lua_ls.Lua.Completion\n---When the input looks like a file name, automatically `require` this file.\n---\n---```lua\n---default = true\n---```\n---@field autoRequire? boolean\n---Shows function call snippets.\n---\n---```lua\n---default = \"Disable\"\n---```\n---@field callSnippet? \"Disable\" | \"Both\" | \"Replace\"\n---Previewing the relevant code snippet of the suggestion may help you understand the usage of the suggestion. The number set indicates the number of intercepted lines in the code fragment. If it is set to `0`, this feature can be disabled.\n---\n---```lua\n---default = 0\n---```\n---@field displayContext? integer\n---Enable completion.\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n---Shows keyword syntax snippets.\n---\n---```lua\n---default = \"Replace\"\n---```\n---@field keywordSnippet? \"Disable\" | \"Both\" | \"Replace\"\n---Maximum number of fields to analyze for completions. When an object has more fields than this limit, completions will require more specific input to appear.\n---\n---```lua\n---default = 100\n---```\n---@field maxSuggestCount? integer\n---The symbol used to trigger the postfix suggestion.\n---\n---```lua\n---default = \"@\"\n---```\n---@field postfix? string\n---The separator used when `require`.\n---\n---```lua\n---default = \".\"\n---```\n---@field requireSeparator? string\n---Display parameters in completion list. When the function has multiple definitions, they will be displayed separately.\n---\n---```lua\n---default = true\n---```\n---@field showParams? boolean\n---Show contextual words in suggestions.\n---\n---```lua\n---default = \"Fallback\"\n---```\n---@field showWord? \"Enable\" | \"Fallback\" | \"Disable\"\n---Whether the displayed context word contains the content of other files in the workspace.\n---\n---```lua\n---default = true\n---```\n---@field workspaceWord? boolean\n\n---Modify the diagnostic needed file status in a group.\n---\n---* Opened:  only diagnose opened files\n---* Any:     diagnose all files\n---* None:    disable this diagnostic\n---\n---`Fallback` means that diagnostics in this group are controlled by `diagnostics.neededFileStatus` separately.\n---Other settings will override individual settings without end of `!`.\n---\n---@class _.lspconfig.settings.lua_ls.Lua.Diagnostics.GroupFileStatus\n---* ambiguity-1\n---* count-down-loop\n---* different-requires\n---* newfield-call\n---* newline-call\n---\n---```lua\n---default = \"Fallback\"\n---```\n---@field ambiguity? \"Any\" | \"Opened\" | \"None\" | \"Fallback\"\n---* await-in-sync\n---* not-yieldable\n---\n---```lua\n---default = \"Fallback\"\n---```\n---@field await? \"Any\" | \"Opened\" | \"None\" | \"Fallback\"\n---* codestyle-check\n---* name-style-check\n---* spell-check\n---\n---```lua\n---default = \"Fallback\"\n---```\n---@field codestyle? \"Any\" | \"Opened\" | \"None\" | \"Fallback\"\n---* global-element\n---\n---```lua\n---default = \"Fallback\"\n---```\n---@field conventions? \"Any\" | \"Opened\" | \"None\" | \"Fallback\"\n---* duplicate-index\n---* duplicate-set-field\n---\n---```lua\n---default = \"Fallback\"\n---```\n---@field duplicate? \"Any\" | \"Opened\" | \"None\" | \"Fallback\"\n---* global-in-nil-env\n---* lowercase-global\n---* undefined-env-child\n---* undefined-global\n---\n---```lua\n---default = \"Fallback\"\n---```\n---@field global? \"Any\" | \"Opened\" | \"None\" | \"Fallback\"\n---* circle-doc-class\n---* doc-field-no-class\n---* duplicate-doc-alias\n---* duplicate-doc-field\n---* duplicate-doc-param\n---* incomplete-signature-doc\n---* missing-global-doc\n---* missing-local-export-doc\n---* undefined-doc-class\n---* undefined-doc-name\n---* undefined-doc-param\n---* unknown-cast-variable\n---* unknown-diag-code\n---* unknown-operator\n---\n---```lua\n---default = \"Fallback\"\n---```\n---@field luadoc? \"Any\" | \"Opened\" | \"None\" | \"Fallback\"\n---* redefined-local\n---\n---```lua\n---default = \"Fallback\"\n---```\n---@field redefined? \"Any\" | \"Opened\" | \"None\" | \"Fallback\"\n---* close-non-object\n---* deprecated\n---* discard-returns\n---* invisible\n---\n---```lua\n---default = \"Fallback\"\n---```\n---@field strict? \"Any\" | \"Opened\" | \"None\" | \"Fallback\"\n---* no-unknown\n---\n---```lua\n---default = \"Fallback\"\n---```\n---@field strong? \"Any\" | \"Opened\" | \"None\" | \"Fallback\"\n---* assign-type-mismatch\n---* cast-local-type\n---* cast-type-mismatch\n---* inject-field\n---* need-check-nil\n---* param-type-mismatch\n---* return-type-mismatch\n---* undefined-field\n---\n---```lua\n---default = \"Fallback\"\n---```\n---@field [\"type-check\"]? \"Any\" | \"Opened\" | \"None\" | \"Fallback\"\n---* missing-fields\n---* missing-parameter\n---* missing-return\n---* missing-return-value\n---* redundant-parameter\n---* redundant-return-value\n---* redundant-value\n---* unbalanced-assignments\n---\n---```lua\n---default = \"Fallback\"\n---```\n---@field unbalanced? \"Any\" | \"Opened\" | \"None\" | \"Fallback\"\n---* code-after-break\n---* empty-block\n---* redundant-return\n---* trailing-space\n---* unreachable-code\n---* unused-function\n---* unused-label\n---* unused-local\n---* unused-vararg\n---\n---```lua\n---default = \"Fallback\"\n---```\n---@field unused? \"Any\" | \"Opened\" | \"None\" | \"Fallback\"\n\n---Modify the diagnostic severity in a group.\n---`Fallback` means that diagnostics in this group are controlled by `diagnostics.severity` separately.\n---Other settings will override individual settings without end of `!`.\n---\n---@class _.lspconfig.settings.lua_ls.Lua.Diagnostics.GroupSeverity\n---* ambiguity-1\n---* count-down-loop\n---* different-requires\n---* newfield-call\n---* newline-call\n---\n---```lua\n---default = \"Fallback\"\n---```\n---@field ambiguity? \"Error\" | \"Warning\" | \"Information\" | \"Hint\" | \"Fallback\"\n---* await-in-sync\n---* not-yieldable\n---\n---```lua\n---default = \"Fallback\"\n---```\n---@field await? \"Error\" | \"Warning\" | \"Information\" | \"Hint\" | \"Fallback\"\n---* codestyle-check\n---* name-style-check\n---* spell-check\n---\n---```lua\n---default = \"Fallback\"\n---```\n---@field codestyle? \"Error\" | \"Warning\" | \"Information\" | \"Hint\" | \"Fallback\"\n---* global-element\n---\n---```lua\n---default = \"Fallback\"\n---```\n---@field conventions? \"Error\" | \"Warning\" | \"Information\" | \"Hint\" | \"Fallback\"\n---* duplicate-index\n---* duplicate-set-field\n---\n---```lua\n---default = \"Fallback\"\n---```\n---@field duplicate? \"Error\" | \"Warning\" | \"Information\" | \"Hint\" | \"Fallback\"\n---* global-in-nil-env\n---* lowercase-global\n---* undefined-env-child\n---* undefined-global\n---\n---```lua\n---default = \"Fallback\"\n---```\n---@field global? \"Error\" | \"Warning\" | \"Information\" | \"Hint\" | \"Fallback\"\n---* circle-doc-class\n---* doc-field-no-class\n---* duplicate-doc-alias\n---* duplicate-doc-field\n---* duplicate-doc-param\n---* incomplete-signature-doc\n---* missing-global-doc\n---* missing-local-export-doc\n---* undefined-doc-class\n---* undefined-doc-name\n---* undefined-doc-param\n---* unknown-cast-variable\n---* unknown-diag-code\n---* unknown-operator\n---\n---```lua\n---default = \"Fallback\"\n---```\n---@field luadoc? \"Error\" | \"Warning\" | \"Information\" | \"Hint\" | \"Fallback\"\n---* redefined-local\n---\n---```lua\n---default = \"Fallback\"\n---```\n---@field redefined? \"Error\" | \"Warning\" | \"Information\" | \"Hint\" | \"Fallback\"\n---* close-non-object\n---* deprecated\n---* discard-returns\n---* invisible\n---\n---```lua\n---default = \"Fallback\"\n---```\n---@field strict? \"Error\" | \"Warning\" | \"Information\" | \"Hint\" | \"Fallback\"\n---* no-unknown\n---\n---```lua\n---default = \"Fallback\"\n---```\n---@field strong? \"Error\" | \"Warning\" | \"Information\" | \"Hint\" | \"Fallback\"\n---* assign-type-mismatch\n---* cast-local-type\n---* cast-type-mismatch\n---* inject-field\n---* need-check-nil\n---* param-type-mismatch\n---* return-type-mismatch\n---* undefined-field\n---\n---```lua\n---default = \"Fallback\"\n---```\n---@field [\"type-check\"]? \"Error\" | \"Warning\" | \"Information\" | \"Hint\" | \"Fallback\"\n---* missing-fields\n---* missing-parameter\n---* missing-return\n---* missing-return-value\n---* redundant-parameter\n---* redundant-return-value\n---* redundant-value\n---* unbalanced-assignments\n---\n---```lua\n---default = \"Fallback\"\n---```\n---@field unbalanced? \"Error\" | \"Warning\" | \"Information\" | \"Hint\" | \"Fallback\"\n---* code-after-break\n---* empty-block\n---* redundant-return\n---* trailing-space\n---* unreachable-code\n---* unused-function\n---* unused-label\n---* unused-local\n---* unused-vararg\n---\n---```lua\n---default = \"Fallback\"\n---```\n---@field unused? \"Error\" | \"Warning\" | \"Information\" | \"Hint\" | \"Fallback\"\n\n---* Opened:  only diagnose opened files\n---* Any:     diagnose all files\n---* None:    disable this diagnostic\n---\n---End with `!` means override the group setting `diagnostics.groupFileStatus`.\n---\n---@class _.lspconfig.settings.lua_ls.Lua.Diagnostics.NeededFileStatus\n---Enable ambiguous operator precedence diagnostics. For example, the `num or 0 + 1` expression will be suggested `(num or 0) + 1` instead.\n---\n---```lua\n---default = \"Any\"\n---```\n---@field [\"ambiguity-1\"]? \"Any\" | \"Opened\" | \"None\" | \"Any!\" | \"Opened!\" | \"None!\"\n---Enable diagnostics for assignments in which the value's type does not match the type of the assigned variable.\n---\n---```lua\n---default = \"Opened\"\n---```\n---@field [\"assign-type-mismatch\"]? \"Any\" | \"Opened\" | \"None\" | \"Any!\" | \"Opened!\" | \"None!\"\n---Enable diagnostics for calls of asynchronous functions within a synchronous function.\n---\n---```lua\n---default = \"None\"\n---```\n---@field [\"await-in-sync\"]? \"Any\" | \"Opened\" | \"None\" | \"Any!\" | \"Opened!\" | \"None!\"\n---Enable diagnostics for casts of local variables where the target type does not match the defined type.\n---\n---```lua\n---default = \"Opened\"\n---```\n---@field [\"cast-local-type\"]? \"Any\" | \"Opened\" | \"None\" | \"Any!\" | \"Opened!\" | \"None!\"\n---Enable diagnostics for casts where the target type does not match the initial type.\n---\n---```lua\n---default = \"Opened\"\n---```\n---@field [\"cast-type-mismatch\"]? \"Any\" | \"Opened\" | \"None\" | \"Any!\" | \"Opened!\" | \"None!\"\n---TODO: Needs documentation\n---\n---```lua\n---default = \"Any\"\n---```\n---@field [\"circle-doc-class\"]? \"Any\" | \"Opened\" | \"None\" | \"Any!\" | \"Opened!\" | \"None!\"\n---Enable diagnostics for attempts to close a variable with a non-object.\n---\n---```lua\n---default = \"Any\"\n---```\n---@field [\"close-non-object\"]? \"Any\" | \"Opened\" | \"None\" | \"Any!\" | \"Opened!\" | \"None!\"\n---Enable diagnostics for code placed after a break statement in a loop.\n---\n---```lua\n---default = \"Opened\"\n---```\n---@field [\"code-after-break\"]? \"Any\" | \"Opened\" | \"None\" | \"Any!\" | \"Opened!\" | \"None!\"\n---Enable diagnostics for incorrectly styled lines.\n---\n---```lua\n---default = \"None\"\n---```\n---@field [\"codestyle-check\"]? \"Any\" | \"Opened\" | \"None\" | \"Any!\" | \"Opened!\" | \"None!\"\n---Enable diagnostics for `for` loops which will never reach their max/limit because the loop is incrementing instead of decrementing.\n---\n---```lua\n---default = \"Any\"\n---```\n---@field [\"count-down-loop\"]? \"Any\" | \"Opened\" | \"None\" | \"Any!\" | \"Opened!\" | \"None!\"\n---Enable diagnostics to highlight deprecated API.\n---\n---```lua\n---default = \"Any\"\n---```\n---@field deprecated? \"Any\" | \"Opened\" | \"None\" | \"Any!\" | \"Opened!\" | \"None!\"\n---Enable diagnostics for files which are required by two different paths.\n---\n---```lua\n---default = \"Any\"\n---```\n---@field [\"different-requires\"]? \"Any\" | \"Opened\" | \"None\" | \"Any!\" | \"Opened!\" | \"None!\"\n---Enable diagnostics for calls of functions annotated with `---@nodiscard` where the return values are ignored.\n---\n---```lua\n---default = \"Any\"\n---```\n---@field [\"discard-returns\"]? \"Any\" | \"Opened\" | \"None\" | \"Any!\" | \"Opened!\" | \"None!\"\n---Enable diagnostics to highlight a field annotation without a defining class annotation.\n---\n---```lua\n---default = \"Any\"\n---```\n---@field [\"doc-field-no-class\"]? \"Any\" | \"Opened\" | \"None\" | \"Any!\" | \"Opened!\" | \"None!\"\n---Enable diagnostics for a duplicated alias annotation name.\n---\n---```lua\n---default = \"Any\"\n---```\n---@field [\"duplicate-doc-alias\"]? \"Any\" | \"Opened\" | \"None\" | \"Any!\" | \"Opened!\" | \"None!\"\n---Enable diagnostics for a duplicated field annotation name.\n---\n---```lua\n---default = \"Any\"\n---```\n---@field [\"duplicate-doc-field\"]? \"Any\" | \"Opened\" | \"None\" | \"Any!\" | \"Opened!\" | \"None!\"\n---Enable diagnostics for a duplicated param annotation name.\n---\n---```lua\n---default = \"Any\"\n---```\n---@field [\"duplicate-doc-param\"]? \"Any\" | \"Opened\" | \"None\" | \"Any!\" | \"Opened!\" | \"None!\"\n---Enable duplicate table index diagnostics.\n---\n---```lua\n---default = \"Any\"\n---```\n---@field [\"duplicate-index\"]? \"Any\" | \"Opened\" | \"None\" | \"Any!\" | \"Opened!\" | \"None!\"\n---Enable diagnostics for setting the same field in a class more than once.\n---\n---```lua\n---default = \"Opened\"\n---```\n---@field [\"duplicate-set-field\"]? \"Any\" | \"Opened\" | \"None\" | \"Any!\" | \"Opened!\" | \"None!\"\n---Enable empty code block diagnostics.\n---\n---```lua\n---default = \"Opened\"\n---```\n---@field [\"empty-block\"]? \"Any\" | \"Opened\" | \"None\" | \"Any!\" | \"Opened!\" | \"None!\"\n---Enable diagnostics to warn about global elements.\n---\n---```lua\n---default = \"None\"\n---```\n---@field [\"global-element\"]? \"Any\" | \"Opened\" | \"None\" | \"Any!\" | \"Opened!\" | \"None!\"\n---Enable cannot use global variables （ `_ENV` is set to `nil`） diagnostics.\n---\n---```lua\n---default = \"Any\"\n---```\n---@field [\"global-in-nil-env\"]? \"Any\" | \"Opened\" | \"None\" | \"Any!\" | \"Opened!\" | \"None!\"\n---Incomplete @param or @return annotations for functions.\n---\n---```lua\n---default = \"None\"\n---```\n---@field [\"incomplete-signature-doc\"]? \"Any\" | \"Opened\" | \"None\" | \"Any!\" | \"Opened!\" | \"None!\"\n---TODO: Needs documentation\n---\n---```lua\n---default = \"Opened\"\n---```\n---@field [\"inject-field\"]? \"Any\" | \"Opened\" | \"None\" | \"Any!\" | \"Opened!\" | \"None!\"\n---Enable diagnostics for accesses to fields which are invisible.\n---\n---```lua\n---default = \"Any\"\n---```\n---@field invisible? \"Any\" | \"Opened\" | \"None\" | \"Any!\" | \"Opened!\" | \"None!\"\n---Enable lowercase global variable definition diagnostics.\n---\n---```lua\n---default = \"Any\"\n---```\n---@field [\"lowercase-global\"]? \"Any\" | \"Opened\" | \"None\" | \"Any!\" | \"Opened!\" | \"None!\"\n---TODO: Needs documentation\n---\n---```lua\n---default = \"Any\"\n---```\n---@field [\"missing-fields\"]? \"Any\" | \"Opened\" | \"None\" | \"Any!\" | \"Opened!\" | \"None!\"\n---Missing annotations for globals! Global functions must have a comment and annotations for all parameters and return values.\n---\n---```lua\n---default = \"None\"\n---```\n---@field [\"missing-global-doc\"]? \"Any\" | \"Opened\" | \"None\" | \"Any!\" | \"Opened!\" | \"None!\"\n---Missing annotations for exported locals! Exported local functions must have a comment and annotations for all parameters and return values.\n---\n---```lua\n---default = \"None\"\n---```\n---@field [\"missing-local-export-doc\"]? \"Any\" | \"Opened\" | \"None\" | \"Any!\" | \"Opened!\" | \"None!\"\n---Enable diagnostics for function calls where the number of arguments is less than the number of annotated function parameters.\n---\n---```lua\n---default = \"Any\"\n---```\n---@field [\"missing-parameter\"]? \"Any\" | \"Opened\" | \"None\" | \"Any!\" | \"Opened!\" | \"None!\"\n---Enable diagnostics for functions with return annotations which have no return statement.\n---\n---```lua\n---default = \"Any\"\n---```\n---@field [\"missing-return\"]? \"Any\" | \"Opened\" | \"None\" | \"Any!\" | \"Opened!\" | \"None!\"\n---Enable diagnostics for return statements without values although the containing function declares returns.\n---\n---```lua\n---default = \"Any\"\n---```\n---@field [\"missing-return-value\"]? \"Any\" | \"Opened\" | \"None\" | \"Any!\" | \"Opened!\" | \"None!\"\n---Enable diagnostics for name style.\n---\n---```lua\n---default = \"None\"\n---```\n---@field [\"name-style-check\"]? \"Any\" | \"Opened\" | \"None\" | \"Any!\" | \"Opened!\" | \"None!\"\n---Enable diagnostics for variable usages if `nil` or an optional (potentially `nil`) value was assigned to the variable before.\n---\n---```lua\n---default = \"Opened\"\n---```\n---@field [\"need-check-nil\"]? \"Any\" | \"Opened\" | \"None\" | \"Any!\" | \"Opened!\" | \"None!\"\n---Enable newfield call diagnostics. It is raised when the parenthesis of a function call appear on the following line when defining a field in a table.\n---\n---```lua\n---default = \"Any\"\n---```\n---@field [\"newfield-call\"]? \"Any\" | \"Opened\" | \"None\" | \"Any!\" | \"Opened!\" | \"None!\"\n---Enable newline call diagnostics. It's raised when a line starting with `(` is encountered, which is syntactically parsed as a function call on the previous line.\n---\n---```lua\n---default = \"Any\"\n---```\n---@field [\"newline-call\"]? \"Any\" | \"Opened\" | \"None\" | \"Any!\" | \"Opened!\" | \"None!\"\n---Enable diagnostics for cases in which the type cannot be inferred.\n---\n---```lua\n---default = \"None\"\n---```\n---@field [\"no-unknown\"]? \"Any\" | \"Opened\" | \"None\" | \"Any!\" | \"Opened!\" | \"None!\"\n---Enable diagnostics for calls to `coroutine.yield()` when it is not permitted.\n---\n---```lua\n---default = \"None\"\n---```\n---@field [\"not-yieldable\"]? \"Any\" | \"Opened\" | \"None\" | \"Any!\" | \"Opened!\" | \"None!\"\n---Enable diagnostics for function calls where the type of a provided parameter does not match the type of the annotated function definition.\n---\n---```lua\n---default = \"Opened\"\n---```\n---@field [\"param-type-mismatch\"]? \"Any\" | \"Opened\" | \"None\" | \"Any!\" | \"Opened!\" | \"None!\"\n---Enable redefined local variable diagnostics.\n---\n---```lua\n---default = \"Opened\"\n---```\n---@field [\"redefined-local\"]? \"Any\" | \"Opened\" | \"None\" | \"Any!\" | \"Opened!\" | \"None!\"\n---Enable redundant function parameter diagnostics.\n---\n---```lua\n---default = \"Any\"\n---```\n---@field [\"redundant-parameter\"]? \"Any\" | \"Opened\" | \"None\" | \"Any!\" | \"Opened!\" | \"None!\"\n---Enable diagnostics for return statements which are not needed because the function would exit on its own.\n---\n---```lua\n---default = \"Opened\"\n---```\n---@field [\"redundant-return\"]? \"Any\" | \"Opened\" | \"None\" | \"Any!\" | \"Opened!\" | \"None!\"\n---Enable diagnostics for return statements which return an extra value which is not specified by a return annotation.\n---\n---```lua\n---default = \"Any\"\n---```\n---@field [\"redundant-return-value\"]? \"Any\" | \"Opened\" | \"None\" | \"Any!\" | \"Opened!\" | \"None!\"\n---Enable the redundant values assigned diagnostics. It's raised during assignment operation, when the number of values is higher than the number of objects being assigned.\n---\n---```lua\n---default = \"Any\"\n---```\n---@field [\"redundant-value\"]? \"Any\" | \"Opened\" | \"None\" | \"Any!\" | \"Opened!\" | \"None!\"\n---Enable diagnostics for return values whose type does not match the type declared in the corresponding return annotation.\n---\n---```lua\n---default = \"Opened\"\n---```\n---@field [\"return-type-mismatch\"]? \"Any\" | \"Opened\" | \"None\" | \"Any!\" | \"Opened!\" | \"None!\"\n---Enable diagnostics for typos in strings.\n---\n---```lua\n---default = \"None\"\n---```\n---@field [\"spell-check\"]? \"Any\" | \"Opened\" | \"None\" | \"Any!\" | \"Opened!\" | \"None!\"\n---Enable trailing space diagnostics.\n---\n---```lua\n---default = \"Opened\"\n---```\n---@field [\"trailing-space\"]? \"Any\" | \"Opened\" | \"None\" | \"Any!\" | \"Opened!\" | \"None!\"\n---Enable diagnostics on multiple assignments if not all variables obtain a value (e.g., `local x,y = 1`).\n---\n---```lua\n---default = \"Any\"\n---```\n---@field [\"unbalanced-assignments\"]? \"Any\" | \"Opened\" | \"None\" | \"Any!\" | \"Opened!\" | \"None!\"\n---Enable diagnostics for class annotations in which an undefined class is referenced.\n---\n---```lua\n---default = \"Any\"\n---```\n---@field [\"undefined-doc-class\"]? \"Any\" | \"Opened\" | \"None\" | \"Any!\" | \"Opened!\" | \"None!\"\n---Enable diagnostics for type annotations referencing an undefined type or alias.\n---\n---```lua\n---default = \"Any\"\n---```\n---@field [\"undefined-doc-name\"]? \"Any\" | \"Opened\" | \"None\" | \"Any!\" | \"Opened!\" | \"None!\"\n---Enable diagnostics for cases in which a parameter annotation is given without declaring the parameter in the function definition.\n---\n---```lua\n---default = \"Any\"\n---```\n---@field [\"undefined-doc-param\"]? \"Any\" | \"Opened\" | \"None\" | \"Any!\" | \"Opened!\" | \"None!\"\n---Enable undefined environment variable diagnostics. It's raised when `_ENV` table is set to a new literal table, but the used global variable is no longer present in the global environment.\n---\n---```lua\n---default = \"Any\"\n---```\n---@field [\"undefined-env-child\"]? \"Any\" | \"Opened\" | \"None\" | \"Any!\" | \"Opened!\" | \"None!\"\n---Enable diagnostics for cases in which an undefined field of a variable is read.\n---\n---```lua\n---default = \"Opened\"\n---```\n---@field [\"undefined-field\"]? \"Any\" | \"Opened\" | \"None\" | \"Any!\" | \"Opened!\" | \"None!\"\n---Enable undefined global variable diagnostics.\n---\n---```lua\n---default = \"Any\"\n---```\n---@field [\"undefined-global\"]? \"Any\" | \"Opened\" | \"None\" | \"Any!\" | \"Opened!\" | \"None!\"\n---Enable diagnostics for casts of undefined variables.\n---\n---```lua\n---default = \"Any\"\n---```\n---@field [\"unknown-cast-variable\"]? \"Any\" | \"Opened\" | \"None\" | \"Any!\" | \"Opened!\" | \"None!\"\n---Enable diagnostics in cases in which an unknown diagnostics code is entered.\n---\n---```lua\n---default = \"Any\"\n---```\n---@field [\"unknown-diag-code\"]? \"Any\" | \"Opened\" | \"None\" | \"Any!\" | \"Opened!\" | \"None!\"\n---Enable diagnostics for unknown operators.\n---\n---```lua\n---default = \"Any\"\n---```\n---@field [\"unknown-operator\"]? \"Any\" | \"Opened\" | \"None\" | \"Any!\" | \"Opened!\" | \"None!\"\n---Enable diagnostics for unreachable code.\n---\n---```lua\n---default = \"Opened\"\n---```\n---@field [\"unreachable-code\"]? \"Any\" | \"Opened\" | \"None\" | \"Any!\" | \"Opened!\" | \"None!\"\n---Enable unused function diagnostics.\n---\n---```lua\n---default = \"Opened\"\n---```\n---@field [\"unused-function\"]? \"Any\" | \"Opened\" | \"None\" | \"Any!\" | \"Opened!\" | \"None!\"\n---Enable unused label diagnostics.\n---\n---```lua\n---default = \"Opened\"\n---```\n---@field [\"unused-label\"]? \"Any\" | \"Opened\" | \"None\" | \"Any!\" | \"Opened!\" | \"None!\"\n---Enable unused local variable diagnostics.\n---\n---```lua\n---default = \"Opened\"\n---```\n---@field [\"unused-local\"]? \"Any\" | \"Opened\" | \"None\" | \"Any!\" | \"Opened!\" | \"None!\"\n---Enable unused vararg diagnostics.\n---\n---```lua\n---default = \"Opened\"\n---```\n---@field [\"unused-vararg\"]? \"Any\" | \"Opened\" | \"None\" | \"Any!\" | \"Opened!\" | \"None!\"\n\n---Modify the diagnostic severity.\n---\n---End with `!` means override the group setting `diagnostics.groupSeverity`.\n---\n---@class _.lspconfig.settings.lua_ls.Lua.Diagnostics.Severity\n---Enable ambiguous operator precedence diagnostics. For example, the `num or 0 + 1` expression will be suggested `(num or 0) + 1` instead.\n---\n---```lua\n---default = \"Warning\"\n---```\n---@field [\"ambiguity-1\"]? \"Error\" | \"Warning\" | \"Information\" | \"Hint\" | \"Error!\" | \"Warning!\" | \"Information!\" | \"Hint!\"\n---Enable diagnostics for assignments in which the value's type does not match the type of the assigned variable.\n---\n---```lua\n---default = \"Warning\"\n---```\n---@field [\"assign-type-mismatch\"]? \"Error\" | \"Warning\" | \"Information\" | \"Hint\" | \"Error!\" | \"Warning!\" | \"Information!\" | \"Hint!\"\n---Enable diagnostics for calls of asynchronous functions within a synchronous function.\n---\n---```lua\n---default = \"Warning\"\n---```\n---@field [\"await-in-sync\"]? \"Error\" | \"Warning\" | \"Information\" | \"Hint\" | \"Error!\" | \"Warning!\" | \"Information!\" | \"Hint!\"\n---Enable diagnostics for casts of local variables where the target type does not match the defined type.\n---\n---```lua\n---default = \"Warning\"\n---```\n---@field [\"cast-local-type\"]? \"Error\" | \"Warning\" | \"Information\" | \"Hint\" | \"Error!\" | \"Warning!\" | \"Information!\" | \"Hint!\"\n---Enable diagnostics for casts where the target type does not match the initial type.\n---\n---```lua\n---default = \"Warning\"\n---```\n---@field [\"cast-type-mismatch\"]? \"Error\" | \"Warning\" | \"Information\" | \"Hint\" | \"Error!\" | \"Warning!\" | \"Information!\" | \"Hint!\"\n---TODO: Needs documentation\n---\n---```lua\n---default = \"Warning\"\n---```\n---@field [\"circle-doc-class\"]? \"Error\" | \"Warning\" | \"Information\" | \"Hint\" | \"Error!\" | \"Warning!\" | \"Information!\" | \"Hint!\"\n---Enable diagnostics for attempts to close a variable with a non-object.\n---\n---```lua\n---default = \"Warning\"\n---```\n---@field [\"close-non-object\"]? \"Error\" | \"Warning\" | \"Information\" | \"Hint\" | \"Error!\" | \"Warning!\" | \"Information!\" | \"Hint!\"\n---Enable diagnostics for code placed after a break statement in a loop.\n---\n---```lua\n---default = \"Hint\"\n---```\n---@field [\"code-after-break\"]? \"Error\" | \"Warning\" | \"Information\" | \"Hint\" | \"Error!\" | \"Warning!\" | \"Information!\" | \"Hint!\"\n---Enable diagnostics for incorrectly styled lines.\n---\n---```lua\n---default = \"Warning\"\n---```\n---@field [\"codestyle-check\"]? \"Error\" | \"Warning\" | \"Information\" | \"Hint\" | \"Error!\" | \"Warning!\" | \"Information!\" | \"Hint!\"\n---Enable diagnostics for `for` loops which will never reach their max/limit because the loop is incrementing instead of decrementing.\n---\n---```lua\n---default = \"Warning\"\n---```\n---@field [\"count-down-loop\"]? \"Error\" | \"Warning\" | \"Information\" | \"Hint\" | \"Error!\" | \"Warning!\" | \"Information!\" | \"Hint!\"\n---Enable diagnostics to highlight deprecated API.\n---\n---```lua\n---default = \"Warning\"\n---```\n---@field deprecated? \"Error\" | \"Warning\" | \"Information\" | \"Hint\" | \"Error!\" | \"Warning!\" | \"Information!\" | \"Hint!\"\n---Enable diagnostics for files which are required by two different paths.\n---\n---```lua\n---default = \"Warning\"\n---```\n---@field [\"different-requires\"]? \"Error\" | \"Warning\" | \"Information\" | \"Hint\" | \"Error!\" | \"Warning!\" | \"Information!\" | \"Hint!\"\n---Enable diagnostics for calls of functions annotated with `---@nodiscard` where the return values are ignored.\n---\n---```lua\n---default = \"Warning\"\n---```\n---@field [\"discard-returns\"]? \"Error\" | \"Warning\" | \"Information\" | \"Hint\" | \"Error!\" | \"Warning!\" | \"Information!\" | \"Hint!\"\n---Enable diagnostics to highlight a field annotation without a defining class annotation.\n---\n---```lua\n---default = \"Warning\"\n---```\n---@field [\"doc-field-no-class\"]? \"Error\" | \"Warning\" | \"Information\" | \"Hint\" | \"Error!\" | \"Warning!\" | \"Information!\" | \"Hint!\"\n---Enable diagnostics for a duplicated alias annotation name.\n---\n---```lua\n---default = \"Warning\"\n---```\n---@field [\"duplicate-doc-alias\"]? \"Error\" | \"Warning\" | \"Information\" | \"Hint\" | \"Error!\" | \"Warning!\" | \"Information!\" | \"Hint!\"\n---Enable diagnostics for a duplicated field annotation name.\n---\n---```lua\n---default = \"Warning\"\n---```\n---@field [\"duplicate-doc-field\"]? \"Error\" | \"Warning\" | \"Information\" | \"Hint\" | \"Error!\" | \"Warning!\" | \"Information!\" | \"Hint!\"\n---Enable diagnostics for a duplicated param annotation name.\n---\n---```lua\n---default = \"Warning\"\n---```\n---@field [\"duplicate-doc-param\"]? \"Error\" | \"Warning\" | \"Information\" | \"Hint\" | \"Error!\" | \"Warning!\" | \"Information!\" | \"Hint!\"\n---Enable duplicate table index diagnostics.\n---\n---```lua\n---default = \"Warning\"\n---```\n---@field [\"duplicate-index\"]? \"Error\" | \"Warning\" | \"Information\" | \"Hint\" | \"Error!\" | \"Warning!\" | \"Information!\" | \"Hint!\"\n---Enable diagnostics for setting the same field in a class more than once.\n---\n---```lua\n---default = \"Warning\"\n---```\n---@field [\"duplicate-set-field\"]? \"Error\" | \"Warning\" | \"Information\" | \"Hint\" | \"Error!\" | \"Warning!\" | \"Information!\" | \"Hint!\"\n---Enable empty code block diagnostics.\n---\n---```lua\n---default = \"Hint\"\n---```\n---@field [\"empty-block\"]? \"Error\" | \"Warning\" | \"Information\" | \"Hint\" | \"Error!\" | \"Warning!\" | \"Information!\" | \"Hint!\"\n---Enable diagnostics to warn about global elements.\n---\n---```lua\n---default = \"Warning\"\n---```\n---@field [\"global-element\"]? \"Error\" | \"Warning\" | \"Information\" | \"Hint\" | \"Error!\" | \"Warning!\" | \"Information!\" | \"Hint!\"\n---Enable cannot use global variables （ `_ENV` is set to `nil`） diagnostics.\n---\n---```lua\n---default = \"Warning\"\n---```\n---@field [\"global-in-nil-env\"]? \"Error\" | \"Warning\" | \"Information\" | \"Hint\" | \"Error!\" | \"Warning!\" | \"Information!\" | \"Hint!\"\n---Incomplete @param or @return annotations for functions.\n---\n---```lua\n---default = \"Warning\"\n---```\n---@field [\"incomplete-signature-doc\"]? \"Error\" | \"Warning\" | \"Information\" | \"Hint\" | \"Error!\" | \"Warning!\" | \"Information!\" | \"Hint!\"\n---TODO: Needs documentation\n---\n---```lua\n---default = \"Warning\"\n---```\n---@field [\"inject-field\"]? \"Error\" | \"Warning\" | \"Information\" | \"Hint\" | \"Error!\" | \"Warning!\" | \"Information!\" | \"Hint!\"\n---Enable diagnostics for accesses to fields which are invisible.\n---\n---```lua\n---default = \"Warning\"\n---```\n---@field invisible? \"Error\" | \"Warning\" | \"Information\" | \"Hint\" | \"Error!\" | \"Warning!\" | \"Information!\" | \"Hint!\"\n---Enable lowercase global variable definition diagnostics.\n---\n---```lua\n---default = \"Information\"\n---```\n---@field [\"lowercase-global\"]? \"Error\" | \"Warning\" | \"Information\" | \"Hint\" | \"Error!\" | \"Warning!\" | \"Information!\" | \"Hint!\"\n---TODO: Needs documentation\n---\n---```lua\n---default = \"Warning\"\n---```\n---@field [\"missing-fields\"]? \"Error\" | \"Warning\" | \"Information\" | \"Hint\" | \"Error!\" | \"Warning!\" | \"Information!\" | \"Hint!\"\n---Missing annotations for globals! Global functions must have a comment and annotations for all parameters and return values.\n---\n---```lua\n---default = \"Warning\"\n---```\n---@field [\"missing-global-doc\"]? \"Error\" | \"Warning\" | \"Information\" | \"Hint\" | \"Error!\" | \"Warning!\" | \"Information!\" | \"Hint!\"\n---Missing annotations for exported locals! Exported local functions must have a comment and annotations for all parameters and return values.\n---\n---```lua\n---default = \"Warning\"\n---```\n---@field [\"missing-local-export-doc\"]? \"Error\" | \"Warning\" | \"Information\" | \"Hint\" | \"Error!\" | \"Warning!\" | \"Information!\" | \"Hint!\"\n---Enable diagnostics for function calls where the number of arguments is less than the number of annotated function parameters.\n---\n---```lua\n---default = \"Warning\"\n---```\n---@field [\"missing-parameter\"]? \"Error\" | \"Warning\" | \"Information\" | \"Hint\" | \"Error!\" | \"Warning!\" | \"Information!\" | \"Hint!\"\n---Enable diagnostics for functions with return annotations which have no return statement.\n---\n---```lua\n---default = \"Warning\"\n---```\n---@field [\"missing-return\"]? \"Error\" | \"Warning\" | \"Information\" | \"Hint\" | \"Error!\" | \"Warning!\" | \"Information!\" | \"Hint!\"\n---Enable diagnostics for return statements without values although the containing function declares returns.\n---\n---```lua\n---default = \"Warning\"\n---```\n---@field [\"missing-return-value\"]? \"Error\" | \"Warning\" | \"Information\" | \"Hint\" | \"Error!\" | \"Warning!\" | \"Information!\" | \"Hint!\"\n---Enable diagnostics for name style.\n---\n---```lua\n---default = \"Warning\"\n---```\n---@field [\"name-style-check\"]? \"Error\" | \"Warning\" | \"Information\" | \"Hint\" | \"Error!\" | \"Warning!\" | \"Information!\" | \"Hint!\"\n---Enable diagnostics for variable usages if `nil` or an optional (potentially `nil`) value was assigned to the variable before.\n---\n---```lua\n---default = \"Warning\"\n---```\n---@field [\"need-check-nil\"]? \"Error\" | \"Warning\" | \"Information\" | \"Hint\" | \"Error!\" | \"Warning!\" | \"Information!\" | \"Hint!\"\n---Enable newfield call diagnostics. It is raised when the parenthesis of a function call appear on the following line when defining a field in a table.\n---\n---```lua\n---default = \"Warning\"\n---```\n---@field [\"newfield-call\"]? \"Error\" | \"Warning\" | \"Information\" | \"Hint\" | \"Error!\" | \"Warning!\" | \"Information!\" | \"Hint!\"\n---Enable newline call diagnostics. It's raised when a line starting with `(` is encountered, which is syntactically parsed as a function call on the previous line.\n---\n---```lua\n---default = \"Warning\"\n---```\n---@field [\"newline-call\"]? \"Error\" | \"Warning\" | \"Information\" | \"Hint\" | \"Error!\" | \"Warning!\" | \"Information!\" | \"Hint!\"\n---Enable diagnostics for cases in which the type cannot be inferred.\n---\n---```lua\n---default = \"Warning\"\n---```\n---@field [\"no-unknown\"]? \"Error\" | \"Warning\" | \"Information\" | \"Hint\" | \"Error!\" | \"Warning!\" | \"Information!\" | \"Hint!\"\n---Enable diagnostics for calls to `coroutine.yield()` when it is not permitted.\n---\n---```lua\n---default = \"Warning\"\n---```\n---@field [\"not-yieldable\"]? \"Error\" | \"Warning\" | \"Information\" | \"Hint\" | \"Error!\" | \"Warning!\" | \"Information!\" | \"Hint!\"\n---Enable diagnostics for function calls where the type of a provided parameter does not match the type of the annotated function definition.\n---\n---```lua\n---default = \"Warning\"\n---```\n---@field [\"param-type-mismatch\"]? \"Error\" | \"Warning\" | \"Information\" | \"Hint\" | \"Error!\" | \"Warning!\" | \"Information!\" | \"Hint!\"\n---Enable redefined local variable diagnostics.\n---\n---```lua\n---default = \"Hint\"\n---```\n---@field [\"redefined-local\"]? \"Error\" | \"Warning\" | \"Information\" | \"Hint\" | \"Error!\" | \"Warning!\" | \"Information!\" | \"Hint!\"\n---Enable redundant function parameter diagnostics.\n---\n---```lua\n---default = \"Warning\"\n---```\n---@field [\"redundant-parameter\"]? \"Error\" | \"Warning\" | \"Information\" | \"Hint\" | \"Error!\" | \"Warning!\" | \"Information!\" | \"Hint!\"\n---Enable diagnostics for return statements which are not needed because the function would exit on its own.\n---\n---```lua\n---default = \"Hint\"\n---```\n---@field [\"redundant-return\"]? \"Error\" | \"Warning\" | \"Information\" | \"Hint\" | \"Error!\" | \"Warning!\" | \"Information!\" | \"Hint!\"\n---Enable diagnostics for return statements which return an extra value which is not specified by a return annotation.\n---\n---```lua\n---default = \"Warning\"\n---```\n---@field [\"redundant-return-value\"]? \"Error\" | \"Warning\" | \"Information\" | \"Hint\" | \"Error!\" | \"Warning!\" | \"Information!\" | \"Hint!\"\n---Enable the redundant values assigned diagnostics. It's raised during assignment operation, when the number of values is higher than the number of objects being assigned.\n---\n---```lua\n---default = \"Warning\"\n---```\n---@field [\"redundant-value\"]? \"Error\" | \"Warning\" | \"Information\" | \"Hint\" | \"Error!\" | \"Warning!\" | \"Information!\" | \"Hint!\"\n---Enable diagnostics for return values whose type does not match the type declared in the corresponding return annotation.\n---\n---```lua\n---default = \"Warning\"\n---```\n---@field [\"return-type-mismatch\"]? \"Error\" | \"Warning\" | \"Information\" | \"Hint\" | \"Error!\" | \"Warning!\" | \"Information!\" | \"Hint!\"\n---Enable diagnostics for typos in strings.\n---\n---```lua\n---default = \"Information\"\n---```\n---@field [\"spell-check\"]? \"Error\" | \"Warning\" | \"Information\" | \"Hint\" | \"Error!\" | \"Warning!\" | \"Information!\" | \"Hint!\"\n---Enable trailing space diagnostics.\n---\n---```lua\n---default = \"Hint\"\n---```\n---@field [\"trailing-space\"]? \"Error\" | \"Warning\" | \"Information\" | \"Hint\" | \"Error!\" | \"Warning!\" | \"Information!\" | \"Hint!\"\n---Enable diagnostics on multiple assignments if not all variables obtain a value (e.g., `local x,y = 1`).\n---\n---```lua\n---default = \"Warning\"\n---```\n---@field [\"unbalanced-assignments\"]? \"Error\" | \"Warning\" | \"Information\" | \"Hint\" | \"Error!\" | \"Warning!\" | \"Information!\" | \"Hint!\"\n---Enable diagnostics for class annotations in which an undefined class is referenced.\n---\n---```lua\n---default = \"Warning\"\n---```\n---@field [\"undefined-doc-class\"]? \"Error\" | \"Warning\" | \"Information\" | \"Hint\" | \"Error!\" | \"Warning!\" | \"Information!\" | \"Hint!\"\n---Enable diagnostics for type annotations referencing an undefined type or alias.\n---\n---```lua\n---default = \"Warning\"\n---```\n---@field [\"undefined-doc-name\"]? \"Error\" | \"Warning\" | \"Information\" | \"Hint\" | \"Error!\" | \"Warning!\" | \"Information!\" | \"Hint!\"\n---Enable diagnostics for cases in which a parameter annotation is given without declaring the parameter in the function definition.\n---\n---```lua\n---default = \"Warning\"\n---```\n---@field [\"undefined-doc-param\"]? \"Error\" | \"Warning\" | \"Information\" | \"Hint\" | \"Error!\" | \"Warning!\" | \"Information!\" | \"Hint!\"\n---Enable undefined environment variable diagnostics. It's raised when `_ENV` table is set to a new literal table, but the used global variable is no longer present in the global environment.\n---\n---```lua\n---default = \"Information\"\n---```\n---@field [\"undefined-env-child\"]? \"Error\" | \"Warning\" | \"Information\" | \"Hint\" | \"Error!\" | \"Warning!\" | \"Information!\" | \"Hint!\"\n---Enable diagnostics for cases in which an undefined field of a variable is read.\n---\n---```lua\n---default = \"Warning\"\n---```\n---@field [\"undefined-field\"]? \"Error\" | \"Warning\" | \"Information\" | \"Hint\" | \"Error!\" | \"Warning!\" | \"Information!\" | \"Hint!\"\n---Enable undefined global variable diagnostics.\n---\n---```lua\n---default = \"Warning\"\n---```\n---@field [\"undefined-global\"]? \"Error\" | \"Warning\" | \"Information\" | \"Hint\" | \"Error!\" | \"Warning!\" | \"Information!\" | \"Hint!\"\n---Enable diagnostics for casts of undefined variables.\n---\n---```lua\n---default = \"Warning\"\n---```\n---@field [\"unknown-cast-variable\"]? \"Error\" | \"Warning\" | \"Information\" | \"Hint\" | \"Error!\" | \"Warning!\" | \"Information!\" | \"Hint!\"\n---Enable diagnostics in cases in which an unknown diagnostics code is entered.\n---\n---```lua\n---default = \"Warning\"\n---```\n---@field [\"unknown-diag-code\"]? \"Error\" | \"Warning\" | \"Information\" | \"Hint\" | \"Error!\" | \"Warning!\" | \"Information!\" | \"Hint!\"\n---Enable diagnostics for unknown operators.\n---\n---```lua\n---default = \"Warning\"\n---```\n---@field [\"unknown-operator\"]? \"Error\" | \"Warning\" | \"Information\" | \"Hint\" | \"Error!\" | \"Warning!\" | \"Information!\" | \"Hint!\"\n---Enable diagnostics for unreachable code.\n---\n---```lua\n---default = \"Hint\"\n---```\n---@field [\"unreachable-code\"]? \"Error\" | \"Warning\" | \"Information\" | \"Hint\" | \"Error!\" | \"Warning!\" | \"Information!\" | \"Hint!\"\n---Enable unused function diagnostics.\n---\n---```lua\n---default = \"Hint\"\n---```\n---@field [\"unused-function\"]? \"Error\" | \"Warning\" | \"Information\" | \"Hint\" | \"Error!\" | \"Warning!\" | \"Information!\" | \"Hint!\"\n---Enable unused label diagnostics.\n---\n---```lua\n---default = \"Hint\"\n---```\n---@field [\"unused-label\"]? \"Error\" | \"Warning\" | \"Information\" | \"Hint\" | \"Error!\" | \"Warning!\" | \"Information!\" | \"Hint!\"\n---Enable unused local variable diagnostics.\n---\n---```lua\n---default = \"Hint\"\n---```\n---@field [\"unused-local\"]? \"Error\" | \"Warning\" | \"Information\" | \"Hint\" | \"Error!\" | \"Warning!\" | \"Information!\" | \"Hint!\"\n---Enable unused vararg diagnostics.\n---\n---```lua\n---default = \"Hint\"\n---```\n---@field [\"unused-vararg\"]? \"Error\" | \"Warning\" | \"Information\" | \"Hint\" | \"Error!\" | \"Warning!\" | \"Information!\" | \"Hint!\"\n\n---@class _.lspconfig.settings.lua_ls.Lua.Diagnostics\n---Disabled diagnostic (Use code in hover brackets).\n---\n---```lua\n---default = {}\n---```\n---@field disable? string[]\n---Enable diagnostics.\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n---TODO: Needs documentation\n---\n---```lua\n---default = { \"file\" }\n---```\n---@field enableScheme? string[]\n---Defined global variables.\n---\n---```lua\n---default = {}\n---```\n---@field globals? string[]\n---Find defined global variables using regex.\n---\n---```lua\n---default = {}\n---```\n---@field globalsRegex? string[]\n---Modify the diagnostic needed file status in a group.\n---\n---* Opened:  only diagnose opened files\n---* Any:     diagnose all files\n---* None:    disable this diagnostic\n---\n---`Fallback` means that diagnostics in this group are controlled by `diagnostics.neededFileStatus` separately.\n---Other settings will override individual settings without end of `!`.\n---\n---@field groupFileStatus? _.lspconfig.settings.lua_ls.Lua.Diagnostics.GroupFileStatus\n---Modify the diagnostic severity in a group.\n---`Fallback` means that diagnostics in this group are controlled by `diagnostics.severity` separately.\n---Other settings will override individual settings without end of `!`.\n---\n---@field groupSeverity? _.lspconfig.settings.lua_ls.Lua.Diagnostics.GroupSeverity\n---How to diagnose ignored files.\n---\n---```lua\n---default = \"Opened\"\n---```\n---@field ignoredFiles? \"Enable\" | \"Opened\" | \"Disable\"\n---How to diagnose files loaded via `Lua.workspace.library`.\n---\n---```lua\n---default = \"Opened\"\n---```\n---@field libraryFiles? \"Enable\" | \"Opened\" | \"Disable\"\n---* Opened:  only diagnose opened files\n---* Any:     diagnose all files\n---* None:    disable this diagnostic\n---\n---End with `!` means override the group setting `diagnostics.groupFileStatus`.\n---\n---@field neededFileStatus? _.lspconfig.settings.lua_ls.Lua.Diagnostics.NeededFileStatus\n---Modify the diagnostic severity.\n---\n---End with `!` means override the group setting `diagnostics.groupSeverity`.\n---\n---@field severity? _.lspconfig.settings.lua_ls.Lua.Diagnostics.Severity\n---Do not diagnose `unused-local` when the variable name matches the following pattern.\n---\n---```lua\n---default = {}\n---```\n---@field unusedLocalExclude? string[]\n---Latency (milliseconds) for workspace diagnostics.\n---\n---```lua\n---default = 3000\n---```\n---@field workspaceDelay? integer\n---Set the time to trigger workspace diagnostics.\n---\n---```lua\n---default = \"OnSave\"\n---```\n---@field workspaceEvent? \"OnChange\" | \"OnSave\" | \"None\"\n---Workspace diagnostics run rate (%). Decreasing this value reduces CPU usage, but also reduces the speed of workspace diagnostics. The diagnosis of the file you are currently editing is always done at full speed and is not affected by this setting.\n---\n---```lua\n---default = 100\n---```\n---@field workspaceRate? integer\n\n---@class _.lspconfig.settings.lua_ls.Lua.Doc\n---Treat specific field names as package, e.g. `m_*` means `XXX.m_id` and `XXX.m_type` are package, witch can only be accessed in the file where the definition is located.\n---\n---```lua\n---default = {}\n---```\n---@field packageName? string[]\n---Treat specific field names as private, e.g. `m_*` means `XXX.m_id` and `XXX.m_type` are private, witch can only be accessed in the class where the definition is located.\n---\n---```lua\n---default = {}\n---```\n---@field privateName? string[]\n---Treat specific field names as protected, e.g. `m_*` means `XXX.m_id` and `XXX.m_type` are protected, witch can only be accessed in the class where the definition is located and its subclasses.\n---\n---```lua\n---default = {}\n---```\n---@field protectedName? string[]\n---The regular expression engine used for matching documentation scope names.\n---\n---```lua\n---default = \"glob\"\n---```\n---@field regengine? \"glob\" | \"lua\"\n\n---@class _.lspconfig.settings.lua_ls.Lua.Format\n---The default format configuration. Has a lower priority than `.editorconfig` file in the workspace.\n---Read [formatter docs](https://github.com/CppCXY/EmmyLuaCodeStyle/tree/master/docs) to learn usage.\n---\n---\n---```lua\n---default = {}\n---```\n---@field defaultConfig? table\n---Enable code formatter.\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n\n---@class _.lspconfig.settings.lua_ls.Lua.Hint\n---Show hints of array index when constructing a table.\n---\n---```lua\n---default = \"Auto\"\n---```\n---@field arrayIndex? \"Enable\" | \"Auto\" | \"Disable\"\n---If the called function is marked `---@async`, prompt `await` at the call.\n---\n---```lua\n---default = true\n---```\n---@field await? boolean\n---Enable the propagation of `await`. When a function calls a function marked `---@async`,it will be automatically marked as `---@async`.\n---@field awaitPropagate? boolean\n---Enable inlay hint.\n---@field enable? boolean\n---Show hints of parameter name at the function call.\n---\n---```lua\n---default = \"All\"\n---```\n---@field paramName? \"All\" | \"Literal\" | \"Disable\"\n---Show type hints at the parameter of the function.\n---\n---```lua\n---default = true\n---```\n---@field paramType? boolean\n---If there is no semicolon at the end of the statement, display a virtual semicolon.\n---\n---```lua\n---default = \"SameLine\"\n---```\n---@field semicolon? \"All\" | \"SameLine\" | \"Disable\"\n---Show hints of type at assignment operation.\n---@field setType? boolean\n\n---@class _.lspconfig.settings.lua_ls.Lua.Hover\n---Enable hover.\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n---When the value corresponds to multiple types, limit the number of types displaying.\n---\n---```lua\n---default = 5\n---```\n---@field enumsLimit? integer\n---Whether to expand the alias. For example, expands `---@alias myType boolean|number` appears as `boolean|number`, otherwise it appears as `myType'.\n---\n---\n---```lua\n---default = true\n---```\n---@field expandAlias? boolean\n---When hovering to view a table, limits the maximum number of previews for fields.\n---\n---```lua\n---default = 10\n---```\n---@field previewFields? integer\n---Hover to view numeric content (only if literal is not decimal).\n---\n---```lua\n---default = true\n---```\n---@field viewNumber? boolean\n---Hover to view the contents of a string (only if the literal contains an escape character).\n---\n---```lua\n---default = true\n---```\n---@field viewString? boolean\n---The maximum length of a hover to view the contents of a string.\n---\n---```lua\n---default = 1000\n---```\n---@field viewStringMax? integer\n\n---@class _.lspconfig.settings.lua_ls.Lua.Language\n---(VSCode only) Automatically insert \"---@ \" after a line break following a annotation.\n---\n---```lua\n---default = true\n---```\n---@field completeAnnotation? boolean\n---(VSCode only) Fix incorrect auto-indentation, such as incorrect indentation when line breaks occur within a string containing the word \"function\".\n---\n---```lua\n---default = true\n---```\n---@field fixIndent? boolean\n\n---@class _.lspconfig.settings.lua_ls.Lua.Misc\n---Specify the executable path in VSCode.\n---\n---```lua\n---default = \"\"\n---```\n---@field executablePath? string\n---[Command line parameters](https://github.com/LuaLS/lua-telemetry-server/tree/master/method) when starting the language server in VSCode.\n---\n---```lua\n---default = {}\n---```\n---@field parameters? string[]\n\n---@class _.lspconfig.settings.lua_ls.Lua.NameStyle\n---Set name style config.\n---Read [formatter docs](https://github.com/CppCXY/EmmyLuaCodeStyle/tree/master/docs) to learn usage.\n---\n---\n---```lua\n---default = {}\n---```\n---@field config? table\n\n---Adjust the enabled state of the built-in library. You can disable (or redefine) the non-existent library according to the actual runtime environment.\n---\n---* `default`: Indicates that the library will be enabled or disabled according to the runtime version\n---* `enable`: always enable\n---* `disable`: always disable\n---\n---@class _.lspconfig.settings.lua_ls.Lua.Runtime.Builtin\n---TODO: Needs documentation\n---\n---```lua\n---default = \"default\"\n---```\n---@field basic? \"default\" | \"enable\" | \"disable\"\n---TODO: Needs documentation\n---\n---```lua\n---default = \"default\"\n---```\n---@field bit? \"default\" | \"enable\" | \"disable\"\n---TODO: Needs documentation\n---\n---```lua\n---default = \"default\"\n---```\n---@field bit32? \"default\" | \"enable\" | \"disable\"\n---TODO: Needs documentation\n---\n---```lua\n---default = \"default\"\n---```\n---@field builtin? \"default\" | \"enable\" | \"disable\"\n---TODO: Needs documentation\n---\n---```lua\n---default = \"default\"\n---```\n---@field coroutine? \"default\" | \"enable\" | \"disable\"\n---TODO: Needs documentation\n---\n---```lua\n---default = \"default\"\n---```\n---@field debug? \"default\" | \"enable\" | \"disable\"\n---TODO: Needs documentation\n---\n---```lua\n---default = \"default\"\n---```\n---@field ffi? \"default\" | \"enable\" | \"disable\"\n---TODO: Needs documentation\n---\n---```lua\n---default = \"default\"\n---```\n---@field io? \"default\" | \"enable\" | \"disable\"\n---TODO: Needs documentation\n---\n---```lua\n---default = \"default\"\n---```\n---@field jit? \"default\" | \"enable\" | \"disable\"\n---TODO: Needs documentation\n---\n---```lua\n---default = \"default\"\n---```\n---@field [\"jit.profile\"]? \"default\" | \"enable\" | \"disable\"\n---TODO: Needs documentation\n---\n---```lua\n---default = \"default\"\n---```\n---@field [\"jit.util\"]? \"default\" | \"enable\" | \"disable\"\n---TODO: Needs documentation\n---\n---```lua\n---default = \"default\"\n---```\n---@field math? \"default\" | \"enable\" | \"disable\"\n---TODO: Needs documentation\n---\n---```lua\n---default = \"default\"\n---```\n---@field os? \"default\" | \"enable\" | \"disable\"\n---TODO: Needs documentation\n---\n---```lua\n---default = \"default\"\n---```\n---@field [\"package\"]? \"default\" | \"enable\" | \"disable\"\n---TODO: Needs documentation\n---\n---```lua\n---default = \"default\"\n---```\n---@field string? \"default\" | \"enable\" | \"disable\"\n---TODO: Needs documentation\n---\n---```lua\n---default = \"default\"\n---```\n---@field [\"string.buffer\"]? \"default\" | \"enable\" | \"disable\"\n---TODO: Needs documentation\n---\n---```lua\n---default = \"default\"\n---```\n---@field table? \"default\" | \"enable\" | \"disable\"\n---TODO: Needs documentation\n---\n---```lua\n---default = \"default\"\n---```\n---@field [\"table.clear\"]? \"default\" | \"enable\" | \"disable\"\n---TODO: Needs documentation\n---\n---```lua\n---default = \"default\"\n---```\n---@field [\"table.new\"]? \"default\" | \"enable\" | \"disable\"\n---TODO: Needs documentation\n---\n---```lua\n---default = \"default\"\n---```\n---@field utf8? \"default\" | \"enable\" | \"disable\"\n\n---@class _.lspconfig.settings.lua_ls.Lua.Runtime\n---Adjust the enabled state of the built-in library. You can disable (or redefine) the non-existent library according to the actual runtime environment.\n---\n---* `default`: Indicates that the library will be enabled or disabled according to the runtime version\n---* `enable`: always enable\n---* `disable`: always disable\n---\n---@field builtin? _.lspconfig.settings.lua_ls.Lua.Runtime.Builtin\n---File encoding. The `ansi` option is only available under the `Windows` platform.\n---\n---```lua\n---default = \"utf8\"\n---```\n---@field fileEncoding? \"utf8\" | \"ansi\" | \"utf16le\" | \"utf16be\"\n---Format of the directory name of the meta files.\n---\n---```lua\n---default = \"${version} ${language} ${encoding}\"\n---```\n---@field meta? string\n---Supports non-standard symbols. Make sure that your runtime environment supports these symbols.\n---\n---```lua\n---default = {}\n---```\n---@field nonstandardSymbol? string[]\n---When using `require`, how to find the file based on the input name.\n---Setting this config to `?/init.lua` means that when you enter `require 'myfile'`, `${workspace}/myfile/init.lua` will be searched from the loaded files.\n---if `runtime.pathStrict` is `false`, `${workspace}/**/myfile/init.lua` will also be searched.\n---If you want to load files outside the workspace, you need to set `Lua.workspace.library` first.\n---\n---\n---```lua\n---default = { \"?.lua\", \"?/init.lua\" }\n---```\n---@field path? string[]\n---When enabled, `runtime.path` will only search the first level of directories, see the description of `runtime.path`.\n---@field pathStrict? boolean\n---Plugin path. Please read [wiki](https://luals.github.io/wiki/plugins) to learn more.\n---@field plugin? string|any[]\n---Additional arguments for the plugin.\n---@field pluginArgs? any[]|table\n---The custom global variables are regarded as some special built-in variables, and the language server will provide special support\n---The following example shows that 'include' is treated as' require '.\n---```json\n---\"Lua.runtime.special\" : {\n---    \"include\" : \"require\"\n---}\n---```\n---\n---\n---```lua\n---default = {}\n---```\n---@field special? table\n---Allows Unicode characters in name.\n---@field unicodeName? boolean\n---Lua runtime version.\n---\n---```lua\n---default = \"Lua 5.4\"\n---```\n---@field version? \"Lua 5.1\" | \"Lua 5.2\" | \"Lua 5.3\" | \"Lua 5.4\" | \"Lua 5.5\" | \"LuaJIT\"\n\n---@class _.lspconfig.settings.lua_ls.Lua.Semantic\n---Semantic coloring of type annotations.\n---\n---```lua\n---default = true\n---```\n---@field annotation? boolean\n---Enable semantic color. You may need to set `editor.semanticHighlighting.enabled` to `true` to take effect.\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n---Semantic coloring of keywords/literals/operators. You only need to enable this feature if your editor cannot do syntax coloring.\n---@field keyword? boolean\n---Semantic coloring of variables/fields/parameters.\n---\n---```lua\n---default = true\n---```\n---@field variable? boolean\n\n---@class _.lspconfig.settings.lua_ls.Lua.SignatureHelp\n---Enable signature help.\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n\n---@class _.lspconfig.settings.lua_ls.Lua.Spell\n---Custom words for spell checking.\n---\n---```lua\n---default = {}\n---```\n---@field dict? string[]\n\n---@class _.lspconfig.settings.lua_ls.Lua.Type\n---Allowed to assign the `number` type to the `integer` type.\n---\n---```lua\n---default = true\n---```\n---@field castNumberToInteger? boolean\n---Strictly check the shape of the table.\n---\n---@field checkTableShape? boolean\n---When a parameter type is not annotated, it is inferred from the function's call sites.\n---\n---When this setting is `false`, the type of the parameter is `any` when it is not annotated.\n---\n---@field inferParamType? boolean\n---Maximum number of table fields analyzed during type inference.\n---\n---```lua\n---default = 10\n---```\n---@field inferTableSize? integer\n---TODO: Needs documentation\n---\n---```lua\n---default = 0\n---```\n---@field maxUnionVariants? integer\n---When checking the type of union type, ignore the `nil` in it.\n---\n---When this setting is `false`, the `number|nil` type cannot be assigned to the `number` type. It can be with `true`.\n---\n---@field weakNilCheck? boolean\n---Once one subtype of a union type meets the condition, the union type also meets the condition.\n---\n---When this setting is `false`, the `number|boolean` type cannot be assigned to the `number` type. It can be with `true`.\n---\n---@field weakUnionCheck? boolean\n\n---Configures the formatting behavior while typing Lua code.\n---@class _.lspconfig.settings.lua_ls.Lua.TypeFormat.Config\n---Controls if `end` is automatically completed at suitable positions.\n---\n---```lua\n---default = \"true\"\n---```\n---@field auto_complete_end? string\n---Controls if a separator is automatically appended at the end of a table declaration.\n---\n---```lua\n---default = \"true\"\n---```\n---@field auto_complete_table_sep? string\n---Controls if a line is formatted at all.\n---\n---```lua\n---default = \"true\"\n---```\n---@field format_line? string\n\n---@class _.lspconfig.settings.lua_ls.Lua.TypeFormat\n---Configures the formatting behavior while typing Lua code.\n---@field config? _.lspconfig.settings.lua_ls.Lua.TypeFormat.Config\n\n---@class _.lspconfig.settings.lua_ls.Lua.Window\n---Show progress bar in status bar.\n---\n---```lua\n---default = true\n---```\n---@field progressBar? boolean\n---Show extension status in status bar.\n---\n---```lua\n---default = true\n---```\n---@field statusBar? boolean\n\n---@class _.lspconfig.settings.lua_ls.Lua.Workspace\n---Automatic detection and adaptation of third-party libraries, currently supported libraries are:\n---\n---* OpenResty\n---* Cocos4.0\n---* LÖVE\n---* LÖVR\n---* skynet\n---* Jass\n---\n---@field checkThirdParty? string|boolean\n---Ignored files and directories (Use `.gitignore` grammar).\n---\n---```lua\n---default = { \".vscode\" }\n---```\n---@field ignoreDir? string[]\n---Ignore submodules.\n---\n---```lua\n---default = true\n---```\n---@field ignoreSubmodules? boolean\n---In addition to the current workspace, which directories will load files from. The files in these directories will be treated as externally provided code libraries, and some features (such as renaming fields) will not modify these files.\n---\n---```lua\n---default = {}\n---```\n---@field library? string[]\n---Max preloaded files.\n---\n---```lua\n---default = 5000\n---```\n---@field maxPreload? integer\n---Skip files larger than this value (KB) when preloading.\n---\n---```lua\n---default = 500\n---```\n---@field preloadFileSize? integer\n---Ignore files list in `.gitignore` .\n---\n---```lua\n---default = true\n---```\n---@field useGitIgnore? boolean\n---Add private third-party library configuration file paths here, please refer to the built-in [configuration file path](https://github.com/LuaLS/lua-language-server/tree/master/meta/3rd)\n---\n---```lua\n---default = {}\n---```\n---@field userThirdParty? string[]\n\n---@class _.lspconfig.settings.lua_ls.Lua\n---@field addonManager? _.lspconfig.settings.lua_ls.Lua.AddonManager\n---Specifies the addon repository path (not related to the addon manager).\n---\n---```lua\n---default = \"\"\n---```\n---@field addonRepositoryPath? string\n---@field codeLens? _.lspconfig.settings.lua_ls.Lua.CodeLens\n---@field completion? _.lspconfig.settings.lua_ls.Lua.Completion\n---@field diagnostics? _.lspconfig.settings.lua_ls.Lua.Diagnostics\n---@field doc? _.lspconfig.settings.lua_ls.Lua.Doc\n---The regular expression engine used for matching documentation scope names.\n---\n---```lua\n---default = \"\"\n---```\n---@field docScriptPath? string\n---@field format? _.lspconfig.settings.lua_ls.Lua.Format\n---@field hint? _.lspconfig.settings.lua_ls.Lua.Hint\n---@field hover? _.lspconfig.settings.lua_ls.Lua.Hover\n---@field language? _.lspconfig.settings.lua_ls.Lua.Language\n---@field misc? _.lspconfig.settings.lua_ls.Lua.Misc\n---@field nameStyle? _.lspconfig.settings.lua_ls.Lua.NameStyle\n---@field runtime? _.lspconfig.settings.lua_ls.Lua.Runtime\n---@field semantic? _.lspconfig.settings.lua_ls.Lua.Semantic\n---@field signatureHelp? _.lspconfig.settings.lua_ls.Lua.SignatureHelp\n---@field spell? _.lspconfig.settings.lua_ls.Lua.Spell\n---@field type? _.lspconfig.settings.lua_ls.Lua.Type\n---@field typeFormat? _.lspconfig.settings.lua_ls.Lua.TypeFormat\n---@field window? _.lspconfig.settings.lua_ls.Lua.Window\n---@field workspace? _.lspconfig.settings.lua_ls.Lua.Workspace\n\n---@class lspconfig.settings.lua_ls\n---@field Lua? _.lspconfig.settings.lua_ls.Lua\n"
  },
  {
    "path": "lua/lspconfig/types/lsp/luau_lsp.lua",
    "content": "---@meta\n\n---@class _.lspconfig.settings.luau_lsp.Luau.Trace\n---Traces the communication between VS Code and the Luau language server.\n---\n---```lua\n---default = \"off\"\n---```\n---@field server? \"off\" | \"messages\" | \"verbose\"\n\n---@class _.lspconfig.settings.luau_lsp.Luau\n---@field trace? _.lspconfig.settings.luau_lsp.Luau.Trace\n\n---@class _.lspconfig.settings.luau_lsp.LuauLsp.Bytecode\n---The `debugLevel` to use when compiling bytecode\n---\n---```lua\n---default = 1\n---```\n---@field debugLevel? number\n---The `typeInfoLevel` to use when compiling bytecode\n---\n---```lua\n---default = 1\n---```\n---@field typeInfoLevel? number\n---The `vectorCtor` to use when compiling bytecode\n---\n---```lua\n---default = \"new\"\n---```\n---@field vectorCtor? string\n---The `vectorLib` to use when compiling bytecode\n---\n---```lua\n---default = \"Vector3\"\n---```\n---@field vectorLib? string\n---The `vectorType` to use when compiling bytecode\n---\n---```lua\n---default = \"Vector3\"\n---```\n---@field vectorType? string\n\n---@class _.lspconfig.settings.luau_lsp.LuauLsp.Completion.Imports.StringRequires\n---Whether to use string requires when auto-importing requires. Only checked if `#luau-lsp.platform.type#` is `roblox`\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.luau_lsp.LuauLsp.Completion.Imports\n---Suggest automatic imports in completion items\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n---Do not show any of the listed services when auto-importing\n---\n---```lua\n---default = {}\n---```\n---@field excludedServices? string[]\n---Files that match these globs will not be shown during auto-import\n---\n---```lua\n---default = { \"**/_Index/**\" }\n---```\n---@field ignoreGlobs? string[]\n---When non-empty, only show the services listed when auto-importing\n---\n---```lua\n---default = {}\n---```\n---@field includedServices? string[]\n---The style of requires when autocompleted\n---\n---```lua\n---default = \"auto\"\n---```\n---@field requireStyle? \"auto\" | \"alwaysRelative\" | \"alwaysAbsolute\"\n---Whether services and requires should be separated by an empty line\n---@field separateGroupsWithLine? boolean\n---@field stringRequires? _.lspconfig.settings.luau_lsp.LuauLsp.Completion.Imports.StringRequires\n---Whether module requires are suggested in autocomplete\n---\n---```lua\n---default = true\n---```\n---@field suggestRequires? boolean\n---Whether GetService completions are suggested in autocomplete\n---\n---```lua\n---default = true\n---```\n---@field suggestServices? boolean\n\n---@class _.lspconfig.settings.luau_lsp.LuauLsp.Completion\n---Add parentheses after completing a function call\n---\n---```lua\n---default = true\n---```\n---@field addParentheses? boolean\n---If `#luau-lsp.completion.addParentheses#` is enabled, then include a tabstop after the parentheses for the cursor to move to\n---\n---```lua\n---default = true\n---```\n---@field addTabstopAfterParentheses? boolean\n---Automatically insert an `end` when opening a block\n---@field autocompleteEnd? boolean\n---Enables the fragment autocomplete system for performance improvements\n---\n---```lua\n---default = true\n---```\n---@field enableFragmentAutocomplete? boolean\n---Enable autocomplete\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n---Fill parameter names in an autocompleted function call, which can be tabbed through. Requires `#luau-lsp.completion.addParentheses#` to be enabled\n---\n---```lua\n---default = true\n---```\n---@field fillCallArguments? boolean\n---@field imports? _.lspconfig.settings.luau_lsp.LuauLsp.Completion.Imports\n---Whether to show the auto-generated anonymous function completion item when autocompleting callback arguments\n---\n---```lua\n---default = true\n---```\n---@field showAnonymousAutofilledFunction? boolean\n---Whether to show deprecated items in autocomplete suggestions\n---\n---```lua\n---default = true\n---```\n---@field showDeprecatedItems? boolean\n---Whether to show keywords (`if` / `then` / `and` / etc.) during autocomplete\n---\n---```lua\n---default = true\n---```\n---@field showKeywords? boolean\n---Whether to show non-function properties when performing a method call with a colon (e.g., `foo:bar`)\n---@field showPropertiesOnMethodCall? boolean\n---Suggest automatic imports in completion items\n---@field suggestImports? boolean\n\n---@class _.lspconfig.settings.luau_lsp.LuauLsp.Diagnostics\n---Recompute diagnostics for dependents when a file changes. If `#luau-lsp.diagnostics.workspace#` is enabled, this is ignored\n---\n---```lua\n---default = true\n---```\n---@field includeDependents? boolean\n---Whether to update document diagnostics whenever the text file changes\n---\n---```lua\n---default = true\n---```\n---@field pullOnChange? boolean\n---Whether to update document diagnostics whenever the text file is saved\n---\n---```lua\n---default = true\n---```\n---@field pullOnSave? boolean\n---Use strict DataModel types in diagnostics. When on, this is equivalent to the more expressive autocompletion types. When this is off, `game`/`script`/`workspace` (and their members) are all typed as `any`, and helps to prevent false positives. [Read More](https://github.com/JohnnyMorganz/luau-lsp/issues/83#issuecomment-1192865024)\n---@field strictDatamodelTypes? boolean\n---Compute diagnostics for the whole workspace\n---@field workspace? boolean\n\n---@class _.lspconfig.settings.luau_lsp.LuauLsp.Fflags\n---Enable all (boolean) Luau FFlags by default. These flags can later be overriden by `#luau-lsp.fflags.override#` and `#luau-lsp.fflags.sync#`\n---@field enableByDefault? boolean\n---Enables the flags required for Luau's new type solver. These flags can be overriden by `#luau-lsp.fflags.override#`\n---@field enableNewSolver? boolean\n---Override FFlags passed to Luau\n---\n---```lua\n---default = {}\n---```\n---@field override? table\n---Sync currently enabled FFlags with Roblox's published FFlags.\n---This currently only syncs FFlags which begin with 'Luau'\n---\n---```lua\n---default = true\n---```\n---@field sync? boolean\n\n---@class _.lspconfig.settings.luau_lsp.LuauLsp.Format\n---Whether to automatically convert single/double quotes to backticks when typing `{` inside strings\n---@field convertQuotes? boolean\n\n---@class _.lspconfig.settings.luau_lsp.LuauLsp.Hover\n---Enable hover\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n---Show string length when hovering over a string literal\n---\n---```lua\n---default = true\n---```\n---@field includeStringLength? boolean\n---Show function definitions on multiple lines\n---@field multilineFunctionDefinitions? boolean\n---Show table kinds\n---@field showTableKinds? boolean\n---Use strict DataModel types in hover display. When on, this is equivalent to autocompletion types. When off, this is equivalent to diagnostic types\n---\n---```lua\n---default = true\n---```\n---@field strictDatamodelTypes? boolean\n\n---@class _.lspconfig.settings.luau_lsp.LuauLsp.Index\n---Whether all files in a workspace should be indexed into memory. If disabled, only limited support is available for features such as 'Find All References' and 'Rename'\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n---The maximum amount of files that can be indexed. If more files are indexed, more memory is needed\n---\n---```lua\n---default = 10000\n---```\n---@field maxFiles? number\n\n---@class _.lspconfig.settings.luau_lsp.LuauLsp.InlayHints\n---Show inlay hints for function return types\n---@field functionReturnTypes? boolean\n---Whether type hints should be hidden if they resolve to an error type\n---@field hideHintsForErrorTypes? boolean\n---Whether type hints should be hidden if the resolved variable name matches the parameter name\n---\n---```lua\n---default = true\n---```\n---@field hideHintsForMatchingParameterNames? boolean\n---Whether type annotation inlay hints can be made insertable by clicking\n---\n---```lua\n---default = true\n---```\n---@field makeInsertable? boolean\n---Show inlay hints for function parameter names\n---\n---```lua\n---default = \"none\"\n---```\n---@field parameterNames? \"none\" | \"literals\" | \"all\"\n---Show inlay hints for parameter types\n---@field parameterTypes? boolean\n---The maximum length a type hint should be before being truncated\n---\n---```lua\n---default = 50\n---```\n---@field typeHintMaxLength? number\n---Show inlay hints for variable types\n---@field variableTypes? boolean\n\n---@class _.lspconfig.settings.luau_lsp.LuauLsp.Platform\n---Platform-specific support features\n---\n---```lua\n---default = \"roblox\"\n---```\n---@field type? \"standard\" | \"roblox\"\n\n---@class _.lspconfig.settings.luau_lsp.LuauLsp.Plugin\n---Use Roblox Studio Plugin to provide DataModel information\n---@field enabled? boolean\n---The maximum request body size accepted from the plugin, in a string representation parse-able by the [bytes](https://www.npmjs.com/package/bytes) library\n---\n---```lua\n---default = \"3mb\"\n---```\n---@field maximumRequestBodySize? string\n---Port number to connect to the Studio Plugin\n---\n---```lua\n---default = 3667\n---```\n---@field port? number\n\n---@class _.lspconfig.settings.luau_lsp.LuauLsp.Require\n---A mapping of custom require string prefixes to directory paths. The aliases should include trailing slashes\n---\n---```lua\n---default = {}\n---```\n---@field directoryAliases? table\n---A mapping of custom require string aliases to file paths\n---\n---```lua\n---default = {}\n---```\n---@field fileAliases? table\n---Use the old require-by-string semantics for init.luau resolution\n---@field useOriginalRequireByStringSemantics? boolean\n\n---@class _.lspconfig.settings.luau_lsp.LuauLsp.Server.CrashReporting\n---Upload crash reports to Sentry\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.luau_lsp.LuauLsp.Server\n---Path to a `.luaurc` file which acts as the default baseline Luau configuration\n---@field baseLuaurc? string\n---Type of communication channel to use for communicating with the server. Only useful for debug purposes\n---\n---```lua\n---default = \"stdio\"\n---```\n---@field communicationChannel? \"stdio\" | \"pipe\"\n---@field crashReporting? _.lspconfig.settings.luau_lsp.LuauLsp.Server.CrashReporting\n---Make the server spin indefinitely when starting up to allow time to attach a debugger. Only useful for debug purposes\n---@field delayStartup? boolean\n---Path to the Luau LSP server binary. If not provided, uses the binary included in the extension.\n---\n---```lua\n---default = \"\"\n---```\n---@field path? string\n\n---@class _.lspconfig.settings.luau_lsp.LuauLsp.SignatureHelp\n---Enable signature help\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.luau_lsp.LuauLsp.Sourcemap\n---Automatically run the `rojo sourcemap` command to regenerate sourcemaps on changes\n---\n---```lua\n---default = true\n---```\n---@field autogenerate? boolean\n---Whether Rojo sourcemap parsing is enabled\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n---A command to run to generate the sourcemap. If not specified, defaults to `rojo`\n---@field generatorCommand? string\n---Include non-script instances in the generated sourcemap\n---\n---```lua\n---default = true\n---```\n---@field includeNonScripts? boolean\n---Path to the Rojo executable. If not provided, attempts to run `rojo` in the workspace directory, so it must be available on the PATH\n---@field rojoPath? string\n---The name of the Rojo project file to generate a sourcemap for.\n---Only applies if `#luau-lsp.sourcemap.autogenerate#` is enabled\n---\n---```lua\n---default = \"default.project.json\"\n---```\n---@field rojoProjectFile? string\n---The name of the sourcemap file\n---\n---```lua\n---default = \"sourcemap.json\"\n---```\n---@field sourcemapFile? string\n---Whether the VSCode filesystem watchers are used to regenerate the sourcemap. If disabled, delegates to the generator process. If using `rojo`, this command stops using `--watch`\n---@field useVSCodeWatcher? boolean\n\n---@class _.lspconfig.settings.luau_lsp.LuauLsp.Types\n---A mapping of package names to paths of definition files to load in to the type checker. Note that definition file syntax is currently unstable and may change at any time\n---\n---```lua\n---default = {}\n---```\n---@field definitionFiles? table\n---A list of globals to remove from the global scope. Accepts full libraries or particular functions (e.g., `table` or `table.clone`)\n---\n---```lua\n---default = {}\n---```\n---@field disabledGlobals? string[]\n---A list of paths to documentation files which provide documentation support to the definition files provided\n---\n---```lua\n---default = {}\n---```\n---@field documentationFiles? string[]\n---Load in and automatically update Roblox type definitions for the type checker\n---\n---```lua\n---default = true\n---```\n---@field roblox? boolean\n---Security Level to use in the Roblox API definitions\n---\n---```lua\n---default = \"PluginSecurity\"\n---```\n---@field robloxSecurityLevel? \"None\" | \"LocalUserSecurity\" | \"PluginSecurity\" | \"RobloxScriptSecurity\"\n\n---@class _.lspconfig.settings.luau_lsp.LuauLsp\n---Automatically insert an `end` when opening a block\n---@field autocompleteEnd? boolean\n---@field bytecode? _.lspconfig.settings.luau_lsp.LuauLsp.Bytecode\n---@field completion? _.lspconfig.settings.luau_lsp.LuauLsp.Completion\n---@field diagnostics? _.lspconfig.settings.luau_lsp.LuauLsp.Diagnostics\n---@field fflags? _.lspconfig.settings.luau_lsp.LuauLsp.Fflags\n---@field format? _.lspconfig.settings.luau_lsp.LuauLsp.Format\n---@field hover? _.lspconfig.settings.luau_lsp.LuauLsp.Hover\n---Diagnostics will not be reported for any file matching these globs unless the file is currently open\n---\n---```lua\n---default = { \"**/_Index/**\" }\n---```\n---@field ignoreGlobs? string[]\n---@field index? _.lspconfig.settings.luau_lsp.LuauLsp.Index\n---@field inlayHints? _.lspconfig.settings.luau_lsp.LuauLsp.InlayHints\n---@field platform? _.lspconfig.settings.luau_lsp.LuauLsp.Platform\n---@field plugin? _.lspconfig.settings.luau_lsp.LuauLsp.Plugin\n---@field require? _.lspconfig.settings.luau_lsp.LuauLsp.Require\n---@field server? _.lspconfig.settings.luau_lsp.LuauLsp.Server\n---@field signatureHelp? _.lspconfig.settings.luau_lsp.LuauLsp.SignatureHelp\n---@field sourcemap? _.lspconfig.settings.luau_lsp.LuauLsp.Sourcemap\n---@field types? _.lspconfig.settings.luau_lsp.LuauLsp.Types\n\n---@class lspconfig.settings.luau_lsp\n---@field luau? _.lspconfig.settings.luau_lsp.Luau\n---@field [\"luau-lsp\"]? _.lspconfig.settings.luau_lsp.LuauLsp\n"
  },
  {
    "path": "lua/lspconfig/types/lsp/omnisharp.lua",
    "content": "---@meta\n\n---@class _.lspconfig.settings.omnisharp.Csharp.Debug.ExpressionEvaluationOptions\n---%generateOptionsSchema.expressionEvaluationOptions.allowFastEvaluate.description%\n---\n---```lua\n---default = true\n---```\n---@field allowFastEvaluate? boolean\n---%generateOptionsSchema.expressionEvaluationOptions.allowImplicitFuncEval.description%\n---\n---```lua\n---default = true\n---```\n---@field allowImplicitFuncEval? boolean\n---%generateOptionsSchema.expressionEvaluationOptions.allowToString.markdownDescription%\n---\n---```lua\n---default = true\n---```\n---@field allowToString? boolean\n---%generateOptionsSchema.expressionEvaluationOptions.showRawValues.description%\n---@field showRawValues? boolean\n\n---@class _.lspconfig.settings.omnisharp.Csharp.Debug.Logging.DiagnosticsLog\n---%generateOptionsSchema.logging.diagnosticsLog.debugEngineAPITracing.markdownDescription%\n---\n---```lua\n---default = \"none\"\n---```\n---@field debugEngineAPITracing? \"none\" | \"error\" | \"all\"\n---%generateOptionsSchema.logging.diagnosticsLog.debugRuntimeEventTracing.markdownDescription%\n---@field debugRuntimeEventTracing? boolean\n---%generateOptionsSchema.logging.diagnosticsLog.dispatcherMessages.markdownDescription%\n---\n---```lua\n---default = \"none\"\n---```\n---@field dispatcherMessages? \"none\" | \"error\" | \"important\" | \"normal\"\n---%generateOptionsSchema.logging.diagnosticsLog.expressionEvaluationTracing.markdownDescription%\n---@field expressionEvaluationTracing? boolean\n---%generateOptionsSchema.logging.diagnosticsLog.protocolMessages.markdownDescription%\n---@field protocolMessages? boolean\n---%generateOptionsSchema.logging.diagnosticsLog.startDebuggingTracing.markdownDescription%\n---@field startDebuggingTracing? boolean\n\n---@class _.lspconfig.settings.omnisharp.Csharp.Debug.Logging\n---%generateOptionsSchema.logging.browserStdOut.markdownDescription%\n---\n---```lua\n---default = true\n---```\n---@field browserStdOut? boolean\n---%generateOptionsSchema.logging.consoleUsageMessage.description%\n---\n---```lua\n---default = true\n---```\n---@field consoleUsageMessage? boolean\n---@field diagnosticsLog? _.lspconfig.settings.omnisharp.Csharp.Debug.Logging.DiagnosticsLog\n---%generateOptionsSchema.logging.elapsedTiming.markdownDescription%\n---@field elapsedTiming? boolean\n---@field engineLogging? boolean\n---%generateOptionsSchema.logging.exceptions.markdownDescription%\n---\n---```lua\n---default = true\n---```\n---@field exceptions? boolean\n---%generateOptionsSchema.logging.moduleLoad.markdownDescription%\n---\n---```lua\n---default = true\n---```\n---@field moduleLoad? boolean\n---%generateOptionsSchema.logging.processExit.markdownDescription%\n---\n---```lua\n---default = true\n---```\n---@field processExit? boolean\n---%generateOptionsSchema.logging.programOutput.markdownDescription%\n---\n---```lua\n---default = true\n---```\n---@field programOutput? boolean\n---%generateOptionsSchema.logging.threadExit.markdownDescription%\n---@field threadExit? boolean\n\n---@class _.lspconfig.settings.omnisharp.Csharp.Debug.SymbolOptions.ModuleFilter\n---%generateOptionsSchema.symbolOptions.moduleFilter.excludedModules.description%\n---\n---```lua\n---default = {}\n---```\n---@field excludedModules? string[]\n---%generateOptionsSchema.symbolOptions.moduleFilter.includeSymbolsNextToModules.description%\n---\n---```lua\n---default = true\n---```\n---@field includeSymbolsNextToModules? boolean\n---%generateOptionsSchema.symbolOptions.moduleFilter.includeSymbolsOnDemand.description%\n---\n---```lua\n---default = true\n---```\n---@field includeSymbolsOnDemand? boolean\n---%generateOptionsSchema.symbolOptions.moduleFilter.includedModules.description%\n---\n---```lua\n---default = {}\n---```\n---@field includedModules? string[]\n---%generateOptionsSchema.symbolOptions.moduleFilter.mode.description%\n---\n---```lua\n---default = \"loadAllButExcluded\"\n---```\n---@field mode? \"loadAllButExcluded\" | \"loadOnlyIncluded\"\n\n---@class _.lspconfig.settings.omnisharp.Csharp.Debug.SymbolOptions\n---%generateOptionsSchema.symbolOptions.cachePath.description%\n---\n---```lua\n---default = \"\"\n---```\n---@field cachePath? string\n---@field moduleFilter? _.lspconfig.settings.omnisharp.Csharp.Debug.SymbolOptions.ModuleFilter\n---%generateOptionsSchema.symbolOptions.searchMicrosoftSymbolServer.description%\n---@field searchMicrosoftSymbolServer? boolean\n---%generateOptionsSchema.symbolOptions.searchNuGetOrgSymbolServer.description%\n---@field searchNuGetOrgSymbolServer? boolean\n---%generateOptionsSchema.symbolOptions.searchPaths.description%\n---\n---```lua\n---default = {}\n---```\n---@field searchPaths? string[]\n\n---@class _.lspconfig.settings.omnisharp.Csharp.Debug\n---%generateOptionsSchema.console.settingsDescription%\n---\n---```lua\n---default = \"internalConsole\"\n---```\n---@field console? \"internalConsole\" | \"integratedTerminal\" | \"externalTerminal\"\n---%generateOptionsSchema.enableStepFiltering.markdownDescription%\n---\n---```lua\n---default = true\n---```\n---@field enableStepFiltering? boolean\n---@field expressionEvaluationOptions? _.lspconfig.settings.omnisharp.Csharp.Debug.ExpressionEvaluationOptions\n---%generateOptionsSchema.justMyCode.markdownDescription%\n---\n---```lua\n---default = true\n---```\n---@field justMyCode? boolean\n---@field logging? _.lspconfig.settings.omnisharp.Csharp.Debug.Logging\n---%generateOptionsSchema.requireExactSource.markdownDescription%\n---\n---```lua\n---default = true\n---```\n---@field requireExactSource? boolean\n---%generateOptionsSchema.sourceFileMap.markdownDescription%\n---\n---```lua\n---default = {}\n---```\n---@field sourceFileMap? table\n---%generateOptionsSchema.stopAtEntry.markdownDescription%\n---@field stopAtEntry? boolean\n---%generateOptionsSchema.suppressJITOptimizations.markdownDescription%\n---@field suppressJITOptimizations? boolean\n---@field symbolOptions? _.lspconfig.settings.omnisharp.Csharp.Debug.SymbolOptions\n\n---@class _.lspconfig.settings.omnisharp.Csharp.Format\n---%configuration.omnisharp.csharp.format.enable%\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n\n---@class _.lspconfig.settings.omnisharp.Csharp.InlayHints\n---%configuration.csharp.inlayHints.enableInlayHintsForImplicitObjectCreation%\n---@field enableInlayHintsForImplicitObjectCreation? boolean\n---%configuration.csharp.inlayHints.enableInlayHintsForImplicitVariableTypes%\n---@field enableInlayHintsForImplicitVariableTypes? boolean\n---%configuration.csharp.inlayHints.enableInlayHintsForLambdaParameterTypes%\n---@field enableInlayHintsForLambdaParameterTypes? boolean\n---%configuration.csharp.inlayHints.enableInlayHintsForTypes%\n---@field enableInlayHintsForTypes? boolean\n\n---@class _.lspconfig.settings.omnisharp.Csharp.ReferencesCodeLens\n---%configuration.omnisharp.csharp.referencesCodeLens.filteredSymbols%\n---\n---```lua\n---default = {}\n---```\n---@field filteredSymbols? string[]\n\n---@class _.lspconfig.settings.omnisharp.Csharp.SemanticHighlighting\n---%configuration.omnisharp.csharp.semanticHighlighting.enabled%\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.omnisharp.Csharp\n---@field debug? _.lspconfig.settings.omnisharp.Csharp.Debug\n---@field format? _.lspconfig.settings.omnisharp.Csharp.Format\n---@field inlayHints? _.lspconfig.settings.omnisharp.Csharp.InlayHints\n---%configuration.omnisharp.csharp.maxProjectFileCountForDiagnosticAnalysis%\n---\n---```lua\n---default = 1000\n---```\n---@field maxProjectFileCountForDiagnosticAnalysis? number\n---@field referencesCodeLens? _.lspconfig.settings.omnisharp.Csharp.ReferencesCodeLens\n---@field semanticHighlighting? _.lspconfig.settings.omnisharp.Csharp.SemanticHighlighting\n---%configuration.omnisharp.csharp.showOmnisharpLogOnError%\n---\n---```lua\n---default = true\n---```\n---@field showOmnisharpLogOnError? boolean\n---%configuration.omnisharp.csharp.suppressBuildAssetsNotification%\n---@field suppressBuildAssetsNotification? boolean\n---%configuration.omnisharp.csharp.suppressDotnetInstallWarning%\n---@field suppressDotnetInstallWarning? boolean\n---%configuration.omnisharp.csharp.suppressDotnetRestoreNotification%\n---@field suppressDotnetRestoreNotification? boolean\n---%configuration.omnisharp.csharp.suppressHiddenDiagnostics%\n---\n---```lua\n---default = true\n---```\n---@field suppressHiddenDiagnostics? boolean\n---%configuration.omnisharp.csharp.suppressProjectJsonWarning%\n---@field suppressProjectJsonWarning? boolean\n\n---@class _.lspconfig.settings.omnisharp.Dotnet.AutoInsert\n---%configuration.dotnet.autoInsert.enableAutoInsert%\n---\n---```lua\n---default = true\n---```\n---@field enableAutoInsert? boolean\n\n---@class _.lspconfig.settings.omnisharp.Dotnet.BackgroundAnalysis\n---%configuration.dotnet.backgroundAnalysis.analyzerDiagnosticsScope%\n---\n---```lua\n---default = \"openFiles\"\n---```\n---@field analyzerDiagnosticsScope? \"openFiles\" | \"fullSolution\" | \"none\"\n---%configuration.dotnet.backgroundAnalysis.compilerDiagnosticsScope%\n---\n---```lua\n---default = \"openFiles\"\n---```\n---@field compilerDiagnosticsScope? \"openFiles\" | \"fullSolution\" | \"none\"\n\n---@class _.lspconfig.settings.omnisharp.Dotnet.CodeLens\n---%configuration.dotnet.codeLens.enableReferencesCodeLens%\n---\n---```lua\n---default = true\n---```\n---@field enableReferencesCodeLens? boolean\n---%configuration.dotnet.codeLens.enableTestsCodeLens%\n---\n---```lua\n---default = true\n---```\n---@field enableTestsCodeLens? boolean\n\n---@class _.lspconfig.settings.omnisharp.Dotnet.Completion\n---%configuration.dotnet.completion.provideRegexCompletions%\n---\n---```lua\n---default = \"true\"\n---```\n---@field provideRegexCompletions? boolean\n---%configuration.dotnet.completion.showCompletionItemsFromUnimportedNamespaces%\n---\n---```lua\n---default = true\n---```\n---@field showCompletionItemsFromUnimportedNamespaces? boolean\n---%configuration.dotnet.completion.showNameCompletionSuggestions%\n---\n---```lua\n---default = \"true\"\n---```\n---@field showNameCompletionSuggestions? boolean\n---%configuration.dotnet.completion.triggerCompletionInArgumentLists%\n---\n---```lua\n---default = \"true\"\n---```\n---@field triggerCompletionInArgumentLists? boolean\n\n---@class _.lspconfig.settings.omnisharp.Dotnet.Diagnostics\n---%configuration.dotnet.diagnostics.reportInformationAsHint%\n---\n---```lua\n---default = true\n---```\n---@field reportInformationAsHint? boolean\n\n---@class _.lspconfig.settings.omnisharp.Dotnet.Formatting\n---%configuration.dotnet.formatting.organizeImportsOnFormat%\n---@field organizeImportsOnFormat? boolean\n\n---@class _.lspconfig.settings.omnisharp.Dotnet.Highlighting\n---%configuration.dotnet.highlighting.highlightRelatedJsonComponents%\n---\n---```lua\n---default = \"true\"\n---```\n---@field highlightRelatedJsonComponents? boolean\n---%configuration.dotnet.highlighting.highlightRelatedRegexComponents%\n---\n---```lua\n---default = \"true\"\n---```\n---@field highlightRelatedRegexComponents? boolean\n\n---@class _.lspconfig.settings.omnisharp.Dotnet.InlayHints\n---%configuration.csharp.inlayHints.enableInlayHintsForIndexerParameters%\n---@field enableInlayHintsForIndexerParameters? boolean\n---%configuration.dotnet.inlayHints.enableInlayHintsForLiteralParameters%\n---@field enableInlayHintsForLiteralParameters? boolean\n---%configuration.dotnet.inlayHints.enableInlayHintsForObjectCreationParameters%\n---@field enableInlayHintsForObjectCreationParameters? boolean\n---%configuration.dotnet.inlayHints.enableInlayHintsForOtherParameters%\n---@field enableInlayHintsForOtherParameters? boolean\n---%configuration.dotnet.inlayHints.enableInlayHintsForParameters%\n---@field enableInlayHintsForParameters? boolean\n---%configuration.dotnet.inlayHints.suppressInlayHintsForParametersThatDifferOnlyBySuffix%\n---@field suppressInlayHintsForParametersThatDifferOnlyBySuffix? boolean\n---%configuration.dotnet.inlayHints.suppressInlayHintsForParametersThatMatchArgumentName%\n---@field suppressInlayHintsForParametersThatMatchArgumentName? boolean\n---%configuration.dotnet.inlayHints.suppressInlayHintsForParametersThatMatchMethodIntent%\n---@field suppressInlayHintsForParametersThatMatchMethodIntent? boolean\n\n---@class _.lspconfig.settings.omnisharp.Dotnet.Navigation\n---%configuration.dotnet.navigation.navigateToDecompiledSources%\n---\n---```lua\n---default = \"true\"\n---```\n---@field navigateToDecompiledSources? boolean\n---%configuration.dotnet.navigation.navigateToSourceLinkAndEmbeddedSources%\n---\n---```lua\n---default = \"true\"\n---```\n---@field navigateToSourceLinkAndEmbeddedSources? boolean\n\n---@class _.lspconfig.settings.omnisharp.Dotnet.Projects\n---%configuration.dotnet.projects.binaryLogPath%\n---@field binaryLogPath? string\n---%configuration.dotnet.projects.enableAutomaticRestore%\n---\n---```lua\n---default = true\n---```\n---@field enableAutomaticRestore? boolean\n---%configuration.dotnet.projects.enableFileBasedPrograms%\n---\n---```lua\n---default = true\n---```\n---@field enableFileBasedPrograms? boolean\n---%configuration.dotnet.projects.enableFileBasedProgramsWhenAmbiguous%\n---\n---```lua\n---default = true\n---```\n---@field enableFileBasedProgramsWhenAmbiguous? boolean\n\n---@class _.lspconfig.settings.omnisharp.Dotnet.QuickInfo\n---%configuration.dotnet.quickInfo.showRemarksInQuickInfo%\n---\n---```lua\n---default = \"true\"\n---```\n---@field showRemarksInQuickInfo? boolean\n\n---%configuration.dotnet.server.componentPaths%\n---\n---```lua\n---default = {}\n---```\n---@class _.lspconfig.settings.omnisharp.Dotnet.Server.ComponentPaths\n---%configuration.dotnet.server.componentPaths.razorExtension%\n---@field razorExtension? string\n---%configuration.dotnet.server.componentPaths.roslynCopilot%\n---@field roslynCopilot? string\n---%configuration.dotnet.server.componentPaths.roslynDevKit%\n---@field roslynDevKit? string\n---%configuration.dotnet.server.componentPaths.xamlTools%\n---@field xamlTools? string\n\n---@class _.lspconfig.settings.omnisharp.Dotnet.Server\n---%configuration.dotnet.server.componentPaths%\n---\n---```lua\n---default = {}\n---```\n---@field componentPaths? _.lspconfig.settings.omnisharp.Dotnet.Server.ComponentPaths\n---%configuration.dotnet.server.crashDumpPath%\n---@field crashDumpPath? string\n---%configuration.dotnet.server.environmentVariables%\n---\n---```lua\n---default = {}\n---```\n---@field environmentVariables? table\n---%configuration.dotnet.server.extensionPaths%\n---@field extensionPaths? string[]\n---%configuration.dotnet.server.path%\n---@field path? string\n---%configuration.dotnet.server.sourceGeneratorExecution%\n---\n---```lua\n---default = \"Balanced\"\n---```\n---@field sourceGeneratorExecution? \"Balanced\" | \"Automatic\"\n---%configuration.dotnet.server.startTimeout%\n---\n---```lua\n---default = 120000\n---```\n---@field startTimeout? number\n---%configuration.dotnet.server.suppressLspErrorToasts%\n---@field suppressLspErrorToasts? boolean\n---%configuration.dotnet.server.suppressMiscellaneousFilesToasts%\n---@field suppressMiscellaneousFilesToasts? boolean\n---%configuration.omnisharp.dotnet.server.useOmnisharp%\n---@field useOmnisharp? boolean\n---%configuration.dotnet.server.useServerGC%\n---\n---```lua\n---default = true\n---```\n---@field useServerGC? boolean\n---%configuration.dotnet.server.waitForDebugger%\n---@field waitForDebugger? boolean\n\n---@class _.lspconfig.settings.omnisharp.Dotnet.SymbolSearch\n---%configuration.dotnet.symbolSearch.searchReferenceAssemblies%\n---\n---```lua\n---default = true\n---```\n---@field searchReferenceAssemblies? boolean\n\n---@class _.lspconfig.settings.omnisharp.Dotnet.TypeMembers\n---%configuration.dotnet.typeMembers.memberInsertionLocation%\n---\n---```lua\n---default = \"withOtherMembersOfTheSameKind\"\n---```\n---@field memberInsertionLocation? \"withOtherMembersOfTheSameKind\" | \"atTheEnd\"\n---%configuration.dotnet.typeMembers.propertyGenerationBehavior%\n---\n---```lua\n---default = \"preferThrowingProperties\"\n---```\n---@field propertyGenerationBehavior? \"preferThrowingProperties\" | \"preferAutoProperties\"\n\n---%generateOptionsSchema.expressionEvaluationOptions.description%\n---\n---```lua\n---default = {}\n---```\n---@class _.lspconfig.settings.omnisharp.Dotnet.UnitTestDebuggingOptions.ExpressionEvaluationOptions\n---%generateOptionsSchema.expressionEvaluationOptions.allowFastEvaluate.description%\n---\n---```lua\n---default = true\n---```\n---@field allowFastEvaluate? boolean\n---%generateOptionsSchema.expressionEvaluationOptions.allowImplicitFuncEval.description%\n---\n---```lua\n---default = true\n---```\n---@field allowImplicitFuncEval? boolean\n---%generateOptionsSchema.expressionEvaluationOptions.allowToString.markdownDescription%\n---\n---```lua\n---default = true\n---```\n---@field allowToString? boolean\n---%generateOptionsSchema.expressionEvaluationOptions.showRawValues.description%\n---@field showRawValues? boolean\n\n---%generateOptionsSchema.logging.description%\n---\n---```lua\n---default = {}\n---```\n---@class _.lspconfig.settings.omnisharp.Dotnet.UnitTestDebuggingOptions.Logging\n---%generateOptionsSchema.logging.exceptions.markdownDescription%\n---\n---```lua\n---default = true\n---```\n---@field exceptions? boolean\n---%generateOptionsSchema.logging.moduleLoad.markdownDescription%\n---\n---```lua\n---default = true\n---```\n---@field moduleLoad? boolean\n---%generateOptionsSchema.logging.processExit.markdownDescription%\n---\n---```lua\n---default = true\n---```\n---@field processExit? boolean\n---%generateOptionsSchema.logging.programOutput.markdownDescription%\n---\n---```lua\n---default = true\n---```\n---@field programOutput? boolean\n---%generateOptionsSchema.logging.threadExit.markdownDescription%\n---@field threadExit? boolean\n\n---%generateOptionsSchema.symbolOptions.moduleFilter.description%\n---\n---```lua\n---default = {\n---  excludedModules = {},\n---  mode = \"loadAllButExcluded\"\n---}\n---```\n---@class _.lspconfig.settings.omnisharp.Dotnet.UnitTestDebuggingOptions.SymbolOptions.ModuleFilter\n---%generateOptionsSchema.symbolOptions.moduleFilter.excludedModules.description%\n---\n---```lua\n---default = {}\n---```\n---@field excludedModules? string[]\n---%generateOptionsSchema.symbolOptions.moduleFilter.includeSymbolsNextToModules.description%\n---\n---```lua\n---default = true\n---```\n---@field includeSymbolsNextToModules? boolean\n---%generateOptionsSchema.symbolOptions.moduleFilter.includeSymbolsOnDemand.description%\n---\n---```lua\n---default = true\n---```\n---@field includeSymbolsOnDemand? boolean\n---%generateOptionsSchema.symbolOptions.moduleFilter.includedModules.description%\n---\n---```lua\n---default = {}\n---```\n---@field includedModules? string[]\n---%generateOptionsSchema.symbolOptions.moduleFilter.mode.description%\n---\n---```lua\n---default = \"loadAllButExcluded\"\n---```\n---@field mode \"loadAllButExcluded\" | \"loadOnlyIncluded\"\n\n---%generateOptionsSchema.symbolOptions.description%\n---\n---```lua\n---default = {\n---  searchMicrosoftSymbolServer = false,\n---  searchNuGetOrgSymbolServer = false,\n---  searchPaths = {}\n---}\n---```\n---@class _.lspconfig.settings.omnisharp.Dotnet.UnitTestDebuggingOptions.SymbolOptions\n---%generateOptionsSchema.symbolOptions.cachePath.description%\n---\n---```lua\n---default = \"\"\n---```\n---@field cachePath? string\n---%generateOptionsSchema.symbolOptions.moduleFilter.description%\n---\n---```lua\n---default = {\n---  excludedModules = {},\n---  mode = \"loadAllButExcluded\"\n---}\n---```\n---@field moduleFilter? _.lspconfig.settings.omnisharp.Dotnet.UnitTestDebuggingOptions.SymbolOptions.ModuleFilter\n---%generateOptionsSchema.symbolOptions.searchMicrosoftSymbolServer.description%\n---@field searchMicrosoftSymbolServer? boolean\n---%generateOptionsSchema.symbolOptions.searchNuGetOrgSymbolServer.description%\n---@field searchNuGetOrgSymbolServer? boolean\n---%generateOptionsSchema.symbolOptions.searchPaths.description%\n---\n---```lua\n---default = {}\n---```\n---@field searchPaths? string[]\n\n---%configuration.dotnet.unitTestDebuggingOptions%\n---\n---```lua\n---default = {}\n---```\n---@class _.lspconfig.settings.omnisharp.Dotnet.UnitTestDebuggingOptions\n---%generateOptionsSchema.debugServer.description%\n---\n---```lua\n---default = 4711\n---```\n---@field debugServer? number\n---%generateOptionsSchema.enableStepFiltering.markdownDescription%\n---\n---```lua\n---default = true\n---```\n---@field enableStepFiltering? boolean\n---%generateOptionsSchema.expressionEvaluationOptions.description%\n---\n---```lua\n---default = {}\n---```\n---@field expressionEvaluationOptions? _.lspconfig.settings.omnisharp.Dotnet.UnitTestDebuggingOptions.ExpressionEvaluationOptions\n---%generateOptionsSchema.justMyCode.markdownDescription%\n---\n---```lua\n---default = true\n---```\n---@field justMyCode? boolean\n---%generateOptionsSchema.logging.description%\n---\n---```lua\n---default = {}\n---```\n---@field logging? _.lspconfig.settings.omnisharp.Dotnet.UnitTestDebuggingOptions.Logging\n---%generateOptionsSchema.requireExactSource.markdownDescription%\n---\n---```lua\n---default = true\n---```\n---@field requireExactSource? boolean\n---%generateOptionsSchema.sourceFileMap.markdownDescription%\n---@field sourceFileMap? table\n---%generateOptionsSchema.sourceLinkOptions.markdownDescription%\n---\n---```lua\n---default = {\n---  [\"*\"] = {\n---    enabled = true\n---  }\n---}\n---```\n---@field sourceLinkOptions? table\n---%generateOptionsSchema.suppressJITOptimizations.markdownDescription%\n---@field suppressJITOptimizations? boolean\n---%generateOptionsSchema.symbolOptions.description%\n---\n---```lua\n---default = {\n---  searchMicrosoftSymbolServer = false,\n---  searchNuGetOrgSymbolServer = false,\n---  searchPaths = {}\n---}\n---```\n---@field symbolOptions? _.lspconfig.settings.omnisharp.Dotnet.UnitTestDebuggingOptions.SymbolOptions\n---%generateOptionsSchema.targetArchitecture.markdownDescription%\n---@field targetArchitecture? \"x86_64\" | \"arm64\"\n---%generateOptionsSchema.type.markdownDescription%\n---\n---```lua\n---default = \"coreclr\"\n---```\n---@field type? \"coreclr\" | \"clr\"\n\n---@class _.lspconfig.settings.omnisharp.Dotnet.UnitTests\n---%configuration.dotnet.unitTests.runSettingsPath%\n---@field runSettingsPath? string\n\n---@class _.lspconfig.settings.omnisharp.Dotnet\n---@field autoInsert? _.lspconfig.settings.omnisharp.Dotnet.AutoInsert\n---@field backgroundAnalysis? _.lspconfig.settings.omnisharp.Dotnet.BackgroundAnalysis\n---@field codeLens? _.lspconfig.settings.omnisharp.Dotnet.CodeLens\n---@field completion? _.lspconfig.settings.omnisharp.Dotnet.Completion\n---%configuration.dotnet.defaultSolution.description%\n---@field defaultSolution? string\n---@field diagnostics? _.lspconfig.settings.omnisharp.Dotnet.Diagnostics\n---%configuration.dotnet.enableXamlTools%\n---\n---```lua\n---default = true\n---```\n---@field enableXamlTools? boolean\n---@field formatting? _.lspconfig.settings.omnisharp.Dotnet.Formatting\n---@field highlighting? _.lspconfig.settings.omnisharp.Dotnet.Highlighting\n---@field inlayHints? _.lspconfig.settings.omnisharp.Dotnet.InlayHints\n---@field navigation? _.lspconfig.settings.omnisharp.Dotnet.Navigation\n---%configuration.dotnet.preferCSharpExtension%\n---@field preferCSharpExtension? boolean\n---@field projects? _.lspconfig.settings.omnisharp.Dotnet.Projects\n---@field quickInfo? _.lspconfig.settings.omnisharp.Dotnet.QuickInfo\n---@field server? _.lspconfig.settings.omnisharp.Dotnet.Server\n---@field symbolSearch? _.lspconfig.settings.omnisharp.Dotnet.SymbolSearch\n---@field typeMembers? _.lspconfig.settings.omnisharp.Dotnet.TypeMembers\n---%configuration.dotnet.unitTestDebuggingOptions%\n---\n---```lua\n---default = {}\n---```\n---@field unitTestDebuggingOptions? _.lspconfig.settings.omnisharp.Dotnet.UnitTestDebuggingOptions\n---@field unitTests? _.lspconfig.settings.omnisharp.Dotnet.UnitTests\n\n---@class _.lspconfig.settings.omnisharp.Omnisharp\n---%configuration.omnisharp.autoStart%\n---\n---```lua\n---default = true\n---```\n---@field autoStart? boolean\n---%configuration.omnisharp.disableMSBuildDiagnosticWarning%\n---@field disableMSBuildDiagnosticWarning? boolean\n---%configuration.omnisharp.dotNetCliPaths%\n---@field dotNetCliPaths? string[]\n---%configuration.omnisharp.dotnetPath%\n---@field dotnetPath? string\n---%configuration.omnisharp.enableAsyncCompletion%\n---@field enableAsyncCompletion? boolean\n---%configuration.omnisharp.enableDecompilationSupport%\n---@field enableDecompilationSupport? boolean\n---%configuration.omnisharp.enableEditorConfigSupport%\n---\n---```lua\n---default = true\n---```\n---@field enableEditorConfigSupport? boolean\n---%configuration.omnisharp.enableLspDriver%\n---@field enableLspDriver? boolean\n---%configuration.omnisharp.enableMsBuildLoadProjectsOnDemand%\n---@field enableMsBuildLoadProjectsOnDemand? boolean\n---%configuration.omnisharp.loggingLevel%\n---\n---```lua\n---default = \"information\"\n---```\n---@field loggingLevel? \"trace\" | \"debug\" | \"information\" | \"warning\" | \"error\" | \"critical\"\n---%configuration.omnisharp.maxFindSymbolsItems%\n---\n---```lua\n---default = 1000\n---```\n---@field maxFindSymbolsItems? number\n---%configuration.omnisharp.maxProjectResults%\n---\n---```lua\n---default = 250\n---```\n---@field maxProjectResults? number\n---%configuration.omnisharp.minFindSymbolsFilterLength%\n---\n---```lua\n---default = 0\n---```\n---@field minFindSymbolsFilterLength? number\n---%configuration.omnisharp.monoPath%\n---@field monoPath? string\n---%configuration.omnisharp.projectFilesExcludePattern%\n---\n---```lua\n---default = \"**/node_modules/**,**/.git/**,**/bower_components/**\"\n---```\n---@field projectFilesExcludePattern? string\n---%configuration.omnisharp.projectLoadTimeout%\n---\n---```lua\n---default = 60\n---```\n---@field projectLoadTimeout? number\n---%configuration.omnisharp.sdkIncludePrereleases%\n---\n---```lua\n---default = true\n---```\n---@field sdkIncludePrereleases? boolean\n---%configuration.omnisharp.sdkPath%\n---@field sdkPath? string\n---%configuration.omnisharp.sdkVersion%\n---@field sdkVersion? string\n---%configuration.omnisharp.useEditorFormattingSettings%\n---\n---```lua\n---default = true\n---```\n---@field useEditorFormattingSettings? boolean\n---%configuration.omnisharp.useModernNet.description%\n---\n---```lua\n---default = true\n---```\n---@field useModernNet? boolean\n\n---@class _.lspconfig.settings.omnisharp.Razor.Completion\n---%configuration.razor.razor.completion.commitElementsWithSpace%\n---@field commitElementsWithSpace? boolean\n\n---@class _.lspconfig.settings.omnisharp.Razor.Format\n---%configuration.razor.razor.format.attributeIndentStyle%\n---\n---```lua\n---default = \"alignWithFirst\"\n---```\n---@field attributeIndentStyle? \"alignWithFirst\" | \"indentByOne\" | \"indentByTwo\"\n---%configuration.razor.razor.format.codeBlockBraceOnNextLine%\n---@field codeBlockBraceOnNextLine? boolean\n---%configuration.omnisharp.razor.format.enable%\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n\n---@class _.lspconfig.settings.omnisharp.Razor.Plugin\n---%configuration.omnisharp.razor.plugin.path%\n---@field path? string\n\n---@class _.lspconfig.settings.omnisharp.Razor\n---@field completion? _.lspconfig.settings.omnisharp.Razor.Completion\n---%configuration.omnisharp.razor.devmode%\n---@field devmode? boolean\n---@field format? _.lspconfig.settings.omnisharp.Razor.Format\n---@field plugin? _.lspconfig.settings.omnisharp.Razor.Plugin\n\n---@class lspconfig.settings.omnisharp\n---@field csharp? _.lspconfig.settings.omnisharp.Csharp\n---@field dotnet? _.lspconfig.settings.omnisharp.Dotnet\n---@field omnisharp? _.lspconfig.settings.omnisharp.Omnisharp\n---@field razor? _.lspconfig.settings.omnisharp.Razor\n"
  },
  {
    "path": "lua/lspconfig/types/lsp/perlls.lua",
    "content": "---@meta\n\n---@class _.lspconfig.settings.perlls.Perl\n---directory for caching of parsed symbols, if the directory does not exists, it will be created, defaults to ${workspace}/.vscode/perl-lang. This should be one unqiue directory per project and an absolute path.\n---@field cacheDir? string\n---arguments for containerCmd. Varies depending on containerCmd.\n---@field containerArgs? any[]\n---If set Perl::LanguageServer can run inside a container. Options are: 'docker', 'docker-compose', 'podman', 'kubectl'\n---@field containerCmd? string\n---To start a new container, set to 'run', to execute inside an existing container set to 'exec'. Note: kubectl only supports 'exec'\n---\n---```lua\n---default = \"exec\"\n---```\n---@field containerMode? string\n---Image to start or container to exec inside or pod to use\n---@field containerName? string\n---port to use for connection between vscode and debug adapter inside Perl::LanguageServer. On a multi user system every user must use a different port.\n---\n---```lua\n---default = 13603\n---```\n---@field debugAdapterPort? integer\n---if debugAdapterPort is in use try ports from debugAdapterPort to debugAdapterPort + debugAdapterPortRange. Default 100.\n---\n---```lua\n---default = 100\n---```\n---@field debugAdapterPortRange? integer\n---if true, the LanguageServer will not cache the result of parsing source files on disk, so it can be used within readonly directories\n---@field disableCache? boolean\n---per default enviroment from vscode will be passed to debuggee, syntax check and perltidy. If set to true, no enviroment variables will be passed.\n---@field disablePassEnv? boolean\n---enable/disable this extension\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n---object with environment settings for command that starts the LanguageServer, e.g. can be used to set KUBECONFIG.\n---@field env? table\n---array for filtering perl file, defaults to *.pm|*.pl\n---@field fileFilter? any[]\n---directories to ignore, defaults to .vscode, .git, .svn\n---@field ignoreDirs? any[]\n---If set, log output is written to the given logfile, instead of displaying it in the vscode output pane. Log output is always appended so you are responsible for rotating the file.\n---@field logFile? string\n---Log level 0-2\n---\n---```lua\n---default = 0\n---```\n---@field logLevel? integer\n---mapping of local to remote paths\n---@field pathMap? any[]\n---defaults to perl\n---@field perlCmd? string\n---array with paths to add to perl library path. This setting is used by the syntax checker and for the debuggee and also for the LanguageServer itself. perl.perlInc should be absolute paths.\n---@field perlInc? any[]\n---if true, show also local variables in symbol view\n---@field showLocalVars? boolean\n---ip address of remote system\n---@field sshAddr? string\n---optional arguments for ssh\n---@field sshArgs? any[]\n---defaults to ssh on unix and plink on windows\n---@field sshCmd? string\n---optional, port for ssh to remote system\n---@field sshPort? string\n---user for ssh login\n---@field sshUser? string\n---path of the workspace root on remote system\n---@field sshWorkspaceRoot? string\n---Use -T for syntax check.\n---@field useTaintForSyntaxCheck? boolean\n\n---@class lspconfig.settings.perlls\n---@field perl? _.lspconfig.settings.perlls.Perl\n"
  },
  {
    "path": "lua/lspconfig/types/lsp/perlnavigator.lua",
    "content": "---@meta\n\n---@class _.lspconfig.settings.perlnavigator.Perlnavigator.Trace\n---Traces the communication between VS Code and the language server.\n---\n---```lua\n---default = \"messages\"\n---```\n---@field server? \"off\" | \"messages\" | \"verbose\"\n\n---@class _.lspconfig.settings.perlnavigator.Perlnavigator\n---Enable warnings using -Mwarnings command switch\n---\n---```lua\n---default = true\n---```\n---@field enableWarnings? boolean\n---Boolean to indicate if $project/lib should be added to the path by default\n---\n---```lua\n---default = true\n---```\n---@field includeLib? boolean\n---Array of paths added to @INC. You can use $workspaceFolder as a placeholder.\n---\n---```lua\n---default = {}\n---```\n---@field includePaths? any[]\n---Log to stdout from the navigator. Viewable in the Perl Navigator LSP log\n---\n---```lua\n---default = true\n---```\n---@field logging? boolean\n---Enable running perl -c on your code\n---\n---```lua\n---default = true\n---```\n---@field perlCompileEnabled? boolean\n---Pass environment variables to the perl executable. Skipped if undefined.\n---\n---```lua\n---default = {}\n---```\n---@field perlEnv? table\n---Add environment variables to current environment, or totally replace (perlEnv related).\n---\n---```lua\n---default = true\n---```\n---@field perlEnvAdd? boolean\n---Pass miscellaneous command line arguments to pass to the perl executable\n---\n---```lua\n---default = {}\n---```\n---@field perlParams? any[]\n---Full path to the perl executable (no aliases, .bat files or ~/)\n---\n---```lua\n---default = \"perl\"\n---```\n---@field perlPath? string\n---Enable perl critic.\n---\n---```lua\n---default = true\n---```\n---@field perlcriticEnabled? boolean\n---Regex pattern with policies to exclude for perl critic (normally in profile)\n---@field perlcriticExclude? string\n---Regex pattern with policies to include for perl critic (normally in profile)\n---@field perlcriticInclude? string\n---Format for Perl::Critic messages. Use %e to include policy explanations\n---\n---```lua\n---default = \"%m\"\n---```\n---@field perlcriticMessageFormat? string\n---Path to perl critic profile. Otherwise perlcritic itself will default to ~/.perlcriticrc. (no aliases, .bat files or ~/)\n---\n---```lua\n---default = \"\"\n---```\n---@field perlcriticProfile? string\n---Override severity level for perl critic (normally in profile)\n---@field perlcriticSeverity? number\n---Override theme for perl critic (normally in profile)\n---@field perlcriticTheme? string\n---Enable perlimports as a linter.\n---@field perlimportsLintEnabled? boolean\n---Path to perlimports.toml (no aliases, .bat files or ~/)\n---\n---```lua\n---default = \"\"\n---```\n---@field perlimportsProfile? string\n---Enable perlimports as a tidier.\n---@field perlimportsTidyEnabled? boolean\n---Enable perl tidy.\n---\n---```lua\n---default = true\n---```\n---@field perltidyEnabled? boolean\n---Path to perl tidy profile (no aliases, .bat files or ~/)\n---\n---```lua\n---default = \"\"\n---```\n---@field perltidyProfile? string\n---Editor Diagnostic severity level for Critic severity 1\n---\n---```lua\n---default = \"hint\"\n---```\n---@field severity1? \"error\" | \"warning\" | \"info\" | \"hint\" | \"none\"\n---Editor Diagnostic severity level for Critic severity 2\n---\n---```lua\n---default = \"hint\"\n---```\n---@field severity2? \"error\" | \"warning\" | \"info\" | \"hint\" | \"none\"\n---Editor Diagnostic severity level for Critic severity 3\n---\n---```lua\n---default = \"hint\"\n---```\n---@field severity3? \"error\" | \"warning\" | \"info\" | \"hint\" | \"none\"\n---Editor Diagnostic severity level for Critic severity 4\n---\n---```lua\n---default = \"info\"\n---```\n---@field severity4? \"error\" | \"warning\" | \"info\" | \"hint\" | \"none\"\n---Editor Diagnostic severity level for Critic severity 5\n---\n---```lua\n---default = \"warning\"\n---```\n---@field severity5? \"error\" | \"warning\" | \"info\" | \"hint\" | \"none\"\n---@field trace? _.lspconfig.settings.perlnavigator.Perlnavigator.Trace\n\n---@class lspconfig.settings.perlnavigator\n---@field perlnavigator? _.lspconfig.settings.perlnavigator.Perlnavigator\n"
  },
  {
    "path": "lua/lspconfig/types/lsp/perlpls.lua",
    "content": "---@meta\n\n---@class _.lspconfig.settings.perlpls.Perl.Perlcritic\n---Enable perlcritic\n---@field enabled? boolean\n---Path to .perlcriticrc\n---@field perlcriticrc? string\n\n---@class _.lspconfig.settings.perlpls.Perl.Syntax\n---Enable syntax checking\n---@field enabled? boolean\n---Path to the perl binary to use for syntax checking\n---@field perl? string\n\n---@class _.lspconfig.settings.perlpls.Perl\n---Current working directory to use\n---@field cwd? string\n---Paths to add to @INC.\n---@field inc? any[]\n---@field perlcritic? _.lspconfig.settings.perlpls.Perl.Perlcritic\n---Path to .perltidyrc\n---@field perltidyrc? string\n---Path to the pls executable script\n---@field pls? string\n---Arguments to pass to the pls command\n---@field plsargs? any[]\n---@field syntax? _.lspconfig.settings.perlpls.Perl.Syntax\n\n---@class _.lspconfig.settings.perlpls.Pls.Perlcritic\n---Enable perlcritic\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n---Path to .perlcriticrc\n---\n---```lua\n---default = \"~/.perlcriticrc\"\n---```\n---@field perlcriticrc? string\n\n---@class _.lspconfig.settings.perlpls.Pls.Perltidy\n---Path to .perltidyrc\n---\n---```lua\n---default = \"~/.perltidyrc\"\n---```\n---@field perltidyrc? string\n\n---@class _.lspconfig.settings.perlpls.Pls.Podchecker\n---Enable podchecker (requires Pod::Checker to be installed)\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.perlpls.Pls.Syntax\n---Additional arguments to pass when syntax checking. This is useful if there is a BEGIN block in your code that changes behavior depending on the contents of @ARGV.\n---\n---```lua\n---default = {}\n---```\n---@field args? any[]\n---Enable syntax checking\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n---Path to the perl binary to use for syntax checking\n---\n---```lua\n---default = \"\"\n---```\n---@field perl? string\n\n---@class _.lspconfig.settings.perlpls.Pls\n---Arguments to pass to the pls command\n---\n---```lua\n---default = {}\n---```\n---@field args? any[]\n---Path to the pls executable script\n---\n---```lua\n---default = \"pls\"\n---```\n---@field cmd? string\n---Current working directory to use\n---\n---```lua\n---default = \".\"\n---```\n---@field cwd? string\n---Paths to add to @INC.\n---\n---```lua\n---default = {}\n---```\n---@field inc? any[]\n---@field perlcritic? _.lspconfig.settings.perlpls.Pls.Perlcritic\n---@field perltidy? _.lspconfig.settings.perlpls.Pls.Perltidy\n---@field podchecker? _.lspconfig.settings.perlpls.Pls.Podchecker\n---@field syntax? _.lspconfig.settings.perlpls.Pls.Syntax\n\n---@class lspconfig.settings.perlpls\n---@field perl? _.lspconfig.settings.perlpls.Perl\n---@field pls? _.lspconfig.settings.perlpls.Pls\n"
  },
  {
    "path": "lua/lspconfig/types/lsp/powershell_es.lua",
    "content": "---@meta\n\n---@class _.lspconfig.settings.powershell_es.Powershell.Buttons\n---Show buttons in the editor's title bar for moving the terminals pane (with the PowerShell Extension Terminal) around.\n---@field showPanelMovementButtons? boolean\n---Show the `Run` and `Run Selection` buttons in the editor's title bar.\n---\n---```lua\n---default = true\n---```\n---@field showRunButtons? boolean\n\n---@class _.lspconfig.settings.powershell_es.Powershell.CodeFolding\n---Enables syntax based code folding. When disabled, the default indentation based code folding is used.\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n---Shows the last line of a folded section similar to the default VS Code folding style. When disabled, the entire folded region is hidden.\n---\n---```lua\n---default = true\n---```\n---@field showLastLine? boolean\n\n---@class _.lspconfig.settings.powershell_es.Powershell.CodeFormatting\n---Adds a space before and after the pipeline operator (`|`) if it is missing.\n---\n---```lua\n---default = true\n---```\n---@field addWhitespaceAroundPipe? boolean\n---Align assignment statements in a hashtable or a DSC Configuration.\n---\n---```lua\n---default = true\n---```\n---@field alignPropertyValuePairs? boolean\n---Replaces aliases with their aliased name.\n---@field autoCorrectAliases? boolean\n---Removes redundant semicolon(s) at the end of a line where a line terminator is sufficient.\n---@field avoidSemicolonsAsLineTerminators? boolean\n---Does not reformat one-line code blocks, such as: `if (...) {...} else {...}`.\n---\n---```lua\n---default = true\n---```\n---@field ignoreOneLineBlock? boolean\n---Adds a newline (line break) after a closing brace.\n---\n---```lua\n---default = true\n---```\n---@field newLineAfterCloseBrace? boolean\n---Adds a newline (line break) after an open brace.\n---\n---```lua\n---default = true\n---```\n---@field newLineAfterOpenBrace? boolean\n---Places open brace on the same line as its associated statement.\n---\n---```lua\n---default = true\n---```\n---@field openBraceOnSameLine? boolean\n---Whether to increase indentation after a pipeline for multi-line statements. See [PSScriptAnalyzer](https://github.com/PowerShell/PSScriptAnalyzer/blob/a94d9f5666bba9f569cdf9c1bc99556934f2b8f4/docs/Rules/UseConsistentIndentation.md#pipelineindentation-string-default-value-is-increaseindentationforfirstpipeline) for examples. It is suggested to use `IncreaseIndentationForFirstPipeline` instead of the default `NoIndentation`. **This default may change in the future,** please see the [Request For Comment](https://github.com/PowerShell/vscode-powershell/issues/4296).\n---\n---```lua\n---default = \"NoIndentation\"\n---```\n---@field pipelineIndentationStyle? \"IncreaseIndentationForFirstPipeline\" | \"IncreaseIndentationAfterEveryPipeline\" | \"NoIndentation\" | \"None\"\n---Sets the code formatting options to follow the given indent style in a way that is compatible with PowerShell syntax. Any setting other than `Custom` will configure (and override) the settings:\n---\n---* `#powershell.codeFormatting.openBraceOnSameLine#`\n---\n---* `#powershell.codeFormatting.newLineAfterOpenBrace#`\n---\n---* `#powershell.codeFormatting.newLineAfterCloseBrace#`\n---\n---For more information about the brace styles, please see [PoshCode's discussion](https://github.com/PoshCode/PowerShellPracticeAndStyle/issues/81).\n---\n---```lua\n---default = \"Custom\"\n---```\n---@field preset? \"Custom\" | \"Allman\" | \"OTBS\" | \"Stroustrup\"\n---Trims extraneous whitespace (more than one character) before and after the pipeline operator (`|`).\n---@field trimWhitespaceAroundPipe? boolean\n---Use single quotes if a string is not interpolated and its value does not contain a single quote.\n---@field useConstantStrings? boolean\n---Use correct casing for cmdlets.\n---@field useCorrectCasing? boolean\n---Adds a space after a separator (`,` and `;`).\n---\n---```lua\n---default = true\n---```\n---@field whitespaceAfterSeparator? boolean\n---Adds spaces before and after an operator (`=`, `+`, `-`, etc.).\n---\n---```lua\n---default = true\n---```\n---@field whitespaceAroundOperator? boolean\n---**Deprecated:** Please use the `#powershell.codeFormatting.addWhitespaceAroundPipe#` setting instead. If you've used this setting before, we have moved it for you automatically.\n---\n---```lua\n---default = true\n---```\n---@field whitespaceAroundPipe? boolean\n---Adds a space between a keyword and its associated script-block expression.\n---\n---```lua\n---default = true\n---```\n---@field whitespaceBeforeOpenBrace? boolean\n---Adds a space between a keyword (`if`, `elseif`, `while`, `switch`, etc.) and its associated conditional expression.\n---\n---```lua\n---default = true\n---```\n---@field whitespaceBeforeOpenParen? boolean\n---Removes redundant whitespace between parameters.\n---@field whitespaceBetweenParameters? boolean\n---Adds a space after an opening brace (`{`) and before a closing brace (`}`).\n---\n---```lua\n---default = true\n---```\n---@field whitespaceInsideBrace? boolean\n\n---@class _.lspconfig.settings.powershell_es.Powershell.Debugging\n---Creates a temporary PowerShell Extension Terminal for each debugging session. This is useful for debugging PowerShell classes and binary modules.\n---@field createTemporaryIntegratedConsole? boolean\n---Sets the operator used to launch scripts.\n---\n---```lua\n---default = \"DotSource\"\n---```\n---@field executeMode? \"DotSource\" | \"Call\"\n\n---@class _.lspconfig.settings.powershell_es.Powershell.Developer\n---Specifies an alternative path to the folder containing modules that are bundled with the PowerShell extension, that is: PowerShell Editor Services, PSScriptAnalyzer and PSReadLine. **This setting is only meant for extension developers and requires the extension to be run in development mode!**\n---\n---```lua\n---default = \"../../PowerShellEditorServices/module\"\n---```\n---@field bundledModulesPath? string\n---Sets the log verbosity for both the extension and its LSP server, PowerShell Editor Services. **Please set to `Trace` when recording logs for a bug report!**\n---\n---```lua\n---default = \"Warning\"\n---```\n---@field editorServicesLogLevel? \"Trace\" | \"Debug\" | \"Information\" | \"Warning\" | \"Error\" | \"None\"\n---Launches the LSP server with the `/waitForDebugger` flag to force it to wait for a .NET debugger to attach before proceeding, and emit its PID until then. **This setting is only meant for extension developers and requires the extension to be run in development mode!**\n---@field editorServicesWaitForDebugger? boolean\n---An array of strings that enable experimental features in the PowerShell extension. **No flags are currently available!**\n---\n---```lua\n---default = {}\n---```\n---@field featureFlags? string[]\n---On Windows we launch the PowerShell executable with `-ExecutionPolicy Bypass` so that the LSP server (PowerShell Editor Services module) will launch without issue. Some anti-virus programs disallow this command-line argument and this flag can be used to remove it. **Using this setting may require trusting the script manually in order for it to launch!**\n---\n---```lua\n---default = true\n---```\n---@field setExecutionPolicy? boolean\n---Traces the DAP communication between VS Code and the PowerShell Editor Services [DAP Server](https://microsoft.github.io/debug-adapter-protocol/). The output will be logged and also visible in the Output pane, where the verbosity is configurable. **For extension developers and issue troubleshooting only!**\n---@field traceDap? boolean\n---Specifies how many seconds the extension will wait for the LSP server, PowerShell Editor Services, to connect. The default is four minutes; try increasing this value if your computer is particularly slow (often caused by overactive anti-malware programs).\n---\n---```lua\n---default = 240\n---```\n---@field waitForSessionFileTimeoutSeconds? number\n\n---@class _.lspconfig.settings.powershell_es.Powershell.IntegratedConsole\n---Switches focus to the console when a script selection is run or a script file is debugged.\n---\n---```lua\n---default = true\n---```\n---@field focusConsoleOnExecute? boolean\n---Use the VS Code API to clear the terminal since that's the only reliable way to clear the scrollback buffer. Turn this on if you're used to `Clear-Host` clearing scroll history. **This setting is not recommended and likely to be deprecated!**\n---@field forceClearScrollbackBuffer? boolean\n---Shows the Extension Terminal when the PowerShell extension is initialized. When disabled, the pane is not opened on startup, but the Extension Terminal is still created in order to power the extension's features.\n---\n---```lua\n---default = true\n---```\n---@field showOnStartup? boolean\n---Starts the Extension Terminal in the background. **If this is enabled, to access the terminal you must run the [Show Extension Terminal command](command:PowerShell.ShowSessionConsole), and once shown it cannot be put back into the background.** This option completely hides the Extension Terminal from the terminals view. You are probably looking for the `#powershell.integratedConsole.showOnStartup#` option instead.\n---@field startInBackground? boolean\n---Sets the startup location for Extension Terminal.\n---\n---```lua\n---default = \"Panel\"\n---```\n---@field startLocation? \"Editor\" | \"Panel\"\n---Do not show the startup banner in the PowerShell Extension Terminal.\n---@field suppressStartupBanner? boolean\n---This will disable the use of PSReadLine in the PowerShell Extension Terminal and use a legacy implementation. **This setting is not recommended and likely to be deprecated!**\n---@field useLegacyReadLine? boolean\n\n---@class _.lspconfig.settings.powershell_es.Powershell.Pester\n---This setting controls the appearance of the `Run Tests` and `Debug Tests` CodeLenses that appears above Pester tests.\n---\n---```lua\n---default = true\n---```\n---@field codeLens? boolean\n---Defines the verbosity of output to be used when debugging a test or a block. For Pester 5 and newer the default value `Diagnostic` will print additional information about discovery, skipped and filtered tests, mocking and more.\n---\n---```lua\n---default = \"Diagnostic\"\n---```\n---@field debugOutputVerbosity? \"None\" | \"Minimal\" | \"Normal\" | \"Detailed\" | \"Diagnostic\"\n---Defines the verbosity of output to be used. For Pester 5 and newer the default value `FromPreference` will use the `Output` settings from the `$PesterPreference` defined in the caller's context, and will default to `Normal` if there is none. For Pester 4 the `FromPreference` and `Normal` options map to `All`, and `Minimal` option maps to `Fails`.\n---\n---```lua\n---default = \"FromPreference\"\n---```\n---@field outputVerbosity? \"FromPreference\" | \"None\" | \"Minimal\" | \"Normal\" | \"Detailed\" | \"Diagnostic\"\n---Use a CodeLens that is compatible with Pester 4. Disabling this will show `Run Tests` on all `It`, `Describe` and `Context` blocks, and will correctly work only with Pester 5 and newer.\n---\n---```lua\n---default = true\n---```\n---@field useLegacyCodeLens? boolean\n\n---@class _.lspconfig.settings.powershell_es.Powershell.ScriptAnalysis\n---Enables real-time script analysis using [PSScriptAnalyzer](https://github.com/PowerShell/PSScriptAnalyzer) that populates the [Problems view](command:workbench.panel.markers.view.focus).\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n---Specifies the path to a [PSScriptAnalyzer](https://github.com/PowerShell/PSScriptAnalyzer) settings file. **This setting may not work as expected currently!**\n---\n---```lua\n---default = \"PSScriptAnalyzerSettings.psd1\"\n---```\n---@field settingsPath? string\n\n---@class _.lspconfig.settings.powershell_es.Powershell.SideBar\n---Specifies an array of modules to exclude from Command Explorer listing.\n---\n---```lua\n---default = {}\n---```\n---@field CommandExplorerExcludeFilter? string[]\n---Specifies the visibility of the Command Explorer in the side bar.\n---@field CommandExplorerVisibility? boolean\n\n---@class _.lspconfig.settings.powershell_es.Powershell.StartAsLoginShell\n---Starts the PowerShell extension's underlying PowerShell process as a login shell, if applicable.\n---@field linux? boolean\n---Starts the PowerShell extension's underlying PowerShell process as a login shell, if applicable.\n---\n---```lua\n---default = true\n---```\n---@field osx? boolean\n\n---@class _.lspconfig.settings.powershell_es.Powershell.Trace\n---Traces the communication between VS Code and the PowerShell Editor Services [LSP Server](https://microsoft.github.io/language-server-protocol/). The output will be logged and also visible in the Output pane, where the verbosity is configurable. **For extension developers and issue troubleshooting only!**\n---\n---```lua\n---default = \"off\"\n---```\n---@field server? \"off\" | \"messages\" | \"verbose\"\n\n---@class _.lspconfig.settings.powershell_es.Powershell\n---Specifies to search for references only within open documents instead of all workspace files. An alternative to `#powershell.enableReferencesCodeLens#` that allows large workspaces to support some references without the performance impact.\n---@field analyzeOpenDocumentsOnly? boolean\n---@field buttons? _.lspconfig.settings.powershell_es.Powershell.Buttons\n---@field codeFolding? _.lspconfig.settings.powershell_es.Powershell.CodeFolding\n---@field codeFormatting? _.lspconfig.settings.powershell_es.Powershell.CodeFormatting\n---A path where the Extension Terminal will be launched. Both the PowerShell process's and the shell's location will be set to this directory. Does not support variables, but does support the use of '~' and paths relative to a single workspace. **For multi-root workspaces, use the name of the folder you wish to have as the cwd.**\n---\n---```lua\n---default = \"\"\n---```\n---@field cwd? string\n---@field debugging? _.lspconfig.settings.powershell_es.Powershell.Debugging\n---@field developer? _.lspconfig.settings.powershell_es.Powershell.Developer\n---Specifies whether the extension loads [PowerShell profiles](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_profiles). Note that the extension's \"Current Host\" profile is `Microsoft.VSCode_profile.ps1`, which will be loaded instead of the default \"Current Host\" profile of `Microsoft.PowerShell_profile.ps1`. Use the \"All Hosts\" profile `profile.ps1` for common configuration.\n---\n---```lua\n---default = true\n---```\n---@field enableProfileLoading? boolean\n---Specifies if Code Lenses are displayed above function definitions, used to show the number of times the function is referenced in the workspace and navigate to those references. Large workspaces may want to disable this setting if performance is compromised. See also `#powershell.analyzeOpenDocumentsOnly#`.\n---\n---```lua\n---default = true\n---```\n---@field enableReferencesCodeLens? boolean\n---Specifies the [comment based help](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_comment_based_help) completion style triggered by typing ` ##`.\n---\n---```lua\n---default = \"BlockComment\"\n---```\n---@field helpCompletion? \"Disabled\" | \"BlockComment\" | \"LineComment\"\n---@field integratedConsole? _.lspconfig.settings.powershell_es.Powershell.IntegratedConsole\n---@field pester? _.lspconfig.settings.powershell_es.Powershell.Pester\n---Specifies a list of Item / Value pairs where the **Item** is a user-chosen name and the **Value** is an absolute path to a PowerShell executable. The name appears in the [Session Menu Command](command:PowerShell.ShowSessionMenu) and is used to reference this executable in the `#powershell.powerShellDefaultVersion#` setting.\n---\n---```lua\n---default = {}\n---```\n---@field powerShellAdditionalExePaths? table\n---Specifies the default PowerShell version started by the extension. The name must match what is displayed in the [Session Menu command](command:PowerShell.ShowSessionMenu), for example, `Windows PowerShell (x86)`. You can specify additional PowerShell executables with the `#powershell.powerShellAdditionalExePaths#` setting.\n---\n---```lua\n---default = \"\"\n---```\n---@field powerShellDefaultVersion? string\n---**Deprecated:** Specifies the path to the PowerShell executable.\n---\n---```lua\n---default = \"\"\n---```\n---@field powerShellExePath? string\n---**Deprecated:** Specifies whether you should be prompted to update your version of `PackageManagement` if it's under 1.4.6.\n---@field promptToUpdatePackageManagement? boolean\n---Specifies whether you may be prompted to update your version of PowerShell.\n---\n---```lua\n---default = true\n---```\n---@field promptToUpdatePowerShell? boolean\n---@field scriptAnalysis? _.lspconfig.settings.powershell_es.Powershell.ScriptAnalysis\n---@field sideBar? _.lspconfig.settings.powershell_es.Powershell.SideBar\n---@field startAsLoginShell? _.lspconfig.settings.powershell_es.Powershell.StartAsLoginShell\n---Starts the PowerShell extension automatically when a PowerShell file is opened. If `false`, to start the extension use the [Restart Session command](command:PowerShell.RestartSession). **IntelliSense, code navigation, the Extension Terminal, code formatting, and other features are not enabled until the extension starts.**\n---\n---```lua\n---default = true\n---```\n---@field startAutomatically? boolean\n---Suppresses the warning message when any of `#powershell.powerShellAdditionalExePaths#` is not found.\n---@field suppressAdditionalExeNotFoundWarning? boolean\n---@field trace? _.lspconfig.settings.powershell_es.Powershell.Trace\n---**Deprecated:** Uses the 32-bit language service on 64-bit Windows. This setting has no effect on 32-bit Windows or on the PowerShell extension debugger, which has its own architecture configuration.\n---@field useX86Host? boolean\n\n---@class lspconfig.settings.powershell_es\n---@field powershell? _.lspconfig.settings.powershell_es.Powershell\n"
  },
  {
    "path": "lua/lspconfig/types/lsp/psalm.lua",
    "content": "---@meta\n\n---@class _.lspconfig.settings.psalm.Psalm.Trace\n---Traces the communication between VSCode and the Psalm language server.\n---\n---```lua\n---default = \"off\"\n---```\n---@field server? \"off\" | \"messages\" | \"verbose\"\n\n---@class _.lspconfig.settings.psalm.Psalm\n---A list of file extensions to request Psalm to analyze. By default, this only includes 'php' (Modifying requires VSCode reload)\n---\n---```lua\n---default = { {\n---    language = \"php\",\n---    scheme = \"file\"\n---  }, {\n---    language = \"php\",\n---    scheme = \"untitled\"\n---  } }\n---```\n---@field analyzedFileExtensions? any[]\n---A list of files to checkup for psalm configuration (relative to the workspace directory)\n---\n---```lua\n---default = { \"psalm.xml\", \"psalm.xml.dist\" }\n---```\n---@field configPaths? string[]\n---If this is set to true, this VSCode extension will use TCP instead of the default STDIO to communicate with the Psalm language server. (Modifying requires VSCode reload)\n---@field connectToServerWithTcp? boolean\n---Enable to disable autocomplete on methods and properties (Modifying requires VSCode reload)\n---@field disableAutoComplete? boolean\n---Enable this to print messages to the debug console when developing or debugging this VS Code extension. (Modifying requires VSCode reload)\n---@field enableDebugLog? boolean\n---Enable this to use PHP-provided ini defaults for memory and error display. (Modifying requires restart)\n---@field enableUseIniDefaults? boolean\n---Enable --verbose mode on the Psalm Language Server (Modifying requires VSCode reload)\n---@field enableVerbose? boolean\n---This will hide the Psalm status from the status bar when it is started and running.  This is useful to clear up a cluttered status bar.\n---\n---```lua\n---default = true\n---```\n---@field hideStatusMessageWhenRunning? boolean\n---Traces the communication between VSCode and the Psalm language server.\n---\n---```lua\n---default = \"INFO\"\n---```\n---@field logLevel? \"NONE\" | \"ERROR\" | \"WARN\" | \"INFO\" | \"DEBUG\" | \"TRACE\"\n---The number of times the Language Server is allowed to crash and restart before it will no longer try to restart (Modifying requires VSCode reload)\n---\n---```lua\n---default = 5\n---```\n---@field maxRestartCount? number\n---Optional (Advanced), default is '-dxdebug.remote_autostart=0 -dxdebug.remote_enable=0 -dxdebug_profiler_enable=0'.  Additional PHP executable CLI arguments to use. (Modifying requires VSCode reload)\n---\n---```lua\n---default = { \"-dxdebug.remote_autostart=0\", \"-dxdebug.remote_enable=0\", \"-dxdebug_profiler_enable=0\" }\n---```\n---@field phpExecutableArgs? string[]\n---Optional, defaults to searching for \"php\". The path to a PHP 7.0+ executable to use to execute the Psalm server. The PHP 7.0+ installation should preferably include and enable the PHP module `pcntl`. (Modifying requires VSCode reload)\n---@field phpExecutablePath? string\n---Optional (Advanced). If provided, this overrides the Psalm script to use, e.g. vendor/bin/psalm. (Modifying requires VSCode reload)\n---@field psalmClientScriptPath? string\n---Optional (Advanced). Additional arguments to the Psalm language server. (Modifying requires VSCode reload)\n---\n---```lua\n---default = {}\n---```\n---@field psalmScriptArgs? string[]\n---Optional (Advanced). If provided, this overrides the Psalm script to use, e.g. vendor/bin/psalm-language-server. (Modifying requires VSCode reload)\n---@field psalmScriptPath? string\n---Optional (Advanced). If provided, this overrides the Psalm version detection (Modifying requires VSCode reload)\n---@field psalmVersion? string\n---@field trace? _.lspconfig.settings.psalm.Psalm.Trace\n---Enable this to enable unused variable and parameter detection\n---@field unusedVariableDetection? boolean\n\n---@class lspconfig.settings.psalm\n---@field psalm? _.lspconfig.settings.psalm.Psalm\n"
  },
  {
    "path": "lua/lspconfig/types/lsp/puppet.lua",
    "content": "---@meta\n\n---@class _.lspconfig.settings.puppet.Puppet.EditorService.FoldingRange\n---Enable/disable syntax aware code folding provider\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n---Show or hide the last line in code folding regions\n---@field showLastLine? boolean\n\n---@class _.lspconfig.settings.puppet.Puppet.EditorService.FormatOnType\n---Enable/disable the Puppet document on-type formatter, for example hashrocket alignment\n---@field enable? boolean\n---Sets the maximum file size (in Bytes) that document on-type formatting will occur. Setting this to zero (0) will disable the file size check. Note that large file sizes can cause performance issues.\n---\n---```lua\n---default = 4096\n---```\n---@field maxFileSize? integer\n\n---@class _.lspconfig.settings.puppet.Puppet.EditorService.Hover\n---Enable or disable showing Puppet Module version information in the metadata.json file\n---\n---```lua\n---default = true\n---```\n---@field showMetadataInfo? boolean\n\n---@class _.lspconfig.settings.puppet.Puppet.EditorService.Puppet\n---The Puppet configuration directory. See https://puppet.com/docs/puppet/latest/dirs_confdir.html for more information\n---\n---```lua\n---default = \"\"\n---```\n---@field confdir? string\n---The Puppet environment to use. See https://puppet.com/docs/puppet/latest/config_print.html#environments for more information\n---\n---```lua\n---default = \"\"\n---```\n---@field environment? string\n---Additional module paths to use when starting the Editor Services. On Windows this is delimited with a semicolon, and on all other platforms, with a colon. For example C:\\Path1;C:\\Path2\n---\n---```lua\n---default = \"\"\n---```\n---@field modulePath? string\n---The Puppet cache directory. See https://puppet.com/docs/puppet/latest/dirs_vardir.html for more information\n---\n---```lua\n---default = \"\"\n---```\n---@field vardir? string\n---The version of Puppet to use. For example '5.4.0'. This is generally only applicable when using the PDK installation type. If Puppet Editor Services is unable to use this version, it will default to the latest available version of Puppet.\n---\n---```lua\n---default = \"\"\n---```\n---@field version? string\n\n---@class _.lspconfig.settings.puppet.Puppet.EditorService.Tcp\n---The IP address or hostname of the remote Puppet Editor Service to connect to, for example 'computer.domain' or '192.168.0.1'. Only applicable when the editorService.protocol is set to tcp\n---@field address? string\n---The TCP Port of the remote Puppet Editor Service to connect to. Only applicable when the editorService.protocol is set to tcp\n---@field port? integer\n\n---@class _.lspconfig.settings.puppet.Puppet.EditorService\n---The absolute filepath where the Puppet Editor Service will output the debugging log. By default no logfile is generated\n---\n---```lua\n---default = \"\"\n---```\n---@field debugFilePath? string\n---Enable/disable advanced Puppet Language Features\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n---An array of strings of experimental features to enable in the Puppet Editor Service\n---\n---```lua\n---default = {}\n---```\n---@field featureFlags? any[]\n---@field foldingRange? _.lspconfig.settings.puppet.Puppet.EditorService.FoldingRange\n---@field formatOnType? _.lspconfig.settings.puppet.Puppet.EditorService.FormatOnType\n---@field hover? _.lspconfig.settings.puppet.Puppet.EditorService.Hover\n---Set the logging verbosity level for the Puppet Editor Service, with Debug producing the most output and Error producing the least\n---\n---```lua\n---default = \"normal\"\n---```\n---@field loglevel? \"debug\" | \"error\" | \"normal\" | \"warning\" | \"verbose\"\n---The protocol used to communicate with the Puppet Editor Service. By default the local STDIO protocol is used.\n---\n---```lua\n---default = \"stdio\"\n---```\n---@field protocol? \"stdio\" | \"tcp\"\n---@field puppet? _.lspconfig.settings.puppet.Puppet.EditorService.Puppet\n---@field tcp? _.lspconfig.settings.puppet.Puppet.EditorService.Tcp\n---The timeout to connect to the Puppet Editor Service\n---\n---```lua\n---default = 10\n---```\n---@field timeout? integer\n\n---@class _.lspconfig.settings.puppet.Puppet.Format\n---Enable/disable the Puppet document formatter\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n\n---@class _.lspconfig.settings.puppet.Puppet.Notification\n---The type of notification used when a node graph is being generated. Default value of messagebox\n---\n---```lua\n---default = \"messagebox\"\n---```\n---@field nodeGraph? \"messagebox\" | \"statusbar\" | \"none\"\n---The type of notification used when a running Puppet Resouce. Default value of messagebox\n---\n---```lua\n---default = \"messagebox\"\n---```\n---@field puppetResource? \"messagebox\" | \"statusbar\" | \"none\"\n\n---@class _.lspconfig.settings.puppet.Puppet.Pdk\n---Enable/disable checking if installed PDK version is latest\n---\n---```lua\n---default = true\n---```\n---@field checkVersion? boolean\n\n---@class _.lspconfig.settings.puppet.Puppet.TitleBar.PdkNewModule\n---Enable/disable the PDK New Module icon in the Editor Title Bar\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n\n---@class _.lspconfig.settings.puppet.Puppet.TitleBar\n---@field pdkNewModule? _.lspconfig.settings.puppet.Puppet.TitleBar.PdkNewModule\n\n---@class _.lspconfig.settings.puppet.Puppet.Validate\n---Enable/disable using dependency resolution for Puppetfiles\n---\n---```lua\n---default = true\n---```\n---@field resolvePuppetfiles? boolean\n\n---@class _.lspconfig.settings.puppet.Puppet\n---@field editorService? _.lspconfig.settings.puppet.Puppet.EditorService\n---@field format? _.lspconfig.settings.puppet.Puppet.Format\n---The fully qualified path to the Puppet install directory. This can be a PDK or Puppet Agent installation. For example: 'C:\\Program Files\\Puppet Labs\\Puppet' or '/opt/puppetlabs/puppet'. If this is not set the extension will attempt to detect the installation directory. Do **not** use when `#puppet.installType#` is set to `auto`\n---@field installDirectory? string\n---The type of Puppet installation. Either the Puppet Development Kit (pdk) or the Puppet Agent (agent). Choose `auto` to have the extension detect which to use automatically based on default install locations\n---\n---```lua\n---default = \"auto\"\n---```\n---@field installType? \"auto\" | \"pdk\" | \"agent\"\n---@field notification? _.lspconfig.settings.puppet.Puppet.Notification\n---@field pdk? _.lspconfig.settings.puppet.Puppet.Pdk\n---@field titleBar? _.lspconfig.settings.puppet.Puppet.TitleBar\n---@field validate? _.lspconfig.settings.puppet.Puppet.Validate\n\n---@class lspconfig.settings.puppet\n---@field puppet? _.lspconfig.settings.puppet.Puppet\n"
  },
  {
    "path": "lua/lspconfig/types/lsp/purescriptls.lua",
    "content": "---@meta\n\n---@class _.lspconfig.settings.purescriptls.Purescript.Trace\n---Traces the communication between VSCode and the PureScript language service.\n---\n---```lua\n---default = \"off\"\n---```\n---@field server? \"off\" | \"messages\" | \"verbose\"\n\n---@class _.lspconfig.settings.purescriptls.Purescript\n---Whether to add the local npm bin directory to the PATH for purs IDE server and build command.\n---@field addNpmPath? boolean\n---Whether to add psc-package sources to the globs passed to the IDE server for source locations (specifically the output of `psc-package sources`, if this is a psc-package project). Update due to adding packages/changing package set requires psc-ide server restart.\n---@field addPscPackageSources? boolean\n---Whether to add spago sources to the globs passed to the IDE server for source locations (specifically the output of `spago sources`, if this is a spago project). Update due to adding packages/changing package set requires psc-ide server restart.\n---\n---```lua\n---default = true\n---```\n---@field addSpagoSources? boolean\n---Whether to automatically start/connect to purs IDE server when editing a PureScript file (includes connecting to an existing running instance). If this is disabled, various features like autocomplete, tooltips, and other type info will not work until start command is run manually.\n---\n---```lua\n---default = true\n---```\n---@field autoStartPscIde? boolean\n---Whether to automatically add imported identifiers when accepting autocomplete result.\n---\n---```lua\n---default = true\n---```\n---@field autocompleteAddImport? boolean\n---Whether to always autocomplete from all built modules, or just those imported in the file. Suggestions from all modules always available by explicitly triggering autocomplete.\n---\n---```lua\n---default = true\n---```\n---@field autocompleteAllModules? boolean\n---Whether to group completions in autocomplete results. Requires compiler 0.11.6\n---\n---```lua\n---default = true\n---```\n---@field autocompleteGrouped? boolean\n---Maximum number of results to fetch for an autocompletion request. May improve performance on large projects.\n---@field autocompleteLimit? integer\n---Build command to use with arguments. Not passed to shell. eg `spago build --purs-args --json-errors`\n---\n---```lua\n---default = \"spago build --purs-args --json-errors\"\n---```\n---@field buildCommand? string\n---**EXPERIMENTAL** Enable purs IDE server fast rebuild of opened files. This includes both newly opened tabs and those present at startup.\n---@field buildOpenedFiles? boolean\n---The warning codes to censor, both for fast rebuild and a full build. Unrelated to any psa setup. e.g.: [\"ShadowedName\",\"MissingTypeDeclaration\"]\n---\n---```lua\n---default = {}\n---```\n---@field censorWarnings? string[]\n---List of codegen targets to pass to the compiler for rebuild. e.g. js, corefn. If not specified (rather than empty array) this will not be passed and the compiler will default to js. Requires 0.12.1+\n---@field codegenTargets? string[]\n---Enable declaration codelens to add types to declarations\n---\n---```lua\n---default = true\n---```\n---@field declarationTypeCodeLens? boolean\n---**EXPERIMENTAL** Enable diagnostics on file open, as per diagnostics on type\n---@field diagnosticsOnOpen? boolean\n---**EXPERIMENTAL** Enable rebuilding modules for diagnostics automatically on typing. This may provide quicker feedback on errors, but could interfere with other functionality.\n---@field diagnosticsOnType? boolean\n---**EXPERIMENTAL**\n---\n---```lua\n---default = 100\n---```\n---@field diagnosticsOnTypeDebounce? integer\n---Enable declaration codelenses for export management\n---\n---```lua\n---default = true\n---```\n---@field exportsCodeLens? boolean\n---Enable purs IDE server fast rebuild (rebuilding single files on saving them)\n---\n---```lua\n---default = true\n---```\n---@field fastRebuild? boolean\n---Extension for foreign files\n---\n---```lua\n---default = \"js\"\n---```\n---@field foreignExt? string\n---Tool to use to for formatting. Must be installed and on PATH (or npm installed with addNpmPath set)\n---\n---```lua\n---default = \"purs-tidy\"\n---```\n---@field formatter? \"none\" | \"purty\" | \"purs-tidy\" | \"pose\"\n---Whether to perform a full build on save with the configured build command (rather than IDE server fast rebuild). This is not generally recommended because it is slow, but it does mean that dependent modules are rebuilt as necessary.\n---@field fullBuildOnSave? boolean\n---Whether to show progress for full build on save (if enabled)\n---\n---```lua\n---default = true\n---```\n---@field fullBuildOnSaveProgress? boolean\n---Module to prefer to insert when adding imports which have been re-exported. In order of preference, most preferred first.\n---\n---```lua\n---default = { \"Prelude\" }\n---```\n---@field importsPreferredModules? string[]\n---Override purs ide output directory (output/ if not specified). This should match up to your build command\n---\n---```lua\n---default = \"output/\"\n---```\n---@field outputDirectory? string\n---Path to installed packages. Will be used to control globs passed to IDE server for source locations.  Change requires IDE server restart.\n---\n---```lua\n---default = \"\"\n---```\n---@field packagePath? string\n---Module to consider as your default prelude, if an auto-complete suggestion comes from this module it will be imported unqualified.\n---\n---```lua\n---default = \"Prelude\"\n---```\n---@field preludeModule? string\n---Port to use for purs IDE server (whether an existing server or to start a new one). By default a random port is chosen (or an existing port in .psc-ide-port if present), if this is specified no attempt will be made to select an alternative port on failure.\n---@field pscIdePort? integer\n---Log level for purs IDE server\n---\n---```lua\n---default = \"\"\n---```\n---@field pscIdelogLevel? string\n---Location of purs executable (resolved wrt PATH)\n---\n---```lua\n---default = \"purs\"\n---```\n---@field pursExe? string\n---Path to application source root. Will be used to control globs passed to IDE server for source locations. Change requires IDE server restart.\n---\n---```lua\n---default = \"src\"\n---```\n---@field sourcePath? string\n---@field trace? _.lspconfig.settings.purescriptls.Purescript.Trace\n\n---@class lspconfig.settings.purescriptls\n---@field purescript? _.lspconfig.settings.purescriptls.Purescript\n"
  },
  {
    "path": "lua/lspconfig/types/lsp/pylsp.lua",
    "content": "---@meta\n\n---@class _.lspconfig.settings.pylsp.Pylsp.Plugins.Autopep8\n---Enable or disable the plugin (disabling required to use `yapf`).\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.pylsp.Pylsp.Plugins.Flake8\n---Path to the config file that will be the authoritative config source.\n---@field config? string\n---Enable or disable the plugin.\n---@field enabled? boolean\n---List of files or directories to exclude.\n---\n---```lua\n---default = {}\n---```\n---@field exclude? string[]\n---Path to the flake8 executable.\n---\n---```lua\n---default = \"flake8\"\n---```\n---@field executable? string\n---List of errors and warnings to append to ignore list.\n---\n---```lua\n---default = {}\n---```\n---@field extendIgnore? string[]\n---List of errors and warnings to append to select list.\n---\n---```lua\n---default = {}\n---```\n---@field extendSelect? string[]\n---Only check for filenames matching the patterns in this list.\n---@field filename? string\n---Hang closing bracket instead of matching indentation of opening bracket's line.\n---@field hangClosing? boolean\n---List of errors and warnings to ignore (or skip).\n---\n---```lua\n---default = {}\n---```\n---@field ignore? string[]\n---Set indentation spaces.\n---@field indentSize? integer\n---Maximum allowed complexity threshold.\n---@field maxComplexity? integer\n---Maximum allowed line length for the entirety of this run.\n---@field maxLineLength? integer\n---A pairing of filenames and violation codes that defines which violations to ignore in a particular file, for example: `[\"file_path.py:W305,W304\"]`).\n---\n---```lua\n---default = {}\n---```\n---@field perFileIgnores? string[]\n---List of errors and warnings to enable.\n---@field select? string[]\n\n---@class _.lspconfig.settings.pylsp.Pylsp.Plugins.Jedi\n---List of module names for jedi.settings.auto_import_modules.\n---\n---```lua\n---default = { \"numpy\" }\n---```\n---@field auto_import_modules? string[]\n---Define environment variables for jedi.Script and Jedi.names.\n---@field env_vars? table\n---Define environment for jedi.Script and Jedi.names.\n---@field environment? string\n---Define extra paths for jedi.Script.\n---\n---```lua\n---default = {}\n---```\n---@field extra_paths? string[]\n---Whether to place extra_paths at the beginning (true) or end (false) of `sys.path`\n---@field prioritize_extra_paths? boolean\n\n---@class _.lspconfig.settings.pylsp.Pylsp.Plugins.JediCompletion\n---Modules for which labels and snippets should be cached.\n---\n---```lua\n---default = { \"pandas\", \"numpy\", \"tensorflow\", \"matplotlib\" }\n---```\n---@field cache_for? string[]\n---Resolve documentation and detail eagerly.\n---@field eager? boolean\n---Enable or disable the plugin.\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n---Enable fuzzy when requesting autocomplete.\n---@field fuzzy? boolean\n---Adds class objects as a separate completion item.\n---@field include_class_objects? boolean\n---Adds function objects as a separate completion item.\n---@field include_function_objects? boolean\n---Auto-completes methods and classes with tabstops for each parameter.\n---\n---```lua\n---default = true\n---```\n---@field include_params? boolean\n---How many labels and snippets (at most) should be resolved?\n---\n---```lua\n---default = 25\n---```\n---@field resolve_at_most? integer\n\n---@class _.lspconfig.settings.pylsp.Pylsp.Plugins.JediDefinition\n---Enable or disable the plugin.\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n---Follow builtin and extension definitions to stubs.\n---\n---```lua\n---default = true\n---```\n---@field follow_builtin_definitions? boolean\n---If follow_imports is True will decide if it follow builtin imports.\n---\n---```lua\n---default = true\n---```\n---@field follow_builtin_imports? boolean\n---The goto call will follow imports.\n---\n---```lua\n---default = true\n---```\n---@field follow_imports? boolean\n\n---@class _.lspconfig.settings.pylsp.Pylsp.Plugins.JediHover\n---Enable or disable the plugin.\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.pylsp.Pylsp.Plugins.JediReferences\n---Enable or disable the plugin.\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.pylsp.Pylsp.Plugins.JediSignatureHelp\n---Enable or disable the plugin.\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.pylsp.Pylsp.Plugins.JediSymbols\n---If True lists the names of all scopes instead of only the module namespace.\n---\n---```lua\n---default = true\n---```\n---@field all_scopes? boolean\n---Enable or disable the plugin.\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n---If True includes symbols imported from other libraries.\n---\n---```lua\n---default = true\n---```\n---@field include_import_symbols? boolean\n\n---@class _.lspconfig.settings.pylsp.Pylsp.Plugins.JediTypeDefinition\n---Enable or disable the plugin.\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.pylsp.Pylsp.Plugins.Mccabe\n---Enable or disable the plugin.\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n---The minimum threshold that triggers warnings about cyclomatic complexity.\n---\n---```lua\n---default = 15\n---```\n---@field threshold? integer\n\n---@class _.lspconfig.settings.pylsp.Pylsp.Plugins.Preload\n---Enable or disable the plugin.\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n---List of modules to import on startup\n---\n---```lua\n---default = {}\n---```\n---@field modules? string[]\n\n---@class _.lspconfig.settings.pylsp.Pylsp.Plugins.Pycodestyle\n---Enable or disable the plugin.\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n---Exclude files or directories which match these patterns.\n---\n---```lua\n---default = {}\n---```\n---@field exclude? string[]\n---When parsing directories, only check filenames matching these patterns.\n---\n---```lua\n---default = {}\n---```\n---@field filename? string[]\n---Hang closing bracket instead of matching indentation of opening bracket's line.\n---@field hangClosing? boolean\n---Ignore errors and warnings\n---\n---```lua\n---default = {}\n---```\n---@field ignore? string[]\n---Set indentation spaces.\n---@field indentSize? integer\n---Set maximum allowed line length.\n---@field maxLineLength? integer\n---Select errors and warnings\n---@field select? string[]\n\n---@class _.lspconfig.settings.pylsp.Pylsp.Plugins.Pydocstyle\n---Ignore errors and warnings in addition to the specified convention.\n---\n---```lua\n---default = {}\n---```\n---@field addIgnore? string[]\n---Select errors and warnings in addition to the specified convention.\n---\n---```lua\n---default = {}\n---```\n---@field addSelect? string[]\n---Choose the basic list of checked errors by specifying an existing convention.\n---@field convention? \"pep257\" | \"numpy\" | \"google\"\n---Enable or disable the plugin.\n---@field enabled? boolean\n---Ignore errors and warnings\n---\n---```lua\n---default = {}\n---```\n---@field ignore? string[]\n---Check only files that exactly match the given regular expression; default is to match files that don't start with 'test_' but end with '.py'.\n---\n---```lua\n---default = \"(?!test_).*\\\\.py\"\n---```\n---@field match? string\n---Search only dirs that exactly match the given regular expression; default is to match dirs which do not begin with a dot.\n---\n---```lua\n---default = \"[^\\\\.].*\"\n---```\n---@field matchDir? string\n---Select errors and warnings\n---@field select? string[]\n\n---@class _.lspconfig.settings.pylsp.Pylsp.Plugins.Pyflakes\n---Enable or disable the plugin.\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.pylsp.Pylsp.Plugins.Pylint\n---Arguments to pass to pylint.\n---\n---```lua\n---default = {}\n---```\n---@field args? string[]\n---Enable or disable the plugin.\n---@field enabled? boolean\n---Executable to run pylint with. Enabling this will run pylint on unsaved files via stdin. Can slow down workflow. Only works with python3.\n---@field executable? string\n\n---@class _.lspconfig.settings.pylsp.Pylsp.Plugins.RopeAutoimport.CodeActions\n---Enable or disable autoimport code actions (e.g. for quick fixes).\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.pylsp.Pylsp.Plugins.RopeAutoimport.Completions\n---Enable or disable autoimport completions.\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.pylsp.Pylsp.Plugins.RopeAutoimport\n---@field code_actions? _.lspconfig.settings.pylsp.Pylsp.Plugins.RopeAutoimport.CodeActions\n---@field completions? _.lspconfig.settings.pylsp.Pylsp.Plugins.RopeAutoimport.Completions\n---Enable or disable autoimport. If false, neither completions nor code actions are enabled. If true, the respective features can be enabled or disabled individually.\n---@field enabled? boolean\n---Make the autoimport database memory only. Drastically increases startup time.\n---@field memory? boolean\n\n---@class _.lspconfig.settings.pylsp.Pylsp.Plugins.RopeCompletion\n---Resolve documentation and detail eagerly.\n---@field eager? boolean\n---Enable or disable the plugin.\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.pylsp.Pylsp.Plugins.Yapf\n---Enable or disable the plugin.\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.pylsp.Pylsp.Plugins\n---@field autopep8? _.lspconfig.settings.pylsp.Pylsp.Plugins.Autopep8\n---@field flake8? _.lspconfig.settings.pylsp.Pylsp.Plugins.Flake8\n---@field jedi? _.lspconfig.settings.pylsp.Pylsp.Plugins.Jedi\n---@field jedi_completion? _.lspconfig.settings.pylsp.Pylsp.Plugins.JediCompletion\n---@field jedi_definition? _.lspconfig.settings.pylsp.Pylsp.Plugins.JediDefinition\n---@field jedi_hover? _.lspconfig.settings.pylsp.Pylsp.Plugins.JediHover\n---@field jedi_references? _.lspconfig.settings.pylsp.Pylsp.Plugins.JediReferences\n---@field jedi_signature_help? _.lspconfig.settings.pylsp.Pylsp.Plugins.JediSignatureHelp\n---@field jedi_symbols? _.lspconfig.settings.pylsp.Pylsp.Plugins.JediSymbols\n---@field jedi_type_definition? _.lspconfig.settings.pylsp.Pylsp.Plugins.JediTypeDefinition\n---@field mccabe? _.lspconfig.settings.pylsp.Pylsp.Plugins.Mccabe\n---@field preload? _.lspconfig.settings.pylsp.Pylsp.Plugins.Preload\n---@field pycodestyle? _.lspconfig.settings.pylsp.Pylsp.Plugins.Pycodestyle\n---@field pydocstyle? _.lspconfig.settings.pylsp.Pylsp.Plugins.Pydocstyle\n---@field pyflakes? _.lspconfig.settings.pylsp.Pylsp.Plugins.Pyflakes\n---@field pylint? _.lspconfig.settings.pylsp.Pylsp.Plugins.Pylint\n---@field rope_autoimport? _.lspconfig.settings.pylsp.Pylsp.Plugins.RopeAutoimport\n---@field rope_completion? _.lspconfig.settings.pylsp.Pylsp.Plugins.RopeCompletion\n---@field yapf? _.lspconfig.settings.pylsp.Pylsp.Plugins.Yapf\n\n---@class _.lspconfig.settings.pylsp.Pylsp.Rope\n---Builtin and c-extension modules that are allowed to be imported and inspected by rope.\n---@field extensionModules? string\n---The name of the folder in which rope stores project configurations and data.  Pass `null` for not using such a folder at all.\n---@field ropeFolder? string[]\n\n---@class _.lspconfig.settings.pylsp.Pylsp.Signature\n---Formatter to use for reformatting signatures in docstrings.\n---\n---```lua\n---default = \"black\"\n---```\n---@field formatter? \"black\" | \"ruff\"\n---Include signature docstring.\n---\n---```lua\n---default = true\n---```\n---@field include_docstring? boolean\n---Maximum line length in signatures.\n---\n---```lua\n---default = 88\n---```\n---@field line_length? number\n\n---@class _.lspconfig.settings.pylsp.Pylsp\n---List of configuration sources to use.\n---\n---```lua\n---default = { \"pycodestyle\" }\n---```\n---@field configurationSources? string[]\n---@field plugins? _.lspconfig.settings.pylsp.Pylsp.Plugins\n---@field rope? _.lspconfig.settings.pylsp.Pylsp.Rope\n---@field signature? _.lspconfig.settings.pylsp.Pylsp.Signature\n\n---@class lspconfig.settings.pylsp\n---@field pylsp? _.lspconfig.settings.pylsp.Pylsp\n"
  },
  {
    "path": "lua/lspconfig/types/lsp/pyright.lua",
    "content": "---@meta\n\n---@class _.lspconfig.settings.pyright.Pyright\n---Disables type completion, definitions, and references.\n---@field disableLanguageServices? boolean\n---Disables the “Organize Imports” command.\n---@field disableOrganizeImports? boolean\n---Disables the use of pull diagnostics from VS Code.\n---@field disablePullDiagnostics? boolean\n---Disable hint diagnostics with special hints for grayed-out or strike-through text.\n---@field disableTaggedHints? boolean\n\n---Allows a user to override the severity levels for individual diagnostics. Use the rule name as a key and one of \"error\", \"warning\", \"information\", \"none\", `true` (alias for \"error\") or `false` (alias for \"none\") as value. The default value shown for each diagnostic is the default when \"python.analysis.typeCheckingMode\" is set to \"standard\". See [here](https://github.com/microsoft/pyright/blob/main/docs/configuration.md#diagnostic-rule-defaults) for defaults for each type checking mode (\"off\", \"basic\", \"standard\", and \"strict\").\n---@class _.lspconfig.settings.pyright.Python.Analysis.DiagnosticSeverityOverrides\n---Diagnostics for an attempt to instantiate an abstract or protocol class or use an abstract method.\n---\n---```lua\n---default = \"error\"\n---```\n---@field reportAbstractUsage? \"none\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for a type incompatibility for an argument to a call.\n---\n---```lua\n---default = \"error\"\n---```\n---@field reportArgumentType? \"none\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for 'assert' statement that will provably always assert. This can be indicative of a programming error.\n---\n---```lua\n---default = \"warning\"\n---```\n---@field reportAssertAlwaysTrue? \"none\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for a type incompatibility detected by a typing.assert_type call.\n---\n---```lua\n---default = \"error\"\n---```\n---@field reportAssertTypeFailure? \"none\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for type incompatibilities for assignments.\n---\n---```lua\n---default = \"error\"\n---```\n---@field reportAssignmentType? \"none\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for issues involving attribute accesses.\n---\n---```lua\n---default = \"error\"\n---```\n---@field reportAttributeAccessIssue? \"none\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for function calls within a default value initialization expression. Such calls can mask expensive operations that are performed at module initialization time.\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportCallInDefaultInitializer? \"none\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for issues involving call expressions and arguments.\n---\n---```lua\n---default = \"error\"\n---```\n---@field reportCallIssue? \"none\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for attempts to redefine variables whose names are all-caps with underscores and numerals.\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportConstantRedefinition? \"none\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for use of deprecated classes or functions.\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportDeprecated? \"none\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for an imported symbol or module that is imported more than once.\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportDuplicateImport? \"none\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for member accesses on functions.\n---\n---```lua\n---default = \"error\"\n---```\n---@field reportFunctionMemberAccess? \"none\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for general type inconsistencies, unsupported operations, argument/parameter mismatches, etc. Covers all of the basic type-checking rules not covered by other rules. Does not include syntax errors.\n---\n---```lua\n---default = \"error\"\n---```\n---@field reportGeneralTypeIssues? \"none\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for overridden methods that do not include an `@override` decorator.\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportImplicitOverride? \"none\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for two or more string literals that follow each other, indicating an implicit concatenation. This is considered a bad practice and often masks bugs such as missing commas.\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportImplicitStringConcatenation? \"none\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for cyclical import chains. These are not errors in Python, but they do slow down type analysis and often hint at architectural layering issues. Generally, they should be avoided.\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportImportCycles? \"none\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for methods that override a method of the same name in a base class in an incompatible manner (wrong number of parameters, incompatible parameter types, or incompatible return type).\n---\n---```lua\n---default = \"error\"\n---```\n---@field reportIncompatibleMethodOverride? \"none\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for overrides in subclasses that redefine a variable in an incompatible way.\n---\n---```lua\n---default = \"error\"\n---```\n---@field reportIncompatibleVariableOverride? \"none\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for the use of a module-level “__getattr__” function, indicating that the stub is incomplete.\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportIncompleteStub? \"none\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for __init__ and __new__ methods whose signatures are inconsistent.\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportInconsistentConstructor? \"none\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for inconsistencies between function overload signatures and implementation.\n---\n---```lua\n---default = \"error\"\n---```\n---@field reportInconsistentOverload? \"none\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics related to index operations and expressions.\n---\n---```lua\n---default = \"error\"\n---```\n---@field reportIndexIssue? \"none\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for invalid escape sequences used within string literals. The Python specification indicates that such sequences will generate a syntax error in future versions.\n---\n---```lua\n---default = \"warning\"\n---```\n---@field reportInvalidStringEscapeSequence? \"none\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for type stub statements that do not conform to PEP 484.\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportInvalidStubStatement? \"none\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for invalid type argument usage.\n---\n---```lua\n---default = \"error\"\n---```\n---@field reportInvalidTypeArguments? \"none\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for type expression that uses an invalid form.\n---\n---```lua\n---default = \"error\"\n---```\n---@field reportInvalidTypeForm? \"none\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for improper use of type variables in a function signature.\n---\n---```lua\n---default = \"warning\"\n---```\n---@field reportInvalidTypeVarUse? \"none\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for 'match' statements that do not exhaustively match all possible values.\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportMatchNotExhaustive? \"none\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for imports that have no corresponding imported python file or type stub file.\n---\n---```lua\n---default = \"error\"\n---```\n---@field reportMissingImports? \"none\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for imports that have no corresponding source file. This happens when a type stub is found, but the module source file was not found, indicating that the code may fail at runtime when using this execution environment. Type checking will be done using the type stub.\n---\n---```lua\n---default = \"warning\"\n---```\n---@field reportMissingModuleSource? \"none\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for parameters that are missing a type annotation.\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportMissingParameterType? \"none\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for missing call to parent class for inherited `__init__` methods.\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportMissingSuperCall? \"none\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for generic class reference with missing type arguments.\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportMissingTypeArgument? \"none\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for imports that have no corresponding type stub file (either a typeshed file or a custom type stub). The type checker requires type stubs to do its best job at analysis.\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportMissingTypeStubs? \"none\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for an overloaded function or method with a missing implementation.\n---\n---```lua\n---default = \"error\"\n---```\n---@field reportNoOverloadImplementation? \"none\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for related to unary or binary operators.\n---\n---```lua\n---default = \"error\"\n---```\n---@field reportOperatorIssue? \"none\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for an attempt to call a variable with an Optional type.\n---\n---```lua\n---default = \"error\"\n---```\n---@field reportOptionalCall? \"none\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for an attempt to use an Optional type as a context manager (as a parameter to a with statement).\n---\n---```lua\n---default = \"error\"\n---```\n---@field reportOptionalContextManager? \"none\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for an attempt to use an Optional type as an iterable value (e.g. within a for statement).\n---\n---```lua\n---default = \"error\"\n---```\n---@field reportOptionalIterable? \"none\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for an attempt to access a member of a variable with an Optional type.\n---\n---```lua\n---default = \"error\"\n---```\n---@field reportOptionalMemberAccess? \"none\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for an attempt to use an Optional type as an operand to a binary or unary operator (like '+', '<<', '~').\n---\n---```lua\n---default = \"error\"\n---```\n---@field reportOptionalOperand? \"none\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for an attempt to subscript (index) a variable with an Optional type.\n---\n---```lua\n---default = \"error\"\n---```\n---@field reportOptionalSubscript? \"none\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for function overloads that overlap in signature and obscure each other or have incompatible return types.\n---\n---```lua\n---default = \"error\"\n---```\n---@field reportOverlappingOverload? \"none\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for the use of variables that may be unbound on some code paths.\n---\n---```lua\n---default = \"error\"\n---```\n---@field reportPossiblyUnboundVariable? \"none\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for incorrect usage of symbol imported from a \"py.typed\" module that is not re-exported from that module.\n---\n---```lua\n---default = \"error\"\n---```\n---@field reportPrivateImportUsage? \"none\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for incorrect usage of private or protected variables or functions. Protected class members begin with a single underscore _ and can be accessed only by subclasses. Private class members begin with a double underscore but do not end in a double underscore and can be accessed only within the declaring class. Variables and functions declared outside of a class are considered private if their names start with either a single or double underscore, and they cannot be accessed outside of the declaring module.\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportPrivateUsage? \"none\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for property whose setter and getter have mismatched types.\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportPropertyTypeMismatch? \"none\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for an attempt to declare the type of a symbol multiple times.\n---\n---```lua\n---default = \"error\"\n---```\n---@field reportRedeclaration? \"none\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics related to function return type compatibility.\n---\n---```lua\n---default = \"error\"\n---```\n---@field reportReturnType? \"none\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for a missing or misnamed “self” parameter in instance methods and “cls” parameter in class methods. Instance methods in metaclasses (classes that derive from “type”) are allowed to use “cls” for instance methods.\n---\n---```lua\n---default = \"warning\"\n---```\n---@field reportSelfClsParameterName? \"none\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for usage of deprecated type comments.\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportTypeCommentUsage? \"none\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for an attempt to access a non-required key within a TypedDict without a check for its presence.\n---\n---```lua\n---default = \"error\"\n---```\n---@field reportTypedDictNotRequiredAccess? \"none\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for the use of unbound variables.\n---\n---```lua\n---default = \"error\"\n---```\n---@field reportUnboundVariable? \"none\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for undefined variables.\n---\n---```lua\n---default = \"error\"\n---```\n---@field reportUndefinedVariable? \"none\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for the use of an unhashable object in a container that requires hashability.\n---\n---```lua\n---default = \"error\"\n---```\n---@field reportUnhashable? \"none\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for instance variables that are not declared or initialized within class body or `__init__` method.\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportUninitializedInstanceVariable? \"none\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for call arguments for functions or methods that have an unknown type.\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportUnknownArgumentType? \"none\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for input or return parameters for lambdas that have an unknown type.\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportUnknownLambdaType? \"none\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for class or instance variables that have an unknown type.\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportUnknownMemberType? \"none\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for input or return parameters for functions or methods that have an unknown type.\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportUnknownParameterType? \"none\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for variables that have an unknown type..\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportUnknownVariableType? \"none\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for 'cast' calls that are statically determined to be unnecessary. Such calls are sometimes indicative of a programming error.\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportUnnecessaryCast? \"none\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for '==' and '!=' comparisons that are statically determined to be unnecessary. Such calls are sometimes indicative of a programming error.\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportUnnecessaryComparison? \"none\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for 'in' operation that is statically determined to be unnecessary. Such operations are sometimes indicative of a programming error.\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportUnnecessaryContains? \"none\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for 'isinstance' or 'issubclass' calls where the result is statically determined to be always (or never) true. Such calls are often indicative of a programming error.\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportUnnecessaryIsInstance? \"none\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for '# type: ignore' comments that have no effect.\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportUnnecessaryTypeIgnoreComment? \"none\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for code that is determined by type analysis to be unreachable.\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportUnreachable? \"none\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for unsupported operations performed on __all__.\n---\n---```lua\n---default = \"warning\"\n---```\n---@field reportUnsupportedDunderAll? \"none\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for base classes whose type cannot be determined statically. These obscure the class type, defeating many type analysis features.\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportUntypedBaseClass? \"none\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for class decorators that have no type annotations. These obscure the class type, defeating many type analysis features.\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportUntypedClassDecorator? \"none\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for function decorators that have no type annotations. These obscure the function type, defeating many type analysis features.\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportUntypedFunctionDecorator? \"none\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics when “namedtuple” is used rather than “NamedTuple”. The former contains no type information, whereas the latter does.\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportUntypedNamedTuple? \"none\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for call expressions whose results are not consumed and are not None.\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportUnusedCallResult? \"none\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for a class with a private name (starting with an underscore) that is not accessed.\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportUnusedClass? \"none\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for call expressions that return a Coroutine and whose results are not consumed.\n---\n---```lua\n---default = \"error\"\n---```\n---@field reportUnusedCoroutine? \"none\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for unreachable except clause.\n---\n---```lua\n---default = \"error\"\n---```\n---@field reportUnusedExcept? \"none\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for simple expressions whose value is not used in any way.\n---\n---```lua\n---default = \"warning\"\n---```\n---@field reportUnusedExpression? \"none\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for a function or method with a private name (starting with an underscore) that is not accessed.\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportUnusedFunction? \"none\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for an imported symbol that is not referenced within that file.\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportUnusedImport? \"none\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for a variable that is not accessed.\n---\n---```lua\n---default = \"none\"\n---```\n---@field reportUnusedVariable? \"none\" | \"information\" | \"warning\" | \"error\" | true | false\n---Diagnostics for an wildcard import from an external library.\n---\n---```lua\n---default = \"warning\"\n---```\n---@field reportWildcardImportFromLibrary? \"none\" | \"information\" | \"warning\" | \"error\" | true | false\n\n---@class _.lspconfig.settings.pyright.Python.Analysis\n---Offer auto-import completions.\n---\n---```lua\n---default = true\n---```\n---@field autoImportCompletions? boolean\n---Automatically add common search paths like 'src'?\n---\n---```lua\n---default = true\n---```\n---@field autoSearchPaths? boolean\n---```lua\n---default = \"openFilesOnly\"\n---```\n---@field diagnosticMode? \"openFilesOnly\" | \"workspace\"\n---Allows a user to override the severity levels for individual diagnostics. Use the rule name as a key and one of \"error\", \"warning\", \"information\", \"none\", `true` (alias for \"error\") or `false` (alias for \"none\") as value. The default value shown for each diagnostic is the default when \"python.analysis.typeCheckingMode\" is set to \"standard\". See [here](https://github.com/microsoft/pyright/blob/main/docs/configuration.md#diagnostic-rule-defaults) for defaults for each type checking mode (\"off\", \"basic\", \"standard\", and \"strict\").\n---@field diagnosticSeverityOverrides? _.lspconfig.settings.pyright.Python.Analysis.DiagnosticSeverityOverrides\n---Paths of directories or files that should not be included. These override the include directories, allowing specific subdirectories to be excluded. Note that files in the exclude paths may still be included in the analysis if they are referenced (imported) by source files that are not excluded. Paths may contain wildcard characters ** (a directory or multiple levels of directories), * (a sequence of zero or more characters), or ? (a single character). If no exclude paths are specified, pyright automatically excludes the following: `**/node_modules`, `**/__pycache__`, `.git` and any virtual environment directories.\n---\n---```lua\n---default = {}\n---```\n---@field exclude? string[]\n---Additional import search resolution paths\n---\n---```lua\n---default = {}\n---```\n---@field extraPaths? string[]\n---Paths of directories or files whose diagnostic output (errors and warnings) should be suppressed even if they are an included file or within the transitive closure of an included file. Paths may contain wildcard characters ** (a directory or multiple levels of directories), * (a sequence of zero or more characters), or ? (a single character). If no value is provided, the value of python.linting.ignorePatterns (if set) will be used.\n---\n---```lua\n---default = {}\n---```\n---@field ignore? string[]\n---Paths of directories or files that should be included. If no paths are specified, pyright defaults to the workspace root directory. Paths may contain wildcard characters ** (a directory or multiple levels of directories), * (a sequence of zero or more characters), or ? (a single character).\n---\n---```lua\n---default = {}\n---```\n---@field include? string[]\n---Specifies the level of logging for the Output panel\n---\n---```lua\n---default = \"Information\"\n---```\n---@field logLevel? \"Error\" | \"Warning\" | \"Information\" | \"Trace\"\n---Path to directory containing custom type stub files.\n---\n---```lua\n---default = \"typings\"\n---```\n---@field stubPath? string\n---Defines the default rule set for type checking.\n---\n---```lua\n---default = \"standard\"\n---```\n---@field typeCheckingMode? \"off\" | \"basic\" | \"standard\" | \"strict\"\n---Paths to look for typeshed modules.\n---\n---```lua\n---default = {}\n---```\n---@field typeshedPaths? string[]\n---Use library implementations to extract type information when type stub is not present.\n---\n---```lua\n---default = true\n---```\n---@field useLibraryCodeForTypes? boolean\n\n---@class _.lspconfig.settings.pyright.Python\n---@field analysis? _.lspconfig.settings.pyright.Python.Analysis\n---Path to Python, you can use a custom version of Python.\n---\n---```lua\n---default = \"python\"\n---```\n---@field pythonPath? string\n---Path to folder with a list of Virtual Environments.\n---\n---```lua\n---default = \"\"\n---```\n---@field venvPath? string\n\n---@class lspconfig.settings.pyright\n---@field pyright? _.lspconfig.settings.pyright.Pyright\n---@field python? _.lspconfig.settings.pyright.Python\n"
  },
  {
    "path": "lua/lspconfig/types/lsp/r_language_server.lua",
    "content": "---@meta\n\n---@class _.lspconfig.settings.r_language_server.R.Lsp\n---The command line arguments to use when launching R Language Server\n---\n---```lua\n---default = {}\n---```\n---@field args? any[]\n---Debug R Language Server\n---@field debug? boolean\n---Enable Diagnostics\n---\n---```lua\n---default = true\n---```\n---@field diagnostics? boolean\n---Override default LANG environment variable\n---\n---```lua\n---default = \"\"\n---```\n---@field lang? string\n---Path to R binary for launching Language Server\n---\n---```lua\n---default = \"\"\n---```\n---@field path? string\n---Use STDIO connection instead of TCP. (Unix/macOS users only)\n---@field use_stdio? boolean\n\n---@class _.lspconfig.settings.r_language_server.R.Rpath\n---Path to an R executable for Linux. Must be \"vanilla\" R, not radian etc.!\n---\n---```lua\n---default = \"\"\n---```\n---@field linux? string\n---Path to an R executable for macOS. Must be \"vanilla\" R, not radian etc.!\n---\n---```lua\n---default = \"\"\n---```\n---@field mac? string\n---Path to an R executable for Windows. Must be \"vanilla\" R, not radian etc.!\n---\n---```lua\n---default = \"\"\n---```\n---@field windows? string\n\n---@class _.lspconfig.settings.r_language_server.R\n---@field lsp? _.lspconfig.settings.r_language_server.R.Lsp\n---@field rpath? _.lspconfig.settings.r_language_server.R.Rpath\n\n---@class lspconfig.settings.r_language_server\n---@field r? _.lspconfig.settings.r_language_server.R\n"
  },
  {
    "path": "lua/lspconfig/types/lsp/rescriptls.lua",
    "content": "---@meta\n\n---@class _.lspconfig.settings.rescriptls.Rescript.Settings.Cache.ProjectConfig\n---Enable project config caching. Can speed up latency dramatically.\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n\n---@class _.lspconfig.settings.rescriptls.Rescript.Settings.Cache\n---@field projectConfig? _.lspconfig.settings.rescriptls.Rescript.Settings.Cache.ProjectConfig\n\n---@class _.lspconfig.settings.rescriptls.Rescript.Settings.CompileStatus\n---Show compile status in the status bar (compiling/errors/warnings/success).\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n\n---@class _.lspconfig.settings.rescriptls.Rescript.Settings.IncrementalTypechecking\n---(beta/experimental) Enable incremental type checking across files, so that unsaved file A gets access to unsaved file B.\n---@field acrossFiles? boolean\n---Enable incremental type checking.\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n\n---@class _.lspconfig.settings.rescriptls.Rescript.Settings.InlayHints\n---Enable (experimental) inlay hints.\n---@field enable? boolean\n---Maximum length of character for inlay hints. Set to null to have an unlimited length. Inlay hints that exceed the maximum length will not be shown.\n---\n---```lua\n---default = 25\n---```\n---@field maxLength? integer\n\n---@class _.lspconfig.settings.rescriptls.Rescript.Settings.SignatureHelp\n---Enable signature help for function calls.\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n---Enable signature help for variant constructor payloads.\n---\n---```lua\n---default = true\n---```\n---@field forConstructorPayloads? boolean\n\n---@class _.lspconfig.settings.rescriptls.Rescript.Settings\n---Whether you want the extension to prompt for autostarting a ReScript build if a project is opened with no build running.\n---\n---```lua\n---default = true\n---```\n---@field askToStartBuild? boolean\n---Path to the directory where cross-platform ReScript binaries are. You can use it if you haven't or don't want to use the installed ReScript from node_modules in your project.\n---@field binaryPath? string\n---@field cache? _.lspconfig.settings.rescriptls.Rescript.Settings.Cache\n---Enable (experimental) code lens for function definitions.\n---@field codeLens? boolean\n---@field compileStatus? _.lspconfig.settings.rescriptls.Rescript.Settings.CompileStatus\n---@field incrementalTypechecking? _.lspconfig.settings.rescriptls.Rescript.Settings.IncrementalTypechecking\n---@field inlayHints? _.lspconfig.settings.rescriptls.Rescript.Settings.InlayHints\n---Verbosity of ReScript language server logs sent to the Output channel.\n---\n---```lua\n---default = \"info\"\n---```\n---@field logLevel? \"error\" | \"warn\" | \"info\" | \"log\"\n---Path to the directory where platform-specific ReScript binaries are. You can use it if you haven't or don't want to use the installed ReScript from node_modules in your project.\n---@field platformPath? string\n---Optional path to the directory containing the @rescript/runtime package. Set this if your tooling is unable to automatically locate the package in your project.\n---@field runtimePath? string\n---@field signatureHelp? _.lspconfig.settings.rescriptls.Rescript.Settings.SignatureHelp\n\n---@class _.lspconfig.settings.rescriptls.Rescript\n---@field settings? _.lspconfig.settings.rescriptls.Rescript.Settings\n\n---@class lspconfig.settings.rescriptls\n---@field rescript? _.lspconfig.settings.rescriptls.Rescript\n"
  },
  {
    "path": "lua/lspconfig/types/lsp/rls.lua",
    "content": "---@meta\n\n---@class _.lspconfig.settings.rls.Rust\n---Enable all Cargo features.\n---@field all_features? boolean\n---Checks the project as if you were running cargo check --all-targets (I.e., check all targets and integration tests too).\n---\n---```lua\n---default = true\n---```\n---@field all_targets? boolean\n---Specify to run analysis as if running `cargo check --bin <name>`. Use `null` to auto-detect. (unstable)\n---@field build_bin? string\n---EXPERIMENTAL (requires `unstable_features`)\n---If set, executes a given program responsible for rebuilding save-analysis to be loaded by the RLS. The program given should output a list of resulting .json files on stdout. \n---Implies `rust.build_on_save`: true.\n---@field build_command? string\n---Specify to run analysis as if running `cargo check --lib`. Use `null` to auto-detect. (unstable)\n---@field build_lib? boolean\n---Only index the project when a file is saved and not on change.\n---@field build_on_save? boolean\n---Build cfg(test) code. (unstable)\n---@field cfg_test? boolean\n---Clear the RUST_LOG environment variable before running rustc or cargo.\n---\n---```lua\n---default = true\n---```\n---@field clear_env_rust_log? boolean\n---Controls eagerness of clippy diagnostics when available. Valid values are (case-insensitive):\n--- - \"off\": Disable clippy lints.\n--- - \"on\": Display the same diagnostics as command-line clippy invoked with no arguments (`clippy::all` unless overridden).\n--- - \"opt-in\": Only display the lints explicitly enabled in the code. Start by adding `#![warn(clippy::all)]` to the root of each crate you want linted.\n---You need to install clippy via rustup if you haven't already.\n---\n---```lua\n---default = \"opt-in\"\n---```\n---@field clippy_preference? \"on\" | \"opt-in\" | \"off\"\n---Overrides the default list of packages for which analysis is skipped.\n---Available since RLS 1.38\n---\n---```lua\n---default = { \"cocoa\", \"gleam\", \"glium\", \"idna\", \"libc\", \"openssl\", \"rustc_serialize\", \"serde\", \"serde_json\", \"typenum\", \"unicode_normalization\", \"unicode_segmentation\", \"winapi\" }\n---```\n---@field crate_blacklist? any[]\n---A list of Cargo features to enable.\n---\n---```lua\n---default = {}\n---```\n---@field features? any[]\n---Instructs cargo to enable full documentation extraction during save-analysis while building the crate.\n---@field full_docs? boolean\n---Whether to surpress the deprecation notification on start up.\n---@field ignore_deprecation_warning? boolean\n---Number of Cargo jobs to be run in parallel.\n---@field jobs? number\n---Do not enable default Cargo features.\n---@field no_default_features? boolean\n---Enables code completion using racer.\n---\n---```lua\n---default = true\n---```\n---@field racer_completion? boolean\n---Settings passed down to rust-analyzer server\n---\n---```lua\n---default = {}\n---```\n---@field [\"rust-analyzer\"]? table\n---Flags added to RUSTFLAGS.\n---@field rustflags? string\n---When specified, RLS will use the Rustfmt pointed at the path instead of the bundled one\n---@field rustfmt_path? string\n---Show additional context in hover tooltips when available. This is often the type local variable declaration.\n---\n---```lua\n---default = true\n---```\n---@field show_hover_context? boolean\n---Show warnings.\n---\n---```lua\n---default = true\n---```\n---@field show_warnings? boolean\n-----sysroot\n---@field sysroot? string\n-----target\n---@field target? string\n---When specified, it places the generated analysis files at the specified target directory. By default it is placed target/rls directory.\n---@field target_dir? string\n---Enable unstable features.\n---@field unstable_features? boolean\n---Time in milliseconds between receiving a change notification and starting build.\n---@field wait_to_build? number\n\n---@class _.lspconfig.settings.rls.RustClient.Trace\n---Traces the communication between VS Code and the Rust language server.\n---\n---```lua\n---default = \"off\"\n---```\n---@field server? \"off\" | \"messages\" | \"verbose\"\n\n---@class _.lspconfig.settings.rls.RustClient\n---Start RLS automatically when opening a file or project.\n---\n---```lua\n---default = true\n---```\n---@field autoStartRls? boolean\n---Rust channel to invoke rustup with. Ignored if rustup is disabled. By default, uses the same channel as your currently open project.\n---\n---```lua\n---default = \"default\"\n---```\n---@field channel? string|\"default\" | \"stable\" | \"beta\" | \"nightly\"\n---Disable usage of rustup and use rustc/rls/rust-analyzer from PATH.\n---@field disableRustup? boolean\n---Allow multiple projects in the same folder, along with removing the constraint that the cargo.toml must be located at the root. (Experimental: might not work for certain setups)\n---@field enableMultiProjectSetup? boolean\n---The underlying LSP server used to provide IDE support for Rust projects.\n---\n---```lua\n---default = \"rls\"\n---```\n---@field engine? \"rls\" | \"rust-analyzer\"\n---When set to true, RLS stderr is logged to a file at workspace root level. Requires reloading extension after change.\n---@field logToFile? boolean\n---Specifies message severity on which the output channel will be revealed. Requires reloading extension after change.\n---\n---```lua\n---default = \"never\"\n---```\n---@field revealOutputChannelOn? \"info\" | \"warn\" | \"error\" | \"never\"\n---Override RLS path. Only required for RLS developers. If you set this and use rustup, you should also set `rust-client.channel` to ensure your RLS sees the right libraries. If you don't use rustup, make sure to set `rust-client.disableRustup`.\n---@field rlsPath? string\n---Path to rustup executable. Ignored if rustup is disabled.\n---\n---```lua\n---default = \"rustup\"\n---```\n---@field rustupPath? string\n---@field trace? _.lspconfig.settings.rls.RustClient.Trace\n---Update the Rust toolchain and its required components whenever the extension starts up.\n---@field updateOnStartup? boolean\n\n---@class lspconfig.settings.rls\n---@field rust? _.lspconfig.settings.rls.Rust\n---@field [\"rust-client\"]? _.lspconfig.settings.rls.RustClient\n"
  },
  {
    "path": "lua/lspconfig/types/lsp/rome.lua",
    "content": "---@meta\n\n---@class _.lspconfig.settings.rome.Rome\n---The rome lsp server executable. If the path is relative, the workspace folder will be used as base path\n---@field lspBin? string\n---Enable/Disable Rome handling renames in the workspace. (Experimental)\n---@field rename? boolean\n---Require a Rome configuration file to enable syntax errors, formatting and linting. Requires Rome 12 or newer.\n---\n---```lua\n---default = true\n---```\n---@field requireConfiguration? boolean\n\n---@class _.lspconfig.settings.rome.RomeLsp.Trace\n---Traces the communication between VS Code and the language server.\n---\n---```lua\n---default = \"off\"\n---```\n---@field server? \"off\" | \"messages\" | \"verbose\"\n\n---@class _.lspconfig.settings.rome.RomeLsp\n---@field trace? _.lspconfig.settings.rome.RomeLsp.Trace\n\n---@class lspconfig.settings.rome\n---@field rome? _.lspconfig.settings.rome.Rome\n---@field rome_lsp? _.lspconfig.settings.rome.RomeLsp\n"
  },
  {
    "path": "lua/lspconfig/types/lsp/ruff_lsp.lua",
    "content": "---@meta\n\n---Whether to display Quick Fix actions to disable rules via `noqa` suppression comments.\n---\n---```lua\n---default = {\n---  enable = true\n---}\n---```\n---@class _.lspconfig.settings.ruff_lsp.Ruff.CodeAction.DisableRuleComment\n---Enable the Quick Fix.\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n\n---Whether to display Quick Fix actions to autofix violations.\n---\n---```lua\n---default = {\n---  enable = true\n---}\n---```\n---@class _.lspconfig.settings.ruff_lsp.Ruff.CodeAction.FixViolation\n---Enable the Quick Fix.\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n\n---@class _.lspconfig.settings.ruff_lsp.Ruff.CodeAction\n---Whether to display Quick Fix actions to disable rules via `noqa` suppression comments.\n---\n---```lua\n---default = {\n---  enable = true\n---}\n---```\n---@field disableRuleComment? _.lspconfig.settings.ruff_lsp.Ruff.CodeAction.DisableRuleComment\n---Whether to display Quick Fix actions to autofix violations.\n---\n---```lua\n---default = {\n---  enable = true\n---}\n---```\n---@field fixViolation? _.lspconfig.settings.ruff_lsp.Ruff.CodeAction.FixViolation\n\n---@class _.lspconfig.settings.ruff_lsp.Ruff.Format\n---Additional command-line arguments to pass to `ruff format`, e.g., `\"args\": [\"--config=/path/to/pyproject.toml\"]`. Supports a subset of Ruff's command-line arguments, ignoring those that are required to operate the LSP, like `--force-exclude` and `--verbose`.\n---\n---**This setting is not supported by the native server.**\n---\n---```lua\n---default = {}\n---```\n---@field args? string[]\n---The backend to use for formatting.\n---\n---```lua\n---default = \"internal\"\n---```\n---@field backend? \"internal\" | \"uv\"\n---Enable [preview mode](https://docs.astral.sh/ruff/settings/#format_preview) for the formatter; enables unstable formatting.\n---\n---**This setting is used only by the native server.**\n---@field preview? boolean\n\n---@class _.lspconfig.settings.ruff_lsp.Ruff.Lint\n---Additional command-line arguments to pass to `ruff check`, e.g., `\"args\": [\"--config=/path/to/pyproject.toml\"]`. Supports a subset of Ruff's command-line arguments, ignoring those that are required to operate the LSP, like `--force-exclude` and `--verbose`.\n---\n---**This setting is not supported by the native server.**\n---\n---```lua\n---default = {}\n---```\n---@field args? string[]\n---Whether to enable linting. Set to `false` to use Ruff exclusively as a formatter.\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n---Enable additional rule codes on top of existing configuration, instead of overriding it. Use `ALL` to enable all rules.\n---\n---**This setting is used only by the native server.**\n---@field extendSelect? string[]\n---Set rule codes to disable. See [the documentation](https://docs.astral.sh/ruff/settings/#lint_ignore) for more details.\n---\n---**This setting is used only by the native server.**\n---@field ignore? string[]\n---Enable [preview mode](https://docs.astral.sh/ruff/settings/#lint_preview) for the linter; enables unstable rules and fixes.\n---\n---**This setting is used only by the native server.**\n---@field preview? boolean\n---Run Ruff on every keystroke (`onType`) or on save (`onSave`).\n---\n---**This setting is not supported by the native server.**\n---\n---```lua\n---default = \"onType\"\n---```\n---@field run? \"onType\" | \"onSave\"\n---Set rule codes to enable. Use `ALL` to enable all rules. See [the documentation](https://docs.astral.sh/ruff/settings/#lint_select) for more details.\n---\n---**This setting is used only by the native server.**\n---@field select? string[]\n\n---@class _.lspconfig.settings.ruff_lsp.Ruff.Trace\n---Traces the communication between VSCode and the ruff-lsp.\n---\n---```lua\n---default = \"off\"\n---```\n---@field server? \"off\" | \"messages\" | \"verbose\"\n\n---@class _.lspconfig.settings.ruff_lsp.Ruff\n---Additional command-line arguments to pass to `ruff check`, e.g., `\"args\": [\"--config=/path/to/pyproject.toml\"]`. Supports a subset of Ruff's command-line arguments, ignoring those that are required to operate the LSP, like `--force-exclude` and `--verbose`.\n---\n---**This setting is not supported by the native server.**\n---\n---```lua\n---default = {}\n---```\n---@field args? string[]\n---@field codeAction? _.lspconfig.settings.ruff_lsp.Ruff.CodeAction\n---Configuration overrides for Ruff. See [the documentation](https://docs.astral.sh/ruff/editors/settings/#configuration) for more details.\n---\n---**This setting is used only by the native server.**\n---@field configuration? string|table\n---The preferred method of resolving configuration in the editor with local configuration from `.toml` files.\n---\n---**This setting is used only by the native server.**\n---\n---```lua\n---default = \"editorFirst\"\n---```\n---@field configurationPreference? \"editorFirst\" | \"filesystemFirst\" | \"editorOnly\"\n---Whether to enable the Ruff extension.\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n---Controls whether Ruff registers as capable of code formatting.\n---@field enableExperimentalFormatter? boolean\n---Set paths for the linter and formatter to ignore. See [the documentation](https://docs.astral.sh/ruff/settings/#lint_exclude) for more details.\n---\n---**This setting is used only by the native server.**\n---@field exclude? string[]\n---Whether to register Ruff as capable of handling `source.fixAll` actions.\n---\n---```lua\n---default = true\n---```\n---@field fixAll? boolean\n---@field format? _.lspconfig.settings.ruff_lsp.Ruff.Format\n---Whether to ignore files that are inferred to be part of the Python standard library.\n---\n---```lua\n---default = true\n---```\n---@field ignoreStandardLibrary? boolean\n---Strategy for loading the `ruff` executable. `fromEnvironment` picks up Ruff from the environment, falling back to the bundled version if needed. `useBundled` uses the version bundled with the extension.\n---\n---```lua\n---default = \"fromEnvironment\"\n---```\n---@field importStrategy? \"fromEnvironment\" | \"useBundled\"\n---Path to a Python interpreter to use to find the `ruff` executable.\n---\n---```lua\n---default = {}\n---```\n---@field interpreter? string[]\n---Set the [line length](https://docs.astral.sh/ruff/settings/#line-length) used by the formatter and linter. Must be greater than 0 and less than or equal to 320.\n---\n---**This setting is used only by the native server.**\n---@field lineLength? integer\n---@field lint? _.lspconfig.settings.ruff_lsp.Ruff.Lint\n---Path to the log file for the language server.\n---\n---**This setting is used only by the native server.**\n---@field logFile? string\n---Controls the log level of the language server.\n---\n---**This setting is used only by the native server.**\n---@field logLevel? \"error\" | \"warning\" | \"info\" | \"debug\" | \"trace\"\n---Whether to use the native language server, [`ruff-lsp`](https://github.com/astral-sh/ruff-lsp) or automatically decide between the two based on the Ruff version and extension settings.\n---\n---```lua\n---default = \"auto\"\n---```\n---@field nativeServer? \"on\" | \"off\" | \"auto\" | true | false\n---Whether to register Ruff as capable of handling `source.organizeImports` actions.\n---\n---```lua\n---default = true\n---```\n---@field organizeImports? boolean\n---Path to a custom `ruff` executable, e.g., `[\"/path/to/ruff\"]`.\n---\n---```lua\n---default = {}\n---```\n---@field path? string[]\n---Run Ruff on every keystroke (`onType`) or on save (`onSave`).\n---\n---**This setting is not supported by the native server.**\n---\n---```lua\n---default = \"onType\"\n---```\n---@field run? \"onType\" | \"onSave\"\n---Controls when notifications are shown by this extension.\n---\n---```lua\n---default = \"off\"\n---```\n---@field showNotifications? \"off\" | \"onError\" | \"onWarning\" | \"always\"\n---Whether to show syntax error diagnostics.\n---\n---```lua\n---default = true\n---```\n---@field showSyntaxErrors? boolean\n---@field trace? _.lspconfig.settings.ruff_lsp.Ruff.Trace\n\n---@class lspconfig.settings.ruff_lsp\n---@field ruff? _.lspconfig.settings.ruff_lsp.Ruff\n"
  },
  {
    "path": "lua/lspconfig/types/lsp/rust_analyzer.lua",
    "content": "---@meta\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.Assist.TermSearch\n---Enable borrow checking for term search code assists. If set to false, also there will be\n---more suggestions, but some of them may not borrow-check.\n---\n---```lua\n---default = true\n---```\n---@field borrowcheck? boolean\n---Term search fuel in \"units of work\" for assists (Defaults to 1800).\n---\n---```lua\n---default = 1800\n---```\n---@field fuel? integer\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.Assist\n---Insert #[must_use] when generating `as_` methods for enum variants.\n---@field emitMustUse? boolean\n---Placeholder expression to use for missing expressions in assists.\n---\n---```lua\n---default = \"todo\"\n---```\n---@field expressionFillDefault? \"todo\" | \"default\"\n---Prefer to use `Self` over the type name when inserting a type (e.g. in \"fill match arms\" assist).\n---@field preferSelf? boolean\n---@field termSearch? _.lspconfig.settings.rust_analyzer.RustAnalyzer.Assist.TermSearch\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.CachePriming\n---Warm up caches on project load.\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n---How many worker threads to handle priming caches. The default `0` means to pick\n---automatically.\n---\n---```lua\n---default = \"physical\"\n---```\n---@field numThreads? number|\"physical\" | \"logical\"\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.Cargo.BuildScripts\n---Run build scripts (`build.rs`) for more precise code analysis.\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n---Specifies the invocation strategy to use when running the build scripts command.\n---If `per_workspace` is set, the command will be executed for each Rust workspace with the\n---workspace as the working directory.\n---If `once` is set, the command will be executed once with the opened project as the\n---working directory.\n---This config only has an effect when `#rust-analyzer.cargo.buildScripts.overrideCommand#`\n---is set.\n---\n---```lua\n---default = \"per_workspace\"\n---```\n---@field invocationStrategy? \"per_workspace\" | \"once\"\n---Override the command rust-analyzer uses to run build scripts and\n---build procedural macros. The command is required to output json\n---and should therefore include `--message-format=json` or a similar\n---option.\n---\n---If there are multiple linked projects/workspaces, this command is invoked for\n---each of them, with the working directory being the workspace root\n---(i.e., the folder containing the `Cargo.toml`). This can be overwritten\n---by changing `#rust-analyzer.cargo.buildScripts.invocationStrategy#`.\n---\n---By default, a cargo invocation will be constructed for the configured\n---targets and features, with the following base command line:\n---\n---```bash\n---cargo check --quiet --workspace --message-format=json --all-targets --keep-going\n---```\n---\n---Note: The option must be specified as an array of command line arguments, with\n---the first argument being the name of the command to run.\n---@field overrideCommand? string[]\n---Rerun proc-macros building/build-scripts running when proc-macro\n---or build-script sources change and are saved.\n---\n---```lua\n---default = true\n---```\n---@field rebuildOnSave? boolean\n---Use `RUSTC_WRAPPER=rust-analyzer` when running build scripts to\n---avoid checking unnecessary things.\n---\n---```lua\n---default = true\n---```\n---@field useRustcWrapper? boolean\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.Cargo\n---Pass `--all-targets` to cargo invocation.\n---\n---```lua\n---default = true\n---```\n---@field allTargets? boolean\n---Automatically refresh project info via `cargo metadata` on\n---`Cargo.toml` or `.cargo/config.toml` changes.\n---\n---```lua\n---default = true\n---```\n---@field autoreload? boolean\n---@field buildScripts? _.lspconfig.settings.rust_analyzer.RustAnalyzer.Cargo.BuildScripts\n---List of cfg options to enable with the given values.\n---\n---To enable a name without a value, use `\"key\"`.\n---To enable a name with a value, use `\"key=value\"`.\n---To disable, prefix the entry with a `!`.\n---\n---```lua\n---default = { \"debug_assertions\", \"miri\" }\n---```\n---@field cfgs? string[]\n---Extra arguments that are passed to every cargo invocation.\n---\n---```lua\n---default = {}\n---```\n---@field extraArgs? string[]\n---Extra environment variables that will be set when running cargo, rustc\n---or other commands within the workspace. Useful for setting RUSTFLAGS.\n---\n---```lua\n---default = {}\n---```\n---@field extraEnv? table\n---List of features to activate.\n---\n---Set this to `\"all\"` to pass `--all-features` to cargo.\n---\n---```lua\n---default = {}\n---```\n---@field features? \"all\"|string[]\n---Whether to pass `--no-default-features` to cargo.\n---@field noDefaultFeatures? boolean\n---Whether to skip fetching dependencies. If set to \"true\", the analysis is performed\n---entirely offline, and Cargo metadata for dependencies is not fetched.\n---@field noDeps? boolean\n---Relative path to the sysroot, or \"discover\" to try to automatically find it via\n---\"rustc --print sysroot\".\n---\n---Unsetting this disables sysroot loading.\n---\n---This option does not take effect until rust-analyzer is restarted.\n---\n---```lua\n---default = \"discover\"\n---```\n---@field sysroot? string\n---Relative path to the sysroot library sources. If left unset, this will default to\n---`{cargo.sysroot}/lib/rustlib/src/rust/library`.\n---\n---This option does not take effect until rust-analyzer is restarted.\n---@field sysrootSrc? string\n---Compilation target override (target tuple).\n---@field target? string\n---Optional path to a rust-analyzer specific target directory.\n---This prevents rust-analyzer's `cargo check` and initial build-script and proc-macro\n---building from locking the `Cargo.lock` at the expense of duplicating build artifacts.\n---\n---Set to `true` to use a subdirectory of the existing target directory or\n---set to a path relative to the workspace to use that path.\n---@field targetDir? any|boolean|string\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.Cfg\n---Set `cfg(test)` for local crates. Defaults to true.\n---\n---```lua\n---default = true\n---```\n---@field setTest? boolean\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.Check\n---Check all targets and tests (`--all-targets`). Defaults to\n---`#rust-analyzer.cargo.allTargets#`.\n---@field allTargets? boolean\n---Cargo command to use for `cargo check`.\n---\n---```lua\n---default = \"check\"\n---```\n---@field command? string\n---Extra arguments for `cargo check`.\n---\n---```lua\n---default = {}\n---```\n---@field extraArgs? string[]\n---Extra environment variables that will be set when running `cargo check`.\n---Extends `#rust-analyzer.cargo.extraEnv#`.\n---\n---```lua\n---default = {}\n---```\n---@field extraEnv? table\n---List of features to activate. Defaults to\n---`#rust-analyzer.cargo.features#`.\n---\n---Set to `\"all\"` to pass `--all-features` to Cargo.\n---@field features? \"all\"|string[]|any\n---List of `cargo check` (or other command specified in `check.command`) diagnostics to ignore.\n---\n---For example for `cargo check`: `dead_code`, `unused_imports`, `unused_variables`,...\n---\n---```lua\n---default = {}\n---```\n---@field ignore? string[]\n---Specifies the invocation strategy to use when running the check command.\n---If `per_workspace` is set, the command will be executed for each workspace.\n---If `once` is set, the command will be executed once.\n---This config only has an effect when `#rust-analyzer.check.overrideCommand#`\n---is set.\n---\n---```lua\n---default = \"per_workspace\"\n---```\n---@field invocationStrategy? \"per_workspace\" | \"once\"\n---Whether to pass `--no-default-features` to Cargo. Defaults to\n---`#rust-analyzer.cargo.noDefaultFeatures#`.\n---@field noDefaultFeatures? boolean\n---Override the command rust-analyzer uses instead of `cargo check` for\n---diagnostics on save. The command is required to output json and\n---should therefore include `--message-format=json` or a similar option\n---(if your client supports the `colorDiagnosticOutput` experimental\n---capability, you can use `--message-format=json-diagnostic-rendered-ansi`).\n---\n---If you're changing this because you're using some tool wrapping\n---Cargo, you might also want to change\n---`#rust-analyzer.cargo.buildScripts.overrideCommand#`.\n---\n---If there are multiple linked projects/workspaces, this command is invoked for\n---each of them, with the working directory being the workspace root\n---(i.e., the folder containing the `Cargo.toml`). This can be overwritten\n---by changing `#rust-analyzer.check.invocationStrategy#`.\n---\n---It supports two interpolation syntaxes, both mainly intended to be used with\n---[non-Cargo build systems](./non_cargo_based_projects.md):\n---\n---- If `{saved_file}` is part of the command, rust-analyzer will pass\n---    the absolute path of the saved file to the provided command.\n---    (A previous version, `$saved_file`, also works.)\n---- If `{label}` is part of the command, rust-analyzer will pass the\n---    Cargo package ID, which can be used with `cargo check -p`, or a build label from\n---    `rust-project.json`. If `{label}` is included, rust-analyzer behaves much like\n---    [`\"rust-analyzer.check.workspace\": false`](#check.workspace).\n---\n---\n---\n---An example command would be:\n---\n---```bash\n---cargo check --workspace --message-format=json --all-targets\n---```\n---\n---Note: The option must be specified as an array of command line arguments, with\n---the first argument being the name of the command to run.\n---@field overrideCommand? string[]\n---Check for specific targets. Defaults to `#rust-analyzer.cargo.target#` if empty.\n---\n---Can be a single target, e.g. `\"x86_64-unknown-linux-gnu\"` or a list of targets, e.g.\n---`[\"aarch64-apple-darwin\", \"x86_64-apple-darwin\"]`.\n---\n---Aliased as `\"checkOnSave.targets\"`.\n---@field targets? any|string|string[]\n---Whether `--workspace` should be passed to `cargo check`.\n---If false, `-p <package>` will be passed instead if applicable. In case it is not, no\n---check will be performed.\n---\n---```lua\n---default = true\n---```\n---@field workspace? boolean\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.Completion.AutoAwait\n---Show method calls and field accesses completions with `await` prefixed to them when\n---completing on a future.\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.Completion.AutoIter\n---Show method call completions with `iter()` or `into_iter()` prefixed to them when\n---completing on a type that has them.\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.Completion.Autoimport\n---Show completions that automatically add imports when completed.\n---\n---Note that your client must specify the `additionalTextEdits` LSP client capability to\n---truly have this feature enabled.\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n---A list of full paths to items to exclude from auto-importing completions.\n---\n---Traits in this list won't have their methods suggested in completions unless the trait\n---is in scope.\n---\n---You can either specify a string path which defaults to type \"always\" or use the more\n---verbose form `{ \"path\": \"path::to::item\", type: \"always\" }`.\n---\n---For traits the type \"methods\" can be used to only exclude the methods but not the trait\n---itself.\n---\n---This setting also inherits `#rust-analyzer.completion.excludeTraits#`.\n---\n---```lua\n---default = { {\n---    path = \"core::borrow::Borrow\",\n---    type = \"methods\"\n---  }, {\n---    path = \"core::borrow::BorrowMut\",\n---    type = \"methods\"\n---  } }\n---```\n---@field exclude? any[]\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.Completion.Autoself\n---Show method calls and field access completions with `self` prefixed to them when\n---inside a method.\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.Completion.Callable\n---Add parenthesis and argument snippets when completing function.\n---\n---```lua\n---default = \"fill_arguments\"\n---```\n---@field snippets? \"fill_arguments\" | \"add_parentheses\" | \"none\"\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.Completion.FullFunctionSignatures\n---Show full function / method signatures in completion docs.\n---@field enable? boolean\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.Completion.Postfix\n---Show postfix snippets like `dbg`, `if`, `not`, etc.\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.Completion.PrivateEditable\n---Show completions of private items and fields that are defined in the current workspace\n---even if they are not visible at the current position.\n---@field enable? boolean\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.Completion.Snippets\n---Custom completion snippets.\n---\n---```lua\n---default = {\n---  [\"Arc::new\"] = {\n---    body = \"Arc::new(${receiver})\",\n---    description = \"Put the expression into an `Arc`\",\n---    postfix = \"arc\",\n---    requires = \"std::sync::Arc\",\n---    scope = \"expr\"\n---  },\n---  [\"Box::pin\"] = {\n---    body = \"Box::pin(${receiver})\",\n---    description = \"Put the expression into a pinned `Box`\",\n---    postfix = \"pinbox\",\n---    requires = \"std::boxed::Box\",\n---    scope = \"expr\"\n---  },\n---  Err = {\n---    body = \"Err(${receiver})\",\n---    description = \"Wrap the expression in a `Result::Err`\",\n---    postfix = \"err\",\n---    scope = \"expr\"\n---  },\n---  Ok = {\n---    body = \"Ok(${receiver})\",\n---    description = \"Wrap the expression in a `Result::Ok`\",\n---    postfix = \"ok\",\n---    scope = \"expr\"\n---  },\n---  [\"Rc::new\"] = {\n---    body = \"Rc::new(${receiver})\",\n---    description = \"Put the expression into an `Rc`\",\n---    postfix = \"rc\",\n---    requires = \"std::rc::Rc\",\n---    scope = \"expr\"\n---  },\n---  Some = {\n---    body = \"Some(${receiver})\",\n---    description = \"Wrap the expression in an `Option::Some`\",\n---    postfix = \"some\",\n---    scope = \"expr\"\n---  }\n---}\n---```\n---@field custom? table\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.Completion.TermSearch\n---Enable term search based snippets like `Some(foo.bar().baz())`.\n---@field enable? boolean\n---Term search fuel in \"units of work\" for autocompletion (Defaults to 1000).\n---\n---```lua\n---default = 1000\n---```\n---@field fuel? integer\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.Completion\n---Automatically add a semicolon when completing unit-returning functions.\n---\n---In `match` arms it completes a comma instead.\n---\n---```lua\n---default = true\n---```\n---@field addSemicolonToUnit? boolean\n---@field autoAwait? _.lspconfig.settings.rust_analyzer.RustAnalyzer.Completion.AutoAwait\n---@field autoIter? _.lspconfig.settings.rust_analyzer.RustAnalyzer.Completion.AutoIter\n---@field autoimport? _.lspconfig.settings.rust_analyzer.RustAnalyzer.Completion.Autoimport\n---@field autoself? _.lspconfig.settings.rust_analyzer.RustAnalyzer.Completion.Autoself\n---@field callable? _.lspconfig.settings.rust_analyzer.RustAnalyzer.Completion.Callable\n---A list of full paths to traits whose methods to exclude from completion.\n---\n---Methods from these traits won't be completed, even if the trait is in scope. However,\n---they will still be suggested on expressions whose type is `dyn Trait`, `impl Trait` or\n---`T where T: Trait`.\n---\n---Note that the trait themselves can still be completed.\n---\n---```lua\n---default = {}\n---```\n---@field excludeTraits? string[]\n---@field fullFunctionSignatures? _.lspconfig.settings.rust_analyzer.RustAnalyzer.Completion.FullFunctionSignatures\n---Omit deprecated items from completions. By default they are marked as deprecated but not\n---hidden.\n---@field hideDeprecated? boolean\n---Maximum number of completions to return. If `None`, the limit is infinite.\n---@field limit? integer\n---@field postfix? _.lspconfig.settings.rust_analyzer.RustAnalyzer.Completion.Postfix\n---@field privateEditable? _.lspconfig.settings.rust_analyzer.RustAnalyzer.Completion.PrivateEditable\n---@field snippets? _.lspconfig.settings.rust_analyzer.RustAnalyzer.Completion.Snippets\n---@field termSearch? _.lspconfig.settings.rust_analyzer.RustAnalyzer.Completion.TermSearch\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.Debug\n---Whether to rebuild the project modules before debugging the same test again\n---@field buildBeforeRestart? boolean\n---Preferred debug engine.\n---\n---```lua\n---default = \"auto\"\n---```\n---@field engine? \"auto\" | \"llvm-vs-code-extensions.lldb-dap\" | \"vadimcn.vscode-lldb\" | \"ms-vscode.cpptools\" | \"webfreak.debug\"\n---Optional settings passed to the debug engine. Example: `{ \"lldb\": { \"terminal\":\"external\"} }`\n---\n---```lua\n---default = {}\n---```\n---@field engineSettings? table\n---Optional source file mappings passed to the debug engine.\n---\n---```lua\n---default = {\n---  [\"/rustc/<id>\"] = \"${env:USERPROFILE}/.rustup/toolchains/<toolchain-id>/lib/rustlib/src/rust\"\n---}\n---```\n---@field sourceFileMap? table|string\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.Diagnostics.Experimental\n---Show experimental rust-analyzer diagnostics that might have more false positives than\n---usual.\n---@field enable? boolean\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.Diagnostics.StyleLints\n---Run additional style lints.\n---@field enable? boolean\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.Diagnostics\n---List of rust-analyzer diagnostics to disable.\n---\n---```lua\n---default = {}\n---```\n---@field disabled? string[]\n---Show native rust-analyzer diagnostics.\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n---@field experimental? _.lspconfig.settings.rust_analyzer.RustAnalyzer.Diagnostics.Experimental\n---Whether to show the main part of the rendered rustc output of a diagnostic message.\n---@field previewRustcOutput? boolean\n---Map of prefixes to be substituted when parsing diagnostic file paths. This should be the\n---reverse mapping of what is passed to `rustc` as `--remap-path-prefix`.\n---\n---```lua\n---default = {}\n---```\n---@field remapPrefix? table\n---@field styleLints? _.lspconfig.settings.rust_analyzer.RustAnalyzer.Diagnostics.StyleLints\n---Whether to show diagnostics using the original rustc error code. If this is false, all rustc diagnostics will have the code 'rustc(Click for full compiler diagnostics)'\n---@field useRustcErrorCode? boolean\n---List of warnings that should be displayed with hint severity.\n---\n---The warnings will be indicated by faded text or three dots in code and will not show up\n---in the `Problems Panel`.\n---\n---```lua\n---default = {}\n---```\n---@field warningsAsHint? string[]\n---List of warnings that should be displayed with info severity.\n---\n---The warnings will be indicated by a blue squiggly underline in code and a blue icon in\n---the `Problems Panel`.\n---\n---```lua\n---default = {}\n---```\n---@field warningsAsInfo? string[]\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.Document.Symbol.Search\n---Exclude all locals from document symbol search.\n---\n---```lua\n---default = true\n---```\n---@field excludeLocals? boolean\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.Document.Symbol\n---@field search? _.lspconfig.settings.rust_analyzer.RustAnalyzer.Document.Symbol.Search\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.Document\n---@field symbol? _.lspconfig.settings.rust_analyzer.RustAnalyzer.Document.Symbol\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.Files\n---List of files to ignore\n---\n---These paths (file/directories) will be ignored by rust-analyzer. They are relative to\n---the workspace root, and globs are not supported. You may also need to add the folders to\n---Code's `files.watcherExclude`.\n---\n---```lua\n---default = {}\n---```\n---@field exclude? string[]\n---Controls file watching implementation.\n---\n---```lua\n---default = \"client\"\n---```\n---@field watcher? \"client\" | \"server\"\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.GotoImplementations\n---If this is `true`, when \"Goto Implementations\" and in \"Implementations\" lens, are triggered on a `struct` or `enum` or `union`, we filter out trait implementations that originate from `derive`s above the type.\n---@field filterAdjacentDerives? boolean\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.HighlightRelated.BranchExitPoints\n---Highlight related return values while the cursor is on any `match`, `if`, or match arm\n---arrow (`=>`).\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.HighlightRelated.BreakPoints\n---Highlight related references while the cursor is on `break`, `loop`, `while`, or `for`\n---keywords.\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.HighlightRelated.ClosureCaptures\n---Highlight all captures of a closure while the cursor is on the `|` or move keyword of a closure.\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.HighlightRelated.ExitPoints\n---Highlight all exit points while the cursor is on any `return`, `?`, `fn`, or return type\n---arrow (`->`).\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.HighlightRelated.References\n---Highlight related references while the cursor is on any identifier.\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.HighlightRelated.YieldPoints\n---Highlight all break points for a loop or block context while the cursor is on any\n---`async` or `await` keywords.\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.HighlightRelated\n---@field branchExitPoints? _.lspconfig.settings.rust_analyzer.RustAnalyzer.HighlightRelated.BranchExitPoints\n---@field breakPoints? _.lspconfig.settings.rust_analyzer.RustAnalyzer.HighlightRelated.BreakPoints\n---@field closureCaptures? _.lspconfig.settings.rust_analyzer.RustAnalyzer.HighlightRelated.ClosureCaptures\n---@field exitPoints? _.lspconfig.settings.rust_analyzer.RustAnalyzer.HighlightRelated.ExitPoints\n---@field references? _.lspconfig.settings.rust_analyzer.RustAnalyzer.HighlightRelated.References\n---@field yieldPoints? _.lspconfig.settings.rust_analyzer.RustAnalyzer.HighlightRelated.YieldPoints\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.Hover.Actions.Debug\n---Show `Debug` action. Only applies when `#rust-analyzer.hover.actions.enable#` is set.\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.Hover.Actions.GotoTypeDef\n---Show `Go to Type Definition` action. Only applies when\n---`#rust-analyzer.hover.actions.enable#` is set.\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.Hover.Actions.Implementations\n---Show `Implementations` action. Only applies when `#rust-analyzer.hover.actions.enable#`\n---is set.\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.Hover.Actions.References\n---Show `References` action. Only applies when `#rust-analyzer.hover.actions.enable#` is\n---set.\n---@field enable? boolean\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.Hover.Actions.Run\n---Show `Run` action. Only applies when `#rust-analyzer.hover.actions.enable#` is set.\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.Hover.Actions.UpdateTest\n---Show `Update Test` action. Only applies when `#rust-analyzer.hover.actions.enable#` and\n---`#rust-analyzer.hover.actions.run.enable#` are set.\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.Hover.Actions\n---@field debug? _.lspconfig.settings.rust_analyzer.RustAnalyzer.Hover.Actions.Debug\n---Show HoverActions in Rust files.\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n---@field gotoTypeDef? _.lspconfig.settings.rust_analyzer.RustAnalyzer.Hover.Actions.GotoTypeDef\n---@field implementations? _.lspconfig.settings.rust_analyzer.RustAnalyzer.Hover.Actions.Implementations\n---@field references? _.lspconfig.settings.rust_analyzer.RustAnalyzer.Hover.Actions.References\n---@field run? _.lspconfig.settings.rust_analyzer.RustAnalyzer.Hover.Actions.Run\n---@field updateTest? _.lspconfig.settings.rust_analyzer.RustAnalyzer.Hover.Actions.UpdateTest\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.Hover.Documentation.Keywords\n---Show keyword hover popups. Only applies when\n---`#rust-analyzer.hover.documentation.enable#` is set.\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.Hover.Documentation\n---Show documentation on hover.\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n---@field keywords? _.lspconfig.settings.rust_analyzer.RustAnalyzer.Hover.Documentation.Keywords\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.Hover.DropGlue\n---Show drop glue information on hover.\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.Hover.Links\n---Use markdown syntax for links on hover.\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.Hover.MemoryLayout\n---How to render the align information in a memory layout hover.\n---\n---```lua\n---default = \"hexadecimal\"\n---```\n---@field alignment? any|\"both\" | \"decimal\" | \"hexadecimal\"\n---Show memory layout data on hover.\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n---How to render the niche information in a memory layout hover.\n---@field niches? boolean\n---How to render the offset information in a memory layout hover.\n---\n---```lua\n---default = \"hexadecimal\"\n---```\n---@field offset? any|\"both\" | \"decimal\" | \"hexadecimal\"\n---How to render the padding information in a memory layout hover.\n---@field padding? any|\"both\" | \"decimal\" | \"hexadecimal\"\n---How to render the size information in a memory layout hover.\n---\n---```lua\n---default = \"both\"\n---```\n---@field size? any|\"both\" | \"decimal\" | \"hexadecimal\"\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.Hover.Show\n---How many variants of an enum to display when hovering on. Show none if empty.\n---\n---```lua\n---default = 5\n---```\n---@field enumVariants? integer\n---How many fields of a struct, variant or union to display when hovering on. Show none if\n---empty.\n---\n---```lua\n---default = 5\n---```\n---@field fields? integer\n---How many associated items of a trait to display when hovering a trait.\n---@field traitAssocItems? integer\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.Hover\n---@field actions? _.lspconfig.settings.rust_analyzer.RustAnalyzer.Hover.Actions\n---@field documentation? _.lspconfig.settings.rust_analyzer.RustAnalyzer.Hover.Documentation\n---@field dropGlue? _.lspconfig.settings.rust_analyzer.RustAnalyzer.Hover.DropGlue\n---@field links? _.lspconfig.settings.rust_analyzer.RustAnalyzer.Hover.Links\n---Show what types are used as generic arguments in calls etc. on hover, and limit the max\n---length to show such types, beyond which they will be shown with ellipsis.\n---\n---This can take three values: `null` means \"unlimited\", the string `\"hide\"` means to not\n---show generic substitutions at all, and a number means to limit them to X characters.\n---\n---The default is 20 characters.\n---\n---```lua\n---default = 20\n---```\n---@field maxSubstitutionLength? any|\"hide\"|integer\n---@field memoryLayout? _.lspconfig.settings.rust_analyzer.RustAnalyzer.Hover.MemoryLayout\n---@field show? _.lspconfig.settings.rust_analyzer.RustAnalyzer.Hover.Show\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.Imports.Granularity\n---Enforce the import granularity setting for all files. If set to false rust-analyzer will\n---try to keep import styles consistent per file.\n---@field enforce? boolean\n---How imports should be grouped into use statements.\n---\n---```lua\n---default = \"crate\"\n---```\n---@field group? \"crate\" | \"module\" | \"item\" | \"one\" | \"preserve\"\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.Imports.Group\n---Group inserted imports by the [following\n---order](https://rust-analyzer.github.io/book/features.html#auto-import). Groups are\n---separated by newlines.\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.Imports.Merge\n---Allow import insertion to merge new imports into single path glob imports like `use\n---std::fmt::*;`.\n---\n---```lua\n---default = true\n---```\n---@field glob? boolean\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.Imports\n---@field granularity? _.lspconfig.settings.rust_analyzer.RustAnalyzer.Imports.Granularity\n---@field group? _.lspconfig.settings.rust_analyzer.RustAnalyzer.Imports.Group\n---@field merge? _.lspconfig.settings.rust_analyzer.RustAnalyzer.Imports.Merge\n---Prefer to unconditionally use imports of the core and alloc crate, over the std crate.\n---@field preferNoStd? boolean\n---Prefer import paths containing a `prelude` module.\n---@field preferPrelude? boolean\n---The path structure for newly inserted paths to use.\n---\n---```lua\n---default = \"crate\"\n---```\n---@field prefix? \"plain\" | \"self\" | \"crate\"\n---Prefix external (including std, core) crate imports with `::`.\n---\n---E.g. `use ::std::io::Read;`.\n---@field prefixExternPrelude? boolean\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.InlayHints.BindingModeHints\n---Show inlay type hints for binding modes.\n---@field enable? boolean\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.InlayHints.ChainingHints\n---Show inlay type hints for method chains.\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.InlayHints.ClosingBraceHints\n---Show inlay hints after a closing `}` to indicate what item it belongs to.\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n---Minimum number of lines required before the `}` until the hint is shown (set to 0 or 1\n---to always show them).\n---\n---```lua\n---default = 25\n---```\n---@field minLines? integer\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.InlayHints.ClosureCaptureHints\n---Show inlay hints for closure captures.\n---@field enable? boolean\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.InlayHints.ClosureReturnTypeHints\n---Show inlay type hints for return types of closures.\n---\n---```lua\n---default = \"never\"\n---```\n---@field enable? \"always\" | \"never\" | \"with_block\"\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.InlayHints.DiscriminantHints\n---Show enum variant discriminant hints.\n---\n---```lua\n---default = \"never\"\n---```\n---@field enable? \"always\" | \"never\" | \"fieldless\"\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.InlayHints.ExpressionAdjustmentHints\n---Disable reborrows in expression adjustments inlay hints.\n---\n---Reborrows are a pair of a builtin deref then borrow, i.e. `&*`. They are inserted by the compiler but are mostly useless to the programmer.\n---\n---Note: if the deref is not builtin (an overloaded deref), or the borrow is `&raw const`/`&raw mut`, they are not removed.\n---\n---```lua\n---default = true\n---```\n---@field disableReborrows? boolean\n---Show inlay hints for type adjustments.\n---\n---```lua\n---default = \"never\"\n---```\n---@field enable? \"always\" | \"never\" | \"reborrow\"\n---Hide inlay hints for type adjustments outside of `unsafe` blocks.\n---@field hideOutsideUnsafe? boolean\n---Show inlay hints as postfix ops (`.*` instead of `*`, etc).\n---\n---```lua\n---default = \"prefix\"\n---```\n---@field mode? \"prefix\" | \"postfix\" | \"prefer_prefix\" | \"prefer_postfix\"\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.InlayHints.GenericParameterHints.Const\n---Show const generic parameter name inlay hints.\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.InlayHints.GenericParameterHints.Lifetime\n---Show generic lifetime parameter name inlay hints.\n---@field enable? boolean\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.InlayHints.GenericParameterHints.Type\n---Show generic type parameter name inlay hints.\n---@field enable? boolean\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.InlayHints.GenericParameterHints\n---@field const? _.lspconfig.settings.rust_analyzer.RustAnalyzer.InlayHints.GenericParameterHints.Const\n---@field lifetime? _.lspconfig.settings.rust_analyzer.RustAnalyzer.InlayHints.GenericParameterHints.Lifetime\n---@field type? _.lspconfig.settings.rust_analyzer.RustAnalyzer.InlayHints.GenericParameterHints.Type\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.InlayHints.ImplicitDrops\n---Show implicit drop hints.\n---@field enable? boolean\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.InlayHints.ImplicitSizedBoundHints\n---Show inlay hints for the implied type parameter `Sized` bound.\n---@field enable? boolean\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.InlayHints.ImpliedDynTraitHints\n---Show inlay hints for the implied `dyn` keyword in trait object types.\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.InlayHints.LifetimeElisionHints\n---Show inlay type hints for elided lifetimes in function signatures.\n---\n---```lua\n---default = \"never\"\n---```\n---@field enable? \"always\" | \"never\" | \"skip_trivial\"\n---Prefer using parameter names as the name for elided lifetime hints if possible.\n---@field useParameterNames? boolean\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.InlayHints.ParameterHints.MissingArguments\n---Show parameter name inlay hints for missing arguments at the call site.\n---@field enable? boolean\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.InlayHints.ParameterHints\n---Show function parameter name inlay hints at the call site.\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n---@field missingArguments? _.lspconfig.settings.rust_analyzer.RustAnalyzer.InlayHints.ParameterHints.MissingArguments\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.InlayHints.RangeExclusiveHints\n---Show exclusive range inlay hints.\n---@field enable? boolean\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.InlayHints.ReborrowHints\n---Show inlay hints for compiler inserted reborrows.\n---\n---This setting is deprecated in favor of\n---#rust-analyzer.inlayHints.expressionAdjustmentHints.enable#.\n---\n---```lua\n---default = \"never\"\n---```\n---@field enable? \"always\" | \"never\" | \"mutable\"\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.InlayHints.TypeHints\n---Show inlay type hints for variables.\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n---Hide inlay type hints for `let` statements that initialize to a closure.\n---\n---Only applies to closures with blocks, same as\n---`#rust-analyzer.inlayHints.closureReturnTypeHints.enable#`.\n---@field hideClosureInitialization? boolean\n---Hide inlay parameter type hints for closures.\n---@field hideClosureParameter? boolean\n---Hide inlay type hints for inferred types.\n---@field hideInferredTypes? boolean\n---Hide inlay type hints for constructors.\n---@field hideNamedConstructor? boolean\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.InlayHints\n---@field bindingModeHints? _.lspconfig.settings.rust_analyzer.RustAnalyzer.InlayHints.BindingModeHints\n---@field chainingHints? _.lspconfig.settings.rust_analyzer.RustAnalyzer.InlayHints.ChainingHints\n---@field closingBraceHints? _.lspconfig.settings.rust_analyzer.RustAnalyzer.InlayHints.ClosingBraceHints\n---@field closureCaptureHints? _.lspconfig.settings.rust_analyzer.RustAnalyzer.InlayHints.ClosureCaptureHints\n---@field closureReturnTypeHints? _.lspconfig.settings.rust_analyzer.RustAnalyzer.InlayHints.ClosureReturnTypeHints\n---Closure notation in type and chaining inlay hints.\n---\n---```lua\n---default = \"impl_fn\"\n---```\n---@field closureStyle? \"impl_fn\" | \"rust_analyzer\" | \"with_id\" | \"hide\"\n---@field discriminantHints? _.lspconfig.settings.rust_analyzer.RustAnalyzer.InlayHints.DiscriminantHints\n---@field expressionAdjustmentHints? _.lspconfig.settings.rust_analyzer.RustAnalyzer.InlayHints.ExpressionAdjustmentHints\n---@field genericParameterHints? _.lspconfig.settings.rust_analyzer.RustAnalyzer.InlayHints.GenericParameterHints\n---@field implicitDrops? _.lspconfig.settings.rust_analyzer.RustAnalyzer.InlayHints.ImplicitDrops\n---@field implicitSizedBoundHints? _.lspconfig.settings.rust_analyzer.RustAnalyzer.InlayHints.ImplicitSizedBoundHints\n---@field impliedDynTraitHints? _.lspconfig.settings.rust_analyzer.RustAnalyzer.InlayHints.ImpliedDynTraitHints\n---@field lifetimeElisionHints? _.lspconfig.settings.rust_analyzer.RustAnalyzer.InlayHints.LifetimeElisionHints\n---Maximum length for inlay hints. Set to null to have an unlimited length.\n---\n---**Note:** This is mostly a hint, and we don't guarantee to strictly follow the limit.\n---\n---```lua\n---default = 25\n---```\n---@field maxLength? integer\n---@field parameterHints? _.lspconfig.settings.rust_analyzer.RustAnalyzer.InlayHints.ParameterHints\n---@field rangeExclusiveHints? _.lspconfig.settings.rust_analyzer.RustAnalyzer.InlayHints.RangeExclusiveHints\n---@field reborrowHints? _.lspconfig.settings.rust_analyzer.RustAnalyzer.InlayHints.ReborrowHints\n---Whether to render leading colons for type hints, and trailing colons for parameter hints.\n---\n---```lua\n---default = true\n---```\n---@field renderColons? boolean\n---@field typeHints? _.lspconfig.settings.rust_analyzer.RustAnalyzer.InlayHints.TypeHints\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.Interpret\n---Enable the experimental support for interpreting tests.\n---@field tests? boolean\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.JoinLines\n---Join lines merges consecutive declaration and initialization of an assignment.\n---\n---```lua\n---default = true\n---```\n---@field joinAssignments? boolean\n---Join lines inserts else between consecutive ifs.\n---\n---```lua\n---default = true\n---```\n---@field joinElseIf? boolean\n---Join lines removes trailing commas.\n---\n---```lua\n---default = true\n---```\n---@field removeTrailingComma? boolean\n---Join lines unwraps trivial blocks.\n---\n---```lua\n---default = true\n---```\n---@field unwrapTrivialBlock? boolean\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.Lens.Debug\n---Show `Debug` lens. Only applies when `#rust-analyzer.lens.enable#` is set.\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.Lens.Implementations\n---Show `Implementations` lens. Only applies when `#rust-analyzer.lens.enable#` is set.\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.Lens.References.Adt\n---Show `References` lens for Struct, Enum, and Union. Only applies when\n---`#rust-analyzer.lens.enable#` is set.\n---@field enable? boolean\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.Lens.References.EnumVariant\n---Show `References` lens for Enum Variants. Only applies when\n---`#rust-analyzer.lens.enable#` is set.\n---@field enable? boolean\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.Lens.References.Method\n---Show `Method References` lens. Only applies when `#rust-analyzer.lens.enable#` is set.\n---@field enable? boolean\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.Lens.References.Trait\n---Show `References` lens for Trait. Only applies when `#rust-analyzer.lens.enable#` is\n---set.\n---@field enable? boolean\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.Lens.References\n---@field adt? _.lspconfig.settings.rust_analyzer.RustAnalyzer.Lens.References.Adt\n---@field enumVariant? _.lspconfig.settings.rust_analyzer.RustAnalyzer.Lens.References.EnumVariant\n---@field method? _.lspconfig.settings.rust_analyzer.RustAnalyzer.Lens.References.Method\n---@field trait? _.lspconfig.settings.rust_analyzer.RustAnalyzer.Lens.References.Trait\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.Lens.Run\n---Show `Run` lens. Only applies when `#rust-analyzer.lens.enable#` is set.\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.Lens.UpdateTest\n---Show `Update Test` lens. Only applies when `#rust-analyzer.lens.enable#` and\n---`#rust-analyzer.lens.run.enable#` are set.\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.Lens\n---@field debug? _.lspconfig.settings.rust_analyzer.RustAnalyzer.Lens.Debug\n---Show CodeLens in Rust files.\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n---@field implementations? _.lspconfig.settings.rust_analyzer.RustAnalyzer.Lens.Implementations\n---Where to render annotations.\n---\n---```lua\n---default = \"above_name\"\n---```\n---@field location? \"above_name\" | \"above_whole_item\"\n---@field references? _.lspconfig.settings.rust_analyzer.RustAnalyzer.Lens.References\n---@field run? _.lspconfig.settings.rust_analyzer.RustAnalyzer.Lens.Run\n---@field updateTest? _.lspconfig.settings.rust_analyzer.RustAnalyzer.Lens.UpdateTest\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.Lru.Query\n---The LRU capacity of the specified queries.\n---\n---```lua\n---default = {}\n---```\n---@field capacities? table\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.Lru\n---Number of syntax trees rust-analyzer keeps in memory. Defaults to 128.\n---@field capacity? integer\n---@field query? _.lspconfig.settings.rust_analyzer.RustAnalyzer.Lru.Query\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.Notifications\n---Show `can't find Cargo.toml` error message.\n---\n---```lua\n---default = true\n---```\n---@field cargoTomlNotFound? boolean\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.ProcMacro.Attributes\n---Expand attribute macros. Requires `#rust-analyzer.procMacro.enable#` to be set.\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.ProcMacro\n---@field attributes? _.lspconfig.settings.rust_analyzer.RustAnalyzer.ProcMacro.Attributes\n---Enable support for procedural macros, implies `#rust-analyzer.cargo.buildScripts.enable#`.\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n---These proc-macros will be ignored when trying to expand them.\n---\n---This config takes a map of crate names with the exported proc-macro names to ignore as values.\n---\n---```lua\n---default = {}\n---```\n---@field ignored? table\n---Number of proc-macro server processes to spawn.\n---\n---Controls how many independent `proc-macro-srv` processes rust-analyzer\n---runs in parallel to handle macro expansion.\n---\n---```lua\n---default = 1\n---```\n---@field processes? number|\"physical\"\n---Internal config, path to proc-macro server executable.\n---@field server? string\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.Profiling\n---The path where to save memory profiling output.\n---\n---**Note:** Memory profiling is not enabled by default in rust-analyzer builds, you need to build\n---from source for it.\n---@field memoryProfile? string\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.References\n---Exclude imports from find-all-references.\n---@field excludeImports? boolean\n---Exclude tests from find-all-references and call-hierarchy.\n---@field excludeTests? boolean\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.Rename\n---Whether to warn when a rename will cause conflicts (change the meaning of the code).\n---\n---```lua\n---default = true\n---```\n---@field showConflicts? boolean\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.Runnables.Bench\n---Subcommand used for bench runnables instead of `bench`.\n---\n---```lua\n---default = \"bench\"\n---```\n---@field command? string\n---Override the command used for bench runnables.\n---The first element of the array should be the program to execute (for example, `cargo`).\n---\n---Use the placeholders `${package}`, `${target_arg}`, `${target}`, `${test_name}` to dynamically\n---replace the package name, target option (such as `--bin` or `--example`), the target name and\n---the test name (name of test function or test mod path).\n---@field overrideCommand? string[]\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.Runnables.Doctest\n---Override the command used for bench runnables.\n---The first element of the array should be the program to execute (for example, `cargo`).\n---\n---Use the placeholders `${package}`, `${target_arg}`, `${target}`, `${test_name}` to dynamically\n---replace the package name, target option (such as `--bin` or `--example`), the target name and\n---the test name (name of test function or test mod path).\n---@field overrideCommand? string[]\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.Runnables.Test\n---Subcommand used for test runnables instead of `test`.\n---\n---```lua\n---default = \"test\"\n---```\n---@field command? string\n---Override the command used for test runnables.\n---The first element of the array should be the program to execute (for example, `cargo`).\n---\n---Use the placeholders `${package}`, `${target_arg}`, `${target}`, `${test_name}` to dynamically\n---replace the package name, target option (such as `--bin` or `--example`), the target name and\n---the test name (name of test function or test mod path).\n---@field overrideCommand? string[]\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.Runnables\n---Ask before updating the test when running it.\n---\n---```lua\n---default = true\n---```\n---@field askBeforeUpdateTest? boolean\n---@field bench? _.lspconfig.settings.rust_analyzer.RustAnalyzer.Runnables.Bench\n---Command to be executed instead of 'cargo' for runnables.\n---@field command? string\n---@field doctest? _.lspconfig.settings.rust_analyzer.RustAnalyzer.Runnables.Doctest\n---Additional arguments to be passed to cargo for runnables such as\n---tests or binaries. For example, it may be `--release`.\n---\n---```lua\n---default = {}\n---```\n---@field extraArgs? string[]\n---Environment variables passed to the runnable launched using `Test` or `Debug` lens or `rust-analyzer.run` command.\n---@field extraEnv? any|table[]|table\n---Additional arguments to be passed through Cargo to launched tests, benchmarks, or\n---doc-tests.\n---\n---Unless the launched target uses a\n---[custom test harness](https://doc.rust-lang.org/cargo/reference/cargo-targets.html#the-harness-field),\n---they will end up being interpreted as options to\n---[`rustc`’s built-in test harness (“libtest”)](https://doc.rust-lang.org/rustc/tests/index.html#cli-arguments).\n---\n---```lua\n---default = { \"--nocapture\" }\n---```\n---@field extraTestBinaryArgs? string[]\n---Problem matchers to use for `rust-analyzer.run` command, eg `[\"$rustc\", \"$rust-panic\"]`.\n---\n---```lua\n---default = { \"$rustc\" }\n---```\n---@field problemMatcher? string[]\n---@field test? _.lspconfig.settings.rust_analyzer.RustAnalyzer.Runnables.Test\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.Rustc\n---Path to the Cargo.toml of the rust compiler workspace, for usage in rustc_private\n---projects, or \"discover\" to try to automatically find it if the `rustc-dev` component\n---is installed.\n---\n---Any project which uses rust-analyzer with the rustcPrivate\n---crates must set `[package.metadata.rust-analyzer] rustc_private=true` to use it.\n---\n---This option does not take effect until rust-analyzer is restarted.\n---@field source? string\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.Rustfmt.RangeFormatting\n---Enables the use of rustfmt's unstable range formatting command for the\n---`textDocument/rangeFormatting` request. The rustfmt option is unstable and only\n---available on a nightly build.\n---@field enable? boolean\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.Rustfmt\n---Additional arguments to `rustfmt`.\n---\n---```lua\n---default = {}\n---```\n---@field extraArgs? string[]\n---Advanced option, fully override the command rust-analyzer uses for\n---formatting. This should be the equivalent of `rustfmt` here, and\n---not that of `cargo fmt`. The file contents will be passed on the\n---standard input and the formatted result will be read from the\n---standard output.\n---\n---Note: The option must be specified as an array of command line arguments, with\n---the first argument being the name of the command to run.\n---@field overrideCommand? string[]\n---@field rangeFormatting? _.lspconfig.settings.rust_analyzer.RustAnalyzer.Rustfmt.RangeFormatting\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.SemanticHighlighting.Comments\n---Use semantic tokens for comments.\n---\n---In some editors (e.g. vscode) semantic tokens override other highlighting grammars.\n---By disabling semantic tokens for comments, other grammars can be used to highlight\n---their contents.\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.SemanticHighlighting.Doc.Comment.Inject\n---Inject additional highlighting into doc comments.\n---\n---When enabled, rust-analyzer will highlight rust source in doc comments as well as intra\n---doc links.\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.SemanticHighlighting.Doc.Comment\n---@field inject? _.lspconfig.settings.rust_analyzer.RustAnalyzer.SemanticHighlighting.Doc.Comment.Inject\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.SemanticHighlighting.Doc\n---@field comment? _.lspconfig.settings.rust_analyzer.RustAnalyzer.SemanticHighlighting.Doc.Comment\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.SemanticHighlighting.Operator.Specialization\n---Use specialized semantic tokens for operators.\n---\n---When enabled, rust-analyzer will emit special token types for operator tokens instead\n---of the generic `operator` token type.\n---@field enable? boolean\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.SemanticHighlighting.Operator\n---Use semantic tokens for operators.\n---\n---When disabled, rust-analyzer will emit semantic tokens only for operator tokens when\n---they are tagged with modifiers.\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n---@field specialization? _.lspconfig.settings.rust_analyzer.RustAnalyzer.SemanticHighlighting.Operator.Specialization\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.SemanticHighlighting.Punctuation.Separate.Macro\n---When enabled, rust-analyzer will emit a punctuation semantic token for the `!` of macro\n---calls.\n---@field bang? boolean\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.SemanticHighlighting.Punctuation.Separate\n---@field macro? _.lspconfig.settings.rust_analyzer.RustAnalyzer.SemanticHighlighting.Punctuation.Separate.Macro\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.SemanticHighlighting.Punctuation.Specialization\n---Use specialized semantic tokens for punctuation.\n---\n---When enabled, rust-analyzer will emit special token types for punctuation tokens instead\n---of the generic `punctuation` token type.\n---@field enable? boolean\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.SemanticHighlighting.Punctuation\n---Use semantic tokens for punctuation.\n---\n---When disabled, rust-analyzer will emit semantic tokens only for punctuation tokens when\n---they are tagged with modifiers or have a special role.\n---@field enable? boolean\n---@field separate? _.lspconfig.settings.rust_analyzer.RustAnalyzer.SemanticHighlighting.Punctuation.Separate\n---@field specialization? _.lspconfig.settings.rust_analyzer.RustAnalyzer.SemanticHighlighting.Punctuation.Specialization\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.SemanticHighlighting.Strings\n---Use semantic tokens for strings.\n---\n---In some editors (e.g. vscode) semantic tokens override other highlighting grammars.\n---By disabling semantic tokens for strings, other grammars can be used to highlight\n---their contents.\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.SemanticHighlighting\n---@field comments? _.lspconfig.settings.rust_analyzer.RustAnalyzer.SemanticHighlighting.Comments\n---@field doc? _.lspconfig.settings.rust_analyzer.RustAnalyzer.SemanticHighlighting.Doc\n---Emit non-standard tokens and modifiers\n---\n---When enabled, rust-analyzer will emit tokens and modifiers that are not part of the\n---standard set of semantic tokens.\n---\n---```lua\n---default = true\n---```\n---@field nonStandardTokens? boolean\n---@field operator? _.lspconfig.settings.rust_analyzer.RustAnalyzer.SemanticHighlighting.Operator\n---@field punctuation? _.lspconfig.settings.rust_analyzer.RustAnalyzer.SemanticHighlighting.Punctuation\n---@field strings? _.lspconfig.settings.rust_analyzer.RustAnalyzer.SemanticHighlighting.Strings\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.Server\n---Extra environment variables that will be passed to the rust-analyzer executable. Useful for passing e.g. `RA_LOG` for debugging.\n---@field extraEnv? table\n---Path to rust-analyzer executable (points to bundled binary by default).\n---@field path? string\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.SignatureInfo.Documentation\n---Show documentation.\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.SignatureInfo\n---Show full signature of the callable. Only shows parameters if disabled.\n---\n---```lua\n---default = \"full\"\n---```\n---@field detail? \"full\" | \"parameters\"\n---@field documentation? _.lspconfig.settings.rust_analyzer.RustAnalyzer.SignatureInfo.Documentation\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.StatusBar\n---Action to run when clicking the extension status bar item.\n---\n---```lua\n---default = \"openLogs\"\n---```\n---@field clickAction? \"stopServer\" | \"openLogs\"\n---When to show the extension status bar.\n---\n---`\"always\"` Always show the status bar.\n---\n---`\"never\"` Never show the status bar.\n---\n---`{ documentSelector: <DocumentSelector>[] }` Show the status bar if the open file matches any of the given document selectors.\n---\n---See [VS Code -- DocumentSelector](https://code.visualstudio.com/api/references/document-selector) for more information.\n---\n---```lua\n---default = {\n---  documentSelector = { {\n---      language = \"rust\"\n---    }, {\n---      pattern = \"**/Cargo.toml\"\n---    }, {\n---      pattern = \"**/Cargo.lock\"\n---    }, {\n---      pattern = \"extension-output-rust-lang.rust-analyzer*\",\n---      scheme = \"output\"\n---    } }\n---}\n---```\n---@field showStatusBar? \"always\" | \"never\"|table\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.Trace\n---Enable logging of VS Code extensions itself.\n---@field extension? boolean\n---Trace requests to the rust-analyzer (this is usually overly verbose and not recommended for regular users).\n---\n---```lua\n---default = \"off\"\n---```\n---@field server? \"off\" | \"messages\" | \"verbose\"\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.Typing\n---Whether to prefix newlines after comments with the corresponding comment prefix.\n---\n---```lua\n---default = true\n---```\n---@field continueCommentsOnNewline? boolean\n---Specify the characters allowed to invoke special on typing triggers.\n---\n---- typing `=` after `let` tries to smartly add `;` if `=` is followed by an existing\n---    expression\n---- typing `=` between two expressions adds `;` when in statement position\n---- typing `=` to turn an assignment into an equality comparison removes `;` when in\n---    expression position\n---- typing `.` in a chain method call auto-indents\n---- typing `{` or `(` in front of an expression inserts a closing `}` or `)` after the\n---    expression\n---- typing `{` in a use item adds a closing `}` in the right place\n---- typing `>` to complete a return type `->` will insert a whitespace after it\n---- typing `<` in a path or type position inserts a closing `>` after the path or type.\n---\n---```lua\n---default = \"=.\"\n---```\n---@field triggerChars? string\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.Vfs\n---Additional paths to include in the VFS. Generally for code that is\n---generated or otherwise managed by a build system outside of Cargo,\n---though Cargo might be the eventual consumer.\n---\n---```lua\n---default = {}\n---```\n---@field extraIncludes? string[]\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.Workspace.Symbol.Search\n---Exclude all imports from workspace symbol search.\n---\n---In addition to regular imports (which are always excluded),\n---this option removes public imports (better known as re-exports)\n---and removes imports that rename the imported symbol.\n---@field excludeImports? boolean\n---Workspace symbol search kind.\n---\n---```lua\n---default = \"only_types\"\n---```\n---@field kind? \"only_types\" | \"all_symbols\"\n---Limits the number of items returned from a workspace symbol search (Defaults to 128).\n---Some clients like vs-code issue new searches on result filtering and don't require all results to be returned in the initial search.\n---Other clients requires all results upfront and might require a higher limit.\n---\n---```lua\n---default = 128\n---```\n---@field limit? integer\n---Workspace symbol search scope.\n---\n---```lua\n---default = \"workspace\"\n---```\n---@field scope? \"workspace\" | \"workspace_and_dependencies\"\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.Workspace.Symbol\n---@field search? _.lspconfig.settings.rust_analyzer.RustAnalyzer.Workspace.Symbol.Search\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer.Workspace\n---Configure a command that rust-analyzer can invoke to\n---obtain configuration.\n---\n---This is an alternative to manually generating\n---`rust-project.json`: it enables rust-analyzer to generate\n---rust-project.json on the fly, and regenerate it when\n---switching or modifying projects.\n---\n---This is an object with three fields:\n---\n---* `command`: the shell command to invoke\n---\n---* `filesToWatch`: which build system-specific files should\n---be watched to trigger regenerating the configuration\n---\n---* `progressLabel`: the name of the command, used in\n---progress indicators in the IDE\n---\n---Here's an example of a valid configuration:\n---\n---```json\n---\"rust-analyzer.workspace.discoverConfig\": {\n---        \"command\": [\n---                \"rust-project\",\n---                \"develop-json\",\n---                \"{arg}\"\n---        ],\n---        \"progressLabel\": \"buck2/rust-project\",\n---        \"filesToWatch\": [\n---                \"BUCK\"\n---        ]\n---}\n---```\n---\n---## Argument Substitutions\n---\n---If `command` includes the argument `{arg}`, that argument will be substituted\n---with the JSON-serialized form of the following enum:\n---\n---```norun\n---#[derive(PartialEq, Clone, Debug, Serialize)]\n---#[serde(rename_all = \"camelCase\")]\n---pub enum DiscoverArgument {\n---     Path(AbsPathBuf),\n---     Buildfile(AbsPathBuf),\n---}\n---```\n---\n---rust-analyzer will use the path invocation to find and\n---generate a `rust-project.json` and therefore a\n---workspace. Example:\n---\n---\n---```norun\n---rust-project develop-json '{ \"path\": \"myproject/src/main.rs\" }'\n---```\n---\n---rust-analyzer will use build file invocations to update an\n---existing workspace. Example:\n---\n---Or with a build file and the configuration above:\n---\n---```norun\n---rust-project develop-json '{ \"buildfile\": \"myproject/BUCK\" }'\n---```\n---\n---As a reference for implementors, buck2's `rust-project`\n---will likely be useful:\n---<https://github.com/facebook/buck2/tree/main/integrations/rust-project>.\n---\n---## Discover Command Output\n---\n---**Warning**: This format is provisional and subject to change.\n---\n---The discover command should output JSON objects, one per\n---line (JSONL format). These objects should correspond to\n---this Rust data type:\n---\n---```norun\n---#[derive(Debug, Clone, Deserialize, Serialize)]\n---#[serde(tag = \"kind\")]\n---#[serde(rename_all = \"snake_case\")]\n---enum DiscoverProjectData {\n---        Finished { buildfile: Utf8PathBuf, project: ProjectJsonData },\n---        Error { error: String, source: Option<String> },\n---        Progress { message: String },\n---}\n---```\n---\n---For example, a progress event:\n---\n---```json\n---{\"kind\":\"progress\",\"message\":\"generating rust-project.json\"}\n---```\n---\n---A finished event can look like this (expanded and\n---commented for readability):\n---\n---```json\n---{\n---        // the internally-tagged representation of the enum.\n---        \"kind\": \"finished\",\n---        // the file used by a non-Cargo build system to define\n---        // a package or target.\n---        \"buildfile\": \"rust-analyzer/BUCK\",\n---        // the contents of a rust-project.json, elided for brevity\n---        \"project\": {\n---                \"sysroot\": \"foo\",\n---                \"crates\": []\n---        }\n---}\n---```\n---\n---Only the finished event is required, but the other\n---variants are encouraged to give users more feedback about\n---progress or errors.\n---@field discoverConfig? any|table\n---@field symbol? _.lspconfig.settings.rust_analyzer.RustAnalyzer.Workspace.Symbol\n\n---@class _.lspconfig.settings.rust_analyzer.RustAnalyzer\n---@field assist? _.lspconfig.settings.rust_analyzer.RustAnalyzer.Assist\n---@field cachePriming? _.lspconfig.settings.rust_analyzer.RustAnalyzer.CachePriming\n---@field cargo? _.lspconfig.settings.rust_analyzer.RustAnalyzer.Cargo\n---@field cfg? _.lspconfig.settings.rust_analyzer.RustAnalyzer.Cfg\n---@field check? _.lspconfig.settings.rust_analyzer.RustAnalyzer.Check\n---Run the check command for diagnostics on save.\n---\n---```lua\n---default = true\n---```\n---@field checkOnSave? boolean\n---@field completion? _.lspconfig.settings.rust_analyzer.RustAnalyzer.Completion\n---@field debug? _.lspconfig.settings.rust_analyzer.RustAnalyzer.Debug\n---@field diagnostics? _.lspconfig.settings.rust_analyzer.RustAnalyzer.Diagnostics\n---@field document? _.lspconfig.settings.rust_analyzer.RustAnalyzer.Document\n---@field files? _.lspconfig.settings.rust_analyzer.RustAnalyzer.Files\n---@field gotoImplementations? _.lspconfig.settings.rust_analyzer.RustAnalyzer.GotoImplementations\n---@field highlightRelated? _.lspconfig.settings.rust_analyzer.RustAnalyzer.HighlightRelated\n---@field hover? _.lspconfig.settings.rust_analyzer.RustAnalyzer.Hover\n---@field imports? _.lspconfig.settings.rust_analyzer.RustAnalyzer.Imports\n---Do not start rust-analyzer server when the extension is activated.\n---@field initializeStopped? boolean\n---@field inlayHints? _.lspconfig.settings.rust_analyzer.RustAnalyzer.InlayHints\n---@field interpret? _.lspconfig.settings.rust_analyzer.RustAnalyzer.Interpret\n---@field joinLines? _.lspconfig.settings.rust_analyzer.RustAnalyzer.JoinLines\n---@field lens? _.lspconfig.settings.rust_analyzer.RustAnalyzer.Lens\n---Disable project auto-discovery in favor of explicitly specified set of projects.\n---\n---Elements must be paths pointing to `Cargo.toml`, `rust-project.json`, `.rs` files (which\n---will be treated as standalone files) or JSON objects in `rust-project.json` format.\n---\n---```lua\n---default = {}\n---```\n---@field linkedProjects? any[]\n---@field lru? _.lspconfig.settings.rust_analyzer.RustAnalyzer.Lru\n---@field notifications? _.lspconfig.settings.rust_analyzer.RustAnalyzer.Notifications\n---The number of worker threads in the main loop. The default `null` means to pick\n---automatically.\n---@field numThreads? any|number|\"physical\" | \"logical\"\n---@field procMacro? _.lspconfig.settings.rust_analyzer.RustAnalyzer.ProcMacro\n---@field profiling? _.lspconfig.settings.rust_analyzer.RustAnalyzer.Profiling\n---@field references? _.lspconfig.settings.rust_analyzer.RustAnalyzer.References\n---@field rename? _.lspconfig.settings.rust_analyzer.RustAnalyzer.Rename\n---Restart the server automatically when settings that require a restart are changed.\n---@field restartServerOnConfigChange? boolean\n---@field runnables? _.lspconfig.settings.rust_analyzer.RustAnalyzer.Runnables\n---@field rustc? _.lspconfig.settings.rust_analyzer.RustAnalyzer.Rustc\n---@field rustfmt? _.lspconfig.settings.rust_analyzer.RustAnalyzer.Rustfmt\n---@field semanticHighlighting? _.lspconfig.settings.rust_analyzer.RustAnalyzer.SemanticHighlighting\n---@field server? _.lspconfig.settings.rust_analyzer.RustAnalyzer.Server\n---Show Rust Dependencies in the Explorer view.\n---\n---```lua\n---default = true\n---```\n---@field showDependenciesExplorer? boolean\n---Show error notifications when requests fail.\n---\n---```lua\n---default = true\n---```\n---@field showRequestFailedErrorNotification? boolean\n---Show Syntax Tree in the Explorer view.\n---@field showSyntaxTree? boolean\n---Show a notification for unlinked files, prompting the user to add the corresponding Cargo.toml to the linked projects setting.\n---\n---```lua\n---default = true\n---```\n---@field showUnlinkedFileNotification? boolean\n---@field signatureInfo? _.lspconfig.settings.rust_analyzer.RustAnalyzer.SignatureInfo\n---@field statusBar? _.lspconfig.settings.rust_analyzer.RustAnalyzer.StatusBar\n---Show the Test Explorer view.\n---@field testExplorer? boolean\n---@field trace? _.lspconfig.settings.rust_analyzer.RustAnalyzer.Trace\n---@field typing? _.lspconfig.settings.rust_analyzer.RustAnalyzer.Typing\n---@field vfs? _.lspconfig.settings.rust_analyzer.RustAnalyzer.Vfs\n---@field workspace? _.lspconfig.settings.rust_analyzer.RustAnalyzer.Workspace\n\n---@class lspconfig.settings.rust_analyzer\n---@field [\"rust-analyzer\"]? _.lspconfig.settings.rust_analyzer.RustAnalyzer\n"
  },
  {
    "path": "lua/lspconfig/types/lsp/solargraph.lua",
    "content": "---@meta\n\n---The host and port to use for external transports. (Ignored for stdio and socket transports.)\n---\n---```lua\n---default = {\n---  host = \"localhost\",\n---  port = 7658\n---}\n---```\n---@class _.lspconfig.settings.solargraph.Solargraph.ExternalServer\n---```lua\n---default = \"localhost\"\n---```\n---@field host? string\n---```lua\n---default = 7658\n---```\n---@field port? integer\n\n---@class _.lspconfig.settings.solargraph.Solargraph\n---Enable automatic formatting while typing (WARNING: experimental)\n---@field autoformat? true | false\n---Path to the bundle executable, defaults to 'bundle'. Needs to be an absolute path for the 'bundle' exec/shim\n---\n---```lua\n---default = \"bundle\"\n---```\n---@field bundlerPath? string\n---Automatically check if a new version of the Solargraph gem is available.\n---\n---```lua\n---default = true\n---```\n---@field checkGemVersion? true | false\n---Path to the solargraph command.  Set this to an absolute path to select from multiple installed Ruby versions.\n---\n---```lua\n---default = \"solargraph\"\n---```\n---@field commandPath? string\n---Enable completion\n---\n---```lua\n---default = true\n---```\n---@field completion? true | false\n---Enable definitions (go to, etc.)\n---\n---```lua\n---default = true\n---```\n---@field definitions? true | false\n---Enable diagnostics\n---@field diagnostics? true | false\n---The host and port to use for external transports. (Ignored for stdio and socket transports.)\n---\n---```lua\n---default = {\n---  host = \"localhost\",\n---  port = 7658\n---}\n---```\n---@field externalServer? _.lspconfig.settings.solargraph.Solargraph.ExternalServer\n---Enable folding ranges\n---\n---```lua\n---default = true\n---```\n---@field folding? boolean\n---Enable document formatting\n---@field formatting? true | false\n---Enable hover\n---\n---```lua\n---default = true\n---```\n---@field hover? true | false\n---Level of debug info to log. `warn` is least and `debug` is most.\n---\n---```lua\n---default = \"warn\"\n---```\n---@field logLevel? \"warn\" | \"info\" | \"debug\"\n---Enable finding references\n---\n---```lua\n---default = true\n---```\n---@field references? true | false\n---Enable symbol renaming\n---\n---```lua\n---default = true\n---```\n---@field rename? true | false\n---Enable symbols\n---\n---```lua\n---default = true\n---```\n---@field symbols? true | false\n---The type of transport to use.\n---\n---```lua\n---default = \"socket\"\n---```\n---@field transport? \"socket\" | \"stdio\" | \"external\"\n---Use `bundle exec` to run solargraph. (If this is true, the solargraph.commandPath setting is ignored.)\n---@field useBundler? boolean\n\n---@class lspconfig.settings.solargraph\n---@field solargraph? _.lspconfig.settings.solargraph.Solargraph\n"
  },
  {
    "path": "lua/lspconfig/types/lsp/solidity_ls.lua",
    "content": "---@meta\n\n---@class _.lspconfig.settings.solidity_ls.Solidity\n---Compile using a local solc (js) binary file, please include the path of the file if wanted: 'C://v0.4.3+commit.2353da71.js'\n---\n---```lua\n---default = \"\"\n---```\n---@field compileUsingLocalVersion? string\n---Configuration to download a 'remote' solc (js) version binary file from 'https://binaries.soliditylang.org/', for example: 'latest' will always use the latest version, or a specific version like: 'v0.4.3+commit.2353da71', use the command 'Solidity: Get solidity releases' to list all versions available, or just right click in a solidity file and select either `Solidity: Change global compiler version (Remote)` or `Solidity: Change workspace compiler version (Remote)` to use the wizard to set the correct version or setting for either the current workspace or globally\n---\n---```lua\n---default = \"latest\"\n---```\n---@field compileUsingRemoteVersion? string\n---Optimize for how many times you intend to run the code. Lower values will optimize more for initial deployment cost, higher values will optimize more for high-frequency usage.\n---\n---```lua\n---default = 200\n---```\n---@field compilerOptimization? number\n---Sets the default compiler and compiler configuration to use. Remote will use the configured compiler using the setting 'compileUsingRemoteVersion' downloaded from https://binaries.soliditylang.org/', `localFile` will use the solc file in the location configured in the setting: `compileUsingLocalVersion`, `localNodeModule` will attempt to find the solc file in the node_modules folder / package configured on 'nodemodulespackage' and 'embedded' which will use the solc version packaged with the extension. The default is 'remote' which is configured as 'latest'\n---\n---```lua\n---default = \"remote\"\n---```\n---@field defaultCompiler? \"remote\" | \"localFile\" | \"localNodeModule\" | \"embedded\"\n---Enables as you type compilation of the document and error highlighting\n---\n---```lua\n---default = true\n---```\n---@field enabledAsYouTypeCompilationErrorCheck? boolean\n---Evm version, ie london, istanbul, petersburg, constantinople, byzantium, tangerineWhistle, spuriousDragon, homestead, frontier, or leave it blank for the default evm version\n---\n---```lua\n---default = \"\"\n---```\n---@field evmVersion? string\n---Api key for downloading ethereum smart contracts from etherscan.io\n---\n---```lua\n---default = \"YourApiKey\"\n---```\n---@field explorer_etherscan_apikey? string\n---Enables / disables the solidity formatter prettier (default) or forge (note it needs to be installed)\n---\n---```lua\n---default = \"prettier\"\n---```\n---@field formatter? \"none\" | \"prettier\" | \"forge\"\n---Enables linting using either solium (ethlint) or solhint. Possible options 'solhint' and 'solium', the default is solhint\n---\n---```lua\n---default = \"solhint\"\n---```\n---@field linter? \"\" | \"solhint\" | \"solium\"\n---Enables mono repo support in the current workspace, a project folder will be signaled if a file is found on the current folder or above including: remappings.txt, truffle-config.js, brownie-config.yaml, foundry.toml, hardhat.config.js, hardhat.config.ts, dappfile\n---\n---```lua\n---default = true\n---```\n---@field monoRepoSupport? boolean\n---The node modules package to find the solcjs compiler\n---\n---```lua\n---default = \"solc\"\n---```\n---@field nodemodulespackage? string\n---Default directory where the Package Dependency store its contracts, i.e: 'src', 'contracts', or just a blank string '', this is used to avoid typing imports with subfolder paths\n---\n---```lua\n---default = { \"src\", \"contracts\", \"\" }\n---```\n---@field packageDefaultDependenciesContractsDirectory? string|string[]\n---Default directory for Packages Dependencies, i.e: 'node_modules', 'lib'. This is used to avoid typing imports with that path prefix, multiple dependency paths can be set as an array: ['node_modules', 'lib'] \n---\n---```lua\n---default = { \"node_modules\", \"lib\" }\n---```\n---@field packageDefaultDependenciesDirectory? string|string[]\n---Remappings to resolve contracts to local files / directories, i.e: [\"@openzeppelin/=lib/openzeppelin-contracts\",\"ds-test/=lib/ds-test/src/\"]\n---\n---```lua\n---default = {}\n---```\n---@field remappings? any[]\n---Unix Remappings to resolve contracts to local Unix files / directories (Note this overrides the generic remapping settings if the OS is Unix based), i.e: [\"@openzeppelin/=/opt/lib/openzeppelin-contracts\",\"ds-test/=/opt/lib/ds-test/src/\"]\n---\n---```lua\n---default = {}\n---```\n---@field remappingsUnix? any[]\n---Windows Remappings to resolve contracts to local Windows files / directories (Note this overrides the generic remapping settings if the OS is Windows) , i.e: [\"@openzeppelin/=C:/lib/openzeppelin-contracts\",\"ds-test/=C:/lib/ds-test/src/\"]\n---\n---```lua\n---default = {}\n---```\n---@field remappingsWindows? any[]\n---The package directory to find the solhint linter\n---\n---```lua\n---default = \"\"\n---```\n---@field solhintPackageDirectory? string\n---Solhint linting validation rules\n---@field solhintRules? table\n---Solium linting validation rules\n---\n---```lua\n---default = {\n---  [\"imports-on-top\"] = 0,\n---  indentation = { \"off\", 4 },\n---  quotes = { \"off\", \"double\" },\n---  [\"variable-declarations\"] = 0\n---}\n---```\n---@field soliumRules? table\n---Delay to trigger the validation of the changes of the current document (compilation, solium)\n---\n---```lua\n---default = 1500\n---```\n---@field validationDelay? number\n---Compile using the intermediate representation (IR) instead of the AST\n---@field viaIR? boolean\n\n---@class lspconfig.settings.solidity_ls\n---@field solidity? _.lspconfig.settings.solidity_ls.Solidity\n"
  },
  {
    "path": "lua/lspconfig/types/lsp/sorbet.lua",
    "content": "---@meta\n\n---@class _.lspconfig.settings.sorbet.Sorbet\n---List of workspace file patterns that contribute to Sorbet's configuration.  Changes to any of those files should trigger a restart of any actively running Sorbet language server.\n---\n---```lua\n---default = { \"**/sorbet/config\", \"**/Gemfile.lock\" }\n---```\n---@field configFilePatterns? string[]\n---Enable Sorbet Ruby IDE features\n---@field enabled? boolean\n---Shows warning for untyped values.\n---\n---```lua\n---default = \"nowhere\"\n---```\n---@field highlightUntyped? \"nowhere\" | \"everywhere-but-tests\" | \"everywhere\"\n---Which severity to use to highlight untyped usages with (controls the squiggle colors)\n---\n---```lua\n---default = 3\n---```\n---@field highlightUntypedDiagnosticSeverity? 1 | 2 | 3 | 4\n---Standard Ruby LSP configurations.  If you commit your VSCode settings to source control, you probably want to commit *this* setting, not `sorbet.userLspConfigs`.\n---\n---```lua\n---default = { {\n---    command = { \"bundle\", \"exec\", \"srb\", \"typecheck\", \"--lsp\" },\n---    description = \"Stable Sorbet Ruby IDE features\",\n---    id = \"stable\",\n---    name = \"Sorbet\"\n---  }, {\n---    command = { \"bundle\", \"exec\", \"srb\", \"typecheck\", \"--lsp\", \"--enable-all-beta-lsp-features\" },\n---    description = \"Beta Sorbet Ruby IDE features\",\n---    id = \"beta\",\n---    name = \"Sorbet (Beta)\"\n---  }, {\n---    command = { \"bundle\", \"exec\", \"srb\", \"typecheck\", \"--lsp\", \"--enable-all-experimental-lsp-features\" },\n---    description = \"Experimental Sorbet Ruby IDE features (warning: crashy, for developers only)\",\n---    id = \"experimental\",\n---    name = \"Sorbet (Experimental)\"\n---  } }\n---```\n---@field lspConfigs? table[]\n---Show the extension output window on errors.\n---@field revealOutputOnError? boolean\n---The default configuration to use from `sorbet.userLspConfigs` or `sorbet.lspConfigs`.  If unset, defaults to the first item in `sorbet.userLspConfigs` or `sorbet.lspConfigs`.\n---@field selectedLspConfigId? string\n---Displays an auto-complete nudge in `typed: false` files.\n---\n---```lua\n---default = true\n---```\n---@field typedFalseCompletionNudges? boolean\n---Custom user LSP configurations that supplement `sorbet.lspConfigs` (and override configurations with the same id).  If you commit your VSCode settings to source control, you probably want to commit `sorbet.lspConfigs`, not this value.\n---\n---```lua\n---default = {}\n---```\n---@field userLspConfigs? table[]\n\n---@class lspconfig.settings.sorbet\n---@field sorbet? _.lspconfig.settings.sorbet.Sorbet\n"
  },
  {
    "path": "lua/lspconfig/types/lsp/sourcekit.lua",
    "content": "---@meta\n\n---@class _.lspconfig.settings.sourcekit.SourcekitLsp.InlayHints\n---Display Inlay Hints. Inlay Hints are variable annotations indicating their inferred type. They are only available if you are using Swift 5.6 or later.\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.sourcekit.SourcekitLsp.Trace\n---Traces the communication between VS Code and the SourceKit-LSP language server.\n---\n---```lua\n---default = \"off\"\n---```\n---@field server? \"off\" | \"messages\" | \"verbose\"\n\n---@class _.lspconfig.settings.sourcekit.SourcekitLsp\n---Disable the running of SourceKit-LSP.\n---@field disable? boolean\n---@field inlayHints? _.lspconfig.settings.sourcekit.SourcekitLsp.InlayHints\n---Arguments to pass to SourceKit-LSP. Keys and values should be provided as individual entries in the list. e.g. `--experimental-feature=show-macro-expansions`\n---\n---```lua\n---default = {}\n---```\n---@field serverArguments? string[]\n---The path of the `sourcekit-lsp` executable. The default is to look in the path where `swift` is found.\n---@field serverPath? string\n---Add LSP functionality for C/C++ files. By default this is set to disable when the C/C++ extension is active.\n---\n---```lua\n---default = \"cpptools-inactive\"\n---```\n---@field [\"support-c-cpp\"]? \"enable\" | \"disable\" | \"cpptools-inactive\"\n---@field trace? _.lspconfig.settings.sourcekit.SourcekitLsp.Trace\n\n---@class _.lspconfig.settings.sourcekit.Swift.Debugger\n---Select which debug adapter to use to debug Swift executables.\n---\n---```lua\n---default = \"auto\"\n---```\n---@field debugAdapter? \"auto\" | \"lldb-dap\" | \"CodeLLDB\"\n---Path to lldb debug adapter.\n---\n---```lua\n---default = \"\"\n---```\n---@field path? string\n---Choose how CodeLLDB settings are updated when debugging Swift executables.\n---\n---```lua\n---default = \"prompt\"\n---```\n---@field setupCodeLLDB? \"prompt\" | \"alwaysUpdateGlobal\" | \"alwaysUpdateWorkspace\" | \"never\"\n---Use the LLDB debug adapter packaged with the Swift toolchain as your debug adapter. Note: this is only available starting with Swift 6. The CodeLLDB extension will be used if your Swift toolchain does not contain lldb-dap.\n---@field useDebugAdapterFromToolchain? boolean\n\n---@class _.lspconfig.settings.sourcekit.Swift.SourcekitLsp.Trace\n---Controls logging the communication between VS Code and the SourceKit-LSP language server. Logs can be viewed in Output > SourceKit Language Server.\n---\n---```lua\n---default = \"off\"\n---```\n---@field server? \"off\" | \"messages\" | \"verbose\"\n\n---@class _.lspconfig.settings.sourcekit.Swift.SourcekitLsp\n---Turns background indexing `on` or `off`. `auto` will enable background indexing if the Swift version is >= 6.1. This option has no effect in Swift versions prior to 6.0.\n---\n---```lua\n---default = \"auto\"\n---```\n---@field backgroundIndexing? \"on\" | \"off\" | \"auto\"\n---Disable SourceKit-LSP. This will turn off features like code completion, error diagnostics and jump-to-definition. Features like swift-testing test discovery will not work correctly.\n---@field disable? boolean\n---Arguments to pass to SourceKit-LSP. Keys and values should be provided as individual entries in the list. e.g. `--experimental-feature=show-macro-expansions`\n---\n---```lua\n---default = {}\n---```\n---@field serverArguments? string[]\n---The path of the `sourcekit-lsp` executable. The default is to look in the path where `swift` is found.\n---@field serverPath? string\n---List of languages supported by SourceKit-LSP. This is used to determine whether SourceKit-LSP should provide language features for a particular file type. If you want a different extension to provide support for a language, remove it from the list.\n---\n---```lua\n---default = { \"swift\", \"objective-c\", \"objective-cpp\", \"c\", \"cpp\" }\n---```\n---@field [\"supported-languages\"]? string[]\n---@field trace? _.lspconfig.settings.sourcekit.Swift.SourcekitLsp.Trace\n\n---@class _.lspconfig.settings.sourcekit.Swift\n---The path of the SDK to compile against (`--sdk` parameter). This is of use when supporting non-standard SDK layouts on Windows and using custom SDKs. The default SDK is determined by the environment on macOS and Windows.\n---\n---For SwiftPM projects, prefer using `swift.swiftSDK` with a triple (such as `arm64-apple-ios`) or Swift SDK name instead.\n---\n---```lua\n---default = \"\"\n---```\n---@field SDK? string\n---Action after a Build task generates errors.\n---\n---```lua\n---default = \"Focus Terminal\"\n---```\n---@field actionAfterBuildError? \"Focus Problems\" | \"Focus Terminal\" | \"Do Nothing\"\n---Additional arguments to pass to the `swift test` or `swift build` commands used when building and running tests from within VS Code.\n---\n---```lua\n---default = {}\n---```\n---@field additionalTestArguments? string[]\n---The path to a directory that will be used to store attachments produced during a test run.\n---\n---A relative path resolves relative to the root directory of the workspace running the test(s)\n---\n---```lua\n---default = \".build/attachments\"\n---```\n---@field attachmentsPath? string\n---When loading a `Package.swift`, auto-generate `launch.json` configurations for running any executables.\n---\n---```lua\n---default = true\n---```\n---@field autoGenerateLaunchConfigurations? boolean\n---Run `swift build` in the background whenever a file is saved. Setting to `true` enables, or you can use `object` notation for more fine grained control. It is possible the background compilation will already be running when you attempt a compile yourself, so this is disabled by default.\n---@field backgroundCompilation? boolean|table\n---Additional arguments to pass to `swift build` and `swift test`. Keys and values should be provided as individual entries in the list. If you have created a copy of the build task in `tasks.json` then these build arguments will not be propagated to that task.\n---\n---```lua\n---default = {}\n---```\n---@field buildArguments? string[]\n---The path to a directory that will be used for build artifacts. This path will be added to all swift package manager commands that are executed by vscode-swift extension via `--scratch-path` option. When no value provided - nothing gets passed to swift package manager and it will use its default value of `.build` folder in the workspace.\n---\n---You can use absolute path for directory or the relative path, which will use the workspace path as a base. Note that VS Code does not respect tildes (`~`) in paths which represents user home folder under *nix systems.\n---\n---```lua\n---default = \"\"\n---```\n---@field buildPath? string\n---When opening a .sourckit-lsp/config.json configuration file, whether or not to check if the $schema matches the version of Swift you are using.\n---\n---```lua\n---default = true\n---```\n---@field checkLspConfigurationSchema? boolean\n---When enabled, the extension will create \"swift\" build tasks for library products in the package manifest. Note that automatic library products will not be included.\n---@field createTasksForLibraryProducts? boolean\n---@field debugger? _.lspconfig.settings.sourcekit.Swift.Debugger\n---Output additional diagnostics to the Swift output channel.\n---@field diagnostics? boolean\n---Controls how diagnostics from the various providers are merged into the collection of `swift` errors and warnings shown in the Problems pane.\n---\n---```lua\n---default = \"keepSourceKit\"\n---```\n---@field diagnosticsCollection? \"onlySwiftc\" | \"onlySourceKit\" | \"keepSwiftc\" | \"keepSourceKit\" | \"keepAll\"\n---The formatting style used when printing diagnostics in the Problems panel. Corresponds to the `-diagnostic-style` option to pass to `swiftc` when running `swift` tasks.\n---\n---```lua\n---default = \"default\"\n---```\n---@field diagnosticsStyle? \"default\" | \"llvm\" | \"swift\"\n---Disable automatic running of `swift package resolve` whenever the `Package.swift` or `Package.resolved` files are updated. This will also disable searching for command plugins and the initial test discovery process.\n---@field disableAutoResolve? boolean\n---Disable sandboxing when running SwiftPM commands. In most cases you should keep the sandbox enabled and leave this setting set to `false`\n---@field disableSandbox? boolean\n---Disable sandboxing when running SwiftPM commands. In most cases you should keep the sandbox enabled and leave this setting set to `false`\n---@field disableSandox? boolean\n---Disables automated Build Tasks, Package Dependency view, Launch configuration generation and TestExplorer.\n---@field disableSwiftPackageManagerIntegration? boolean\n---Disable the automatic Swiftly installation prompt when no Swift toolchain is found.\n---@field disableSwiftlyInstallPrompt? boolean\n---Controls whether or not the extension will contribute environment variables defined in `Swift: Environment Variables` to the integrated terminal. If this is set to `true` and a custom `Swift: Path` is also set then the swift path is appended to the terminal's `PATH`.\n---\n---```lua\n---default = true\n---```\n---@field enableTerminalEnvironment? boolean\n---A list of paths to exclude from code coverage reports. Paths can be absolute or relative to the workspace root.\n---\n---```lua\n---default = {}\n---```\n---@field excludeFromCodeCoverage? string[]\n---Configure glob patterns for excluding Swift package folders from getting activated. This will take precedence over the glob patterns provided to `files.exclude`.\n---@field excludePathsFromActivation? table\n---A list of glob patterns to exclude from the Package Dependencies view. Always use forward-slashes in glob expressions regardless of platform. This is combined with VS Code's default `files.exclude` setting.\n---\n---```lua\n---default = { \"**/.git\", \"**/.github\" }\n---```\n---@field excludePathsFromPackageDependencies? string[]\n---A list of folders to ignore when searching sub-folders for Swift Packages. The `swift.searchSubfoldersForPackages` must be `true` for this setting to have an effect. Always use forward-slashes in glob expressions regardless of platform. This is combined with VS Code's `files.exclude` setting.\n---\n---```lua\n---default = { \".\", \".build\", \"Packages\", \"out\", \"bazel-out\", \"bazel-bin\" }\n---```\n---@field ignoreSearchingForPackagesInSubfolders? string[]\n---Ignore `.swift-version` files and disable automatic toolchain switching based on them. When enabled, the extension will always use the global default toolchain instead of switching based on per-project `.swift-version` files.\n---@field ignoreSwiftVersionFile? boolean\n---Set the branch to use when setting the `$schema` property of the SourceKit-LSP configuration. For example: \"release/6.1\" or \"main\". When this setting is unset, the extension will determine the branch based on the version of the toolchain that is in use.\n---@field lspConfigurationBranch? string\n---Controls whether to open a swift project automatically after creating it.\n---\n---```lua\n---default = \"prompt\"\n---```\n---@field openAfterCreateNewProject? \"always\" | \"alwaysNewWindow\" | \"whenNoFolderOpen\" | \"prompt\"\n---The log level of the Swift output channel. This has no effect on the verbosity of messages written to the extension's log file.\n---\n---```lua\n---default = \"info\"\n---```\n---@field outputChannelLogLevel? \"debug\" | \"info\" | \"warn\" | \"error\"\n---Additional arguments to pass to swift commands that do package resolution, such as `swift package resolve`, `swift package update`, `swift build` and `swift test`. Keys and values should be provided as individual entries in the list.\n---\n---```lua\n---default = {}\n---```\n---@field packageArguments? string[]\n---Override the default path of the folder containing the Swift executables. The default is to look in the `PATH` environment variable.\n---\n---```lua\n---default = \"\"\n---```\n---@field path? string\n---Configure a list of arguments to pass to command invocations. This can either be an array of arguments, which will apply to all command invocations, or an object with command names as the key where the value is an array of arguments.\n---\n---```lua\n---default = {}\n---```\n---@field pluginArguments? any\n---Configures a list of permissions to be used when running a command plugins.\n---\n---Permissions objects are defined in the form:\n---\n---`{ \"PluginName:command\": { \"allowWritingToPackageDirectory\": true } }`.\n---\n---A key of `PluginName:command` will set permissions for a specific command. A key of `PluginName` will set permissions for all commands in the plugin.\n---\n---```lua\n---default = {}\n---```\n---@field pluginPermissions? table\n---Controls whether or not to record the duration of tests in the Test Explorer. This is used to show the duration of tests in the Test Explorer view. If you're experiencing performance issues when running a large number of tests that complete quickly, disabling this setting can make the UI more responsive.\n---\n---```lua\n---default = true\n---```\n---@field recordTestDuration? boolean\n---The path of the folder containing the Swift runtime libraries. This is of use when supporting non-standard SDK layouts on Windows. On Windows the runtime path is added to the `Path` environment variable. This is of less use on macOS and Linux but will be added to `DYLD_LIBRARY_PATH` and `LD_LIBRARY_PATH` environment variables respectively on each platform. \n---\n---```lua\n---default = \"\"\n---```\n---@field runtimePath? string\n---Runtime [sanitizer instrumentation](https://www.swift.org/documentation/server/guides/llvm-sanitizers.html).\n---\n---```lua\n---default = \"off\"\n---```\n---@field sanitizer? \"off\" | \"thread\" | \"address\"\n---The default Swift version to use when running Swift scripts.\n---@field scriptSwiftLanguageVersion? \"6\" | \"5\" | \"4.2\" | \"4\" | \"Ask Every Run\"\n---Search sub-folders of workspace folder for Swift Packages at start up.\n---@field searchSubfoldersForPackages? boolean\n---Controls where to show the Swift build progress when running a `swift` build task.\n---\n---```lua\n---default = \"swiftStatus\"\n---```\n---@field showBuildStatus? \"never\" | \"swiftStatus\" | \"progress\" | \"notification\"\n---Controls whether or not the create new swift project button appears in the welcome page.\n---\n---```lua\n---default = true\n---```\n---@field showCreateSwiftProjectInWelcomePage? boolean\n---Controls whether or not to show inline code lenses for running and debugging tests inline, above test and suite declarations. If set to an array, specify one or more of the following: 'run', 'debug', 'coverage'.\n---\n---```lua\n---default = true\n---```\n---@field showTestCodeLenses? boolean|string[]\n---@field [\"sourcekit-lsp\"]? _.lspconfig.settings.sourcekit.Swift.SourcekitLsp\n---Additional environment variables to pass to swift operations (`swift build`, `swift resolve`, etc...).\n---\n---```lua\n---default = {}\n---```\n---@field swiftEnvironmentVariables? table\n---The [Swift SDK](https://github.com/swiftlang/swift-evolution/blob/main/proposals/0387-cross-compilation-destinations.md) to compile against (`--swift-sdk` parameter).\n---\n---```lua\n---default = \"\"\n---```\n---@field swiftSDK? string\n---Environment variables to set when running tests. To set environment variables when debugging an application you should edit the `env` field in the relevant `launch.json` configuration.\n---\n---```lua\n---default = {}\n---```\n---@field testEnvironmentVariables? table\n---Controls whether or not the extension will warn about being unable to create symlinks. (Windows only)\n---\n---```lua\n---default = true\n---```\n---@field warnAboutSymlinkCreation? boolean\n\n---@class lspconfig.settings.sourcekit\n---@field [\"sourcekit-lsp\"]? _.lspconfig.settings.sourcekit.SourcekitLsp\n---@field swift? _.lspconfig.settings.sourcekit.Swift\n"
  },
  {
    "path": "lua/lspconfig/types/lsp/spectral.lua",
    "content": "---@meta\n\n---@class _.lspconfig.settings.spectral.Spectral.Trace\n---Traces the communication between VS Code and the language server.\n---\n---```lua\n---default = \"off\"\n---```\n---@field server? \"off\" | \"messages\" | \"verbose\"\n\n---@class _.lspconfig.settings.spectral.Spectral\n---Controls whether or not Spectral is enabled.\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n---Location of the ruleset file to use when validating. If omitted, the default is a .spectral.yml/.spectral.json in the same folder as the document being validated. Paths are relative to the workspace. This can also be a remote HTTP url.\n---@field rulesetFile? string\n---Run the linter on save (onSave) or as you type (onType).\n---\n---```lua\n---default = \"onType\"\n---```\n---@field run? \"onSave\" | \"onType\"\n---@field trace? _.lspconfig.settings.spectral.Spectral.Trace\n---An array of file globs (e.g., `**/*.yaml`) in minimatch glob format which should be validated by Spectral. If language identifiers are also specified, the file must match both in order to be validated. You can also use negative file globs (e.g., `!**/package.json`) here to exclude files.\n---@field validateFiles? string[]\n---An array of language IDs which should be validated by Spectral. If file globs are also specified, the file must match both in order to be validated.\n---\n---```lua\n---default = { \"json\", \"yaml\" }\n---```\n---@field validateLanguages? string[]\n\n---@class lspconfig.settings.spectral\n---@field spectral? _.lspconfig.settings.spectral.Spectral\n"
  },
  {
    "path": "lua/lspconfig/types/lsp/stylelint_lsp.lua",
    "content": "---@meta\n\n---@class _.lspconfig.settings.stylelint_lsp.Stylelintplus.Trace\n---Capture trace messages from the server.\n---\n---```lua\n---default = \"off\"\n---```\n---@field server? \"off\" | \"messages\" | \"verbose\"\n\n---@class _.lspconfig.settings.stylelint_lsp.Stylelintplus\n---Auto-fix on format request.\n---@field autoFixOnFormat? boolean\n---Auto-fix and format on save.\n---@field autoFixOnSave? boolean\n---Stylelint config. If config and configFile are unset, stylelint will automatically look for a config file.\n---@field config? table\n---Stylelint config file. If config and configFile are unset, stylelint will automatically look for a config file.\n---@field configFile? string\n---Stylelint config overrides. These will be applied on top of the config, configFile, or auto-discovered config file loaded by stylelint.\n---@field configOverrides? table\n---Run stylelint on javascript/typescript files.\n---@field cssInJs? boolean\n---If false, stylelint will not validate the file.\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n---Filetypes that coc-stylelintplus will lint.\n---\n---```lua\n---default = { \"css\", \"less\", \"postcss\", \"sass\", \"scss\", \"sugarss\", \"vue\", \"wxss\" }\n---```\n---@field filetypes? string[]\n---@field trace? _.lspconfig.settings.stylelint_lsp.Stylelintplus.Trace\n---Validate after saving. Automatically enabled if autoFixOnSave is enabled.\n---@field validateOnSave? boolean\n---Validate after making changes.\n---\n---```lua\n---default = true\n---```\n---@field validateOnType? boolean\n\n---@class lspconfig.settings.stylelint_lsp\n---@field stylelintplus? _.lspconfig.settings.stylelint_lsp.Stylelintplus\n"
  },
  {
    "path": "lua/lspconfig/types/lsp/svelte.lua",
    "content": "---@meta\n\n---@class _.lspconfig.settings.svelte.Svelte.LanguageServer\n---- You normally don't set this - Enable more verbose logging for the language server useful for debugging language server execution.\n---@field debug? boolean\n---- You normally don't set this - Path to the language server executable. If you installed the \"svelte-language-server\" npm package, it's within there at \"bin/server.js\". Path can be either relative to your workspace root or absolute. Set this only if you want to use a custom version of the language server. This will then also use the workspace version of TypeScript. This setting can only be changed in user settings for security reasons.\n---@field [\"ls-path\"]? string\n---- You normally don't set this - At which port to spawn the language server. Can be used for attaching to the process for debugging / profiling. If you experience crashes due to \"port already in use\", try setting the port. -1 = default port is used.\n---\n---```lua\n---default = -1\n---```\n---@field port? number\n---- You normally don't need this - Path to the node executable to use to spawn the language server. This is useful when you depend on native modules such as node-sass as without this they will run in the context of vscode, meaning node version mismatch is likely. Minimum required node version is 12.17. This setting can only be changed in user settings for security reasons.\n---@field runtime? string\n---You normally don't set this. Additional arguments to pass to the node executable when spawning the language server. This is useful when you use something like Yarn PnP and need its loader arguments `[\"--loader\", \".pnp.loader.mjs\"]`.\n---@field [\"runtime-args\"]? any[]\n\n---@class _.lspconfig.settings.svelte.Svelte.Plugin.Css.ColorPresentations\n---Enable color picker for CSS\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n\n---@class _.lspconfig.settings.svelte.Svelte.Plugin.Css.Completions\n---Enable emmet auto completions for CSS\n---\n---```lua\n---default = true\n---```\n---@field emmet? boolean\n---Enable auto completions for CSS\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n\n---@class _.lspconfig.settings.svelte.Svelte.Plugin.Css.Diagnostics\n---Enable diagnostic messages for CSS\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n\n---@class _.lspconfig.settings.svelte.Svelte.Plugin.Css.DocumentColors\n---Enable document colors for CSS\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n\n---@class _.lspconfig.settings.svelte.Svelte.Plugin.Css.DocumentSymbols\n---Enable document symbols for CSS\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n\n---@class _.lspconfig.settings.svelte.Svelte.Plugin.Css.Hover\n---Enable hover info for CSS\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n\n---@class _.lspconfig.settings.svelte.Svelte.Plugin.Css.SelectionRange\n---Enable selection range for CSS\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n\n---@class _.lspconfig.settings.svelte.Svelte.Plugin.Css\n---@field colorPresentations? _.lspconfig.settings.svelte.Svelte.Plugin.Css.ColorPresentations\n---@field completions? _.lspconfig.settings.svelte.Svelte.Plugin.Css.Completions\n---@field diagnostics? _.lspconfig.settings.svelte.Svelte.Plugin.Css.Diagnostics\n---@field documentColors? _.lspconfig.settings.svelte.Svelte.Plugin.Css.DocumentColors\n---@field documentSymbols? _.lspconfig.settings.svelte.Svelte.Plugin.Css.DocumentSymbols\n---Enable the CSS plugin\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n---Which css files should be checked for global variables (`--global-var: value;`). These variables are added to the css completions. String of comma-separated file paths or globs relative to workspace root.\n---\n---```lua\n---default = \"\"\n---```\n---@field globals? string\n---@field hover? _.lspconfig.settings.svelte.Svelte.Plugin.Css.Hover\n---@field selectionRange? _.lspconfig.settings.svelte.Svelte.Plugin.Css.SelectionRange\n\n---@class _.lspconfig.settings.svelte.Svelte.Plugin.Html.Completions\n---Enable emmet auto completions for HTML\n---\n---```lua\n---default = true\n---```\n---@field emmet? boolean\n---Enable auto completions for HTML\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n\n---@class _.lspconfig.settings.svelte.Svelte.Plugin.Html.DocumentSymbols\n---Enable document symbols for HTML\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n\n---@class _.lspconfig.settings.svelte.Svelte.Plugin.Html.Hover\n---Enable hover info for HTML\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n\n---@class _.lspconfig.settings.svelte.Svelte.Plugin.Html.LinkedEditing\n---Enable Linked Editing for HTML\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n\n---@class _.lspconfig.settings.svelte.Svelte.Plugin.Html.TagComplete\n---Enable HTML tag auto closing\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n\n---@class _.lspconfig.settings.svelte.Svelte.Plugin.Html\n---@field completions? _.lspconfig.settings.svelte.Svelte.Plugin.Html.Completions\n---@field documentSymbols? _.lspconfig.settings.svelte.Svelte.Plugin.Html.DocumentSymbols\n---Enable the HTML plugin\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n---@field hover? _.lspconfig.settings.svelte.Svelte.Plugin.Html.Hover\n---@field linkedEditing? _.lspconfig.settings.svelte.Svelte.Plugin.Html.LinkedEditing\n---@field tagComplete? _.lspconfig.settings.svelte.Svelte.Plugin.Html.TagComplete\n\n---@class _.lspconfig.settings.svelte.Svelte.Plugin.Svelte.CodeActions\n---Enable Code Actions for Svelte\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n\n---@class _.lspconfig.settings.svelte.Svelte.Plugin.Svelte.Completions\n---Enable auto completions for Svelte\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n\n---@class _.lspconfig.settings.svelte.Svelte.Plugin.Svelte.Diagnostics\n---Enable diagnostic messages for Svelte\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n\n---@class _.lspconfig.settings.svelte.Svelte.Plugin.Svelte.DocumentHighlight\n---Enable document highlight support. Requires a restart.\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n\n---@class _.lspconfig.settings.svelte.Svelte.Plugin.Svelte.Format.Config\n---Maximum line width after which code is tried to be broken up. This is a Prettier core option. If you have the Prettier extension installed, this option is ignored and the corresponding option of that extension is used instead. This option is also ignored if there's any kind of configuration file, for example a `.prettierrc` file.\n---\n---```lua\n---default = 80\n---```\n---@field printWidth? number\n---Use single quotes instead of double quotes, where possible. This is a Prettier core option. If you have the Prettier extension installed, this option is ignored and the corresponding option of that extension is used instead. This option is also ignored if there's any kind of configuration file, for example a `.prettierrc` file.\n---@field singleQuote? boolean\n---Option to enable/disable component attribute shorthand if attribute name and expression are the same. This option is ignored if there's any kind of configuration file, for example a `.prettierrc` file.\n---\n---```lua\n---default = true\n---```\n---@field svelteAllowShorthand? boolean\n---Put the `>` of a multiline element on a new line. This option is ignored if there's any kind of configuration file, for example a `.prettierrc` file.\n---\n---```lua\n---default = true\n---```\n---@field svelteBracketNewLine? boolean\n---Whether or not to indent code inside `<script>` and `<style>` tags. This option is ignored if there's any kind of configuration file, for example a `.prettierrc` file.\n---\n---```lua\n---default = true\n---```\n---@field svelteIndentScriptAndStyle? boolean\n---Format: join the keys `options`, `scripts`, `markup`, `styles` with a - in the order you want. This option is ignored if there's any kind of configuration file, for example a `.prettierrc` file.\n---\n---```lua\n---default = \"options-scripts-markup-styles\"\n---```\n---@field svelteSortOrder? string\n---More strict HTML syntax. This option is ignored if there's any kind of configuration file, for example a `.prettierrc` file.\n---@field svelteStrictMode? boolean\n\n---@class _.lspconfig.settings.svelte.Svelte.Plugin.Svelte.Format\n---@field config? _.lspconfig.settings.svelte.Svelte.Plugin.Svelte.Format.Config\n---Enable formatting for Svelte (includes css & js). You can set some formatting options through this extension. They will be ignored if there's any kind of configuration file, for example a `.prettierrc` file.\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n\n---@class _.lspconfig.settings.svelte.Svelte.Plugin.Svelte.Hover\n---Enable hover information for Svelte\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n\n---@class _.lspconfig.settings.svelte.Svelte.Plugin.Svelte.Rename\n---Enable rename/move Svelte files functionality\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n\n---@class _.lspconfig.settings.svelte.Svelte.Plugin.Svelte.RunesLegacyModeCodeLens\n---Show a code lens at the top of Svelte files indicating if they are in runes mode or legacy mode. Only visible in Svelte 5 projects.\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n\n---@class _.lspconfig.settings.svelte.Svelte.Plugin.Svelte.SelectionRange\n---Enable selection range for Svelte\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n\n---@class _.lspconfig.settings.svelte.Svelte.Plugin.Svelte\n---@field codeActions? _.lspconfig.settings.svelte.Svelte.Plugin.Svelte.CodeActions\n---Svelte compiler warning codes to ignore or to treat as errors. Example: { 'css-unused-selector': 'ignore', 'unused-export-let': 'error'}\n---\n---```lua\n---default = {}\n---```\n---@field compilerWarnings? table\n---@field completions? _.lspconfig.settings.svelte.Svelte.Plugin.Svelte.Completions\n---The default language to use when generating new script tags\n---\n---```lua\n---default = \"none\"\n---```\n---@field defaultScriptLanguage? \"none\" | \"ts\"\n---@field diagnostics? _.lspconfig.settings.svelte.Svelte.Plugin.Svelte.Diagnostics\n---@field documentHighlight? _.lspconfig.settings.svelte.Svelte.Plugin.Svelte.DocumentHighlight\n---Enable the Svelte plugin\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n---@field format? _.lspconfig.settings.svelte.Svelte.Plugin.Svelte.Format\n---@field hover? _.lspconfig.settings.svelte.Svelte.Plugin.Svelte.Hover\n---@field rename? _.lspconfig.settings.svelte.Svelte.Plugin.Svelte.Rename\n---@field runesLegacyModeCodeLens? _.lspconfig.settings.svelte.Svelte.Plugin.Svelte.RunesLegacyModeCodeLens\n---@field selectionRange? _.lspconfig.settings.svelte.Svelte.Plugin.Svelte.SelectionRange\n\n---@class _.lspconfig.settings.svelte.Svelte.Plugin.Typescript.CodeActions\n---Enable code actions for TypeScript\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n\n---@class _.lspconfig.settings.svelte.Svelte.Plugin.Typescript.Completions\n---Enable completions for TypeScript\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n\n---@class _.lspconfig.settings.svelte.Svelte.Plugin.Typescript.Diagnostics\n---Enable diagnostic messages for TypeScript\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n\n---@class _.lspconfig.settings.svelte.Svelte.Plugin.Typescript.DocumentSymbols\n---Enable document symbols for TypeScript\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n\n---@class _.lspconfig.settings.svelte.Svelte.Plugin.Typescript.Hover\n---Enable hover info for TypeScript\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n\n---@class _.lspconfig.settings.svelte.Svelte.Plugin.Typescript.SelectionRange\n---Enable selection range for TypeScript\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n\n---@class _.lspconfig.settings.svelte.Svelte.Plugin.Typescript.SemanticTokens\n---Enable semantic tokens (semantic highlight) for TypeScript.\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n\n---@class _.lspconfig.settings.svelte.Svelte.Plugin.Typescript.SignatureHelp\n---Enable signature help (parameter hints) for TypeScript\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n\n---@class _.lspconfig.settings.svelte.Svelte.Plugin.Typescript.WorkspaceSymbols\n---Enable workspace symbols for TypeScript.\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n\n---@class _.lspconfig.settings.svelte.Svelte.Plugin.Typescript\n---@field codeActions? _.lspconfig.settings.svelte.Svelte.Plugin.Typescript.CodeActions\n---@field completions? _.lspconfig.settings.svelte.Svelte.Plugin.Typescript.Completions\n---@field diagnostics? _.lspconfig.settings.svelte.Svelte.Plugin.Typescript.Diagnostics\n---@field documentSymbols? _.lspconfig.settings.svelte.Svelte.Plugin.Typescript.DocumentSymbols\n---Enable the TypeScript plugin\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n---@field hover? _.lspconfig.settings.svelte.Svelte.Plugin.Typescript.Hover\n---@field selectionRange? _.lspconfig.settings.svelte.Svelte.Plugin.Typescript.SelectionRange\n---@field semanticTokens? _.lspconfig.settings.svelte.Svelte.Plugin.Typescript.SemanticTokens\n---@field signatureHelp? _.lspconfig.settings.svelte.Svelte.Plugin.Typescript.SignatureHelp\n---@field workspaceSymbols? _.lspconfig.settings.svelte.Svelte.Plugin.Typescript.WorkspaceSymbols\n\n---@class _.lspconfig.settings.svelte.Svelte.Plugin\n---@field css? _.lspconfig.settings.svelte.Svelte.Plugin.Css\n---@field html? _.lspconfig.settings.svelte.Svelte.Plugin.Html\n---@field svelte? _.lspconfig.settings.svelte.Svelte.Plugin.Svelte\n---@field typescript? _.lspconfig.settings.svelte.Svelte.Plugin.Typescript\n\n---@class _.lspconfig.settings.svelte.Svelte.Trace\n---Traces the communication between VS Code and the Svelte Language Server.\n---\n---```lua\n---default = \"off\"\n---```\n---@field server? \"off\" | \"messages\" | \"verbose\"\n\n---@class _.lspconfig.settings.svelte.Svelte.Ui.SvelteKitFilesContextMenu\n---Show a context menu to generate SvelteKit files. \"always\" to always show it. \"never\" to always disable it. \"auto\" to show it when in a SvelteKit project. \n---\n---```lua\n---default = \"auto\"\n---```\n---@field enable? \"auto\" | \"never\" | \"always\"\n\n---@class _.lspconfig.settings.svelte.Svelte.Ui\n---@field svelteKitFilesContextMenu? _.lspconfig.settings.svelte.Svelte.Ui.SvelteKitFilesContextMenu\n\n---@class _.lspconfig.settings.svelte.Svelte\n---Ask on startup to enable the TypeScript plugin.\n---\n---```lua\n---default = true\n---```\n---@field [\"ask-to-enable-ts-plugin\"]? boolean\n---Enables a TypeScript plugin which provides intellisense for Svelte files inside TS/JS files.\n---@field [\"enable-ts-plugin\"]? boolean\n---@field [\"language-server\"]? _.lspconfig.settings.svelte.Svelte.LanguageServer\n---@field plugin? _.lspconfig.settings.svelte.Svelte.Plugin\n---@field trace? _.lspconfig.settings.svelte.Svelte.Trace\n---@field ui? _.lspconfig.settings.svelte.Svelte.Ui\n\n---@class lspconfig.settings.svelte\n---@field svelte? _.lspconfig.settings.svelte.Svelte\n"
  },
  {
    "path": "lua/lspconfig/types/lsp/svlangserver.lua",
    "content": "---@meta\n\n---@class _.lspconfig.settings.svlangserver.Systemverilog.Trace\n---Traces the communication between VS Code and the SystemVerilog language server.\n---\n---```lua\n---default = \"off\"\n---```\n---@field server? \"off\" | \"messages\" | \"verbose\"\n\n---@class _.lspconfig.settings.svlangserver.Systemverilog\n---Use ANTLR parser to verify text documents when edited.\n---@field antlrVerification? boolean\n---Compile all files when opened.\n---@field compileOnOpen? boolean\n---Compile SystemVerilog/Verilog files when saved.\n---@field compileOnSave? boolean\n---Select the compiler type from the drop down list.\n---\n---```lua\n---default = \"Verilator\"\n---```\n---@field compilerType? \"Verilator\" | \"VCS\" | \"Verible\"\n---Disable automatic indexing when opening a folder or workspace.\n---@field disableIndexing? boolean\n---The level of detail the parser should use when looking for symbols:\n---  - 'full': detect blocks, ports, parameters, classes, methods, typedefs, defines, labels, instantiations, assertions, and references\n---  - 'full_no_references': detect blocks, ports, parameters, classes, methods, typedefs, defines, labels, instantiations, and assertions\n---  - 'declarations': detect blocks, ports, parameters, classes, methods, typedefs, and defines\n---  - 'fast': detect only common blocks (module, class, interface, package, program) without hierarchy\n---\n---```lua\n---default = \"full\"\n---```\n---@field documentSymbolsPrecision? \"full\" | \"full_no_references\" | \"declaration\" | \"fast\"\n---Enable incremental indexation as you open files.\n---\n---```lua\n---default = true\n---```\n---@field enableIncrementalIndexing? boolean\n---Files excluded from compiling (glob pattern).\n---\n---```lua\n---default = \"\"\n---```\n---@field excludeCompiling? string\n---Files excluded from indexing (glob pattern).\n---\n---```lua\n---default = \"\"\n---```\n---@field excludeIndexing? string\n---Force indexing to use fast regular expression parsing.\n---@field forceFastIndexing? boolean\n---Launch command for running the formatter.\n---\n---```lua\n---default = \"verible-verilog-format\"\n---```\n---@field formatCommand? string\n---Files included for indexing (glob pattern). Examples: \n---  - Include files within the workspace's rtl folder ('*' at front of pattern denotes that path is relative to workspace root): **/rtl/**/*.{sv,v,svh,vh}\n---  - Add all files with a '.svp' extension: **/*.svp\n---  - Add files only when in a specific workspace: /abs/path/to/workspace/rtl/**/*.{sv,v,svh,vh}\n---\n---```lua\n---default = { \"**/*.{sv,v,svh,vh}\" }\n---```\n---@field includeIndexing? any[]\n---Launch command for running VCS as the compiler.\n---\n---```lua\n---default = \"vcs\"\n---```\n---@field launchConfigurationVCS? string\n---Launch command for running Verible as the compiler.\n---\n---```lua\n---default = \"verible-verilog-lint\"\n---```\n---@field launchConfigurationVerible? string\n---Launch command for running Verilator as the compiler.\n---\n---```lua\n---default = \"verilator --sv --lint-only --language 1800-2012 --Wall\"\n---```\n---@field launchConfigurationVerilator? string\n---When indexing a file, if the line count is larger than this number, fast indexing will be used to improve symbol lookup performance.\n---\n---```lua\n---default = 2000\n---```\n---@field maxLineCountIndexing? integer\n---The number of files the extension should attempt to process in parallel. Processing consist of opening found files and perform matching to find symbols.\n---\n---```lua\n---default = 10\n---```\n---@field parallelProcessing? integer\n---@field trace? _.lspconfig.settings.svlangserver.Systemverilog.Trace\n---Run ANTLR verification on all files when opened.\n---@field verifyOnOpen? boolean\n\n---@class lspconfig.settings.svlangserver\n---@field systemverilog? _.lspconfig.settings.svlangserver.Systemverilog\n"
  },
  {
    "path": "lua/lspconfig/types/lsp/tailwindcss.lua",
    "content": "---@meta\n\n---@class _.lspconfig.settings.tailwindcss.TailwindCSS.Experimental\n---@field classRegex? any[]\n---Manually specify the Tailwind config file or files that should be read to provide IntelliSense features. Can either be a single string value, or an object where each key is a config file path and each value is a glob or array of globs representing the set of files that the config file applies to.\n---@field configFile? string|table\n\n---@class _.lspconfig.settings.tailwindcss.TailwindCSS.Files\n---Configure glob patterns to exclude from all IntelliSense features. Inherits all glob patterns from the `#files.exclude#` setting.\n---\n---```lua\n---default = { \"**/.git/**\", \"**/node_modules/**\", \"**/.hg/**\", \"**/.svn/**\" }\n---```\n---@field exclude? string[]\n\n---@class _.lspconfig.settings.tailwindcss.TailwindCSS.Lint\n---Class names on the same HTML element which apply the same CSS property or properties\n---\n---```lua\n---default = \"warning\"\n---```\n---@field cssConflict? \"ignore\" | \"warning\" | \"error\"\n---Unsupported use of the [`@apply` directive](https://tailwindcss.com/docs/functions-and-directives/#apply)\n---\n---```lua\n---default = \"error\"\n---```\n---@field invalidApply? \"ignore\" | \"warning\" | \"error\"\n---Unknown or invalid path used with the [`theme` helper](https://tailwindcss.com/docs/functions-and-directives/#theme)\n---\n---```lua\n---default = \"error\"\n---```\n---@field invalidConfigPath? \"ignore\" | \"warning\" | \"error\"\n---Unknown screen name used with the [`@screen` directive](https://tailwindcss.com/docs/functions-and-directives/#screen)\n---\n---```lua\n---default = \"error\"\n---```\n---@field invalidScreen? \"ignore\" | \"warning\" | \"error\"\n---Unknown value used with the [`@tailwind` directive](https://tailwindcss.com/docs/functions-and-directives/#tailwind)\n---\n---```lua\n---default = \"error\"\n---```\n---@field invalidTailwindDirective? \"ignore\" | \"warning\" | \"error\"\n---Unknown variant name used with the [`@variants` directive](https://tailwindcss.com/docs/functions-and-directives/#variants)\n---\n---```lua\n---default = \"error\"\n---```\n---@field invalidVariant? \"ignore\" | \"warning\" | \"error\"\n---Class variants not in the recommended order (applies in [JIT mode](https://tailwindcss.com/docs/just-in-time-mode) only)\n---\n---```lua\n---default = \"warning\"\n---```\n---@field recommendedVariantOrder? \"ignore\" | \"warning\" | \"error\"\n---Indicate when utilities may be written in a more optimal form\n---\n---```lua\n---default = \"warning\"\n---```\n---@field suggestCanonicalClasses? \"ignore\" | \"warning\" | \"error\"\n---Usage of class names that have been blocklisted via `@source not inline(…)`\n---\n---```lua\n---default = \"warning\"\n---```\n---@field usedBlocklistedClass? \"ignore\" | \"warning\" | \"error\"\n\n---@class _.lspconfig.settings.tailwindcss.TailwindCSS\n---The HTML attributes for which to provide class completions, hover previews, linting etc.\n---\n---```lua\n---default = { \"class\", \"className\", \"ngClass\", \"class:list\" }\n---```\n---@field classAttributes? string[]\n---The function or tagged template literal names for which to provide class completions, hover previews, linting etc.\n---\n---```lua\n---default = {}\n---```\n---@field classFunctions? string[]\n---Enable code actions.\n---\n---```lua\n---default = true\n---```\n---@field codeActions? boolean\n---Enable code lens.\n---\n---```lua\n---default = true\n---```\n---@field codeLens? boolean\n---Controls whether the editor should render inline color decorators for Tailwind CSS classes and helper functions.\n---\n---```lua\n---default = true\n---```\n---@field colorDecorators? boolean\n---Enable class name completions when using Emmet-style syntax, for example `div.bg-red-500.uppercase`\n---@field emmetCompletions? boolean\n---@field experimental? _.lspconfig.settings.tailwindcss.TailwindCSS.Experimental\n---@field files? _.lspconfig.settings.tailwindcss.TailwindCSS.Files\n---Enable hovers.\n---\n---```lua\n---default = true\n---```\n---@field hovers? boolean\n---Enable features in languages that are not supported by default. Add a mapping here between the new language and an already supported language.\n--- E.g.: `{\"plaintext\": \"html\"}`\n---\n---```lua\n---default = {}\n---```\n---@field includeLanguages? table\n---Enable the Node.js inspector agent for the language server and listen on the specified port.\n---@field inspectPort? number\n---@field lint? _.lspconfig.settings.tailwindcss.TailwindCSS.Lint\n---Root font size in pixels. Used to convert `rem` CSS values to their `px` equivalents. See `#tailwindCSS.showPixelEquivalents#`.\n---\n---```lua\n---default = 16\n---```\n---@field rootFontSize? number\n---Show `px` equivalents for `rem` CSS values.\n---\n---```lua\n---default = true\n---```\n---@field showPixelEquivalents? boolean\n---Enable autocomplete suggestions.\n---\n---```lua\n---default = true\n---```\n---@field suggestions? boolean\n---Enable linting. Rules can be configured individually using the `tailwindcss.lint.*` settings\n---\n---```lua\n---default = true\n---```\n---@field validate? boolean\n\n---@class _.lspconfig.settings.tailwindcss.TailwindcssIntellisense.Trace\n---Traces the communication between VS Code and the Tailwind CSS Language Server.\n---\n---```lua\n---default = \"off\"\n---```\n---@field server? \"off\" | \"messages\" | \"verbose\"\n\n---@class _.lspconfig.settings.tailwindcss.TailwindcssIntellisense\n---@field trace? _.lspconfig.settings.tailwindcss.TailwindcssIntellisense.Trace\n\n---@class lspconfig.settings.tailwindcss\n---@field tailwindCSS? _.lspconfig.settings.tailwindcss.TailwindCSS\n---@field [\"tailwindcss-intellisense\"]? _.lspconfig.settings.tailwindcss.TailwindcssIntellisense\n"
  },
  {
    "path": "lua/lspconfig/types/lsp/terraformls.lua",
    "content": "---@meta\n\n---@class _.lspconfig.settings.terraformls.Terraform.Codelens\n---Display reference counts above top level blocks and attributes.\n---@field referenceCount? boolean\n\n---@class _.lspconfig.settings.terraformls.Terraform.ExperimentalFeatures\n---Enable autocompletion for required fields when completing Terraform blocks. Combine with `#editor.suggest.preview#` and the editor will provide inline snippet suggestions for blocks of code\n---@field prefillRequiredFields? boolean\n---Enable validating the currently open file on save\n---@field validateOnSave? boolean\n\n---@class _.lspconfig.settings.terraformls.Terraform.LanguageServer.Indexing\n---Per-workspace list of directory names for the language server to ignore when indexing files\n---\n---```lua\n---default = {}\n---```\n---@field ignoreDirectoryNames? string[]\n---Per-workspace list of paths for the language server to ignore when indexing files\n---\n---```lua\n---default = {}\n---```\n---@field ignorePaths? string[]\n\n---@class _.lspconfig.settings.terraformls.Terraform.LanguageServer.Tcp\n---Language server TCP port to connect to. This is not compatible with `#terraform.languageServer.path#`. This is used when you want the extension to connect via TCP to an already running language server process.\n---@field port? number\n\n---@class _.lspconfig.settings.terraformls.Terraform.LanguageServer.Terraform\n---Path to a file (`TF_LOG_PATH`) for Terraform executions to be logged used by the the Terraform Language Server. Support for variables (e.g. timestamp, pid, ppid) via Go template syntax `{{varName}}`\n---@field logFilePath? string\n---Path to the Terraform binary used by the Terraform Language Server\n---@field path? string\n---Overrides Terraform execution timeout (e.g. 30s) used by the Terraform Language Server\n---@field timeout? string\n\n---@class _.lspconfig.settings.terraformls.Terraform.LanguageServer\n---Arguments to pass to language server binary\n---\n---```lua\n---default = { \"serve\" }\n---```\n---@field args? string[]\n---Enable Terraform Language Server\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n---Enable warning when opening a single Terraform file instead of a Terraform folder. Enabling this will prevent the message being sent\n---@field ignoreSingleFileWarning? boolean\n---@field indexing? _.lspconfig.settings.terraformls.Terraform.LanguageServer.Indexing\n---Path to the Terraform Language Server binary (optional)\n---\n---```lua\n---default = \"\"\n---```\n---@field path? string\n---@field tcp? _.lspconfig.settings.terraformls.Terraform.LanguageServer.Tcp\n---@field terraform? _.lspconfig.settings.terraformls.Terraform.LanguageServer.Terraform\n\n---@class _.lspconfig.settings.terraformls.Terraform.Mcp.Server\n---Enable HashiCorp Terraform MCP Server integration\n---@field enable? boolean\n\n---@class _.lspconfig.settings.terraformls.Terraform.Mcp\n---@field server? _.lspconfig.settings.terraformls.Terraform.Mcp.Server\n\n---@class _.lspconfig.settings.terraformls.Terraform.Validation\n---Enable enhanced validation of Terraform files and modules\n---\n---```lua\n---default = true\n---```\n---@field enableEnhancedValidation? boolean\n\n---@class _.lspconfig.settings.terraformls.Terraform\n---@field codelens? _.lspconfig.settings.terraformls.Terraform.Codelens\n---@field experimentalFeatures? _.lspconfig.settings.terraformls.Terraform.ExperimentalFeatures\n---@field languageServer? _.lspconfig.settings.terraformls.Terraform.LanguageServer\n---@field mcp? _.lspconfig.settings.terraformls.Terraform.Mcp\n---@field validation? _.lspconfig.settings.terraformls.Terraform.Validation\n\n---@class lspconfig.settings.terraformls\n---@field terraform? _.lspconfig.settings.terraformls.Terraform\n"
  },
  {
    "path": "lua/lspconfig/types/lsp/tinymist.lua",
    "content": "---@meta\n\n---@class _.lspconfig.settings.tinymist.Tinymist.Completion\n---%extension.tinymist.config.tinymist.completion.postfix.desc%\n---\n---```lua\n---default = true\n---```\n---@field postfix? boolean\n---%extension.tinymist.config.tinymist.completion.postfixUfcs.desc%\n---\n---```lua\n---default = true\n---```\n---@field postfixUfcs? boolean\n---%extension.tinymist.config.tinymist.completion.postfixUfcsLeft.desc%\n---\n---```lua\n---default = true\n---```\n---@field postfixUfcsLeft? boolean\n---%extension.tinymist.config.tinymist.completion.postfixUfcsRight.desc%\n---\n---```lua\n---default = true\n---```\n---@field postfixUfcsRight? boolean\n---Whether to make symbol completion stepless. For example, `$ar|$` will be completed to `$arrow.r$`. Hint: Restarting the editor is required to change this setting.\n---\n---```lua\n---default = \"step\"\n---```\n---@field symbol? \"step\" | \"stepless\"\n---%extension.tinymist.config.tinymist.completion.triggerOnSnippetPlaceholders.desc%\n---@field triggerOnSnippetPlaceholders? boolean\n\n---@class _.lspconfig.settings.tinymist.Tinymist.Lint\n---%extension.tinymist.config.tinymist.lint.enabled.desc%\n---@field enabled? boolean\n---%extension.tinymist.config.tinymist.lint.when.desc%\n---\n---```lua\n---default = \"onSave\"\n---```\n---@field when? \"onSave\" | \"onType\"\n\n---@class _.lspconfig.settings.tinymist.Tinymist.Preview\n---%extension.tinymist.config.tinymist.preview.cursorIndicator.desc%\n---@field cursorIndicator? boolean\n---%extension.tinymist.config.tinymist.preview.fontPaths.desc%\n---\n---```lua\n---default = {}\n---```\n---@field fontPaths? string[]\n---%extension.tinymist.config.tinymist.preview.invertColors.desc%\n---\n---```lua\n---default = \"never\"\n---```\n---@field invertColors? \"never\" | \"auto\" | \"always\"|table\n---%extension.tinymist.config.tinymist.preview.partialRendering.desc%\n---\n---```lua\n---default = true\n---```\n---@field partialRendering? boolean\n---%extension.tinymist.config.tinymist.preview.pinPreviewFile.desc%\n---@field pinPreviewFile? boolean\n---%extension.tinymist.config.tinymist.preview.refresh.desc%\n---\n---```lua\n---default = \"onType\"\n---```\n---@field refresh? \"onSave\" | \"onType\"\n---%extension.tinymist.config.tinymist.preview.scrollSync.desc%\n---\n---```lua\n---default = \"onSelectionChangeByMouse\"\n---```\n---@field scrollSync? \"never\" | \"onSelectionChangeByMouse\" | \"onSelectionChange\"\n---%extension.tinymist.config.tinymist.preview.sysInputs.desc%\n---\n---```lua\n---default = {}\n---```\n---@field sysInputs? table\n---%extension.tinymist.config.tinymist.preview.systemFonts.desc%\n---\n---```lua\n---default = true\n---```\n---@field systemFonts? boolean\n\n---@class _.lspconfig.settings.tinymist.Tinymist.Trace\n---%extension.tinymist.config.tinymist.trace.server.desc%\n---\n---```lua\n---default = \"off\"\n---```\n---@field server? \"off\" | \"messages\" | \"verbose\"\n\n---@class _.lspconfig.settings.tinymist.Tinymist\n---%extension.tinymist.config.tinymist.compileStatus.desc%\n---\n---```lua\n---default = \"enable\"\n---```\n---@field compileStatus? \"enable\" | \"disable\"\n---@field completion? _.lspconfig.settings.tinymist.Tinymist.Completion\n---%extension.tinymist.config.tinymist.configureDefaultWordSeparator.string.desc%\n---\n---```lua\n---default = \"disable\"\n---```\n---@field configureDefaultWordSeparator? \"enable\" | \"disable\"\n---%extension.tinymist.config.tinymist.convertExtension.desc%\n---\n---```lua\n---default = {}\n---```\n---@field convertExtension? any[]\n---%extension.tinymist.config.tinymist.copyAndPaste.desc%\n---\n---```lua\n---default = \"enable\"\n---```\n---@field copyAndPaste? \"enable\" | \"disable\"\n---%extension.tinymist.config.tinymist.dragAndDrop.desc%\n---\n---```lua\n---default = \"enable\"\n---```\n---@field dragAndDrop? \"enable\" | \"disable\"\n---%extension.tinymist.config.tinymist.exportPdf.desc%\n---\n---```lua\n---default = \"never\"\n---```\n---@field exportPdf? \"never\" | \"onSave\" | \"onType\" | \"onDocumentHasTitle\"\n---%extension.tinymist.config.tinymist.exportTarget.desc%\n---\n---```lua\n---default = \"paged\"\n---```\n---@field exportTarget? \"paged\" | \"html\"\n---%extension.tinymist.config.tinymist.fontPaths.desc%\n---@field fontPaths? any[]\n---%extension.tinymist.config.tinymist.formatterIndentSize.desc%\n---\n---```lua\n---default = 2\n---```\n---@field formatterIndentSize? number\n---%extension.tinymist.config.tinymist.formatterMode.desc%\n---\n---```lua\n---default = \"typstyle\"\n---```\n---@field formatterMode? \"disable\" | \"typstyle\" | \"typstfmt\"\n---%extension.tinymist.config.tinymist.formatterPrintWidth.desc%\n---\n---```lua\n---default = 120\n---```\n---@field formatterPrintWidth? number\n---%extension.tinymist.config.tinymist.formatterProseWrap.desc%\n---@field formatterProseWrap? boolean\n---@field lint? _.lspconfig.settings.tinymist.Tinymist.Lint\n---%extension.tinymist.config.tinymist.onEnterEvent.desc%\n---\n---```lua\n---default = true\n---```\n---@field onEnterEvent? boolean\n---%extension.tinymist.config.tinymist.onPaste.desc%\n---\n---```lua\n---default = \"$root/assets\"\n---```\n---@field onPaste? string\n---%extension.tinymist.config.tinymist.outputPath.desc%\n---\n---```lua\n---default = \"\"\n---```\n---@field outputPath? string\n---@field preview? _.lspconfig.settings.tinymist.Tinymist.Preview\n---%extension.tinymist.config.tinymist.previewFeature.desc%\n---\n---```lua\n---default = \"enable\"\n---```\n---@field previewFeature? \"enable\" | \"disable\"\n---%extension.tinymist.config.tinymist.projectResolution.desc%\n---\n---```lua\n---default = \"singleFile\"\n---```\n---@field projectResolution? \"singleFile\" | \"lockDatabase\"\n---%extension.tinymist.config.tinymist.renderDocs.desc%\n---\n---```lua\n---default = \"enable\"\n---```\n---@field renderDocs? \"enable\" | \"disable\"\n---%extension.tinymist.config.tinymist.rootPath.desc%\n---@field rootPath? string\n---%extension.tinymist.config.tinymist.semanticTokens.desc%\n---\n---```lua\n---default = \"enable\"\n---```\n---@field semanticTokens? \"enable\" | \"disable\"\n---%extension.tinymist.config.tinymist.serverPath.desc%\n---@field serverPath? string\n---%extension.tinymist.config.tinymist.showExportFileIn.desc%\n---@field showExportFileIn? \"editorTab\" | \"systemDefault\"\n---%extension.tinymist.config.tinymist.statusBarFormat.desc%\n---\n---```lua\n---default = \"{compileStatusIcon} {wordCount} [{fileName}]\"\n---```\n---@field statusBarFormat? string\n---%extension.tinymist.config.tinymist.syntaxOnly.desc%\n---\n---```lua\n---default = \"auto\"\n---```\n---@field syntaxOnly? \"auto\" | \"onPowerSaving\" | \"enable\" | \"disable\"\n---%extension.tinymist.config.tinymist.systemFonts.desc%\n---\n---```lua\n---default = true\n---```\n---@field systemFonts? boolean\n---@field trace? _.lspconfig.settings.tinymist.Tinymist.Trace\n---%extension.tinymist.config.tinymist.typingContinueCommentsOnNewline.desc%\n---\n---```lua\n---default = true\n---```\n---@field typingContinueCommentsOnNewline? boolean\n---%extension.tinymist.config.tinymist.typstExtraArgs.desc%\n---\n---```lua\n---default = {}\n---```\n---@field typstExtraArgs? string[]\n\n---@class lspconfig.settings.tinymist\n---@field tinymist? _.lspconfig.settings.tinymist.Tinymist\n"
  },
  {
    "path": "lua/lspconfig/types/lsp/ts_ls.lua",
    "content": "---@meta\n\n---@class _.lspconfig.settings.ts_ls.Javascript.Format\n---Enable/disable default JavaScript formatter.\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n---Indent case clauses in switch statements. Requires using TypeScript 5.1+ in the workspace.\n---\n---```lua\n---default = true\n---```\n---@field indentSwitchCase? boolean\n---Defines space handling after a comma delimiter.\n---\n---```lua\n---default = true\n---```\n---@field insertSpaceAfterCommaDelimiter? boolean\n---Defines space handling after the constructor keyword.\n---@field insertSpaceAfterConstructor? boolean\n---Defines space handling after function keyword for anonymous functions.\n---\n---```lua\n---default = true\n---```\n---@field insertSpaceAfterFunctionKeywordForAnonymousFunctions? boolean\n---Defines space handling after keywords in a control flow statement.\n---\n---```lua\n---default = true\n---```\n---@field insertSpaceAfterKeywordsInControlFlowStatements? boolean\n---Defines space handling after opening and before closing empty braces.\n---\n---```lua\n---default = true\n---```\n---@field insertSpaceAfterOpeningAndBeforeClosingEmptyBraces? boolean\n---Defines space handling after opening and before closing JSX expression braces.\n---@field insertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces? boolean\n---Defines space handling after opening and before closing non-empty braces.\n---\n---```lua\n---default = true\n---```\n---@field insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces? boolean\n---Defines space handling after opening and before closing non-empty brackets.\n---@field insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets? boolean\n---Defines space handling after opening and before closing non-empty parenthesis.\n---@field insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis? boolean\n---Defines space handling after opening and before closing template string braces.\n---@field insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces? boolean\n---Defines space handling after a semicolon in a for statement.\n---\n---```lua\n---default = true\n---```\n---@field insertSpaceAfterSemicolonInForStatements? boolean\n---Defines space handling after a binary operator.\n---\n---```lua\n---default = true\n---```\n---@field insertSpaceBeforeAndAfterBinaryOperators? boolean\n---Defines space handling before function argument parentheses.\n---@field insertSpaceBeforeFunctionParenthesis? boolean\n---Defines whether an open brace is put onto a new line for control blocks or not.\n---@field placeOpenBraceOnNewLineForControlBlocks? boolean\n---Defines whether an open brace is put onto a new line for functions or not.\n---@field placeOpenBraceOnNewLineForFunctions? boolean\n---Defines handling of optional semicolons.\n---\n---```lua\n---default = \"ignore\"\n---```\n---@field semicolons? \"ignore\" | \"insert\" | \"remove\"\n\n---@class _.lspconfig.settings.ts_ls.Javascript.InlayHints.FunctionLikeReturnTypes\n---Enable/disable inlay hints for implicit return types on function signatures:\n---```typescript\n---\n---function foo() /* :number */ {\n---\treturn Date.now();\n---} \n--- \n---```\n---\n---The text inside the ``` block is code and should not be localized.\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.ts_ls.Javascript.InlayHints.ParameterNames\n---Enable/disable inlay hints for parameter names:\n---```typescript\n---\n---parseInt(/* str: */ '123', /* radix: */ 8)\n--- \n---```\n---\n---The text inside the ``` block is code and should not be localized.\n---\n---```lua\n---default = \"none\"\n---```\n---@field enabled? \"none\" | \"literals\" | \"all\"\n---Suppress parameter name hints on arguments whose text is identical to the parameter name.\n---\n---```lua\n---default = true\n---```\n---@field suppressWhenArgumentMatchesName? boolean\n\n---@class _.lspconfig.settings.ts_ls.Javascript.InlayHints.ParameterTypes\n---Enable/disable inlay hints for implicit parameter types:\n---```typescript\n---\n---el.addEventListener('click', e /* :MouseEvent */ => ...)\n--- \n---```\n---\n---The text inside the ``` block is code and should not be localized.\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.ts_ls.Javascript.InlayHints.PropertyDeclarationTypes\n---Enable/disable inlay hints for implicit types on property declarations:\n---```typescript\n---\n---class Foo {\n---\tprop /* :number */ = Date.now();\n---}\n--- \n---```\n---\n---The text inside the ``` block is code and should not be localized.\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.ts_ls.Javascript.InlayHints.VariableTypes\n---Enable/disable inlay hints for implicit variable types:\n---```typescript\n---\n---const foo /* :number */ = Date.now();\n--- \n---```\n---\n---The text inside the ``` block is code and should not be localized.\n---@field enabled? boolean\n---Suppress type hints on variables whose name is identical to the type name.\n---\n---```lua\n---default = true\n---```\n---@field suppressWhenTypeMatchesName? boolean\n\n---@class _.lspconfig.settings.ts_ls.Javascript.InlayHints\n---@field functionLikeReturnTypes? _.lspconfig.settings.ts_ls.Javascript.InlayHints.FunctionLikeReturnTypes\n---@field parameterNames? _.lspconfig.settings.ts_ls.Javascript.InlayHints.ParameterNames\n---@field parameterTypes? _.lspconfig.settings.ts_ls.Javascript.InlayHints.ParameterTypes\n---@field propertyDeclarationTypes? _.lspconfig.settings.ts_ls.Javascript.InlayHints.PropertyDeclarationTypes\n---@field variableTypes? _.lspconfig.settings.ts_ls.Javascript.InlayHints.VariableTypes\n\n---Advanced preferences that control how imports are ordered.\n---@class _.lspconfig.settings.ts_ls.Javascript.Preferences.OrganizeImports\n---Requires `organizeImports.unicodeCollation: 'unicode'`. Compare characters with diacritical marks as unequal to base character.\n---@field accentCollation? boolean\n---Requires `organizeImports.unicodeCollation: 'unicode'`, and `organizeImports.caseSensitivity` is not `caseInsensitive`. Indicates whether upper-case will sort before lower-case.\n---\n---```lua\n---default = \"default\"\n---```\n---@field caseFirst? \"default\" | \"upper\" | \"lower\"\n---Specifies how imports should be sorted with regards to case-sensitivity. If `auto` or unspecified, we will detect the case-sensitivity per file\n---\n---```lua\n---default = \"auto\"\n---```\n---@field caseSensitivity? \"auto\" | \"caseInsensitive\" | \"caseSensitive\"\n---Requires `organizeImports.unicodeCollation: 'unicode'`. Overrides the locale used for collation. Specify `auto` to use the UI locale.\n---@field locale? string\n---Requires `organizeImports.unicodeCollation: 'unicode'`. Sort numeric strings by integer value.\n---@field numericCollation? boolean\n---Specify how type-only named imports should be sorted.\n---\n---```lua\n---default = \"auto\"\n---```\n---@field typeOrder? \"auto\" | \"last\" | \"inline\" | \"first\"\n---Specify whether to sort imports using Unicode or Ordinal collation.\n---\n---```lua\n---default = \"ordinal\"\n---```\n---@field unicodeCollation? \"ordinal\" | \"unicode\"\n\n---@class _.lspconfig.settings.ts_ls.Javascript.Preferences\n---Specify glob patterns of files to exclude from auto imports. Relative paths are resolved relative to the workspace root. Patterns are evaluated using tsconfig.json [`exclude`](https://www.typescriptlang.org/tsconfig#exclude) semantics.\n---@field autoImportFileExcludePatterns? string[]\n---Specify regular expressions to exclude auto imports with matching import specifiers. Examples:\n---\n---- `^node:`\n---- `lib/internal` (slashes don't need to be escaped...)\n---- `/lib\\/internal/i` (...unless including surrounding slashes for `i` or `u` flags)\n---- `^lodash$` (only allow subpath imports from lodash)\n---@field autoImportSpecifierExcludeRegexes? string[]\n---Preferred path style for auto imports.\n---\n---```lua\n---default = \"shortest\"\n---```\n---@field importModuleSpecifier? \"shortest\" | \"relative\" | \"non-relative\" | \"project-relative\"\n---Preferred path ending for auto imports.\n---\n---```lua\n---default = \"auto\"\n---```\n---@field importModuleSpecifierEnding? \"auto\" | \"minimal\" | \"index\" | \"js\"\n---Preferred style for JSX attribute completions.\n---\n---```lua\n---default = \"auto\"\n---```\n---@field jsxAttributeCompletionStyle? \"auto\" | \"braces\" | \"none\"\n---Advanced preferences that control how imports are ordered.\n---@field organizeImports? _.lspconfig.settings.ts_ls.Javascript.Preferences.OrganizeImports\n---Preferred quote style to use for Quick Fixes.\n---\n---```lua\n---default = \"auto\"\n---```\n---@field quoteStyle? \"auto\" | \"single\" | \"double\"\n---When on a JSX tag, try to rename the matching tag instead of renaming the symbol. Requires using TypeScript 5.1+ in the workspace.\n---\n---```lua\n---default = true\n---```\n---@field renameMatchingJsxTags? boolean\n---Enable/disable introducing aliases for object shorthand properties during renames.\n---\n---```lua\n---default = true\n---```\n---@field useAliasesForRenames? boolean\n\n---@class _.lspconfig.settings.ts_ls.Javascript.ReferencesCodeLens\n---Enable/disable references CodeLens in JavaScript and TypeScript files. This CodeLens shows the number of references for classes and exported functions and allows you to peek or navigate to them.\n---@field enabled? boolean\n---Enable/disable the [references CodeLens](#js/ts.referencesCodeLens.enabled) on all functions in JavaScript and TypeScript files.\n---@field showOnAllFunctions? boolean\n\n---@class _.lspconfig.settings.ts_ls.Javascript.Suggest.ClassMemberSnippets\n---Enable/disable snippet completions for class members.\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.ts_ls.Javascript.Suggest.Jsdoc\n---Enable/disable generating `@returns` annotations for JSDoc templates.\n---\n---```lua\n---default = true\n---```\n---@field generateReturns? boolean\n\n---@class _.lspconfig.settings.ts_ls.Javascript.Suggest\n---Enable/disable auto import suggestions.\n---\n---```lua\n---default = true\n---```\n---@field autoImports? boolean\n---@field classMemberSnippets? _.lspconfig.settings.ts_ls.Javascript.Suggest.ClassMemberSnippets\n---Complete functions with their parameter signature.\n---@field completeFunctionCalls? boolean\n---Enable/disable suggestion to complete JSDoc comments.\n---\n---```lua\n---default = true\n---```\n---@field completeJSDocs? boolean\n---Enable/disable autocomplete suggestions.\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n---Enable/disable showing completions on potentially undefined values that insert an optional chain call. Requires strict null checks to be enabled.\n---\n---```lua\n---default = true\n---```\n---@field includeAutomaticOptionalChainCompletions? boolean\n---Enable/disable auto-import-style completions on partially-typed import statements.\n---\n---```lua\n---default = true\n---```\n---@field includeCompletionsForImportStatements? boolean\n---@field jsdoc? _.lspconfig.settings.ts_ls.Javascript.Suggest.Jsdoc\n---Enable/disable including unique names from the file in JavaScript suggestions. Note that name suggestions are always disabled in JavaScript code that is semantically checked using `@ts-check` or `checkJs`.\n---\n---```lua\n---default = true\n---```\n---@field names? boolean\n---Enable/disable suggestions for paths in import statements and require calls.\n---\n---```lua\n---default = true\n---```\n---@field paths? boolean\n\n---@class _.lspconfig.settings.ts_ls.Javascript.SuggestionActions\n---Enable/disable suggestion diagnostics for JavaScript files in the editor.\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.ts_ls.Javascript.UpdateImportsOnFileMove\n---Enable/disable automatic updating of import paths when you rename or move a file in VS Code.\n---\n---```lua\n---default = \"prompt\"\n---```\n---@field enabled? \"prompt\" | \"always\" | \"never\"\n\n---@class _.lspconfig.settings.ts_ls.Javascript.UpdateImportsOnPaste\n---Automatically update imports when pasting code. Requires TypeScript 5.6+.\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.ts_ls.Javascript.Validate\n---Enable/disable JavaScript validation.\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n\n---@class _.lspconfig.settings.ts_ls.Javascript\n---Enable/disable automatic closing of JSX tags.\n---\n---```lua\n---default = true\n---```\n---@field autoClosingTags? boolean\n---@field format? _.lspconfig.settings.ts_ls.Javascript.Format\n---@field inlayHints? _.lspconfig.settings.ts_ls.Javascript.InlayHints\n---Makes `Go to Definition` avoid type declaration files when possible by triggering `Go to Source Definition` instead. This allows `Go to Source Definition` to be triggered with the mouse gesture.\n---@field preferGoToSourceDefinition? boolean\n---@field preferences? _.lspconfig.settings.ts_ls.Javascript.Preferences\n---@field referencesCodeLens? _.lspconfig.settings.ts_ls.Javascript.ReferencesCodeLens\n---@field suggest? _.lspconfig.settings.ts_ls.Javascript.Suggest\n---@field suggestionActions? _.lspconfig.settings.ts_ls.Javascript.SuggestionActions\n---@field updateImportsOnFileMove? _.lspconfig.settings.ts_ls.Javascript.UpdateImportsOnFileMove\n---@field updateImportsOnPaste? _.lspconfig.settings.ts_ls.Javascript.UpdateImportsOnPaste\n---@field validate? _.lspconfig.settings.ts_ls.Javascript.Validate\n\n---@class _.lspconfig.settings.ts_ls.JsTs.AutoClosingTags\n---Enable/disable automatic closing of JSX tags.\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.ts_ls.JsTs.Experimental\n---Disables TypeScript and JavaScript language features to allow usage of the TypeScript Go experimental extension. Requires TypeScript Go to be installed and configured. Requires reloading extensions after changing this setting.\n---@field useTsgo? boolean\n\n---@class _.lspconfig.settings.ts_ls.JsTs.Format\n---Enable/disable the default JavaScript and TypeScript formatter.\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n---Indent case clauses in switch statements. Requires using TypeScript 5.1+ in the workspace.\n---\n---```lua\n---default = true\n---```\n---@field indentSwitchCase? boolean\n---Defines space handling after a comma delimiter.\n---\n---```lua\n---default = true\n---```\n---@field insertSpaceAfterCommaDelimiter? boolean\n---Defines space handling after the constructor keyword.\n---@field insertSpaceAfterConstructor? boolean\n---Defines space handling after function keyword for anonymous functions.\n---\n---```lua\n---default = true\n---```\n---@field insertSpaceAfterFunctionKeywordForAnonymousFunctions? boolean\n---Defines space handling after keywords in a control flow statement.\n---\n---```lua\n---default = true\n---```\n---@field insertSpaceAfterKeywordsInControlFlowStatements? boolean\n---Defines space handling after opening and before closing empty braces.\n---\n---```lua\n---default = true\n---```\n---@field insertSpaceAfterOpeningAndBeforeClosingEmptyBraces? boolean\n---Defines space handling after opening and before closing JSX expression braces.\n---@field insertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces? boolean\n---Defines space handling after opening and before closing non-empty braces.\n---\n---```lua\n---default = true\n---```\n---@field insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces? boolean\n---Defines space handling after opening and before closing non-empty brackets.\n---@field insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets? boolean\n---Defines space handling after opening and before closing non-empty parenthesis.\n---@field insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis? boolean\n---Defines space handling after opening and before closing template string braces.\n---@field insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces? boolean\n---Defines space handling after a semicolon in a for statement.\n---\n---```lua\n---default = true\n---```\n---@field insertSpaceAfterSemicolonInForStatements? boolean\n---Defines space handling after type assertions in TypeScript.\n---@field insertSpaceAfterTypeAssertion? boolean\n---Defines space handling after a binary operator.\n---\n---```lua\n---default = true\n---```\n---@field insertSpaceBeforeAndAfterBinaryOperators? boolean\n---Defines space handling before function argument parentheses.\n---@field insertSpaceBeforeFunctionParenthesis? boolean\n---Defines whether an open brace is put onto a new line for control blocks or not.\n---@field placeOpenBraceOnNewLineForControlBlocks? boolean\n---Defines whether an open brace is put onto a new line for functions or not.\n---@field placeOpenBraceOnNewLineForFunctions? boolean\n---Defines handling of optional semicolons.\n---\n---```lua\n---default = \"ignore\"\n---```\n---@field semicolons? \"ignore\" | \"insert\" | \"remove\"\n\n---@class _.lspconfig.settings.ts_ls.JsTs.Hover\n---The maximum number of characters in a hover. If the hover is longer than this, it will be truncated. Requires TypeScript 5.9+.\n---\n---```lua\n---default = 500\n---```\n---@field maximumLength? number\n\n---@class _.lspconfig.settings.ts_ls.JsTs.ImplementationsCodeLens\n---Enable/disable implementations CodeLens in TypeScript files. This CodeLens shows the implementers of TypeScript interfaces.\n---@field enabled? boolean\n---Enable/disable showing [implementations CodeLens](#js/ts.implementationsCodeLens.enabled) above all TypeScript class methods instead of only on abstract methods.\n---@field showOnAllClassMethods? boolean\n---Enable/disable [implementations CodeLens](#js/ts.implementationsCodeLens.enabled) on TypeScript interface methods.\n---@field showOnInterfaceMethods? boolean\n\n---@class _.lspconfig.settings.ts_ls.JsTs.ImplicitProjectConfig\n---Enable/disable semantic checking of JavaScript files. Existing `jsconfig.json` or `tsconfig.json` files override this setting.\n---@field checkJs? boolean\n---Enable/disable `experimentalDecorators` in JavaScript files that are not part of a project. Existing `jsconfig.json` or `tsconfig.json` files override this setting.\n---@field experimentalDecorators? boolean\n---Sets the module system for the program. See more: https://www.typescriptlang.org/tsconfig#module.\n---\n---```lua\n---default = \"ESNext\"\n---```\n---@field module? \"CommonJS\" | \"AMD\" | \"System\" | \"UMD\" | \"ES6\" | \"ES2015\" | \"ES2020\" | \"ESNext\" | \"None\" | \"ES2022\" | \"Node12\" | \"NodeNext\"\n---Enable/disable [strict mode](https://www.typescriptlang.org/tsconfig#strict) in JavaScript and TypeScript files that are not part of a project. Existing `jsconfig.json` or `tsconfig.json` files override this setting.\n---\n---```lua\n---default = true\n---```\n---@field strict? boolean\n---Enable/disable [strict function types](https://www.typescriptlang.org/tsconfig#strictFunctionTypes) in JavaScript and TypeScript files that are not part of a project. Existing `jsconfig.json` or `tsconfig.json` files override this setting.\n---\n---```lua\n---default = true\n---```\n---@field strictFunctionTypes? boolean\n---Enable/disable [strict null checks](https://www.typescriptlang.org/tsconfig#strictNullChecks) in JavaScript and TypeScript files that are not part of a project. Existing `jsconfig.json` or `tsconfig.json` files override this setting.\n---\n---```lua\n---default = true\n---```\n---@field strictNullChecks? boolean\n---Set target JavaScript language version for emitted JavaScript and include library declarations. See more: https://www.typescriptlang.org/tsconfig#target.\n---\n---```lua\n---default = \"ES2024\"\n---```\n---@field target? \"ES3\" | \"ES5\" | \"ES6\" | \"ES2015\" | \"ES2016\" | \"ES2017\" | \"ES2018\" | \"ES2019\" | \"ES2020\" | \"ES2021\" | \"ES2022\" | \"ES2023\" | \"ES2024\" | \"ESNext\"\n\n---@class _.lspconfig.settings.ts_ls.JsTs.InlayHints.EnumMemberValues\n---Enable/disable inlay hints for member values in enum declarations:\n---```typescript\n---\n---enum MyValue {\n---\tA /* = 0 */;\n---\tB /* = 1 */;\n---}\n--- \n---```\n---\n---The text inside the ``` block is code and should not be localized.\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.ts_ls.JsTs.InlayHints.FunctionLikeReturnTypes\n---Enable/disable inlay hints for implicit return types on function signatures:\n---```typescript\n---\n---function foo() /* :number */ {\n---\treturn Date.now();\n---} \n--- \n---```\n---\n---The text inside the ``` block is code and should not be localized.\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.ts_ls.JsTs.InlayHints.ParameterNames\n---Enable/disable inlay hints for parameter names:\n---```typescript\n---\n---parseInt(/* str: */ '123', /* radix: */ 8)\n--- \n---```\n---\n---The text inside the ``` block is code and should not be localized.\n---\n---```lua\n---default = \"none\"\n---```\n---@field enabled? \"none\" | \"literals\" | \"all\"\n---Suppress parameter name hints on arguments whose text is identical to the parameter name.\n---\n---```lua\n---default = true\n---```\n---@field suppressWhenArgumentMatchesName? boolean\n\n---@class _.lspconfig.settings.ts_ls.JsTs.InlayHints.ParameterTypes\n---Enable/disable inlay hints for implicit parameter types:\n---```typescript\n---\n---el.addEventListener('click', e /* :MouseEvent */ => ...)\n--- \n---```\n---\n---The text inside the ``` block is code and should not be localized.\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.ts_ls.JsTs.InlayHints.PropertyDeclarationTypes\n---Enable/disable inlay hints for implicit types on property declarations:\n---```typescript\n---\n---class Foo {\n---\tprop /* :number */ = Date.now();\n---}\n--- \n---```\n---\n---The text inside the ``` block is code and should not be localized.\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.ts_ls.JsTs.InlayHints.VariableTypes\n---Enable/disable inlay hints for implicit variable types:\n---```typescript\n---\n---const foo /* :number */ = Date.now();\n--- \n---```\n---\n---The text inside the ``` block is code and should not be localized.\n---@field enabled? boolean\n---Suppress type hints on variables whose name is identical to the type name.\n---\n---```lua\n---default = true\n---```\n---@field suppressWhenTypeMatchesName? boolean\n\n---@class _.lspconfig.settings.ts_ls.JsTs.InlayHints\n---@field enumMemberValues? _.lspconfig.settings.ts_ls.JsTs.InlayHints.EnumMemberValues\n---@field functionLikeReturnTypes? _.lspconfig.settings.ts_ls.JsTs.InlayHints.FunctionLikeReturnTypes\n---@field parameterNames? _.lspconfig.settings.ts_ls.JsTs.InlayHints.ParameterNames\n---@field parameterTypes? _.lspconfig.settings.ts_ls.JsTs.InlayHints.ParameterTypes\n---@field propertyDeclarationTypes? _.lspconfig.settings.ts_ls.JsTs.InlayHints.PropertyDeclarationTypes\n---@field variableTypes? _.lspconfig.settings.ts_ls.JsTs.InlayHints.VariableTypes\n\n---Advanced preferences that control how imports are ordered.\n---@class _.lspconfig.settings.ts_ls.JsTs.Preferences.OrganizeImports\n---Requires `organizeImports.unicodeCollation: 'unicode'`. Compare characters with diacritical marks as unequal to base character.\n---@field accentCollation? boolean\n---Requires `organizeImports.unicodeCollation: 'unicode'`, and `organizeImports.caseSensitivity` is not `caseInsensitive`. Indicates whether upper-case will sort before lower-case.\n---\n---```lua\n---default = \"default\"\n---```\n---@field caseFirst? \"default\" | \"upper\" | \"lower\"\n---Specifies how imports should be sorted with regards to case-sensitivity. If `auto` or unspecified, we will detect the case-sensitivity per file\n---\n---```lua\n---default = \"auto\"\n---```\n---@field caseSensitivity? \"auto\" | \"caseInsensitive\" | \"caseSensitive\"\n---Requires `organizeImports.unicodeCollation: 'unicode'`. Overrides the locale used for collation. Specify `auto` to use the UI locale.\n---@field locale? string\n---Requires `organizeImports.unicodeCollation: 'unicode'`. Sort numeric strings by integer value.\n---@field numericCollation? boolean\n---Specify how type-only named imports should be sorted.\n---\n---```lua\n---default = \"auto\"\n---```\n---@field typeOrder? \"auto\" | \"last\" | \"inline\" | \"first\"\n---Specify whether to sort imports using Unicode or Ordinal collation.\n---\n---```lua\n---default = \"ordinal\"\n---```\n---@field unicodeCollation? \"ordinal\" | \"unicode\"\n\n---@class _.lspconfig.settings.ts_ls.JsTs.Preferences\n---Specify glob patterns of files to exclude from auto imports. Relative paths are resolved relative to the workspace root. Patterns are evaluated using tsconfig.json [`exclude`](https://www.typescriptlang.org/tsconfig#exclude) semantics.\n---@field autoImportFileExcludePatterns? string[]\n---Specify regular expressions to exclude auto imports with matching import specifiers. Examples:\n---\n---- `^node:`\n---- `lib/internal` (slashes don't need to be escaped...)\n---- `/lib\\/internal/i` (...unless including surrounding slashes for `i` or `u` flags)\n---- `^lodash$` (only allow subpath imports from lodash)\n---@field autoImportSpecifierExcludeRegexes? string[]\n---Preferred path style for auto imports.\n---\n---```lua\n---default = \"shortest\"\n---```\n---@field importModuleSpecifier? \"shortest\" | \"relative\" | \"non-relative\" | \"project-relative\"\n---Preferred path ending for auto imports.\n---\n---```lua\n---default = \"auto\"\n---```\n---@field importModuleSpecifierEnding? \"auto\" | \"minimal\" | \"index\" | \"js\"\n---Enable/disable searching `package.json` dependencies for available auto imports.\n---\n---```lua\n---default = \"auto\"\n---```\n---@field includePackageJsonAutoImports? \"auto\" | \"on\" | \"off\"\n---Preferred style for JSX attribute completions.\n---\n---```lua\n---default = \"auto\"\n---```\n---@field jsxAttributeCompletionStyle? \"auto\" | \"braces\" | \"none\"\n---Advanced preferences that control how imports are ordered.\n---@field organizeImports? _.lspconfig.settings.ts_ls.JsTs.Preferences.OrganizeImports\n---Include the `type` keyword in auto-imports whenever possible. Requires using TypeScript 5.3+ in the workspace.\n---@field preferTypeOnlyAutoImports? boolean\n---Preferred quote style to use for Quick Fixes.\n---\n---```lua\n---default = \"auto\"\n---```\n---@field quoteStyle? \"auto\" | \"single\" | \"double\"\n---When on a JSX tag, try to rename the matching tag instead of renaming the symbol. Requires using TypeScript 5.1+ in the workspace.\n---\n---```lua\n---default = true\n---```\n---@field renameMatchingJsxTags? boolean\n---Enable/disable introducing aliases for object shorthand properties during renames.\n---\n---```lua\n---default = true\n---```\n---@field useAliasesForRenames? boolean\n\n---@class _.lspconfig.settings.ts_ls.JsTs.ReferencesCodeLens\n---Enable/disable references CodeLens in JavaScript and TypeScript files. This CodeLens shows the number of references for classes and exported functions and allows you to peek or navigate to them.\n---@field enabled? boolean\n---Enable/disable the [references CodeLens](#js/ts.referencesCodeLens.enabled) on all functions in JavaScript and TypeScript files.\n---@field showOnAllFunctions? boolean\n\n---@class _.lspconfig.settings.ts_ls.JsTs.Suggest.ClassMemberSnippets\n---Enable/disable snippet completions for class members.\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.ts_ls.JsTs.Suggest.Jsdoc\n---Enable/disable suggestion to complete JSDoc comments.\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n---Enable/disable generating `@returns` annotations for JSDoc templates.\n---\n---```lua\n---default = true\n---```\n---@field generateReturns? boolean\n\n---@class _.lspconfig.settings.ts_ls.JsTs.Suggest.ObjectLiteralMethodSnippets\n---Enable/disable snippet completions for methods in object literals.\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.ts_ls.JsTs.Suggest\n---Enable/disable auto import suggestions.\n---\n---```lua\n---default = true\n---```\n---@field autoImports? boolean\n---@field classMemberSnippets? _.lspconfig.settings.ts_ls.JsTs.Suggest.ClassMemberSnippets\n---Complete functions with their parameter signature.\n---@field completeFunctionCalls? boolean\n---Enable/disable autocomplete suggestions.\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n---Enable/disable showing completions on potentially undefined values that insert an optional chain call. Requires strict null checks to be enabled.\n---\n---```lua\n---default = true\n---```\n---@field includeAutomaticOptionalChainCompletions? boolean\n---Enable/disable auto-import-style completions on partially-typed import statements.\n---\n---```lua\n---default = true\n---```\n---@field includeCompletionsForImportStatements? boolean\n---@field jsdoc? _.lspconfig.settings.ts_ls.JsTs.Suggest.Jsdoc\n---Enable/disable including unique names from the file in JavaScript suggestions. Note that name suggestions are always disabled in JavaScript code that is semantically checked using `@ts-check` or `checkJs`.\n---\n---```lua\n---default = true\n---```\n---@field names? boolean\n---@field objectLiteralMethodSnippets? _.lspconfig.settings.ts_ls.JsTs.Suggest.ObjectLiteralMethodSnippets\n---Enable/disable suggestions for paths in import statements and require calls.\n---\n---```lua\n---default = true\n---```\n---@field paths? boolean\n\n---@class _.lspconfig.settings.ts_ls.JsTs.SuggestionActions\n---Enable/disable suggestion diagnostics for JavaScript and TypeScript files in the editor.\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.ts_ls.JsTs.Tsc\n---Controls auto detection of tsc tasks.\n---\n---```lua\n---default = \"on\"\n---```\n---@field autoDetect? \"on\" | \"off\" | \"build\" | \"watch\"\n\n---@class _.lspconfig.settings.ts_ls.JsTs.Tsdk\n---Specifies the folder path to the tsserver and `lib*.d.ts` files under a TypeScript install to use for IntelliSense, for example: `./node_modules/typescript/lib`.\n---\n---- When specified as a user setting, the TypeScript version from `typescript.tsdk` automatically replaces the built-in TypeScript version.\n---- When specified as a workspace setting, `typescript.tsdk` allows you to switch to use that workspace version of TypeScript for IntelliSense with the `TypeScript: Select TypeScript version` command.\n---\n---See the [TypeScript documentation](https://code.visualstudio.com/docs/typescript/typescript-compiling#_using-newer-typescript-versions) for more detail about managing TypeScript versions.\n---@field path? string\n---Enables prompting of users to use the TypeScript version configured in the workspace for Intellisense.\n---@field promptToUseWorkspaceVersion? boolean\n\n---@class _.lspconfig.settings.ts_ls.JsTs.Tsserver.AutomaticTypeAcquisition\n---Enable [automatic type acquisition](https://code.visualstudio.com/docs/nodejs/working-with-javascript#_typings-and-automatic-type-acquisition). Automatic type acquisition fetches `@types` packages from npm to improve IntelliSense for external libraries.\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.ts_ls.JsTs.Tsserver.Experimental\n---Enables project wide error reporting.\n---@field enableProjectDiagnostics? boolean\n\n---Configures heap profiling for TypeScript server.\n---\n---```lua\n---default = {\n---  enabled = false\n---}\n---```\n---@class _.lspconfig.settings.ts_ls.JsTs.Tsserver.HeapProfile\n---Directory where TypeScript server writes heap profiles by passing `--heap-prof-dir`.\n---@field dir? string\n---Enable heap profiling for TypeScript server by passing `--heap-prof`.\n---@field enabled? boolean\n---Sampling interval in bytes for TypeScript server heap profiling by passing `--heap-prof-interval`.\n---@field interval? number\n\n---@class _.lspconfig.settings.ts_ls.JsTs.Tsserver.Node\n---Run TS Server on a custom Node installation. This can be a path to a Node executable, or `node` if you want VS Code to detect a Node installation.\n---@field path? string\n\n---@class _.lspconfig.settings.ts_ls.JsTs.Tsserver.Npm\n---Specifies the path to the npm executable used for [Automatic Type Acquisition](https://code.visualstudio.com/docs/nodejs/working-with-javascript#_typings-and-automatic-type-acquisition).\n---@field path? string\n\n---@class _.lspconfig.settings.ts_ls.JsTs.Tsserver.Tracing\n---Enables tracing TS server performance to a directory. These trace files can be used to diagnose TS Server performance issues. The log may contain file paths, source code, and other potentially sensitive information from your project.\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.ts_ls.JsTs.Tsserver.Web.ProjectWideIntellisense\n---Enable/disable project-wide IntelliSense on web. Requires that VS Code is running in a trusted context.\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n---Suppresses semantic errors on web even when project wide IntelliSense is enabled. This is always on when project wide IntelliSense is not enabled or available. See `#js/ts.tsserver.web.projectWideIntellisense.enabled#`\n---@field suppressSemanticErrors? boolean\n\n---@class _.lspconfig.settings.ts_ls.JsTs.Tsserver.Web.TypeAcquisition\n---Enable/disable package acquisition on the web. This enables IntelliSense for imported packages. Requires `#js/ts.tsserver.web.projectWideIntellisense.enabled#`. Currently not supported for Safari.\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.ts_ls.JsTs.Tsserver.Web\n---@field projectWideIntellisense? _.lspconfig.settings.ts_ls.JsTs.Tsserver.Web.ProjectWideIntellisense\n---@field typeAcquisition? _.lspconfig.settings.ts_ls.JsTs.Tsserver.Web.TypeAcquisition\n\n---@class _.lspconfig.settings.ts_ls.JsTs.Tsserver\n---@field automaticTypeAcquisition? _.lspconfig.settings.ts_ls.JsTs.Tsserver.AutomaticTypeAcquisition\n---Check if npm is installed for [Automatic Type Acquisition](https://code.visualstudio.com/docs/nodejs/working-with-javascript#_typings-and-automatic-type-acquisition).\n---\n---```lua\n---default = true\n---```\n---@field checkNpmIsInstalled? boolean\n---Directory where TypeScript server writes Node diagnostic output by passing `--diagnostic-dir`.\n---@field diagnosticDir? string\n---@field experimental? _.lspconfig.settings.ts_ls.JsTs.Tsserver.Experimental\n---Configures heap profiling for TypeScript server.\n---\n---```lua\n---default = {\n---  enabled = false\n---}\n---```\n---@field heapProfile? _.lspconfig.settings.ts_ls.JsTs.Tsserver.HeapProfile\n---Controls how many near-heap-limit snapshots TypeScript server writes by passing `--heapsnapshot-near-heap-limit`. Set to `0` to disable.\n---\n---```lua\n---default = 0\n---```\n---@field heapSnapshot? number\n---Enables logging of the TS server to a file. This log can be used to diagnose TS Server issues. The log may contain file paths, source code, and other potentially sensitive information from your project.\n---\n---```lua\n---default = \"off\"\n---```\n---@field log? \"off\" | \"terse\" | \"normal\" | \"verbose\" | \"requestTime\"\n---The maximum amount of memory (in MB) to allocate to the TypeScript server process. To use a memory limit greater than 4 GB, use `#js/ts.tsserver.node.path#` to run TS Server with a custom Node installation.\n---\n---```lua\n---default = 3072\n---```\n---@field maxMemory? number\n---@field node? _.lspconfig.settings.ts_ls.JsTs.Tsserver.Node\n---@field npm? _.lspconfig.settings.ts_ls.JsTs.Tsserver.Npm\n---Additional paths to discover TypeScript Language Service plugins.\n---\n---```lua\n---default = {}\n---```\n---@field pluginPaths? string[]\n---@field tracing? _.lspconfig.settings.ts_ls.JsTs.Tsserver.Tracing\n---Controls if TypeScript launches a dedicated server to more quickly handle syntax related operations, such as computing code folding.\n---\n---```lua\n---default = \"auto\"\n---```\n---@field useSyntaxServer? \"always\" | \"never\" | \"auto\"\n---Configure which watching strategies should be used to keep track of files and directories.\n---\n---```lua\n---default = \"vscode\"\n---```\n---@field watchOptions? any\n---@field web? _.lspconfig.settings.ts_ls.JsTs.Tsserver.Web\n\n---@class _.lspconfig.settings.ts_ls.JsTs.UpdateImportsOnFileMove\n---Enable/disable automatic updating of import paths when you rename or move a file in VS Code.\n---\n---```lua\n---default = \"prompt\"\n---```\n---@field enabled? \"prompt\" | \"always\" | \"never\"\n\n---@class _.lspconfig.settings.ts_ls.JsTs.UpdateImportsOnPaste\n---Automatically update imports when pasting code. Requires TypeScript 5.6+.\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.ts_ls.JsTs.Validate\n---Enable/disable JavaScript and TypeScript validation.\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.ts_ls.JsTs.WorkspaceSymbols\n---Exclude symbols that come from library files in `Go to Symbol in Workspace` results. Requires using TypeScript 5.3+ in the workspace.\n---\n---```lua\n---default = true\n---```\n---@field excludeLibrarySymbols? boolean\n---Controls which files are searched by [Go to Symbol in Workspace](https://code.visualstudio.com/docs/editor/editingevolved#_open-symbol-by-name).\n---\n---```lua\n---default = \"allOpenProjects\"\n---```\n---@field scope? \"allOpenProjects\" | \"currentProject\"\n\n---@class _.lspconfig.settings.ts_ls.JsTs\n---@field autoClosingTags? _.lspconfig.settings.ts_ls.JsTs.AutoClosingTags\n---@field experimental? _.lspconfig.settings.ts_ls.JsTs.Experimental\n---@field format? _.lspconfig.settings.ts_ls.JsTs.Format\n---@field hover? _.lspconfig.settings.ts_ls.JsTs.Hover\n---@field implementationsCodeLens? _.lspconfig.settings.ts_ls.JsTs.ImplementationsCodeLens\n---@field implicitProjectConfig? _.lspconfig.settings.ts_ls.JsTs.ImplicitProjectConfig\n---@field inlayHints? _.lspconfig.settings.ts_ls.JsTs.InlayHints\n---Sets the locale used to report JavaScript and TypeScript errors. Defaults to use VS Code's locale.\n---\n---```lua\n---default = \"auto\"\n---```\n---@field locale? \"auto\" | \"de\" | \"es\" | \"en\" | \"fr\" | \"it\" | \"ja\" | \"ko\" | \"ru\" | \"zh-CN\" | \"zh-TW\"\n---Makes `Go to Definition` avoid type declaration files when possible by triggering `Go to Source Definition` instead. This allows `Go to Source Definition` to be triggered with the mouse gesture.\n---@field preferGoToSourceDefinition? boolean\n---@field preferences? _.lspconfig.settings.ts_ls.JsTs.Preferences\n---@field referencesCodeLens? _.lspconfig.settings.ts_ls.JsTs.ReferencesCodeLens\n---Report style checks as warnings.\n---\n---```lua\n---default = true\n---```\n---@field reportStyleChecksAsWarnings? boolean\n---@field suggest? _.lspconfig.settings.ts_ls.JsTs.Suggest\n---@field suggestionActions? _.lspconfig.settings.ts_ls.JsTs.SuggestionActions\n---@field tsc? _.lspconfig.settings.ts_ls.JsTs.Tsc\n---@field tsdk? _.lspconfig.settings.ts_ls.JsTs.Tsdk\n---@field tsserver? _.lspconfig.settings.ts_ls.JsTs.Tsserver\n---@field updateImportsOnFileMove? _.lspconfig.settings.ts_ls.JsTs.UpdateImportsOnFileMove\n---@field updateImportsOnPaste? _.lspconfig.settings.ts_ls.JsTs.UpdateImportsOnPaste\n---@field validate? _.lspconfig.settings.ts_ls.JsTs.Validate\n---@field workspaceSymbols? _.lspconfig.settings.ts_ls.JsTs.WorkspaceSymbols\n\n---@class _.lspconfig.settings.ts_ls.Typescript.Check\n---Check if npm is installed for [Automatic Type Acquisition](https://code.visualstudio.com/docs/nodejs/working-with-javascript#_typings-and-automatic-type-acquisition).\n---\n---```lua\n---default = true\n---```\n---@field npmIsInstalled? boolean\n\n---@class _.lspconfig.settings.ts_ls.Typescript.Experimental\n---Disables TypeScript and JavaScript language features to allow usage of the TypeScript Go experimental extension. Requires TypeScript Go to be installed and configured. Requires reloading extensions after changing this setting.\n---@field useTsgo? boolean\n\n---@class _.lspconfig.settings.ts_ls.Typescript.Format\n---Enable/disable default TypeScript formatter.\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n---Indent case clauses in switch statements. Requires using TypeScript 5.1+ in the workspace.\n---\n---```lua\n---default = true\n---```\n---@field indentSwitchCase? boolean\n---Defines space handling after a comma delimiter.\n---\n---```lua\n---default = true\n---```\n---@field insertSpaceAfterCommaDelimiter? boolean\n---Defines space handling after the constructor keyword.\n---@field insertSpaceAfterConstructor? boolean\n---Defines space handling after function keyword for anonymous functions.\n---\n---```lua\n---default = true\n---```\n---@field insertSpaceAfterFunctionKeywordForAnonymousFunctions? boolean\n---Defines space handling after keywords in a control flow statement.\n---\n---```lua\n---default = true\n---```\n---@field insertSpaceAfterKeywordsInControlFlowStatements? boolean\n---Defines space handling after opening and before closing empty braces.\n---\n---```lua\n---default = true\n---```\n---@field insertSpaceAfterOpeningAndBeforeClosingEmptyBraces? boolean\n---Defines space handling after opening and before closing JSX expression braces.\n---@field insertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces? boolean\n---Defines space handling after opening and before closing non-empty braces.\n---\n---```lua\n---default = true\n---```\n---@field insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces? boolean\n---Defines space handling after opening and before closing non-empty brackets.\n---@field insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets? boolean\n---Defines space handling after opening and before closing non-empty parenthesis.\n---@field insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis? boolean\n---Defines space handling after opening and before closing template string braces.\n---@field insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces? boolean\n---Defines space handling after a semicolon in a for statement.\n---\n---```lua\n---default = true\n---```\n---@field insertSpaceAfterSemicolonInForStatements? boolean\n---Defines space handling after type assertions in TypeScript.\n---@field insertSpaceAfterTypeAssertion? boolean\n---Defines space handling after a binary operator.\n---\n---```lua\n---default = true\n---```\n---@field insertSpaceBeforeAndAfterBinaryOperators? boolean\n---Defines space handling before function argument parentheses.\n---@field insertSpaceBeforeFunctionParenthesis? boolean\n---Defines whether an open brace is put onto a new line for control blocks or not.\n---@field placeOpenBraceOnNewLineForControlBlocks? boolean\n---Defines whether an open brace is put onto a new line for functions or not.\n---@field placeOpenBraceOnNewLineForFunctions? boolean\n---Defines handling of optional semicolons.\n---\n---```lua\n---default = \"ignore\"\n---```\n---@field semicolons? \"ignore\" | \"insert\" | \"remove\"\n\n---@class _.lspconfig.settings.ts_ls.Typescript.ImplementationsCodeLens\n---Enable/disable implementations CodeLens in TypeScript files. This CodeLens shows the implementers of TypeScript interfaces.\n---@field enabled? boolean\n---Enable/disable showing [implementations CodeLens](#js/ts.implementationsCodeLens.enabled) above all TypeScript class methods instead of only on abstract methods.\n---@field showOnAllClassMethods? boolean\n---Enable/disable [implementations CodeLens](#js/ts.implementationsCodeLens.enabled) on TypeScript interface methods.\n---@field showOnInterfaceMethods? boolean\n\n---@class _.lspconfig.settings.ts_ls.Typescript.InlayHints.EnumMemberValues\n---Enable/disable inlay hints for member values in enum declarations:\n---```typescript\n---\n---enum MyValue {\n---\tA /* = 0 */;\n---\tB /* = 1 */;\n---}\n--- \n---```\n---\n---The text inside the ``` block is code and should not be localized.\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.ts_ls.Typescript.InlayHints.FunctionLikeReturnTypes\n---Enable/disable inlay hints for implicit return types on function signatures:\n---```typescript\n---\n---function foo() /* :number */ {\n---\treturn Date.now();\n---} \n--- \n---```\n---\n---The text inside the ``` block is code and should not be localized.\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.ts_ls.Typescript.InlayHints.ParameterNames\n---Enable/disable inlay hints for parameter names:\n---```typescript\n---\n---parseInt(/* str: */ '123', /* radix: */ 8)\n--- \n---```\n---\n---The text inside the ``` block is code and should not be localized.\n---\n---```lua\n---default = \"none\"\n---```\n---@field enabled? \"none\" | \"literals\" | \"all\"\n---Suppress parameter name hints on arguments whose text is identical to the parameter name.\n---\n---```lua\n---default = true\n---```\n---@field suppressWhenArgumentMatchesName? boolean\n\n---@class _.lspconfig.settings.ts_ls.Typescript.InlayHints.ParameterTypes\n---Enable/disable inlay hints for implicit parameter types:\n---```typescript\n---\n---el.addEventListener('click', e /* :MouseEvent */ => ...)\n--- \n---```\n---\n---The text inside the ``` block is code and should not be localized.\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.ts_ls.Typescript.InlayHints.PropertyDeclarationTypes\n---Enable/disable inlay hints for implicit types on property declarations:\n---```typescript\n---\n---class Foo {\n---\tprop /* :number */ = Date.now();\n---}\n--- \n---```\n---\n---The text inside the ``` block is code and should not be localized.\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.ts_ls.Typescript.InlayHints.VariableTypes\n---Enable/disable inlay hints for implicit variable types:\n---```typescript\n---\n---const foo /* :number */ = Date.now();\n--- \n---```\n---\n---The text inside the ``` block is code and should not be localized.\n---@field enabled? boolean\n---Suppress type hints on variables whose name is identical to the type name.\n---\n---```lua\n---default = true\n---```\n---@field suppressWhenTypeMatchesName? boolean\n\n---@class _.lspconfig.settings.ts_ls.Typescript.InlayHints\n---@field enumMemberValues? _.lspconfig.settings.ts_ls.Typescript.InlayHints.EnumMemberValues\n---@field functionLikeReturnTypes? _.lspconfig.settings.ts_ls.Typescript.InlayHints.FunctionLikeReturnTypes\n---@field parameterNames? _.lspconfig.settings.ts_ls.Typescript.InlayHints.ParameterNames\n---@field parameterTypes? _.lspconfig.settings.ts_ls.Typescript.InlayHints.ParameterTypes\n---@field propertyDeclarationTypes? _.lspconfig.settings.ts_ls.Typescript.InlayHints.PropertyDeclarationTypes\n---@field variableTypes? _.lspconfig.settings.ts_ls.Typescript.InlayHints.VariableTypes\n\n---Advanced preferences that control how imports are ordered.\n---@class _.lspconfig.settings.ts_ls.Typescript.Preferences.OrganizeImports\n---Requires `organizeImports.unicodeCollation: 'unicode'`. Compare characters with diacritical marks as unequal to base character.\n---@field accentCollation? boolean\n---Requires `organizeImports.unicodeCollation: 'unicode'`, and `organizeImports.caseSensitivity` is not `caseInsensitive`. Indicates whether upper-case will sort before lower-case.\n---\n---```lua\n---default = \"default\"\n---```\n---@field caseFirst? \"default\" | \"upper\" | \"lower\"\n---Specifies how imports should be sorted with regards to case-sensitivity. If `auto` or unspecified, we will detect the case-sensitivity per file\n---\n---```lua\n---default = \"auto\"\n---```\n---@field caseSensitivity? \"auto\" | \"caseInsensitive\" | \"caseSensitive\"\n---Requires `organizeImports.unicodeCollation: 'unicode'`. Overrides the locale used for collation. Specify `auto` to use the UI locale.\n---@field locale? string\n---Requires `organizeImports.unicodeCollation: 'unicode'`. Sort numeric strings by integer value.\n---@field numericCollation? boolean\n---Specify how type-only named imports should be sorted.\n---\n---```lua\n---default = \"auto\"\n---```\n---@field typeOrder? \"auto\" | \"last\" | \"inline\" | \"first\"\n---Specify whether to sort imports using Unicode or Ordinal collation.\n---\n---```lua\n---default = \"ordinal\"\n---```\n---@field unicodeCollation? \"ordinal\" | \"unicode\"\n\n---@class _.lspconfig.settings.ts_ls.Typescript.Preferences\n---Specify glob patterns of files to exclude from auto imports. Relative paths are resolved relative to the workspace root. Patterns are evaluated using tsconfig.json [`exclude`](https://www.typescriptlang.org/tsconfig#exclude) semantics.\n---@field autoImportFileExcludePatterns? string[]\n---Specify regular expressions to exclude auto imports with matching import specifiers. Examples:\n---\n---- `^node:`\n---- `lib/internal` (slashes don't need to be escaped...)\n---- `/lib\\/internal/i` (...unless including surrounding slashes for `i` or `u` flags)\n---- `^lodash$` (only allow subpath imports from lodash)\n---@field autoImportSpecifierExcludeRegexes? string[]\n---Preferred path style for auto imports.\n---\n---```lua\n---default = \"shortest\"\n---```\n---@field importModuleSpecifier? \"shortest\" | \"relative\" | \"non-relative\" | \"project-relative\"\n---Preferred path ending for auto imports.\n---\n---```lua\n---default = \"auto\"\n---```\n---@field importModuleSpecifierEnding? \"auto\" | \"minimal\" | \"index\" | \"js\"\n---Enable/disable searching `package.json` dependencies for available auto imports.\n---\n---```lua\n---default = \"auto\"\n---```\n---@field includePackageJsonAutoImports? \"auto\" | \"on\" | \"off\"\n---Preferred style for JSX attribute completions.\n---\n---```lua\n---default = \"auto\"\n---```\n---@field jsxAttributeCompletionStyle? \"auto\" | \"braces\" | \"none\"\n---Advanced preferences that control how imports are ordered.\n---@field organizeImports? _.lspconfig.settings.ts_ls.Typescript.Preferences.OrganizeImports\n---Include the `type` keyword in auto-imports whenever possible. Requires using TypeScript 5.3+ in the workspace.\n---@field preferTypeOnlyAutoImports? boolean\n---Preferred quote style to use for Quick Fixes.\n---\n---```lua\n---default = \"auto\"\n---```\n---@field quoteStyle? \"auto\" | \"single\" | \"double\"\n---When on a JSX tag, try to rename the matching tag instead of renaming the symbol. Requires using TypeScript 5.1+ in the workspace.\n---\n---```lua\n---default = true\n---```\n---@field renameMatchingJsxTags? boolean\n---Enable/disable introducing aliases for object shorthand properties during renames.\n---\n---```lua\n---default = true\n---```\n---@field useAliasesForRenames? boolean\n\n---@class _.lspconfig.settings.ts_ls.Typescript.ReferencesCodeLens\n---Enable/disable references CodeLens in JavaScript and TypeScript files. This CodeLens shows the number of references for classes and exported functions and allows you to peek or navigate to them.\n---@field enabled? boolean\n---Enable/disable the [references CodeLens](#js/ts.referencesCodeLens.enabled) on all functions in JavaScript and TypeScript files.\n---@field showOnAllFunctions? boolean\n\n---@class _.lspconfig.settings.ts_ls.Typescript.Suggest.ClassMemberSnippets\n---Enable/disable snippet completions for class members.\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.ts_ls.Typescript.Suggest.Jsdoc\n---Enable/disable generating `@returns` annotations for JSDoc templates.\n---\n---```lua\n---default = true\n---```\n---@field generateReturns? boolean\n\n---@class _.lspconfig.settings.ts_ls.Typescript.Suggest.ObjectLiteralMethodSnippets\n---Enable/disable snippet completions for methods in object literals.\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.ts_ls.Typescript.Suggest\n---Enable/disable auto import suggestions.\n---\n---```lua\n---default = true\n---```\n---@field autoImports? boolean\n---@field classMemberSnippets? _.lspconfig.settings.ts_ls.Typescript.Suggest.ClassMemberSnippets\n---Complete functions with their parameter signature.\n---@field completeFunctionCalls? boolean\n---Enable/disable suggestion to complete JSDoc comments.\n---\n---```lua\n---default = true\n---```\n---@field completeJSDocs? boolean\n---Enable/disable autocomplete suggestions.\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n---Enable/disable showing completions on potentially undefined values that insert an optional chain call. Requires strict null checks to be enabled.\n---\n---```lua\n---default = true\n---```\n---@field includeAutomaticOptionalChainCompletions? boolean\n---Enable/disable auto-import-style completions on partially-typed import statements.\n---\n---```lua\n---default = true\n---```\n---@field includeCompletionsForImportStatements? boolean\n---@field jsdoc? _.lspconfig.settings.ts_ls.Typescript.Suggest.Jsdoc\n---@field objectLiteralMethodSnippets? _.lspconfig.settings.ts_ls.Typescript.Suggest.ObjectLiteralMethodSnippets\n---Enable/disable suggestions for paths in import statements and require calls.\n---\n---```lua\n---default = true\n---```\n---@field paths? boolean\n\n---@class _.lspconfig.settings.ts_ls.Typescript.SuggestionActions\n---Enable/disable suggestion diagnostics for TypeScript files in the editor.\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.ts_ls.Typescript.Tsc\n---Controls auto detection of tsc tasks.\n---\n---```lua\n---default = \"on\"\n---```\n---@field autoDetect? \"on\" | \"off\" | \"build\" | \"watch\"\n\n---@class _.lspconfig.settings.ts_ls.Typescript.Tsserver.Experimental\n---Enables project wide error reporting.\n---@field enableProjectDiagnostics? boolean\n\n---@class _.lspconfig.settings.ts_ls.Typescript.Tsserver.Web.ProjectWideIntellisense\n---Enable/disable project-wide IntelliSense on web. Requires that VS Code is running in a trusted context.\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n---Suppresses semantic errors on web even when project wide IntelliSense is enabled. This is always on when project wide IntelliSense is not enabled or available. See `#js/ts.tsserver.web.projectWideIntellisense.enabled#`\n---@field suppressSemanticErrors? boolean\n\n---@class _.lspconfig.settings.ts_ls.Typescript.Tsserver.Web.TypeAcquisition\n---Enable/disable package acquisition on the web. This enables IntelliSense for imported packages. Requires `#js/ts.tsserver.web.projectWideIntellisense.enabled#`. Currently not supported for Safari.\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.ts_ls.Typescript.Tsserver.Web\n---@field projectWideIntellisense? _.lspconfig.settings.ts_ls.Typescript.Tsserver.Web.ProjectWideIntellisense\n---@field typeAcquisition? _.lspconfig.settings.ts_ls.Typescript.Tsserver.Web.TypeAcquisition\n\n---@class _.lspconfig.settings.ts_ls.Typescript.Tsserver\n---Enables tracing TS server performance to a directory. These trace files can be used to diagnose TS Server performance issues. The log may contain file paths, source code, and other potentially sensitive information from your project.\n---@field enableTracing? boolean\n---@field experimental? _.lspconfig.settings.ts_ls.Typescript.Tsserver.Experimental\n---Enables logging of the TS server to a file. This log can be used to diagnose TS Server issues. The log may contain file paths, source code, and other potentially sensitive information from your project.\n---\n---```lua\n---default = \"off\"\n---```\n---@field log? \"off\" | \"terse\" | \"normal\" | \"verbose\" | \"requestTime\"\n---The maximum amount of memory (in MB) to allocate to the TypeScript server process. To use a memory limit greater than 4 GB, use `#js/ts.tsserver.node.path#` to run TS Server with a custom Node installation.\n---\n---```lua\n---default = 3072\n---```\n---@field maxTsServerMemory? number\n---Run TS Server on a custom Node installation. This can be a path to a Node executable, or `node` if you want VS Code to detect a Node installation.\n---@field nodePath? string\n---Additional paths to discover TypeScript Language Service plugins.\n---\n---```lua\n---default = {}\n---```\n---@field pluginPaths? string[]\n---Controls if TypeScript launches a dedicated server to more quickly handle syntax related operations, such as computing code folding.\n---\n---```lua\n---default = \"auto\"\n---```\n---@field useSyntaxServer? \"always\" | \"never\" | \"auto\"\n---Configure which watching strategies should be used to keep track of files and directories.\n---\n---```lua\n---default = \"vscode\"\n---```\n---@field watchOptions? any\n---@field web? _.lspconfig.settings.ts_ls.Typescript.Tsserver.Web\n\n---@class _.lspconfig.settings.ts_ls.Typescript.UpdateImportsOnFileMove\n---Enable/disable automatic updating of import paths when you rename or move a file in VS Code.\n---\n---```lua\n---default = \"prompt\"\n---```\n---@field enabled? \"prompt\" | \"always\" | \"never\"\n\n---@class _.lspconfig.settings.ts_ls.Typescript.UpdateImportsOnPaste\n---Automatically update imports when pasting code. Requires TypeScript 5.6+.\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.ts_ls.Typescript.Validate\n---Enable/disable TypeScript validation.\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n\n---@class _.lspconfig.settings.ts_ls.Typescript.WorkspaceSymbols\n---Exclude symbols that come from library files in `Go to Symbol in Workspace` results. Requires using TypeScript 5.3+ in the workspace.\n---\n---```lua\n---default = true\n---```\n---@field excludeLibrarySymbols? boolean\n---Controls which files are searched by [Go to Symbol in Workspace](https://code.visualstudio.com/docs/editor/editingevolved#_open-symbol-by-name).\n---\n---```lua\n---default = \"allOpenProjects\"\n---```\n---@field scope? \"allOpenProjects\" | \"currentProject\"\n\n---@class _.lspconfig.settings.ts_ls.Typescript\n---Enable/disable automatic closing of JSX tags.\n---\n---```lua\n---default = true\n---```\n---@field autoClosingTags? boolean\n---@field check? _.lspconfig.settings.ts_ls.Typescript.Check\n---Disables [automatic type acquisition](https://code.visualstudio.com/docs/nodejs/working-with-javascript#_typings-and-automatic-type-acquisition). Automatic type acquisition fetches `@types` packages from npm to improve IntelliSense for external libraries.\n---@field disableAutomaticTypeAcquisition? boolean\n---Enables prompting of users to use the TypeScript version configured in the workspace for Intellisense.\n---@field enablePromptUseWorkspaceTsdk? boolean\n---@field experimental? _.lspconfig.settings.ts_ls.Typescript.Experimental\n---@field format? _.lspconfig.settings.ts_ls.Typescript.Format\n---@field implementationsCodeLens? _.lspconfig.settings.ts_ls.Typescript.ImplementationsCodeLens\n---@field inlayHints? _.lspconfig.settings.ts_ls.Typescript.InlayHints\n---Sets the locale used to report JavaScript and TypeScript errors. Defaults to use VS Code's locale.\n---\n---```lua\n---default = \"auto\"\n---```\n---@field locale? \"auto\" | \"de\" | \"es\" | \"en\" | \"fr\" | \"it\" | \"ja\" | \"ko\" | \"ru\" | \"zh-CN\" | \"zh-TW\"\n---Specifies the path to the npm executable used for [Automatic Type Acquisition](https://code.visualstudio.com/docs/nodejs/working-with-javascript#_typings-and-automatic-type-acquisition).\n---@field npm? string\n---Makes `Go to Definition` avoid type declaration files when possible by triggering `Go to Source Definition` instead. This allows `Go to Source Definition` to be triggered with the mouse gesture.\n---@field preferGoToSourceDefinition? boolean\n---@field preferences? _.lspconfig.settings.ts_ls.Typescript.Preferences\n---@field referencesCodeLens? _.lspconfig.settings.ts_ls.Typescript.ReferencesCodeLens\n---Report style checks as warnings.\n---\n---```lua\n---default = true\n---```\n---@field reportStyleChecksAsWarnings? boolean\n---@field suggest? _.lspconfig.settings.ts_ls.Typescript.Suggest\n---@field suggestionActions? _.lspconfig.settings.ts_ls.Typescript.SuggestionActions\n---@field tsc? _.lspconfig.settings.ts_ls.Typescript.Tsc\n---Specifies the folder path to the tsserver and `lib*.d.ts` files under a TypeScript install to use for IntelliSense, for example: `./node_modules/typescript/lib`.\n---\n---- When specified as a user setting, the TypeScript version from `typescript.tsdk` automatically replaces the built-in TypeScript version.\n---- When specified as a workspace setting, `typescript.tsdk` allows you to switch to use that workspace version of TypeScript for IntelliSense with the `TypeScript: Select TypeScript version` command.\n---\n---See the [TypeScript documentation](https://code.visualstudio.com/docs/typescript/typescript-compiling#_using-newer-typescript-versions) for more detail about managing TypeScript versions.\n---@field tsdk? string\n---@field tsserver? _.lspconfig.settings.ts_ls.Typescript.Tsserver\n---@field updateImportsOnFileMove? _.lspconfig.settings.ts_ls.Typescript.UpdateImportsOnFileMove\n---@field updateImportsOnPaste? _.lspconfig.settings.ts_ls.Typescript.UpdateImportsOnPaste\n---@field validate? _.lspconfig.settings.ts_ls.Typescript.Validate\n---@field workspaceSymbols? _.lspconfig.settings.ts_ls.Typescript.WorkspaceSymbols\n\n---@class lspconfig.settings.ts_ls\n---@field javascript? _.lspconfig.settings.ts_ls.Javascript\n---@field [\"js/ts\"]? _.lspconfig.settings.ts_ls.JsTs\n---@field typescript? _.lspconfig.settings.ts_ls.Typescript\n"
  },
  {
    "path": "lua/lspconfig/types/lsp/typst_lsp.lua",
    "content": "---@meta\n\n---@class _.lspconfig.settings.typst_lsp.TypstLsp.Trace\n---Traces the communication between VS Code and the language server.\n---\n---```lua\n---default = \"off\"\n---```\n---@field server? \"off\" | \"messages\" | \"verbose\"\n\n---@class _.lspconfig.settings.typst_lsp.TypstLsp\n---The extension can format Typst files using typstfmt (experimental).\n---\n---```lua\n---default = \"off\"\n---```\n---@field experimentalFormatterMode? \"off\" | \"on\"\n---The extension can export PDFs of your Typst files. This setting controls whether this feature is enabled and how often it runs.\n---\n---```lua\n---default = \"onSave\"\n---```\n---@field exportPdf? \"never\" | \"onSave\" | \"onPinnedMainSave\" | \"onType\" | \"onPinnedMainType\"\n---Configure the root for absolute paths in typst\n---@field rootPath? string\n---Enable or disable semantic tokens (LSP syntax highlighting)\n---\n---```lua\n---default = \"enable\"\n---```\n---@field semanticTokens? \"enable\" | \"disable\"\n---The extension can use a local typst-lsp executable instead of the one bundled with the extension. This setting controls the path to the executable.\n---@field serverPath? string\n---@field trace? _.lspconfig.settings.typst_lsp.TypstLsp.Trace\n\n---@class lspconfig.settings.typst_lsp\n---@field [\"typst-lsp\"]? _.lspconfig.settings.typst_lsp.TypstLsp\n"
  },
  {
    "path": "lua/lspconfig/types/lsp/volar.lua",
    "content": "---@meta\n\n---@class _.lspconfig.settings.volar.Vue.AutoInsert\n---%configuration.autoInsert.bracketSpacing%\n---\n---```lua\n---default = true\n---```\n---@field bracketSpacing? boolean\n---%configuration.autoInsert.dotValue%\n---@field dotValue? boolean\n\n---@class _.lspconfig.settings.volar.Vue.CodeActions\n---%configuration.codeActions.askNewComponentName%\n---\n---```lua\n---default = true\n---```\n---@field askNewComponentName? boolean\n\n---@class _.lspconfig.settings.volar.Vue.Editor\n---%configuration.editor.focusMode%\n---@field focusMode? boolean\n---%configuration.editor.reactivityVisualization%\n---\n---```lua\n---default = true\n---```\n---@field reactivityVisualization? boolean\n---%configuration.editor.templateInterpolationDecorators%\n---\n---```lua\n---default = true\n---```\n---@field templateInterpolationDecorators? boolean\n\n---@class _.lspconfig.settings.volar.Vue.Format.Script\n---%configuration.format.script.enabled%\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n---%configuration.format.script.initialIndent%\n---@field initialIndent? boolean\n\n---@class _.lspconfig.settings.volar.Vue.Format.Style\n---%configuration.format.style.enabled%\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n---%configuration.format.style.initialIndent%\n---@field initialIndent? boolean\n\n---@class _.lspconfig.settings.volar.Vue.Format.Template\n---%configuration.format.template.enabled%\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n---%configuration.format.template.initialIndent%\n---\n---```lua\n---default = true\n---```\n---@field initialIndent? boolean\n\n---@class _.lspconfig.settings.volar.Vue.Format\n---@field script? _.lspconfig.settings.volar.Vue.Format.Script\n---@field style? _.lspconfig.settings.volar.Vue.Format.Style\n---@field template? _.lspconfig.settings.volar.Vue.Format.Template\n---%configuration.format.wrapAttributes%\n---\n---```lua\n---default = \"auto\"\n---```\n---@field wrapAttributes? \"auto\" | \"force\" | \"force-aligned\" | \"force-expand-multiline\" | \"aligned-multiple\" | \"preserve\" | \"preserve-aligned\"\n\n---@class _.lspconfig.settings.volar.Vue.Hover\n---%configuration.hover.rich%\n---@field rich? boolean\n\n---@class _.lspconfig.settings.volar.Vue.InlayHints\n---%configuration.inlayHints.destructuredProps%\n---@field destructuredProps? boolean\n---%configuration.inlayHints.inlineHandlerLeading%\n---@field inlineHandlerLeading? boolean\n---%configuration.inlayHints.missingProps%\n---@field missingProps? boolean\n---%configuration.inlayHints.optionsWrapper%\n---@field optionsWrapper? boolean\n---%configuration.inlayHints.vBindShorthand%\n---@field vBindShorthand? boolean\n\n---@class _.lspconfig.settings.volar.Vue.Server\n---%configuration.server.includeLanguages%\n---\n---```lua\n---default = { \"vue\" }\n---```\n---@field includeLanguages? string[]\n---%configuration.server.path%\n---@field path? string\n\n---@class _.lspconfig.settings.volar.Vue.Suggest\n---%configuration.suggest.componentNameCasing%\n---\n---```lua\n---default = \"preferPascalCase\"\n---```\n---@field componentNameCasing? \"preferKebabCase\" | \"preferPascalCase\" | \"alwaysKebabCase\" | \"alwaysPascalCase\"\n---%configuration.suggest.defineAssignment%\n---\n---```lua\n---default = true\n---```\n---@field defineAssignment? boolean\n---%configuration.suggest.propNameCasing%\n---\n---```lua\n---default = \"preferKebabCase\"\n---```\n---@field propNameCasing? \"preferKebabCase\" | \"preferCamelCase\" | \"alwaysKebabCase\" | \"alwaysCamelCase\"\n\n---@class _.lspconfig.settings.volar.Vue.Trace\n---%configuration.trace.server%\n---\n---```lua\n---default = \"off\"\n---```\n---@field server? \"off\" | \"messages\" | \"verbose\"\n\n---@class _.lspconfig.settings.volar.Vue\n---@field autoInsert? _.lspconfig.settings.volar.Vue.AutoInsert\n---@field codeActions? _.lspconfig.settings.volar.Vue.CodeActions\n---@field editor? _.lspconfig.settings.volar.Vue.Editor\n---@field format? _.lspconfig.settings.volar.Vue.Format\n---@field hover? _.lspconfig.settings.volar.Vue.Hover\n---@field inlayHints? _.lspconfig.settings.volar.Vue.InlayHints\n---@field server? _.lspconfig.settings.volar.Vue.Server\n---@field suggest? _.lspconfig.settings.volar.Vue.Suggest\n---@field trace? _.lspconfig.settings.volar.Vue.Trace\n\n---@class lspconfig.settings.volar\n---@field vue? _.lspconfig.settings.volar.Vue\n"
  },
  {
    "path": "lua/lspconfig/types/lsp/vtsls.lua",
    "content": "---@meta\n\n---@class _.lspconfig.settings.vtsls.Javascript.Format\n---Enable/disable default JavaScript formatter.\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n---Indent case clauses in switch statements. Requires using TypeScript 5.1+ in the workspace.\n---\n---```lua\n---default = true\n---```\n---@field indentSwitchCase? boolean\n---Defines space handling after a comma delimiter.\n---\n---```lua\n---default = true\n---```\n---@field insertSpaceAfterCommaDelimiter? boolean\n---Defines space handling after the constructor keyword.\n---@field insertSpaceAfterConstructor? boolean\n---Defines space handling after function keyword for anonymous functions.\n---\n---```lua\n---default = true\n---```\n---@field insertSpaceAfterFunctionKeywordForAnonymousFunctions? boolean\n---Defines space handling after keywords in a control flow statement.\n---\n---```lua\n---default = true\n---```\n---@field insertSpaceAfterKeywordsInControlFlowStatements? boolean\n---Defines space handling after opening and before closing empty braces.\n---\n---```lua\n---default = true\n---```\n---@field insertSpaceAfterOpeningAndBeforeClosingEmptyBraces? boolean\n---Defines space handling after opening and before closing JSX expression braces.\n---@field insertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces? boolean\n---Defines space handling after opening and before closing non-empty braces.\n---\n---```lua\n---default = true\n---```\n---@field insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces? boolean\n---Defines space handling after opening and before closing non-empty brackets.\n---@field insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets? boolean\n---Defines space handling after opening and before closing non-empty parenthesis.\n---@field insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis? boolean\n---Defines space handling after opening and before closing template string braces.\n---@field insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces? boolean\n---Defines space handling after a semicolon in a for statement.\n---\n---```lua\n---default = true\n---```\n---@field insertSpaceAfterSemicolonInForStatements? boolean\n---Defines space handling after a binary operator.\n---\n---```lua\n---default = true\n---```\n---@field insertSpaceBeforeAndAfterBinaryOperators? boolean\n---Defines space handling before function argument parentheses.\n---@field insertSpaceBeforeFunctionParenthesis? boolean\n---Defines whether an open brace is put onto a new line for control blocks or not.\n---@field placeOpenBraceOnNewLineForControlBlocks? boolean\n---Defines whether an open brace is put onto a new line for functions or not.\n---@field placeOpenBraceOnNewLineForFunctions? boolean\n---Defines handling of optional semicolons.\n---\n---```lua\n---default = \"ignore\"\n---```\n---@field semicolons? \"ignore\" | \"insert\" | \"remove\"\n\n---@class _.lspconfig.settings.vtsls.Javascript.InlayHints.FunctionLikeReturnTypes\n---Enable/disable inlay hints for implicit return types on function signatures:\n---```typescript\n---\n---function foo() /* :number */ {\n---\treturn Date.now();\n---} \n--- \n---```\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.vtsls.Javascript.InlayHints.ParameterNames\n---Enable/disable inlay hints for parameter names:\n---```typescript\n---\n---parseInt(/* str: */ '123', /* radix: */ 8)\n--- \n---```\n---\n---```lua\n---default = \"none\"\n---```\n---@field enabled? \"none\" | \"literals\" | \"all\"\n---Suppress parameter name hints on arguments whose text is identical to the parameter name.\n---\n---```lua\n---default = true\n---```\n---@field suppressWhenArgumentMatchesName? boolean\n\n---@class _.lspconfig.settings.vtsls.Javascript.InlayHints.ParameterTypes\n---Enable/disable inlay hints for implicit parameter types:\n---```typescript\n---\n---el.addEventListener('click', e /* :MouseEvent */ => ...)\n--- \n---```\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.vtsls.Javascript.InlayHints.PropertyDeclarationTypes\n---Enable/disable inlay hints for implicit types on property declarations:\n---```typescript\n---\n---class Foo {\n---\tprop /* :number */ = Date.now();\n---}\n--- \n---```\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.vtsls.Javascript.InlayHints.VariableTypes\n---Enable/disable inlay hints for implicit variable types:\n---```typescript\n---\n---const foo /* :number */ = Date.now();\n--- \n---```\n---@field enabled? boolean\n---Suppress type hints on variables whose name is identical to the type name.\n---\n---```lua\n---default = true\n---```\n---@field suppressWhenTypeMatchesName? boolean\n\n---@class _.lspconfig.settings.vtsls.Javascript.InlayHints\n---@field functionLikeReturnTypes? _.lspconfig.settings.vtsls.Javascript.InlayHints.FunctionLikeReturnTypes\n---@field parameterNames? _.lspconfig.settings.vtsls.Javascript.InlayHints.ParameterNames\n---@field parameterTypes? _.lspconfig.settings.vtsls.Javascript.InlayHints.ParameterTypes\n---@field propertyDeclarationTypes? _.lspconfig.settings.vtsls.Javascript.InlayHints.PropertyDeclarationTypes\n---@field variableTypes? _.lspconfig.settings.vtsls.Javascript.InlayHints.VariableTypes\n\n---Advanced preferences that control how imports are ordered.\n---@class _.lspconfig.settings.vtsls.Javascript.Preferences.OrganizeImports\n---Requires `organizeImports.unicodeCollation: 'unicode'`. Compare characters with diacritical marks as unequal to base character.\n---@field accentCollation? boolean\n---Requires `organizeImports.unicodeCollation: 'unicode'`, and `organizeImports.caseSensitivity` is not `caseInsensitive`. Indicates whether upper-case will sort before lower-case.\n---\n---```lua\n---default = \"default\"\n---```\n---@field caseFirst? \"default\" | \"upper\" | \"lower\"\n---Specifies how imports should be sorted with regards to case-sensitivity. If `auto` or unspecified, we will detect the case-sensitivity per file\n---\n---```lua\n---default = \"auto\"\n---```\n---@field caseSensitivity? \"auto\" | \"caseInsensitive\" | \"caseSensitive\"\n---Requires `organizeImports.unicodeCollation: 'unicode'`. Overrides the locale used for collation. Specify `auto` to use the UI locale.\n---@field locale? string\n---Requires `organizeImports.unicodeCollation: 'unicode'`. Sort numeric strings by integer value.\n---@field numericCollation? boolean\n---Specify how type-only named imports should be sorted.\n---\n---```lua\n---default = \"auto\"\n---```\n---@field typeOrder? \"auto\" | \"last\" | \"inline\" | \"first\"\n---Specify whether to sort imports using Unicode or Ordinal collation.\n---\n---```lua\n---default = \"ordinal\"\n---```\n---@field unicodeCollation? \"ordinal\" | \"unicode\"\n\n---@class _.lspconfig.settings.vtsls.Javascript.Preferences\n---Specify glob patterns of files to exclude from auto imports. Relative paths are resolved relative to the workspace root. Patterns are evaluated using tsconfig.json [`exclude`](https://www.typescriptlang.org/tsconfig#exclude) semantics.\n---@field autoImportFileExcludePatterns? string[]\n---Specify regular expressions to exclude auto imports with matching import specifiers. Examples:\n---\n---- `^node:`\n---- `lib/internal` (slashes don't need to be escaped...)\n---- `/lib\\/internal/i` (...unless including surrounding slashes for `i` or `u` flags)\n---- `^lodash$` (only allow subpath imports from lodash)\n---@field autoImportSpecifierExcludeRegexes? string[]\n---Preferred path style for auto imports.\n---\n---```lua\n---default = \"shortest\"\n---```\n---@field importModuleSpecifier? \"shortest\" | \"relative\" | \"non-relative\" | \"project-relative\"\n---Preferred path ending for auto imports.\n---\n---```lua\n---default = \"auto\"\n---```\n---@field importModuleSpecifierEnding? \"auto\" | \"minimal\" | \"index\" | \"js\"\n---Preferred style for JSX attribute completions.\n---\n---```lua\n---default = \"auto\"\n---```\n---@field jsxAttributeCompletionStyle? \"auto\" | \"braces\" | \"none\"\n---Advanced preferences that control how imports are ordered.\n---@field organizeImports? _.lspconfig.settings.vtsls.Javascript.Preferences.OrganizeImports\n---Preferred quote style to use for Quick Fixes.\n---\n---```lua\n---default = \"auto\"\n---```\n---@field quoteStyle? \"auto\" | \"single\" | \"double\"\n---When on a JSX tag, try to rename the matching tag instead of renaming the symbol. Requires using TypeScript 5.1+ in the workspace.\n---\n---```lua\n---default = true\n---```\n---@field renameMatchingJsxTags? boolean\n---Enable/disable introducing aliases for object shorthand properties during renames.\n---\n---```lua\n---default = true\n---```\n---@field useAliasesForRenames? boolean\n\n---@class _.lspconfig.settings.vtsls.Javascript.ReferencesCodeLens\n---Enable/disable references CodeLens in JavaScript files.\n---@field enabled? boolean\n---Enable/disable references CodeLens on all functions in JavaScript files.\n---@field showOnAllFunctions? boolean\n\n---@class _.lspconfig.settings.vtsls.Javascript.Suggest.ClassMemberSnippets\n---Enable/disable snippet completions for class members.\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.vtsls.Javascript.Suggest.Jsdoc\n---Enable/disable generating `@returns` annotations for JSDoc templates.\n---\n---```lua\n---default = true\n---```\n---@field generateReturns? boolean\n\n---@class _.lspconfig.settings.vtsls.Javascript.Suggest\n---Enable/disable auto import suggestions.\n---\n---```lua\n---default = true\n---```\n---@field autoImports? boolean\n---@field classMemberSnippets? _.lspconfig.settings.vtsls.Javascript.Suggest.ClassMemberSnippets\n---Complete functions with their parameter signature.\n---@field completeFunctionCalls? boolean\n---Enable/disable suggestion to complete JSDoc comments.\n---\n---```lua\n---default = true\n---```\n---@field completeJSDocs? boolean\n---Enable/disable autocomplete suggestions.\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n---Enable/disable showing completions on potentially undefined values that insert an optional chain call. Requires strict null checks to be enabled.\n---\n---```lua\n---default = true\n---```\n---@field includeAutomaticOptionalChainCompletions? boolean\n---Enable/disable auto-import-style completions on partially-typed import statements.\n---\n---```lua\n---default = true\n---```\n---@field includeCompletionsForImportStatements? boolean\n---@field jsdoc? _.lspconfig.settings.vtsls.Javascript.Suggest.Jsdoc\n---Enable/disable including unique names from the file in JavaScript suggestions. Note that name suggestions are always disabled in JavaScript code that is semantically checked using `@ts-check` or `checkJs`.\n---\n---```lua\n---default = true\n---```\n---@field names? boolean\n---Enable/disable suggestions for paths in import statements and require calls.\n---\n---```lua\n---default = true\n---```\n---@field paths? boolean\n\n---@class _.lspconfig.settings.vtsls.Javascript.SuggestionActions\n---Enable/disable suggestion diagnostics for JavaScript files in the editor.\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.vtsls.Javascript.UpdateImportsOnFileMove\n---Enable/disable automatic updating of import paths when you rename or move a file in VS Code.\n---\n---```lua\n---default = \"prompt\"\n---```\n---@field enabled? \"prompt\" | \"always\" | \"never\"\n\n---@class _.lspconfig.settings.vtsls.Javascript.Validate\n---Enable/disable JavaScript validation.\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n\n---@class _.lspconfig.settings.vtsls.Javascript\n---@field format? _.lspconfig.settings.vtsls.Javascript.Format\n---@field inlayHints? _.lspconfig.settings.vtsls.Javascript.InlayHints\n---Makes `Go to Definition` avoid type declaration files when possible by triggering `Go to Source Definition` instead. This allows `Go to Source Definition` to be triggered with the mouse gesture.\n---@field preferGoToSourceDefinition? boolean\n---@field preferences? _.lspconfig.settings.vtsls.Javascript.Preferences\n---@field referencesCodeLens? _.lspconfig.settings.vtsls.Javascript.ReferencesCodeLens\n---@field suggest? _.lspconfig.settings.vtsls.Javascript.Suggest\n---@field suggestionActions? _.lspconfig.settings.vtsls.Javascript.SuggestionActions\n---@field updateImportsOnFileMove? _.lspconfig.settings.vtsls.Javascript.UpdateImportsOnFileMove\n---@field validate? _.lspconfig.settings.vtsls.Javascript.Validate\n\n---@class _.lspconfig.settings.vtsls.JsTs.Hover\n---The maximum number of characters in a hover. If the hover is longer than this, it will be truncated. Requires TypeScript 5.9+.\n---\n---```lua\n---default = 500\n---```\n---@field maximumLength? number\n\n---@class _.lspconfig.settings.vtsls.JsTs.ImplicitProjectConfig\n---Enable/disable semantic checking of JavaScript files. Existing `jsconfig.json` or `tsconfig.json` files override this setting.\n---@field checkJs? boolean\n---Enable/disable `experimentalDecorators` in JavaScript files that are not part of a project. Existing `jsconfig.json` or `tsconfig.json` files override this setting.\n---@field experimentalDecorators? boolean\n---Sets the module system for the program. See more: https://www.typescriptlang.org/tsconfig#module.\n---\n---```lua\n---default = \"ESNext\"\n---```\n---@field module? \"CommonJS\" | \"AMD\" | \"System\" | \"UMD\" | \"ES6\" | \"ES2015\" | \"ES2020\" | \"ESNext\" | \"None\" | \"ES2022\" | \"Node12\" | \"NodeNext\"\n---Enable/disable [strict mode](https://www.typescriptlang.org/tsconfig#strict) in JavaScript and TypeScript files that are not part of a project. Existing `jsconfig.json` or `tsconfig.json` files override this setting.\n---\n---```lua\n---default = true\n---```\n---@field strict? boolean\n---Enable/disable [strict function types](https://www.typescriptlang.org/tsconfig#strictFunctionTypes) in JavaScript and TypeScript files that are not part of a project. Existing `jsconfig.json` or `tsconfig.json` files override this setting.\n---\n---```lua\n---default = true\n---```\n---@field strictFunctionTypes? boolean\n---Enable/disable [strict null checks](https://www.typescriptlang.org/tsconfig#strictNullChecks) in JavaScript and TypeScript files that are not part of a project. Existing `jsconfig.json` or `tsconfig.json` files override this setting.\n---\n---```lua\n---default = true\n---```\n---@field strictNullChecks? boolean\n---Set target JavaScript language version for emitted JavaScript and include library declarations. See more: https://www.typescriptlang.org/tsconfig#target.\n---\n---```lua\n---default = \"ES2024\"\n---```\n---@field target? \"ES3\" | \"ES5\" | \"ES6\" | \"ES2015\" | \"ES2016\" | \"ES2017\" | \"ES2018\" | \"ES2019\" | \"ES2020\" | \"ES2021\" | \"ES2022\" | \"ES2023\" | \"ES2024\" | \"ESNext\"\n\n---@class _.lspconfig.settings.vtsls.JsTs\n---@field hover? _.lspconfig.settings.vtsls.JsTs.Hover\n---@field implicitProjectConfig? _.lspconfig.settings.vtsls.JsTs.ImplicitProjectConfig\n\n---@class _.lspconfig.settings.vtsls.Typescript.Check\n---Check if npm is installed for [Automatic Type Acquisition](https://code.visualstudio.com/docs/nodejs/working-with-javascript#_typings-and-automatic-type-acquisition).\n---\n---```lua\n---default = true\n---```\n---@field npmIsInstalled? boolean\n\n---@class _.lspconfig.settings.vtsls.Typescript.Format\n---Enable/disable default TypeScript formatter.\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n---Indent case clauses in switch statements. Requires using TypeScript 5.1+ in the workspace.\n---\n---```lua\n---default = true\n---```\n---@field indentSwitchCase? boolean\n---Defines space handling after a comma delimiter.\n---\n---```lua\n---default = true\n---```\n---@field insertSpaceAfterCommaDelimiter? boolean\n---Defines space handling after the constructor keyword.\n---@field insertSpaceAfterConstructor? boolean\n---Defines space handling after function keyword for anonymous functions.\n---\n---```lua\n---default = true\n---```\n---@field insertSpaceAfterFunctionKeywordForAnonymousFunctions? boolean\n---Defines space handling after keywords in a control flow statement.\n---\n---```lua\n---default = true\n---```\n---@field insertSpaceAfterKeywordsInControlFlowStatements? boolean\n---Defines space handling after opening and before closing empty braces.\n---\n---```lua\n---default = true\n---```\n---@field insertSpaceAfterOpeningAndBeforeClosingEmptyBraces? boolean\n---Defines space handling after opening and before closing JSX expression braces.\n---@field insertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces? boolean\n---Defines space handling after opening and before closing non-empty braces.\n---\n---```lua\n---default = true\n---```\n---@field insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces? boolean\n---Defines space handling after opening and before closing non-empty brackets.\n---@field insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets? boolean\n---Defines space handling after opening and before closing non-empty parenthesis.\n---@field insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis? boolean\n---Defines space handling after opening and before closing template string braces.\n---@field insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces? boolean\n---Defines space handling after a semicolon in a for statement.\n---\n---```lua\n---default = true\n---```\n---@field insertSpaceAfterSemicolonInForStatements? boolean\n---Defines space handling after type assertions in TypeScript.\n---@field insertSpaceAfterTypeAssertion? boolean\n---Defines space handling after a binary operator.\n---\n---```lua\n---default = true\n---```\n---@field insertSpaceBeforeAndAfterBinaryOperators? boolean\n---Defines space handling before function argument parentheses.\n---@field insertSpaceBeforeFunctionParenthesis? boolean\n---Defines whether an open brace is put onto a new line for control blocks or not.\n---@field placeOpenBraceOnNewLineForControlBlocks? boolean\n---Defines whether an open brace is put onto a new line for functions or not.\n---@field placeOpenBraceOnNewLineForFunctions? boolean\n---Defines handling of optional semicolons.\n---\n---```lua\n---default = \"ignore\"\n---```\n---@field semicolons? \"ignore\" | \"insert\" | \"remove\"\n\n---@class _.lspconfig.settings.vtsls.Typescript.ImplementationsCodeLens\n---Enable/disable implementations CodeLens. This CodeLens shows the implementers of an interface.\n---@field enabled? boolean\n---Enable/disable showing implementations CodeLens above all class methods instead of only on abstract methods.\n---@field showOnAllClassMethods? boolean\n---Enable/disable implementations CodeLens on interface methods.\n---@field showOnInterfaceMethods? boolean\n\n---@class _.lspconfig.settings.vtsls.Typescript.InlayHints.EnumMemberValues\n---Enable/disable inlay hints for member values in enum declarations:\n---```typescript\n---\n---enum MyValue {\n---\tA /* = 0 */;\n---\tB /* = 1 */;\n---}\n--- \n---```\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.vtsls.Typescript.InlayHints.FunctionLikeReturnTypes\n---Enable/disable inlay hints for implicit return types on function signatures:\n---```typescript\n---\n---function foo() /* :number */ {\n---\treturn Date.now();\n---} \n--- \n---```\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.vtsls.Typescript.InlayHints.ParameterNames\n---Enable/disable inlay hints for parameter names:\n---```typescript\n---\n---parseInt(/* str: */ '123', /* radix: */ 8)\n--- \n---```\n---\n---```lua\n---default = \"none\"\n---```\n---@field enabled? \"none\" | \"literals\" | \"all\"\n---Suppress parameter name hints on arguments whose text is identical to the parameter name.\n---\n---```lua\n---default = true\n---```\n---@field suppressWhenArgumentMatchesName? boolean\n\n---@class _.lspconfig.settings.vtsls.Typescript.InlayHints.ParameterTypes\n---Enable/disable inlay hints for implicit parameter types:\n---```typescript\n---\n---el.addEventListener('click', e /* :MouseEvent */ => ...)\n--- \n---```\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.vtsls.Typescript.InlayHints.PropertyDeclarationTypes\n---Enable/disable inlay hints for implicit types on property declarations:\n---```typescript\n---\n---class Foo {\n---\tprop /* :number */ = Date.now();\n---}\n--- \n---```\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.vtsls.Typescript.InlayHints.VariableTypes\n---Enable/disable inlay hints for implicit variable types:\n---```typescript\n---\n---const foo /* :number */ = Date.now();\n--- \n---```\n---@field enabled? boolean\n---Suppress type hints on variables whose name is identical to the type name.\n---\n---```lua\n---default = true\n---```\n---@field suppressWhenTypeMatchesName? boolean\n\n---@class _.lspconfig.settings.vtsls.Typescript.InlayHints\n---@field enumMemberValues? _.lspconfig.settings.vtsls.Typescript.InlayHints.EnumMemberValues\n---@field functionLikeReturnTypes? _.lspconfig.settings.vtsls.Typescript.InlayHints.FunctionLikeReturnTypes\n---@field parameterNames? _.lspconfig.settings.vtsls.Typescript.InlayHints.ParameterNames\n---@field parameterTypes? _.lspconfig.settings.vtsls.Typescript.InlayHints.ParameterTypes\n---@field propertyDeclarationTypes? _.lspconfig.settings.vtsls.Typescript.InlayHints.PropertyDeclarationTypes\n---@field variableTypes? _.lspconfig.settings.vtsls.Typescript.InlayHints.VariableTypes\n\n---Advanced preferences that control how imports are ordered.\n---@class _.lspconfig.settings.vtsls.Typescript.Preferences.OrganizeImports\n---Requires `organizeImports.unicodeCollation: 'unicode'`. Compare characters with diacritical marks as unequal to base character.\n---@field accentCollation? boolean\n---Requires `organizeImports.unicodeCollation: 'unicode'`, and `organizeImports.caseSensitivity` is not `caseInsensitive`. Indicates whether upper-case will sort before lower-case.\n---\n---```lua\n---default = \"default\"\n---```\n---@field caseFirst? \"default\" | \"upper\" | \"lower\"\n---Specifies how imports should be sorted with regards to case-sensitivity. If `auto` or unspecified, we will detect the case-sensitivity per file\n---\n---```lua\n---default = \"auto\"\n---```\n---@field caseSensitivity? \"auto\" | \"caseInsensitive\" | \"caseSensitive\"\n---Requires `organizeImports.unicodeCollation: 'unicode'`. Overrides the locale used for collation. Specify `auto` to use the UI locale.\n---@field locale? string\n---Requires `organizeImports.unicodeCollation: 'unicode'`. Sort numeric strings by integer value.\n---@field numericCollation? boolean\n---Specify how type-only named imports should be sorted.\n---\n---```lua\n---default = \"auto\"\n---```\n---@field typeOrder? \"auto\" | \"last\" | \"inline\" | \"first\"\n---Specify whether to sort imports using Unicode or Ordinal collation.\n---\n---```lua\n---default = \"ordinal\"\n---```\n---@field unicodeCollation? \"ordinal\" | \"unicode\"\n\n---@class _.lspconfig.settings.vtsls.Typescript.Preferences\n---Specify glob patterns of files to exclude from auto imports. Relative paths are resolved relative to the workspace root. Patterns are evaluated using tsconfig.json [`exclude`](https://www.typescriptlang.org/tsconfig#exclude) semantics.\n---@field autoImportFileExcludePatterns? string[]\n---Specify regular expressions to exclude auto imports with matching import specifiers. Examples:\n---\n---- `^node:`\n---- `lib/internal` (slashes don't need to be escaped...)\n---- `/lib\\/internal/i` (...unless including surrounding slashes for `i` or `u` flags)\n---- `^lodash$` (only allow subpath imports from lodash)\n---@field autoImportSpecifierExcludeRegexes? string[]\n---Preferred path style for auto imports.\n---\n---```lua\n---default = \"shortest\"\n---```\n---@field importModuleSpecifier? \"shortest\" | \"relative\" | \"non-relative\" | \"project-relative\"\n---Preferred path ending for auto imports.\n---\n---```lua\n---default = \"auto\"\n---```\n---@field importModuleSpecifierEnding? \"auto\" | \"minimal\" | \"index\" | \"js\"\n---Enable/disable searching `package.json` dependencies for available auto imports.\n---\n---```lua\n---default = \"auto\"\n---```\n---@field includePackageJsonAutoImports? \"auto\" | \"on\" | \"off\"\n---Preferred style for JSX attribute completions.\n---\n---```lua\n---default = \"auto\"\n---```\n---@field jsxAttributeCompletionStyle? \"auto\" | \"braces\" | \"none\"\n---Advanced preferences that control how imports are ordered.\n---@field organizeImports? _.lspconfig.settings.vtsls.Typescript.Preferences.OrganizeImports\n---Include the `type` keyword in auto-imports whenever possible. Requires using TypeScript 5.3+ in the workspace.\n---@field preferTypeOnlyAutoImports? boolean\n---Preferred quote style to use for Quick Fixes.\n---\n---```lua\n---default = \"auto\"\n---```\n---@field quoteStyle? \"auto\" | \"single\" | \"double\"\n---When on a JSX tag, try to rename the matching tag instead of renaming the symbol. Requires using TypeScript 5.1+ in the workspace.\n---\n---```lua\n---default = true\n---```\n---@field renameMatchingJsxTags? boolean\n---Enable/disable introducing aliases for object shorthand properties during renames.\n---\n---```lua\n---default = true\n---```\n---@field useAliasesForRenames? boolean\n\n---@class _.lspconfig.settings.vtsls.Typescript.ReferencesCodeLens\n---Enable/disable references CodeLens in TypeScript files.\n---@field enabled? boolean\n---Enable/disable references CodeLens on all functions in TypeScript files.\n---@field showOnAllFunctions? boolean\n\n---@class _.lspconfig.settings.vtsls.Typescript.Suggest.ClassMemberSnippets\n---Enable/disable snippet completions for class members.\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.vtsls.Typescript.Suggest.Jsdoc\n---Enable/disable generating `@returns` annotations for JSDoc templates.\n---\n---```lua\n---default = true\n---```\n---@field generateReturns? boolean\n\n---@class _.lspconfig.settings.vtsls.Typescript.Suggest.ObjectLiteralMethodSnippets\n---Enable/disable snippet completions for methods in object literals.\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.vtsls.Typescript.Suggest\n---Enable/disable auto import suggestions.\n---\n---```lua\n---default = true\n---```\n---@field autoImports? boolean\n---@field classMemberSnippets? _.lspconfig.settings.vtsls.Typescript.Suggest.ClassMemberSnippets\n---Complete functions with their parameter signature.\n---@field completeFunctionCalls? boolean\n---Enable/disable suggestion to complete JSDoc comments.\n---\n---```lua\n---default = true\n---```\n---@field completeJSDocs? boolean\n---Enable/disable autocomplete suggestions.\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n---Enable/disable showing completions on potentially undefined values that insert an optional chain call. Requires strict null checks to be enabled.\n---\n---```lua\n---default = true\n---```\n---@field includeAutomaticOptionalChainCompletions? boolean\n---Enable/disable auto-import-style completions on partially-typed import statements.\n---\n---```lua\n---default = true\n---```\n---@field includeCompletionsForImportStatements? boolean\n---@field jsdoc? _.lspconfig.settings.vtsls.Typescript.Suggest.Jsdoc\n---@field objectLiteralMethodSnippets? _.lspconfig.settings.vtsls.Typescript.Suggest.ObjectLiteralMethodSnippets\n---Enable/disable suggestions for paths in import statements and require calls.\n---\n---```lua\n---default = true\n---```\n---@field paths? boolean\n\n---@class _.lspconfig.settings.vtsls.Typescript.SuggestionActions\n---Enable/disable suggestion diagnostics for TypeScript files in the editor.\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.vtsls.Typescript.Tsserver.Experimental\n---Enables project wide error reporting.\n---@field enableProjectDiagnostics? boolean\n\n---@class _.lspconfig.settings.vtsls.Typescript.Tsserver.Web.ProjectWideIntellisense\n---Enable/disable project-wide IntelliSense on web. Requires that VS Code is running in a trusted context.\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n---Suppresses semantic errors on web even when project wide IntelliSense is enabled. This is always on when project wide IntelliSense is not enabled or available. See `#typescript.tsserver.web.projectWideIntellisense.enabled#`\n---@field suppressSemanticErrors? boolean\n\n---@class _.lspconfig.settings.vtsls.Typescript.Tsserver.Web.TypeAcquisition\n---Enable/disable package acquisition on the web. This enables IntelliSense for imported packages. Requires `#typescript.tsserver.web.projectWideIntellisense.enabled#`. Currently not supported for Safari.\n---\n---```lua\n---default = true\n---```\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.vtsls.Typescript.Tsserver.Web\n---@field projectWideIntellisense? _.lspconfig.settings.vtsls.Typescript.Tsserver.Web.ProjectWideIntellisense\n---@field typeAcquisition? _.lspconfig.settings.vtsls.Typescript.Tsserver.Web.TypeAcquisition\n\n---@class _.lspconfig.settings.vtsls.Typescript.Tsserver\n---Enables tracing TS server performance to a directory. These trace files can be used to diagnose TS Server performance issues. The log may contain file paths, source code, and other potentially sensitive information from your project.\n---@field enableTracing? boolean\n---@field experimental? _.lspconfig.settings.vtsls.Typescript.Tsserver.Experimental\n---Enables logging of the TS server to a file. This log can be used to diagnose TS Server issues. The log may contain file paths, source code, and other potentially sensitive information from your project.\n---\n---```lua\n---default = \"off\"\n---```\n---@field log? \"off\" | \"terse\" | \"normal\" | \"verbose\" | \"requestTime\"\n---The maximum amount of memory (in MB) to allocate to the TypeScript server process. To use a memory limit greater than 4 GB, use `#typescript.tsserver.nodePath#` to run TS Server with a custom Node installation.\n---\n---```lua\n---default = 3072\n---```\n---@field maxTsServerMemory? number\n---Run TS Server on a custom Node installation. This can be a path to a Node executable, or 'node' if you want VS Code to detect a Node installation.\n---@field nodePath? string\n---Additional paths to discover TypeScript Language Service plugins.\n---\n---```lua\n---default = {}\n---```\n---@field pluginPaths? string[]\n---Controls if TypeScript launches a dedicated server to more quickly handle syntax related operations, such as computing code folding.\n---\n---```lua\n---default = \"auto\"\n---```\n---@field useSyntaxServer? \"always\" | \"never\" | \"auto\"\n---Configure which watching strategies should be used to keep track of files and directories.\n---\n---```lua\n---default = \"vscode\"\n---```\n---@field watchOptions? any\n---@field web? _.lspconfig.settings.vtsls.Typescript.Tsserver.Web\n\n---@class _.lspconfig.settings.vtsls.Typescript.UpdateImportsOnFileMove\n---Enable/disable automatic updating of import paths when you rename or move a file in VS Code.\n---\n---```lua\n---default = \"prompt\"\n---```\n---@field enabled? \"prompt\" | \"always\" | \"never\"\n\n---@class _.lspconfig.settings.vtsls.Typescript.Validate\n---Enable/disable TypeScript validation.\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n\n---@class _.lspconfig.settings.vtsls.Typescript.WorkspaceSymbols\n---Exclude symbols that come from library files in `Go to Symbol in Workspace` results. Requires using TypeScript 5.3+ in the workspace.\n---\n---```lua\n---default = true\n---```\n---@field excludeLibrarySymbols? boolean\n---Controls which files are searched by [Go to Symbol in Workspace](https://code.visualstudio.com/docs/editor/editingevolved#_open-symbol-by-name).\n---\n---```lua\n---default = \"allOpenProjects\"\n---```\n---@field scope? \"allOpenProjects\" | \"currentProject\"\n\n---@class _.lspconfig.settings.vtsls.Typescript\n---@field check? _.lspconfig.settings.vtsls.Typescript.Check\n---Disables [automatic type acquisition](https://code.visualstudio.com/docs/nodejs/working-with-javascript#_typings-and-automatic-type-acquisition). Automatic type acquisition fetches `@types` packages from npm to improve IntelliSense for external libraries.\n---@field disableAutomaticTypeAcquisition? boolean\n---@field format? _.lspconfig.settings.vtsls.Typescript.Format\n---@field implementationsCodeLens? _.lspconfig.settings.vtsls.Typescript.ImplementationsCodeLens\n---@field inlayHints? _.lspconfig.settings.vtsls.Typescript.InlayHints\n---Sets the locale used to report JavaScript and TypeScript errors. Defaults to use VS Code's locale.\n---\n---```lua\n---default = \"auto\"\n---```\n---@field locale? \"auto\" | \"de\" | \"es\" | \"en\" | \"fr\" | \"it\" | \"ja\" | \"ko\" | \"ru\" | \"zh-CN\" | \"zh-TW\"\n---Specifies the path to the npm executable used for [Automatic Type Acquisition](https://code.visualstudio.com/docs/nodejs/working-with-javascript#_typings-and-automatic-type-acquisition).\n---@field npm? string\n---Makes `Go to Definition` avoid type declaration files when possible by triggering `Go to Source Definition` instead. This allows `Go to Source Definition` to be triggered with the mouse gesture.\n---@field preferGoToSourceDefinition? boolean\n---@field preferences? _.lspconfig.settings.vtsls.Typescript.Preferences\n---@field referencesCodeLens? _.lspconfig.settings.vtsls.Typescript.ReferencesCodeLens\n---Report style checks as warnings.\n---\n---```lua\n---default = true\n---```\n---@field reportStyleChecksAsWarnings? boolean\n---@field suggest? _.lspconfig.settings.vtsls.Typescript.Suggest\n---@field suggestionActions? _.lspconfig.settings.vtsls.Typescript.SuggestionActions\n---Specifies the folder path to the tsserver and `lib*.d.ts` files under a TypeScript install to use for IntelliSense, for example: `./node_modules/typescript/lib`.\n---\n---- When specified as a user setting, the TypeScript version from `typescript.tsdk` automatically replaces the built-in TypeScript version.\n---- When specified as a workspace setting, `typescript.tsdk` allows you to switch to use that workspace version of TypeScript for IntelliSense with the `TypeScript: Select TypeScript version` command.\n---\n---See the [TypeScript documentation](https://code.visualstudio.com/docs/typescript/typescript-compiling#_using-newer-typescript-versions) for more detail about managing TypeScript versions.\n---@field tsdk? string\n---@field tsserver? _.lspconfig.settings.vtsls.Typescript.Tsserver\n---@field updateImportsOnFileMove? _.lspconfig.settings.vtsls.Typescript.UpdateImportsOnFileMove\n---@field validate? _.lspconfig.settings.vtsls.Typescript.Validate\n---@field workspaceSymbols? _.lspconfig.settings.vtsls.Typescript.WorkspaceSymbols\n\n---@class _.lspconfig.settings.vtsls.Vtsls.Experimental.Completion\n---Execute fuzzy match of completion items on server side. Enable this will help filter out useless completion items from tsserver.\n---@field enableServerSideFuzzyMatch? boolean\n---Maximum number of completion entries to return. Recommend to also toggle `enableServerSideFuzzyMatch` to preserve items with higher accuracy.\n---@field entriesLimit? number\n\n---@class _.lspconfig.settings.vtsls.Vtsls.Experimental\n---@field completion? _.lspconfig.settings.vtsls.Vtsls.Experimental.Completion\n---Maximum length of single inlay hint. Note that hint is simply truncated if the limit is exceeded. Do not set this if your client already handles overly long hints gracefully.\n---@field maxInlayHintLength? number\n\n---@class _.lspconfig.settings.vtsls.Vtsls.Javascript.Format\n---@field baseIndentSize? number\n---@field convertTabsToSpaces? boolean\n---@field indentSize? number\n---0: None 1: Block 2: Smart\n---@field indentStyle? number\n---@field newLineCharacter? string\n---@field tabSize? number\n---@field trimTrailingWhitespace? boolean\n\n---@class _.lspconfig.settings.vtsls.Vtsls.Javascript\n---@field format? _.lspconfig.settings.vtsls.Vtsls.Javascript.Format\n\n---@class _.lspconfig.settings.vtsls.Vtsls.Tsserver\n---TypeScript plugins that are not locally avaiable in the workspace. Usually the plugin configuration can be found in the `contributes.typescriptServerPlugins` field of `package.json` of the corresponding VSCode extension.\n---\n---```lua\n---default = {}\n---```\n---@field globalPlugins? table[]\n\n---@class _.lspconfig.settings.vtsls.Vtsls.Typescript.Format\n---@field baseIndentSize? number\n---@field convertTabsToSpaces? boolean\n---@field indentSize? number\n---0: None 1: Block 2: Smart\n---@field indentStyle? number\n---@field newLineCharacter? string\n---@field tabSize? number\n---@field trimTrailingWhitespace? boolean\n\n---@class _.lspconfig.settings.vtsls.Vtsls.Typescript\n---@field format? _.lspconfig.settings.vtsls.Vtsls.Typescript.Format\n---@field globalTsdk? string\n\n---@class _.lspconfig.settings.vtsls.Vtsls\n---Automatically use workspace version of TypeScript lib on startup. By default, the bundled version is used for intelliSense.\n---@field autoUseWorkspaceTsdk? boolean\n---Enable 'Move to file' code action. This action enables user to move code to existing file, but requires corresponding handling on the client side.\n---@field enableMoveToFileCodeAction? boolean\n---@field experimental? _.lspconfig.settings.vtsls.Vtsls.Experimental\n---@field javascript? _.lspconfig.settings.vtsls.Vtsls.Javascript\n---@field tsserver? _.lspconfig.settings.vtsls.Vtsls.Tsserver\n---@field typescript? _.lspconfig.settings.vtsls.Vtsls.Typescript\n\n---@class lspconfig.settings.vtsls\n---@field javascript? _.lspconfig.settings.vtsls.Javascript\n---@field [\"js/ts\"]? _.lspconfig.settings.vtsls.JsTs\n---@field typescript? _.lspconfig.settings.vtsls.Typescript\n---@field vtsls? _.lspconfig.settings.vtsls.Vtsls\n"
  },
  {
    "path": "lua/lspconfig/types/lsp/vue_ls.lua",
    "content": "---@meta\n\n---Where Vetur source Scaffold Snippets from and how to indicate them. Set a source to \"\" to disable it.\n---\n---- workspace: `<WORKSPACE>/.vscode/vetur/snippets`.\n---- user: `<USER-DATA-DIR>/User/snippets/vetur`.\n---- vetur: Bundled in Vetur.\n---\n---The default is:\n---```\n---\"vetur.completion.scaffoldSnippetSources\": {\n---  \"workspace\": \"💼\",\n---  \"user\": \"🗒️\",\n---  \"vetur\": \"✌\"\n---}\n---```\n---\n---Alternatively, you can do:\n---\n---```\n---\"vetur.completion.scaffoldSnippetSources\": {\n---  \"workspace\": \"(W)\",\n---  \"user\": \"(U)\",\n---  \"vetur\": \"(V)\"\n---}\n---```\n---\n---Read more: https://vuejs.github.io/vetur/snippet.html.\n---\n---```lua\n---default = {\n---  user = \"🗒️\",\n---  vetur = \"✌\",\n---  workspace = \"💼\"\n---}\n---```\n---@class _.lspconfig.settings.vue_ls.Vetur.Completion.ScaffoldSnippetSources\n---Show Scaffold Snippets from `<USER-DATA-DIR>/User/snippets/vetur`.\n---\n---```lua\n---default = \"🗒️\"\n---```\n---@field user? string\n---Show Scaffold Snippets bundled in Vetur.\n---\n---```lua\n---default = \"✌\"\n---```\n---@field vetur? string\n---Show Scaffold Snippets from `<WORKSPACE>/.vscode/vetur/snippets`.\n---\n---```lua\n---default = \"💼\"\n---```\n---@field workspace? string\n\n---@class _.lspconfig.settings.vue_ls.Vetur.Completion\n---Include completion for module export and auto import them\n---\n---```lua\n---default = true\n---```\n---@field autoImport? boolean\n---Where Vetur source Scaffold Snippets from and how to indicate them. Set a source to \"\" to disable it.\n---\n---- workspace: `<WORKSPACE>/.vscode/vetur/snippets`.\n---- user: `<USER-DATA-DIR>/User/snippets/vetur`.\n---- vetur: Bundled in Vetur.\n---\n---The default is:\n---```\n---\"vetur.completion.scaffoldSnippetSources\": {\n---  \"workspace\": \"💼\",\n---  \"user\": \"🗒️\",\n---  \"vetur\": \"✌\"\n---}\n---```\n---\n---Alternatively, you can do:\n---\n---```\n---\"vetur.completion.scaffoldSnippetSources\": {\n---  \"workspace\": \"(W)\",\n---  \"user\": \"(U)\",\n---  \"vetur\": \"(V)\"\n---}\n---```\n---\n---Read more: https://vuejs.github.io/vetur/snippet.html.\n---\n---```lua\n---default = {\n---  user = \"🗒️\",\n---  vetur = \"✌\",\n---  workspace = \"💼\"\n---}\n---```\n---@field scaffoldSnippetSources? _.lspconfig.settings.vue_ls.Vetur.Completion.ScaffoldSnippetSources\n---Casing conversion for tag completion\n---\n---```lua\n---default = \"kebab\"\n---```\n---@field tagCasing? \"initial\" | \"kebab\"\n\n---@class _.lspconfig.settings.vue_ls.Vetur.Dev\n---Log level for VLS\n---\n---```lua\n---default = \"INFO\"\n---```\n---@field logLevel? \"INFO\" | \"DEBUG\"\n---Path to vls for Vetur developers. There are two ways of using it. \n---\n---1. Clone vuejs/vetur from GitHub, build it and point it to the ABSOLUTE path of `/server`.\n---2. `yarn global add vls` and point Vetur to the installed location (`yarn global dir` + node_modules/vls)\n---@field vlsPath? string\n---The port that VLS listens to. Can be used for attaching to the VLS Node process for debugging / profiling.\n---\n---```lua\n---default = -1\n---```\n---@field vlsPort? number\n\n---@class _.lspconfig.settings.vue_ls.Vetur.Experimental\n---Enable template interpolation service that offers hover / definition / references in Vue interpolations.\n---@field templateInterpolationService? boolean\n\n---@class _.lspconfig.settings.vue_ls.Vetur.Format.DefaultFormatter\n---Default formatter for <style> region\n---\n---```lua\n---default = \"prettier\"\n---```\n---@field css? \"none\" | \"prettier\"\n---Default formatter for <template> region\n---\n---```lua\n---default = \"prettier\"\n---```\n---@field html? \"none\" | \"prettyhtml\" | \"js-beautify-html\" | \"prettier\"\n---Default formatter for <script> region\n---\n---```lua\n---default = \"prettier\"\n---```\n---@field js? \"none\" | \"prettier\" | \"prettier-eslint\" | \"vscode-typescript\"\n---Default formatter for <style lang='less'> region\n---\n---```lua\n---default = \"prettier\"\n---```\n---@field less? \"none\" | \"prettier\"\n---Default formatter for <style lang='postcss'> region\n---\n---```lua\n---default = \"prettier\"\n---```\n---@field postcss? \"none\" | \"prettier\"\n---Default formatter for <template lang='pug'> region\n---\n---```lua\n---default = \"prettier\"\n---```\n---@field pug? \"none\" | \"prettier\"\n---Default formatter for <style lang='sass'> region\n---\n---```lua\n---default = \"sass-formatter\"\n---```\n---@field sass? \"none\" | \"sass-formatter\"\n---Default formatter for <style lang='scss'> region\n---\n---```lua\n---default = \"prettier\"\n---```\n---@field scss? \"none\" | \"prettier\"\n---Default formatter for <style lang='stylus'> region\n---\n---```lua\n---default = \"stylus-supremacy\"\n---```\n---@field stylus? \"none\" | \"stylus-supremacy\"\n---Default formatter for <script> region\n---\n---```lua\n---default = \"prettier\"\n---```\n---@field ts? \"none\" | \"prettier\" | \"prettier-tslint\" | \"vscode-typescript\"\n\n---Global prettier config used by prettier formatter. Used by `prettier` and `prettier-eslint`.\n---\n---Vetur will prefer a prettier config file at home directory if one exists.\n---@class _.lspconfig.settings.vue_ls.Vetur.Format.DefaultFormatterOptions.Prettier\n\n---Options for prettyhtml\n---@class _.lspconfig.settings.vue_ls.Vetur.Format.DefaultFormatterOptions.Prettyhtml\n---Maximum amount of characters allowed per line\n---\n---```lua\n---default = 100\n---```\n---@field printWidth? number\n---Whether to use single quotes by default\n---@field singleQuote? boolean\n---Whether to sort attributes\n---@field sortAttributes? boolean\n---Whether to wrap attributes\n---@field wrapAttributes? boolean\n\n---Options for all default formatters\n---\n---```lua\n---default = {\n---  [\"js-beautify-html\"] = {\n---    wrap_attributes = \"force-expand-multiline\"\n---  },\n---  prettyhtml = {\n---    printWidth = 100,\n---    singleQuote = false,\n---    sortAttributes = false,\n---    wrapAttributes = false\n---  }\n---}\n---```\n---@class _.lspconfig.settings.vue_ls.Vetur.Format.DefaultFormatterOptions\n---Options for js-beautify\n---@field [\"js-beautify-html\"]? table\n---Global prettier config used by prettier formatter. Used by `prettier` and `prettier-eslint`.\n---\n---Vetur will prefer a prettier config file at home directory if one exists.\n---@field prettier? _.lspconfig.settings.vue_ls.Vetur.Format.DefaultFormatterOptions.Prettier\n---Options for prettyhtml\n---@field prettyhtml? _.lspconfig.settings.vue_ls.Vetur.Format.DefaultFormatterOptions.Prettyhtml\n\n---@class _.lspconfig.settings.vue_ls.Vetur.Format.Options\n---Number of spaces per indentation level. Inherited by all formatters.\n---\n---```lua\n---default = 2\n---```\n---@field tabSize? number\n---Use tabs for indentation. Inherited by all formatters.\n---@field useTabs? boolean\n\n---@class _.lspconfig.settings.vue_ls.Vetur.Format\n---@field defaultFormatter? _.lspconfig.settings.vue_ls.Vetur.Format.DefaultFormatter\n---Options for all default formatters\n---\n---```lua\n---default = {\n---  [\"js-beautify-html\"] = {\n---    wrap_attributes = \"force-expand-multiline\"\n---  },\n---  prettyhtml = {\n---    printWidth = 100,\n---    singleQuote = false,\n---    sortAttributes = false,\n---    wrapAttributes = false\n---  }\n---}\n---```\n---@field defaultFormatterOptions? _.lspconfig.settings.vue_ls.Vetur.Format.DefaultFormatterOptions\n---Enable/disable the Vetur document formatter.\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n---@field options? _.lspconfig.settings.vue_ls.Vetur.Format.Options\n---Whether to have initial indent for <script> region\n---@field scriptInitialIndent? boolean\n---Whether to have initial indent for <style> region\n---@field styleInitialIndent? boolean\n\n---@class _.lspconfig.settings.vue_ls.Vetur.Grammar\n---Mapping from custom block tag name to language name. Used for generating grammar to support syntax highlighting for custom blocks.\n---\n---```lua\n---default = {\n---  docs = \"md\",\n---  i18n = \"json\"\n---}\n---```\n---@field customBlocks? table\n\n---@class _.lspconfig.settings.vue_ls.Vetur.LanguageFeatures\n---Whether to enable codeActions\n---\n---```lua\n---default = true\n---```\n---@field codeActions? boolean\n---Whether to enable semantic highlighting. Currently only works for typescript\n---\n---```lua\n---default = true\n---```\n---@field semanticTokens? boolean\n---Whether to automatic updating import path when rename or move a file\n---\n---```lua\n---default = true\n---```\n---@field updateImportOnFileMove? boolean\n\n---@class _.lspconfig.settings.vue_ls.Vetur.Trace\n---Traces the communication between VS Code and Vue Language Server.\n---\n---```lua\n---default = \"off\"\n---```\n---@field server? \"off\" | \"messages\" | \"verbose\"\n\n---@class _.lspconfig.settings.vue_ls.Vetur.Underline\n---Enable underline `.value` when using composition API.\n---\n---```lua\n---default = true\n---```\n---@field refValue? boolean\n\n---@class _.lspconfig.settings.vue_ls.Vetur.Validation\n---Validate interpolations in <template> region using TypeScript language service\n---\n---```lua\n---default = true\n---```\n---@field interpolation? boolean\n---Validate js/ts in <script>\n---\n---```lua\n---default = true\n---```\n---@field script? boolean\n---Validate css/scss/less/postcss in <style>\n---\n---```lua\n---default = true\n---```\n---@field style? boolean\n---Validate vue-html in <template> using eslint-plugin-vue\n---\n---```lua\n---default = true\n---```\n---@field template? boolean\n---Validate props usage in <template> region. Show error/warning for not passing declared props to child components and show error for passing wrongly typed interpolation expressions\n---@field templateProps? boolean\n\n---@class _.lspconfig.settings.vue_ls.Vetur\n---@field completion? _.lspconfig.settings.vue_ls.Vetur.Completion\n---@field dev? _.lspconfig.settings.vue_ls.Vetur.Dev\n---@field experimental? _.lspconfig.settings.vue_ls.Vetur.Experimental\n---@field format? _.lspconfig.settings.vue_ls.Vetur.Format\n---@field grammar? _.lspconfig.settings.vue_ls.Vetur.Grammar\n---Vetur will warn about not setup correctly for the project. You can disable it.\n---@field ignoreProjectWarning? boolean\n---@field languageFeatures? _.lspconfig.settings.vue_ls.Vetur.LanguageFeatures\n---@field trace? _.lspconfig.settings.vue_ls.Vetur.Trace\n---@field underline? _.lspconfig.settings.vue_ls.Vetur.Underline\n---Use dependencies from workspace. Support for TypeScript, Prettier, @starptech/prettyhtml, prettier-eslint, prettier-tslint, stylus-supremacy, @prettier/plugin-pug.\n---@field useWorkspaceDependencies? boolean\n---@field validation? _.lspconfig.settings.vue_ls.Vetur.Validation\n\n---@class lspconfig.settings.vue_ls\n---@field vetur? _.lspconfig.settings.vue_ls.Vetur\n"
  },
  {
    "path": "lua/lspconfig/types/lsp/yamlls.lua",
    "content": "---@meta\n\n---@class _.lspconfig.settings.yamlls.Redhat.Telemetry\n---Enable usage data and errors to be sent to Red Hat servers. Read our [privacy statement](https://developers.redhat.com/article/tool-data-collection).\n---@field enabled? boolean\n\n---@class _.lspconfig.settings.yamlls.Redhat\n---@field telemetry? _.lspconfig.settings.yamlls.Redhat.Telemetry\n\n---@class _.lspconfig.settings.yamlls.Yaml.Format\n---Print spaces between brackets in objects\n---\n---```lua\n---default = true\n---```\n---@field bracketSpacing? boolean\n---Enable/disable default YAML formatter\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n---Specify the line length that the printer will wrap on\n---\n---```lua\n---default = 80\n---```\n---@field printWidth? integer\n---Always: wrap prose if it exeeds the print width, Never: never wrap the prose, Preserve: wrap prose as-is\n---\n---```lua\n---default = \"preserve\"\n---```\n---@field proseWrap? \"preserve\" | \"never\" | \"always\"\n---Use single quotes instead of double quotes\n---@field singleQuote? boolean\n\n---@class _.lspconfig.settings.yamlls.Yaml.SchemaStore\n---Automatically pull available YAML schemas from JSON Schema Store\n---\n---```lua\n---default = true\n---```\n---@field enable? boolean\n---URL of schema store catalog to use\n---\n---```lua\n---default = \"https://www.schemastore.org/api/json/catalog.json\"\n---```\n---@field url? string\n\n---@class _.lspconfig.settings.yamlls.Yaml.Trace\n---Traces the communication between VSCode and the YAML language service.\n---\n---```lua\n---default = \"off\"\n---```\n---@field server? \"off\" | \"messages\" | \"verbose\"\n\n---@class _.lspconfig.settings.yamlls.Yaml\n---Enable/disable completion feature\n---\n---```lua\n---default = true\n---```\n---@field completion? boolean\n---Custom tags for the parser to use\n---\n---```lua\n---default = {}\n---```\n---@field customTags? any[]\n---Globally set additionalProperties to false for all objects. So if its true, no extra properties are allowed inside yaml.\n---@field disableAdditionalProperties? boolean\n---@field format? _.lspconfig.settings.yamlls.Yaml.Format\n---Enable/disable hover feature\n---\n---```lua\n---default = true\n---```\n---@field hover? boolean\n---The maximum number of outline symbols and folding regions computed (limited for performance reasons).\n---\n---```lua\n---default = 5000\n---```\n---@field maxItemsComputed? integer\n---@field schemaStore? _.lspconfig.settings.yamlls.Yaml.SchemaStore\n---Associate schemas to YAML files in the current workspace\n---\n---```lua\n---default = {}\n---```\n---@field schemas? table\n---@field trace? _.lspconfig.settings.yamlls.Yaml.Trace\n---Enable/disable validation feature\n---\n---```lua\n---default = true\n---```\n---@field validate? boolean\n\n---@class lspconfig.settings.yamlls\n---@field redhat? _.lspconfig.settings.yamlls.Redhat\n---@field yaml? _.lspconfig.settings.yamlls.Yaml\n"
  },
  {
    "path": "lua/lspconfig/types/lsp/zls.lua",
    "content": "---@meta\n\n---@class _.lspconfig.settings.zls.Zls.Trace\n---Traces the communication between VS Code and the language server.\n---\n---```lua\n---default = \"off\"\n---```\n---@field server? \"off\" | \"messages\" | \"verbose\"\n\n---@class _.lspconfig.settings.zls.Zls\n---Path to the `build_runner.zig` file provided by zls. null is equivalent to `${executable_directory}/build_runner.zig`\n---@field build_runner_path? string\n---Path to 'builtin;' useful for debugging, automatically set if let null\n---@field builtin_path? string\n---Whether to automatically check for new updates\n---\n---```lua\n---default = true\n---```\n---@field check_for_update? boolean\n---Enable debug logging in release builds of zls.\n---@field debugLog? boolean\n---Whether to enable ast-check diagnostics\n---\n---```lua\n---default = true\n---```\n---@field enable_ast_check_diagnostics? boolean\n---Whether to automatically fix errors on save. Currently supports adding and removing discards.\n---@field enable_autofix? boolean\n---Whether to enable import/embedFile argument completions\n---@field enable_import_embedfile_argument_completions? boolean\n---Enables inlay hint support when the client also supports it\n---@field enable_inlay_hints? boolean\n---Enables semantic token support when the client also supports it\n---\n---```lua\n---default = true\n---```\n---@field enable_semantic_tokens? boolean\n---Enables snippet completions when the client also supports them\n---@field enable_snippets? boolean\n---Path to a directroy that will be used as zig's cache. null is equivalent to `${KnownFloders.Cache}/zls`\n---@field global_cache_path? string\n---Whether to highlight global var declarations\n---@field highlight_global_var_declarations? boolean\n---Whether the @ sign should be part of the completion of builtins\n---@field include_at_in_builtins? boolean\n---Don't show inlay hints for single argument calls\n---\n---```lua\n---default = true\n---```\n---@field inlay_hints_exclude_single_argument? boolean\n---Hides inlay hints when parameter name matches the identifier (e.g. foo: foo)\n---@field inlay_hints_hide_redundant_param_names? boolean\n---Hides inlay hints when parameter name matches the last token of a parameter node (e.g. foo: bar.foo, foo: &foo)\n---@field inlay_hints_hide_redundant_param_names_last_token? boolean\n---Enable inlay hints for builtin functions\n---\n---```lua\n---default = true\n---```\n---@field inlay_hints_show_builtin? boolean\n---The detail field of completions is truncated to be no longer than this (in bytes)\n---\n---```lua\n---default = 1048576\n---```\n---@field max_detail_length? integer\n---Enables `*` and `?` operators in completion lists\n---\n---```lua\n---default = true\n---```\n---@field operator_completions? boolean\n---Path to `zls` executable. Example: `C:/zls/zig-cache/bin/zls.exe`.\n---@field path? string\n---When true, skips searching for references in std. Improves lookup speed for functions in user's code. Renaming and go-to-definition will continue to work as is\n---@field skip_std_references? boolean\n---@field trace? _.lspconfig.settings.zls.Zls.Trace\n---Whether to use the comptime interpreter\n---@field use_comptime_interpreter? boolean\n---Enables warnings for style guideline mismatches\n---@field warn_style? boolean\n---Zig executable path, e.g. `/path/to/zig/zig`, used to run the custom build runner. If `null`, zig is looked up in `PATH`. Will be used to infer the zig standard library path if none is provided\n---@field zig_exe_path? string\n---Zig library path, e.g. `/path/to/zig/lib/zig`, used to analyze std library imports\n---@field zig_lib_path? string\n\n---@class lspconfig.settings.zls\n---@field zls? _.lspconfig.settings.zls.Zls\n"
  },
  {
    "path": "lua/lspconfig/ui/windows.lua",
    "content": "local win_float = {}\n\nwin_float.default_options = {}\n\nfunction win_float.default_opts()\n  return {}\nend\n\nfunction win_float.percentage_range_window() end\n\nreturn win_float\n"
  },
  {
    "path": "lua/lspconfig/util.lua",
    "content": "local validate = vim.validate\nlocal api = vim.api\nlocal lsp = vim.lsp\nlocal nvim_eleven = vim.fn.has 'nvim-0.11' == 1\n\nlocal iswin = vim.uv.os_uname().version:match 'Windows'\n\nlocal M = { path = {} }\n\nM.default_config = {\n  log_level = lsp.protocol.MessageType.Warning,\n  message_level = lsp.protocol.MessageType.Warning,\n  settings = vim.empty_dict(),\n  init_options = vim.empty_dict(),\n  handlers = {},\n  autostart = true,\n  capabilities = lsp.protocol.make_client_capabilities(),\n}\n\n-- global on_setup hook\nM.on_setup = nil\n\nlocal function escape_wildcards(path)\n  return path:gsub('([%[%]%?%*])', '\\\\%1')\nend\n\n--- Returns a function which matches a filepath against the given glob/wildcard patterns.\n---\n--- Also works with zipfile:/tarfile: buffers (via `strip_archive_subpath`).\nfunction M.root_pattern(...)\n  local patterns = M.tbl_flatten { ... }\n  return function(startpath)\n    startpath = M.strip_archive_subpath(startpath)\n    for _, pattern in ipairs(patterns) do\n      local match = M.search_ancestors(startpath, function(path)\n        for _, p in ipairs(vim.fn.glob(table.concat({ escape_wildcards(path), pattern }, '/'), true, true)) do\n          if vim.uv.fs_stat(p) then\n            return path\n          end\n        end\n      end)\n\n      if match ~= nil then\n        local real = vim.uv.fs_realpath(match)\n        return real or match -- fallback to original if realpath fails\n      end\n    end\n  end\nend\n\n--- Appends `new_names` to `root_files` if `field` is found in any such file in any ancestor of `fname`.\n---\n--- NOTE: this does a \"breadth-first\" search, so is broken for multi-project workspaces:\n--- https://github.com/neovim/nvim-lspconfig/issues/3818#issuecomment-2848836794\n---\n--- @param root_files string[] List of root-marker files to append to.\n--- @param new_names string[] Potential root-marker filenames (e.g. `{ 'package.json', 'package.json5' }`) to inspect for the given `field`.\n--- @param field string Field to search for in the given `new_names` files.\n--- @param fname string Full path of the current buffer name to start searching upwards from.\nfunction M.root_markers_with_field(root_files, new_names, field, fname)\n  local path = vim.fn.fnamemodify(fname, ':h')\n  local found = vim.fs.find(new_names, { path = path, upward = true, type = 'file' })\n\n  for _, f in ipairs(found or {}) do\n    -- Match the given `field`.\n    local file = assert(io.open(f, 'r'))\n    for line in file:lines() do\n      if line:find(field) then\n        root_files[#root_files + 1] = vim.fs.basename(f)\n        break\n      end\n    end\n    file:close()\n  end\n\n  return root_files\nend\n\nfunction M.insert_package_json(root_files, field, fname)\n  return M.root_markers_with_field(root_files, { 'package.json', 'package.json5' }, field, fname)\nend\n\n-- For zipfile: or tarfile: virtual paths, returns the path to the archive.\n-- Other paths are returned unaltered.\nfunction M.strip_archive_subpath(path)\n  -- Matches regex from zip.vim / tar.vim\n  path = vim.fn.substitute(path, 'zipfile://\\\\(.\\\\{-}\\\\)::[^\\\\\\\\].*$', '\\\\1', '')\n  path = vim.fn.substitute(path, 'tarfile:\\\\(.\\\\{-}\\\\)::.*$', '\\\\1', '')\n  return path\nend\n\nfunction M.get_typescript_server_path(root_dir)\n  local project_roots = vim.fs.find('node_modules', { path = root_dir, upward = true, limit = math.huge })\n  for _, project_root in ipairs(project_roots) do\n    local typescript_path = project_root .. '/typescript'\n    local stat = vim.loop.fs_stat(typescript_path)\n    if stat and stat.type == 'directory' then\n      return typescript_path .. '/lib'\n    end\n  end\n  return ''\nend\n\n---\n---\n---\n--- Deprecated: Remove these functions when we drop support for legacy configs:\n---\n---\n---\n\n--- Deprecated in Nvim 0.11\nfunction M.search_ancestors(startpath, func)\n  if nvim_eleven then\n    validate('func', func, 'function')\n  end\n  if func(startpath) then\n    return startpath\n  end\n  local guard = 100\n  for path in vim.fs.parents(startpath) do\n    -- Prevent infinite recursion if our algorithm breaks\n    guard = guard - 1\n    if guard == 0 then\n      return\n    end\n\n    if func(path) then\n      return path\n    end\n  end\nend\n\n--- Deprecated in Nvim 0.11\nlocal function is_fs_root(path)\n  if iswin then\n    return path:match '^%a:$'\n  else\n    return path == '/'\n  end\nend\n\n--- Deprecated in Nvim 0.11\nlocal function traverse_parents(path, cb)\n  path = vim.uv.fs_realpath(path)\n  local dir = path\n  -- Just in case our algo is buggy, don't infinite loop.\n  for _ = 1, 100 do\n    dir = vim.fs.dirname(dir)\n    if not dir then\n      return\n    end\n    -- If we can't ascend further, then stop looking.\n    if cb(dir, path) then\n      return dir, path\n    end\n    if is_fs_root(dir) then\n      break\n    end\n  end\nend\n\n--- Deprecated in Nvim 0.11\nfunction M.path.is_descendant(root, path)\n  if not path then\n    return false\n  end\n\n  local function cb(dir, _)\n    return dir == root\n  end\n\n  local dir, _ = traverse_parents(path, cb)\n\n  return dir == root\nend\n\nfunction M.tbl_flatten(t)\n  --- @diagnostic disable-next-line:deprecated\n  return nvim_eleven and vim.iter(t):flatten(math.huge):totable() or vim.tbl_flatten(t)\nend\n\n--- @deprecated\nfunction M.get_config_by_ft(filetype)\n  local configs = require 'lspconfig.configs'\n  local matching_configs = {}\n  for _, config in pairs(configs) do\n    local filetypes = config.filetypes or {}\n    for _, ft in pairs(filetypes) do\n      if ft == filetype then\n        table.insert(matching_configs, config)\n      end\n    end\n  end\n  return matching_configs\nend\n\n--- @deprecated use `vim.lsp.config` in Nvim 0.11+ instead.\nfunction M.available_servers()\n  local servers = {}\n  local configs = require 'lspconfig.configs'\n  for server, config in pairs(configs) do\n    if config.manager ~= nil then\n      table.insert(servers, server)\n    end\n  end\n  return servers\nend\n\n--- @deprecated use `vim.fn.isdirectory(path) == 1` instead\n--- @param filename string\n--- @return boolean\nfunction M.path.is_dir(filename)\n  return vim.fn.isdirectory(filename) == 1\nend\n\n--- @deprecated use `(vim.uv.fs_stat(path) or {}).type == 'file'` instead\n--- @param path string\n--- @return boolean\nfunction M.path.is_file(path)\n  return (vim.uv.fs_stat(path) or {}).type == 'file'\nend\n\n--- @deprecated use `vim.fs.dirname` instead\nM.path.dirname = vim.fs.dirname\n\n--- @deprecated use `vim.fs.normalize` instead\nM.path.sanitize = vim.fs.normalize\n\n--- @deprecated use `vim.uv.fs_stat` instead\n--- @param filename string\n--- @return string|false\nfunction M.path.exists(filename)\n  local stat = vim.uv.fs_stat(filename)\n  return stat and stat.type or false\nend\n\n--- @deprecated use `table.concat({\"path1\", \"path2\"})` or regular string concatenation instead\nfunction M.path.join(...)\n  return table.concat({ ... }, '/')\nend\n\n--- @deprecated use `vim.fn.has('win32') == 1 and ';' or ':'` instead\nM.path.path_separator = vim.fn.has('win32') == 1 and ';' or ':'\n\n--- @deprecated use `vim.fs.parents(path)` instead\nM.path.iterate_parents = vim.fs.parents\n\n--- @deprecated use `vim.fs.dirname(vim.fs.find('.hg', { path = startpath, upward = true })[1])` instead\nfunction M.find_mercurial_ancestor(startpath)\n  return vim.fs.dirname(vim.fs.find('.hg', { path = startpath, upward = true })[1])\nend\n\n--- @deprecated use `vim.fs.dirname(vim.fs.find('node_modules', { path = startpath, upward = true })[1])` instead\nfunction M.find_node_modules_ancestor(startpath)\n  return vim.fs.dirname(vim.fs.find('node_modules', { path = startpath, upward = true })[1])\nend\n\n--- @deprecated use `vim.fs.dirname(vim.fs.find('package.json', { path = startpath, upward = true })[1])` instead\nfunction M.find_package_json_ancestor(startpath)\n  return vim.fs.dirname(vim.fs.find('package.json', { path = startpath, upward = true })[1])\nend\n\n--- @deprecated use `vim.fs.dirname(vim.fs.find('.git', { path = startpath, upward = true })[1])` instead\nfunction M.find_git_ancestor(startpath)\n  return vim.fs.dirname(vim.fs.find('.git', { path = startpath, upward = true })[1])\nend\n\n--- @deprecated Will be removed. Do not use.\nfunction M.get_active_clients_list_by_ft(filetype)\n  local clients = vim.lsp.get_clients()\n  local clients_list = {}\n  for _, client in pairs(clients) do\n    --- @diagnostic disable-next-line:undefined-field\n    local filetypes = client.config.filetypes or {}\n    for _, ft in pairs(filetypes) do\n      if ft == filetype then\n        table.insert(clients_list, client.name)\n      end\n    end\n  end\n  return clients_list\nend\n\n--- @deprecated Will be removed. Do not use.\nfunction M.get_other_matching_providers(filetype)\n  local configs = require 'lspconfig.configs'\n  local active_clients_list = M.get_active_clients_list_by_ft(filetype)\n  local other_matching_configs = {}\n  for _, config in pairs(configs) do\n    if not vim.tbl_contains(active_clients_list, config.name) then\n      local filetypes = config.filetypes or {}\n      for _, ft in pairs(filetypes) do\n        if ft == filetype then\n          table.insert(other_matching_configs, config)\n        end\n      end\n    end\n  end\n  return other_matching_configs\nend\n\n--- @deprecated Use vim.lsp.get_clients instead.\nfunction M.get_lsp_clients(filter)\n  --- @diagnostic disable-next-line:deprecated\n  return nvim_eleven and lsp.get_clients(filter) or lsp.get_active_clients(filter)\nend\n\n--- @deprecated Will be removed. Do not use.\nfunction M.add_hook_before(func, new_fn)\n  if func then\n    return function(...)\n      -- TODO which result?\n      new_fn(...)\n      return func(...)\n    end\n  else\n    return new_fn\n  end\nend\n\n--- @deprecated Will be removed. Do not use.\nfunction M.add_hook_after(func, new_fn)\n  if func then\n    return function(...)\n      -- TODO which result?\n      func(...)\n      return new_fn(...)\n    end\n  else\n    return new_fn\n  end\nend\n\n--- @deprecated Will be removed. Do not use.\nfunction M.get_active_client_by_name(bufnr, servername)\n  return vim.lsp.get_clients({ bufnr = bufnr, name = servername })[1]\nend\n\n-- Maps lspconfig-style command options to nvim_create_user_command (i.e. |command-attributes|) option names.\nlocal opts_aliases = {\n  ['description'] = 'desc',\n}\n\n--- @deprecated Will be removed. Do not use.\n---@param command_definition table<string | integer, any>\nfunction M._parse_user_command_options(command_definition)\n  ---@type table<string, string | boolean | number>\n  local opts = {}\n  for k, v in pairs(command_definition) do\n    if type(k) == 'string' then\n      local attribute = k.gsub(k, '^%-+', '')\n      opts[opts_aliases[attribute] or attribute] = v\n    elseif type(k) == 'number' and type(v) == 'string' and v:match '^%-' then\n      -- Splits strings like \"-nargs=* -complete=customlist,v:lua.something\" into { \"-nargs=*\", \"-complete=customlist,v:lua.something\" }\n      for _, command_attribute in ipairs(vim.split(v, '%s')) do\n        -- Splits attribute into a key-value pair, like \"-nargs=*\" to { \"-nargs\", \"*\" }\n        local attribute, value = unpack(vim.split(command_attribute, '=', { plain = true }))\n        attribute = attribute.gsub(attribute, '^%-+', '')\n        opts[opts_aliases[attribute] or attribute] = value or true\n      end\n    end\n  end\n  return opts\nend\n\n--- @deprecated Will be removed. Do not use.\nfunction M.create_module_commands(module_name, commands)\n  for command_name, def in pairs(commands) do\n    if type(def) ~= 'function' then\n      local opts = M._parse_user_command_options(def)\n      api.nvim_create_user_command(command_name, function(info)\n        require('lspconfig')[module_name].commands[command_name][1](unpack(info.fargs))\n      end, opts)\n    end\n  end\nend\n\n--- Note: In Nvim 0.11+ this currently has no public interface, the healthcheck uses the private\n--- `vim.lsp._enabled_configs`:\n--- https://github.com/neovim/neovim/blob/28e819018520a2300eaeeec6794ffcd614b25dd2/runtime/lua/vim/lsp/health.lua#L186\n--- @deprecated Will be removed. Do not use.\nfunction M.get_managed_clients()\n  local configs = require 'lspconfig.configs'\n  local clients = {}\n  for _, config in pairs(configs) do\n    if config.manager then\n      vim.list_extend(clients, config.manager:clients())\n    end\n  end\n  return clients\nend\n\n--- @deprecated Will be removed. Do not use.\nfunction M.bufname_valid(bufname)\n  if bufname:match '^/' or bufname:match '^[a-zA-Z]:' or bufname:match '^zipfile://' or bufname:match '^tarfile:' then\n    return true\n  end\n  return false\nend\n\n--- @deprecated Will be removed. Do not use.\nfunction M.validate_bufnr(bufnr)\n  if nvim_eleven then\n    validate('bufnr', bufnr, 'number')\n  end\n  return bufnr == 0 and api.nvim_get_current_buf() or bufnr\nend\n\nreturn M\n"
  },
  {
    "path": "lua/lspconfig.lua",
    "content": "local configs = require 'lspconfig.configs'\n\nlocal M = {\n  util = require 'lspconfig.util',\n}\n\n--- Deprecated config names.\n---\n---@class Alias\n---@field to string The new name of the server\n---@field version string The version that the alias will be removed in\n---@field inconfig? boolean should display in healthcheck (`:checkhealth lspconfig`)\nlocal aliases = {\n  ['fennel-ls'] = {\n    to = 'fennel_ls',\n    version = '0.2.1',\n  },\n  ruby_ls = {\n    to = 'ruby_lsp',\n    version = '0.2.1',\n  },\n  ruff_lsp = {\n    to = 'ruff',\n    version = '0.2.1',\n  },\n  ['starlark-rust'] = {\n    to = 'starlark_rust',\n    version = '0.2.1',\n  },\n  sumneko_lua = {\n    to = 'lua_ls',\n    version = '0.2.1',\n  },\n  tsserver = {\n    to = 'ts_ls',\n    version = '0.2.1',\n  },\n  bufls = {\n    to = 'buf_ls',\n    version = '0.2.1',\n  },\n  typst_lsp = {\n    to = 'tinymist',\n    version = '0.2.1',\n  },\n}\n\n---@return Alias\n---@param name string|nil get this alias, or nil to get all aliases that were used in the current session.\nM.server_aliases = function(name)\n  if name then\n    return aliases[name]\n  end\n  local used_aliases = {}\n  for sname, alias in pairs(aliases) do\n    if alias.inconfig then\n      used_aliases[sname] = alias\n    end\n  end\n  return used_aliases\nend\n\n-- Temporary port of Nvim 0.10 vim.version:tostring.\n---@param version vim.Version\nlocal function version_string(version)\n  assert(version.major and version.minor and version.patch, 'invalid vim.Version table')\n  local ret = table.concat({ version.major, version.minor, version.patch }, '.')\n  if version.prerelease then\n    ret = ret .. '-' .. version.prerelease\n  end\n  if version.build and version.build ~= vim.NIL then\n    ret = ret .. '+' .. version.build\n  end\n  return ret\nend\n\nlocal mt = {}\nfunction mt:__index(k)\n  if configs[k] == nil then\n    if vim.fn.has('nvim-0.11') == 1 then\n      vim.deprecate(\n        'The `require(\\'lspconfig\\')` \"framework\"',\n        'vim.lsp.config (see :help lspconfig-nvim-0.11)',\n        'v3.0.0',\n        'nvim-lspconfig',\n        true\n      )\n    end\n\n    local alias = M.server_aliases(k)\n    if alias then\n      vim.deprecate(k, alias.to, alias.version, 'nvim-lspconfig', false)\n      alias.inconfig = true\n      k = alias.to\n    end\n\n    local success, config = pcall(require, 'lspconfig.configs.' .. k)\n    if success then\n      configs[k] = config\n    else\n      vim.notify(\n        string.format(\n          '[lspconfig] config \"%s\" not found. Ensure it is listed in `configs.md` or added as a custom server.',\n          k\n        ),\n        vim.log.levels.WARN\n      )\n      -- Return a dummy function for compatibility with user configs\n      return { setup = function() end }\n    end\n  end\n  return configs[k]\nend\n\nlocal minimum_neovim_version = '0.10'\nif vim.fn.has('nvim-' .. minimum_neovim_version) == 0 then\n  local msg = string.format(\n    'nvim-lspconfig requires Nvim version %s, but you are running: %s',\n    minimum_neovim_version,\n    vim.version and version_string(vim.version()) or 'older than v0.5.0'\n  )\n  error(msg)\nend\n\nreturn setmetatable(M, mt)\n"
  },
  {
    "path": "neovim.yml",
    "content": "---\nbase: lua51\n\nglobals:\n  vim:\n    any: true\n  assert:\n    args:\n      - type: bool\n      - type: string\n        required: false\n  after_each:\n    args:\n      - type: function\n  before_each:\n    args:\n      - type: function\n  describe:\n    args:\n      - type: string\n      - type: function\n  it:\n    args:\n      - type: string\n      - type: function\n"
  },
  {
    "path": "nvim-lspconfig-scm-1.rockspec",
    "content": "local _MODREV, _SPECREV = 'scm', '-1'\n\nrockspec_format = \"3.0\"\npackage = 'nvim-lspconfig'\nversion = _MODREV .. _SPECREV\n\ndescription = {\n  summary = \"A collection of common configurations for Neovim's built-in language server client.\",\n  detailed = [[\n    This plugin allows for declaratively configuring, launching, and initializing language servers you have installed on your system.\n    Language server configurations are community-maintained.\n  ]],\n  homepage = 'https://github.com/neovim/nvim-lspconfig',\n  license = 'Apache/2.0',\n  labels = { 'neovim', 'lsp' }\n}\n\ndependencies = {\n  'lua == 5.1',\n}\n\nsource = {\n  url = 'git://github.com/neovim/nvim-lspconfig',\n}\n\nbuild = {\n  type = 'builtin',\n  copy_directories = {\n    'doc'\n  }\n}\n"
  },
  {
    "path": "plugin/lspconfig.lua",
    "content": "if vim.g.lspconfig ~= nil then\n  return\nend\nvim.g.lspconfig = 1\n\nif vim.fn.exists(':lsp') == 2 then\n  return\nend\n\nif vim.fn.has('nvim-0.11') == 0 then\n  vim.deprecate('nvim-lspconfig support for Nvim 0.10 or older', 'Nvim 0.11+', 'v3.0.0', 'nvim-lspconfig', false)\nend\n\nlocal api, lsp = vim.api, vim.lsp\nlocal util = require('lspconfig.util')\n\nlocal completion_sort = function(items)\n  table.sort(items)\n  return items\nend\n\nlocal lsp_complete_configured_servers = function(arg)\n  return completion_sort(vim.tbl_filter(function(s)\n    return s:sub(1, #arg) == arg\n  end, util.available_servers()))\nend\n\nlocal lsp_get_active_clients = function(arg)\n  local clients = vim.tbl_map(function(client)\n    return ('%s'):format(client.name)\n  end, util.get_managed_clients())\n\n  return completion_sort(vim.tbl_filter(function(s)\n    return s:sub(1, #arg) == arg\n  end, clients))\nend\n\n---@return vim.lsp.Client[] clients\nlocal get_clients_from_cmd_args = function(arg)\n  local result = {}\n  local managed_clients = util.get_managed_clients()\n  local clients = {}\n  for _, client in pairs(managed_clients) do\n    clients[client.name] = client\n  end\n\n  local err_msg = ''\n  arg = arg:gsub('[%a-_]+', function(name)\n    if clients[name] then\n      return clients[name].id\n    end\n    err_msg = err_msg .. ('config \"%s\" not found\\n'):format(name)\n    return ''\n  end)\n  for id in (arg or ''):gmatch '(%d+)' do\n    local client = lsp.get_client_by_id(assert(tonumber(id)))\n    if client == nil then\n      err_msg = err_msg .. ('client id \"%s\" not found\\n'):format(id)\n    end\n    result[#result + 1] = client\n  end\n\n  if err_msg ~= '' then\n    vim.notify(('nvim-lspconfig:\\n%s'):format(err_msg:sub(1, -2)), vim.log.levels.WARN)\n    return result\n  end\n\n  if #result == 0 then\n    return managed_clients\n  end\n  return result\nend\n\n-- Called from plugin/lspconfig.vim because it requires knowing that the last\n-- script in scriptnames to be executed is lspconfig.\napi.nvim_create_user_command('LspInfo', ':checkhealth vim.lsp', { desc = 'Alias to `:checkhealth vim.lsp`' })\n\napi.nvim_create_user_command('LspLog', function()\n  vim.cmd(string.format('tabnew %s', lsp.log.get_filename()))\nend, {\n  desc = 'Opens the Nvim LSP client log.',\n})\n\nif vim.fn.has('nvim-0.11.2') == 1 then\n  local complete_client = function(arg)\n    return vim\n      .iter(vim.lsp.get_clients())\n      :map(function(client)\n        return client.name\n      end)\n      :filter(function(name)\n        return name:sub(1, #arg) == arg\n      end)\n      :totable()\n  end\n\n  local complete_config = function(arg)\n    return vim\n      .iter(vim.api.nvim_get_runtime_file(('lsp/%s*.lua'):format(arg), true))\n      :map(function(path)\n        local file_name = path:match('[^/]*.lua$')\n        return file_name:sub(0, #file_name - 4)\n      end)\n      :totable()\n  end\n\n  api.nvim_create_user_command('LspStart', function(info)\n    local servers = info.fargs\n\n    -- Default to enabling all servers matching the filetype of the current buffer.\n    -- This assumes that they've been explicitly configured through `vim.lsp.config`,\n    -- otherwise they won't be present in the private `vim.lsp.config._configs` table.\n    if #servers == 0 then\n      local filetype = vim.bo.filetype\n      for name, _ in pairs(vim.lsp.config._configs) do\n        local filetypes = vim.lsp.config[name].filetypes\n        if filetypes and vim.tbl_contains(filetypes, filetype) then\n          table.insert(servers, name)\n        end\n      end\n    end\n\n    vim.lsp.enable(servers)\n  end, {\n    desc = 'Enable and launch a language server',\n    nargs = '?',\n    complete = complete_config,\n  })\n\n  api.nvim_create_user_command('LspRestart', function(info)\n    local client_names = info.fargs\n\n    -- Default to restarting all active servers\n    if #client_names == 0 then\n      client_names = vim\n        .iter(vim.lsp.get_clients())\n        :map(function(client)\n          return client.name\n        end)\n        :totable()\n    end\n\n    for name in vim.iter(client_names) do\n      if vim.lsp.config[name] == nil then\n        vim.notify((\"Invalid server name '%s'\"):format(name))\n      else\n        vim.lsp.enable(name, false)\n        if info.bang then\n          vim.iter(vim.lsp.get_clients({ name = name })):each(function(client)\n            client:stop(true)\n          end)\n        end\n      end\n    end\n\n    local timer = assert(vim.uv.new_timer())\n    timer:start(500, 0, function()\n      for name in vim.iter(client_names) do\n        vim.schedule_wrap(vim.lsp.enable)(name)\n      end\n    end)\n  end, {\n    desc = 'Restart the given client',\n    nargs = '?',\n    bang = true,\n    complete = complete_client,\n  })\n\n  api.nvim_create_user_command('LspStop', function(info)\n    local client_names = info.fargs\n\n    -- Default to disabling all servers on current buffer\n    if #client_names == 0 then\n      client_names = vim\n        .iter(vim.lsp.get_clients())\n        :map(function(client)\n          return client.name\n        end)\n        :totable()\n    end\n\n    for name in vim.iter(client_names) do\n      if vim.lsp.config[name] == nil then\n        vim.notify((\"Invalid server name '%s'\"):format(name))\n      else\n        vim.lsp.enable(name, false)\n        if info.bang then\n          vim.iter(vim.lsp.get_clients({ name = name })):each(function(client)\n            client:stop(true)\n          end)\n        end\n      end\n    end\n  end, {\n    desc = 'Disable and stop the given client',\n    nargs = '?',\n    bang = true,\n    complete = complete_client,\n  })\n\n  return\nend\n\napi.nvim_create_user_command('LspStart', function(info)\n  local server_name = string.len(info.args) > 0 and info.args or nil\n  if server_name then\n    local config = require('lspconfig.configs')[server_name]\n    if config then\n      config.launch()\n      return\n    end\n  end\n\n  local matching_configs = util.get_config_by_ft(vim.bo.filetype)\n  for _, config in ipairs(matching_configs) do\n    config.launch()\n  end\nend, {\n  desc = 'Manually launches a language server',\n  nargs = '?',\n  complete = lsp_complete_configured_servers,\n})\n\napi.nvim_create_user_command('LspRestart', function(info)\n  local detach_clients = {}\n  for _, client in ipairs(get_clients_from_cmd_args(info.args)) do\n    -- Can remove diagnostic disabling when changing to client:stop() in nvim 0.11+\n    --- @diagnostic disable: missing-parameter\n    client.stop()\n    if vim.tbl_count(client.attached_buffers) > 0 then\n      detach_clients[client.name] = { client, lsp.get_buffers_by_client_id(client.id) }\n    end\n  end\n  local timer = assert(vim.uv.new_timer())\n  timer:start(\n    500,\n    100,\n    vim.schedule_wrap(function()\n      for client_name, tuple in pairs(detach_clients) do\n        if require('lspconfig.configs')[client_name] then\n          local client, attached_buffers = unpack(tuple)\n          if client.is_stopped() then\n            for _, buf in pairs(attached_buffers) do\n              require('lspconfig.configs')[client_name].launch(buf)\n            end\n            detach_clients[client_name] = nil\n          end\n        end\n      end\n\n      if next(detach_clients) == nil and not timer:is_closing() then\n        timer:close()\n      end\n    end)\n  )\nend, {\n  desc = 'Manually restart the given language client(s)',\n  nargs = '?',\n  complete = lsp_get_active_clients,\n})\n\napi.nvim_create_user_command('LspStop', function(info)\n  ---@type string\n  local args = info.args\n  local force = false\n  args = args:gsub('%+%+force', function()\n    force = true\n    return ''\n  end)\n\n  local clients = {}\n\n  -- default to stopping all servers on current buffer\n  if #args == 0 then\n    clients = vim.lsp.get_clients({ bufnr = vim.api.nvim_get_current_buf() })\n  else\n    clients = get_clients_from_cmd_args(args)\n  end\n\n  for _, client in ipairs(clients) do\n    -- Can remove diagnostic disabling when changing to client:stop(force) in nvim 0.11+\n    --- @diagnostic disable: param-type-mismatch\n    client.stop(force)\n  end\nend, {\n  desc = 'Manually stops the given language client(s)',\n  nargs = '?',\n  complete = lsp_get_active_clients,\n})\n"
  },
  {
    "path": "scripts/docgen.lua",
    "content": "#!/usr/bin/env -S nvim -l\n\n-- Usage:\n--\n--    HOME=./ nvim --clean -R -Es -V1 +'set rtp+=$PWD' +'luafile scripts/docgen.lua'\n\nlocal root = vim.trim(vim.system({ 'git', 'rev-parse', '--show-toplevel' }):wait().stdout)\nvim.opt.rtp:append(root)\n\nlocal util = require 'lspconfig.util'\n\nlocal function template(s, params)\n  return (s:gsub('{{([^{}]+)}}', params))\nend\n\nlocal function map_list(t, func)\n  local res = {}\n  for i, v in ipairs(t) do\n    local x = func(v, i)\n    if x ~= nil then\n      table.insert(res, x)\n    end\n  end\n  return res\nend\n\nlocal function map_sorted(t, func)\n  local res = {}\n  for k, v in vim.spairs(t) do\n    local x = func(k, v)\n    if x ~= nil then\n      table.insert(res, x)\n    end\n  end\n  return res\nend\n\nlocal function indent(n, s)\n  local prefix = string.rep(' ', n)\n  return s:gsub('([^\\n]+)', prefix .. '%1')\nend\n\nlocal function make_parts(fns)\n  return util.tbl_flatten(map_list(fns, function(v)\n    if type(v) == 'function' then\n      v = v()\n    end\n    return { v }\n  end))\nend\n\n--- @return string\nlocal function make_section(indentlvl, sep, parts)\n  local flat = make_parts(parts)\n  if not flat or #flat == 0 then\n    return ''\n  end\n  return indent(indentlvl, table.concat(flat, sep))\nend\n\nlocal function readfile(path)\n  assert((vim.uv.fs_stat(path) or {}).type == 'file')\n  return io.open(path):read '*a'\nend\n\nlocal section_template_txt = [[\n------------------------------------------------------------------------------\n{{config_name}}\n\n{{preamble}}\n\nSnippet to enable the language server: >lua\n  vim.lsp.enable('{{config_name}}')\n\n{{commands}}\nDefault config:\n{{default_values}}\n]]\n\nlocal section_template_md = [[\n## {{config_name}}\n\n{{preamble}}\n\nSnippet to enable the language server:\n```lua\nvim.lsp.enable('{{config_name}}')\n```\n{{commands}}\nDefault config:\n{{default_values}}\n\n---\n]]\n\n--- Converts markdown \"```\" codeblock to vimdoc format.\n---\n--- @return string\nlocal function codeblock_to_vimdoc(doc)\n  local function make_fn(before, extra)\n    return function(lang, code)\n      if not code then\n        code = lang\n        lang = ''\n      end\n      -- Indent code by 2 spaces.\n      return before .. '>' .. lang .. extra .. code:gsub('[^\\n]+', '  %0')\n    end\n  end\n\n  doc = doc\n    -- \"```lang\" following a nonblank line.\n    :gsub('[^%s]\\n```(%w+)\\n(.-)\\n```', make_fn(' ', '\\n'))\n    -- \"```lang\" following a blank line.\n    :gsub('\\n```(%w+)\\n(.-)\\n```', make_fn('', '\\n'))\n    -- \"```\" (no language)\n    :gsub('\\n```\\n(..-)\\n```', make_fn('', '\\n'))\n\n  return doc\nend\n\n--- Gets docstring by looking for \"@brief\" in a Lua code docstring.\n---\n--- @return string\nlocal function extract_brief(text, is_markdown)\n  local doc = text:match('%-%-+ *%@brief.-(\\n%-%-.*)')\n  if not doc then\n    return ''\n  end\n  -- Remove all lines following the last comment (\"-- …\").\n  doc = doc:match('(.-)\\n[^-]+')\n  -- Remove \"--\" prefix from all lines.\n  doc = doc:gsub('\\n%-%-+', '\\n')\n  -- Remove leading whitespace (shared indent).\n  doc = vim.trim(vim.text.indent(0, doc))\n\n  -- Convert codeblocks for vimdoc.\n  if not is_markdown then\n    doc = codeblock_to_vimdoc(doc)\n  end\n\n  return doc\nend\n\nlocal function make_lsp_section(config_sections, config_name, config_file, is_markdown)\n  local t = is_markdown and section_template_md or section_template_txt\n  local params = {\n    config_name = config_name,\n    preamble = '',\n    commands = '',\n    default_values = '',\n  }\n\n  local ok, config = pcall(require, 'lsp.' .. config_name)\n  -- If the config throws an error (e.g. \"renamed to …\"), just show the error message.\n  if not ok then\n    params.preamble = config\n    table.insert(config_sections, template(t, params))\n    return\n  end\n\n  params.preamble = extract_brief(readfile(config_file), is_markdown)\n\n  -- TODO: get commands by parsing `nvim_buf_create_user_command` calls.\n  params.commands = make_section(0, '\\n', {\n    function()\n      if not config.commands or #vim.tbl_keys(config.commands) == 0 then\n        return\n      end\n      return ('\\nCommands:\\n%s\\n'):format(make_section(0, '\\n', {\n        map_sorted(config.commands, function(name, _)\n          return string.format('- %s', name)\n        end),\n      }))\n    end,\n  })\n\n  params.default_values = make_section(0, '\\n', {\n    function()\n      return make_section(0, '\\n', {\n        map_sorted(config, function(k, v)\n          if type(v) == 'boolean' then\n            return ('- `%s` : `%s`'):format(k, v)\n          elseif type(v) ~= 'function' and k ~= 'root_dir' then\n            if is_markdown then\n              return ('- `%s` :\\n  ```lua\\n%s\\n  ```'):format(k, indent(2, vim.inspect(v)))\n            else\n              return ('- %s: >lua\\n%s'):format(k, indent(2, vim.inspect(v)))\n            end\n          end\n\n          local file = assert(io.open(config_file, 'r'))\n          local linenr = 0\n          -- Find the `return` line, where the config starts.\n          for line in file:lines() do\n            linenr = linenr + 1\n            if line:find('^return') then\n              break\n            end\n          end\n          io.close(file)\n          local config_relpath = vim.fs.relpath(root, config_file)\n\n          -- XXX: \"../\" because the path is outside of the doc/ dir.\n          if is_markdown then\n            return ('- `%s`: [../%s:%d](../%s#L%d)'):format(k, config_relpath, linenr, config_relpath, linenr)\n          else\n            return ('- %s (use \"gF\" to view): ../%s:%d'):format(k, config_relpath, linenr)\n          end\n        end),\n      })\n    end,\n  }) .. (is_markdown and '' or '\\n<') -- Workaround tree-sitter-vimdoc bug.\n\n  table.insert(config_sections, template(t, params))\nend\n\nlocal function make_lsp_sections(is_markdown)\n  local lsp_files = vim.fs.find(function(f)\n    return f:match('.*%.lua$')\n  end, { type = 'file', path = vim.fs.joinpath(root, 'lsp'), limit = math.huge })\n  local config_sections = {}\n\n  for _, config_file in ipairs(lsp_files) do\n    -- \"lua/xx.lua\"\n    local config_name = config_file:match('lsp/(.-)%.lua$')\n    if config_name then\n      -- HACK: Avoid variable data (username, pid) in the generated document.\n      -- local old_home = vim.env.HOME\n      -- local old_cache_home = vim.env.XDG_CACHE_HOME\n      -- vim.env.HOME = '/home/user'\n      -- vim.env.XDG_CACHE_HOME = '/home/user/.cache'\n      local old_fn = vim.fn\n      vim.fn = setmetatable({}, {\n        __index = function(_t, key)\n          if key == 'getpid' then\n            return function()\n              return 12345\n            end\n          end\n          return old_fn[key]\n        end,\n      })\n\n      make_lsp_section(config_sections, config_name, config_file, is_markdown)\n\n      -- Reset.\n      -- vim.env.HOME = old_home\n      -- vim.env.XDG_CACHE_HOME = old_cache_home\n      vim.fn = old_fn\n    end\n  end\n\n  return make_section(0, '\\n', config_sections)\nend\n\n--- Gets the list of config names and returns \"table of contents\" as markdown.\nlocal function make_toc()\n  local lsp_files = vim.fs.find(function(f)\n    return f:match('.*%.lua$')\n  end, { type = 'file', path = vim.fs.joinpath(root, 'lsp'), limit = math.huge })\n  local server_list = {}\n\n  for _, file_path in ipairs(lsp_files) do\n    local config_name = file_path:match('lsp/(.-)%.lua$')\n    if config_name then\n      table.insert(server_list, template('- [{{server}}](#{{server}})', { server = config_name }))\n    end\n  end\n\n  return make_section(0, '\\n', server_list)\nend\n\nlocal function generate_readme(template_file, params, output_file)\n  local input_template = readfile(template_file)\n  local readme_data = template(input_template, params)\n\n  local writer = assert(io.open(output_file, 'w'))\n  writer:write(readme_data)\n  writer:close()\nend\n\ngenerate_readme(vim.fs.joinpath(root, 'scripts/docs_template.md'), {\n  toc = make_toc(),\n  lsp_server_details = make_lsp_sections(true),\n}, vim.fs.joinpath(root, 'doc/configs.md'))\n\ngenerate_readme(vim.fs.joinpath(root, 'scripts/docs_template.txt'), {\n  toc = make_toc(),\n  lsp_server_details = make_lsp_sections(false),\n}, vim.fs.joinpath(root, 'doc/configs.txt'))\n"
  },
  {
    "path": "scripts/docs_template.md",
    "content": "# LSP configs\n\nLSP configurations provided by nvim-lspconfig are listed below. This\ndocumentation is autogenerated from the Lua files. You can view this file in\nNvim by running `:help lspconfig-all`.\n\n{{toc}}\n\n{{lsp_server_details}}\n"
  },
  {
    "path": "scripts/docs_template.txt",
    "content": "*lspconfig-all*                     All configurations provided by |lspconfig|\n\nLSP configurations provided by nvim-lspconfig are listed below.\n\n                                      Type |gO| to see the table of contents.\n\n==============================================================================\nLSP configs\n\n{{lsp_server_details}}\n\n==============================================================================\n\n vim:tw=78:ft=help:norl:expandtab:sw=4\n"
  },
  {
    "path": "scripts/gen_annotations.lua",
    "content": "---Merge maps recursively and replace non-map values.\n---@param ... any Values to merge in order.\n---@return any\nlocal function merge(...)\n  ---Return whether a value can be merged as a map.\n  ---@param value any Candidate value.\n  ---@return boolean\n  local function is_mergeable(value)\n    return type(value) == 'table' and (vim.tbl_isempty(value) or not vim.islist(value))\n  end\n\n  local values = { ... }\n  local merged = values[1]\n  for i = 2, #values, 1 do\n    local next_value = values[i]\n    if is_mergeable(merged) and is_mergeable(next_value) then\n      for key, item in pairs(next_value) do\n        merged[key] = merge(merged[key], item)\n      end\n    else\n      merged = next_value\n    end\n  end\n  return merged\nend\n\n---@class Settings\n---@field _settings table\n---@field file string\nlocal Settings = {}\nSettings.__index = Settings\n\n---Create a settings store from dotted keys.\n---@param settings? table Initial dotted-key values.\n---@return Settings\nfunction Settings.new(settings)\n  local self = setmetatable({ _settings = {} }, Settings)\n  for key, value in pairs(settings or {}) do\n    self:set(key, value)\n  end\n  return self\nend\n\n---Expand dotted keys in a table into nested tables.\n---@param value any Source value.\n---@return any\nfunction Settings.expand_keys(value)\n  if type(value) ~= 'table' then\n    return value\n  end\n  local expanded = Settings.new()\n  for key, item in pairs(value) do\n    expanded:set(key, item)\n  end\n  return expanded:get()\nend\n\n---Split a dotted key into path segments.\n---@param key any Dotted key or raw key value.\n---@return any[]\nfunction Settings.split_key(key)\n  if not key or key == '' then\n    return {}\n  end\n  if type(key) ~= 'string' then\n    return { key }\n  end\n  local parts = {}\n  for part in string.gmatch(key, '[^.]+') do\n    table.insert(parts, part)\n  end\n  return parts\nend\n\n---Store a value at a dotted key path.\n---@param key any Target dotted key.\n---@param value any Value to store.\nfunction Settings:set(key, value)\n  local parts = Settings.split_key(key)\n\n  if #parts == 0 then\n    self._settings = value\n    return\n  end\n\n  local node = self._settings\n  for i = 1, #parts - 1, 1 do\n    local part = parts[i]\n    if type(node[part]) ~= 'table' then\n      node[part] = {}\n    end\n    node = node[part]\n  end\n  node[parts[#parts]] = value\nend\n\n---Read a value from the settings store.\n---@param key? any Dotted key to read.\n---@param opts? {defaults?:table, expand?:boolean} Read options.\n---@return any\nfunction Settings:get(key, opts)\n  ---@type table|nil\n  local node = self._settings\n\n  for _, part in ipairs(Settings.split_key(key)) do\n    if type(node) ~= 'table' then\n      node = nil\n      break\n    end\n    node = node[part]\n  end\n\n  if opts and opts.expand and type(node) == 'table' then\n    node = Settings.expand_keys(node)\n  end\n\n  if opts and opts.defaults then\n    if node == nil then\n      return vim.deepcopy(opts.defaults)\n    end\n    if type(node) ~= 'table' then\n      return node\n    end\n    node = merge({}, opts.defaults, node)\n  end\n\n  return node\nend\n\n---Format schema text as Lua comments.\n---@param desc? string Comment body.\n---@param prefix? string Optional line prefix.\n---@return string?\nlocal function format_comment(desc, prefix)\n  if desc then\n    prefix = (prefix or '') .. '---'\n    return prefix .. desc:gsub('\\n', '\\n' .. prefix)\n  end\nend\n\n---Append a property's description comment.\n---@param lines string[] Output buffer.\n---@param prop table Schema property.\n---@param prefix? string Optional line prefix.\nlocal function append_description(lines, prop, prefix)\n  local description = prop.markdownDescription or prop.description\n  if type(description) == 'table' and description.message then\n    description = description.message\n  end\n  if prop.default then\n    if prop.default == vim.NIL then\n      prop.default = nil\n    end\n    if type(prop.default) == 'table' and vim.tbl_isempty(prop.default) then\n      prop.default = {}\n    end\n    description = (description and (description .. '\\n\\n') or '')\n      .. '```lua\\ndefault = '\n      .. vim.inspect(prop.default)\n      .. '\\n```'\n  end\n  if description then\n    table.insert(lines, format_comment(description, prefix))\n  end\nend\n\n---Wrap nested schema nodes as object properties.\n---@param node table Schema node tree.\n---@return table\nlocal function normalize_properties(node)\n  return node.leaf and node\n    or {\n      type = 'object',\n      properties = vim.tbl_map(function(child)\n        return normalize_properties(child)\n      end, node),\n    }\nend\n\n---Normalize one schema path segment into a valid LuaLS class name segment.\n---@param segment string\n---@return string\nlocal function segment_name_for_annotation(segment)\n  local words = {}\n  for word in string.gmatch(segment, '[%w]+') do\n    if word:match('^%d') then\n      word = '_' .. word\n    end\n    table.insert(words, word:sub(1, 1):upper() .. word:sub(2))\n  end\n  return #words > 0 and table.concat(words) or '_'\nend\n\n---Build the Lua class name for a schema node.\n---@param path string[] Path segments from the schema root.\n---@param root_class string Root class name.\n---@return string\nlocal function class_name_for(path, root_class)\n  if #path == 0 then\n    return root_class\n  end\n  local class_name = { '_', root_class }\n  for _, segment in ipairs(path) do\n    table.insert(class_name, segment_name_for_annotation(segment))\n  end\n  return table.concat(class_name, '.')\nend\n\n---@type table<string, true>\nlocal lua_keywords = {\n  ['and'] = true,\n  ['break'] = true,\n  ['do'] = true,\n  ['else'] = true,\n  ['elseif'] = true,\n  ['end'] = true,\n  ['false'] = true,\n  ['for'] = true,\n  ['function'] = true,\n  ['goto'] = true,\n  ['if'] = true,\n  ['in'] = true,\n  ['local'] = true,\n  ['nil'] = true,\n  ['not'] = true,\n  ['or'] = true,\n  ['package'] = true,\n  ['repeat'] = true,\n  ['return'] = true,\n  ['then'] = true,\n  ['true'] = true,\n  ['until'] = true,\n  ['while'] = true,\n}\n\n---Format a schema field name for use in a LuaLS `---@field` annotation.\n---@param field string\n---@return string\nlocal function field_name_for_annotation(field)\n  if field:match('^[A-Za-z_][A-Za-z0-9_]*$') and not lua_keywords[field] then\n    return field\n  end\n  return '[' .. vim.inspect(field) .. ']'\nend\n\n---Convert a schema property into a Lua type.\n---@param prop table Schema property.\n---@return string\nlocal function lua_type_for(prop)\n  if prop.enum then\n    return table.concat(\n      vim.tbl_map(function(e)\n        return vim.inspect(e)\n      end, prop.enum),\n      ' | '\n    )\n  end\n  local types = type(prop.type) == 'table' and prop.type or { prop.type }\n  if vim.tbl_isempty(types) and type(prop.anyOf) == 'table' then\n    return table.concat(\n      vim.tbl_map(function(p)\n        return lua_type_for(p)\n      end, prop.anyOf),\n      '|'\n    )\n  end\n  types = vim.tbl_map(function(t)\n    if t == 'null' then\n      return\n    end\n    if t == 'array' then\n      if prop.items and prop.items.type then\n        if type(prop.items.type) == 'table' then\n          return 'any[]'\n        end\n        return (prop.items.type == 'object' and 'table' or prop.items.type) .. '[]'\n      end\n      return 'any[]'\n    end\n    if t == 'object' then\n      return 'table'\n    end\n    return t\n  end, types)\n  if vim.tbl_isempty(types) then\n    types = { 'any' }\n  end\n  return table.concat(vim.iter(types):flatten():totable(), '|')\nend\n\n---Return whether a field is required by its parent schema.\n---@param parent table\n---@param field string\n---@param child table\n---@return boolean\nlocal function is_required_field(parent, field, child)\n  if child.required == true then\n    return true\n  end\n\n  local required = parent.required\n  if type(required) ~= 'table' then\n    return false\n  end\n\n  for _, required_field in ipairs(required) do\n    if required_field == field then\n      return true\n    end\n  end\n\n  return false\nend\n\n---Append annotations for an object node and its children.\n---@param lines string[] Output buffer.\n---@param path string[] Path segments from the schema root.\n---@param prop table Object property schema.\n---@param root_class string Root class name.\nlocal function append_object(lines, path, prop, root_class)\n  local object_lines = {}\n  append_description(object_lines, prop)\n  table.insert(object_lines, '---@class ' .. class_name_for(path, root_class))\n  if prop.properties then\n    local props = vim.tbl_keys(prop.properties)\n    table.sort(props)\n    for _, field in ipairs(props) do\n      local child = prop.properties[field]\n      local optional_marker = is_required_field(prop, field, child) and '' or '?'\n      local field_name = field_name_for_annotation(field)\n      append_description(object_lines, child)\n\n      if child.type == 'object' and child.properties then\n        local child_path = vim.deepcopy(path)\n        table.insert(child_path, field)\n        table.insert(\n          object_lines,\n          '---@field ' .. field_name .. optional_marker .. ' ' .. class_name_for(child_path, root_class)\n        )\n        append_object(lines, child_path, child, root_class)\n      else\n        table.insert(object_lines, '---@field ' .. field_name .. optional_marker .. ' ' .. lua_type_for(child))\n      end\n    end\n  end\n  table.insert(lines, '')\n  vim.list_extend(lines, object_lines)\nend\n\n---Generate annotation lines for one schema file.\n---@param file string Schema file path.\n---@return string[]\nlocal function generate_file_annotations(file)\n  local name = vim.fn.fnamemodify(file, ':t:r')\n  local json = vim.json.decode(vim.fn.readblob(file), { luanil = { array = true, object = true } }) or {}\n  local class_name = 'lspconfig.settings.' .. name\n  local lines = { '---@meta' }\n\n  local schema = Settings.new()\n  for key, prop in pairs(json.properties) do\n    prop.leaf = true\n    schema:set(key, prop)\n  end\n\n  append_object(lines, {}, normalize_properties(schema:get()), class_name)\n  return vim.tbl_filter(function(v)\n    return v ~= nil\n  end, lines)\nend\n\n---Generate Lua annotation files from the schemas directory.\n---@return nil\nlocal function generate_all_annotations()\n  local schema_dir = vim.fs.joinpath(vim.uv.cwd(), 'schemas')\n  local output_dir = vim.fs.joinpath(vim.uv.cwd(), 'lua', 'lspconfig', 'types', 'lsp')\n\n  vim.fn.delete(output_dir, 'rf')\n  vim.fn.mkdir(output_dir, 'p')\n\n  for name, type in vim.fs.dir(schema_dir) do\n    if type == 'file' and vim.endswith(name, '.json') then\n      local file = vim.fs.joinpath(schema_dir, name)\n      local lines = generate_file_annotations(file)\n      local output_file = vim.fs.joinpath(output_dir, vim.fn.fnamemodify(name, ':r') .. '.lua')\n      vim.fn.writefile(vim.split(table.concat(lines, '\\n') .. '\\n', '\\n', { plain = true }), output_file, 'b')\n    end\n  end\nend\n\ngenerate_all_annotations()\n"
  },
  {
    "path": "scripts/gen_json_schemas.lua",
    "content": "-- modified from https://gist.githubusercontent.com/williamboman/a01c3ce1884d4b57cc93422e7eae7702/raw/lsp-packages.json\nlocal index = {\n  -- nickel_ls = \"https://raw.githubusercontent.com/tweag/nickel/master/lsp/client-extension/package.json\",\n  ada_ls = 'https://raw.githubusercontent.com/AdaCore/ada_language_server/master/integration/vscode/ada/package.json',\n  astro = 'https://raw.githubusercontent.com/withastro/language-tools/main/packages/vscode/package.json',\n  awk_ls = 'https://raw.githubusercontent.com/Beaglefoot/awk-language-server/master/client/package.json',\n  basedpyright = 'https://raw.githubusercontent.com/DetachHead/basedpyright/main/packages/vscode-pyright/package.json',\n  bashls = 'https://raw.githubusercontent.com/bash-lsp/bash-language-server/master/vscode-client/package.json',\n  clangd = 'https://raw.githubusercontent.com/clangd/vscode-clangd/master/package.json',\n  cssls = 'https://raw.githubusercontent.com/microsoft/vscode/main/extensions/css-language-features/package.json',\n  dartls = 'https://raw.githubusercontent.com/Dart-Code/Dart-Code/master/package.json',\n  denols = 'https://raw.githubusercontent.com/denoland/vscode_deno/main/package.json',\n  elixirls = 'https://raw.githubusercontent.com/elixir-lsp/vscode-elixir-ls/master/package.json',\n  elmls = 'https://raw.githubusercontent.com/elm-tooling/elm-language-client-vscode/master/package.json',\n  eslint = 'https://raw.githubusercontent.com/microsoft/vscode-eslint/main/package.json',\n  flow = 'https://raw.githubusercontent.com/flowtype/flow-for-vscode/master/package.json',\n  fsautocomplete = 'https://raw.githubusercontent.com/ionide/ionide-vscode-fsharp/main/release/package.json',\n  grammarly = 'https://raw.githubusercontent.com/znck/grammarly/main/extension/package.json',\n  hhvm = 'https://raw.githubusercontent.com/slackhq/vscode-hack/master/package.json',\n  hie = 'https://raw.githubusercontent.com/alanz/vscode-hie-server/master/package.json',\n  html = 'https://raw.githubusercontent.com/microsoft/vscode/main/extensions/html-language-features/package.json',\n  intelephense = 'https://raw.githubusercontent.com/bmewburn/vscode-intelephense/master/package.json',\n  java_language_server = 'https://raw.githubusercontent.com/georgewfraser/java-language-server/master/package.json',\n  jdtls = 'https://raw.githubusercontent.com/redhat-developer/vscode-java/master/package.json',\n  jsonls = 'https://raw.githubusercontent.com/microsoft/vscode/master/extensions/json-language-features/package.json',\n  julials = 'https://raw.githubusercontent.com/julia-vscode/julia-vscode/master/package.json',\n  kotlin_language_server = 'https://raw.githubusercontent.com/fwcd/vscode-kotlin/master/package.json',\n  ltex = 'https://raw.githubusercontent.com/valentjn/vscode-ltex/develop/package.json',\n  lua_ls = 'https://raw.githubusercontent.com/LuaLS/vscode-lua/master/package.json',\n  luau_lsp = 'https://raw.githubusercontent.com/JohnnyMorganz/luau-lsp/main/editors/code/package.json',\n  omnisharp = 'https://raw.githubusercontent.com/OmniSharp/omnisharp-vscode/master/package.json',\n  perlls = 'https://raw.githubusercontent.com/richterger/Perl-LanguageServer/master/clients/vscode/perl/package.json',\n  perlnavigator = 'https://raw.githubusercontent.com/bscan/PerlNavigator/main/package.json',\n  perlpls = 'https://raw.githubusercontent.com/FractalBoy/perl-language-server/master/client/package.json',\n  powershell_es = 'https://raw.githubusercontent.com/PowerShell/vscode-powershell/main/package.json',\n  psalm = 'https://raw.githubusercontent.com/psalm/psalm-vscode-plugin/master/package.json',\n  puppet = 'https://raw.githubusercontent.com/puppetlabs/puppet-vscode/main/package.json',\n  purescriptls = 'https://raw.githubusercontent.com/nwolverson/vscode-ide-purescript/master/package.json',\n  pylsp = 'https://raw.githubusercontent.com/python-lsp/python-lsp-server/develop/pylsp/config/schema.json',\n  pyright = 'https://raw.githubusercontent.com/microsoft/pyright/master/packages/vscode-pyright/package.json',\n  r_language_server = 'https://raw.githubusercontent.com/REditorSupport/vscode-r-lsp/master/package.json',\n  rescriptls = 'https://raw.githubusercontent.com/rescript-lang/rescript-vscode/master/package.json',\n  rls = 'https://raw.githubusercontent.com/rust-lang/vscode-rust/master/package.json',\n  rome = 'https://raw.githubusercontent.com/rome/tools/main/editors/vscode/package.json',\n  ruff_lsp = 'https://raw.githubusercontent.com/astral-sh/ruff-vscode/main/package.json',\n  rust_analyzer = 'https://raw.githubusercontent.com/rust-analyzer/rust-analyzer/master/editors/code/package.json',\n  solargraph = 'https://raw.githubusercontent.com/castwide/vscode-solargraph/master/package.json',\n  solidity_ls = 'https://raw.githubusercontent.com/juanfranblanco/vscode-solidity/master/package.json',\n  sorbet = 'https://raw.githubusercontent.com/sorbet/sorbet/master/vscode_extension/package.json',\n  sourcekit = 'https://raw.githubusercontent.com/swift-server/vscode-swift/main/package.json',\n  spectral = 'https://raw.githubusercontent.com/stoplightio/vscode-spectral/master/package.json',\n  stylelint_lsp = 'https://raw.githubusercontent.com/bmatcuk/coc-stylelintplus/master/package.json',\n  svelte = 'https://raw.githubusercontent.com/sveltejs/language-tools/master/packages/svelte-vscode/package.json',\n  svlangserver = 'https://raw.githubusercontent.com/eirikpre/VSCode-SystemVerilog/master/package.json',\n  tailwindcss = 'https://raw.githubusercontent.com/tailwindlabs/tailwindcss-intellisense/master/packages/vscode-tailwindcss/package.json',\n  terraformls = 'https://raw.githubusercontent.com/hashicorp/vscode-terraform/master/package.json',\n  tinymist = 'https://raw.githubusercontent.com/Myriad-Dreamin/tinymist/refs/heads/main/editors/vscode/package.json',\n  ts_ls = 'https://raw.githubusercontent.com/microsoft/vscode/main/extensions/typescript-language-features/package.json',\n  typst_lsp = 'https://raw.githubusercontent.com/nvarner/typst-lsp/refs/heads/master/editors/vscode/package.json',\n  volar = 'https://raw.githubusercontent.com/vuejs/language-tools/master/extensions/vscode/package.json',\n  vtsls = 'https://raw.githubusercontent.com/yioneko/vtsls/main/packages/service/configuration.schema.json',\n  vue_ls = 'https://raw.githubusercontent.com/vuejs/vetur/master/package.json',\n  yamlls = 'https://raw.githubusercontent.com/redhat-developer/vscode-yaml/master/package.json',\n  zls = 'https://raw.githubusercontent.com/zigtools/zls-vscode/master/package.json',\n}\n\n---@param url string\n---@return string\nlocal function request(url)\n  local done = false\n  local err\n  local body\n\n  vim.net.request(url, nil, function(request_err, response)\n    err = request_err\n    body = response and response.body or nil\n    done = true\n  end)\n\n  vim.wait(30000, function()\n    return done\n  end, 50)\n\n  if not done then\n    error(('Timed out downloading %s'):format(url))\n  end\n\n  if err then\n    error(('Could not download %s: %s'):format(url, err))\n  end\n\n  return body\nend\n\n---@class LspSchema\n---@field package_url string url of the package.json of the LSP server\n---@field settings_file string file of the settings json schema of the LSP server\n---@field translate? boolean\n\n--- @type table<string, LspSchema>\nlocal overrides = {\n  lua_ls = {\n    translate = true,\n  },\n  jsonls = {\n    translate = true,\n  },\n  ts_ls = {\n    translate = true,\n  },\n  ltex = {\n    translate = true,\n  },\n  html = {\n    translate = true,\n  },\n  cssls = {\n    translate = true,\n  },\n}\n\n---Builds the effective schema configuration table for each server.\n---@return table<string, LspSchema>\nlocal function resolve_schema_configs()\n  ---@type table<string, LspSchema>\n  local schemas = {}\n\n  for server, package_json in pairs(index) do\n    schemas[server] = {\n      package_url = package_json,\n      settings_file = vim.fs.joinpath(vim.uv.cwd(), 'schemas', server .. '.json'),\n    }\n  end\n\n  return vim.tbl_deep_extend('force', schemas, overrides)\nend\n\n---Replaces localized documentation placeholders in a schema tree in place.\n---\n---This is used for schemas whose documentation strings are stored in a\n---separate `package.nls.json` file instead of inline in `package.json`.\n---@param props table\n---@param nls_url string\nlocal function translate_schema_docs(props, nls_url)\n  local localization = vim.json.decode(request(nls_url), { luanil = { array = true, object = true } }) or {}\n\n  ---Resolves a single description value from the downloaded NLS payload.\n  ---@param desc string\n  ---@return string\n  local function resolve_doc_text(desc)\n    desc = localization[desc:gsub('%%', '')] or desc\n    if type(desc) == 'table' then\n      local message_parts = vim.tbl_values(desc)\n      message_parts = vim.iter(message_parts):flatten():totable()\n      table.sort(message_parts)\n      desc = table.concat(message_parts, '\\n\\n')\n    end\n    return desc\n  end\n\n  ---Walks a schema node recursively and rewrites localized doc fields in place.\n  ---@param node any\n  local function rewrite_doc_tree(node)\n    if type(node) == 'table' then\n      for k, v in pairs(node) do\n        if\n          k == 'description'\n          or k == 'markdownDescription'\n          or k == 'markdownDeprecationMessage'\n          or k == 'deprecationMessage'\n        then\n          node[k] = resolve_doc_text(v)\n        end\n        if k == 'enumDescriptions' or k == 'markdownEnumDescriptions' then\n          for i, d in ipairs(v) do\n            v[i] = resolve_doc_text(d)\n          end\n        end\n        rewrite_doc_tree(v)\n      end\n    end\n  end\n  rewrite_doc_tree(props)\nend\n\n---Downloads and normalizes the JSON schema for a single server.\n---@param schema LspSchema\n---@return table\nlocal function generate_server_schema(schema)\n  local package_json = vim.json.decode(request(schema.package_url)) or {}\n  local config_schema = package_json.contributes and package_json.contributes.configuration\n    or package_json.properties and package_json\n\n  local properties = vim.empty_dict()\n\n  if vim.islist(config_schema) then\n    for _, config_section in pairs(config_schema) do\n      if config_section.properties then\n        for k, v in pairs(config_section.properties) do\n          properties[k] = v\n        end\n      end\n    end\n  elseif config_schema.properties then\n    properties = config_schema.properties\n  end\n\n  local schema_json = {\n    ['$schema'] = 'http://json-schema.org/draft-07/schema#',\n    description = package_json.description,\n    properties = properties,\n  }\n\n  if schema.translate then\n    translate_schema_docs(schema_json, schema.package_url:gsub('package%.json$', 'package.nls.json'))\n  end\n\n  return schema_json\nend\n\n---Regenerates all schema files under the local `schemas/` directory.\nlocal function generate_all_schemas()\n  ---@diagnostic disable-next-line: param-type-mismatch\n  vim.fn.delete(vim.fs.joinpath(vim.uv.cwd(), 'schemas'), 'rf')\n\n  local schemas = resolve_schema_configs()\n  local names = vim.tbl_keys(schemas)\n  table.sort(names)\n  for _, name in ipairs(names) do\n    local schema_config = schemas[name]\n    print(('Generating schema for %s'):format(name))\n\n    if not vim.uv.fs_stat(schema_config.settings_file) then\n      local ok, schema_json = pcall(generate_server_schema, schema_config)\n      if ok then\n        vim.fn.mkdir(vim.fn.fnamemodify(schema_config.settings_file, ':h'), 'p')\n        vim.fn.writefile(\n          vim.split(vim.json.encode(schema_json, { indent = '  ', sort_keys = true }), '\\n', { plain = true }),\n          schema_config.settings_file,\n          'b'\n        )\n      end\n    end\n  end\nend\n\ngenerate_all_schemas()\n"
  },
  {
    "path": "test/lspconfig_spec.lua",
    "content": "local root = vim.fn.getcwd()\n\ndescribe('lspconfig', function()\n  --- @diagnostic disable-next-line:undefined-field\n  local eq = assert.are.equal\n  --- @diagnostic disable-next-line:undefined-field\n  local same = assert.are.same\n\n  before_each(function()\n    vim.api.nvim_command('cd ' .. root)\n  end)\n\n  describe('util', function()\n    describe('root_pattern', function()\n      it('resolves to a_marker.txt', function()\n        local lspconfig = require 'lspconfig'\n        -- change the working directory to test directory\n        vim.api.nvim_command 'cd ./test/test_dir/a'\n        local cwd = vim.fn.getcwd()\n        eq(true, cwd == lspconfig.util.root_pattern { 'a_marker.txt', 'root_marker.txt' }(cwd))\n      end)\n\n      it('resolves to root_marker.txt', function()\n        local lspconfig = require 'lspconfig'\n\n        -- change the working directory to test directory\n        vim.api.nvim_command 'cd ./test/test_dir/a'\n\n        local cwd = vim.fn.getcwd()\n        local resolved = lspconfig.util.root_pattern { 'root_marker.txt' }(cwd)\n        vim.api.nvim_command 'cd ..'\n\n        eq(true, vim.fn.getcwd() == resolved)\n      end)\n    end)\n\n    describe('strip_archive_subpath', function()\n      it('strips zipfile subpaths', function()\n        local lspconfig = require 'lspconfig'\n        local res = lspconfig.util.strip_archive_subpath 'zipfile:///one/two.zip::three/four'\n        eq('/one/two.zip', res)\n      end)\n\n      it('strips tarfile subpaths', function()\n        local lspconfig = require 'lspconfig'\n        local res = lspconfig.util.strip_archive_subpath 'tarfile:/one/two.tgz::three/four'\n        eq('/one/two.tgz', res)\n      end)\n\n      it('returns non-archive paths as-is', function()\n        local lspconfig = require 'lspconfig'\n        local res = lspconfig.util.strip_archive_subpath '/one/two.zip'\n        eq('/one/two.zip', res)\n      end)\n    end)\n\n    describe('user commands', function()\n      it('should translate command definition to nvim_create_user_command options', function()\n        local util = require 'lspconfig.util'\n        local res = util._parse_user_command_options {\n          function() end,\n          '-nargs=* -complete=custom,v:lua.some_global',\n        }\n\n        same({\n          nargs = '*',\n          complete = 'custom,v:lua.some_global',\n        }, res)\n\n        res = util._parse_user_command_options {\n          function() end,\n          ['-nargs'] = '*',\n          '-complete=custom,v:lua.another_global',\n          description = 'My awesome description.',\n        }\n        same({\n          desc = 'My awesome description.',\n          nargs = '*',\n          complete = 'custom,v:lua.another_global',\n        }, res)\n      end)\n    end)\n  end)\n\n  describe('config', function()\n    it('normalizes user, server, and base default configs', function()\n      local lspconfig = require 'lspconfig'\n      local configs = require 'lspconfig.configs'\n\n      local actual = nil\n      lspconfig.util.on_setup = function(config)\n        actual = config\n      end\n\n      lspconfig.util.default_config = {\n        foo = {\n          bar = {\n            val1 = 'base1',\n            val2 = 'base2',\n          },\n        },\n      }\n\n      local server_config = {\n        default_config = {\n          foo = {\n            bar = {\n              val2 = 'server2',\n              val3 = 'server3',\n            },\n            baz = 'baz',\n          },\n        },\n      }\n\n      local user_config = {\n        foo = {\n          bar = {\n            val3 = 'user3',\n            val4 = 'user4',\n          },\n        },\n      }\n\n      configs['test'] = server_config\n      configs['test'].setup(user_config)\n      same({\n        foo = {\n          bar = {\n            val1 = 'base1',\n            val2 = 'server2',\n            val3 = 'user3',\n            val4 = 'user4',\n          },\n          baz = 'baz',\n        },\n        name = 'test',\n      }, actual)\n      configs['test'] = nil\n    end)\n\n    it(\"excludes indexed server configs that haven't been set up\", function()\n      local lspconfig = require 'lspconfig'\n      local _ = lspconfig.lua_ls\n      local _ = lspconfig.tsserver\n      lspconfig.rust_analyzer.setup {}\n      same({ 'rust_analyzer' }, require('lspconfig.util').available_servers())\n    end)\n\n    it('provides user_config to the on_setup hook', function()\n      local lspconfig = require 'lspconfig'\n      local util = require 'lspconfig.util'\n      local user_config\n      util.on_setup = function(_, conf)\n        user_config = conf\n      end\n      lspconfig.rust_analyzer.setup { custom_user_config = 'custom' }\n      same({\n        custom_user_config = 'custom',\n      }, user_config)\n    end)\n  end)\nend)\n"
  },
  {
    "path": "test/test_dir/a/a_marker.txt",
    "content": ""
  },
  {
    "path": "test/test_dir/root_marker.txt",
    "content": ""
  }
]