This release looks like rainbow sherbert: everything that can be syntax 
highlighted is a different color in Default and Darcula scheme.

Thanks
   
   - Thanks to Alexey Poimtsev (@alec-c4 <https://github.com/alec-c4>), 
   @swieckib <https://github.com/swieckib>, Jorg Heymans (@jorgheymans 
   <https://github.com/jorgheymans>), Andrei Dziahel (@develop7 
   <https://github.com/develop7>), and Khaaliq DeJan (@MisterDeejay 
   <https://github.com/MisterDeejay>) for reporting test cases for "Prefix 
   operation does not have 2 children, but 1"
   - Thanks to @wliirl <https://github.com/wliirl>, @aCandidMind 
   <https://github.com/aCandidMind>, Julius Beckmann (@h4cc 
   <https://github.com/h4cc>), @developerworks 
   <https://github.com/developerworks>, and Christoph Drießen (@cedriessen 
   <https://github.com/cedriessen>) for reporting IntelliJ 
   version-compatibility and build issues.
      - Thanks to Christoph Drießen (@cedriessen 
      <https://github.com/cedriessen>) for pointing that all the weird 
      loading bugs were related to ignatov/intellij-erlang#727 
      <https://github.com/ignatov/intellij-erlang/issues/727> and then 
      Sergey Ignatov (@ignatov <https://github.com/ignatov>), Sergey 
      Savenko (@deadok22 <https://github.com/deadok22>), and Nikolay 
      Chashnikov (@chashnikov <https://github.com/chashnikov>) for helping 
      from that issue.
   - Thanks to Evgen (@doctorx <https://github.com/doctorx>) for reporting 
   that character tokens couldn't be type highlighted.
   - Thanks to Koziołek (@Koziolek <https://github.com/Koziolek>) and 
   Povilas Skruibis (@povilas <https://github.com/povilas>) for reporting 
   null argument togetDescriptiveName when trying to rename a variable.
   - Thanks to @wliirl <https://github.com/wliirl> for reporting a problem 
   showing the Structure of parts of Ecto.
   - Thanks to Vlad Shcherbin (@VladShcherbin 
   <https://github.com/VladShcherbin>) for encouraging me to implement
   additionalTextAttributes to improve the syntax highlighting
   - Thanks to Jorg Heymans (@jorgheymans <https://github.com/jorgheymans>) 
   for trying to rename parameters, so that I knew there was user demand for 
   the feature.

Changelogv4.0.0
   
   - Enhancements
      - #314 <https://github.com/KronicDeth/intellij-elixir/pull/314> - 
      Call references for unqualified no argument calls that work as variables 
or 
      parameters -@KronicDeth <https://github.com/KronicDeth>
         - Resolve and highlight parameter references
            - Resolve call definition clause (def(macro)?p?) parameters to 
            themselves
            - Resolve call definition parameter with default to itself
            - Add Parameter ot Color Settings Page
            - Parameters in any macro with do block or keyword pair
         - Resolve and highlight variable references
            - Properly identifier variable declared in for comprehension as 
            variable
            - Add Variable to Color Settings Page
            - Highlight bind quoted keyword key as Variable
            - Resolve references to earlier && operands, which handles code 
            that matches a variable and only uses the variable on success like 
((cwd 
            = cwd()) && write_tmp_dir(cwd)) 
            
<https://github.com/elixir-lang/elixir/blob/ccf6d14e3ec2eb96090222dad6f395b5b9ab72ac/lib/elixir/lib/system.ex#L268>
            - Resolve variables from destructure
         - Detect bitstring segment options and don't treat them as 
         variables.
            - Highlight bitstring segment type options as Type, the same 
            highlight as used for@type names.
            - Don't generate (unresolved) references for bitstring segment 
            options
         - Resolve _ 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.
            - Add Ignored Variable to Color Settings Page
         - Reimplement module attribute renaming so that variable renaming 
         can be implemented using a different validator for renaming (since 
module 
         attribute names include the @). 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.Normalized
            - Normalizes leftOperand, operator, and rightOperand for an 
            Infix operation that may have errors (in either operand). If there 
is an 
            error in the operand then its normalized value is null.
         - Keyword key type descriptions
            - Default to "keyword key".
            - Detect bind_quoted: usage and call those "quote bound 
            variable".
         - Add interfaces to unify matching of Matched and Unmatched form 
         of operations when the code cares about the operator
            - And
            - UnaryNonNumericOperation
         - Add processDeclarations to support variable and parameter 
         resolution usingPsiTreeUtil.treeWalkUp and PsiScopeProcessors
            - ElixirStabBody
            - StabOperations
         - Treat variables and parameters as NamedElements, so they can be 
         Rename Refactored.
         - Move reused Module and Function names to 
         org.elixir_lang.psi.name.{Module,Function} constants.
         - Parameter and Variable completion
         - #318 <https://github.com/KronicDeth/intellij-elixir/pull/318> - 
      Highlight keyword keys (key: in key: value) that aren't quotes ("key": 
      value or'key': value) as Atom. - @KronicDeth 
      <https://github.com/KronicDeth>
      - #320 <https://github.com/KronicDeth/intellij-elixir/pull/320> - 
      @KronicDeth <https://github.com/KronicDeth>
         - Show annotator applied highlights in the Preferences > Editor > 
         Colors & Fonts > Elixir.
            - Errors
            - Alias
            - Braces and Operators
               - Bit (<< and >>)
               - Braces ({ and })
               - Brackets ([ and ])
               - Char Tokens (?)
               - Comma (,)
               - Dot (.)
               - Interpolation (#{ and })
               - Maps and Structs
                  - Maps (%{ and })
                  - Structs (%{ and } when used for struct. The Alias is 
                  still highlighted usingAlias)
               - Operation Sign
               - Parentheses (( and ))
               - Semicolon (;)
            - Calls
               - Function (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 Sequence
            - Module Attributes
               - Documentation (Previously Documentation Module Attributes)
                  - Text (Previously Documentation Text)
               - Types
                  - Callback (my_callback in @callback my_callback() :: :ok
                   ormy_macro_callback in @macrocallback my_macro_callback)
                  - Specification (my_function in @spec my_function() :: :ok
                  )
                  - Type
                     - typ and integer in @type typ :: integer
                     - parameterized in @type parameterized(type_parameter) 
                     :: type_parameter
                     - typtyp in @opaque typtyp :: 1..10
                     - typ and typtyp in @callback func(typ, typtyp) :: :ok 
                     | :fail
                     - binary and utf8 in << "hello" :: binary, c :: utf8, 
                     x = 4 * 2 >> = "hello™1"
                  - Type Parameters (type_parameter in @type 
               parameterized(type_parameter) :: type_parameter)
               - Numbers
               - Binary, 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 Prefix
            - Variables
               - Ignored
               - Parameter
               - Variable
            - Recover in expression until close of subexpression
            - \n
            - \r\n
            - >>
            - ]
            - }
            - )
            - ;
            - ->
            - end
            - after
            - catch
            - else
            - rescue
         - Update Preferences > Editor > Colors & Fonts > Elixir example 
         text's bitstring syntax to Elixir post-1.0.0 (Use - to separate 
         segment options instead of a list.)
         - Use same algorithm for ElixirStabBody and ElixirFile because 
         they are sequences of expressions.
         - Highlight atom keywords (false, nil, and true) as merge of Atom
          and Keyword text attributes. If both only use foreground color, 
         Keyword wins.
         - Annotate QualifiableAlias as Alias.
         - Highlight keyword list and map keywords (<key>:) as Atom.
         - Add with to highlighted special forms
         - #322 <https://github.com/KronicDeth/intellij-elixir/pull/322> - 
      Additional Text Attributes - @KronicDeth 
      <https://github.com/KronicDeth>
         - Default text attributes for "Darcula" and "Default" themes: 
         almost every Text Attribute Key has a unique hue for the Foreground 
color.
         - Explain how to add additionalTextAttributes to plugin.xml in 
         CONTRIBUTING.md
         - Group Textual Text Attribute Keys Together: Next "Textual" group 
         is created and "Character List", "Escape Sequence", "Sigil", and 
"String" 
         are moved under the group.
         - Describe relations between different text attributes in 
         COLOR_SCHEMA_DESIGN.xml, so they can be applied to different base 
         schemes, such as applying the current Darcula additonalTextAttributes 
to 
         Default.
      - 
   
   Bug Fixes
   - #314 <https://github.com/KronicDeth/intellij-elixir/pull/314> - 
      @KronicDeth <https://github.com/KronicDeth>
         - Don't generate module attribute references for control 
         attributes: Module attributes that control compilation or are 
predefined by 
         the standard library: @behaviour, @callback,@macrocallback, @doc, 
         @moduledoc, @typedoc, @spec, @opaque, @type, and @typep, should 
         not have references because their uses are unrelated.
         - Drop requirement that there are 2 children and only require 
         there be 1 and assume that is the Operator.
         - Don't count @(...) as a module attribute usage: Module attribute 
         declarations are defined as defmacro @(...) in Kernel and that @ 
should 
         count as a function name, not a prefix for a module attribute name.
         - Allow null Module for Scratch File use scope
         - Default to "call" for Call type
         - Fix typo that had *Two operations using Type interface
         - Don't process AccessExpression declarations
      - #316 <https://github.com/KronicDeth/intellij-elixir/pull/316> - 
      @KronicDeth <https://github.com/KronicDeth>
         - Highlight foo in @spec foo as a type, which occurs while typing 
         a new @spec before ::can be typed.
         - Check if 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.
         - Check if reference is 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.
      - #317 <https://github.com/KronicDeth/intellij-elixir/pull/317> - 
      Leave normal highlighting for char tokens when highlighting types - 
      @KronicDeth <https://github.com/KronicDeth>
      - #320 <https://github.com/KronicDeth/intellij-elixir/pull/320> - 
      @KronicDeth <https://github.com/KronicDeth>
         - Stab operation parameter Use Scope is the stab operation.
         - Skip over PsiLeafElement when looking for variables because the 
         PsiLeafElement is an error.
         - In a script file where the parent of a Match is a PsiFile, the 
         Match Use Scope is the rest of the file.
         - Add = to Operator Signs
         - Skip NoParenthesesKeywords 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.
         - Skip DUMMY_BLOCK when looking for Variable, which prevents 
         walking through errors.
         - Use Normalized pattern for Prefix, so that the operand is null when 
         only the operator matches or the operand has errors.
         - Work-around Phoenix .ex templates that contain EEX: if <%= from 
         EEX is detected, don't throw error when Modular can't be found.
         - Fix capitalization error in example text
      - 
      
      #323 <https://github.com/KronicDeth/intellij-elixir/pull/323> - Build 
      jps-builder using only Java 1.6 compatible .classes - @KronicDeth 
      <https://github.com/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:
         - ExecutionException
            - GeneralCommandLine
            - ParametersList
            - ParamsGroup
            - ProcessNotCreatedException
         
         Only GeneralCommandLine was used directly, all others are 
         dependencies of it.
         - Incompatible Changes
      - #320 <https://github.com/KronicDeth/intellij-elixir/pull/320> - 
      @KronicDeth <https://github.com/KronicDeth>
         - Preferences > Editor > Colors & Fonts > Elixir restructured to 
         group together related highlights and to match grouping used for 
Colors & 
         Fonts > Language Defaults and Colors & Fonts > Java.
            - Documentation Module Attributes renamed to Module Attributes
             > Documentation
            - Documentation Text renamed to Module Attributes > 
            Documentation > Text
            - Expression Substitution Mark renamed to Braces and Operators 
            > Interpolation.
            - The following are now nested under Numbers instead of being 
            at the top-level:
               - Binary, Decimal, Hexadecimal, and Octal Digits
               - Decimal Exponent, Mark and Separator
               - Invalid Binary, Decimal, Hexadecimal, and Octal Digits
               - Non-Decimal Base Prefix
               - Obsolete Non-Decimal Base Prefix
            - #322 <https://github.com/KronicDeth/intellij-elixir/pull/322> - 
      "Character List", "Escape Sequence", "Sigil", and "String" are moved 
under 
      the new "Textual" group. - @KronicDeth <https://github.com/KronicDeth>
      - #324 <https://github.com/KronicDeth/intellij-elixir/pull/324> - 
      Group Numbers subcategories and lower display name verbosity - 
      @KronicDeth <https://github.com/KronicDeth>
         - "Numbers > Binary, Decimal, Hexadecimal, and Octal Digits" 
         renamed to "Numbers > Digits > Valid"
         - "Numbers > Invalid Binary, Decimal, Hexadecimal, and Octal 
         Digits" renamed to "Numbers > Digits > Invalid"
         - "Numbers > Non-Decimal Base Prefix" renamed to "Numbers > Base 
         Prefix > Non-Decimal"
         - "Numbers > Obsolete Non-Decimal Base" renamed to "Numbers > Base 
         Prefix > Obsolete > Non-Decimal"
      
README UpdatesCompletionModule Attributes

Module 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.
Parameters and Variables

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

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.
Parameters and Variables
   
   1. Place the cursor over a parameter or variable usage
   2. Active the Go To Declaration action with one of the following: a. 
   Cmd+B b. Select Navigate > Declaration from the menu. c. Cmd+Click

If you hold Cmd and hover over the variable before clicking, it will say 
parameter or variable, which matches the annotation color.
Find Usage

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.
Parameters and Variables
   
   1. Place cursor over the parameter or variable declaration.
   2. Active the Find Usage action with one of the following: a. i. 
   Right-click the Alias ii. Select "Find Usages" from the context menu b. 
   Select Edit > Find > Find Usages from the menu c. Alt+F7

RefactorRenameParameters and Variables
   
   1. Place the cursor over the parameter or variable usage or declaration
   2. Active the Rename Refactoring action with one of the following: a. i. 
   Right-click the module attribute ii. Select Refactoring from the context 
   menu iii. Select "Rename..." from the Refactoring submenu b. Shift+F6
   3. Edit the name inline and have the declaration and usages update.
   
   
*Installation*


   - From Github
      1. Go to 
      https://github.com/KronicDeth/intellij-elixir/releases/tag/v4.0.0
      2. Download intellij-elixir.zip
      3. Open your JetBrains IDE of choice (Rubymine, IntelliJ IDEA, etc)
      4. Preferences > Plugins
      5. Click Install plugin from disk
      6. Select intellij-elixir.zip
      7. Restart your IDE
   - From Plugin browser in Jetbrains IDE
      - Open your JetBrains IDE of choice (Rubymine, IntelliJ IDEA, etc)
      - Preferences > Plugins
      - Click Browse Repositories
      - Type Elixir in the search
      - Install the plugin
      - Restart your IDE
   

-- 
You received this message because you are subscribed to the Google Groups 
"elixir-lang-talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/elixir-lang-talk/209f0491-b091-418d-b86c-8351c641ac83%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to