如何使用org-annotate-file?

时间:2011-09-03 20:27:58

标签: emacs elisp org-mode

我最近发现了org-annotate-file。我想用它来注释我的计算机上的pdf文档或音乐文件或任何其他文件,并将我的注释写在文件annotations.org中。我不打算在pdf中加入注释。但我无法弄清楚“访问文件”意味着什么?它必须是emacs可以打开的文件吗?

但更一般地说,是否有一个软件包可以执行以下操作:我以dired模式访问目录,在我感兴趣的某个主题上标记一堆文件,并使用一个命令将文件的链接发送给我annotations.org文件(可能是标题下的小标题,可能是目录名称),然后我可以在注释文件中编写注释。然后使用一个命令,我应该能够访问任何文件(org-mode将允许)或在外部程序中打开它。在某些包装中这可能吗?

感谢。

1 个答案:

答案 0 :(得分:2)

当然,可以做到。但是,我发现它似乎是org-annotate-file.el的实际代码 here,似乎不接受注释未打开的文件(访问意味着此处打开),因为注释功能使用当前打开的文件作为名称的来源。 org-annotate-file的当前实现是这样的:

(defun org-annotate-file ()
  "Put a section for the current file into your annotation file"
  (interactive)
  (error-if-no-file)
  (org-annotate-file-show-section))

至少你可以修改它以接受任意文件(如果你提供的话):

(defun org-annotate-file (&optional filename)
  "Put a section for the current file into your annotation file"
  (interactive "FFile to tag: ")
  ; if a file is specified, bypass the check for error when no file
  (if filename
     (org-annotate-file-show-section filename)
     (progn
      (error-if-no-file)
      (org-annotate-file-show-section))))

每当您执行 M-x org-annotate-file时,都会要求您输入文件名。

您还必须更改org-annotate-file-show-section以接受文件名或缓冲区。第一个让我们这样:

(defun org-annotate-file-show-section (&optional buffer-or-file)
  "Visit the buffer named `org-annotate-file-storage-file' and
show the relevant section"
  (let* ((line (buffer-substring-no-properties (point-at-bol) (point-at-eol)))
                 (filename (if (stringp buffer-or-file)
                            buffer-or-file
                            (get-filename buffer-or-file (buffer-file-name))))
                 (link (get-link filename))
         (search-link (org-make-link-string
                       (concat "file:" filename "::" line)
                               (org-annotate-file-prettyfy-desc line))))
        (show-annotations filename link)
.... rest of the code....

dired集成可以从这里开始,但我仍然不熟悉dired API ...

编辑:我正在bitbucket中为这些修改创建一个分支。我发现该实用程序非常有用,可能会自己使用它。我会在这里发布链接。这是:https://bitbucket.org/dsevilla/org-annotate-file/src