emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Ihor Radchenko <yantar92@posteo.net>
To: Samuel Wales <samologist@gmail.com>
Cc: Max Nikulin <manikulin@gmail.com>, emacs-orgmode@gnu.org
Subject: Re: org-insert-link completion by description (Re: what is the purpose of "This link has already been stored"?)
Date: Wed, 05 Jul 2023 11:00:46 +0000	[thread overview]
Message-ID: <871qhmaaht.fsf@localhost> (raw)
In-Reply-To: <CAJcAo8ui=WrX7Ko1DXCwdASCntuqi5=1SuLWA6CgTZf3neQLqQ@mail.gmail.com>

Samuel Wales <samologist@gmail.com> writes:

>>> this buffer contains nothing useful and shortens the above buffer.
>>
>> This is fine. I assume that you can simply hide it away using
>> `display-buffer-alist'.
>
> i have struggled with this in a wider context and gotten nowhere for years.

(add-to-list
 'display-buffer-alist
 `("*Org Links*" display-buffer-no-window (allow-no-window . t)))

You may also find
https://www.masteringemacs.org/article/demystifying-emacs-window-manager
and
https://www.gnu.org/software/emacs/manual/html_node/elisp/The-Zen-of-Buffer-Display.html
useful.

>> Org shows link prefixes, stored links, and link description in the
>> completion. The relevant code in `org-insert-link' is:
>
> what is the purpose of the prefixes?

When inserting a link, you do not always need to insert a stored link.
Various link types can have completion function specific to a link type.
For example, I arranged my id: links to use org-ql for completion. That
way I can insert id: links searching across all the agenda files via
org-ql.

> where is the description in this case?  was it a bare link?  that is
> unusual for an id link.

>> (org-completing-read
>> 		   "Link: "
>> 		   (append
>> 		    (mapcar (lambda (x) (concat x ":")) all-prefixes)

The above corresponds to link prefixes.

>> 		    (mapcar #'car org-stored-links)

Each element of `org-stored-links' is (path description).
car in org-stored-links elements are bare links (link path).

>>                     ;; Allow description completion.  Avoid "nil" option
>>                     ;; in the case of `completing-read-default' and
>>                     ;; an error in `ido-completing-read' when some links
>>                     ;; have no description.
>>                     (delq nil (mapcar 'cadr org-stored-links)))

cadr in org-stored-links elements are descriptions.

So, the completion should offer (1) all the link types; (2) all the link
paths; (3) all the link descriptions.

You can try to run this code manually to see.
You can also remove different parts in the (append ...) to experiment.

>> Completing descriptions feature has been added by Max 10 months ago - it
>> is a fairly recent addition:
>
> please note that it is of course not my intention to criticize anybody
> or anybody's code.  merely saying what i need.  max is trying to be
> helpful.  iu am not even sure how we got on this topic as my original
> report was the already stored bug.

That's not a problem. We already changed the subject of this spin-off
thread. The original bug report is separate.

> in the context of mindless store/insert, which is what i do most
> frequently, if the most recently stored is set to the completion
> default, this topic is moot as presumably others agree this is
> desirable.  in the context of choosing a different link from the
> default, the short url-like prefixes being there in front of specific
> links confuses me.

So, your suggestion is to move link descriptions and paths before the
link types in the completion list?

> then there is the more fancy question of grabbing random links from
> all over your org files in order to paste them all in one place which
> i will not cover here.

I hope that M-x org-insert-all-links caters this need.

>> This commit is a part of Org 9.6.
>> May it be that you are using older Org version?
>
> 9.6.7, most recent bugfix.  comments apply to vanilla.

May you please elaborate what you mean by "comments apply to vanilla"?

-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>


      reply	other threads:[~2023-07-05 11:01 UTC|newest]

Thread overview: 52+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-06-28  1:35 what is the purpose of "This link has already been stored"? Samuel Wales
2023-06-28  9:32 ` Ihor Radchenko
2023-06-28 16:19   ` Anthony Carrico
2023-06-28 16:48     ` Ihor Radchenko
2023-06-28 23:59   ` Samuel Wales
2023-06-29  0:04     ` Samuel Wales
2023-06-29  0:07       ` Samuel Wales
2023-06-29 10:28         ` Ihor Radchenko
2023-06-29 13:02           ` Anthony Carrico
2023-06-29 13:09             ` Ihor Radchenko
2023-06-30  3:00               ` Samuel Wales
2023-06-30  3:26                 ` Samuel Wales
2023-07-05 10:19               ` [PATCH] " Ihor Radchenko
2023-07-06  0:28                 ` Samuel Wales
2023-07-15 12:35                 ` Ihor Radchenko
2023-07-21  4:13                   ` Samuel Wales
2023-07-21  7:46                     ` Ihor Radchenko
2023-08-06 18:47                 ` Bastien
2023-08-06 20:53                   ` Samuel Wales
2023-08-08  9:08                     ` Ihor Radchenko
2023-08-08  9:04                   ` Ihor Radchenko
2023-08-08 13:37                     ` Bastien Guerry
2023-08-11  9:31                       ` Ihor Radchenko
2023-08-13  9:34                         ` Bastien Guerry
2023-08-13 10:32                           ` Ihor Radchenko
2023-08-14  0:36                             ` Samuel Wales
2023-08-14 10:19                               ` Ihor Radchenko
2023-08-14 10:51                           ` Ihor Radchenko
2023-08-14 16:29                             ` Bastien Guerry
2023-08-15 10:55                               ` Ihor Radchenko
2023-08-16 13:20                                 ` Bastien Guerry
2023-07-01  4:48 ` org-insert-link completion by description (Re: what is the purpose of "This link has already been stored"?) Max Nikulin
2023-07-01  5:15   ` Samuel Wales
2023-07-01  5:26     ` Samuel Wales
2023-07-01  6:12     ` Max Nikulin
2023-07-02  3:29       ` Max Nikulin
2023-07-02  5:02         ` Samuel Wales
2023-07-02  5:52           ` Max Nikulin
2023-07-02  6:03             ` Samuel Wales
2023-07-03 14:56               ` Max Nikulin
2023-07-03 23:28                 ` Samuel Wales
2023-07-03 23:42                   ` Samuel Wales
2023-07-03 23:48                   ` Samuel Wales
2023-07-03 23:49                     ` Samuel Wales
2023-07-03 23:50                       ` Samuel Wales
2023-07-04  0:27                         ` Samuel Wales
2023-07-04  0:28                           ` Samuel Wales
2023-07-04  1:45                             ` Max Nikulin
2023-07-04  2:29                               ` Samuel Wales
2023-07-04  9:31                                 ` Ihor Radchenko
2023-07-05  0:10                                   ` Samuel Wales
2023-07-05 11:00                                     ` Ihor Radchenko [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=871qhmaaht.fsf@localhost \
    --to=yantar92@posteo.net \
    --cc=emacs-orgmode@gnu.org \
    --cc=manikulin@gmail.com \
    --cc=samologist@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).