В настоящее время для вставки внутренних ссылок org-id в режиме org, я перемещаюсь к заголовку или поднимаю его в виде повестки дня (поиск по заголовку Ca s, поиск RET), сохраняю ссылку с помощью Cl (org-store-link), возвращаясь туда, где Я хочу вставить ссылку, затем вставить ссылку с помощью Cc Cl (org-insert-link).
Вместо этого я предпочел бы сопоставить ключ, который позволяет мне вставить ссылку в текущей точке, используя завершение табуляции, аналогично org-refile (Cc Cw). Ожидаемым результатом будет внутренняя ссылка org-id в форме:
[[id:d7534b2f-c221-4dea-8566-d5ce3e4e1b78][Example Link]]
Просматривая org-id.el, кажется, что для этой цели был разработан org-id-get-with-outline-path-завершении. Я попытался:
(global-set-key "\C-ci" (lambda () (interactive) (org-id-get-with-outline-path-completion)))
но это не сработало как задумано.
В моем файле init.el есть следующее:
;; Use global IDs
(require 'org-id)
(setq org-id-link-to-org-use-id t)
;; Update ID file .org-id-locations on startup
(org-id-update-id-locations)
;; Refile options
(setq org-refile-targets (quote ((nil :maxlevel . 9) (org-agenda-files :maxlevel . 9))))
(setq org-refile-use-outline-path 'file)
(setq org-outline-path-complete-in-steps t)
(setq org-refile-allow-creating-parent-nodes t)
org-id-get-with outline-path-completion
. Это проблема?Ответы:
Я изучил источник в режиме org и обнаружил минимально документированную функцию. Если вы определяете функцию
org-TYPE-complete-link
, она будет использоваться для обеспечения завершения для ссылок типаTYPE
. Так что нам просто нужно определить функцию,org-id-complete-link
которая выполняет наше завершение и возвращает ссылку (включая префикс «id:»).Вставьте ссылку обычным способом (с помощью
C-c C-l
), выберите «id:» в качестве типа и сработает функция завершения.РЕДАКТИРОВАТЬ: Начиная с
org-mode
версии 9.0 просто определение функции, как указано выше, больше не работает ( ссылка ). Вместо этого вы должны добавить функцию завершения кorg-link-parameters
использованиюисточник
TARGETS may be a setting for ‘org-refile-targets’ to define eligible headlines.
org-link-set-parameters
если вы используетеorg-mode
9. Дополнительный аргумент,org-id-get-with-outline-path-completion
позволяющий вам ограничить заголовки, которые вы выбрали, точно так же, какorg-refile-targets
и при повторной пересылке. См. Справку по всем вопросам, но общий параметр -((org-agenda-files :maxlevel . 3) (nil :maxlevel . 2))
это 3 уровня в файлах повестки дня и 2 уровня в текущем буфере.