]> git.eshelyaron.com Git - emacs.git/commitdiff
Multiline support in NS "Open Selected File" service.
authorJean-Christophe Helary <jean.christophe.helary@gmail.com>
Thu, 4 May 2017 18:32:40 +0000 (20:32 +0200)
committerAnders Lindgren <andlind@gmail.com>
Thu, 4 May 2017 18:32:40 +0000 (20:32 +0200)
* lisp/term/ns-win.el (ns-open-file-service): new function. Wraps the
original call in a (split-string) to create as many calls as there
are lines.
(ns-spi-service-call): Call `ns-open-file-service' instead of
`dnd-open-file'.

lisp/term/ns-win.el

index 70bd817d930e408928d4be9754395efdd0804362..4df5f0abe21878a80a487be730fe88e124086b93 100644 (file)
@@ -229,6 +229,15 @@ The properties returned may include `top', `left', `height', and `width'."
 
 (declare-function dnd-open-file "dnd" (uri action))
 
+;; Handles multiline strings that are passed to the "open-file" service.
+(defun ns-open-file-service (filenames)
+  "Open multiple files when selecting a multiline string FILENAMES."
+  (let ((filelist (split-string filenames "[\n\r]+" t "[ \u00A0\t]+")))
+    ;; The path strings are trimmed for spaces, nbsp and tabs.
+    (dolist (filestring filelist)
+      (dnd-open-file filestring nil))))
+
+
 (defun ns-spi-service-call ()
   "Respond to a service request."
   (interactive)
@@ -236,7 +245,7 @@ The properties returned may include `top', `left', `height', and `width'."
         (switch-to-buffer (generate-new-buffer "*untitled*"))
         (insert ns-input-spi-arg))
        ((string-equal ns-input-spi-name "open-file")
-        (dnd-open-file ns-input-spi-arg nil))
+        (ns-open-file-service ns-input-spi-arg))
        ((string-equal ns-input-spi-name "mail-selection")
         (compose-mail)
         (rfc822-goto-eoh)