gpastel
- Description
- Integrates GPaste with the kill-ring
- Latest
- gpastel-0.5.0.0.20231030.71342.tar (.sig), 2024-Mar-31, 70.0 KiB
- Maintainer
- Damien Cassou <damien@cassou.me>
- Atom feed
- gpastel.xml
- Website
- https://github.com/DamienCassou/gpastel
- Browse ELPA's repository
- CGit or Gitweb
- Badge
To install this package from Emacs, use package-install
or list-packages
.
Full description
1. gpastel
<p> <a href="https://stable.melpa.org/#/gpastel"> <img alt="MELPA Stable" src="> </a>
<a href="https://melpa.org/#/gpastel"> <img alt="MELPA" src="> </a>
<a href="https://gitlab.petton.fr/DamienCassou/gpastel/commits/master"> <img alt="pipeline status" src="" /> </a> </p>
1.1. Summary
GPaste is a clipboard management system. The Emacs package gpastel
makes sure that every copied text in GPaste is also in the Emacs
kill-ring
.
Emacs has built-in support for synchronizing the system clipboard with
the kill-ring
(see the variables interprogram-paste-function
and
save-interprogram-paste-before-kill
). This support is not optimal
because it makes the kill-ring
only contain the last text of
consecutive copied texts. In other words, a user cannot copy multiple
pieces of text from an external application without going back to
Emacs in between.
On the contrary, gpastel supports this scenario by hooking into the
GPaste clipboard manager. This means that the kill-ring
will
always contain everything the user copies in external applications,
not just the last piece of text.
Additionally, when using EXWM (the Emacs X Window Manager), gpastel
makes it possible for the user to use the kill-ring
from external
applications.
1.2. Installing
Add the following to your initialization file:
(add-to-list 'load-path "~/.emacs.d/lib/gpastel/")
You also have to tell gpastel to start listening for GPaste events. If
you are using EXWM, add gpastel-mode
to
exwm-init-hook
. Otherwise, just add this line to your initialization file:
(gpastel-mode)
1.3. Usage
There is nothing more to do than copying text the normal way. All
copied texts should appear in the Emacs kill-ring
now.
1.3.1. For EXWM users
If you use EXWM and you want to access the kill-ring
from any
application (instead of the less powerful system clipboard), I
recommend you either install and configure counsel or
browse-kill-ring. Then, you can add one of the following two
configuration snippets to your initialization file.
- For EXWM+counsel users
Add the following to your initialization file:
(exwm-input-set-key (kbd "M-y") #'my/exwm-counsel-yank-pop) (defun my/exwm-counsel-yank-pop () "Same as `counsel-yank-pop' and paste into exwm buffer." (interactive) (let ((inhibit-read-only t) ;; Make sure we send selected yank-pop candidate to ;; clipboard: (yank-pop-change-selection t)) (call-interactively #'counsel-yank-pop)) (when (derived-mode-p 'exwm-mode) ;; https://github.com/ch11ng/exwm/issues/413#issuecomment-386858496 (exwm-input--set-focus (exwm--buffer->id (window-buffer (selected-window)))) (exwm-input--fake-key ?\C-v)))
- For EXWM+browse-kill-ring users
Ram Krishnan gives us the following piece of code for browse-kill-ring users:
(define-advice browse-kill-ring-insert-and-highlight (:around (old-function str) exwm-paste) "Paste the selection appropriately in exwm mode buffers." (if (not (derived-mode-p 'exwm-mode)) (funcall old-function str) (kill-new str) (exwm-input--fake-key ?\C-v)))
1.4. License
See COPYING. Copyright (c) 2018-2023 Damien Cassou.
<a href="https://liberapay.com/DamienCassou/donate"> <img alt="Donate using Liberapay" src=""> </a>
Old versions
gpastel-0.5.0.0.20181231.183754.tar.lz | 2021-Mar-18 | 15.4 KiB |
gpastel-0.5.0.0.20181229.140405.tar.lz | 2020-Dec-14 | 15.6 KiB |
News
* 0.4.0 - Add the global minor mode ~gpastel-mode~ (idea from Stefan Monnier). Use that instead of ~gpastel-start-listening~ which may soon be deprecated. - Upgrade Emacs requirement to at least 24.4 * 0.3.0 - Make ~interprogram-paste-function~ an empty lambda instead of nil: It seems that some packages require this variable to reference a function. * 0.2.0 Initial release * COMMENT Emacs ;; Local Variables: ;; mode: org ;; End: