-
Update to the last crystal version (1.8.0).
-
Now display
REPLy
version on-v
.
- Use
ameba
v1.4.3 and fix lint error. REPLy
moved inside the compiler itself (in./share/crystal-ic/lib
), it's not required as a shards anymore.
Note: you can use
shards prune
to remove unused version ofREPLy
.
- The history is now saved in
<home>/.ic_history
.- The file location can be controlled with the environment variables
IC_HISTORY_FILE
. (IC_HISTORY_FILE=""
disables history saving) - History max size is 10_000. (Can be controlled with
IC_HISTORY_SIZE
)
- The file location can be controlled with the environment variables
- The new following hotkeys have been added: (thanks @zw963!)
ctrl-d
: Delete char or exit (EOF).ctrl-k
: Delete after cursor.ctrl-u
: Delete before cursor.alt-backspace
/ctrl-backspace
: Delete word afteralt-d
/ctrl-delete
: Delete word before.alt-f
/ctrl-right
: Move word forward.alt-b
/ctrl-left
: Move word backward.ctrl-n
/ctrl-p
: Move cursor up/down.ctrl-b
/ctrl-f
: Move cursor backward/forward.
- Behavior when auto-completing on only one match is slightly enhanced.
- Crystal interpreter version is now 1.6.2.
- Fix #9: repair require of local files, thanks @lebogan!
- Fix display of auto-completion title on pry.
- Reduce blinking on ws-code (computation are now done before clearing the screen). Disallow
sync
andflush_on_newline
duringupdate
which help to reduce blinking too, (#10), thanks @cyangle! - Align the expression when prompt size change (e.g. line number increase), which avoid a cursor bug in this case.
- Fix wrong history index after submitting an empty entry.
- Fix ioctl window size magic number on darwin and bsd (reply#3), thanks @shinzlet!
- Extract
repl_interface
/expression_editor
/char_reader
/history
into a new shardREPLy
and use it as dependency. - Use ameba v1.3.1 and fix lint error.
- Use REPLy v0.3.1.
- The auto-completion behavior is improved:
- Now entries are narrowed as the user types.
- Matching part of the name are now displayed in bright.
- Auto-completion is available on inner of
def
(Experimental)- It takes account of parameter types:
def foo(a, b : String, c = 0, *args, **options) a.| # => Any b.| # => String c.| # => Int32 args.| # => Tuple(Any) options. | # => NamedTuple()
- It takes account of scope.
- A new fictitious type
Any
is introduced, bypassing the semantics check onCall
. (foo(<Any>).bar.baz # => Any
) - The following is not yet supported:
- Block parameter
- Instance var parameter
- Free vars
- Class def
- Def in generic type.
- Auto-completion now works inside a
Array
. - Update to the last crystal version (1.5.1).
- Fix bad unindent on
include
(unindent still work forin
). - Fix broken auto-completion after
.class
. - Fix broken auto-completion after a suffix
if
.
- Fix wrong
CRYSTAL_PATH
in Makefile (preventing to add lib dependency). - Remove some ameba excludes.
- Implements auto-completion on Paths (
Foo::Bar::
) - Improve error location, now display the correct location corresponding to prompt lines. Allow
pry
to display top-level frames. - Add the
reset
command. - Implement keyboard interruption on
ctrl-c
. - Make interpreter installable via shard (Add postinstall script for shard), thanks @Vici37
- Implements shortcuts
home
andend
to respectively move cursor to begin and end of expression, thanks @Vici37. - Load crystal stb in background during REPL startup, thanks @Vici37.
- Add a visual mark ('>') on auto-completion entries if
--no-color
. - Allow usage of
NO_COLOR
environment (compliant to https://no-color.org). - Update to the last crystal version (1.5.0)
- Don't colorize keyword methods, e.g.
42.class
- Fix crash occurring on
require
auto-completion if current folder doesn't contain alib
folder. - Fix wrong auto-indentation on parenthesized call.
- Fix color bug occurring on wrapped line on edge of view scroll.
- Fix bad display when
ctrl-c
an multiline expression. - Fix missing
bin/
when usingmake
. - Fix broken
make release
. - Fix #3: compile failed on local linux laptop (arch linux), thanks @zw963
- Fix
Invalid option: -v
, from crystal-lang/crystal#12094. - Fix already required files to not be removed from auto-completion entries.
- Fix bug auto-completing setter methods.
- Avoid insertion of control characters in editor, causing bad display.
- Prevent auto-completion while prelude is still loading. (Fix bug due to concurrent call)
- Allow comments to be in history.
- Ensure llvm-ext is built before 'make spec'.
- Add 'make install' & 'make uninstall', make IC works independently of its position, also move
crystal-i
->share/crystal-ic
. - Remove
--static
in release mode. - Better handling if prompt change its size (line_number >= 1000).
- Improve performance when editing large expressions.
- Fix typo on invalid option.
- Write spec for
History
/AutoCompletionHandler
/CharReader
/ExpressionEditor
. - Allow spec to test private methods
- Add some missing
private
. - Make
CharReader
accept IO withoutraw
mode. - Make
ExpressionEditor
/AutoCompletionHandler
/ReplInterface
/Repl
output on any IO. - Tiny refactor on
ReadChar.raw
. - Small refactoring: remove static methods in IC to puts them directly to Repl. (Re)rename
main.cr
toic.cr
. - Refactor
AutoCompletionHandler
. - Refactor auto-completion (second time), allow it to trigger when editing long multiline expressions.
- Improve 'ExpressionEditor#expression_before_cursor'.
- Move
.dup
for a more semantically correct behavior. - Update .ameba.yml
- Re-organize files.
- Compile with -Dpreview_mt flag.
-
Update to the last crystal version (1.4.1)
-
Add option -d to trigger the debugger at starting.
-
New auto-completion UI
- Allow 'tabulation' to roll over completions entries.
- Enhance the display and avoid remaining boilerplate output.
- Add 'escape' key to close the auto-completion and 'shift-tab' to unroll entries.
- Permit auto-completion to work on block arguments and on
&.foo
. - Allow auto-completion to work inside a def (argument names are not taken in account yet) Take also into account the current scope, the auto-completion now proposes 'property'/'getter'.. macros as their belong to the scope of a class.
- Add macros to auto-completion
- Implements auto-completion on require node
- Enable auto-completion in debugger mode
-
Change the 'insert new line' shortcut: 'crtl-o' -> 'alt-enter'
- Fix bug causing pry to not exit
- Fix coloration bug with named tuple keys
- Fix bug with
+=
causing error instead of going multiline - Fix semantics bug caused by auto-completion
- Fix remaining boilerplate output when displaying auto-completion on multiline input
- Fix auto-completion not to trigger on
if
/while
conditions and ondef
default values - Raise syntax error on
[1 \n ,2
rather than get stuck in multiline mode - Allow 'ctrl-tab' to work on tty
- Remove
[]
,[]?
,[]=
from operators coloration, so[] of String
is colored correctly - Remove llvm_ext.o causing it to not build on git clone
- Fix bug with pasting expression starting by '#'
- Some little cleaning.
- Update
.ameba.yml
- Remove color from prompt for a sober style.
- Remove '`' from auto-completion entries
- Add
llvm_ext.o
to gitignore - Give precision about release build
- Fix typo in README
- Add a gif to README
- Add release build mode into makefile
- Add this changelog from commits history
- Update to the last crystal-i version (1.3.2)
- Use ameba 0.14
- Refactor main entry
- Remove out-dated spec
- Update README
- Add more context to the auto-completion to allow more powerful auto-completions in the future.
- Fix infinite loop triggered on 'tab' for expression starting with dot
- Fix bug with auto-indent of methods with a block and proc-literal.
- Add
-D
/--define
option - Use option parser and add following options:
--version
--help
--no-color
- Move auto_completion code to its own file
- Add shortcuts for
step
,next
,finish
andwhereami
in pry - Integrate pry!
- Update to the last crystal-i version (1.3.0)
- Update to the last crystal-i version
- Reduce aliasing when displaying very large expressions
- Update highlighter colors
- Enhance display of auto-completions entries
- Experimental: Implement auto-completion (work on basic receiver
(\w+.)*
, but ignore the context (def vars, class/module context, ...) ) - Add shortcuts move_cursor_to_begin/move_cursor_to_end
- Doing some optimizations to reduce aliasing on very long expression
- Fix bug inserting a character before an "end" wrongly triggering auto-unindent
- Remove unused ic_prelude.cr
- Trigger correct scrolling when moving history up/down
- Trigger scrolling when cursor moves on border
- Now use crystal-i as back-end to interpret crystal. The previous work done to carry out an interpreter is still available on the
custom-interpreter
branch.
The project change his goal, it not aims to reproduce an interpreter, it aims to provide a nice interface to wrap crystal interpreter
-
Fix multiline not trigger on
begin\rescue
-
Fix highlighting bug with
(a+b)/x
, previously colored as regex -
Support proper behaviour on pasting code
-
Fix some intern documentation misspellings
-
Reduce screen aliasing on large expressions
-
Fix bug while displaying full expression
-
Support displaying expressions higher than term height
-
Clean up + improve comments
-
Update the multiline behaviour, now always submit on enter unless cursor is on the last line and the expression is unterminated. Add 'ctrl+o' shortcut to insert a new line otherwise.
-
Rename REPLInterface module => ReplInterface
-
Merge MultilineInput + CrystalMultilineInput classes => ReplInterface
-
Implements correctly move_cursor_to_end_of_first_line when move down the history
-
Fix to be compatible with crystal-1.2
-
Don't discard editing when history is turn up
-
Simplify cursor code
-
Remove unused callback
-
Implements move cursor down
-
Enhance intern documentation
-
Implements move_cursor_up
-
Cleaning using the ameba tool (cyclomatic complexity = 30)
-
Remake the interface from scratch, now supports:
- editing mulitline, 'delete', 'back' end 'enter' can remove/add lines
- moving cursor left and right
- lines greater than term width, and resizing the term
- auto-indent on parenthesizes, bracket, and almost all that need to be indented
Doesn't supports yet:
- moving cursor up and down
- expression higher than term height
- pasting large expressions
-
update gitignore
-
Ensure that IC run on 1.1.0
-
Remove 'pending' on some already solved spec + minor fix
-
Display arrays and ranges
-
Remake ICObject to hold compile-time type (instead of runtime type)
- Implement in a better way boxing/unboxing of unions
- Implement more correctly Casts
- Work on dispatch
- Make pointerof(var_union) works
- Display '∅' on invalid/uninitialized vars
-
format spec
-
repair specs by executing the prelude
-
clean and split out specs
-
Start to implement dispatch defs
-
fix bug in error display
-
fix bug with assignments
-
fix:
x = 42 typeof(x) # => Int32 x = foo typeof(x) # => String|Int32
-
remove mis-formating
-
catch interminated call
-
Add a nice feature that replace
.foo
by__.foo
- Support most of LibC, LibCG methods (not those with callback)
- Fix display bug on 'printf' or 'macro puts'
- support the 'out' keyword
- start implementing LibC fun
- fix error lines on macro errors
- fix bug with vars not cleared correctly between specs
- improve error messages and lines number
- add coloration for
&+=
,&-=
, and&*=
- fix coloration bug with
1/2
and add coloration for operators&-
,&+
, ... - Handle closure on receivers
- Handle closure on receivers
- Support procedures with closure! (normal vars)
- start supporting
ARGV
- Support ivars initializers!
- fix bug with constants and cleaning
- Support class vars
- add vars
- fix bug: use fullname on Const and Enums
- clean the code by getting ride of ICType (use Crystal::Type instead), and do some other cleaning
- work-around for #1
- remove a remaining 'puts'
- Finish Enums
- fix bug with integer generic var
- fix bug with integer generic var
- implements yield and blocks
- start implementing Enums
- add reset command
- Implements CONST
- Support all primitives in primitives.cr (unless proc_call)
- rename the project ICR -> IC
- add scenario 3
- update README
- Clarify some intern comments
- support CONST, now only the last written expression is parsed
- Add more specs
- Cleaning, and fix bugs with char and symbol comparisons
- add Alias
- add spawn keyword
- Catch more unterminated expressions
- fix bug with GC and memory corruption when union type are used!
- Clean the code, and progress on union and virtual types
- provide an informative README
- Fix bug with lines number inside string
- Support classes, and crystal_type_id,start to works on unions
- make the pointers works!, then add Char, String, Tuple, Symbol, and NamedTuple
- clean the code, simplify the primitive process, and support all integer kind
- Implements ICRObject in a way to support pointers on structs and pointer on classes
- support overload & default arguments on functions, but break
_
. Try to implements pointers - improve shell, fix bug with highlighter and supports more ASTNodes
- update gitignore
- improve the command interface!
- ICR is coming!