emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/clipboard-collector 15819de: * clipboard-collector.el:


From: Stefan Monnier
Subject: [elpa] externals/clipboard-collector 15819de: * clipboard-collector.el: Fix compiler warnings
Date: Tue, 8 Jan 2019 12:39:36 -0500 (EST)

branch: externals/clipboard-collector
commit 15819debcce48f48b335373a414b5013153025ee
Author: Stefan Monnier <address@hidden>
Commit: Stefan Monnier <address@hidden>

    * clipboard-collector.el: Fix compiler warnings
    
    Require subr-x.
    (clipboard-collector-mode): Use add-function for interprogram-cut-function.
    Don't presume that the mode is enabled before it's disabled.
    Declare the variable manually since we don't want it to be a defcustom,
    even though it's global.
    (clipboard-collector--collect): Fix apparent typo that made `i2` unused.
    (clipboard-collector-mode-map): Don't bother with prog1.
    (clipboard-collector--last-clip, clipboard-collector--items)
    (clipboard-collector--rules, clipboard-collector--finish-function)
    (clipboard-collector--timer, clipboard-collector-display-function):
    Move before first use.
    (clipboard-collector--transient-exit): Declare.
---
 clipboard-collector.el | 132 +++++++++++++++++++++++++------------------------
 1 file changed, 67 insertions(+), 65 deletions(-)

diff --git a/clipboard-collector.el b/clipboard-collector.el
index e96d587..d8773c9 100644
--- a/clipboard-collector.el
+++ b/clipboard-collector.el
@@ -37,15 +37,55 @@
 
 ;;; Code:
 
