Fix EXWM edit.

master
Pierre Neidhardt 2020-07-14 13:32:21 +02:00
parent 2be3aeb311
commit ac1587b63d
2 changed files with 2 additions and 41 deletions

View File

@ -272,6 +272,7 @@ WIth SETTING to :ENABLE or :DISABLE, set"
(setq exwm-edit-bind-default-keys nil)
(when (require 'exwm-edit nil 'noerror)
(require 'patch-exwm-edit))
(exwm-input-set-key (kbd "C-c '") #'exwm-edit--compose)
(exwm-input-set-key (kbd "C-c C-'") #'exwm-edit--compose))
(provide 'init-exwm)

View File

@ -1,40 +0,0 @@
;; See https://github.com/agzam/exwm-edit/issues/7.
(defun exwm-edit--compose ()
"Edit text in an EXWM app."
(interactive)
;; flushing clipboard is required, otherwise `gui-get-selection` simply picks up what's in the clipboard (when nothing is actually selected in GUI)
(gui-set-selection nil nil)
(let* ((title (exwm-edit--buffer-title (buffer-name)))
(existing (get-buffer title))
(inhibit-read-only t)
(save-interprogram-paste-before-kill t)
(selection-coding-system 'utf-8) ; required for multilang-support
(sel (gui-get-selection))
(unmarked? (or (not sel)
(string= (substring-no-properties (or sel ""))
(substring-no-properties (or (car kill-ring) ""))))))
(when (derived-mode-p 'exwm-mode)
(setq exwm-edit--last-exwm-buffer (buffer-name))
(unless (bound-and-true-p global-exwm-edit-mode)
(global-exwm-edit-mode 1))
(if existing
(switch-to-buffer-other-window existing)
(progn
(when unmarked? (exwm-input--fake-key ?\C-a))
(let ((buffer (get-buffer-create title)))
(with-current-buffer buffer
(run-hooks 'exwm-edit-compose-hook)
(exwm-edit-mode 1)
(switch-to-buffer-other-window buffer)
(let ((sel (and (gui-get-selection) ; TODO: This is the fix, not sure why it works.
(gui-get-selection))))
(kill-new sel)
(insert sel))
(setq-local
header-line-format
(substitute-command-keys
"Edit, then exit with `\\[exwm-edit--finish]' or cancel with \ `\\[exwm-edit--cancel]'")))))))))
(provide 'patch-exwm-edit)