diff options
Diffstat (limited to '.emacs.d/lisp/init-kill.el')
-rw-r--r-- | .emacs.d/lisp/init-kill.el | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/.emacs.d/lisp/init-kill.el b/.emacs.d/lisp/init-kill.el new file mode 100644 index 0000000..ceada0d --- /dev/null +++ b/.emacs.d/lisp/init-kill.el @@ -0,0 +1,48 @@ +;;; init-kill.el --- Kill Ring Configuration File -*- lexical-binding: t -*- +;;; Commentary: +;; Contains code copied from prelude-editor.el +;;; Code: + +(use-package browse-kill-ring + :after key-chord + :config + (browse-kill-ring-default-keybindings) + (key-chord-define-global "yy" 'browse-kill-ring)) + +(use-package easy-kill + :bind + ([remap kill-ring-save] . easy-kill) + ([remap mark-sexp] . easy-mark)) + +(use-package emacs + :config + (defadvice exchange-point-and-mark (before deactivate-mark activate compile) + "When called with no active region, do not activate mark." + (interactive + (list (not (region-active-p))))) + + (defun yank-advised-indent-function (beg end) + "Do indentation, as long as the region isn't too large." + (if (<= (- end beg) 1000) + (indent-region beg end nil))) + + (defmacro advise-commands (advice-name commands class &rest body) + "Apply advice named ADVICE-NAME to multiple COMMANDS. + +The body of the advice is in BODY." + `(progn + ,@(mapcar (lambda (command) + `(defadvice ,command (,class ,(intern (concat (symbol-name command) "-" advice-name)) activate) + ,@body)) + commands))) + + (advise-commands "indent" (yank yank-pop) after + (if (and (not (ad-get-arg 0)) + (not (member major-mode '(conf-mode coffee-mode haml-mode python-mode slim-mode yaml-mode))) + (or (derived-mode-p 'prog-mode) + (member major-mode '(LaTeX-mode TeX-mode)))) + (let ((transient-mark-mode nil)) + (yank-advised-indent-function (region-beginning) (region-end)))))) + +(provide 'init-kill) +;;; init-kill.el ends here |