emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* [Suggestion] add an API function for getting link description
@ 2020-05-20  9:44 stardiviner
  2020-05-20 13:56 ` Nicolas Goaziou
  0 siblings, 1 reply; 3+ messages in thread
From: stardiviner @ 2020-05-20  9:44 UTC (permalink / raw)
  To: Org Mode

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256


I found org link can't get link description easily.

I googled it how to get link description. Found this solution. But it's not intuitive.

#+begin_src emacs-lisp
(defun get-description-at-point ()
  (interactive)
  (let ((link (org-element-context)))
    (message "%s" (buffer-substring (org-element-property :contents-begin link)
                                    (org-element-property :contents-end link)))))
#+end_src

Why now support this?

#+begin_src emacs-lisp
(org-element-property :desc (org-element-context))
#+end_src

Maybe the key ~:desc~ could be more meaningful detailed.

WDYT? Nicolas

- -- 
[ stardiviner ]
       I try to make every word tell the meaning that I want to express.

       Blog: https://stardiviner.github.io/
       IRC(freenode): stardiviner, Matrix: stardiviner
       GPG: F09F650D7D674819892591401B5DF1C95AE89AC3
      
-----BEGIN PGP SIGNATURE-----

iQFIBAEBCAAyFiEE8J9lDX1nSBmJJZFAG13xyVromsMFAl7E++0UHG51bWJjaGls
ZEBnbWFpbC5jb20ACgkQG13xyVromsPYzAgAgpAgmgYJGvQME1T+cniWWAcfLDLh
tHNrV9vmfPdmtKtMQsLBACkmHysGBt4jsxZXPB96nhpK7vc0Vo7WPSUum7jW4M4q
GVC2bj9+gb/ZS4dYXnSHxzHTz62c5NRLHAj6jSuHow1cAtkuE/J5yT7M4ziECo4P
NnSuOZaBpHdAfWLFfkQYM4PG0Nrawfe+fy5BTqthXLchExtvMAD2tdgOrI4fxaIV
wfptEog/l6fzNfwpEW9XUUqaxqlFFPoN1GBVS3nPEuW/tInaOJgINL0giEN0ZSa6
P5czGgE9Zsdolw+v96rgqiInH3zRDFLDV8DiVrYxYig2wJ+xg0He2h6HNQ==
=44DQ
-----END PGP SIGNATURE-----


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [Suggestion] add an API function for getting link description
  2020-05-20  9:44 [Suggestion] add an API function for getting link description stardiviner
@ 2020-05-20 13:56 ` Nicolas Goaziou
  2020-05-20 22:49   ` stardiviner
  0 siblings, 1 reply; 3+ messages in thread
From: Nicolas Goaziou @ 2020-05-20 13:56 UTC (permalink / raw)
  To: stardiviner; +Cc: Org Mode

Hello,

stardiviner <numbchild@gmail.com> writes:

> I found org link can't get link description easily.
>
> I googled it how to get link description. Found this solution. But it's not intuitive.
>
> #+begin_src emacs-lisp
> (defun get-description-at-point ()
>   (interactive)
>   (let ((link (org-element-context)))
>     (message "%s" (buffer-substring (org-element-property :contents-begin link)
>                                     (org-element-property :contents-end link)))))
> #+end_src
>
> Why now support this?
>
> #+begin_src emacs-lisp
> (org-element-property :desc (org-element-context))
> #+end_src
>
> Maybe the key ~:desc~ could be more meaningful detailed.

Links with description are not leaf elements in the AST. I.e., the
parser needs to go deeper. As any non-leaf object, as, e.g., bold, it
has :contents-begin and :contents-end properties. Adding :desc would
duplicate information for no good reason.

I see no problem writing an helper function once, and use it often.

Besides, there are other, slightly different implementations of this
function, e.g.,

  (defun get-description-at-point-2 ()
    (and (org-at-regexp-p org-link-bracket-re) (match-string 2)))

This one is fuzzier, it will get description in fake links too (e.g., in
comments, property drawers…), but will be faster. So there is no single
function that fits every need.


Regards,

-- 
Nicolas Goaziou


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [Suggestion] add an API function for getting link description
  2020-05-20 13:56 ` Nicolas Goaziou
@ 2020-05-20 22:49   ` stardiviner
  0 siblings, 0 replies; 3+ messages in thread
From: stardiviner @ 2020-05-20 22:49 UTC (permalink / raw)
  To: Nicolas Goaziou; +Cc: Org Mode

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256


Nicolas Goaziou <mail@nicolasgoaziou.fr> writes:

> Hello,
>
> stardiviner <numbchild@gmail.com> writes:
>
>> I found org link can't get link description easily.
>>
>> I googled it how to get link description. Found this solution. But it's not intuitive.
>>
>> #+begin_src emacs-lisp
>> (defun get-description-at-point ()
>>   (interactive)
>>   (let ((link (org-element-context)))
>>     (message "%s" (buffer-substring (org-element-property :contents-begin link)
>>                                     (org-element-property :contents-end link)))))
>> #+end_src
>>
>> Why now support this?
>>
>> #+begin_src emacs-lisp
>> (org-element-property :desc (org-element-context))
>> #+end_src
>>
>> Maybe the key ~:desc~ could be more meaningful detailed.
>
> Links with description are not leaf elements in the AST. I.e., the
> parser needs to go deeper. As any non-leaf object, as, e.g., bold, it
> has :contents-begin and :contents-end properties. Adding :desc would
> duplicate information for no good reason.

Hmm, I get the reason. Thanks for explanation.

>
> I see no problem writing an helper function once, and use it often.
>
> Besides, there are other, slightly different implementations of this
> function, e.g.,
>
>   (defun get-description-at-point-2 ()
>     (and (org-at-regexp-p org-link-bracket-re) (match-string 2)))
>
> This one is fuzzier, it will get description in fake links too (e.g., in
> comments, property drawers…), but will be faster. So there is no single
> function that fits every need.
>

Good to know another faster implementation. Thankful.

Regards,

- -- 
[ stardiviner ]
       I try to make every word tell the meaning that I want to express.

       Blog: https://stardiviner.github.io/
       IRC(freenode): stardiviner, Matrix: stardiviner
       GPG: F09F650D7D674819892591401B5DF1C95AE89AC3
      
-----BEGIN PGP SIGNATURE-----

iQFIBAEBCAAyFiEE8J9lDX1nSBmJJZFAG13xyVromsMFAl7FtAMUHG51bWJjaGls
ZEBnbWFpbC5jb20ACgkQG13xyVromsNQBQf/RiEZsKS5NXhcta1RGftiUYGPah4l
GQX0hrc+x/1Edm8ZGDLDXFy81LQVo1Min2dNxmEFnGqNjp8stfX6LYC5oxbt1Ye5
2FpejBGNyxvjZ/LpPwsIRr4xt3wlp2aNhoKO6VrqbLxJtxf92/Y9rccLBxNmzH7z
xBXSDqrf5xBv+NC8hPTKbvPbo2b9OcJrFkF8cyBWU3T64iMqs6+F5TdmBZwOscXB
NSu8Qha5+1QCz8pukk2iTvilzi37rdxRweOBDWvjKRmVdAQk35IoPop2Ip37OmRo
tVqOx6Cc/7n0zTyhsYN36N5CsacPlR9FagzaroZ/9Jsp5DJCwtVh4YXU8A==
=t/oC
-----END PGP SIGNATURE-----


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2020-05-20 22:50 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-05-20  9:44 [Suggestion] add an API function for getting link description stardiviner
2020-05-20 13:56 ` Nicolas Goaziou
2020-05-20 22:49   ` stardiviner

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).