Releases: KronicDeth/intellij-elixir
v1.1.0
Changelog
v1.1.0
- Enhancements
- #167 - zyuyou
Build
Compile
an individual fileMake Project
to build the entire project
New
Elixir File
has new templatesEmpty module
Elixir Application
Elixir Supervisor
Elixir GenServer
Elixir GenEvent
Project > Elixir
creates a new Elixir project with an emptylib
directory marked as source directory.Project from Existing Sources...
Create project from existing sources
sets up the project with SDK using a pre-existing directory.Import project from external model > Mix
- Fetches the the dependencies with the local version of
mix
- Marks
lib
directory as source - Marks
test
directory as test sources
- Fetches the the dependencies with the local version of
Run > Elixir Mix
to setup Run Configurations to runmix
tasks.
- #167 - zyuyou
v1.0.0
Changelog
v1.0.0
- Enhancements
- #168 - Update ant build on travis-ci.org to use IDEA 14.1.4 (from 14.0.2) - KronicDeth
- #174 - Parser is verified to quote the same as native Elixir - KronicDeth
- Bug Fixes
- #154 - Fix parsing of unary vs binary +/- with leading and trailing spaces and newlines - KronicDeth
- #155 - Allow EOL between list arguments and
]
- KronicDeth - #156 - KronicDeth
- Relative identifiers after
.
that start withand
,or
, andnot
will be lexed as a single identifier instead
ofand
,or
, ornot
followed by another identifier. end
is allowed as a relative identifier after.
- Relative identifiers after
- #157 - Fix
(...)
as part of matched expression in no parentheses stab signature - KronicDeth - #158 - Allow multiple newlines to mark the end of an expression, but only one
;
- KronicDeth - #159 - Allow operators in function references (
<op>/<arity>
) for function captures (&<op>/<arity>
) - KronicDeth - #160 -
unquote_splicing
is properly wrapped in__block__
when in stab bodies - KronicDeth - #163 - Check for matching terminator in heredocs when determining white space type at beginning of line - KronicDeth
- #170 - Allow + to count as addition - KronicDeth
- #171 - Unary expressions inside parentheses are no longer marked
ambiguous_op: nil
- KronicDeth - #173 - Differentiate between
Qualifier.'relative'()
vsQualifier.'relative' ()
andQualifier."relative"()
vsQualifier."relative" ()
- KronicDeth - #176 - Fix link to Elixir website in README - shalecraig
- #178 - All tokens have human-readable names and/or expected characters for better error messages - KronicDeth
- Incompatible Fixes
v0.3.5
The parser is incomplete until v1.0.0. If you see
an odd error from valid Elixir code, check if it's a
known bug
that is planned to be fixed for v1.0.0. If you don't see your error, please
open a new issue. Please subscribe to notifications on
Issue #6 if you want to be notified when the parser is
complete.
Changelog
v0.3.5
- Enhancements
- #135 -
do
blocks (`do end) - @KronicDeth - #152 - Unmatched expressions (operations involving
do
block calls and normal matched expressions) - Kronicdeth
- #135 -
- Bug Fixes
- #137 - Lex full atom instead of just identifier-like operator prefix (
:in<nospace>dex
before vs:index
after) - @KronicDeth - #138 -
!
andnot
are properly wrapped in__block__
s when in stab bodies - @KronicDeth
- #137 - Lex full atom instead of just identifier-like operator prefix (
v0.3.4
The parser is incomplete until v1.0.0. If you see
an odd error from valid Elixir code, it is most likely due to the incomplete parser. (Expected failures are parsing do
blocks.) Please subscribe to notifications
or comment on Issue #6 if you want to be notified when the
parser is complete.
Changelog
v0.3.4
- Enhancements
- #126 - Bracket at expression (
@foo[key]
) - @KronicDeth - #127 - Anonymous functions (
fn end
), stab clauses (->
), and parentheticals ((1 + 2)
) - @KronicDeth - #128 - Maps (
%{}
) and structs (%User{}
) - @KronicDeth - #129 - Tuples (
{}
) - @KronicDeth - #130 - Bit strings (
<<>>
) - @KronicDeth
- #126 - Bracket at expression (
v0.3.3
The parser is incomplete until v1.0.0. If you see
an odd error from valid Elixir code, it is most likely due to the incomplete parser. Please subscribe to notifications
or comment on Issue #6 if you want to be notified when the
parser is complete.
Changelog
v0.3.3
- Enhancements
- #122 - @KronicDeth
- Remote function calls (
Alias.function
,:atom.function
, etc) and local function calls (function
) with...- No Parentheses with...
- No Arguments (
Alias.function
) - Keywords (
Alias.function key: value
) - Nested No Parentheses Call (
Alias.function Inner.function positional, key: value
) - Positional and Keyword arguments (
Alias.function positional, key: value
) - Matched Expression (
Alias.function 1 + 2
)
- No Arguments (
- Parentheses with...
- No arguments (
Alias.function()
) - No Parentheses Call (
Alias.function(Inner.function positional, key: value
) - Keywords (
Alias.function(key: value)
) - Positional and Keyword arguments (
Alias.function(positional, key: value)
) - Trailing parentheses for quoting (
def unquote(variable)(positional)
)
- No arguments (
- No Parentheses with...
- Remote function calls (
- #125 - Bracket expression (
foo[key]
) - @KronicDeth
- #122 - @KronicDeth
v0.3.2
The parser is incomplete until v1.0.0. If you see
an odd error from valid Elixir code, it is most likely due to the incomplete parser. Please subscribe to notifications
or comment on Issue #6 if you want to be notified when the
parser is complete.
Changelog
v0.3.2
- Bug Fixes
- #121 - Fix
NoSuchElementException
when no suggested SDK home paths are available. Thanks to @zyuyou for reporting - @KronicDeth
- #121 - Fix
v0.3.1
The parser is incomplete until v1.0.0. If you see
an odd error from valid Elixir code, it is most likely due to the incomplete parser. Please subscribe to notifications
or comment on Issue #6 if you want to be notified when the
parser is complete.
Changelog
v0.3.1
- Enhancements
- #112 - File > New > Project From Existing Sources can be used in IntelliJ to setup the excludes, sources, tests, SDK and libraries for an Elixir project that has already been created with
mix new
. - @KronicDeth - #114 - Operators can be qualified function names - @KronicDeth
- #118 - @KronicDeth
- Anonymous function calls (
.(...)
) - Inspection that marks errors when keywords aren't at end of list.
- Anonymous function calls (
- #112 - File > New > Project From Existing Sources can be used in IntelliJ to setup the excludes, sources, tests, SDK and libraries for an Elixir project that has already been created with
Upgrading
v0.3.1
NOTE: The Project Structure Detector is just bookkeeping and visual now. No other features currently take advantage of the SDK setting or the marked directories. Theses Project Settings will be used for later features.
To take advantage of the new Project Structure Detector in IntelliJ, you will want to recreate any project you
previously opened as an Empty Project.
(Copied from Elixir Plugin > Features > Project > From Existing Directory in README.md)
To take advantage of the new Project Structure Detector in IntelliJ, you will want to recreate any project you
previously opened as an Empty Project.
(Copied from Elixir Plugin > Features > Project > From Existing Directory in README.md)
- File > New > Project From Existing Sources...
- Select the root directory of your project.
- Leave the default selection, "Create project from existing sources"
- Click Next
- Project name will be filled with the basename of the root directory. Customize it if you like.
- Project location will be the root directory.
- Click Next.
- If you previously opened the directory in IntelliJ or another JetBrains IDE, you'll be prompted to overwrite the
.idea directory. Click Yes. - You'll be prompted with a list of detected Elixir project roots to add to the project. Each root contains a
mix.exs
. Uncheck any project roots that you don't want added. - Click Next.
- Select a Project SDK directory by clicking Configure.
- The plugin will automatically find the newest version of Elixir installed. (NOTE: SDK detection only works for
homebrew installs on OSX. Open an issue with information
about Elixir install locations on your operating system and package manager to have SDK detection added for it.) - If the automatic detection doesn't find your Elixir SDK or you want to use an older version, manually select select
the directory above thebin
directory containingelixir
,elixirc
,iex
, andmix
. - Click Next after you select SDK name from the Project SDK list.
- Click Finish on the framework page. (No framework detection is implemented yet for Elixir.)
- Choose whether to open in a New Window or in This Window.
Alternatively, you can manually mark the directories and setup the Elixir SDK.
v0.3.0
The parser is incomplete until v1.0.0. If you see
an odd error from valid Elixir code, it is most likely due to the incomplete parser. Please subscribe to notifications
or comment on Issue #6 if you want to be notified when the
parser is complete.
Changelog
v0.3.0
- Enhancements
- #108 -
\x
is marked as an error in CharLists, CharList Heredocs, Strings, and String Heredocs, but not in any sigils. - @KronicDeth - #111 - New Elixir File will automatically underscore the camel case module name when creating the file name and will convert qualifying aliases before the last
.
to directories - @KronicDeth
- #108 -
- Incompatible Changes
- #111 - New Elixir File validates that the name is a valid Alias, so each
.
separated part must start with a capital letter. Previous New Elixir File validated that the name was a valid path, and so forced the name to be lowercase. - @KronicDeth
- #111 - New Elixir File validates that the name is a valid Alias, so each
Upgrading
v0.3.0
The prior version of New > Elixir File validated that the input name was a valid path and would only allow lowercase
names, so you'd be forced to set the name to foo
, which would produce a foo.ex
file, but foo
would also be used
in the file contents:
defmodule foo do
end
In v0.3.0, the validator was corrected so that it only allows Alias (with and without .
), so instead of entering the
name as foo
, enter it as Foo
. The file will still be named foo.ex
, but the module name will correctly be Foo
in the file contents:
defmodule Foo do
end
v0.2.1
v0.2.1
- Enhancements
- #105 - No parentheses function calls can occur as the right operand in binary infix operations or the sole operand of unary prefix operation. - @KronicDeth
- #74 - @KronicDeth
- Function calls with neither parentheses nor
do
blocks that have at least 2 arguments: a positional argument and keyword arguments or 2 or more positional argument(s) followed by optional keyword arguments. - Inspection that marks errors for ambiguous commas
- Inspection that marks errors for ambiguous parentheses
- Quick Fix for the ambiguous parentheses to remove the space between the function name and the opening parentheses.
- Function calls with neither parentheses nor
- #75 - @KronicDeth
- Inspection that marks errors for missing end-of-expressions (
;
and newlines) between expressions. - Quick Fix to insert
;
for missing end-of-expression. - Quick Fix to insert newline for missing end-of-expression.
- Inspection that marks errors for missing end-of-expressions (
- Bug Fixes
- #74 - Right hand-side of
dot_alias
anddot_identifier
was translated incorrectly. Only Aliases and Identifiers are allowed now. @KronicDeth
- #74 - Right hand-side of
v0.2.0
This is the first release with a community contributor, @abaire, who I'd like to thank for adding Module creation support. This is the release marks the transition from primarily tokenization to parsing, including error recovery for base integers
v0.2.0
- Enhancements
- #73 - @KronicDeth
- New attributes for parts of numbers on Color Settings Page
- Binary, Decimal, Hexadecimal, and Octal Digits
- Decimal Exponent, Mark, and Separator
- Invalid Binary, Decimal, Hexadecimal, and Octal Digits
- 2-9, A-Z, and a-z will be parsed as invalid binary digits
- 8-9, A-Z, and a-z will be parsed as invalid octal digits
- G-Z and g-z will be parsed as invalid hexadecimal digits
- Non-Decimal Base Prefix
- Any letter other than b, o, or x, in either case, will be recognized as an invalid whole number base
- Obsolete Non-Decimal Base Prefix (
B
for binary andX
for hexadecimal)
- New attributes for parts of numbers on Color Settings Page
- Any digit, 0-9, A-Z, or a-z will be parsed as invalid for invalid whole number based numbers
- Recovery for non-decimal whole numbers if the prefix is given, but no digits are given
- #73 - @KronicDeth
- Incompatible Changes
- #73: Number attribute has been removed from Color Settings page - @KronicDeth
v0.1.4
- Enhancements
- #17: All valid escape sequences (
\<character>
,\x<hexadecimal>
,\x{<hexadecimal>}
are recognized. - @KronicDeth - #18: Support for creation of Elixir modules - @abaire
- #21: Use pygments' elixir_example.ex supplied by @alco for Color Settings Page - @KronicDeth
- #25:
?
before any character or valid escape sequence will be recognized as a character token. - @KronicDeth - #35:
;
is recognized as EOL.\r\n
and\n
style EOL can be escaped with\
and will be treated as whitespace. - @KronicDeth - #38: Operator arity, associativity, and precedence - @KronicDeth
- #39: Decimal integers and floats - @KronicDeth
- #40: Identifiers (variable, function, and macro names) - @KronicDeth
- #41:
...
identifier - @KronicDeth - #42: Aliases (module names) - @KronicDeth
- #45: Keyword identifiers - @KronicDeth
- #49: Empty Parentheses - @KronicDeth
- #52: In Operator - @KronicDeth
- #54: Dot Operator - @KronicDeth
- #56: Keyword Lists - @KronicDeth
- #70: Matched Expressions - @KronicDeth
- #72: Regular Keywords (
end
,false
,fn
,nil
, andtrue
) - @KronicDeth
- #17: All valid escape sequences (
- Bug Fixes
- #17: Sigil terminator escapes are recognized, so that sigils are no longer prematurely terminated. - @KronicDeth
- #24: Comments do not consume EOL, so trailing comments don't cause error parsing expression on following line. - @KronicDeth
- #36: Sigil modifiers now work on groups in addition to heredocs. - @KronicDeth
- #47:
;
is separate fromEOL
and either or both can separate expressions, but onlyEOL
can separate operators and operands for operations - @KronicDeth