emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Ihor Radchenko <yantar92@gmail.com>
To: numbchild@gmail.com, John Kitchin <jkitchin@andrew.cmu.edu>
Cc: Org Mode <emacs-orgmode@gnu.org>
Subject: Re: [QUESTION] What's the ":desk" link parameter?
Date: Sun, 24 May 2020 11:10:38 +0800	[thread overview]
Message-ID: <87pnauvxht.fsf@localhost> (raw)
In-Reply-To: <871rna5hvp.fsf@gmail.com>

[-- Attachment #1: Type: text/plain, Size: 373 bytes --]

> I remember I found this code on emacs.stackexchange.com website.
>
> I did a Google search now, I found someone indeed proposed this feature. Here is
> the email archive:
>
> https://lists.gnu.org/archive/html/emacs-orgmode/2019-08/msg00013.html
>
> I saw this thread is stopped. Seems no patch provided. Does anyone want to implement it?

See the attached.

Best,
Ihor


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: org-link-description.patch --]
[-- Type: text/x-diff, Size: 4956 bytes --]

diff --git a/lisp/ol.el b/lisp/ol.el
index 0cb1b0a7e..32a80ee56 100644
--- a/lisp/ol.el
+++ b/lisp/ol.el
@@ -138,6 +138,13 @@ link.
   Function that inserts a link with completion.  The function
   takes one optional prefix argument.
 
+`:description'
+
+  Function to use for generating link descriptions from links.  This
+  function must take two parameters: the first one is the link, the
+  second one is the description generated by `org-insert-link'.  The
+  function should return the description to use.
+
 `:display'
 
   Value for `invisible' text property on the hidden parts of the
@@ -193,16 +200,6 @@ You can interactively set the value of this variable by calling
   :type 'boolean
   :safe #'booleanp)
 
