branch: elpa/markdown-mode
commit 0a522bf682c977b39f449b0edc63ebf1db14aa04
Merge: f945f12d51 8f76852024
Author: Shohei YOSHIDA <syo...@gmail.com>
Commit: GitHub <nore...@github.com>

    Merge pull request #884 from jrblevin/support-dnd-windows
    
    Support D&D for Windows and multiple D&D
---
 CHANGES.md       |  1 +
 markdown-mode.el | 19 +++++++++++++++++--
 2 files changed, 18 insertions(+), 2 deletions(-)

diff --git a/CHANGES.md b/CHANGES.md
index e3131f5d50..1a5c2326ad 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -8,6 +8,7 @@
 *   Bug fixes:
 
 *   Improvements:
+    - Support drag and drop features on Windows and multiple files' drag and 
drop
 
 # Markdown Mode 2.7
 
diff --git a/markdown-mode.el b/markdown-mode.el
index 18fadee8ae..a914eb3741 100644
--- a/markdown-mode.el
+++ b/markdown-mode.el
@@ -10132,6 +10132,15 @@ rows and columns and the column alignment."
         (markdown-insert-inline-image link-text file)
       (markdown-insert-inline-link link-text file))))
 
+(defun markdown--dnd-multi-local-file-handler (urls action)
+  (let ((multile-urls-p (> (length urls) 1)))
+    (dolist (url urls)
+      (markdown--dnd-local-file-handler url action)
+      (when multile-urls-p
+        (insert " ")))))
+
+(put 'markdown--dnd-multi-local-file-handler 'dnd-multiple-handler t)
+
 
 ;;; Mode Definition  ==========================================================
 
@@ -10261,8 +10270,14 @@ rows and columns and the column alignment."
             #'markdown--inhibit-electric-quote nil :local)
 
   ;; drag and drop handler
-  (setq-local dnd-protocol-alist  (cons '("^file:///" . 
markdown--dnd-local-file-handler)
-                                        dnd-protocol-alist))
+  (let ((dnd-handler (if (>= emacs-major-version 30)
+                         #'markdown--dnd-multi-local-file-handler
+                       #'markdown--dnd-local-file-handler)))
+    (setq-local dnd-protocol-alist (append
+                                    (list (cons "^file:///" dnd-handler)
+                                          (cons "^file:/[^/]" dnd-handler)
+                                          (cons "^file:[^/]" dnd-handler))
+                                    dnd-protocol-alist)))
 
   ;; media handler
   (when (version< "29" emacs-version)

Reply via email to