在组织模式下:一键打开附件
In org-mode: Open attachment with one keystroke
因为我想一键打开附件文件,所以我正在寻找一个基本上分别与 org-attach o
或 C-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"))))
因为我想一键打开附件文件,所以我正在寻找一个基本上分别与 org-attach o
或 C-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"))))