-(defcustom org-link-make-description-function nil
-  "Function to use for generating link descriptions from links.
-This function must take two parameters: the first one is the
-link, the second one is the description generated by
-`org-insert-link'.  The function should return the description to
-use."
-  :group 'org-link
-  :type '(choice (const nil) (function))
-  :safe #'null)
-
 (defcustom org-link-file-path-type 'adaptive
   "How the path name in file links should be stored.
 Valid values are:
@@ -1742,10 +1739,8 @@ If the LINK-LOCATION parameter is non-nil, this value will be used as
 the link location instead of reading one interactively.
 
 If the DESCRIPTION parameter is non-nil, this value will be used as the
-default description.  Otherwise, if `org-link-make-description-function'
-is non-nil, this function will be called with the link target, and the
-result will be the default link description.  When called non-interactively,
-don't allow to edit the default description."
+default description.  When called non-interactively, don't allow to
+edit the default description."
   (interactive "P")
   (let* ((wcf (current-window-configuration))
 	 (origbuf (current-buffer))
@@ -1890,17 +1885,27 @@ Use TAB to complete link prefixes, then RET for type-specific completion support
 	    (setq desc path)))))
 
     (unless auto-desc
-      (let ((initial-input
-	     (cond
-	      (description)
-	      ((not org-link-make-description-function) desc)
-	      (t (condition-case nil
-		     (funcall org-link-make-description-function link desc)
-		   (error
-		    (message "Can't get link description from %S"
-			     (symbol-name org-link-make-description-function))
-		    (sit-for 2)
-		    nil))))))
+      (let* ((type (and (string-match "\\([^:]+\\):" link)
+			(match-string-no-properties 1 link)))
+	     (initial-input
+	      (cond
+	       (description)
+               ((org-link-get-parameter type :description)
+		(condition-case nil
+		    (funcall (org-link-get-parameter type :description) link desc)
+		  (error
+		   (message "Can't get link description from %S"
+			    (symbol-name (org-link-get-parameter type :description)))
+		   (sit-for 2)
+		   nil)))
+	       ((not org-link-make-description-function) desc)
+	       (t (condition-case nil
+		      (funcall org-link-make-description-function link desc)
+		    (error
+		     (message "Can't get link description from %S"
+			      (symbol-name org-link-make-description-function))
+		     (sit-for 2)
+		     nil))))))
 	(setq desc (if (called-interactively-p 'any)
 		       (read-string "Description: " initial-input)
 		     initial-input))))
diff --git a/lisp/org-compat.el b/lisp/org-compat.el
index 635a38dcd..c17d888fc 100644
--- a/lisp/org-compat.el
+++ b/lisp/org-compat.el
@@ -376,6 +376,21 @@ See `org-link-parameters' for documentation on the other parameters."
 
 (make-obsolete 'org-add-link-type "use `org-link-set-parameters' instead." "Org 9.0")
 
+(defcustom org-link-make-description-function nil
+  "Function to use for generating link descriptions from links.
+This function must take two parameters: the first one is the
+link, the second one is the description generated by
+`org-insert-link'.  The function should return the description to
+use."
+  :group 'org-link
+  :type '(choice (const nil) (function))
+  :safe #'null)
+
+(make-obsolete-variable
+ 'org-link-make-description-function
+ "use `org-link-set-parameters' to set :description link parameter instead."
+ "Org 9.3.6")
+
 ;;;; Functions unused in Org core.
 (defun org-table-recognize-table.el ()
   "If there is a table.el table nearby, recognize it and move into it."
@@ -516,8 +531,10 @@ use of this function is for the stuck project list."
 (define-obsolete-variable-alias 'org-email-link-description-format
   'org-link-email-description-format "Org 9.3")
 
-(define-obsolete-variable-alias 'org-make-link-description-function
-  'org-link-make-description-function "Org 9.3")
+(make-obsolete-variable
+ 'org-make-link-description-function
+ "use `org-link-set-parameters' to set :description link parameter instead."
+ "Org 9.3.6")
 
 (define-obsolete-variable-alias 'org-from-is-user-regexp
   'org-link-from-user-regexp "Org 9.3")

[-- Attachment #3: Type: text/plain, Size: 3630 bytes --]




stardiviner <numbchild@gmail.com> writes:

> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA256
>
>
> John Kitchin <jkitchin@andrew.cmu.edu> writes:
>
>> Where did you find that code?  I recall this was some kind of prototype
>> code, and maybe it never got fully developed. I think desk was shorthand
>> for description.
>
> I remember I found this code on emacs.stackexchange.com website.
>
> I did a Google search now, I found someone indeed proposed this feature. Here is
> the email archive:
>
> https://lists.gnu.org/archive/html/emacs-orgmode/2019-08/msg00013.html
>
> I saw this thread is stopped. Seems no patch provided. Does anyone want to implement it?
>
>>
>> On Sat, May 23, 2020 at 8:24 AM stardiviner <numbchild@gmail.com> wrote:
>>
>>> -----BEGIN PGP SIGNED MESSAGE-----
>>> Hash: SHA256
>>>
>>>
>>> I found some examples setting org-link-parameters with ":desk", like this:
>>>
>>> #+begin_src emacs-lisp
>>> (defun org-id-link-desk (link desk)
>>>   "Description function for id: link."
>>>   (let ((id (cadr (split-string link ":"))))
>>>     (org-with-point-at (org-id-find id 'marker)
>>>       (s-join "/" (org-get-outline-path 'with-self)))))
>>>
>>> (org-link-set-parameters "id" :desk #'org-id-link-desk)
>>> #+end_src
>>>
>>> But I have not found any mention in help of variable
>>> ~org-link-parameters~. Also I
>>> checked org mode source code by search, no matching of ":desk" found. Did
>>> I miss
>>> something?
>>>
>>> - --
>>> [ 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-----
>>>
>>> iQFIBAEBCAAyFiEE8J9lDX1nSBmJJZFAG13xyVromsMFAl7JFckUHG51bWJjaGls
>>> ZEBnbWFpbC5jb20ACgkQG13xyVromsONBggAy0z465LkTx1EYBo4GWZdObWXct8O
>>> Fjz24HGzin/ffISIhytm0r4w5GE2Rb2/m+BwAsfHEDDvLu1mwU3HvLugXmIk0OUA
>>> u9qRLHJ4Po1/Y1CRR0o/OHHnbTjhA/7ppljRcN0klwd6J0PDrSE3K/XOhV94xyfK
>>> k0fUBhtQeTdW/uzx49hs14QlNQ5i6+HJWd1g/viXI+v0EIYJDV3PLwS6CFJWnvo3
>>> Yi210RM87uKi8vWFcFP7fEW2dYDV5MRsKmQ8v9AKLcCW9+T6Zq3tI7Srxn7ZwFsQ
>>> mFxZdLFyDlQq0M4VG0WL/epwr0f4B2SUZ3BcOEYrwv7N+7sfMN2cCWI8jQ==
>>> =8aOD
>>> -----END PGP SIGNATURE-----
>>>
>>> --
>> John
>>
>> -----------------------------------
>> Professor John Kitchin
>> Doherty Hall A207F
>> Department of Chemical Engineering
>> Carnegie Mellon University
>> Pittsburgh, PA 15213
>> 412-268-7803
>> @johnkitchin
>> http://kitchingroup.cheme.cmu.edu
>
>
> - -- 
> [ 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-----
>
> iQFIBAEBCAAyFiEE8J9lDX1nSBmJJZFAG13xyVromsMFAl7JtzoUHG51bWJjaGls
> ZEBnbWFpbC5jb20ACgkQG13xyVromsMC4wf+Nzj7X+SDnSaYoFYWvdx/r0PtSbyJ
> u4fmiT5TlWYJvx6+S9HVxTSmvR7QEdxWFTLU0zkVFAmuhFIehIDoQpCzunwCGKfl
> Onn+TLwqm8UaeDS1GXs0yhRLRAgsDqM+jdd7+IKccljRonM1RVYDjFjfdXvh9U9h
> mDU78HGL/yGg6rzlIHlzh+s0bvkM0xgmivI7zWmk1BF8PQofXcVzdGn3aWFz3rNN
> clEgmCtOX/t7gRzn8H8Ydq+vg+J15OliNjWBRZ1Op26msaOYe+nly8tGAbfwqDgB
> SSC4vi42vUbvVNzpjYfR6byqQ4RDxI8th66NJ6yuk0hkCnTHe69h1gQuqw==
> =Q210
> -----END PGP SIGNATURE-----
>

-- 
Ihor Radchenko,
PhD,
Center for Advancing Materials Performance from the Nanoscale (CAMP-nano)
State Key Laboratory for Mechanical Behavior of Materials, Xi'an Jiaotong University, Xi'an, China
Email: yantar92@gmail.com, ihor_radchenko@alumni.sutd.edu.sg

  reply	other threads:[~2020-05-24  3:15 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-05-23 12:23 [QUESTION] What's the ":desk" link parameter? stardiviner
2020-05-23 13:49 ` Bastien
2020-05-23 14:01 ` John Kitchin
2020-05-23 23:52   ` stardiviner
2020-05-24  3:10     ` Ihor Radchenko [this message]
2020-05-24 11:00       ` Bastien
2020-05-24 11:34         ` Ihor Radchenko
2020-06-02 12:29           ` Bastien
2020-06-02 13:22             ` Ihor Radchenko
2020-06-02 13:55               ` stardiviner
2020-05-24 11:12       ` stardiviner

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=87pnauvxht.fsf@localhost \
    --to=yantar92@gmail.com \
    --cc=emacs-orgmode@gnu.org \
    --cc=jkitchin@andrew.cmu.edu \
    --cc=numbchild@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).