今天尝试使用org-download,在doomemacs环境里安装,config.el里加入
(use-package org-download
:ensure t
;;将截屏功能绑定到快捷键:Ctrl + Shift + Y
:bind (“f9” . org-download-screenshot)
:config
(require 'org-download)
;; Drag and drop to Dired
(add-hook 'dired-mode-hook 'org-download-enable)
)
重启emacs后,用鼠标左键点住chrome浏览器里图片,拉到emacs里释放左键,发现没有变化。
请问可能是哪个步骤不对?
我在论坛上搜索查看,都说org-download好,似乎没人遇到过这种简单使用问题,都有些不好意思问。。。
因为你没有给 org-mode enable org-download (add-hook 'org-mode-hook 'org-download-enable)
,另外 config 里面不需要加 require,配置参考:
(use-package org-download
:ensure t
:hook ((org-mode dired-mode) . org-download-enable)
:config
(defun +org-download-method (link)
(org-download--fullname (org-link-unescape link)))
(setq org-download-method '+org-download-method)
(setq org-download-annotate-function (lambda (_link) "")
org-download-method 'attach
org-download-screenshot-method "screencapture -i %s"))
1 个赞
org-download只支持拖放图片,我用windows,参考着org-download写了几个函数,不仅能拖放图片,也能拖放其它文件作为附件。
有convert.exe,还能从剪贴板获取图片放进去。
补充一点,如果你的操作系统是Windows的话。
Windows下一个应用要想接收浏览器等拖放的URL、文本等的话,需要通过RegisterDragDrop注册实现 IDropTarget,但是Emacs在Windows下只处理了WM_DROPFILES消息,所以当你从浏览器拖放图片到Emacs触发不了[drag-n-drop]
消息,对应绑定的命令w32-drag-n-drop
也不会执行,所以拖放不了。
只能拖放文件、文件夹等等了(就WM_DROPFILES能处理的部分)。
org-download本来就支持从剪贴板放图片。org-download-clipboard
我就是从它里面抽出来的,主要是为了能拖放其它格式的文件到org中作为附件。
@owensys 请问一个 org-download 在 Windows10 系统下使用的问题。
Windows系统自带了一个C:\WINDOWS\system32\convert.exe
命令,但是 org-download 依赖 imagemagick/convert
,调用的时候总是会调用系统的 convert
。请问大家是怎么解决这个冲突的?
我的 imagemagick 是 scoop 安装的,如果把 scoop 的Path
设置到系统环境变量最高会不会造成问题?
請問org-download具體怎麼用?
我試着把圖片拖進emacs,但怎麼是一個單獨的buffer了?並沒有插入我的文檔啊。
已经解决:
在 Windows 下可以通过 imagemagick 官网下载安装包 , 安装的时候勾选 安装 convert 的选项。
安装好以后,C:\Program Files\ImageMagick-7.1.0-Q16-HDRI
这个路径默认已经加入到系统的 Path 中。这时在终端输入convert --version
找到的应该就是 imageMagick的 convert
了。
然后随便在网上复制一张图片到剪贴板,在org-mode 中执行这个命令 M-x,org-download-clipboard
就可以将剪贴版的图片插入到 org 文档中了。
详细内容,可以参考这个issue
应该也支持 Irfanview , 但我尝试了,没成功。
我之前也遇到了这个问题,即使安装了ImageMagick也得确保它的路径在PATH环境变量的最前面,否则找到的就是系统自带的convert.exe,不过由于是系统自带的convert.exe,可能会有程序去用这个东西,我怕如果把ImageMagick的路径提到PATH之前,导致其他原本要用系统自带的convert.exe现在变成去用ImageMagick的convert.exe会导致出错,同时我还不确定除了convert.exe还有没有其他同名程序会被ImageMagick的覆盖。
编辑下答案。。。这里我不该用advice,定义个新command,绑定按键到新command就好。
一个可选的解决方案是,覆盖org-download-clipboard
,让它使用magick convert,不要用convert:
(when (memq system-type '(windows-nt cygwin))
(define-advice org-download-clipboard (:override (&rest args))
"Copy image from clipboard to a file using 'magick convert' instead of 'convert'."
(unless (executable-find "magick")
(user-error
"Please install ImageMagick and put its path inside the PATH environment variable"))
(let ((org-download-screenshot-method "magick convert clipboard: %s"))
(apply #'org-download-screenshot args))))
不过由于覆盖了整个函数的实现,感觉有点不干净。。。不过org-download也没提供相应的定制选项,我也没找到比较好的修改点。
CloseToZero:
define-advice
用 advice-add 机制吧,感觉更简单,define-advice 机制可能已经被废弃了
是defadvice
被废弃了吧?define-advice
似乎仅仅对advice-add
进行了一个简单的封装而已。
前者22.1版本引入的,后者25.1版本引入的。
。。。话说我干嘛加advice,定义个新的command,绑定到新的command不就好了:
没事,系统的 convert 一般用不到。他就是用来转磁盘格式的(比如FAT32 -> NTFS),需要用的话再改一下系统变量就好了。
1 个赞
不过我还是喜欢 advice-add, define-advice 好像类似 defadvice, 实在是适应不了。。。
1 个赞
我也碰到这个问题,这个bug是chrome本身的造成的。
可以在init.el中添加如下内容以解决这个问题
(defun my-x-dnd-test-function (_window _action types)
"X-DND test function that returns copy instead of private as action
Otherwise the same as the default function"
(let ((type (x-dnd-choose-type types)))
(when type (cons 'copy type))))
(setq x-dnd-test-function #'my-x-dnd-test-function)
参考连接:
files
https://debbugs.gnu.org/cgi/bugreport.cgi?bug=19885