Hello, Christoph LANGE <math.semantic....@gmail.com> 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