[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [O] Function that jumps to an entry with a certain CUSTOM_ID
From: |
Nicolas Goaziou |
Subject: |
Re: [O] Function that jumps to an entry with a certain CUSTOM_ID |
Date: |
Tue, 31 Mar 2015 21:55:03 +0200 |
Hello,
Christoph LANGE <address@hidden> writes:
> the following function has served me well for a few years, so
> I thought I'd share it. I would even be happy to contribute it to the
> codebase of org-mode (core or contrib); however in this case someone
> would have to point me to a fool-proof guide for how to do this.
> I know that for contributing code I will have to sign some FSF
> copyright forms, and I know how to use git, but I don't know the exact
> org-mode specific steps of doing so.
The problem is that we're running out of interesting keybindings. "C-c
j" is not an option since it is reserved to users.
Another option would be to add it to Worg.
> --- %< --- %< --- %< --- %< --- %< --- %< --- %< --- %< --- %< --- %< ---
> (defun org-jump-to-id ()
> "Asks for an identifier and searches for the first entry in the
> current file that has this identifier as a CUSTOM_ID property."
> (interactive)
> (let* ((property "CUSTOM_ID")
> (custom-id (org-icompleting-read "CUSTOM_ID of entry: "
> (mapcar 'list
> (org-property-values property)))))
> (org-link-search (concat "#" custom-id))))
>
> (define-key org-mode-map (kbd "\C-cj") 'org-jump-to-id)
> --- %< --- %< --- %< --- %< --- %< --- %< --- %< --- %< --- %< --- %< ---
>
> This implementation works efficiently in a 4 MB org file with 100 IDs.
> Together with ido or helm I find it a very user-friendly way of
> jumping to frequently used headlines.
Note that you can use
(let ((h (org-find-property "CUSTOM_ID" custom-id)))
(when h (goto-char h)))
instead of
(org-link-search ...)
for one less level of indirection.
> I noticed that org-babel-ref-goto-headline-id does something similar,
> so maybe some code could be shared among the two functions.
Indeed. I modified it so it uses `org-find-property'.
Regards,
--
Nicolas Goaziou