Emacs minor-mode that ensures pasted (yanked) text has the correct indentation level.
Do you often find yourself fixing the indentation of a code snippet right after pasting it somewhere? Never again! yank-indent is the answer. ## Features - `yank-indent-mode` minor-mode that automatically calls `indent-region` on yanked/pasted text. - `global-yank-indent-mode` which is a set-it-and-forget-it style global mode that enables `yank-indent-mode` in relevant buffers, with a sensible default list of major-modes to exclude. - By default does not trigger `indent-region` if pasted text is longer than 5000 characters. This threshold can be can be customized with `yank-indent-threshold`. ## Installation ### use-package + straight.el ```elisp (use-package yank-indent :straight (:host github :repo "jimeh/yank-indent") :config (global-yank-indent-mode t)) ``` ### Manual Place `yank-indent.el` somewhere in your `load-path` and require it. For example `~/.emacs.d/vendor`: ```elisp (add-to-list 'load-path "~/.emacs.d/vendor") (require 'yank-indent) (global-yank-indent-mode t) ``` ## Usage ### `global-yank-indent-mode` With `global-yank-indent-mode` enabled, you will find that `yank-indent-mode` is automatically enabled in relevant buffers. The defaults will specifically exclude common languages which are indentation sensitive like Python, YAML, Makefile, etc. For fine-grained control over which major-modes it is enabled in or not, see customization options with `M-x customize-group RET yank-indent`. ### `yank-indent-mode` If you prefer not to use the global mode, you can add `yank-indent-mode` as a hook to relevant major-modes, or even manually toggle it on and off with `M-x yank-indent-mode`. To skip the indent operation for a single yank command, use a prefix command, so `C-u C-y` instead of just `C-y`. Keep in mind that the include/exclude major-mode customizations only affect the global mode and which buffers it enables `yank-indent-mode` in. If you explicitly enable `yank-indent-mode` in a buffer, it will operate like normal regardless of what major-mode the buffer is using.