> 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

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


stardiviner <numbch...@gmail.com> writes:

> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA256
>
>
> John Kitchin <jkitc...@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 <numbch...@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: yanta...@gmail.com, ihor_radche...@alumni.sutd.edu.sg

Reply via email to