{"id":15136072,"url":"https://github.com/kronicdeth/intellij-elixir","last_synced_at":"2026-05-15T06:12:37.444Z","repository":{"id":19100890,"uuid":"22329177","full_name":"KronicDeth/intellij-elixir","owner":"KronicDeth","description":"Elixir plugin for JetBrain's IntelliJ Platform (including Rubymine)","archived":false,"fork":false,"pushed_at":"2026-01-31T12:08:26.000Z","size":74152,"stargazers_count":1894,"open_issues_count":644,"forks_count":164,"subscribers_count":36,"default_branch":"main","last_synced_at":"2026-02-01T00:06:30.490Z","etag":null,"topics":["androidstudio","appcode","clion","datagrip-ide","editor","editor-plugin","elixir","elixir-mix","elixir-plugin","gogland","hacktoberfest","ide","intellij-plugin","java","jetbrains","mix","pycharm","rubymine","webstorm"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/KronicDeth.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE.md","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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":["kronicdeth"],"patreon":"intellijelixir","open_collective":"intellij-elixir","custom":"https://www.paypal.com/cgi-bin/webscr?cmd=_donations\u0026business=Kronic%2eDeth%40gmail%2ecom\u0026lc=US\u0026item_name=Elixir%20plugin%20for%20IntelliJ%20IDEA\u0026currency_code=USD"}},"created_at":"2014-07-28T03:09:05.000Z","updated_at":"2026-01-31T12:08:09.000Z","dependencies_parsed_at":"2023-12-23T19:06:26.650Z","dependency_job_id":"255caa1d-e4bd-4211-82e6-4dbe7acbdc28","html_url":"https://github.com/KronicDeth/intellij-elixir","commit_stats":{"total_commits":4848,"total_committers":59,"mean_commits":82.16949152542372,"dds":"0.18028052805280526","last_synced_commit":"b698fdaec0ead565023bf4461d48734de135b604"},"previous_names":[],"tags_count":267,"template":false,"template_full_name":null,"purl":"pkg:github/KronicDeth/intellij-elixir","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KronicDeth%2Fintellij-elixir","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KronicDeth%2Fintellij-elixir/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KronicDeth%2Fintellij-elixir/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KronicDeth%2Fintellij-elixir/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/KronicDeth","download_url":"https://codeload.github.com/KronicDeth/intellij-elixir/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KronicDeth%2Fintellij-elixir/sbom","scorecard":{"id":80529,"data":{"date":"2025-08-11","repo":{"name":"github.com/KronicDeth/intellij-elixir","commit":"9e4e5bf8e6ba05d37d90964af91f954366e158a9"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.7,"checks":[{"name":"Maintained","score":6,"reason":"2 commit(s) and 6 issue activity found in the last 90 days -- score normalized to 6","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Code-Review","score":2,"reason":"Found 7/30 approved changesets -- score normalized to 2","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":"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":"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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/release.yml:1","Warn: no topLevel permission defined: .github/workflows/test.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":"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":"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":"License","score":9,"reason":"license file detected","details":["Info: project has a license file: LICENSE.md:0","Warn: project license file does not contain an FSF or OSI license."],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"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":"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":"Binary-Artifacts","score":2,"reason":"binaries present in source code","details":["Warn: binary detected: gradle/wrapper/gradle-wrapper.jar:1","Warn: binary detected: lib/OtpErlang.jar:1","Warn: binary detected: tests/mockito-core-2.0.7-beta-javadoc.jar:1","Warn: binary detected: tests/mockito-core-2.0.7-beta-sources.jar:1","Warn: binary detected: tests/mockito-core-2.0.7-beta.jar:1","Warn: binary detected: tests/objenesis-2.1-javadoc.jar:1","Warn: binary detected: tests/objenesis-2.1-sources.jar:1","Warn: binary detected: tests/objenesis-2.1.jar:1"],"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":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v21.0.0-pre+20250803031959 not signed: https://api.github.com/repos/KronicDeth/intellij-elixir/releases/237104209","Warn: release artifact v21.0.0 not signed: https://api.github.com/repos/KronicDeth/intellij-elixir/releases/219257127","Warn: release artifact v20.0.1 not signed: https://api.github.com/repos/KronicDeth/intellij-elixir/releases/188256531","Warn: release artifact v20.0.0 not signed: https://api.github.com/repos/KronicDeth/intellij-elixir/releases/185395092","Warn: release artifact v19.0.1 not signed: https://api.github.com/repos/KronicDeth/intellij-elixir/releases/171001760","Warn: release artifact v21.0.0-pre+20250803031959 does not have provenance: https://api.github.com/repos/KronicDeth/intellij-elixir/releases/237104209","Warn: release artifact v21.0.0 does not have provenance: https://api.github.com/repos/KronicDeth/intellij-elixir/releases/219257127","Warn: release artifact v20.0.1 does not have provenance: https://api.github.com/repos/KronicDeth/intellij-elixir/releases/188256531","Warn: release artifact v20.0.0 does not have provenance: https://api.github.com/repos/KronicDeth/intellij-elixir/releases/185395092","Warn: release artifact v19.0.1 does not have provenance: https://api.github.com/repos/KronicDeth/intellij-elixir/releases/171001760"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Pinned-Dependencies","score":5,"reason":"dependency not pinned by hash detected -- score normalized to 5","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/KronicDeth/intellij-elixir/release.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yml:20: update your workflow using https://app.stepsecurity.io/secureworkflow/KronicDeth/intellij-elixir/release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:42: update your workflow using https://app.stepsecurity.io/secureworkflow/KronicDeth/intellij-elixir/release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:57: update your workflow using https://app.stepsecurity.io/secureworkflow/KronicDeth/intellij-elixir/release.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yml:76: update your workflow using https://app.stepsecurity.io/secureworkflow/KronicDeth/intellij-elixir/release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:82: update your workflow using https://app.stepsecurity.io/secureworkflow/KronicDeth/intellij-elixir/release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:90: update your workflow using https://app.stepsecurity.io/secureworkflow/KronicDeth/intellij-elixir/release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/KronicDeth/intellij-elixir/test.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/test.yml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/KronicDeth/intellij-elixir/test.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:49: update your workflow using https://app.stepsecurity.io/secureworkflow/KronicDeth/intellij-elixir/test.yml/main?enable=pin","Info:   0 out of   7 GitHub-owned GitHubAction dependencies pinned","Info:   5 out of   8 third-party GitHubAction 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":"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 30 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-15T05:44:24.903Z","repository_id":19100890,"created_at":"2025-08-15T05:44:24.904Z","updated_at":"2025-08-15T05:44:24.904Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28981893,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-01T15:35:50.179Z","status":"ssl_error","status_checked_at":"2026-02-01T15:35:38.075Z","response_time":56,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["androidstudio","appcode","clion","datagrip-ide","editor","editor-plugin","elixir","elixir-mix","elixir-plugin","gogland","hacktoberfest","ide","intellij-plugin","java","jetbrains","mix","pycharm","rubymine","webstorm"],"created_at":"2024-09-26T06:03:57.507Z","updated_at":"2026-05-15T06:12:37.424Z","avatar_url":"https://github.com/KronicDeth.png","language":"Kotlin","funding_links":["https://github.com/sponsors/kronicdeth","https://patreon.com/intellijelixir","https://opencollective.com/intellij-elixir","https://www.paypal.com/cgi-bin/webscr?cmd=_donations\u0026business=Kronic%2eDeth%40gmail%2ecom\u0026lc=US\u0026item_name=Elixir%20plugin%20for%20IntelliJ%20IDEA\u0026currency_code=USD"],"categories":[],"sub_categories":[],"readme":"Table of Contents[![Backers on Open Collective](https://opencollective.com/intellij-elixir/backers/badge.svg)](#backers)[![Sponsors on Open Collective](https://opencollective.com/intellij-elixir/sponsors/badge.svg)](#sponsors)\n=================\n\n   * [Elixir plugin](#elixir-plugin)\n      * [IDEs](#ides)\n      * [Features](#features)\n         * [Project](#project)\n            * [From Existing Sources](#from-existing-sources)\n               * [Import project from external model](#import-project-from-external-model)\n               * [Create project from existing sources](#create-project-from-existing-sources)\n            * [New](#new)\n         * [Project Structure](#project-structure)\n         * [Project Settings](#project-settings)\n            * [SDK Setup Known Limitations](#sdk-setup-known-limitations)\n         * [Windows Subsystem for Linux (WSL) Support](#windows-subsystem-for-linux-wsl-support)\n            * [WSL Limitations](#wsl-limitations)\n         * [Module Settings](#module-settings)\n            * [Sources](#sources)\n            * [Paths](#paths)\n            * [Dependencies](#dependencies)\n         * [New Elixir File](#new-elixir-file)\n            * [Empty module](#empty-module)\n            * [Elixir Application](#elixir-application)\n            * [Elixir Supervisor](#elixir-supervisor)\n            * [Elixir GenServer](#elixir-genserver)\n            * [Elixir GenEvent](#elixir-genevent)\n         * [Syntax Highlighting and Semantic Annotation](#syntax-highlighting-and-semantic-annotation)\n         * [Grammar parsing](#grammar-parsing)\n         * [Inspections](#inspections)\n            * [Ambiguous nested calls](#ambiguous-nested-calls)\n            * [Ambiguous parentheses](#ambiguous-parentheses)\n               * [Empty Parentheses](#empty-parentheses)\n               * [Keywords in Parentheses](#keywords-in-parentheses)\n               * [Positional arguments in Parentheses](#positional-arguments-in-parentheses)\n            * [Keyword pair colon (:) used in type spec instead of type operator (\u003ccode\u003e::\u003c/code\u003e)](#keyword-pair-colon--used-in-type-spec-instead-of-type-operator-)\n            * [Keywords appear before the end of list.](#keywords-appear-before-the-end-of-list)\n            * [Match operator (=) used in type spec instead of type operator (\u003ccode\u003e::\u003c/code\u003e)](#match-operator--used-in-type-spec-instead-of-type-operator-)\n         * [Quick Fixes](#quick-fixes)\n            * [Convert : to \u003ccode\u003e ::\u003c/code\u003e in type specs](#convert--to---in-type-specs)\n            * [Convert = to \u003ccode\u003e ::\u003c/code\u003e in type specs](#convert--to---in-type-specs-1)\n            * [Remove space in front of ambiguous parentheses](#remove-space-in-front-of-ambiguous-parentheses)\n         * [Code Folding](#code-folding)\n            * [Controls](#controls)\n               * [Collapsing](#collapsing)\n               * [Expanding](#expanding)\n            * [Regions](#regions)\n         * [Commenter](#commenter)\n         * [Credo](#credo)\n            * [Inspection](#inspection)\n               * [Batch Mode](#batch-mode)\n            * [Configuration](#configuration)\n            * [Annotator](#annotator)\n               * [Disable Explanation](#disable-explanation)\n               * [Disable inspection](#disable-inspection)\n         * [Debugger](#debugger)\n            * [Steps](#steps)\n            * [Basics](#basics)\n               * [Keyboard Shortcuts](#keyboard-shortcuts)\n               * [Excluding Modules](#excluding-modules)\n                  * [Disabling Existing Module Patterns](#disabling-existing-module-patterns)\n                  * [Editing Existing Module Patterns](#editing-existing-module-patterns)\n                  * [Removing Existing Module Patterns](#removing-existing-module-patterns)\n                  * [Adding New Module Patterns](#adding-new-module-patterns)\n               * [Environment Variables](#environment-variables)\n            * [Breakpoints](#breakpoints)\n               * [Accessing Breakpoint Properties](#accessing-breakpoint-properties)\n                  * [Viewing all breakpoints](#viewing-all-breakpoints)\n                  * [Viewing a single breakpoint](#viewing-a-single-breakpoint)\n               * [Configuring Breakpoints](#configuring-breakpoints)\n               * [Creating Line Breakpoints](#creating-line-breakpoints)\n               * [Describing Line Breakpoints](#describing-line-breakpoints)\n               * [Searching for Line Breakpoints](#searching-for-line-breakpoints)\n               * [Jump to Breakpoint Source](#jump-to-breakpoint-source)\n               * [Disabling Line Breakpoints](#disabling-line-breakpoints)\n               * [Deleting Line Breakpoints](#deleting-line-breakpoints)\n            * [Starting the Debugger Session](#starting-the-debugger-session)\n            * [Examining Suspended Program](#examining-suspended-program)\n               * [Processes](#processes)\n               * [Frames](#frames)\n                  * [Jump to Current Execution Point](#jump-to-current-execution-point)\n               * [Variables](#variables)\n            * [Evaluate](#evaluate)\n            * [Stepping](#stepping)\n         * [Delimiters](#delimiters)\n            * [Auto-inserting](#auto-inserting)\n            * [Matching](#matching)\n         * [Dialyzer](#dialyzer)\n            * [Inspection](#inspection-1)\n               * [Batch Mode](#batch-mode-1)\n         * [Embedded Elixir (EEx) Templates \u003ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"/resources/icons/file/eex.svg\"\u003e\u003cimg src=\"/resources/icons/file/eex.svg\" alt=\"\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e](/resources/icons/file/eex.svg)\n            * [Advanced configuration](#advanced-configuration)\n         * [Live Embedded Elixir (LEEx) Templates \u003ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"/resources/icons/file/eex.svg\"\u003e\u003cimg src=\"/resources/icons/file/eex.svg\" alt=\"\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e](/resources/icons/file/eex.svg)\n            * [Advanced configuration](#advanced-configuration-1)\n         * [Building/Compiling](#buildingcompiling)\n            * [Settings](#settings)\n            * [Build Messages](#build-messages)\n               * [Jump To Source](#jump-to-source)\n               * [Warnings as Errors](#warnings-as-errors)\n            * [Individual File](#individual-file)\n            * [Project](#project-1)\n         * [Live Templates](#live-templates)\n         * [Documentation](#documentation)\n            * [Editor](#editor)\n               * [Code Blocks](#code-blocks)\n               * [Toggling Editor to Rendered](#toggling-editor-to-rendered)\n            * [Rendered View](#rendered-view)\n               * [Aliases link to Modules](#aliases-link-to-modules)\n               * [Toggling Rendered to Editor](#toggling-rendered-to-editor)\n            * [Quick Documentation](#quick-documentation)\n               * [For a function](#for-a-function)\n               * [For a function](#for-a-function-1)\n               * [For a module](#for-a-module)\n               * [For a type](#for-a-type)\n         * [Run/Debug Configurations](#rundebug-configurations)\n            * [Distillery Release CLI \u003ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"resources/icons/run/distillery/release-cli.svg\"\u003e\u003cimg src=\"resources/icons/run/distillery/release-cli.svg\" alt=\"Elixir Mix Icon with tapered neck to make a retort as used in distilleries\" title=\"Distillery Release CLI Icon\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e](resources/icons/run/distillery/release-cli.svg)\n               * [Running](#running)\n               * [Debugging](#debugging)\n            * [Elixir \u003ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"/resources/icons/run/elixir.svg\"\u003e\u003cimg src=\"/resources/icons/run/elixir.svg\" alt=\"Elixir Drop\" title=\"Elixir Icon\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e](/resources/icons/run/elixir.svg)\n               * [Running](#running-1)\n               * [Debugging](#debugging-1)\n            * [IEx (Interactive Elixir) \u003ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"/resources/icons/run/iex.svg\"\u003e\u003cimg src=\"/resources/icons/run/iex.svg\" alt=\"\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e](/resources/icons/run/iex.svg)\n               * [Running](#running-2)\n               * [Debugging](#debugging-2)\n            * [Mix Tasks \u003ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"/resources/icons/run/mix.svg\"\u003e\u003cimg src=\"/resources/icons/run/mix.svg\" alt=\"Elixir Drop mixed in a round-bottom flask\" title=\"Mix Icon\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e](/resources/icons/run/mix.svg)\n               * [Running](#running-3)\n               * [Debugging](#debugging-3)\n            * [IEx Mix \u003ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"/resources/icons/run/iex/mix.svg\"\u003e\u003cimg src=\"/resources/icons/run/iex/mix.svg\" alt=\"IEx Mix\" title=\"IEx Mix\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e](/resources/icons/run/iex/mix.svg)\n               * [Running](#running-4)\n               * [Debugging](#debugging-4)\n               * [Using graphical formatter](#using-graphical-formatter)\n               * [Creating mix espce Run Configurations Manually](#creating-mix-espce-run-configurations-manually)\n               * [Running](#running-5)\n               * [Debugging](#debugging-5)\n               * [Creating mix espec Run Configurations from context](#creating-mix-espec-run-configurations-from-context)\n                  * [Creating/Running mix espec Run Configurations from directory](#creatingrunning-mix-espec-run-configurations-from-directory)\n                  * [Creating/Running mix espec Run Configurations from file](#creatingrunning-mix-espec-run-configurations-from-file)\n                  * [Creating/Running mix espec Run Configurations from line](#creatingrunning-mix-espec-run-configurations-from-line)\n               * [Creating mix test Run Configurations Manually](#creating-mix-test-run-configurations-manually)\n               * [Running](#running-6)\n               * [Debugging](#debugging-6)\n               * [Creating mix test Run Configurations from context](#creating-mix-test-run-configurations-from-context)\n                  * [Creating/Running mix test Run Configurations from directory](#creatingrunning-mix-test-run-configurations-from-directory)\n                  * [Creating/Running mix test Run Configurations from file](#creatingrunning-mix-test-run-configurations-from-file)\n                  * [Creating/Running mix test Run Configurations from line](#creatingrunning-mix-test-run-configurations-from-line)\n            * [Decompression](#decompression)\n            * [BEAM Chunks](#beam-chunks)\n               * [\u003ccode\u003eAtom\u003c/code\u003e / \u003ccode\u003eAtU8\u003c/code\u003e](#atom--atu8)\n                  * [Format](#format)\n                  * [Tab](#tab)\n               * [Attr](#attr)\n                  * [Format](#format-1)\n                  * [Tab](#tab-1)\n               * [CInf](#cinf)\n                  * [Format](#format-2)\n                  * [Tab](#tab-2)\n               * [Code](#code)\n                  * [Format](#format-3)\n                  * [Tab](#tab-3)\n               * [Dbgi](#dbgi)\n                  * [Format](#format-4)\n                  * [Tab](#tab-4)\n               * [ExDc](#exdc)\n                  * [Format](#format-5)\n                  * [Tab](#tab-5)\n               * [ExpT](#expt)\n                  * [Format](#format-6)\n                  * [Tab](#tab-6)\n               * [ImpT](#impt)\n                  * [Format](#format-7)\n                  * [Tab](#tab-7)\n               * [LitT](#litt)\n                  * [Format](#format-8)\n                  * [Tab](#tab-8)\n               * [Line](#line)\n                  * [Format](#format-9)\n                  * [Tab](#tab-9)\n               * [LocT](#loct)\n                  * [Format](#format-10)\n                  * [Tab](#tab-10)\n               * [StrT](#strt)\n                  * [Format](#format-11)\n                  * [Tab](#tab-11)\n            * [Decompilation (Text)](#decompilation-text)\n               * [Call definition macros](#call-definition-macros)\n               * [Special handling of call definition names](#special-handling-of-call-definition-names)\n         * [Completion](#completion)\n            * [Aliases and Modules](#aliases-and-modules)\n               * [Aliases inside { }](#aliases-inside--)\n            * [Function and Macro Calls](#function-and-macro-calls)\n               * [Qualified](#qualified)\n               * [Unqualified](#unqualified)\n            * [Module Attributes](#module-attributes)\n            * [Parameters and Variables](#parameters-and-variables)\n         * [Go To Declaration](#go-to-declaration)\n            * [Alias](#alias)\n            * [Function or Macro](#function-or-macro)\n               * [Imported Functions or Macros](#imported-functions-or-macros)\n               * [Local Functions or Macros](#local-functions-or-macros)\n               * [Remote Functions or Macros](#remote-functions-or-macros)\n            * [Module](#module)\n            * [Module Attribute](#module-attribute)\n            * [Parameters and Variables](#parameters-and-variables-1)\n         * [Formatting](#formatting)\n            * [Formatters](#formatters)\n               * [Internal](#internal)\n               * [External (mix format)](#external-mix-format)\n                  * [Disabling](#disabling)\n            * [Format on Save](#format-on-save)\n               * [Autosave](#autosave)\n            * [Formattables](#formattables)\n               * [Directory](#directory)\n               * [File](#file)\n                  * [Other File](#other-file)\n                  * [Current File](#current-file)\n               * [Selection](#selection)\n         * [Go To Related](#go-to-related)\n            * [Decompiled Module](#decompiled-module)\n            * [Decompiled Call Definition](#decompiled-call-definition)\n         * [Go To Symbol](#go-to-symbol)\n         * [Go To Test](#go-to-test)\n         * [Go To Test Subject](#go-to-test-subject)\n         * [Find Usages and Show Usages](#find-usages-and-show-usages)\n            * [Function](#function)\n            * [Module](#module-1)\n            * [Module Attribute](#module-attribute-1)\n            * [Parameters and Variables](#parameters-and-variables-2)\n         * [Refactor](#refactor)\n            * [Rename](#rename)\n               * [Module Attribute](#module-attribute-2)\n               * [Parameters and Variables](#parameters-and-variables-3)\n         * [SDK](#sdk)\n            * [Package Manager Install Locations](#package-manager-install-locations)\n            * [Rich IDEs](#rich-ides)\n               * [Default SDK](#default-sdk)\n            * [Small IDEs](#small-ides)\n               * [Elixir Facet SDK](#elixir-facet-sdk)\n               * [Elixir SDKs](#elixir-sdks)\n               * [Internal Erlang SDK](#internal-erlang-sdk)\n         * [Show Parameters](#show-parameters)\n         * [Structure](#structure)\n            * [Viewing Structure](#viewing-structure)\n            * [Buttons](#buttons)\n               * [Sorters](#sorters)\n               * [Providers](#providers)\n               * [Expanders](#expanders)\n               * [Autoscrollers](#autoscrollers)\n            * [Elements](#elements)\n               * [Icons](#icons)\n                  * [Time](#time)\n                  * [Visibility](#visibility)\n               * [Call to Element](#call-to-element)\n      * [Experimental Features](#experimental-features)\n         * [~H Sigil HTML Injection Support](#h-sigil-html-injection-support)\n            * [IntelliLang Plugin Requirement](#intellilang-plugin-requirement)\n            * [How to Enable ~H Sigil HTML Injection](#how-to-enable-h-sigil-html-injection)\n            * [Providing feedback and reporting issues for the ~H Sigil HTML Injection Experimental Feature](#providing-feedback-and-reporting-issues-for-the-h-sigil-html-injection-experimental-feature)\n            * [Removing the Green Background for Injected Language Fragments](#removing-the-green-background-for-injected-language-fragments)\n      * [Installation](#installation)\n         * [Stable releases](#stable-releases)\n            * [Inside IDE using JetBrains repository](#inside-ide-using-jetbrains-repository)\n            * [Inside IDE using Github releases](#inside-ide-using-github-releases)\n               * [In browser](#in-browser)\n               * [In IDE](#in-ide)\n         * [Canary releases](#canary-releases)\n            * [Inside IDE using JetBrains repository](#inside-ide-using-jetbrains-repository-1)\n            * [Inside IDE using Github releases](#inside-ide-using-github-releases-1)\n               * [In browser](#in-browser-1)\n               * [In IDE](#in-ide-1)\n      * [Screenshots](#screenshots)\n      * [Error reporting](#error-reporting)\n      * [Contributors](#contributors)\n      * [Donations](#donations)\n      * [Historical Statistics](#historical-statistics)\n         * [Work Time](#work-time)\n         * [Donors](#donors)\n         * [Open Collective](#open-collective)\n            * [Backers](#backers)\n            * [Sponsors](#sponsors)\n\n# Elixir plugin\n\n[![Build Status](https://travis-ci.org/KronicDeth/intellij-elixir.svg?branch=main)](https://travis-ci.org/KronicDeth/intellij-elixir)\n\nThis is a plugin that adds support for [Elixir](http://elixir-lang.org/) to JetBrains IDEs.\n\nThe plugin works both in the rich IDEs that allow alternative language SDK selection and small IDEs that are language specific.  The rich IDEs work best for IntelliJ Elixir because only in the rich IDEs can have an Elixir SDK set as the Project SDK.  In all small IDEs, the native language SDK is always there, which makes anything that uses the SDK, such as running `elixir`, `erl`, or `mix` more complicated both internally and externally in the configuration you have to setup.\n\n## IDEs\n\n*The plugin is free to use in all JetBrains IDEs.  The Cost column in the below table is what JetBrains charges for the IDE itself.  IntelliJ Elixir is maintained by [@KronicDeth](https://github.com/KronicDeth) who does not get any of the subscription money.  If you want to support the plugin itself, make a [donation](#donations).*\n\n| IDE                                                                                                      | Rich/Small | Languages   | Cost                                                                      | Trial                                                                                | License              | Source                                                                                                          |\n|----------------------------------------------------------------------------------------------------------|------------|-------------|---------------------------------------------------------------------------|--------------------------------------------------------------------------------------|----------------------|-----------------------------------------------------------------------------------------------------------------|\n| [IntelliJ IDEA Community Edition](https://www.jetbrains.com/idea/download/download-thanks.html?code=IIC) | Rich       | Java        | Free                                                                      | N/A                                                                                  | Apache 2.0           | [JetBrains/intellij-community](https://github.com/JetBrains/intellij-community)                                 |\n| [IntelliJ IDEA Ultimate Edition](https://www.jetbrains.com/idea/download/download-thanks.html)           | Rich       | Java        | [Subscription](https://www.jetbrains.com/idea/buy/#edition=discounts)     | 30-days                                                                              | Commercial           | N/A                                                                                                             |\n| [AppCode](https://www.jetbrains.com/objc/download/download-thanks.html)                                  | Small      | Objective-C | [Subscription](https://www.jetbrains.com/objc/buy/#edition=discounts)     | 30-days                                                                              | Commercial           | N/A                                                                                                             |\n| [CLion](https://www.jetbrains.com/clion/download/download-thanks.html)                                   | Small      | C/C++       | [Subscription](https://www.jetbrains.com/clion/buy/#edition=discounts)    | 30-days                                                                              | Commercial           | N/A                                                                                                             |\n| [DataGrip](https://www.jetbrains.com/datagrip/download/download-thanks.html)                             | Small      | SQL         | [Subscription](https://www.jetbrains.com/datagrip/buy/#edition=discounts) | 30-days                                                                              | Commercial           | N/A                                                                                                             |\n| [GoLand](https://www.jetbrains.com/go/download/download-thanks.html)                                     | Small      | Go          | [Subscription](https://www.jetbrains.com/goland/buy/#edition=discounts)   | 30-days                                                                              | Commercial           | N/A                                                                                                             |\n| [PHPStorm](https://www.jetbrains.com/phpstorm/download/download-thanks.html)                             | Small      | PHP         | [Subscription](https://www.jetbrains.com/phpstorm/buy/#edition=discounts) | 30-days                                                                              | Commercial           | N/A                                                                                                             |\n| [PyCharm Community Edition](https://www.jetbrains.com/pycharm/download/download-thanks.html?code=PCC)    | Small      | Python      | Free                                                                      | N/A                                                                                  | Apache 2.0           | [JetBrains/intellij-community subdirectory](https://github.com/JetBrains/intellij-community/tree/master/python) |\n| [PyCharm Professional Edition](https://www.jetbrains.com/pycharm/download/download-thanks.html)          | Small      | Python      | [Subscription](https://www.jetbrains.com/pycharm/buy/#edition=discounts)  | N/A                                                                                  | Commercial           | N/A                                                                                                             |\n| [Rider](https://www.jetbrains.com/rider/download/download-thanks.html)                                   | Small      | .NET        | [Subcription](https://www.jetbrains.com/rider/buy/#edition=discounts)     | N/A                                                                                  | Commercial           | N/A                                                                                                             |\n| [RubyMine](https://www.jetbrains.com/ruby/download/download-thanks.html)                                 | Small      | Ruby        | [Subscription](https://www.jetbrains.com/ruby/buy/#edition=discounts)     | 30-days ([90-day for whole team](https://www.jetbrains.com/ruby/buy/#edition=trial)) | Commercial           | N/A                                                                                                             |\n| [WebStorm](https://www.jetbrains.com/webstorm/download/download-thanks.html)                             | Small      | JavaScript  | [Subscription](https://www.jetbrains.com/webstorm/buy/#edition=discounts) | 30-days                                                                              | Commercial           | N/A                                                                                                             |\n\n\nOnce you have your IDE of choice installed, you can [install this plugin](#installation)\n\n## Features\n\n| Feature                                     | [Rich](#ides) | [Small](#ides) | Alternative                                           |\n|---------------------------------------------|---------------|----------------|-------------------------------------------------------|\n| Project                                     | Yes           | No             | 1. Open directory\u003cbr/\u003e2. [Setup the SDK](#small-ides) |\n| Project Structure                           | Automatic     | Manual         |                                                       |\n| Project Settings                            | Yes           | No             |                                                       |\n| Module Settings                             | Yes           | No             |                                                       |\n| New Elixir File                             | Yes           | Yes            |                                                       |\n| Syntax Highlighting and Semantic Annotation | Yes           | Yes            |                                                       |\n| Grammar Parsing                             | Yes           | Yes            |                                                       |\n| Inspections                                 | Yes           | Yes            |                                                       |\n| Quick Fixes                                 | Yes           | Yes            |                                                       |\n| Code Folding                                | Yes           | Yes            |                                                       |\n| Commenter                                   | Yes           | Yes            |                                                       |\n| Debugger                                    | Yes           | Yes            |                                                       |\n| Delimiters                                  | Yes           | Yes            |                                                       |\n| Embedded Elixir (EEx) Templates             | Yes           | Yes            |                                                       |\n| Building/Compiling                          | Yes           | No             | Build/compile as part `mix` run configurations only   |\n| Live Templates                              | Yes           | Yes            |                                                       |\n| Documentation                               | Yes           | Yes            |                                                       |\n| Run Configurations                          | Yes           | Yes            |                                                       |\n| Completion                                  | Yes           | Yes            |                                                       |\n| Decompilation                               | Yes           | Yes            |                                                       |\n| Go To Declaration                           | Yes           | Yes            |                                                       |\n| Formatting                                  | Yes           | Yes            |                                                       |\n| Go To Related                               | Yes           | Yes            |                                                       |\n| Go To Symbol                                | Yes           | Yes            |                                                       |\n| Go To Test                                  | Yes           | Yes            |                                                       |\n| Go To Test Subject                          | Yes           | Yes            |                                                       |\n| Find Usage                                  | Yes           | Yes            |                                                       |\n| Live Embedded Elixir (LEEx) Templates       | Yes           | Yes            |                                                       |\n| Refactor                                    | Yes           | Yes            |                                                       |\n| SDK                                         | Yes           | Yes            |                                                       |\n| Structure                                   | Yes           | Yes            |                                                       |\n\n### Project\n\u003cb\u003e\nNOTE: This feature only works in Rich IDEs as it depends on an extension point unavailable in Small IDEs.  To setup a project in a Small IDE\n\n1. Open Directory of the project\n2. [Setup the SDK](#small-ides)\n\u003c/b\u003e\n\n#### From Existing Sources\n\n##### Import project from external model\nIf you've already created a `mix` project, you can load it as an Elixir project into the plugin.\n\n1. File \u003e New \u003e Project From Existing Sources...\n2. Select the root directory of your project.\n3. Select \"Import project from external model\"\n4. Select Mix\n\n   ![File \u003e New Project \u003e From Existing Sources \u003e Import project from external model \u003e Mix](/screenshots/features/project/from_existing_sources/import_project_from_external_model/Mix.png?raw=true \"Import Mix Project\")\n5. Click Next\n6. Select a Project SDK directory by clicking Configure.\n7. The plugin will automatically find the newest version of Elixir installed. (**NOTE: SDK detection only works for\n   Linux, homebrew installs on OSX, and Windows.  [Open an issue](https://github.com/KronicDeth/intellij-elixir/issues)\n   with information about Elixir install locations on your operating system and package manager to have SDK detection\n   added for it.**)\n8. If the automatic detection doesn't find your Elixir SDK or you want to use an older version, manually select select\n   the directory above the `bin` directory containing `elixir`, `elixirc`, `iex`, and `mix`. (On Windows it is the\n   directory containing `elixir.bat`, `elixirc.bat`, `iex.bat`, and `mix.bat`.)\n9. Click Finish after you select SDK name from the Project SDK list.\n10. The \"Mix project root\" will be filled in with the selected directory.\n11. (Optional) Uncheck \"Fetch dependencies with mix\" if you don't want to run `mix deps.get` when importing the project\n    * If \"Fetch dependencies with mix\" is checked both `mix local.hex --force` and `mix deps.get` will be run.\n12. Click Next\n13. All directories with `mix.exs` files will be selected as \"Mix projects to import\".  To import just the main project and not its dependencies, click Unselect All.\n14. Check the box next to the project root to use only its `mix.exs`.  (It will likely be the first checkbox at the top.)\n15. Click Finish\n\n##### Create project from existing sources\nIf you've already created a (non-`mix`) project, you can load it as an Elixir project into the plugin.\n\n1. File \u003e New \u003e Project From Existing Sources...\n2. Select the root directory of your project.\n3. Leave the default selection, \"Create project from existing sources\"\n4. Click Next\n5. Project name will be filled with the basename of the root directory.  Customize it if you like.\n6. Project location will be the root directory.\n7. Click Next.\n8. If you previously opened the directory in IntelliJ or another JetBrains IDE, you'll be prompted to overwrite the\n   .idea directory.  Click Yes.\n9. You'll be prompted with a list of detected Elixir project roots to add to the project.  Each root contains a\n   `mix.exs`.  Uncheck any project roots that you don't want added.\n10. Click Next.\n11. Select a Project SDK directory by clicking Configure.\n12. The plugin will automatically find the newest version of Elixir installed. (**NOTE: SDK detection only works for\n    Linux, homebrew installs on OSX, and Windows.  [Open an issue](https://github.com/KronicDeth/intellij-elixir/issues)\n    with information about Elixir install locations on your operating system and package manager to have SDK detection\n    added for it.**)\n13. If the automatic detection doesn't find your Elixir SDK or you want to use an older version, manually select select\n    the directory above the `bin` directory containing `elixir`, `elixirc`, `iex`, and `mix`.\n14. Click Next after you select SDK name from the Project SDK list.\n15. Click Finish on the framework page.  (*No framework detection is implemented yet for Elixir.*)\n16. Choose whether to open in a New Window or in This Window.\n\n#### New\n\nIf you want to create a basic (non-`mix`) Elixir project with a `lib` directory, perform the following steps.\n\n1. File \u003e New \u003e Project\n\n   ![File \u003e New \u003e Project](/screenshots/features/project/New.png?raw=true \"New Project\")\n2. Select Elixir from the project type menu on the left\n3. Click Next\n\n   ![File \u003e New \u003e Project \u003e Elixir](/screenshots/features/project/new/Elixir.png?raw=true \"New Elixir Project\")\n4. Select a Project SDK directory by clicking Configure.\n\n   ![Project SDK](/screenshots/features/project/SDK.png?raw=true \"Project SDK\")\n5. Select a Project SDK directory by clicking Configure.\n6. The plugin will automatically find the newest version of Elixir installed.\n   * macOS / OSX\n     * Homebrew (`/usr/local/Cellar/elixir`)\n     * Nix (`/nix/store`)\n   * Linux\n     * `/usr/local/lib/elixir`\n     * Nix and NixOS (`/nix/store`)\n   * Windows\n     * 32-bit (`C:\\Program Files\\Elixir`)\n     * 64-bit (`C:\\Program Files (x86)\\Elixir`)\n     * (**NOTE: SDK detection only works for [Open an issue](https://github.com/KronicDeth/intellij-elixir/issues) with information about Elixir install locations on your operating system and package manager to have SDK detection added for it.**)\n7. If the automatic detection doesn't find your Elixir SDK or you want to use an older version, manually select select the directory above the `bin` directory containing `elixir`, `elixirc`, `iex`, and `mix`.  If the `bin`, `lib,` or `src` directory is incorrectly selected, it will be corrected to the parent directory.\n8. Click Next after you select SDK name from the Project SDK list.\n9. Change the `Project name` to the name your want for the project\n   ![File \u003e New \u003e Project \u003e Settings](/screenshots/features/project/new/Settings.png?raw=true \"New Elixir Project Settings\")\n10. (Optionally) change the `Project location` if the directory does not match what you want\n11. (Optionally) expand `More Settings` to change the `Module name`, `Content root`, `Module file location`, and/or `Project format`.  The defaults derived from the `Project name` and `Project location` should work for most projects.\n12. Click Finish\n13. Choose whether to open in a New Window or in This Window.\n    ![File \u003e New \u003e Project \u003e Window](/screenshots/features/project/new/Settings.png?raw=true \"Open Project in New Window or This Window\")\n\n### Project Structure\n\n![Project View](/screenshots/Project%20View.png?raw=true \"Project View\")\n\n* Excluded\n  * `_build` (Output from `mix`)\n  * `rel` (Output from `exrm`)\n* Sources\n  * `lib`\n* Test Sources\n  * `test`\n\n### Project Settings\n\n![Project Settings](/screenshots/project_settings/Project.png?raw=true \"Project Settings\")\n\nThe Project Settings include\n* Project Name\n* Project SDK\n\n#### SDK Setup Known Limitations\n\nWhen setting up Elixir and Erlang SDKs for the first time:\n\n* **Setup SDKs before importing your Elixir project**\n* **Auto-detect SDKs**: The plugin will attempt to automatically detect the SDKs based on the currently open project directory, not the directory that you are importing. To setup SDKs on a WSL instance, open any project, or even an empty directory in WSL first.\n* **Click OK directly** after configuring Erlang, then reopen the Project Structure dialog to configure Elixir - this will properly save all settings\n* **Avoid clicking Apply then OK** - this workflow has a known issue where the project SDK may not be saved correctly\n\n### Windows Subsystem for Linux (WSL) Support\n\nThe plugin supports running Elixir, Mix, and IEx commands within WSL. This includes:\n\n* **Run Configurations**: All Mix, ExUnit, ESpec, Elixir, and IEx run configurations are fully compatible with WSL.\n* **External Tools**: background tools like Credo inspections, Dialyzer, Mix Format, and the New Project Wizard automatically use WSL when your project is located on a WSL partition.\n* **Path Conversion**: Windows UNC paths (e.g., `\\\\wsl$\\Ubuntu\\...`) and Windows drive paths are automatically converted to POSIX paths when executing commands in WSL.\n\n#### WSL Limitations\n\n* **New Project Wizard**: SDK selection is based on the location of the currently open project, not the new project. To select a WSL based SDK during the New Project Wizard, open any WSL project or directory in the IDE first. \n* **SDKs and Project must all be on the same WSL Distribution**: You cannot use a WSL based SDK with a non-WSL project, and vice versa. You can use the `/mnt/c` drive to access Windows files from WSL, but the performance is terrible. \n* **Build system (Ctrl+F9)**: The IDE build system only works when the **Project SDK** is set to a **JDK 21+** in the same WSL distribution, and all **Module SDKs** are set to the correct **Elixir SDK**.\n* **Performance**: Running the IDE in Windows with a WSL project is slower than running the IDE directly in the WSL instance. This is a limitation of the IDE, not specific to the Elixir plugin.  \n\n### Module Settings\n\n#### Sources\n\n![Module Settings \u003e Sources](/screenshots/project_settings/module/Sources.png?raw=true \"Module Sources\")\n\nThe Module Settings include Marking directories as\n* Excluded\n* Sources\n* Tests\n\n#### Paths\n\n![Module Settings \u003e Paths](/screenshots/project_settings/module/Paths.png?raw=true \"Module Paths\")\n\nModule paths list the output directories when compiling code in the module.  There is a an \"Output path\" for `dev`\n`MIX_ENV` and \"Test output path\" for the `test` `MIX_ENV`.\n\n#### Dependencies\n\n![Module Settings \u003e Dependencies](/screenshots/project_settings/module/Dependencies.png?raw=true \"Module Dependencies\")\n\nModule dependencies are currently just the SDK and the sources for the module.  Dependencies in `deps` are not\nautomatically detected at this time.\n\n### New Elixir File\n\n1. Right-click a directory (such as `lib` or `test` in the standard `mix new` layout)\n2. Select New \u003e Elixir File.\n\n   ![New \u003e Elixir File](/screenshots/features/new/Elixir%20File.png?raw=true \"New Elixir File\")\n3. Enter an Alias for the Module name, such as `MyModule` or `MyNamespace.MyModule`.\n4. Select a Kind of Elixir File to use a different template.\n\n   ![New \u003e Elixir File \u003e Kind](/screenshots/features/new/elixir_file/Kind.png?raw=true \"New Elixir File Kind\")\n\n#### Empty module\n\nAn underscored file will be created in an underscored directory `lib/my_namespace/my_module.ex`) with the given module\nname with be created:\n\n```elixir\ndefmodule MyNamespace.MyModule do\n  @moduledoc false\n\nend\n```\n\n#### Elixir Application\n\nAn underscored file will be created in an underscored directory `lib/my_namespace/my_module.ex`) with the given module\nname with be created. It will have a `start/2` function that calls `MyNamespace.MyModule.Supervisor.start_link/0`.\n\n```elixir\ndefmodule MyNamespace.MyModule do\n  @moduledoc false\n\n  use Application\n\n  def start(_type, _args) do\n    MyNamespace.MyModule.Supervisor.start_link()\n  end\nend\n```\n\n#### Elixir Supervisor\n\nAn underscored file will be created in an underscored directory `lib/my_namespace/my_module.ex`) with the given module\nname with be created. It will have a `start_link/1` function that calls `Supervisor.start_link/0` and `init/1` that sets\nup the child specs.  It assumes a `MyWorker` child that should be supervised `:one_for_one`.\n\n```elixir\ndefmodule MyNamespace.MyModule.Supervisor do\n  @moduledoc false\n\n  use Supervisor\n\n  def start_link(arg) do\n    Supervisor.start_link(__MODULE__, arg)\n  end\n\n  def init(arg) do\n    children = [\n      worker(MyWorker, [arg], restart: :temporary)\n    ]\n\n    supervise(children, strategy: :one_for_one)\n  end\nend\n```\n\n#### Elixir GenServer\n\nAn underscored file will be created in an underscored directory `lib/my_namespace/my_module.ex`) with the given module\nname with be created. It will have a `start_link/2` function that calls `GenServer.start_link/3` and the minimal\ncallback implementations for `init/1`, `handle_call/3`, and `handle_cast/2`.\n\nThe Elixir `use GenServer` supplies these callbacks, so this template is for when you want to change the callbacks, but\nwould like the stubs to get started without having to look them up in the documentation.\n\n```elixir\ndefmodule MyNamespace.MyModule do\n  @moduledoc false\n\n  use GenServer\n\n  def start_link(state, opts) do\n    GenServer.start_link(__MODULE__, state, opts)\n  end\n\n  def init(_opts) do\n    {:ok, %{}}\n  end\n\n  def handle_call(_msg, _from, state) do\n    {:reply, :ok, state}\n  end\n\n  def handle_cast(_msg, state) do\n    {:noreply, state}\n  end\nend\n```\n\n#### Elixir GenEvent\n\nAn underscored file will be created in an underscored directory `lib/my_namespace/my_module.ex`) with the given module\nname with be created.  The minimal callback implementations for `init/1`, `handle_event/2`, and `handle_call/2`,\n`handle_info/2`.\n\nThe Elixir `use GenEvent` supplies these callbacks, so this template is for when you want to change the callbacks, but\nwould like the stubs to get started without having to look them up in the documentation.\n\n```elixir\ndefmodule MyNamespace.MyModule do\n  @moduledoc false\n\n  use GenEvent\n\n  # Callbacks\n\n  def init(_opts) do\n    {:ok, %{}}\n  end\n\n  def handle_event(_msg, state) do\n    {:ok, state}\n  end\n\n  def handle_call(_msg, state) do\n    {:ok, :ok, state}\n  end\n\n  def handle_info(_msg, state) do\n    {:ok, state}\n  end\nend\n```\n\n### Syntax Highlighting and Semantic Annotation\n\nSyntax highlighting of lexer tokens and semantic annotating of parser elements can be customized in in the Color Settings page for Elixir (Preferences \u003e Editor \u003e Color \u0026 Fonts \u003e Elixir).\n\n\u003ctable\u003e\n  \u003cthead\u003e\n    \u003ctr\u003e\n      \u003cth colspan=\"3\" rowspan=\"2\"\u003eText Attribute Key Display Name\u003c/th\u003e\n      \u003cth rowspan=\"2\"\u003eTokens/Elements\u003c/th\u003e\n      \u003cth colspan=\"2\"\u003eScheme\u003c/th\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003eDefault\u003c/th\u003e\n      \u003cth\u003eDarcula\u003c/th\u003e\n    \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003ctd\u003eAlias\u003c/td\u003e\n      \u003ctd\u003e\u003c/td\u003e\n      \u003ctd\u003e\u003c/td\u003e\n      \u003ctd\u003e\u003ccode\u003eString\u003c/code\u003e\u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg alt=\"Alias color scheme in default theme\" src=\"screenshots/preferences/editor/colors_and_fonts/default/Alias.png?raw=true\"/\u003e\n      \u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg alt=\"Alias color scheme in Darcula theme\" src=\"screenshots/preferences/editor/colors_and_fonts/darcula/Alias.png?raw=true\"/\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003eAtom\u003c/td\u003e\n      \u003ctd\u003e\u003c/td\u003e\n      \u003ctd\u003e\u003c/td\u003e\n      \u003ctd\u003e\n        \u003cul\u003e\n          \u003cli\u003e\u003ccode\u003e:one\u003c/code\u003e\u003c/li\u003e\n          \u003cli\u003e\u003ccode\u003e\u0026lt;\u0026lt;\u0026gt;\u0026gt;:\u003c/code\u003e\u003c/li\u003e\n        \u003c/ul\u003e\n      \u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg alt=\"Atom color scheme in default theme\" src=\"screenshots/preferences/editor/colors_and_fonts/default/Atom.png?raw=true\"/\u003e\n      \u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg alt=\"Atom color scheme in Darcula theme\" src=\"screenshots/preferences/editor/colors_and_fonts/darcula/Atom.png?raw=true\"/\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003eBraces and Operators\u003c/td\u003e\n      \u003ctd\u003eBit\u003c/td\u003e\n      \u003ctd\u003e\u003c/td\u003e\n      \u003ctd\u003e\n        \u003cul\u003e\n          \u003cli\u003e\u003ccode\u003e\u0026lt;\u0026lt;\u003c/code\u003e\u003c/li\u003e\n          \u003cli\u003e\u003ccode\u003e\u0026gt;\u0026gt\u003c/code\u003e\u003c/li\u003e\n        \u003c/ul\u003e\n      \u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg alt=\"Bit operator color scheme in default theme\" src=\"screenshots/preferences/editor/colors_and_fonts/default/Braces%20and%20Operators/Bit.png?raw=true\"/\u003e\n      \u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg alt=\"Bit operator color scheme in Darcula theme\" src=\"screenshots/preferences/editor/colors_and_fonts/darcula/Braces%20and%20Operators/Bit.png?raw=true\"/\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003eBraces and Operators\u003c/td\u003e\n      \u003ctd\u003eBraces\u003c/td\u003e\n      \u003ctd\u003e\u003c/td\u003e\n      \u003ctd\u003e\n        \u003cul\u003e\n          \u003cli\u003e\u003ccode\u003e{\u003c/code\u003e\u003c/li\u003e\n          \u003cli\u003e\u003ccode\u003e}\u003c/code\u003e\u003c/li\u003e\n        \u003c/ul\u003e\n      \u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg alt=\"Braces color scheme in default theme\" src=\"screenshots/preferences/editor/colors_and_fonts/default/Braces%20and%20Operators/Braces.png?raw=true\"/\u003e\n      \u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg alt=\"Braces color scheme in Darcula theme\" src=\"screenshots/preferences/editor/colors_and_fonts/darcula/Braces%20and%20Operators/Braces.png?raw=true\"/\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003eBraces and Operators\u003c/td\u003e\n      \u003ctd\u003eBrackets\u003c/td\u003e\n      \u003ctd\u003e\u003c/td\u003e\n      \u003ctd\u003e\n        \u003cul\u003e\n          \u003cli\u003e\u003ccode\u003e[\u003c/code\u003e\u003c/li\u003e\n          \u003cli\u003e\u003ccode\u003e]\u003c/code\u003e\u003c/li\u003e\n        \u003c/ul\u003e\n      \u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg alt=\"Brackets color scheme in default theme\" src=\"screenshots/preferences/editor/colors_and_fonts/default/Braces%20and%20Operators/Brackets.png?raw=true\"/\u003e\n      \u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg alt=\"Brackets color scheme in Darcula theme\" src=\"screenshots/preferences/editor/colors_and_fonts/darcula/Braces%20and%20Operators/Brackets.png?raw=true\"/\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003eBraces and Operators\u003c/td\u003e\n      \u003ctd\u003eCharacter Token\u003c/td\u003e\n      \u003ctd\u003e\u003c/td\u003e\n      \u003ctd\u003e\u003ccode\u003e?\u003c/code\u003e\u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg alt=\"Character Token color scheme in default theme\" src=\"screenshots/preferences/editor/colors_and_fonts/default/Braces%20and%20Operators/Character%20Token.png?raw=true\"/\u003e\n      \u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg alt=\"Character Token color scheme in Darcula theme\" src=\"screenshots/preferences/editor/colors_and_fonts/darcula/Braces%20and%20Operators/Character%20Token.png?raw=true\"/\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003eBraces and Operators\u003c/td\u003e\n      \u003ctd\u003eComma\u003c/td\u003e\n      \u003ctd\u003e\u003c/td\u003e\n      \u003ctd\u003e\u003ccode\u003e,\u003c/code\u003e\u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg alt=\"Comma color scheme in default theme\" src=\"screenshots/preferences/editor/colors_and_fonts/default/Braces%20and%20Operators/Comma.png?raw=true\"/\u003e\n      \u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg alt=\"Comma color scheme in Darcula theme\" src=\"screenshots/preferences/editor/colors_and_fonts/darcula/Braces%20and%20Operators/Comma.png?raw=true\"/\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003eBraces and Operators\u003c/td\u003e\n      \u003ctd\u003eDot\u003c/td\u003e\n      \u003ctd\u003e\u003c/td\u003e\n      \u003ctd\u003e\u003ccode\u003e.\u003c/code\u003e\u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg alt=\"Dot operator color scheme in default theme\" src=\"screenshots/preferences/editor/colors_and_fonts/default/Braces%20and%20Operators/Dot.png?raw=true\"/\u003e\n      \u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg alt=\"Dot operator color scheme in Darcula theme\" src=\"screenshots/preferences/editor/colors_and_fonts/darcula/Braces%20and%20Operators/Dot.png?raw=true\"/\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003eBraces and Operators\u003c/td\u003e\n      \u003ctd\u003eInterpolation\u003c/td\u003e\n      \u003ctd\u003e\u003c/td\u003e\n      \u003ctd\u003e\n        \u003cul\u003e\n          \u003cli\u003e\u003ccode\u003e#{\u003c/code\u003e\u003c/li\u003e\n          \u003cli\u003e\u003ccode\u003e}\u003c/code\u003e\u003c/li\u003e\n        \u003c/ul\u003e\n      \u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg alt=\"Interpolation color scheme in default theme\" src=\"screenshots/preferences/editor/colors_and_fonts/default/Braces%20and%20Operators/Interpolation.png?raw=true\"/\u003e\n      \u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg alt=\"Interpolation color scheme in Darcula theme\" src=\"screenshots/preferences/editor/colors_and_fonts/darcula/Braces%20and%20Operators/Interpolation.png?raw=true\"/\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003eBraces and Operators\u003c/td\u003e\n      \u003ctd\u003eMaps and Structs\u003c/td\u003e\n      \u003ctd\u003eMaps\u003c/td\u003e\n      \u003ctd\u003e\n        \u003cul\u003e\n          \u003cli\u003e\u003ccode\u003e%{\u003c/code\u003e\u003c/li\u003e\n          \u003cli\u003e\u003ccode\u003e}\u003c/code\u003e\u003c/li\u003e\n        \u003c/ul\u003e\n      \u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg alt=\"Maps color scheme in default theme\" src=\"screenshots/preferences/editor/colors_and_fonts/default/Braces%20and%20Operators/Maps%20and%20Structs/Maps.png?raw=true\"/\u003e\n      \u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg alt=\"Maps color scheme in Darcula theme\" src=\"screenshots/preferences/editor/colors_and_fonts/darcula/Braces%20and%20Operators/Maps%20and%20Structs/Maps.png?raw=true\"/\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003eBraces and Operators\u003c/td\u003e\n      \u003ctd\u003eMaps and Structs\u003c/td\u003e\n      \u003ctd\u003eMaps\u003c/td\u003e\n      \u003ctd\u003e\n        \u003cul\u003e\n          \u003cli\u003e\u003ccode\u003e%\u003c/code\u003e\u003c/li\u003e\n          \u003cli\u003e\u003ccode\u003e{\u003c/code\u003e\u003c/li\u003e\n          \u003cli\u003e\u003ccode\u003e}\u003c/code\u003e\u003c/li\u003e\n        \u003c/ul\u003e\u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg alt=\"Structs color scheme in default theme\" src=\"screenshots/preferences/editor/colors_and_fonts/default/Braces%20and%20Operators/Maps%20and%20Structs/Structs.png?raw=true\"/\u003e\n      \u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg alt=\"Structs color scheme in Darcula theme\" src=\"screenshots/preferences/editor/colors_and_fonts/darcula/Braces%20and%20Operators/Maps%20and%20Structs/Structs.png?raw=true\"/\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003eBraces and Operators\u003c/td\u003e\n      \u003ctd\u003eOperation Sign\u003c/td\u003e\n      \u003ctd\u003e\u003c/td\u003e\n      \u003ctd\u003e\n        \u003cul\u003e\n          \u003cli\u003e\u003ccode\u003e=\u003c/code\u003e\u003c/li\u003e\n          \u003cli\u003e\u003ccode\u003e+\u003c/code\u003e\u003c/li\u003e\n          \u003cli\u003e\u003ccode\u003e*\u003c/code\u003e\u003c/li\u003e\n          \u003cli\u003e\u003ccode\u003e==\u003c/code\u003e\u003c/li\u003e\n          \u003cli\u003e\u003ccode\u003e!\u003c/code\u003e\u003c/li\u003e\n          \u003cli\u003e\u003ccode\u003e\u0026\u0026\u003c/code\u003e\u003c/li\u003e\n          \u003cli\u003e\u003ccode\u003e||\u003c/code\u003e\u003c/li\u003e\n          \u003cli\u003e\u003ccode\u003e|\u0026gt;\u003c/code\u003e\u003c/li\u003e\n          \u003cli\u003e\u003ccode\u003e^\u003c/code\u003e\u003c/li\u003e\n        \u003c/ul\u003e\n      \u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg alt=\"Operation Sign color scheme in default theme\" src=\"screenshots/preferences/editor/colors_and_fonts/default/Braces%20and%20Operators/Operation%20Sign.png?raw=true\"/\u003e\n      \u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg alt=\"Operation Sign color scheme in Darcula theme\" src=\"screenshots/preferences/editor/colors_and_fonts/darcula/Braces%20and%20Operators/Operation%20Sign.png?raw=true\"/\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003eBraces and Operators\u003c/td\u003e\n      \u003ctd\u003eParentheses\u003c/td\u003e\n      \u003ctd\u003e\u003c/td\u003e\n      \u003ctd\u003e\n        \u003cul\u003e\n          \u003cli\u003e\u003ccode\u003e(\u003c/code\u003e\u003c/li\u003e\n          \u003cli\u003e\u003ccode\u003e)\u003c/code\u003e\u003c/li\u003e\n        \u003c/ul\u003e\n      \u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg alt=\"Parentheses color scheme in default theme\" src=\"screenshots/preferences/editor/colors_and_fonts/default/Braces%20and%20Operators/Parentheses.png?raw=true\"/\u003e\n      \u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg alt=\"Parentheses color scheme in Darcula theme\" src=\"screenshots/preferences/editor/colors_and_fonts/darcula/Braces%20and%20Operators/Parentheses.png?raw=true\"/\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003eBraces and Operators\u003c/td\u003e\n      \u003ctd\u003eSemicolon\u003c/td\u003e\n      \u003ctd\u003e\u003c/td\u003e\n      \u003ctd\u003e\u003ccode\u003e;\u003c/code\u003e\u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg alt=\"Semicolon color scheme in default theme\" src=\"screenshots/preferences/editor/colors_and_fonts/default/Braces%20and%20Operators/Semicolon.png?raw=true\"/\u003e\n      \u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg alt=\"Semicolon color scheme in Darcula theme\" src=\"screenshots/preferences/editor/colors_and_fonts/darcula/Braces%20and%20Operators/Semicolon.png?raw=true\"/\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003eCalls\u003c/td\u003e\n      \u003ctd\u003eFunction\u003c/td\u003e\n      \u003ctd\u003e\u003c/td\u003e\n      \u003ctd\u003e\u003ccode\u003einspect\u003c/code\u003e\u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg alt=\"Function call color scheme in default theme\" src=\"screenshots/preferences/editor/colors_and_fonts/default/Calls/Function.png?raw=true\"/\u003e*Only the Italic attribute\n      \u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg alt=\"Function call color scheme in Darcula theme\" src=\"screenshots/preferences/editor/colors_and_fonts/darcula/Calls/Function.png?raw=true\"/\u003e*Only the Italic attribute\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003eCalls\u003c/td\u003e\n      \u003ctd\u003eMacro\u003c/td\u003e\n      \u003ctd\u003e\u003c/td\u003e\n      \u003ctd\u003e\u003ccode\u003einspect\u003c/code\u003e\u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg alt=\"Macro call color scheme in default theme\" src=\"screenshots/preferences/editor/colors_and_fonts/default/Calls/Macro.png?raw=true\"/\u003e*Only the Bold and Italic attributes\n      \u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg alt=\"Macro call color scheme in Darcula theme\" src=\"screenshots/preferences/editor/colors_and_fonts/darcula/Calls/Macro.png?raw=true\"/\u003e*Only the Bold and Italic attributes\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003eCalls\u003c/td\u003e\n      \u003ctd\u003ePredefined\u003c/td\u003e\n      \u003ctd\u003e\u003c/td\u003e\n      \u003ctd\u003e\n        \u003cul\u003e\n          \u003cli\u003e\n            \u003ccode\u003eKernel\u003c/code\u003e\n            \u003cul\u003e\n              \u003cli\u003efunctions\u003c/li\u003e\n              \u003cli\u003emacros\u003c/li\u003e\n            \u003c/ul\u003e\n          \u003c/li\u003e\n          \u003cli\u003e\n            \u003ccode\u003eKernel.SpecialForms\u003c/code\u003e\n            \u003cul\u003e\n              \u003cli\u003emacros\u003c/li\u003e\n            \u003c/ul\u003e\n          \u003c/li\u003e\n        \u003c/ul\u003e\n      \u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg alt=\"Predefined call color scheme in default theme\" src=\"screenshots/preferences/editor/colors_and_fonts/default/Calls/Predefined.png?raw=true\"/\u003e*Only the Foreground attribute\n      \u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg alt=\"Predefined call color scheme in Darcula theme\" src=\"screenshots/preferences/editor/colors_and_fonts/darcula/Calls/Predefined.png?raw=true\"/\u003e*Only the Foreground attribute\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003eComment\u003c/td\u003e\n      \u003ctd\u003e\u003c/td\u003e\n      \u003ctd\u003e\u003c/td\u003e\n      \u003ctd\u003e\u003ccode\u003e# Numbers\u003c/code\u003e\u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg alt=\"Comment color scheme in default theme\" src=\"screenshots/preferences/editor/colors_and_fonts/default/Comment.png?raw=true\"/\u003e\n      \u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg alt=\"Comment color scheme in Darcula theme\" src=\"screenshots/preferences/editor/colors_and_fonts/darcula/Comment.png?raw=true\"/\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003eKeywords\u003c/td\u003e\n      \u003ctd\u003e\u003c/td\u003e\n      \u003ctd\u003e\u003c/td\u003e\n      \u003ctd\u003e\u003ccode\u003eend\u003c/code\u003e\u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg alt=\"Keywords color scheme in default theme\" src=\"screenshots/preferences/editor/colors_and_fonts/default/Keywords.png?raw=true\"/\u003e\n      \u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg alt=\"Keywords color scheme in Darcula theme\" src=\"screenshots/preferences/editor/colors_and_fonts/darcula/Keywords.png?raw=true\"/\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003eModule Attributes\u003c/td\u003e\n      \u003ctd\u003e\u003c/td\u003e\n      \u003ctd\u003e\u003c/td\u003e\n      \u003ctd\u003e\u003ccode\u003e@custom_attr\u003c/code\u003e\u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg alt=\"Module Attributes color scheme in default theme\" src=\"screenshots/preferences/editor/colors_and_fonts/default/Module%20Attributes.png?raw=true\"/\u003e\n      \u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg alt=\"Module Attributes color scheme in Darcula theme\" src=\"screenshots/preferences/editor/colors_and_fonts/darcula/Module%20Attributes.png?raw=true\"/\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003eModule Attributes\u003c/td\u003e\n      \u003ctd\u003eDocumentation\u003c/td\u003e\n      \u003ctd\u003e\u003c/td\u003e\n      \u003ctd\u003e\u003ccode\u003e@doc\u003c/code\u003e\u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg alt=\"Documentation attribute color scheme in default theme\" src=\"screenshots/preferences/editor/colors_and_fonts/default/Module%20Attributes/Documentation.png?raw=true\"/\u003e\n      \u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg alt=\"Documentation attribute color scheme in Darcula theme\" src=\"screenshots/preferences/editor/colors_and_fonts/darcula/Module%20Attributes/Documentation.png?raw=true\"/\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003eModule Attributes\u003c/td\u003e\n      \u003ctd\u003eDocumentation\u003c/td\u003e\n      \u003ctd\u003eText\u003c/td\u003e\n      \u003ctd\u003e\u003ccode\u003eSimple module docstring\u003c/code\u003e\u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg alt=\"Documentation text color scheme in default theme\" src=\"screenshots/preferences/editor/colors_and_fonts/default/Module%20Attributes/Documentation/Text.png?raw=true\"/\u003e\n      \u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg alt=\"Documentation text color scheme in Darcula theme\" src=\"screenshots/preferences/editor/colors_and_fonts/darcula/Module%20Attributes/Documentation/Text.png?raw=true\"/\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003eModule Attributes\u003c/td\u003e\n      \u003ctd\u003eTypes\u003c/td\u003e\n      \u003ctd\u003eCallback\u003c/td\u003e\n      \u003ctd\u003e\u003ccode\u003efunc\u003c/code\u003e\u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg alt=\"Callback type color scheme in default theme\" src=\"screenshots/preferences/editor/colors_and_fonts/default/Module%20Attributes/Types/Callback.png?raw=true\"/\u003e\n      \u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg alt=\"Callback type color scheme in Darcula theme\" src=\"screenshots/preferences/editor/colors_and_fonts/darcula/Module%20Attributes/Types/Callback.png?raw=true\"/\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003eModule Attributes\u003c/td\u003e\n      \u003ctd\u003eTypes\u003c/td\u003e\n      \u003ctd\u003eSpecification\u003c/td\u003e\n      \u003ctd\u003e\u003ccode\u003efunc\u003c/code\u003e\u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg alt=\"Specification type color scheme in default theme\" src=\"screenshots/preferences/editor/colors_and_fonts/default/Module%20Attributes/Types/Specification.png?raw=true\"/\u003e\n      \u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg alt=\"Specification type color scheme in Darcula theme\" src=\"screenshots/preferences/editor/colors_and_fonts/darcula/Module%20Attributes/Types/Specification.png?raw=true\"/\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003eModule Attributes\u003c/td\u003e\n      \u003ctd\u003eTypes\u003c/td\u003e\n      \u003ctd\u003eType\u003c/td\u003e\n      \u003ctd\u003e\u003ccode\u003eparameterized\u003c/code\u003e\u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg alt=\"Type definition color scheme in default theme\" src=\"screenshots/preferences/editor/colors_and_fonts/default/Module%20Attributes/Types/Type.png?raw=true\"/\u003e\n      \u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg alt=\"Type definition color scheme in Darcula theme\" src=\"screenshots/preferences/editor/colors_and_fonts/darcula/Module%20Attributes/Types/Type.png?raw=true\"/\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003eModule Attributes\u003c/td\u003e\n      \u003ctd\u003eTypes\u003c/td\u003e\n      \u003ctd\u003eType Parameter\u003c/td\u003e\n      \u003ctd\u003e\u003ccode\u003etype_parameter\u003c/code\u003e\u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg alt=\"Type Parameter color scheme in default theme\" src=\"screenshots/preferences/editor/colors_and_fonts/default/Module%20Attributes/Types/Type%20Parameter.png?raw=true\"/\u003e\n      \u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg alt=\"Type Parameter color scheme in Darcula theme\" src=\"screenshots/preferences/editor/colors_and_fonts/darcula/Module%20Attributes/Types/Type%20Parameter.png?raw=true\"/\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003eNumbers\u003c/td\u003e\n      \u003ctd\u003eBase Prefix\u003c/td\u003e\n      \u003ctd\u003eNon-Decimal\u003c/td\u003e\n      \u003ctd\u003e\n        \u003cul\u003e\n          \u003cli\u003e\u003ccode\u003e0b\u003c/code\u003e\u003c/li\u003e\n          \u003cli\u003e\u003ccode\u003e0x\u003c/code\u003e\u003c/li\u003e\n          \u003cli\u003e\u003ccode\u003e0o\u003c/code\u003e\u003c/li\u003e\n        \u003c/ul\u003e\n      \u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg alt=\"Non-Decimal base prefix color scheme in default theme\" src=\"screenshots/preferences/editor/colors_and_fonts/default/Numbers/Base%20Prefix/Non-Decimal.png?raw=true\"/\u003e\n      \u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg alt=\"Non-Decimal base prefix color scheme in Darcula theme\" src=\"screenshots/preferences/editor/colors_and_fonts/darcula/Numbers/Base%20Prefix/Non-Decimal.png?raw=true\"/\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003eNumbers\u003c/td\u003e\n      \u003ctd\u003eBase Prefix\u003c/td\u003e\n      \u003ctd\u003eObsolete Non-Decimal\u003c/td\u003e\n      \u003ctd\u003e\n        \u003cul\u003e\n          \u003cli\u003e\u003ccode\u003e0B\u003c/code\u003e\u003c/li\u003e\n          \u003cli\u003e\u003ccode\u003e0X\u003c/code\u003e\u003c/li\u003e\n        \u003c/ul\u003e\n      \u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg alt=\"Obsolete Non-Decimal base prefix color scheme in default theme\" src=\"screenshots/preferences/editor/colors_and_fonts/default/Numbers/Base%20Prefix/Obsolete%20Non-Decimal.png?raw=true\"/\u003e\n      \u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg alt=\"Obsolete Non-Decimal base prefix color scheme in Darcula theme\" src=\"screenshots/preferences/editor/colors_and_fonts/darcula/Numbers/Base%20Prefix/Obsolete%20Non-Decimal.png?raw=true\"/\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003eNumbers\u003c/td\u003e\n      \u003ctd\u003eDecimal Exponent, Mark, and Separator\u003c/td\u003e\n      \u003ctd\u003e\u003c/td\u003e\n      \u003ctd\u003e\n        \u003cul\u003e\n          \u003cli\u003e\u003ccode\u003ee\u003c/code\u003e\u003c/li\u003e\n          \u003cli\u003e\u003ccode\u003e.\u003c/code\u003e\u003c/li\u003e\n          \u003cli\u003e\u003ccode\u003e_\u003c/code\u003e\u003c/li\u003e\n        \u003c/ul\u003e\n      \u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg alt=\"Decimal Exponent, Mark, and Separator color scheme in default theme\" src=\"screenshots/preferences/editor/colors_and_fonts/default/Numbers/Decimal%20Exponent%2C%20Mark%2C%20and%20Separator.png?raw=true\"/\u003e\n      \u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg alt=\"Decimal Exponent, Mark, and Separator color scheme in Darcula theme\" src=\"screenshots/preferences/editor/colors_and_fonts/darcula/Numbers/Decimal%20Exponent%2C%20Mark%2C%20and%20Separator.png?raw=true\"/\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003eNumbers\u003c/td\u003e\n      \u003ctd\u003eDigits\u003c/td\u003e\n      \u003ctd\u003eInvalid\u003c/td\u003e\n      \u003ctd\u003e\n        \u003cul\u003e\n          \u003cli\u003e\u003ccode\u003e2\u003c/code\u003e\u003c/li\u003e\n          \u003cli\u003e\u003ccode\u003eo\u003c/code\u003e\u003c/li\u003e\n          \u003cli\u003e\u003ccode\u003er\u003c/code\u003e\u003c/li\u003e\n          \u003cli\u003e\u003ccode\u003e888\u003c/code\u003e\u003c/li\u003e\n        \u003c/ul\u003e\n      \u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg alt=\"Invalid digits color scheme in default theme\" src=\"screenshots/preferences/editor/colors_and_fonts/default/Numbers/Digits/Invalid.png?raw=true\"/\u003e\n      \u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg alt=\"Invalid digits color scheme in Darcula theme\" src=\"screenshots/preferences/editor/colors_and_fonts/darcula/Numbers/Digits/Invalid.png?raw=true\"/\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003eNumbers\u003c/td\u003e\n      \u003ctd\u003eDigits\u003c/td\u003e\n      \u003ctd\u003eValid\u003c/td\u003e\n      \u003ctd\u003e\n        \u003cul\u003e\n          \u003cli\u003e\u003ccode\u003e1234\u003c/code\u003e\u003c/li\u003e\n          \u003cli\u003e\u003ccode\u003e1A\u003c/code\u003e\u003c/li\u003e\n          \u003cli\u003e\u003ccode\u003ebeef\u003c/code\u003e\u003c/li\u003e\n          \u003cli\u003e\u003ccode\u003e123\u003c/code\u003e\u003c/li\u003e\n        \u003c/ul\u003e\n      \u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg alt=\"Valid digits color scheme in default theme\" src=\"screenshots/preferences/editor/colors_and_fonts/default/Numbers/Digits/Valid.png?raw=true\"/\u003e\n      \u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg alt=\"Valid digits color scheme in Darcula theme\" src=\"screenshots/preferences/editor/colors_and_fonts/darcula/Numbers/Digits/Valid.png?raw=true\"/\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003eTextual\u003c/td\u003e\n      \u003ctd\u003eCharacter List\u003c/td\u003e\n      \u003ctd\u003e\u003c/td\u003e\n      \u003ctd\u003e\n        \u003ccode\u003e'This is a list'\u003c/code\u003e\n      \u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg alt=\"Character List color scheme in default theme\" src=\"screenshots/preferences/editor/colors_and_fonts/default/Textual/Character%20List.png?raw=true\"/\u003e\n      \u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg alt=\"Character List color scheme in Darcula theme\" src=\"screenshots/preferences/editor/colors_and_fonts/darcula/Textual/Character%20List.png?raw=true\"/\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003eTextual\u003c/td\u003e\n      \u003ctd\u003eEscape Sequence\u003c/td\u003e\n      \u003ctd\u003e\u003c/td\u003e\n      \u003ctd\u003e\n        \u003ccode\u003e\\x{12}\u003c/code\u003e\n      \u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg alt=\"Escape Sequence color scheme in default theme\" src=\"screenshots/preferences/editor/colors_and_fonts/default/Textual/Escape%20Sequence.png?raw=true\"/\u003e\n      \u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg alt=\"Escape Sequence color scheme in Darcula theme\" src=\"screenshots/preferences/editor/colors_and_fonts/darcula/Textual/Escape%20Sequence.png?raw=true\"/\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003eTextual\u003c/td\u003e\n      \u003ctd\u003eSigil\u003c/td\u003e\n      \u003ctd\u003e\u003c/td\u003e\n      \u003ctd\u003e\n        \u003cul\u003e\n          \u003cli\u003e\u003ccode\u003e~r//\u003c/code\u003e\u003c/li\u003e\n          \u003cli\u003e\u003ccode\u003e~R''\u003c/code\u003e\u003c/li\u003e\n          \u003cli\u003e\u003ccode\u003e~w()\u003c/code\u003e\u003c/li\u003e\n          \u003cli\u003e\u003ccode\u003e~W()\u003c/code\u003e\u003c/li\u003e\n        \u003c/ul\u003e\n      \u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg alt=\"Sigil color scheme in default theme\" src=\"screenshots/preferences/editor/colors_and_fonts/default/Textual/Sigil.png?raw=true\"/\u003e\n      \u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg alt=\"Sigil color scheme in Darcula theme\" src=\"screenshots/preferences/editor/colors_and_fonts/darcula/Textual/Sigil.png?raw=true\"/\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003eTextual\u003c/td\u003e\n      \u003ctd\u003eString\u003c/td\u003e\n      \u003ctd\u003e\u003c/td\u003e\n      \u003ctd\u003e\n        \u003ccode\u003e\"Hello world\"\u003c/code\u003e\n      \u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg alt=\"String color scheme in default theme\" src=\"screenshots/preferences/editor/colors_and_fonts/default/Textual/String.png?raw=true\"/\u003e\n      \u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg alt=\"String color scheme in Darcula theme\" src=\"screenshots/preferences/editor/colors_and_fonts/darcula/Textual/String.png?raw=true\"/\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003eVariables\u003c/td\u003e\n      \u003ctd\u003eIgnored\u003c/td\u003e\n      \u003ctd\u003e\u003c/td\u003e\n      \u003ctd\u003e\n        \u003ccode\u003e_\u003c/code\u003e\n      \u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg alt=\"Ignored variables color scheme in default theme\" src=\"screenshots/preferences/editor/colors_and_fonts/default/Variables/Ignored.png?raw=true\"/\u003e\n      \u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg alt=\"Ignored variables color scheme in Darcula theme\" src=\"screenshots/preferences/editor/colors_and_fonts/darcula/Variables/Ignored.png?raw=true\"/\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003eVariables\u003c/td\u003e\n      \u003ctd\u003eParameter\u003c/td\u003e\n      \u003ctd\u003e\u003c/td\u003e\n      \u003ctd\u003e\n        \u003cul\u003e\n          \u003cli\u003e\u003ccode\u003ea\u003c/code\u003e\u003c/li\u003e\n          \u003cli\u003e\u003ccode\u003eb\u003c/code\u003e\u003c/li\u003e\n        \u003c/ul\u003e\n      \u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg alt=\"Parameter variables color scheme in default theme\" src=\"screenshots/preferences/editor/colors_and_fonts/default/Variables/Parameter.png?raw=true\"/\u003e\n      \u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg alt=\"Parameter variables color scheme in Darcula theme\" src=\"screenshots/preferences/editor/colors_and_fonts/darcula/Variables/Parameter.png?raw=true\"/\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003eVariables\u003c/td\u003e\n      \u003ctd\u003eVariable\u003c/td\u003e\n      \u003ctd\u003e\u003c/td\u003e\n      \u003ctd\u003e\n        \u003ccode\u003epid\u003c/code\u003e\n      \u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg alt=\"Variable color scheme in default theme\" src=\"screenshots/preferences/editor/colors_and_fonts/default/Variables/Variable.png?raw=true\"/\u003e\n      \u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg alt=\"Variable color scheme in Darcula theme\" src=\"screenshots/preferences/editor/colors_and_fonts/darcula/Variables/Variable.png?raw=true\"/\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\n### Grammar parsing\n\nBuilt on top of highlighted tokens above, the parser understands the following parts of Elixir grammar as valid or\nallows the grammar because they contain correctable errors:\n\n* [Empty Parentheses](https://github.com/elixir-lang/elixir/blob/de39bbaca277002797e52ffbde617ace06233a2b/lib/elixir/src/elixir_parser.yrl#L299) (`()`)\n* [Keyword Lists](http://elixir-lang.org/getting_started/7.html#7.1-keyword-lists)\n  * Keyword Keys - Aliases, identifiers, quotes, or operators when followed immediately by a colon and horizontal or vertical space.\n  * Keyword Values - Empty parentheses (`()`) and matched expressions.\n* [Matched Expressions](https://github.com/elixir-lang/elixir/blob/de39bbaca277002797e52ffbde617ace06233a2b/lib/elixir/src/elixir_parser.yrl#L113-L122),\n  in other words, unary and binary operations on variable, function, and macro names and values (numbers, strings,\n  char lists, sigils, heredocs, `true`, `false`, and `nil`).\n* [No Parentheses expressions](https://github.com/elixir-lang/elixir/blob/de39bbaca277002797e52ffbde617ace06233a2b/lib/elixir/src/elixir_parser.yrl#L124-L125), which\n  are function calls with neither parentheses nor `do` blocks that have either (1) a positional argument and keyword\n  arguments OR (2) two or more positional arguments with optional keyword arguments.\n* Anonymous function calls `.()` with either no arguments; a no parentheses arguments expression as an argument; keywords\n  as an argument; positional argument(s); or positional arguments followed by keywords as arguments.\n* Remote function calls (`Alias.function`, `:atom.function`, etc) and local function calls (`function`) with...\n  * No Parentheses with...\n    * No Arguments (`Alias.function`)\n    * Keywords (`Alias.function key: value`)\n    * Nested No Parentheses Call (`Alias.function Inner.function positional, key: value`)\n    * Positional and Keyword arguments (`Alias.function positional, key: value`)\n    * Matched Expression (`Alias.function 1 + 2`)\n  * Parentheses with...\n    * No arguments (`Alias.function()`)\n    * No Parentheses Call (`Alias.function(Inner.function positional, key: value`)\n    * Keywords (`Alias.function(key: value)`)\n    * Positional and Keyword arguments (`Alias.function(positional, key: value)`)\n    * Trailing parentheses for quoting (`def unquote(variable)(positional)`)\n* Bracket expression (`variable[key]`)\n* Block expressions (`function do end`)\n* [Unmatched expressions](https://github.com/elixir-lang/elixir/blob/de39bbaca277002797e52ffbde617ace06233a2b//lib/elixir/src/elixir_parser.yrl#L127-L133),\n  in other words combinations of block expressions and matched expressions.\n\n### Inspections\n\nInspections mark sections of code with warnings and errors.  They can be customized from the Preferences \u003e Inspections \u003e Elixir.\n\n![Elixir Inspections](/screenshots/inspection/Elixir.png?raw=true \"Elixir Inspections\")\n\n#### Ambiguous nested calls\n\nDetects when compiler will throw `unexpected comma. Parentheses are required to solve ambiguity in nested calls`.\nFunction calls with multiple arguments without parentheses cannot take as arguments functions with multiple arguments\nwithout parentheses because which functional gets which arguments is unclear as in the following example:\n\n```elixir\nouter_function first_outer_argument,\n               # second argument is another function call without parentheses, but with multiple arguments\n               inner_function first_inner_argument,\n               ambiguous_keyword_key: ambiguous_keyword_value\n```\n\nTo fix the ambiguity if `first_inner_keyword_key: first_inner_keyword_value` should be associated, add parentheses\naround the inner function's arguments:\n\n```elixir\n# keywords are for inner function\nouter_function first_outer_argument\n               inner_function(\n                 first_inner_argument\n                 ambiguous_keyword_key: ambiguous_keyword_value\n               )\n\n# keywords are for outer function\nouter_function first_outer_argument\n               inner_function(\n                 first_inner_argument\n               ),\n               ambiguous_keyword_key: ambiguous_keyword_value\n```\n\n\u003cfigure\u003e\n  \u003cimg alt=\"Ambiguous nested calls preferences\" src=\"/screenshots/inspection/elixir/ambiguous_nested_calls/preferences.png?raw=true\"/\u003e\n  \u003cbr/\u003e\n  \u003cfigcaption\u003e\n    Preferences \u0026gt; Inspections \u0026gt; Elixir \u0026gt; Ambiguous nested calls\n  \u003c/figcaption\u003e\n\u003c/figure\u003e\n\n\u003cfigure\u003e\n  \u003cimg alt=\"Ambiguous nested calls error\" src=\"/screenshots/inspection/elixir/ambiguous_nested_calls/error.png?raw=true\"/\u003e\n  \u003cbr/\u003e\n  \u003cfigcaption\u003e\n    Ambiguous nested call inspection marks the error on the comma that causes the ambiguity.\n  \u003c/figcaption\u003e\n\u003c/figure\u003e\n\n\u003cfigure\u003e\n  \u003cimg alt=\"Ambiguous nested calls inspection\" src=\"/screenshots/inspection/elixir/ambiguous_nested_calls/inspection.png?raw=true\"/\u003e\n  \u003cbr/\u003e\n  \u003cfigcaption\u003e\n    Mousing over the comma marked as an error in red (or over the red square in the right gutter) will show the inspection\n    describing the error.\n  \u003c/figcaption\u003e\n\u003c/figure\u003e\n\n#### Ambiguous parentheses\n\nDetects when compiler will throw `unexpected parenthesis. If you are making a function call, do not insert spaces in between the function name and the opening parentheses`.\nFunction calls with space between the function name and the parentheses cannot distinguish between function calls with\nparentheses, but with an accidental space before the `(` and function calls without parentheses where the first\npositional argument is in parentheses.\n\n##### Empty Parentheses\n```elixir\nfunction ()\n```\n\nTo fix the ambiguity remove the space or add outer parentheses without the space if the first argument should be `()`:\n```elixir\n# extra space, no arguments to function\nfunction()\n\n# first argument is `()`\nfunction(())\n```\n\n##### Keywords in Parentheses\n```elixir\nfunction (key: value)\n```\n\nKeywords inside parentheses is not valid, so the only way to fix this is to remove the space\n\n```elixir\nfunction(key: value)\n```\n\n##### Positional arguments in Parentheses\n\n```elixir\nfunction (first_positional, second_positional)\n```\n\nA list of positional arguments in parenthenses is not valid, so the only way to fix this is to remove the space\n\n```elixir\nfunction(first_positional, second_positional)\n```\n\n\u003cfigure\u003e\n  \u003cimg alt=\"Ambiguous parentheses preferences\" src=\"/screenshots/inspection/elixir/ambiguous_parentheses/preferences.png?raw=true\"/\u003e\n  \u003cbr/\u003e\n  \u003cfigcaption\u003e\n    Preferences \u0026gt; Inspections \u0026gt; Elixir \u0026gt; Ambiguous parentheses\n  \u003c/figcaption\u003e\n\u003c/figure\u003e\n\n\u003cfigure\u003e\n  \u003cimg alt=\"Ambiguous parentheses error\" src=\"/screenshots/inspection/elixir/ambiguous_parentheses/error.png?raw=true\"/\u003e\n  \u003cbr/\u003e\n  \u003cfigcaption\u003e\n    Ambiguous parentheses inspection marks the error on the parenthetical group surrounded by the parentheses that are\n    ambiguous due to the preceding space.\n  \u003c/figcaption\u003e\n\u003c/figure\u003e\n\n\u003cfigure\u003e\n  \u003cimg alt=\"Ambiguous parentheses\" src=\"/screenshots/inspection/elixir/ambiguous_parentheses/inspection.png?raw=true\"/\u003e\n  \u003cbr/\u003e\n  \u003cfigcaption\u003e\n    Mousing over the parenthetical group marked as an error in red (or over the red square in the right gutter) will\n    show the inspection describing the error.\n  \u003c/figcaption\u003e\n\u003c/figure\u003e\n\n#### Keyword pair colon (`:`) used in type spec instead of type operator (`::`)\n\nType specifications separate the name from the definition using `::`.\n\n```elixir\n@type name: definition\n```\n\nReplace the `:` with ` ::`\n\n```elixir\n@type name :: definition\n```\n\n#### Keywords appear before the end of list.\n\n```elixir\none.(\n  one,\n  two positional, key: value,\n  three\n)\n```\n\nKeywords can only appear at the end of an argument list, so either surround the no parentheses expression argument with\nparentheses, or move the the keywords to the end of the list if it wasn't meant to be a no parentheses expression.\n\n```elixir\none.(\n  one\n  two(positional, key: value),\n  three\n)\n```\n\nOR\n\n```elixir\none.(\n  one,\n  two,\n  three,\n  key: value\n)\n```\n\n\u003cfigure\u003e\n  \u003cimg alt=\"Keywords Not At End\" src=\"/screenshots/inspection/elixir/keywords_not_at_end/preferences.png?raw=true\"/\u003e\n  \u003cbr/\u003e\n  \u003cfigcaption\u003e\n    Preferences \u0026gt; Inspections \u0026gt; Elixir \u0026gt; Keywords Not At End\n  \u003c/figcaption\u003e\n\u003c/figure\u003e\n\n\u003cfigure\u003e\n  \u003cimg alt=\"Keywords Not At End error\" src=\"/screenshots/inspection/elixir/keywords_not_at_end/error.png?raw=true\"/\u003e\n  \u003cbr/\u003e\n  \u003cfigcaption\u003e\n    Keywords Not At End inspection marks the error over the keywords that need to be surrounded by parentheses or moved\n    to the end of the list.\n  \u003c/figcaption\u003e\n\u003c/figure\u003e\n\n\u003cfigure\u003e\n  \u003cimg alt=\"Keywords Not At End inspection\" src=\"/screenshots/inspection/elixir/keywords_not_at_end/inspection.png?raw=true\"/\u003e\n  \u003cbr/\u003e\n  \u003cfigcaption\u003e\n    Mousing over the keywords marked as an error in red (or over the red square in the right gutter) will\n    show the inspection describing the error.\n  \u003c/figcaption\u003e\n\u003c/figure\u003e\n\n#### Match operator (`=`) used in type spec instead of type operator (`::`)\n\nType specifications separate the name from the definition using `::`.\n\n```elixir\n@type name = definition\n```\n\nReplace the `=` with ` ::`\n\n```elixir\n@type name :: definition\n```\n\n### Quick Fixes\n\nQuick Fixes are actions IntelliJ can take to change your code to correct errors (accessed with Alt+Enter by default).\n\n#### Convert `:` to ` ::` in type specs\n\nIf a type specification uses a single `:` instead of `::`, then hit Alt+Enter on the `:` to change it to ` ::` and fix the type spec.\n\n#### Convert `=` to ` ::` in type specs\n\nIf a type specification uses `=` instead of `::`, then hit Alt+Enter on the `=` to change it to `::` and fix the type spec.\n\n#### Remove space in front of ambiguous parentheses\n\nIf a set of parentheses is marked as ambiguous then the space before it can be removed to disambiguate the parentheses\nwith Alt+Enter. (Will vary based on keymap.)\n\n\u003cfigure\u003e\n  \u003cimg alt=\"Remove spaces before ambiguous parentheses\" src=\"/screenshots/local_quick_fix/Remove%20Spaces%20Before%20Ambiguous%20Parentheses.gif?raw=true\"/\u003e\n  \u003cbr/\u003e\n  \u003cfigcaption\u003e\n    Hitting Alt+Enter on ambiguous parentheses error will bring up the Local Quick Fix,\n    \"Remove spaces between function name and parentheses\".  Hit Enter to accept and remove the space.\n  \u003c/figcaption\u003e\n\u003c/figure\u003e\n\n### Code Folding\n\nYou can collapse (fold) pre-defined regions of your Elixir code to make it easier to quickly scroll through files or hide details you don't care about right now.\n\n#### Controls\n\n##### Collapsing\n\n1. Position cursor between lines with with downward facing - arrow and upward facing - arrow.\n2. Cmd+-\n\n##### Expanding\n\n1. Position cursor on the collapsed line with the square +\n2. Cmd++\n\n#### Regions\n\n| Expanded                          | Collapsed                                  | Folded By Default? |\n|-----------------------------------|--------------------------------------------|--------------------|\n| `do end`                          | `do: ...`                                  | No                 |\n| `-\u003e` and right operand            | `-\u003e ...`                                   | No                 |\n| `@doc VALUE `                     | `@doc \"...\"`                               | No                 |\n| `@moduledoc VALUE`                | `@moduledoc \"...\"`                         | No                 |\n| `@typedoc VALUE`                  | `@typedoc \"...\"`                           | No                 |\n| alias ALIAS1\u003cbr\u003e alias ALIAS1     | `alias ...`                                | Yes                |\n| import ALIAS1\u003cbr\u003e import ALIAS2   | `import ...`                               | Yes                |\n| require ALIAS1\u003cbr\u003e require ALIAS2 | `require ...`                              | Yes                |\n| use ALIAS1\u003cbr\u003e use ALIAS2         | `use ALIAS1`                               | Yes                |\n| `@for`                            | `FOR` in `defimpl PROTOCOL, for: FOR`      | Yes                |\n| `@protocol`                       | `PROTOCOL` in `defimpl PROTOCOL, for: FOR` | Yes                |\n| @MODULE_ATTRIBUTE                 | VALUE in `@MODULE_ATTRIBUTE VALUE`         | No                 |\n\n### Commenter\n\nYou can comment or uncomment the current line or selected block of source. By selecting a block of source first you can\nquickly comment out and entire function if you're trying to track down a compiling or testing error that's not giving a\nhelpful line number.\n\nUsing the menus\n\n1. Highlight one or more lines\n2. Comment (or Uncomment) with one of the following:\n  a. Code \u003e Comment with Line Comment\n  b. On OSX the key binding is normally `Cmd+/`.\n\n### Credo\n\n#### Inspection\n\n##### Batch Mode\n\nIf you'd like to run `mix credo` use can run it as a global Inspection.\n\n1. Analyze \u003e Run Inspection By Name... (⌥⇧⌘I)\n2. Type \"Credo\"\n3. Select \"Credo\" from the shortened list\n4. Hit Enter.\n\nYou'll be presented with a \"Run 'Credo'\" dialog\n\n![Run 'Credo'](/screenshots/features/credo/inspection/batch_mode/Run%20Credo%20Custom%20Scope%20Project%20Production%20Files.png?raw=true)\n\n1. Change the \"Inspection scope\" from \"Whole project\", which would include the `deps` to \"Custom scope\"\n2. Select \"Project Production Files\" from the \"Custom scope\" dropdown\n3. Click \"OK\"\n\nThe Inspections Result Tool Pane will open and show results as each file is processed.\n\n1. Click the ▶ to expand the Credo section to show all warnings\n\n   ![Individual Entry](/screenshots/features/credo/inspection/batch_mode/Individual%20Entry.png?raw=true)\n2. Click an entry for the details of an individual warning with a code highlighting.\n\n   ![Code Highlighting](/screenshots/features/credo/inspection/batch_mode/Code%20Highlighting.png?raw=true)\n\n   The view will show the parts of the file that aren't annotated as collapsed with the discontinuous line number indicating the jumps.\n\n   If you click on + collapse markers, you can expand the collapsed sections to see the full context\n\n   ![Expansion](/screenshots/features/credo/inspection/batch_mode/Expansion.png?raw=true)\n\n   Or you can hover over the collapsed section to see a tooltip preview of the expansion\n\n   ![Expansion Preview](/screenshots/features/credo/inspection/batch_mode/Expansion%20Preview.png?raw=true)\n\n#### Configuration\n\n\u003ctable\u003e\n  \u003cthead\u003e\n    \u003ctr\u003e\n      \u003cth\u003e\n        Preferences \u003e Editor \u003e Inspections\n      \u003c/th\u003e\n      \u003cth\u003e\n        Preferences \u003e Editor \u003e Inspections \u003e Credo\n      \u003c/th\u003e\n      \u003cth colspan=\"5\"\u003e\n        Editor\n      \u003c/th\u003e\n      \u003cth colspan=\"5\"\u003e\n        Inspections\n      \u003c/th\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth rowspan=\"2\"\u003e\n        Elixir \u003e Credo\n      \u003c/th\u003e\n      \u003cth rowspan=\"2\"\u003e\n        Include Explanation\n      \u003c/th\u003e\n      \u003cth rowspan=\"2\"\u003e\n        Highlight\n      \u003c/th\u003e\n      \u003cth rowspan=\"2\"\u003e\n        Message\n      \u003c/th\u003e\n      \u003cth rowspan=\"2\"\u003e\n        Explanation in tooltip\n      \u003c/th\u003e\n      \u003cth colspan=\"2\"\u003e\n        \u003ccode\u003emix credo\u003c/code\u003e Runs\n      \u003c/th\u003e\n      \u003cth rowspan=\"2\"\u003e\n        Highlight\n      \u003c/th\u003e\n      \u003cth rowspan=\"2\"\u003e\n        Message\n      \u003c/th\u003e\n      \u003cth\u003e\n        \u003ccode\u003emix credo\u003c/code\u003e Runs\n      \u003c/th\u003e\n      \u003cth colspan=\"2\"\u003e\n        Action\n      \u003c/th\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e\n        Per File\n      \u003c/th\u003e\n      \u003cth\u003e\n        Per Issue\n      \u003c/th\u003e\n      \u003cth\u003e\n        Working Directory\n      \u003c/th\u003e\n      \u003cth\u003e\n        Inspect Code\n      \u003c/th\u003e\n      \u003cth\u003e\n        Run Inspection By Name\n      \u003c/th\u003e\n    \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\n        ☑\n      \u003c/td\u003e\n      \u003ctd\u003e\n        ☑\n      \u003c/td\u003e\n      \u003ctd\u003e\n        Yes\n      \u003c/td\u003e\n      \u003ctd\u003e\n        Yes\n      \u003c/td\u003e\n      \u003ctd\u003e\n        Yes\n      \u003c/td\u003e\n      \u003ctd\u003e\n        1\n      \u003c/td\u003e\n      \u003ctd\u003e\n        1\n      \u003c/td\u003e\n      \u003ctd\u003e\n        Yes\n      \u003c/td\u003e\n      \u003ctd\u003e\n        Yes\n      \u003c/td\u003e\n      \u003ctd\u003e\n        1\n      \u003c/td\u003e\n      \u003ctd\u003e\n        Yes\n      \u003c/td\u003e\n      \u003ctd\u003e\n        Yes\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\n        ☑\n      \u003c/td\u003e\n      \u003ctd\u003e\n        ☐\n      \u003c/td\u003e\n      \u003ctd\u003e\n        Yes\n      \u003c/td\u003e\n      \u003ctd\u003e\n        Yes\n      \u003c/td\u003e\n      \u003ctd\u003e\n        No\n      \u003c/td\u003e\n      \u003ctd\u003e\n        1\n      \u003c/td\u003e\n      \u003ctd\u003e\n        0\n      \u003c/td\u003e\n      \u003ctd\u003e\n        Yes\n      \u003c/td\u003e\n      \u003ctd\u003e\n        Yes\n      \u003c/td\u003e\n      \u003ctd\u003e\n        1\n      \u003c/td\u003e\n      \u003ctd\u003e\n        Yes\n      \u003c/td\u003e\n      \u003ctd\u003e\n        Yes\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\n        ☐\n      \u003c/td\u003e\n      \u003ctd\u003e\n        ⁿ/ₐ\n      \u003c/td\u003e\n      \u003ctd\u003e\n        No\n      \u003c/td\u003e\n      \u003ctd\u003e\n        No\n      \u003c/td\u003e\n      \u003ctd\u003e\n        No\n      \u003c/td\u003e\n      \u003ctd\u003e\n        0\n      \u003c/td\u003e\n      \u003ctd\u003e\n        0\n      \u003c/td\u003e\n      \u003ctd\u003e\n        Yes\n      \u003c/td\u003e\n      \u003ctd\u003e\n        Yes\n      \u003c/td\u003e\n      \u003ctd\u003e\n        1\n      \u003c/td\u003e\n      \u003ctd\u003e\n        No\n      \u003c/td\u003e\n      \u003ctd\u003e\n        Yes\n      \u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\n#### Annotator\nIf you want to limit the performance impact of the credo annotator because `mix credo` spikes your CPU, you can limit the number of `mix credo` runs to 1 per open file by disabling the Explanation tooltip\n\n##### Disable Explanation\n1. Preferences \u003e Editor \u003e Inspections \u003e Credo\n2. Uncheck \"Include Explanation\"\n\n##### Disable inspection\nIf you don't want the annotator to run at all on open editors, then you can disable the paired inspection\n\n1. Preferences \u003e Editor \u003e Inspections\n2. Uncheck Elixir \u003e Credo\n\nOnce the annotator is disabled, you can still run the inspection in [batch mode](#batch-mode)\n\n### Debugger\n\nIntelliJ Elixir allows for graphical debugging of `*.ex` files using line breakpoints.\n\n\u003cfigure\u003e\n  \u003cimg alt=\"Line breakpoints for debugger can be set in gutter of editor tab.\" src=\"/screenshots/Debugger.png?raw=true\"/\u003e\n  \u003cbr/\u003e\n  \u003cfigcaption\u003e\n    Line breakpoints can added by clicking in the left-hand gutter of an\n    editor tab.  A red dot will appear marking the breakpoint.  When a\n    Run Configuration is Run with the Debug (bug) instead of Run (arrow)\n    button, execution will stop at the breakpoint and you can view the\n    local variables (with Erlang names) and the stackframes.\n  \u003c/figcaption\u003e\n\u003c/figure\u003e\n\n#### Steps\n\n1. Define a [run/debug configuration](#rundebug-configurations)\n2. [Create breakpoints](#creating-line-breakpoints) in the `*.ex` files\n3. [Launch](#starting-the-debugger-session) a debugging session\n4. During the debugger session, [step through the breakpoints](#stepping), [examine suspended program](#examining-suspended-program), [explore frames](#frames), and [evaluate code when suspended](#evaluate).\n\n#### Basics\n\nAfter you have configured a [run configuration](#rundebug-configurations) for your project, you can launch it in debug mode by pressing `Ctrl+D`.\n\n##### Keyboard Shortcuts\n\n| Action                                  | Keyword Shortcut |\n|-----------------------------------------|------------------|\n| Toggle Breakpoint                       | `Cmd+F8`         |\n| Resume Program                          | `Alt+Cmd+R`      |\n| Step Over                               | `F8`             |\n| Step Into                               | `F7`             |\n| View breakpoint details/all breakpoints | `Shift+Cmd+F8`   |\n\n##### Excluding Modules\n\nBy default, the debugger will scan all the [load paths](https://hexdocs.pm/mix/Mix.Project.html#load_paths/1) and [build path](https://hexdocs.pm/mix/Mix.Project.html#build_path/1) for `.beam` files and the corresponding modules will be [interpreted](http://erlang.org/doc/man/int.html#ni-1) which causes the Module's [Erlang abstract code chunk](http://beam-wisdoms.clau.se/en/latest/indepth-beam-file.html#abst-abstract-syntax-tree) to be interpreted in Erlang instead of the [bytecode chunk](#code) being executed in the C parts of the BEAM.  This interpretation is **much** slower than execution, so by default all of the Elixir standard library and the common modules installed in Phoenix projects are excluded from being interpreted when the debugger starts.  The modules can be still be stepped into or have breakpoints explicitly set.\n\n1. Preferences \u003e Build, Execution, Deployment \u003e Debugger \u003e Stepping\n2. Scroll to Elixir\n\n![Do Not Step Into The Modules](screenshots/debugger/excluding_modules/Do%20Not%20Step%20Into%20The%20Modules.png?raw=true)\n\nYou can customize these module patterns as an application setting.\n\n###### Disabling Existing Module Patterns\n\n1. Preferences \u003e Build, Execution, Deployment \u003e Debugger \u003e Stepping\n2. Scroll to Elixir\n3. Click the Checkbox next to the pattern you want to disable\n4. Click Apply to save or OK to save and close Preferences\n\n![Disable](screenshots/debugger/excluding_modules/Disable.png)\n\n###### Editing Existing Module Patterns\n\n1. Preferences \u003e Build, Execution, Deployment \u003e Debugger \u003e Stepping\n2. Scroll to Elixir\n3. Click the pattern text box\n4. Click Apply to save or OK to save and close Preferences\n\n![Edit](screenshots/debugger/excluding_modules/Edit.png?raw=true)\n\n###### Removing Existing Module Patterns\n\n1. Preferences \u003e Build, Execution, Deployment \u003e Debugger \u003e Stepping\n2. Scroll to Elixir\n3. Click the row of the pattern you want to remove\n4. Click the \"-\" Remove button.\n5. Click Apply to save or OK to save and close Preferences\n\n![Remove](screenshots/debugger/excluding_modules/Remove.png?raw=true)\n\n![Removed](screenshots/debugger/excluding_modules/Removed.png?raw=true)\n\n###### Adding New Module Patterns\n\n1. Preferences \u003e Build, Execution, Deployment \u003e Debugger \u003e Stepping\n2. Scroll to Elixir\n3. Click the \"+\" Add button\n4. Click the default \"*\" pattern to edit it\n5. Click Apply to save or OK to save and close Preferences\n\n![Add](screenshots/debugger/excluding_modules/Add.png?raw=true)\n\n![Added](screenshots/debugger/excluding_modules/Added.png?raw=true)\n\n##### Environment Variables\n\nIf you want to customize the modules to ignore on a per-Run-Configuration basis, you can set an environment variable in the Run Configuration.\n\n| Variable                           | Example    | Description                     |\n|------------------------------------|------------|---------------------------------|\n| INTELLIJ\\_ELIXIR\\_DEBUG\\_BLACKLIST | iconv,some | Excluding modules from debugger |\n\n*Notice: If you want non `Elixir.` module in blacklist, write it with: `:`. This rule applies only to module atoms.*\n\n#### Breakpoints\n\nWhen a breakpoint is set, the editor displays a breakpoint icon in the gutter area to the left of the affected source code. A breakpoint icon denotes status of a breakpoint, and provides useful information about its type, location, and action.\n\nThe icons serve as convenient shortcuts for managing breakpoints. Clicking an icon removes the breakpoint. Successive use of Alt - click on an icon toggles its state between enabled and disabled. The settings of a breakpoint are shown in a tooltip when a mouse pointer hovers over a breakpoint icon in the gutter area of the editor.\n\n| Status                 | Icon                                                                                                                                | Description                                                                                   |\n|------------------------|-------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------|\n| Enabled                | \u003cimg alt=\"Red dot\" src=\"screenshots/debugger/breakpoints/Enabled.png?raw=true\"/\u003e                                                    | Indicates the debugger will stop at this line when the breakpoint is hit.                     |\n| Disabled               | \u003cimg alt=\"Red dot with green dot in center\" src=\"screenshots/debugger/breakpoints/Disabled.png?raw=true\"/\u003e                          | Indicates that nothing happens when the breakpoint is hit.                                    |\n| Conditionally Disabled | \u003cimg alt=\"Red dot with green dot in top-left corner\" src=\"screenshots/debugger/breakpoints/Conditionally%20Disabled.png?raw=true\"/\u003e | This state is assigned to breakpoints when they depend on another breakpoint to be activated. |\n\nWhen the button \u003cimg alt=\"Red dot surrounded by crossed-out circle\" src=\"screenshots/debugger/breakpoints/Mute.png?raw=true\"/\u003e is pressed in the toolbar of the Debug tool window, all the breakpoints in a project are muted, and their icons become grey: \u003cimg alt=\"Grey dot\" src=\"screenshots/debugger/breakpoints/Muted.png?raw=true\"/\u003e.\n\n##### Accessing Breakpoint Properties\n\n###### Viewing all breakpoints\n\nTo view the list of all breakpoints and their properties, do one of the following:\n\n* Run \u003e View Breakpoints\n* `Shift+Cmd+F8`\n* Click the \u003cimg alt=\"Two red dots layered vertically on top of each other with smaller grey rings to right of the red dots\" src=\"screenshots/debugger/breakpoints/All.gif?raw=true\"/\u003e\n* Breakpoints are visible in the Favorites tool window.\n\n###### Viewing a single breakpoint\n\nTo view properties of a single breakpoint\n\n* Right-Click a breakpoint icon in the left gutter of the editor.\n  \u003cimg alt=\"Breakpoint properties dialog\" src=\"screenshots/debugger/breakpoints/Properties.png?raw=true\"/\u003e\n\n##### Configuring Breakpoints\n\nTo configure actions, suspend policy and dependencies of a breakpoint\n\n1. Open the Breakpoint Properties\n   * Right-click a breakpoint in the left gutter, then click the More link or press `Shift+Cmd+F8`\n   * Open the [Breakpoints](#viewing-all-breakpoints) dialog box and select the breakpoint from the list\n   * In the Favorites tool window, select the desired breakpoint, and click the pencil icon.\n2. Define the actions to be performed by IntelliJ IDEA on hitting breakpoint:\n   * To notify about the reaching of a breakpoint with a text message in the debugging console, check the \"Log message to console\" check box.  A message of the format `*DBG* 'Elixir.IntellijElixir.DebugServer' got cast {breakpoint_reached, PID}` will appear in the console.\n   * To set a breakpoint the current one depends on, select it from the \"Disabled until selected breakpoint hit\" drop-down list. Once dependency has been set, the current breakpoint is disabled until selected one is hit.\n     * Choose the \"Disable again\" radio button to disable the current breakpoint after selected breakpoint was hit.\n     * Choose the \"Leave enabled\" radio button to keep the current breakpoint enabled after selected breakpoint was hit.\n   * Enable suspending an application upon reaching a breakpoint by checking the \"Suspend\" check box.\n\n##### Creating Line Breakpoints\n\nA line breakpoint is a breakpoint assigned to a specific line in the source code.\n\nLine breakpoints can be set on executable lines. Comments, declarations and empty lines are not valid locations for the line breakpoints.  Line break points can be set in `.ex` and `.eex` files.\n\n![ex](screenshots/debugger/breakpoints/creating/ex.png?raw=true)\n\n`.eex` line breaks will only work on Elixir code that is used in Phoenix view modules.\n\n![eex](screenshots/debugger/breakpoints/creating/eex.png?raw=true)\n\n`.eex` breakpoints only work if a `.beam` file using the template's relative can be found.  **This means that the Phoenix view module `.beam` file must exist in `_build` prior to setting a breakpoint.  Run the Run Configuration once, before debugging to complete the build if setting a breakpoint does not work.**\n\n1. Place the caret on the desired line of the source code.\n2. Do one of the following:\n   * Click the left gutter area at a line where you want to toggle a breakpoint\n   * Run \u003e Toggle Line Breakpoint\n   * `Cmd+F8`\n\n##### Describing Line Breakpoints\n\n1. [Open the Breakpoints dialog](#viewing-all-breakpoints)\n2. Right-click the breakpoint you want to describe\n3. Select \"Edit description\" from the context menu\n4. In the \"Edit Description\" dialog box, type the desired description.\n\n##### Searching for Line Breakpoints\n\n1. [Open the Breakpoints dialog](#viewing-all-breakpoints)\n2. Start typing the description of the desired breakpoint\n\n##### Jump to Breakpoint Source\n\n* To view the selected breakpoint without closing the dialog box, use the preview pane.\n* To open the file with the selected breakpoint for editing, double-click the desired breakpoint.\n* To close Breakpoints dialog, press `Cmd+Down`. The caret will be placed at the line marked with the breakpoint in question.\n\n##### Disabling Line Breakpoints\n\nWhen you temporarily disable or enable a breakpoint, its icon changes from \u003cimg alt=\"Enabled breakpoint icon\" src=\"screenshots/debugger/breakpoints/Enabled.png?raw=true\"/\u003e to \u003cimg alt=\"Disabled breakpoint icon\" src=\"screenshots/debugger/breakpoints/Disabled.png?raw=true\"/\u003e and vice versa.\n\n1. Place the caret at the desired line with a breakpoint.\n2. Do one of the following:\n   * Run \u003e Toggle Breakpoint Enable\n   * Right-click the desired breakpoint icon, select or deselect the \u003cbreakpoint name\u003e enabled check box, and then click Done.\n   * Alt-click the breakpoint icon\n\n##### Deleting Line Breakpoints\n\nDo one of the following:\n\n* In the [Breakpoints](#viewing-all-breakpoints) dialog box, select the desired line breakpoint, and click the red minus sign.\n* In the editor, locate the line with the line breakpoint to be deleted, and click its icon in the left gutter.\n* Place caret on the desired line and press `Cmd+F8`.\n\n#### Starting the Debugger Session\n\n1. Select the run/debug configuration to execute\n2. Do one of the following\n   * Click \u003cimg alt=\"Bug\" src=\"screenshots/debugger/Debug.png?raw=true\"/\u003e on the toolbar\n   * Run \u003e Debug\n   * `Ctrl+D`\n\nOR\n\nDebug quick menu\n\n1. `Ctrl+Alt+D`\n2. Select the configuration from the pop-up menu\n3. Hit `Enter`\n\nIt takes awhile, once the debugged process is started to configure the [debugger in BEAM](http://erlang.org/doc/man/int.html).  To ensure that breakpoints are setup before allow the debugged code to run, the debugger blocks until setup is complete.\n\n1. The debugged process will wait for the debugger to attach\n\n   ![Waiting for debugger to attach.png](screenshots/debugger/starting/Waiting%20for%20debugger%20to%20attach.png?raw=true)\n2. Breakpoints will be set\n3. The debugger will mark modules to be [interpreted](http://erlang.org/doc/man/int.html#ni-1)\n   1. The [code paths](http://erlang.org/doc/man/code.html#get_path-0) will be scanned for `.beam` files\n      * Code paths from the Elixir SDK will be skipped\n        ![Skipped.png](screenshots/debugger/starting/Skipped.png?raw=true)\n      * `.beam` files will be interpreted unless they match the Module Filter Pattern\n        ![Completed.png](screenshots/debugger/starting/Completed.png?raw=true)\n4. The debugger [attaches](http://erlang.org/doc/man/int.html#auto_attach-2) (so it can receive breakpoint events) and allows the debugged process to continue.\n   ![Attached.png](screenshots/debugger/starting/Attached.png?raw=true)\n\n#### Examining Suspended Program\n\n##### Processes\n\n\u003cfigure\u003e\n  \u003cimg alt=\"Debugger processes panel\" src=\"screenshots/debugger/Processes.png?raw=true\"/\u003e\n  \u003cbr/\u003e\n  \u003cfigcaption\u003e\n    The \"Thread\" drop-down lists the current processes in the local\n    node.  Only the current process is suspended.  The rest of the\n    processes are still running.\n  \u003c/figcaption\u003e\n\u003c/figure\u003e\n\n##### Frames\n\n\u003cfigure\u003e\n  \u003cimg alt=\"Debugger frames panel\" src=\"screenshots/debugger/Frames.png?raw=true\"/\u003e\n  \u003cbr/\u003e\n  \u003cfigcaption\u003e\n    The Frames for the current process can be navigated up and down\n    using the arrow keys or clicking on the frame.\n  \u003c/figcaption\u003e\n\u003c/figure\u003e\n\n* Press `Up` or `Down` to change frames\n* Click the stack_frame from the list\n\n###### Jump to Current Execution Point\n\nWhen changing frames or jumping to definitions, you can lose track of where the debugger is paused.  To get back to the current execution point, do one of the following:\n1. Run \u003e Show Execution Point.\n2. `Alt+F10`\n3. Click \u003cimg alt=\"Show Execution Point button\" src=\"screenshots/debugger/Show%20Execution%20Point.png?raw=true\"/\u003e on the stepping toolbar of the Debug tool window.\n\n##### Variables\n\n![Binary.png](screenshots/debugger/variables/Binary.png?raw=true)\n\nBinaries show each byte at the byte's offset.\n\n![Bitstring.png](screenshots/debugger/variables/Bitstring.png?raw=true)\n\nBitstrings show each byte with any partial byte annotated with its bitwidth.\n\n![Boolean.png](screenshots/debugger/variables/Boolean.png?raw=true)\n\nBoolean variables are rendered as their value.\n\n![Charlist.png](screenshots/debugger/variables/Charlist.png?raw=true)\n\nCharlists show the integer values because they're treated as lists\n\n![Functions.png](screenshots/debugger/variables/Functions.png?raw=true)\n\nFunctions don't have literal representation, so the inspect form starting with `#Fun\u003c...\u003e` is shown\n\n![Lists.png](screenshots/debugger/variables/Lists.png?raw=true)\n\nLists render differently based on whether the list is improper or not.  Improper lists show the head and tail while proper lists show their element by offset.\n\n![Maps.png](screenshots/debugger/variables/Maps.png?raw=true)\n\nMaps render differently based on the key type.  If the map uses all `atom` keys, the key will equal the value in the nested children while non-atom keys are shown as entries at a specific offset with the key and value.   This is done, so that complex keys that have subterms can be expanded or collapsed, which is not possible for the simpler atom rendering.\n\n![Numbers.png](screenshots/debugger/variables/Numbers.png?raw=true)\n\nFloats and integers are rendered as literals.\n\n![Pid.png](screenshots/debugger/variables/Pid.png?raw=true)\n\nPids are broken up into their hidden `node, `id`, and `serial`.\n\n![String.png](screenshots/debugger/variables/String.png?raw=true)\n\nStrings show their literal value and unicode is fully supported.\n\n![Tuple.png](screenshots/debugger/variables/Tuple.png?raw=true)\n\nTuples show their elements at their offsets.\n\n![Rebound.png](screenshots/debugger/variables/Rebound.png?raw=true)\n\nWhile Elixir allows rebinding variable names, Erlang does not, so when viewed in the Variables pane, rebound variables will have an `@VERSION` after their name indicating which rebinding of a the variable is.\n\n#### Evaluate\n\nWhen stopped at a breakpoint, you can use the Evaluate button (it looks like a simple pocket calculator) to open an editor to type code to be executed in the current stack frame.\n\n![Evaluate.png](screenshots/debugger/Evaluate.png?raw=true)\n\nThe evaluator supports the full syntax.\n\n![Result.png](screenshots/debugger/evaluate/Result.png)\n\nThe result of evaluating the code with be shown as the value of `result` below the entered \"Expression\".\n\n![Exception.png](screenshots/debugger/evaluate/Exception.png?raw=true)\n\n![Typo.png](screenshots/debugger/evaluate/Typo.png?raw=true)\n\nErrors in the code will report back as a `result` tuple with an `:EXIT` tag.  This reflects that the error has crashed the process that was evaluating the code.  Thankfully, due to how how the interpreter is written, this does not lose the current stack frame and stepping or other evaluation can continue.\n\n#### Stepping\n\n| Action               | Icon                                                                    | Shortcut   | Description                                                                                                                                                                                                                                                                                  |\n|----------------------|-------------------------------------------------------------------------|------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| Show Execution Point | \u003cimg alt=\"Show Execution Point button\" src=\"screenshots/debugger/Show%20Execution%20P","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkronicdeth%2Fintellij-elixir","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkronicdeth%2Fintellij-elixir","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkronicdeth%2Fintellij-elixir/lists"}