Create repo for yank-indent
This commit is contained in:
parent
ab21ac1723
commit
28f6ca7dcd
47
repos/x-lib/yank-indent.el
Normal file
47
repos/x-lib/yank-indent.el
Normal file
@ -0,0 +1,47 @@
|
||||
;;; yank-indent.el -*- lexical-binding: t -*-
|
||||
|
||||
;; Automatically indent yanked text in programming modes.
|
||||
|
||||
;;
|
||||
;;; Variables:
|
||||
|
||||
(defvar +x-yank-indent--additional-modes
|
||||
'(LaTeX-mode TeX-mode)
|
||||
"Additional modes in which to indent yanked(-popped) regions.
|
||||
Only modes that don't derive from `prog-mode' should be listed.")
|
||||
|
||||
(defvar +x-yank-indent--blacklisted-modes
|
||||
'(python-mode slim-mode haml-mode yaml-mode)
|
||||
"Modes for which auto-indenting is suppressed.")
|
||||
|
||||
(defvar +x-yank-indent--threshold 10000
|
||||
"Threshold (# chars) for auto yank indentation.")
|
||||
|
||||
;;
|
||||
;;; Code:
|
||||
|
||||
;; -----------------------------------------------------------------------------
|
||||
;; To configure, add `+x-yank-indent-a' as `:after' advice to all the yank-like
|
||||
;; functions that you would like to auto-indent. For example:
|
||||
;;
|
||||
;; (advice-add 'yank :after #'+x-yank-indent-a)
|
||||
;; (advice-add 'yank-pop :after #'+x-yank-indent-a)
|
||||
;; (advice-add 'consult-yank-pop :after #'+x-yank-indent-a)
|
||||
;; -----------------------------------------------------------------------------
|
||||
|
||||
;;;###autoload
|
||||
(defun +x-yank-indent-a (&optional _)
|
||||
"Indent yanked text.
|
||||
Except when used with prefix arg or in one of the excluded modes."
|
||||
(when (and (not current-prefix-arg)
|
||||
(not (member major-mode +x-yank-indent--blacklisted-modes))
|
||||
(or (derived-mode-p 'prog-mode)
|
||||
(member major-mode +x-yank-indent--additional-modes)))
|
||||
(let ((transient-mark-mode nil)
|
||||
(beg (region-beginning))
|
||||
(end (region-end)))
|
||||
(unless (> (- end beg) +x-yank-indent--threshold)
|
||||
(indent-region beg end nil)))))
|
||||
|
||||
(provide 'yank-indent)
|
||||
;;; yank-indent.el ends here
|
Loading…
Reference in New Issue
Block a user