> 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