Как использовать org-annotate-file? - PullRequest
3 голосов
/ 04 сентября 2011

Я недавно нашел org-annotate-file.Я хотел бы использовать его для аннотирования PDF-документов, музыкальных файлов или любых других файлов на моем компьютере и записи своих аннотаций в файл annotations.org.Я не хочу включать аннотации в PDF.Но что я не могу понять, что это значит "посетить файл"?Должен ли это быть файл, который может открыть emacs?

Но в более широком смысле, есть ли пакет, который может сделать что-то вроде этого: я захожу в каталог в режиме dired, отмечаю кучу файлов в какой-то темеменя интересует, и с помощью одной команды я отправляю ссылки на файлы в мой файл annotations.org (возможно, в виде подзаголовков под заголовком, который может быть именем каталога), а затем я могу записать аннотации в файл аннотаций.Затем с помощью одной команды я смогу получить доступ к любому из файлов (что позволит режим org) или открыть его во внешней программе.Возможно ли это в какой-то упаковке?

Спасибо.

1 Ответ

2 голосов
/ 04 сентября 2011

Конечно, это можно сделать. Тем не менее, кажется, фактический код org-annotate-file.el, который я нашел здесь , похоже, не принимает аннотирование файла, который не был открыт (посещение означает, что здесь открыт), потому что функция аннотирования использует текущий открытый файл в качестве источника для имени. Текущая реализация 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....

отсроченную интеграцию можно запустить отсюда, но я все еще не знаком с устарелым API ...

EDIT : я создаю ветку в bitbucket для этих модификаций. Я считаю эту утилиту очень полезной и могу использовать ее самостоятельно. Я выложу ссылку здесь. И вот оно: https://bitbucket.org/dsevilla/org-annotate-file/src

...