Skip to content

lispy 0.21.0

Compare
Choose a tag to compare
@abo-abo abo-abo released this 19 Jan 18:03
· 1790 commits to master since this release

Fixes

  • ( adds a space when wrapping region
  • w/s work for files indented with both tabs and spaces (but this doesn't
    mean that anyone should do that)
  • p doesn't change the whitespace
  • fix the issue of dynamic variable cmd in lispy--insert-or-call
  • i will fall back to the default indent-sexp if the thing to indent is too large
  • '' will not insert an extra space
  • F (follow) and M-. (goto-symbol) now unfold a hidden outline if they end up there.
  • mm (mark-list) will not trigger company-mode completion.

Enhancements

  • xh (describe) now describes variables in addition to functions.

  • y (occur) pre-select was improved.

  • y (occur) will deactivate mark.

  • C (convolute) now works from both sides, not just from the front.

  • t (teleport) will now work only within the current defun. This will make it more consistent, since
    it will not depend on the window scroll amount.

  • e (eval) is greatly improved for Clojure. It will now concatenate both the output
    and the eval result, with output colored as string.

  • i (indent) now works also with Clojure map literals.

  • B (ediff-bounds) the ediff will try re-use the current window configuration.

  • C-4 C-h or C-h F1 will describe the bindings

  • C-d and DEL are now less whitespace-hungry and more intuitive

  • xj (debug-step-in) now works for adviced functions

  • A (beginning-of-defun) will restore point and mark when called twice

  • S (stringify) or C-u " (quote) don't move the point.

  • S (stringify) will keep the region.

  • ' (tick) will unquote if the current region is a string. So now you can
    quote/unquote region with "/'.

  • m and M-m will mark the full sexp, i.e. together with ,@' stuff.

  • i now works for marked quoted symbols, so if you have

    |(add-to-list 'auto-mode-alist '(\"\\\\.cache\\\\'\" . emacs-lisp-mode))
    

you can eval auto-mode-alist with mijie.

New features

  • xb now calls lispy-bind-variable: the current expression will be moved to
    a let binding and you will write down the binding name with iedit. You can use M-m
    to exit iedit and to mark the newly created name. Then, if you want to move the let, just use
    a combination of C and h.
  • C-return now calls lispy-open-line: it's useful to add a new line after the current
    expression without moving the point.
  • lispy-alt-line is the alternative newline. It might be a bit confusing, so it's not bound.
    However, it's very useful: see the tests. You can bind it to one of C-j or C-m
    or return, as they all don't have to do the same thing.
  • you can now enable lispy-mode for cider-repl-mode and slime-repl-mode, RET will work.
  • p (eval-other-window) now works for cl-labels: it will appropriately bind the function at point.
  • 0m (mark-list) now marks the inner part of the list, i.e. without parens.
  • # (hash) now works in a similar way to other keys that add one extra space:
    `, : etc.
  • c (clone) is now improved for region selection. You can now generate a function call
    from function definition with 2mcol( or mijcol(.
  • ~ (tilde) is a new function that, besides inserting tilde can toggle it at the start
    of the region when the region is active.

Extended outline support

The outline style was changed, to allow for nested outlines.

  • j: If at outline, move to next outline.
  • k: If at outline, move to previous outline.
  • h: If at top-level, move to parent outline. Go back when called the second time.
  • l: If at outline, move to the first child sexp.
  • i: If at outline, fold/unfold it with org-mode (3-way cycle)
  • I: fold/unfold all outlines with org-mode (3-way cycle)
  • M-return: Add an outline, just like in org-mode.
  • v: works for outlines
  • a: If at outline, add a new outline and move there.
  • M-j (split) and M-J (join) were improved a lot for strings and lists. See tests.
  • + (join) will no longer exit the list, instead keeping the position.

You can easily view tests now

  • the testing support was improved, so now the tests look more clear.
  • xv (view-test): You can position the point at a (should statement in lispy-test.el,
    and this function will should you in an overlay:
    • initial state of the code, with point and mark
    • the key to trigger the transformation
    • the expected final state of the code

lispy-view-test

Here's another preview, with special handling of point, mark, region and show-paren-mode:

lispy-view-test-1

Incompatible changes

In an effort to simplify the notation, lispy-out-forward was renamed to lispy-right; and lispy-out-backward was renamed to lispy-left.
The old names are retained as obsolete aliases for the current functions. They will be removed in the next release.