worley@EDDIE.MIT.EDU (Dale Worley) (11/22/89)
Does anybody out there have code to read the MANPATH environment variable and add its elements to the manual-formatted-dirlist variable in the correct way? It should be straightforward, but I don't want to reinvent the wheel... Thanks, Dale Worley Compass, Inc. worley@compass.com -- The world ends tomorrow -- be sure to back up your files!
rberlin@birdland.sun.com (Rich Berlin) (12/02/89)
This ought to fill the bill.
-- Rich
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; manpath.el --- find /cat? directories using MANPATH environment variable.
;; Author : Rich Berlin
;; Created On : Thu Sep 1 16:52:15 1988
;; Last Modified By: Rich Berlin
;; Last Modified On: Thu Nov 16 16:25:17 1989
;; Update Count : 5
;; Status : In daily use, probably OK.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; This is a handy way to keep up-to-date with the MANPATH in your .cshrc.
;; I use this by loading this file, and then doing
;; (setq manual-formatted-dirlist (search-manpath-for-cat-directories))
;;
;; Of some interest is csh-path-to-list, which you may want to use
;; for other purposes.
(defun search-manpath-for-cat-directories ()
"Return a list of all 'cat' directories in the current path specified\n\
by the 'MANPATH' environment variable."
(search-path-for-files-matching
(csh-path-to-list (getenv "MANPATH")) "cat.+"))
(defun csh-path-to-list (string)
(if (null string)
(setq string "/usr/man"))
(let ((path nil) index)
(while (setq index (string-match ":" string))
(setq path (append path (list (substring string 0 index))))
(setq string (substring string (1+ index))))
(setq path (append path (list string)))))
(defun search-path-for-files-matching (path regexp)
(if (null path)
(list regexp)
(let (curr-dir directory-list)
(setq regexp (format "^%s$" regexp)) ; So files MATCH regexp, instead
(while path ; of just CONTAINING regexp.
(setq curr-dir (car path))
(setq path (cdr path))
(if (file-exists-p curr-dir)
(setq directory-list (append directory-list
(directory-files curr-dir t regexp)))))
directory-list)))