emacs-orgmode
[Top][All Lists]
Advanced

[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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]