about summary refs log tree commit diff stats
path: root/.emacs.d/lisp/init-kill.el
diff options
context:
space:
mode:
Diffstat (limited to '.emacs.d/lisp/init-kill.el')
-rw-r--r--.emacs.d/lisp/init-kill.el48
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