null argument togetDescriptiveName when trying to rename a variable.Ecto.additionalTextAttributes to improve the syntax highlightingdef(macro)?p?) parameters to themselvesfor comprehension as variable&& operands, which handles code that matches a variable and only uses the variable on success like ((cwd = cwd()) && write_tmp_dir(cwd))destructure@type names._ to only itself, no matter how many are used to reflect that it is non-binding, while _<name> will resolve to _<name> as it does bind.@). Non-inplace renaming should also be supported, but inplace is preferred. (There's a setting to turn off in-place renaming in JetBrains IDEs.)operation.infix.Normalizednull."keyword key".bind_quoted: usage and call those "quote bound variable".Matched and Unmatched form of operations when the code cares about the operatorAndUnaryNonNumericOperationprocessDeclarations to support variable and parameter resolution usingPsiTreeUtil.treeWalkUp and PsiScopeProcessorsElixirStabBodyNamedElements, so they can be Rename Refactored.org.elixir_lang.psi.name.{Module,Function} constants.key: in key: value) that aren't quotes ("key": value or'key': value) as Atom. - @KronicDethAliasBraces and OperatorsBit (<< and >>)Braces ({ and })Brackets ([ and ])Char Tokens (?)Comma (,)Dot (.)Interpolation (#{ and })Maps and StructsMaps (%{ and })Structs (%{ and } when used for struct. The Alias is still highlighted usingAlias)Operation SignParentheses (( and ))Semicolon (;)CallsFunction (currently only combined with Predefined to highlight Kernelfunctions. Will be used later for all function calls once function references are implemented.)Macro (curently only combined with Predefined to highlight Kernel andKernel.SpecialForms macros. Will be used later for all macro calls once macro references are implemented.)Predefined (Combined with Function to highlight Kernel functions. Combined with Macro to highlight Kernel and Kernel.SpecialForms macros.)Escape SequenceModule AttributesDocumentation (Previously Documentation Module Attributes)Text (Previously Documentation Text)TypesCallback (my_callback in @callback my_callback() :: :ok ormy_macro_callback in @macrocallback my_macro_callback)Specification (my_function in @spec my_function() :: :ok)Typetyp and integer in @type typ :: integerparameterized in @type parameterized(type_parameter) :: type_parametertyptyp in @opaque typtyp :: 1..10typ and typtyp in @callback func(typ, typtyp) :: :ok | :failbinary and utf8 in << "hello" :: binary, c :: utf8, x = 4 * 2 >> = "hello™1"Type Parameters (type_parameter in @type parameterized(type_parameter) :: type_parameter)NumbersBinary, Decimal, Hexadecimal, and Octal Digits (Previously at top-level.)Decimal Exponent, Mark and Separator (Previously at top-level)Invalid Binary, Decimal, Hexadecimal, and Octal Digits (Previously at top-level.)Non-Decimal Base Prefix (Previously at top-level.)Obsolete Non-Decimal Base PrefixVariablesIgnoredParameterVariable\n\r\n>>]});->endaftercatchelserescue- to separate segment options instead of a list.)ElixirStabBody and ElixirFile because they are sequences of expressions.false, nil, and true) as merge of Atom and Keyword text attributes. If both only use foreground color, Keyword wins.QualifiableAlias as Alias.<key>:) as Atom.with to highlighted special formsadditionalTextAttributes to plugin.xml in CONTRIBUTING.mdCOLOR_SCHEMA_DESIGN.xml, so they can be applied to different base schemes, such as applying the current Darcula additonalTextAttributes to Default.Bug Fixes
@behaviour, @callback,@macrocallback, @doc, @moduledoc, @typedoc, @spec, @opaque, @type, and @typep, should not have references because their uses are unrelated.defmacro @(...) in Kernel and that @ should count as a function name, not a prefix for a module attribute name.null Module for Scratch File use scope"call" for Call type*Two operations using Type interfaceAccessExpression declarationsfoo in @spec foo as a type, which occurs while typing a new @spec before ::can be typed.leftOperand is null even when checkLeft is true because checkLeft can betrue and leftOperand is null when the lastParent is the operand or operation as a whole, but there is an error in the unnormalized leftOperand leading to the normalizedleftOperand being null.null before checking if it resolves to null when replacing module attribute usages with their value because AtNonNumericOperations can have a nullreference when they are non-referencing, like @spec.PsiLeafElement when looking for variables because the PsiLeafElement is an error.Match is a PsiFile, the Match Use Scope is the rest of the file.= to Operator SignsNoParenthesesKeywords when highlighting types, which occurs when the :: has no proper right operand and the following one-liner function clause with do: is parsed as the right operand.DUMMY_BLOCK when looking for Variable, which prevents walking through errors.Normalized pattern for Prefix, so that the operand is null when only the operator matches or the operand has errors.<%= from EEX is detected, don't throw error when Modular can't be found.#323 - Build jps-builder using only Java 1.6 compatible .classes - @KronicDeth
In IntelliJ 14.1, all of openapi.jar targets Java 1.6 (with MAJOR.MINOR 50.0), but in IntelliJ 2016.1, some of openapi.jar targets only Java 1.8 (with MAJOR.MINOR 52.0), since jps-builders require parts of openapi.jar and must target Java 1.6 even for IntelliJ 2016.1, the 52.0 .classes needed to be ported into org.elixir_lang.jps.builder, so that the52.0 version in openapi.jar wouldn't be attempted to be loaded.
This ended up being 5 classes:
ExecutionExceptionGeneralCommandLineParametersListParamsGroupProcessNotCreatedExceptionOnly GeneralCommandLine was used directly, all others are dependencies of it.
Documentation Module Attributes renamed to Module Attributes > DocumentationDocumentation Text renamed to Module Attributes > Documentation > TextExpression Substitution Mark renamed to Braces and Operators > Interpolation.Numbers instead of being at the top-level:Binary, Decimal, Hexadecimal, and Octal DigitsDecimal Exponent, Mark and SeparatorInvalid Binary, Decimal, Hexadecimal, and Octal DigitsNon-Decimal Base PrefixObsolete Non-Decimal Base PrefixModule attributes declared earlier in the file can be completed whenever you type @ and some letter. If you want to see all module attributes, you can type @a, wait for the completions to appear, then delete the @ to remove the filtering to a.
Parameter and variable usages can be completed whenever typing an identifier. The completions will include all variables know up from that part of the file. It can include variables from outside macros, like quote blocks.
Go To Declaration is a feature of JetBrains IDEs that allows you to jump from the usage of a symbol, such as a Module
Alias, to its declaration, such as the defmodule call.
Cmd+B b. Select Navigate > Declaration from the menu. c. Cmd+ClickIf you hold Cmd and hover over the variable before clicking, it will say parameter or variable, which matches the annotation color.
Find Usage is a feature of JetBrains IDEs that allows you to find all the places a declared symbol, such a Module Alias
in a defmodule, is used, including in strings and comments.
Alt+F7Shift+F6