mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2025-01-01 11:14:55 +00:00
Add some dired-x support for local filenames with Red Hat's man.
* lisp/man.el (Man-support-local-filenames): Also handle Red Hat's man. * lisp/dired-x.el (Man-support-local-filenames): Autoload it. (dired-guess-shell-alist-default): Also handle Red Hat's man.
This commit is contained in:
parent
2777ccbfde
commit
3ab7ebb9c5
@ -1,5 +1,9 @@
|
||||
2011-03-02 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* man.el (Man-support-local-filenames): Also handle Red Hat's man.
|
||||
* dired-x.el (Man-support-local-filenames): Autoload it.
|
||||
(dired-guess-shell-alist-default): Also handle Red Hat's man.
|
||||
|
||||
* dired-x.el (dired-default-directory-alist, dired-default-directory):
|
||||
Mark as obsolete.
|
||||
(dired-smart-shell-command): Just call dired-current-directory.
|
||||
|
@ -860,7 +860,7 @@ replace it with a dir-locals-file `./%s'"
|
||||
;; NOTE: Use `gunzip -c' instead of `zcat' on `.gz' files. Some do not
|
||||
;; install GNU zip's version of zcat.
|
||||
|
||||
(declare-function Man-support-local-filenames "man" ())
|
||||
(autoload 'Man-support-local-filenames "man")
|
||||
|
||||
(defvar dired-guess-shell-alist-default
|
||||
(list
|
||||
@ -953,20 +953,28 @@ replace it with a dir-locals-file `./%s'"
|
||||
" " dired-guess-shell-znew-switches))
|
||||
|
||||
;; The following four extensions are useful with dired-man ("N" key)
|
||||
(list "\\.\\(?:[0-9]\\|man\\)\\'" '(progn (require 'man)
|
||||
(if (Man-support-local-filenames)
|
||||
"man -l"
|
||||
"cat * | tbl | nroff -man -h")))
|
||||
(list "\\.\\(?:[0-9]\\|man\\)\\.g?z\\'" '(progn (require 'man)
|
||||
(if (Man-support-local-filenames)
|
||||
"man -l"
|
||||
"gunzip -qc * | tbl | nroff -man -h"))
|
||||
;; FIXME "man ./" does not work with dired-do-shell-command,
|
||||
;; because there seems to be no way for us to modify the filename,
|
||||
;; only the command. Hmph. `dired-man' works though.
|
||||
;; `dired-man' does
|
||||
(list "\\.\\(?:[0-9]\\|man\\)\\'" '(let ((loc (Man-support-local-filenames)))
|
||||
(cond ((eq loc 'man-db) "man -l")
|
||||
((eq loc 'man) "man ./")
|
||||
(t
|
||||
"cat * | tbl | nroff -man -h"))))
|
||||
(list "\\.\\(?:[0-9]\\|man\\)\\.g?z\\'"
|
||||
'(let ((loc (Man-support-local-filenames)))
|
||||
(cond ((eq loc 'man-db)
|
||||
"man -l")
|
||||
((eq loc 'man)
|
||||
"man ./")
|
||||
(t "gunzip -qc * | tbl | nroff -man -h")))
|
||||
;; Optional decompression.
|
||||
'(concat "gunzip" (if dired-guess-shell-gzip-quiet " -q")))
|
||||
(list "\\.[0-9]\\.Z\\'" '(progn (require 'man)
|
||||
(if (Man-support-local-filenames)
|
||||
"man -l"
|
||||
"zcat * | tbl | nroff -man -h"))
|
||||
(list "\\.[0-9]\\.Z\\'" '(let ((loc (Man-support-local-filenames)))
|
||||
(cond ((eq loc 'man-db) "man -l")
|
||||
((eq loc 'man) "man ./")
|
||||
(t "zcat * | tbl | nroff -man -h")))
|
||||
;; Optional conversion to gzip format.
|
||||
'(concat "znew" (if dired-guess-shell-gzip-quiet " -q")
|
||||
" " dired-guess-shell-znew-switches))
|
||||
|
56
lisp/man.el
56
lisp/man.el
@ -623,36 +623,32 @@ and the `Man-section-translations-alist' variables)."
|
||||
(concat Man-specified-section-option section " " name))))
|
||||
|
||||
(defun Man-support-local-filenames ()
|
||||
"Check the availability of `-l' option of the man command.
|
||||
This option allows `man' to interpret command line arguments
|
||||
as local filenames.
|
||||
Return the value of the variable `Man-support-local-filenames'
|
||||
if it was set to nil or t before the call of this function.
|
||||
If t, the man command supports `-l' option. If nil, it doesn't.
|
||||
Otherwise, if the value of `Man-support-local-filenames'
|
||||
is neither t nor nil, then determine a new value, set it
|
||||
to the variable `Man-support-local-filenames' and return
|
||||
a new value."
|
||||
(if (or (not Man-support-local-filenames)
|
||||
(eq Man-support-local-filenames t))
|
||||
Man-support-local-filenames
|
||||
(setq Man-support-local-filenames
|
||||
(with-temp-buffer
|
||||
(and (equal (condition-case nil
|
||||
(let ((default-directory
|
||||
;; Assure that `default-directory' exists
|
||||
;; and is readable.
|
||||
(if (and (file-directory-p default-directory)
|
||||
(file-readable-p default-directory))
|
||||
default-directory
|
||||
(expand-file-name "~/"))))
|
||||
(call-process manual-program nil t nil "--help"))
|
||||
(error nil))
|
||||
0)
|
||||
(progn
|
||||
(goto-char (point-min))
|
||||
(search-forward "--local-file" nil t))
|
||||
t)))))
|
||||
"Return non-nil if the man command supports local filenames.
|
||||
Different man programs support this feature in different ways.
|
||||
The default Debian man program (\"man-db\") has a `--local-file'
|
||||
\(or `-l') option for this purpose. The default Red Hat man
|
||||
program has no such option, but interprets any name containing
|
||||
a \"/\" as a local filename. The function returns either `man-db'
|
||||
`man', or nil."
|
||||
(if (eq Man-support-local-filenames 'auto-detect)
|
||||
(setq Man-support-local-filenames
|
||||
(with-temp-buffer
|
||||
(let ((default-directory
|
||||
;; Ensure that `default-directory' exists and is readable.
|
||||
(if (and (file-directory-p default-directory)
|
||||
(file-readable-p default-directory))
|
||||
default-directory
|
||||
(expand-file-name "~/"))))
|
||||
(ignore-errors
|
||||
(call-process manual-program nil t nil "--help")))
|
||||
(cond ((search-backward "--local-file" nil 'move)
|
||||
'man-db)
|
||||
;; This feature seems to be present in at least ver 1.4f,
|
||||
;; which is about 20 years old.
|
||||
;; I don't know if this version has an official name?
|
||||
((looking-at "^man, versione? [1-9]")
|
||||
'man))))
|
||||
Man-support-local-filenames))
|
||||
|
||||
|
||||
;; ======================================================================
|
||||
|
Loading…
Reference in New Issue
Block a user