Actualmente para insertar enlaces internos de org-mode org-id, navego a un encabezado o lo levanto en la vista de agenda (Ca s test test search RET), almaceno el enlace con Cl (org-store-link), volviendo a donde Quiero insertar el enlace, luego insertar el enlace con Cc Cl (org-insert-link).
En cambio, preferiría asignar una clave que me permita insertar un enlace en el punto actual usando la finalización de tabulación similar a org-refile (Cc Cw). El resultado previsto sería un enlace interno org-id en la forma:
[[id:d7534b2f-c221-4dea-8566-d5ce3e4e1b78][Example Link]]
Mirando a través de org-id.el, parece que org-id-get-with-outline-path-complete fue diseñado para este propósito. Lo intenté:
(global-set-key "\C-ci" (lambda () (interactive) (org-id-get-with-outline-path-completion)))
pero no funcionó según lo previsto.
Tengo lo siguiente en mi archivo 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
. ¿Ese es el problema?Respuestas:
Busqué en la fuente del modo org y encontré una característica mínimamente documentada . Si define una función
org-TYPE-complete-link
, se utilizará para completar los enlaces de tipoTYPE
. Por lo tanto, solo necesitamos definir una funciónorg-id-complete-link
que complete y devuelva el enlace (incluido el prefijo "id:").Inserte el enlace de la manera normal (con
C-c C-l
), seleccione "id:" como tipo y se activará la función de finalización.EDITAR: a partir de la
org-mode
versión 9.0, solo definir la función como se mencionó anteriormente ya no funciona ( ref ). En su lugar, debe agregar la función de finalización paraorg-link-parameters
usarfuente
TARGETS may be a setting for ‘org-refile-targets’ to define eligible headlines.
org-link-set-parameters
si está usandoorg-mode
9. El argumento adicional paraorg-id-get-with-outline-path-completion
permitirle limitar los titulares de los que eligió, al igual que loorg-refile-targets
hace cuando vuelve a archivar. Consulte la ayuda para todo, pero una configuración común es((org-agenda-files :maxlevel . 3) (nil :maxlevel . 2))
que limita a 3 niveles de profundidad en los archivos de agenda y 2 en el búfer actual.