Obecnie, aby wstawić wewnętrzne linki org-id org-mode, nawiguję do nagłówka lub podciągam go w widoku planu (wyszukiwanie testu nagłówka Ca RET), przechowuję link za pomocą Cl (org-store-link), wracając do miejsca Chcę wstawić link, a następnie wstawić link za pomocą Cc Cl (org-insert-link).
Zamiast tego wolę zmapować klucz, który pozwala mi wstawić łącze w bieżącym punkcie, używając uzupełniania tabulacji podobnego do org-refile (Cc Cw). Zamierzonym rezultatem byłby wewnętrzny link org-id w postaci:
[[id:d7534b2f-c221-4dea-8566-d5ce3e4e1b78][Example Link]]
Przeglądając org-id.el, wygląda na to, że org-id-get-with-outline-path-complete został zaprojektowany w tym celu. Próbowałem:
(global-set-key "\C-ci" (lambda () (interactive) (org-id-get-with-outline-path-completion)))
ale to nie działało zgodnie z przeznaczeniem.
W moim pliku init.el mam następujące elementy:
;; 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
. Czy to jest problem?Odpowiedzi:
Przeszukałem źródło w trybie org i znalazłem minimalnie udokumentowaną funkcję. Jeśli zdefiniujesz funkcję
org-TYPE-complete-link
, zostanie ona użyta do uzupełnienia linków typuTYPE
. Musimy więc zdefiniować funkcję,org-id-complete-link
która wykona nasze zakończenie i zwróci link (w tym przedrostek „id:”).Wstaw link w normalny sposób (za pomocą
C-c C-l
), wybierz „id:” jako typ, a uruchomi się funkcja uzupełniania.EDYCJA: Od
org-mode
wersji 9.0 samo zdefiniowanie powyższej funkcji nie działa ( ref ). Zamiast tego musisz dodać funkcję uzupełniania doorg-link-parameters
używaniaźródło
TARGETS may be a setting for ‘org-refile-targets’ to define eligible headlines.
org-link-set-parameters
jeśli używaszorg-mode
9. Dodatkowy argument, któryorg-id-get-with-outline-path-completion
pozwala ci ograniczyć nagłówki, które wybrałeś, podobnie jakorg-refile-targets
podczas refile. Zobacz pomoc na wszystko, ale częstym ustawieniem jest((org-agenda-files :maxlevel . 3) (nil :maxlevel . 2))
ograniczenie do 3 poziomów głęboko w plikach programu i 2 w bieżącym buforze.