4

Running Doom Emacs 2.0.9 on Emacs 27.1.

In an org file, I have:

* First heading
  :PROPERTIES:
  :ID:       89f7215b-60b1-45c8-8262-b0e10db18f4c
  :END:
* Second heading

I got that ID by using org-id-store-link function.

Now, I want to insert a link to that heading. So, I did org-insert-link and it displayed various options. I was looking forward to some kind of auto-completion --- I start typing Firs.. and it suggests the correct link.

But that does not seem to be happening.

How do I get that behavior?

1 Answer 1

6

You need to enable ID links by customizing the option org-id-link-to-org-use-id. The doc string of the variable says:

Non-nil means storing a link to an Org file will use entry IDs.

The variable can have the following values:

t

 Create an ID if needed to make a link to the current entry.

create-if-interactive

 If ‘org-store-link’ is called directly (interactively, as a user
 command), do create an ID to support the link.  But when doing the
 job for capture, only use the ID if it already exists.  The
 purpose of this setting is to avoid proliferation of unwanted
 IDs, just because you happen to be in an Org file when you
 call ‘org-capture’ that automatically and preemptively creates a
 link.  If you do want to get an ID link in a capture template to
 an entry not having an ID, create it first by explicitly creating
 a link to it, using ‘C-c l’ first.

create-if-interactive-and-no-custom-id

 Like create-if-interactive, but do not create an ID if there is
 a CUSTOM_ID property defined in the entry.

use-existing

 Use existing ID, do not create one.

nil

Never use an ID to make a link, instead link using a text search for
 the headline text.

I'd start by setting it to use-existing and go from there.

9
  • Thanks. I did set up the variable as suggested. (setq org-id-link-to-org-use-id 'use-existing). Now when I try to create link org-insert-link, it shows me various options like doom-repo, wolfram, wikipedia, etc. In this list of 35 items, there is an option for id and another option for org. Selecting org, I can create a link to an org file. But how do I create a link to a heading? Do I need to use any other commands?
    – deshmukh
    Apr 1, 2021 at 2:31
  • 1
    With the option on, you should be able to org-store-link (suggested binding: C-c l) on a heading with an ID property and then org-insert-link (suggested binding: C-c C-l) to insert such a link.
    – NickD
    Apr 1, 2021 at 3:24
  • 1
    Thanks. With org-store-link it works even without the ID property set. So, why does one go the extra mile to create an ID? By the way, this led me to reading the manual about links and that led me to discover a couple of very powerful things. :)
    – deshmukh
    Apr 1, 2021 at 8:16
  • 1
    Basically IDs are (spposed to be) unique, so the link desitnation is unambiguous.
    – NickD
    Apr 1, 2021 at 15:10
  • 1
    The links are stored in whatever file you were visiting when you did org-store-link. If you are talking about the ID database (i.e. in which file the ID is defined), that is stored in the file that is named by the variable org-id-locations-file. Do C-h v on that variable for more info.
    – NickD
    Feb 26, 2023 at 12:44

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.