Skip to content

Releases: I3oris/ic

v0.7.0

17 Apr 09:31
Compare
Choose a tag to compare

0.7.0 (Mon Apr 17 2023)

New

  • Update to the last crystal version (1.8.0).

  • Now display REPLy version on -v.

Internal

  • 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 of REPLy.

v0.6.0

28 Nov 20:30
Compare
Choose a tag to compare

0.6.0 (Mon Nov 28 2022)

New

  • 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 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 after
    • alt-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.

Bugs fix

  • 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 and flush_on_newline during update 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!

Internal

  • Extract repl_interface/expression_editor/char_reader/history into a new shard REPLy and use it as dependency.
  • Use ameba v1.3.1 and fix lint error.
  • Use REPLy v0.3.1.

v0.5.1

12 Sep 16:51
Compare
Choose a tag to compare

0.5.1 (Mon Sep 12 2022)

New

  • 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 on Call. (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).

Bugs fix

  • Fix bad unindent on include (unindent still work for in).
  • Fix broken auto-completion after .class.
  • Fix broken auto-completion after a suffix if.

Internal

  • Fix wrong CRYSTAL_PATH in Makefile (preventing to add lib dependency).
  • Remove some ameba excludes.

v0.5.0

15 Jul 17:50
Compare
Choose a tag to compare

0.5.0 (Fry Jul 15 2022)

New

  • 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 and end 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)

Bugs fix

  • Don't colorize keyword methods, e.g. 42.class
  • Fix crash occurring on require auto-completion if current folder doesn't contain a lib 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 using make.
  • 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)

Other

  • 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.

Internal

  • Write spec for History/AutoCompletionHandler/CharReader/ExpressionEditor.
  • Allow spec to test private methods
  • Add some missing private.
  • Make CharReader accept IO without raw 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 to ic.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.