Список всех входящих ссылок на заголовок в режиме организации


Допустим, у меня есть файл в режиме org с заголовками и ссылками на заголовки в нем (ссылки находятся в файле). Есть ли способ перечислить все входящие ссылки на текущий заголовок в буфере, и когда я нажимаю Enter или щелкаю по одному элементу, он переходит к ссылке?

Пример:

* Header 1
  Contents of header 1.
* Header 2
  [[Header 1][Link 1]]
* Header 3
  [[Header 1][Link 2]]

Когда я нахожусь в заголовке 1, я хочу, чтобы список всех ссылок в файле на Заголовок 1 (т. е. "ссылка 1" и "ссылка 2") отображался в буфере; и когда я нажимаю или нажимаю Enter на строке "Ссылка 2", он переходит к ссылке 2, которая находится в буфере. Заголовок 3.

1 3

1 ответ:

Вы можете использовать occur для поиска ссылок путем поиска [[Header Name][ и отображения соответствующих строк в буфере occur-mode. Вот функция для автоматизации этого (используя org-heading-components для получения текущего названия заголовка):

(defun my/get-links-to-current-heading ()
  (interactive)
  (let ((title (nth 4 (org-heading-components))))
    (occur (concat "\\[\\[" title "\\]\\["))))

Используя org-occur вместо occur, вы получите список совпадений в виде разреженного дерева в текущем буфере организации.