[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/clipboard-collector 7c5659e 26/31: Add gpastel support
From: |
Stefan Monnier |
Subject: |
[elpa] externals/clipboard-collector 7c5659e 26/31: Add gpastel support |
Date: |
Sun, 6 Jan 2019 17:16:22 -0500 (EST) |
branch: externals/clipboard-collector
commit 7c5659e92dd6fde78c314e61e4a5d381a90efadf
Author: Clemens Radermacher <address@hidden>
Commit: Clemens Radermacher <address@hidden>
Add gpastel support
---
clipboard-collector.el | 61 +++++++++++++++++++++++++++++++++++---------------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/clipboard-collector.el b/clipboard-collector.el
index 8ab3a89..ac8a3ca 100644
--- a/clipboard-collector.el
+++ b/clipboard-collector.el
@@ -38,6 +38,7 @@
"This keymap sets up the exit binding for clipboard collection
commands.")
+
;;;###autoload
(define-minor-mode clipboard-collector-mode
"Start collecting clipboard items.
@@ -51,35 +52,52 @@ is active."
:global t
(if clipboard-collector-mode
(progn
- (setq clipboard-collector--transient-exit
- (set-transient-map clipboard-collector-mode-map t))
- (setq clipboard-collector--enable-clipboard
- select-enable-clipboard)
- (setq select-enable-clipboard t)
;; set defaults
(setq clipboard-collector--finish-function
#'clipboard-collector-finish-default)
(setq clipboard-collector--rules '((".*" "%s")))
- ;; reset clip data
- (setq clipboard-collector--last-clip "")
- (funcall interprogram-cut-function "")
+
+ ;; init clip data
(setq clipboard-collector--items nil)
- (setq clipboard-collector--timer
- (run-at-time 0 0.2 #'clipboard-collector--try-collect))
+ (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)))
+
+ ;; 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)
+ (setq clipboard-collector--timer
+ (run-at-time 0 0.2 #'clipboard-collector--try-collect)))
+
+ ;; make keymap highest priority
+ (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)
- (setq select-enable-clipboard
- clipboard-collector--enable-clipboard)
(when clipboard-collector--timer
(cancel-timer clipboard-collector--timer))
(setq clipboard-collector--timer nil)))
-(defvar clipboard-collector--enable-clipboard nil
- "Save user setting for `select-enable-clipboard'.")
+(defvar clipboard-collector--interprogram-function nil
+ "Save user setting for `interprogram-cut-function'.")
+
-(defvar clipboard-collector--last-clip nil
+(defvar clipboard-collector--last-clip ""
"Save last clipboard entry.")
@@ -101,10 +119,17 @@ contents transformed according to matched rule."
(cl-return (cons (car rules)
(format format main)))))))
-(defun clipboard-collector--try-collect ()
- "If Clibboard changed and matches rule collect it."
+
+(defun clipboard-collector--try-collect-last-kill ()
+ (clipboard-collector--try-collect (or (car kill-ring) "")))
+
+(defun clipboard-collector--try-collect (&optional clip)
+ "If Clibboard changed and matches rule collect it.
+
+If CLIP is not given `gui-get-selection' is used to check for the
+clipboard entry."
(condition-case nil
- (let ((clip (gui-get-selection 'CLIPBOARD))
+ (let ((clip (or clip (gui-get-selection 'CLIPBOARD)))
(item nil))
(when (and (not (string-empty-p clip))
(not (string= clip
- [elpa] externals/clipboard-collector 1b96653 06/31: Use C-c C-c binding, (continued)
- [elpa] externals/clipboard-collector 1b96653 06/31: Use C-c C-c binding, Stefan Monnier, 2019/01/06
- [elpa] externals/clipboard-collector e587974 14/31: Rephrase description, Stefan Monnier, 2019/01/06
- [elpa] externals/clipboard-collector 4bbc844 15/31: Rephrase desc. again, Stefan Monnier, 2019/01/06
- [elpa] externals/clipboard-collector d3e2659 28/31: Update Readme, Stefan Monnier, 2019/01/06
- [elpa] externals/clipboard-collector ff6c25c 22/31: Depend on emacs 25 and linux, Stefan Monnier, 2019/01/06
- [elpa] externals/clipboard-collector 4610a49 31/31: Update commentary, Stefan Monnier, 2019/01/06
- [elpa] externals/clipboard-collector dc4b60f 20/31: Cancel on error, Stefan Monnier, 2019/01/06
- [elpa] externals/clipboard-collector d7fff65 09/31: Rephrase, Stefan Monnier, 2019/01/06
- [elpa] externals/clipboard-collector f2702a8 12/31: Cleanup, Stefan Monnier, 2019/01/06
- [elpa] externals/clipboard-collector a6a13eb 05/31: Rephrase description, Stefan Monnier, 2019/01/06
- [elpa] externals/clipboard-collector 7c5659e 26/31: Add gpastel support,
Stefan Monnier <=
- [elpa] externals/clipboard-collector 130af9e 17/31: Use mode instead of entry/exit command, Stefan Monnier, 2019/01/06