Merge branch 'bugfix'

This commit is contained in:
Ihor Radchenko 2024-01-11 13:06:31 +01:00
commit 8f7efd9d7d
No known key found for this signature in database
GPG Key ID: 6470762A7DA11D8B
1 changed files with 14 additions and 0 deletions

View File

@ -44,13 +44,27 @@
:group 'org-link :group 'org-link
:type '(choice (const man) (const :tag "WoMan (obsolete)" woman))) :type '(choice (const man) (const :tag "WoMan (obsolete)" woman)))
(declare-function Man-translate-references "man" (ref))
(defun org-man-open (path _) (defun org-man-open (path _)
"Visit the manpage on PATH. "Visit the manpage on PATH.
PATH should be a topic that can be thrown at the man command. PATH should be a topic that can be thrown at the man command.
If PATH contains extra ::STRING which will use `occur' to search If PATH contains extra ::STRING which will use `occur' to search
matched strings in man buffer." matched strings in man buffer."
(require 'man) ; For `Man-translate-references'
(string-match "\\(.*?\\)\\(?:::\\(.*\\)\\)?$" path) (string-match "\\(.*?\\)\\(?:::\\(.*\\)\\)?$" path)
(let* ((command (match-string 1 path)) (let* ((command (match-string 1 path))
;; FIXME: Remove after we drop Emacs 29 support.
;; Working around security bug #66390.
(command (if (org-man-store-link (equal (Man-translate-references ";id") "\\;id"))
;; We are on Emacs that properly escapes man
;; command args (see Emacs commit 820f0793f0b).
command
;; Older Emacs without the fix - escape the
;; arguments ourselves.
(mapconcat 'identity
(mapcar #'shell-quote-argument
(split-string command "\\s-+"))
" ")))
(search (match-string 2 path)) (search (match-string 2 path))
(buffer (funcall org-man-command command))) (buffer (funcall org-man-command command)))
(when search (when search