Hacker News new | ask | show | jobs
by da4c30ff 3878 days ago
For emacs, there's the electric-indentation-mode and the fantastic aggressive-indent-mode.

https://github.com/Malabarba/aggressive-indent-mode

2 comments

This reminds me more of Paredit, in that it handles s-expression aware source transformations, and not just indentation:

http://emacsrocks.com/e14.html

I would deeply love to see this kind of inference engine ported to emacs as an alternative to Paredit's chords

A more direct comparison for Emacs would be `adjust-parens`:

https://elpa.gnu.org/packages/adjust-parens.html

Wow! This is fantastic! This seems to do just what Parinfer does. Why isn't this mode more well-known?

This makes it even better:

    (defun my/lisp-dedent-adjust-parens ()
      (interactive)
      (save-excursion
        (x4-smarter-beginning-of-line)
        (call-interactively 'lisp-dedent-adjust-parens)))
    (defun my/lisp-indent-adjust-parens ()
      (interactive)
      (save-excursion
        (x4-smarter-beginning-of-line)
        (call-interactively 'lisp-indent-adjust-parens)))
    (local-set-key (kbd "<M-left>") 'my/lisp-dedent-adjust-parens)
    (local-set-key (kbd "<M-right>") 'my/lisp-indent-adjust-parens)
Now you can just M-left and M-right to adjust the indentation of any line, regardless of where the point is, and adjust-parens fixes the parens for you.