在组织模式下:一键打开附件

In org-mode: Open attachment with one keystroke

因为我想一键打开附件文件,所以我正在寻找一个基本上分别与 org-attach oC-c C-a o 相同的键绑定。这应该适用于组织文件和议程。

我定义了这个键绑定 (global-set-key (kbd "<f9>") 'org-attach-open),但这在议程中不起作用,提示 Need absolute ’org-attach-directory’ to attach in buffers without filename

重现此操作的最小工作示例:在您的议程中,将点移到带有附件的行上并执行 M-x org-attach-open

如何定义一个完全 org-attach o 的键绑定,而不是从哪里调用它?

当用户从 *Org Agenda* 缓冲区调用 org-attach 后选择字母 o 时,从技术上讲,用户已经离开了 *Org Agenda* 缓冲区(即使这是在引擎盖下完成)。因此,我们需要一个新的函数,它和 org-attach before 运行 org-attach-open.

做同样的事情
(defun org-agenda-attach-open ()
"My doc-string."
(interactive)
  (unless (eq major-mode 'org-agenda-mode)
    (let ((debug-on-quit nil))
      (signal 'quit '("This was written expressly for `*Org Agenda*`."))))
  (let ((marker (or (get-text-property (point) 'org-hd-marker)
                    (get-text-property (point) 'org-marker))))
    (if marker
      (save-excursion
        (set-buffer (marker-buffer marker))
        (goto-char marker)
        (org-back-to-heading t)
        (call-interactively 'org-attach-open))
      (error "No task in current line"))))