+(eval-when-compile (require 'subr-x))   ;string-empty-p
 
 (defvar clipboard-collector-mode-map
   (let ((map (make-sparse-keymap)))
-    (prog1 map
-      (define-key map (kbd "C-c C-c") 'clipboard-collector-finish)))
-  "This keymap sets up the exit binding for clipboard collection
-  commands.")
+    (define-key map (kbd "C-c C-c") 'clipboard-collector-finish)
+    map)
+  "Keymap active during clipboard collection commands.")
 
 
+(defvar clipboard-collector--last-clip ""
+  ;; FIXME: the docstring should say what it holds, rather than what the code
+  ;; using it does (IOW it's the code which "save"s, not the variable).
+  ;; Same comment applies to clipboard-collector--items.
+  "Save last clipboard entry.")
+
+
+(defvar clipboard-collector--items nil
+  "Saves collected items.")
+
+
+;; configure those for collecting
+(defvar clipboard-collector--rules '((".*" "%s"))
+  "Clipboard collection rules.
+
+Uses the following list format:
+
+    (MATCH-REGEX [TRANSFORM-FORMAT-STRING] [TRANSFORM-CLIPBOARD-FUNC])
+
+MATCH-REGEX is the triggering regex, if clipboard contents match
+this regex the clipboard entry will be collected.
+
+Optional TRANSFORM-FORMAT-STRING should be a format string where
+the placeholder is replaced by the clipboard contents.
+
+If you want to transform the clipboard contents using a function
+specify TRANSFORM-CLIPBOARD-FUNC. This is applied before contents
+are applied to TRANSFORM-FORMAT-STRING and can use match-data of
+the matched regex.")
+
+(defvar clipboard-collector--finish-function
+  #'clipboard-collector-finish-default
+  "Default function used by `clipboard-collector-finish'.")
+
+(defvar clipboard-collector--timer nil)
+
+(defvar clipboard-collector--transient-exit nil)
+
+(defvar clipboard-collector-mode nil)
+
 ;;;###autoload
 (define-minor-mode clipboard-collector-mode
   "Start collecting clipboard items.
@@ -57,55 +97,47 @@ have precedence over all other ones when activated,
 is active."
   :lighter " cc"
   :global t
+  :variable clipboard-collector-mode
   (if clipboard-collector-mode
       (progn
-        ;; set defaults
+        ;; Set defaults.
         (setq clipboard-collector--finish-function
               #'clipboard-collector-finish-default)
         (setq clipboard-collector--rules '((".*" "%s")))
 
-        ;; init clip data
+        ;; Init clip data.
         (setq clipboard-collector--items nil)
         (setq clipboard-collector--last-clip
               (or (ignore-errors (gui-get-selection 'CLIPBOARD))
                   ""))
 
-        ;; intercept kills inside emacs
-        (setq clipboard-collector--interprogram-function
-              interprogram-cut-function)
-        (setq interprogram-cut-function
-              (lambda (text)
-                (funcall clipboard-collector--interprogram-function text)
-                ;; collect the final
-                (clipboard-collector--try-collect text)))
+        ;; Intercept kills inside Emacs.
+        (add-function :after interprogram-cut-function
+                      #'clipboard-collector--try-collect)
 
-        ;; outside emacs use gpastel if available or poll the clipboard
+        ;; Outside Emacs use gpastel if available or poll the clipboard.
         (if (bound-and-true-p gpastel-mode)
             (add-hook 'gpastel-update-hook
-                      'clipboard-collector--try-collect-last-kill)
+                      #'clipboard-collector--try-collect-last-kill)
           (setq clipboard-collector--timer
                 (run-at-time 0 0.2 #'clipboard-collector--try-collect)))
 
-        ;; make keymap highest priority
+        ;; Make keymap highest priority.
+        ;; FIXME: Say why it isn't sufficient to have the map in
+        ;; minor-mode-map-alist?
         (setq clipboard-collector--transient-exit
               (set-transient-map clipboard-collector-mode-map t))
         (message "Start collecting, finish with %s."
                  (substitute-command-keys "\\[clipboard-collector-finish]")))
 
-    (setq interprogram-cut-function
-          clipboard-collector--interprogram-function)
-    (funcall clipboard-collector--transient-exit)
+    (remove-function interprogram-cut-function 
#'clipboard-collector--try-collect)
+    (when clipboard-collector--transient-exit
+      (funcall clipboard-collector--transient-exit))
+    (remove-hook 'gpastel-update-hook
+                 #'clipboard-collector--try-collect-last-kill)
     (when clipboard-collector--timer
-      (cancel-timer clipboard-collector--timer))
-    (setq clipboard-collector--timer nil)))
-
-
-(defvar clipboard-collector--interprogram-function  nil
-  "Save user setting for `interprogram-cut-function'.")
-
-
-(defvar clipboard-collector--last-clip ""
-  "Save last clipboard entry.")
+      (cancel-timer clipboard-collector--timer)
+      (setq clipboard-collector--timer nil))))
 
 
 (defun clipboard-collector--apply-rule (clip &optional rules)
@@ -147,9 +179,11 @@ clipboard entry."
     (error (progn (message "Error during clipboard collection, exited 
`clipboard-collector-mode'")
                   (clipboard-collector-mode -1)))))
 
+(defvar clipboard-collector-display-function
+  #'clipboard-collector-display
+  "Function to display collected item.
 
-(defvar clipboard-collector--items nil
-  "Saves collected items.")
+Called with collected item.")
 
 (defun clipboard-collector--collect (item)
   "Collect ITEM.
@@ -158,36 +192,10 @@ ITEM is added to `clipboard-collector--items'."
   ;; replace if new match for same rule
   (cl-delete item clipboard-collector--items
              :test (lambda (i1 i2)
-                     (string= (car i1) (car i1))))
+                     (string= (car i1) (car i2))))
   (push item clipboard-collector--items)
   (funcall clipboard-collector-display-function (cdr item)))
 
-
-;; configure those for collecting
-(defvar clipboard-collector--rules '((".*" "%s"))
-  "Clipboard collection rules.
-
-Uses the following list format:
-
-    (match-regex [transform-format-string] [transform-clipboard-func])
-
-MATCH-REGEX is the triggering regex, if clipboard contents match
-this regex the clipboard entry will be collected.
-
-Optional TRANSFORM-FORMAT-STRING should be a format string where
-the placeholder is replaced by the clipboard contents.
-
-If you want to transform the clipboard contents using a function
-specify TRANSFORM-CLIPBOARD-FUNC. This is applied before contents
-are applied to TRANSFORM-FORMAT-STRING and can use match-data of
-the matched regex.")
-
-(defvar clipboard-collector--finish-function
-  #'clipboard-collector-finish-default
-  "Default function used by `clipboard-collector-finish'.")
-
-(defvar clipboard-collector--timer nil)
-
 (defun clipboard-collector-finish ()
   "Finish collecting clipboard items.
 
@@ -197,12 +205,6 @@ Uses `clipboard-collector--finish-function' ."
   (funcall clipboard-collector--finish-function
            (nreverse (mapcar #'cdr clipboard-collector--items))))
 
-(defvar clipboard-collector-display-function
-  #'clipboard-collector-display
-  "Function to display collected item.
-
-Called with collected item.")
-
 (defun clipboard-collector-display (item)
   "Display message for ITEM."
   (message "Collected: '%s'" item))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]