From d52265f6242b21561d5f96ae94afb1da37af1ce3 Mon Sep 17 00:00:00 2001 From: Max Nikulin Date: Mon, 9 Oct 2023 18:47:04 +0700 Subject: [PATCH 1/2] ol-man.el: Enable completion * lisp/ol-man.el (org-man-complete): New function implementing completion for man pages using `Man-completion-table'. Set this function as the `:complete' property of "man" links. Ihor Radchenko. Re: Completion of links to man pages. Sat, 09 Dec 2023 11:32:39 +0000. --- etc/ORG-NEWS | 6 ++++++ lisp/ol-man.el | 12 ++++++++++++ 2 files changed, 18 insertions(+) diff --git a/etc/ORG-NEWS b/etc/ORG-NEWS index 9858df045..6c81221c1 100644 --- a/etc/ORG-NEWS +++ b/etc/ORG-NEWS @@ -729,6 +729,12 @@ respected. Images dropped also respect the value of ~org-yank-image-save-method~ when ~org-yank-dnd-method~ is =attach=. +*** Add completion for links to man pages + +Completion is enabled for links to man pages added using ~org-insert-link~: +=C-c C-l man RET emacscl TAB= to get =emacsclient=. Of course, the ~ol-man~ +library should be loaded first. + ** New functions and changes in function arguments *** ~org-fold-hide-drawer-all~ is now interactive diff --git a/lisp/ol-man.el b/lisp/ol-man.el index b0701c689..f5533c5a5 100644 --- a/lisp/ol-man.el +++ b/lisp/ol-man.el @@ -34,6 +34,7 @@ (org-assert-version) (require 'ol) (org-link-set-parameters "man" + :complete #'org-man-complete :follow #'org-man-open :export #'org-man-export :store #'org-man-store-link) @@ -99,6 +100,17 @@ (defun org-man-export (link description backend) ((eq backend 'md) (format "[%s](%s)" desc path)) (t path)))) +(defun org-man-complete (&optional _arg) + "Complete man pages for `org-insert-link'." + (require 'man) + (concat + "man:" + (let ((completion-ignore-case t) ; See `man' comments. + (Man-completion-cache)) ; See `man' implementation. + (completing-read + "Manual entry: " + 'Man-completion-table)))) + (provide 'ol-man) ;;; ol-man.el ends here -- 2.39.2