From 6044efe76e8baec4395449675f4ad662183f2f85 Mon Sep 17 00:00:00 2001 From: Po Lu Date: Fri, 29 Apr 2022 04:22:17 +0000 Subject: [PATCH] Fix file name selection conversion on Haiku * lisp/term/haiku-win.el (haiku-normal-selection-encoders): Register new encoder. (haiku-select-encode-file-name): New function. --- lisp/term/haiku-win.el | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/lisp/term/haiku-win.el b/lisp/term/haiku-win.el index 403c737c114..09210792468 100644 --- a/lisp/term/haiku-win.el +++ b/lisp/term/haiku-win.el @@ -65,7 +65,8 @@ the type of DATA inside the system message (see the doc string of `haiku-drag-message' for more details).") (defvar haiku-normal-selection-encoders '(haiku-select-encode-xstring - haiku-select-encode-utf-8-string) + haiku-select-encode-utf-8-string + haiku-select-encode-file-name) "List of functions which act as selection encoders. These functions accept two arguments SELECTION and VALUE, and return an association appropriate for a serialized system @@ -226,6 +227,13 @@ VALUE will be encoded as UTF-8 and stored under the type (list "text/plain" 1296649541 (encode-coding-string value 'utf-8-unix)))) +(defun haiku-select-encode-file-name (_selection value) + "Convert VALUE to a system message association. +This takes the file name of VALUE's buffer (if it is an overlay +or a pair of markers) and turns it into a file system reference." + (when (setq value (xselect--selection-bounds value)) + (list "refs" 'ref (buffer-file-name (nth 2 value))))) + (cl-defmethod gui-backend-get-selection (type data-type &context (window-system haiku)) (if (eq data-type 'TARGETS) @@ -297,8 +305,7 @@ VALUE will be encoded as UTF-8 and stored under the type (message "Don't know how to drop any of: %s" (mapcar #'car string))))))) -(define-key special-event-map [drag-n-drop] - 'haiku-drag-and-drop) +(define-key special-event-map [drag-n-drop] 'haiku-drag-and-drop) (defvaralias 'haiku-use-system-tooltips 'use-system-tooltips) -- 2.39.2