Org mode拖拽图片解析

org
elisp

#1

求问,在Org mode下面,怎么让从Emacs外部的图片拖拽到Emacs时,Emacs把图片放到指定的文件夹下,然后Org文件里面加入:[[file:图片文件名]],有没有插件能实现这个?


#2

可以试试这个


#3

这个是放到指定文件夹,那怎么做插入[[file:图片文件名]]


#4

可以直接拖进org buffer

插进去的那个图片就是file:xxx的link,自定义下载目录请看README


#5

试试 (emacs) Drag and Drop,不了解现成的方案,自己动手貌似没难点?

(setq dnd-protocol-alist
      (list (cons ""
                  (lambda (url action) (message "=> %S %S" url action)))))

;; 拖拽一个本地图片
;; => "file:///Users/xcy/Downloads/emacs.png" private

;; 本想拖拽一个远程图片(但变成了链接)
;; => "https://www.gnu.org/software/emacs/emacs.html" copy

;; 拖拽一个远程文件
;; => "https://www.gnu.org/software/emacs/images/teaser.png" copy

;; 这个函数还支持本地文件
(url-copy-file "file:///Users/xcy/Downloads/emacs.png" "x.png")

#6

主要是要支持拖拽本地和网络上的文件,然后放到指定文件夹里,最后生成[[file:FILENAME]]


#7

自己动手,丰衣足食。

(defun your-dnd-handler (url _action)
  (let ((filename (expand-file-name
                   (file-name-nondirectory url)
                   "~/Pictures")))
    (url-copy-file url filename)
    (insert (org-make-link-string filename))))

(setq dnd-protocol-alist
      '(("" . your-dnd-handler)))

#8

我先去看看文档先。。


#9

我觉得拖过去还不如截图呢,一些网站的图片链接并不能直接下载的,你有链接也下不到