{"id":23479566,"url":"https://github.com/elixir-lsp/vscode-elixir-ls","last_synced_at":"2025-12-16T09:28:48.981Z","repository":{"id":37580153,"uuid":"166018537","full_name":"elixir-lsp/vscode-elixir-ls","owner":"elixir-lsp","description":"Elixir language support and debugger for VS Code, powered by ElixirLS.","archived":false,"fork":false,"pushed_at":"2025-08-20T22:19:32.000Z","size":3486,"stargazers_count":575,"open_issues_count":23,"forks_count":108,"subscribers_count":13,"default_branch":"master","last_synced_at":"2025-08-21T00:20:55.011Z","etag":null,"topics":["elixir","language-server"],"latest_commit_sha":null,"homepage":"https://marketplace.visualstudio.com/items?itemName=JakeBecker.elixir-ls","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/elixir-lsp.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2019-01-16T10:10:46.000Z","updated_at":"2025-08-20T22:11:49.000Z","dependencies_parsed_at":"2024-04-13T07:42:24.748Z","dependency_job_id":"eaae1569-f0ab-4b34-b70d-c8b5a620b1af","html_url":"https://github.com/elixir-lsp/vscode-elixir-ls","commit_stats":{"total_commits":576,"total_committers":65,"mean_commits":8.861538461538462,"dds":0.4913194444444444,"last_synced_commit":"14190e87475ef2b12386104cc7ac4323cbcf9107"},"previous_names":[],"tags_count":82,"template":false,"template_full_name":null,"purl":"pkg:github/elixir-lsp/vscode-elixir-ls","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elixir-lsp%2Fvscode-elixir-ls","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elixir-lsp%2Fvscode-elixir-ls/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elixir-lsp%2Fvscode-elixir-ls/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elixir-lsp%2Fvscode-elixir-ls/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/elixir-lsp","download_url":"https://codeload.github.com/elixir-lsp/vscode-elixir-ls/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elixir-lsp%2Fvscode-elixir-ls/sbom","scorecard":{"id":373142,"data":{"date":"2025-08-11","repo":{"name":"github.com/elixir-lsp/vscode-elixir-ls","commit":"8d3c73ab292e3c17fb2e3a3f171e6e37fafd5c83"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":5,"checks":[{"name":"Maintained","score":10,"reason":"30 commit(s) and 13 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Code-Review","score":0,"reason":"Found 0/29 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/main.yml:1","Warn: no topLevel permission defined: .github/workflows/release.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Pinned-Dependencies","score":2,"reason":"dependency not pinned by hash detected -- score normalized to 2","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/main.yml:22: update your workflow using https://app.stepsecurity.io/secureworkflow/elixir-lsp/vscode-elixir-ls/main.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/main.yml:26: update your workflow using https://app.stepsecurity.io/secureworkflow/elixir-lsp/vscode-elixir-ls/main.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/main.yml:40: update your workflow using https://app.stepsecurity.io/secureworkflow/elixir-lsp/vscode-elixir-ls/main.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:11: update your workflow using https://app.stepsecurity.io/secureworkflow/elixir-lsp/vscode-elixir-ls/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/elixir-lsp/vscode-elixir-ls/release.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/elixir-lsp/vscode-elixir-ls/release.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yml:33: update your workflow using https://app.stepsecurity.io/secureworkflow/elixir-lsp/vscode-elixir-ls/release.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yml:46: update your workflow using https://app.stepsecurity.io/secureworkflow/elixir-lsp/vscode-elixir-ls/release.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yml:58: update your workflow using https://app.stepsecurity.io/secureworkflow/elixir-lsp/vscode-elixir-ls/release.yml/master?enable=pin","Info:   0 out of   4 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   5 third-party GitHubAction dependencies pinned","Info:   2 out of   2 npmCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 19 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-18T13:27:22.858Z","repository_id":37580153,"created_at":"2025-08-18T13:27:22.858Z","updated_at":"2025-08-18T13:27:22.858Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272310301,"owners_count":24911651,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-27T02:00:09.397Z","response_time":76,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["elixir","language-server"],"created_at":"2024-12-24T19:31:41.161Z","updated_at":"2025-12-13T20:36:11.124Z","avatar_url":"https://github.com/elixir-lsp.png","language":"TypeScript","funding_links":[],"categories":["TypeScript"],"sub_categories":[],"readme":"# ElixirLS: Elixir support and debugger for VS Code\n[![Actions Status](https://img.shields.io/github/actions/workflow/status/elixir-lsp/vscode-elixir-ls/main.yml?branch=master)](github/actions/workflow/status/elixir-lsp/vscode-elixir-ls/main.yml?branch=master)\n[![Visual Studio Marketplace Installs](https://img.shields.io/visual-studio-marketplace/i/JakeBecker.elixir-ls?label=Visual%20Studio%20Marketplace%20Installs)](https://marketplace.visualstudio.com/items?itemName=JakeBecker.elixir-ls)\n[![Open VSX Installs](https://img.shields.io/open-vsx/dt/elixir-lsp/elixir-ls?label=Open%20VSX%20Installs)](https://open-vsx.org/extension/elixir-lsp/elixir-ls)\n[![Slack](https://img.shields.io/badge/slack-join-orange.svg)](https://elixir-lang.slack.com/archives/C7D272G6N)\n\nProvides Elixir language server and debug adapter. This extension is powered by the [Elixir Language Server (ElixirLS)](https://github.com/elixir-lsp/elixir-ls), an Elixir implementation of Microsoft's IDE-agnostic [Language Server Protocol](https://microsoft.github.io/language-server-protocol/) and [Debug Adapter Protocol](https://microsoft.github.io/debug-adapter-protocol/). Visit its page for more information. For a guide to debugger usage in Elixir, read [this blog post](https://medium.com/@JakeBeckerCode/debugging-elixir-in-vs-code-400e21814614).\n\nFeatures include:\n\n- Code completion\n- Debugger support [VSCode debugging docs](https://code.visualstudio.com/docs/editor/debugging)\n- Test discovery, running and debugging via Test Explorer [VSCode test API announcement](https://code.visualstudio.com/updates/v1_59#_testing-apis)\n- Automatic, incremental Dialyzer analysis\n- Automatic suggestion for @spec annotations based on Dialyzer's inferred success typings\n- Diagnostic reporting of build warnings and errors\n- Go-to-definition and Go-to-implementation\n- Task provider with collection of mix tasks [VSCode tasks](https://code.visualstudio.com/docs/editor/tasks)\n- Smart automatic closing of code blocks\n- Documentation lookup on hover\n- Function signature provider\n- Code formatter (Triggered by `Alt + Shift + F` hotkey or enabling `editor.formatOnSave`)\n- Find references to functions and modules\n- Document and Workspace symbols provider\n- Multi-root workspaces\n\n![Screenshot](https://raw.githubusercontent.com/elixir-lsp/elixir-ls/master/images/screenshot.png)\n\n## This is the main vscode-elixir-ls repo\n\nThe [elixir-lsp](https://github.com/elixir-lsp)/[vscode-elixir-ls](https://github.com/elixir-lsp/vscode-elixir-ls) repo began as a fork when the original repo at [JakeBecker](https://github.com/JakeBecker)/[vscode-elixir-ls](https://github.com/JakeBecker/vscode-elixir-ls) became inactive for an extended period of time. So we decided to start an active fork to merge dormant PRs and fix issues where possible. We also believe in an open and shared governance model to share the work instead of relying on one person to shoulder the whole burden.\n\nThe original repository has now been deprecated in favor of this one. Future updates to the original [VS Code ElixirLS extension](https://marketplace.visualstudio.com/items?itemName=JakeBecker.elixir-ls) will come from this repo.\n\n## Default settings\n\nElixirLS is opinionated and sets the following default settings for Elixir files:\n\n```jsonc\n{\n  // Based on Elixir formatter's style\n  \"editor.insertSpaces\": true,\n  // Note: While it is possible to override this in your VSCode configuration, the Elixir Formatter\n  // does not support a configurable tab size, so if you override this then you should not use the\n  // formatter.\n  \"editor.tabSize\": 2,\n  \"files.trimTrailingWhitespace\": true,\n  \"files.insertFinalNewline\": true,\n  \"files.trimFinalNewlines\": true,\n\n  // Provides smart completion for \"do\" and \"fn -\u003e\" blocks. Does not run the Elixir formatter.\n  \"editor.formatOnType\": true,\n\n  // Misc\n  \"editor.wordBasedSuggestions\": false,\n  \"editor.trimAutoWhitespace\": false\n}\n```\n\nYou can, of course, change these in your user settings, or on a per project basis in `.vscode/settings.json`.\n\n## Advanced Configuration\n\n### Customizing launch config for test runner\n\nThe test runner builds a launch configuration dynamically basing on hardcoded default values:\n\n```js\n{\n  \"type\": \"mix_task\",\n  \"name\": \"mix test\",\n  \"request\": \"launch\",\n  \"task\": \"test\",\n  \"env\": {\n    \"MIX_ENV\": \"test\",\n  },\n  \"taskArgs\": buildTestCommandArgs(args, debug),\n  \"startApps\": true,\n  \"projectDir\": args.cwd,\n  // we need to require all test helpers and only the file we need to test\n  // mix test runs tests in all required files even if they do not match\n  // given path:line\n  \"requireFiles\": [\n    \"test/**/test_helper.exs\",\n    \"apps/*/test/**/test_helper.exs\",\n    args.filePath,\n  ],\n  \"noDebug\": !debug,\n}\n```\n\nThe default launch config can be customized by providing a project launch configuration named `mix test`. If found, this launch config is used as the default for running and debugging tests.\n\nExample:\n\n```json\n{\n  \"type\": \"mix_task\",\n  \"name\": \"mix test\",\n  \"request\": \"launch\",\n  \"debugAutoInterpretAllModules\": false,\n  \"debugInterpretModulesPatterns\": [\"MyApp*\"]\n}\n```\n\n### Add support for emmet\n\n`emmet` is a plugin that makes it easier to write HTML: https://code.visualstudio.com/docs/editor/emmet\n\nOpen VSCode and hit Ctrl+Shift+P (or Cmd+Shift+P) and type \"Preference: Open Settings (JSON)\"\nAdd or edit your `emmet.includedLanguages` to include the new Language ID:\n\n```json\n\"emmet.includeLanguages\": {\n  \"html-eex\": \"html\"\n}\n```\n\n## Supported versions\n\nSee [ElixirLS](https://github.com/elixir-lsp/elixir-ls) for details on the supported Elixir and Erlang versions.\n\n## Using ElixirLS with Dev Containers\n\nYou can run ElixirLS inside a [VS Code dev container](https://code.visualstudio.com/docs/devcontainers/containers) for a consistent development environment. An example configuration is provided in the [elixir-ls-devcontainer-example](https://github.com/elixir-lsp/elixir-ls-devcontainer-example/blob/main/.devcontainer/Dockerfile) repository. Copy its `.devcontainer` folder into your project (or use it as a starting point), then select **Remote-Containers: Reopen in Container** from the command palette. After the container builds, the extension will run in the container just as it does locally.\n\n## Troubleshooting\n\nIf you run into issues with the extension, try these debugging steps:\n\n- Make sure you have `hex` and `git` installed.\n- Make sure `github.com` and `hex.pm` are accessible. You may need to configure your HTTPS proxy. If your setup uses TLS man-in-the-middle inspection, you may need to set `HEX_UNSAFE_HTTPS=1`.\n- If ElixirLS fails to start, you can try cleaning the `Mix.install` directory. (The location on your system can be obtained by calling `Path.join(Mix.Utils.mix_cache(), \"installs\")` from an `iex` session.)\n- Restart ElixirLS with a custom command `restart`\n- Run `mix clean` or `mix clean --deps` in ElixirLS with the custom command `mixClean`.\n- Restart your editor (which will restart ElixirLS).\n- After stopping your editor, remove the entire `.elixir_ls` directory, then restart your editor.\n  - NOTE: This will cause you to have to re-run the entire dialyzer build\n\nYou may need to set `elixirLS.mixEnv`, `elixirLS.mixTarget`, `elixirLS.projectDir` and/or `elixirLS.useCurrentRootFolderAsProjectDir` if your project requires it. By default, ElixirLS compiles code with `MIX_ENV=test`, `MIX_TARGET=host`, and assumes that `mix.exs` is located in the workspace root directory.\n\nIf you get an error like the following immediately on startup:\n\n```\n[Warn  - 1:56:04 PM] ** (exit) exited in: GenServer.call(ElixirLS.LanguageServer.JsonRpc, {:packet, %{...snip...}}, 5000)\n    ** (EXIT) no process: the process is not alive or there's no process currently associated with the given name, possibly because its application isn't started\n```\n\nand you installed Elixir and Erlang from the Erlang Solutions repository, you may not have a full installation of Erlang. This can be solved with `sudo apt-get install esl-erlang`. (This was originally reported in [#208](https://github.com/elixir-lsp/elixir-ls/issues/208)).\n\nOn fedora if you only install the elixir package you will not have a full erlang installation, this can be fixed by running `sudo dnf install erlang` (This was reported in [#231](https://github.com/elixir-lsp/elixir-ls/issues/231)).\n\n### Check ElixirLS Output\n\nCheck the output log by opening `View \u003e Output` and selecting \"ElixirLS\" in the dropdown.\n\n![View ElixirLS Output](images/viewing-elixir-ls-output.gif)\n\n### Check the Developer Tools\n\nCheck the developer console by opening `Help \u003e Toggle Developer Tools` and include any errors that look relevant.\n\n## Contributing\n\n### Installation\n\n```shell\n# Clone this repo recursively to ensure you get the elixir-ls submodule\ngit clone --recursive git@github.com:elixir-lsp/vscode-elixir-ls.git\n\n# Fetch vscode-elixir-ls dependencies\ncd vscode-elixir-ls\nnpm install\n\n# Fetch elixir-ls dependencies\ncd elixir-ls\nmix deps.get\nMIX_ENV=prod mix compile\n```\n\nTo launch the extension from VS Code, run the \"Launch Extension local\" launch configuration from [Run and Debug view](https://code.visualstudio.com/docs/editor/debugging#_run-view) or press F5.\n\nAlternatively, you can build and install the extension locally using the `vsce` command and the `code` CLI.\n\n```shell\n# Navigate to vscode-elixir-ls project root\ncd ..\n\n# Build the extension\nnpx vsce package\n\n# Install it locally\ncode --install-extension *.vsix --force\n```\n\nNote that if you have the extension installed from the Visual Studio Marketplace and are also installing a locally\nbuilt package, you may need to disable the [Extensions: Auto Check Updates](https://code.visualstudio.com/docs/editor/extension-gallery#_extension-autoupdate) setting to prevent your\nlocal install from being replaced with the Marketplace version.\n\n### `elixir-ls` submodule\n\nMost of the functionality of this extension comes from ElixirLS, which is included as a Git submodule in the `elixir-ls` folder. Make sure you clone the repo using `git clone --recursive` or run `git submodule init \u0026\u0026 git submodule update` after cloning.\n\nIncluding `elixir-ls` as a submodule makes it easy to develop and test code changes for ElixirLS itself. If you want to modify ElixirLS, not just its VS Code client code, you'll want to change the code in the `elixir-ls` subdirectory. Most often you don't need to explicitly build it. The ElixirLS launch script should be able to pick up changes and rebuild accordingly via `Mix.install`.\n\nWhen you're ready to contribute your changes back to ElixirLS, you need to fork the [ElixirLS](https://github.com/elixir-lsp/elixir-ls) repo on Github and push any changes you make to the ElixirLS submodule to your fork. Here is an example of how that might look:\n\n```shell\n# Enter the submodule directory. Now, if you run git commands, they run in the submodule\ncd vscode-elixir-ls/elixir-ls\n\n# Create your feature branch\ngit checkout -b my_new_branch\n\n# Add your forked elixir-ls repository as a remote\ngit remote add my_fork git@github.com:\u003cyour_github_username\u003e/elixir-ls.git\n\n# Make changes in the elixir-ls folder, commit them, and push to your forked repo\ngit commit ...\ngit push my_fork my_new_branch\n\n# Visit https://github.com/elixir-lsp/elixir-ls/compare to start a new Pull Request\n```\n\n### Running the tests locally\n\nYou should ensure that the tests run locally before submitting a PR, and if relevant add automated tests in the PR.\n\n```shell\nrm -rf out\nnpm run compile\nnpm test\n```\n\nAlternatively, you can use the `test.sh`/`test.bat` script which does the above.\n\n## Telemetry\n\nThis extension collects telemetry information emitted by ElixirLS language server and debug adapter for feature insight and performance and health monitoring. Collected telemetry data include usage, performance, environment info and error reports. Data is anonymised and not personally identifiable. Data is sent to Azure Application Insights via [@vscode/extension-telemetry](https://www.npmjs.com/package/@vscode/extension-telemetry). The extension respects VSCode `telemetry.telemetryLevel` setting. For transparency [telemetry.json](telemetry.json) details all collected information. If you would like inspect what is being collected or change your telemetry settings, please refer to [VSCode Telemetry documentation](https://code.visualstudio.com/docs/getstarted/telemetry).\n\n## Acknowledgements and related projects\n\nThere is another VS Code extension for Elixir, [VSCode Elixir](https://github.com/fr1zle/vscode-elixir). It's powered by [Elixir Sense](https://github.com/msaraiva/elixir_sense), another language \"smartness\" server similar to ElixirLS. Much of this extension's client code (such as syntax highlighting) was copied directly from VSCode Elixir, for which they deserve all the credit.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felixir-lsp%2Fvscode-elixir-ls","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Felixir-lsp%2Fvscode-elixir-ls","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felixir-lsp%2Fvscode-elixir-ls/lists"}