]> code.delx.au - gnu-emacs-elpa/blobdiff - packages/smart-yank/smart-yank.el
smart-yank version 0.1.1
[gnu-emacs-elpa] / packages / smart-yank / smart-yank.el
index bde6acb80d8c7397f7333d254b6230070747211a..f61acc22c0f57fbf13a210812539ddc50b5e6bcc 100644 (file)
@@ -7,7 +7,7 @@
 ;; Created: 14 May 2016
 ;; Keywords: convenience
 ;; Compatibility: GNU Emacs 24
-;; Version: 0.1
+;; Version: 0.1.1
 ;; Package-Requires: ((emacs "24"))
 
 
@@ -95,7 +95,7 @@ See `smart-yank-yank-pop' for details."
                  (const helm-show-kill-ring)
                  (function :tag "Other Function")))
 
-(defvar smart-yank-map
+(defvar smart-yank-mode-map
   (let ((map (make-sparse-keymap)))
     (define-key map [remap yank-pop] #'smart-yank-yank-pop)
     map)
@@ -130,9 +130,10 @@ yanked text \"to the beginning\" of the kill ring."
         (setq kill-ring (cons last-yank (delete last-yank kill-ring)))
         (smart-yank-reset-yank-pointer)))))
 
-(let ((r (smart-yank--stopwatch)))
-  (defun smart-yank-yank-pop (&optional arg)
-    "\"smart-yank\"'s private version of `yank-pop'.
+(defalias 'smart-yank-yank-pop
+  (let ((r (smart-yank--stopwatch)))
+    (lambda (&optional arg)
+      "\"smart-yank\"'s private version of `yank-pop'.
 
 When called directly after a `yank' command (including itself),
 call `yank-pop'.
@@ -145,19 +146,19 @@ yanked text; in addition call
 When not called after a yank, yank the next-to-the-last
 `kill-ring' entry; with prefix arg, call the
 `smart-yank-browse-kill-ring-command'."
-    (interactive "P")
-    (let ((diff (funcall r)))
-      (cond
-       ((not (eq last-command 'yank)) (if arg (call-interactively smart-yank-browse-kill-ring-command)
-                                        (rotate-yank-pointer 1)
-                                        (yank)))
-       ((or (not diff)
-            (> diff smart-yank-yank-pop-multikey-delay))
-                                      (call-interactively #'yank-pop))
-       (t                             (funcall (or yank-undo-function #'delete-region)
-                                               (region-beginning) (region-end))
-                                      (when smart-yank-browse-kill-ring-command
-                                        (call-interactively smart-yank-browse-kill-ring-command)))))))
+      (interactive "P")
+      (let ((diff (funcall r)))
+        (cond
+         ((not (eq last-command 'yank)) (if arg (call-interactively smart-yank-browse-kill-ring-command)
+                                          (rotate-yank-pointer 1)
+                                          (yank)))
+         ((or (not diff)
+              (> diff smart-yank-yank-pop-multikey-delay))
+          (call-interactively #'yank-pop))
+         (t                             (funcall (or yank-undo-function #'delete-region)
+                                                 (region-beginning) (region-end))
+                                        (when smart-yank-browse-kill-ring-command
+                                          (call-interactively smart-yank-browse-kill-ring-command))))))))
 
 (declare-function smart-yank-yank-pop 'smart-yank)
 
@@ -180,7 +181,7 @@ Turning on this mode has the following effects:
    element is automatically \"moved to the first position\" of
    the `kill-ring' so that `yank' invoked later will again yank
    this element."
-  :global t :keymap smart-yank-map
+  :global t
   (if smart-yank-mode
       (advice-add 'yank :before #'smart-yank--before-ad)
     (advice-remove 'yank #'smart-yank--before-ad)))