A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://github.com/DogLooksGood/parinfer-mode below:

DogLooksGood/parinfer-mode: Parinfer for Emacs :)

This project is no longer maintained.I have no success for a fast enough implementation in Emacs Lisp.

Fortunately, there’s a parinfer-rust-mode!

Parinfer is a proof-of-concept editor mode for Lisp programming languages. It will infer some changes to keep Parens and Indentation inline with one another. Parinfer consists of two modes:

Indent Mode
Indent Mode gives you full control of indentation, while Parinfer corrects parens.
Paren Mode
Paren Mode gives you full control of parens, while Parinfer corrects indentation.

To learn more about Parinfer, please take a look at its home page.

And the parinfer-mode is the implementation on Emacs with parinfer-elisp.

Parinfer is available on MELPA(and MELPA Stable) now, I recommend to install with use-package.

Add following code to your .emacs or init.el.

(use-package parinfer
  :ensure t
  :bind
  (("C-," . parinfer-toggle-mode))
  :init
  (progn
    (setq parinfer-extensions
          '(defaults       ; should be included.
            pretty-parens  ; different paren styles for different modes.
            evil           ; If you use Evil.
            lispy          ; If you use Lispy. With this extension, you should install Lispy and do not enable lispy-mode directly.
            paredit        ; Introduce some paredit commands.
            smart-tab      ; C-b & C-f jump positions and smart shift with tab & S-tab.
            smart-yank))   ; Yank behavior depend on mode.
    (add-hook 'clojure-mode-hook #'parinfer-mode)
    (add-hook 'emacs-lisp-mode-hook #'parinfer-mode)
    (add-hook 'common-lisp-mode-hook #'parinfer-mode)
    (add-hook 'scheme-mode-hook #'parinfer-mode)
    (add-hook 'lisp-mode-hook #'parinfer-mode)))

Toggle Indent Mode and Paren Mode with command parinfer-toggle-mode.

Avoid unexpect buffer changes.

Whenever you switch to Indent Mode, parinfer-mode will correct all parens of current buffer.

After opening a file, the parinfer-mode enable Indent Mode if it won’t make any changes. Otherwise, Paren Mode will be enabled, you can switch to Indent Mode manually later.

Alternatively, you can use parinfer-diff command to see how will Indent Mode modify the buffer with Ediff.

And there are some keybindings in Ediff:

Key Description q Quit diff. b B->A in Ediff, this can apply change to your origin code. ra Restore A in Ediff, this can revert change. n Move to next difference. p Move to previous difference.

Also, There’s a command parinfer-auto-fix to fix wrong indentation for whole buffer. (Only works with balanced parens)

parinfer-auto-switch-indent-mode
(setq parinfer-auto-switch-indent-mode nil)  ;; default

t for enable, Parinfer will auto switch to Indent Mode whenever parens are balance in Paren Mode.

parinfer-auto-switch-indent-mode-when-closing
(setq parinfer-auto-switch-indent-mode-when-closing nil)  ;; default

t for enable, Parinfer will auto switch to Indent Mode when the inserted close parens (), ], }) balance the parens of current sexp.

parinfer-delay-invoke-threshold
(setq parinfer-delay-invoke-threshold 6000)  ;; default

When the length of text for processing is longer than this, Parinfer will process text after a idle delay instead of process immediately.

parinfer-delay-invoke-idle
(setq parinfer-delay-invoke-idle 0.3)  ;; default

The idle seconds before Parinfer processing text on large sexp.

(setq parinfer-extensions '(defaults pretty-parens smart-yank))

The extensions that will be enabled. The list could contain followings:

Extension Function defaults Should be enabled, basic compatibility pretty-parens Use dim style for Indent Mode, rainbow delimiters for Paren Mode smart-yank Yank will preserve indentation in Indent Mode, will preserve parens in Paren Mode smart-tab C-f & C-b on empty line will goto next/previous import indentation. paredit Introduce some paredit commands from paredit-mode. lispy Integration with Lispy. evil Integration with Evil. one Experimental on fuzz Indent Mode and Paren Mode. Not recommanded.
(setq parinfer-lighters '(" Parinfer:Indent" . "Parinfer:Paren"))

If Parinfer seems to be indenting incorrectly, ensure indent-tabs-mode is set to nil via (setq-default indent-tabs-mode nil). While Parinfer’s theoretical model is able to correctly handle indentation with tabs, parinfer-mode can currently only handle indentation using spaces.

shaunlebron
Create Parinfer.
oakmac
Bring Parinfer to Emacs with parinfer-elisp.
tumashu
Help me a lot in writing this plugin.
purcell & syohex
Advice and Tips for writing emacs plugin

Please open an issue if there’s any bug or suggestion, and PR is welcomed!

parinferlib.el from parinfer-elisp, is licensed under the ISC.

Rest part licensed under the GPLv3.


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4