]> code.delx.au - gnu-emacs/blobdiff - lisp/paths.el
(normal-splash-screen, fancy-splash-screens-1): Add a reference to the Lisp
[gnu-emacs] / lisp / paths.el
index 4e3bd2cd4d410091b7df0440389da3478c1a91e7..846f91793d146f7690236e5cc543094cfcba3e85 100644 (file)
@@ -1,6 +1,7 @@
-;;; paths.el --- define pathnames for use by various Emacs commands.
+;;; paths.el --- define pathnames for use by various Emacs commands -*- no-byte-compile: t -*-
 
-;; Copyright (C) 1986, 1988 Free Software Foundation, Inc.
+;; Copyright (C) 1986, 1988, 1994, 1999, 2000, 2002, 2003,
+;;   2004, 2005, 2006 Free Software Foundation, Inc.
 
 ;; Maintainer: FSF
 ;; Keywords: internal
@@ -18,8 +19,9 @@
 ;; GNU General Public License for more details.
 
 ;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING.  If not, write to
-;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+;; along with GNU Emacs; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
 
 ;;; Commentary:
 
 
 ;;; Code:
 
+;; Docstrings in this file should, where reasonable, follow the
+;; conventions described in bindings.el, so that they get put in the
+;; DOC file rather than in memory.
+
+(defun prune-directory-list (dirs &optional keep reject)
+  "Returns a copy of DIRS with all non-existent directories removed.
+The optional argument KEEP is a list of directories to retain even if
+they don't exist, and REJECT is a list of directories to remove from
+DIRS, even if they exist; REJECT takes precedence over KEEP.
+
+Note that membership in REJECT and KEEP is checked using simple string
+comparison."
+  (apply #'nconc
+        (mapcar (lambda (dir)
+                  (and (not (member dir reject))
+                       (or (member dir keep) (file-directory-p dir))
+                       (list dir)))
+                   dirs)))
+
 (defvar Info-default-directory-list
-  (list "/usr/local/info/"
-       "/usr/local/lib/info/"
-       configure-info-directory
-       (expand-file-name "../info/" data-directory)
-       (expand-file-name "../../info/" data-directory))
-  "List of directories to search for Info documentation files.")
-
-(defvar news-path "/usr/spool/news/"
+  (let* ((config-dir
+         (file-name-as-directory configure-info-directory))
+        (config
+         (list config-dir))
+        (unpruned-prefixes
+         ;; Directory trees that may not exist at installation time, and
+         ;; so shouldn't be pruned based on existance.
+         '("/usr/local/"))
+        (prefixes
+         ;; Directory trees in which to look for info subdirectories
+         (prune-directory-list '("/usr/local/" "/usr/" "/opt/" "/")
+                               unpruned-prefixes))
+        (suffixes
+         ;; Subdirectories in each directory tree that may contain info
+         ;; directories.
+         '("" "share/" "gnu/" "gnu/lib/" "gnu/lib/emacs/"
+           "emacs/" "lib/" "lib/emacs/"))
+        (standard-info-dirs
+         (apply #'nconc
+                (mapcar (lambda (pfx)
+                          (let ((dirs
+                                 (mapcar (lambda (sfx)
+                                           (concat pfx sfx "info/"))
+                                         suffixes)))
+                            (if (member pfx unpruned-prefixes)
+                                dirs
+                              (prune-directory-list dirs config))))
+                        prefixes))))
+    ;; If $(prefix)/info is not one of the standard info directories,
+    ;; they are probably installing an experimental version of Emacs,
+    ;; so make sure that experimental version's Info files override
+    ;; the ones in standard directories.
+    (if (member config-dir standard-info-dirs)
+       (nconc standard-info-dirs config)
+      (cons config-dir standard-info-dirs)))
+  "Default list of directories to search for Info documentation files.
+They are searched in the order they are given in the list.
+Therefore, the directory of Info files that come with Emacs
+normally should come last (so that local files override standard ones),
+unless Emacs is installed into a non-standard directory.  In the latter
+case, the directory of Info files that come with Emacs should be
+first in this list.
+
+Once Info is started, the list of directories to search
+comes from the variable `Info-directory-list'.
+This variable `Info-default-directory-list' is used as the default
+for initializing `Info-directory-list' when Info is started, unless
+the environment variable INFOPATH is set.")
+
+(defvar news-directory
+  (if (file-exists-p "/usr/spool/news/")
+      "/usr/spool/news/"
+    "/var/spool/news/")
   "The root directory below which all news files are stored.")
+(defvaralias 'news-path 'news-directory)
 
 (defvar news-inews-program
   (cond ((file-exists-p "/usr/bin/inews") "/usr/bin/inews")
        ((file-exists-p "/usr/local/inews") "/usr/local/inews")
        ((file-exists-p "/usr/local/bin/inews") "/usr/local/bin/inews")
+       ((file-exists-p "/usr/contrib/lib/news/inews") "/usr/contrib/lib/news/inews")
        ((file-exists-p "/usr/lib/news/inews") "/usr/lib/news/inews")
        (t "inews"))
   "Program to post news.")
 
-(defvar gnus-default-nntp-server ""
-  ;; set this to your local server
-  "The name of the host running an NNTP server.
-If it is a string such as \":DIRECTORY\", then ~/DIRECTORY
-is used as a news spool.  `gnus-nntp-server' is initialised from NNTPSERVER
-environment variable or, if none, this value.")
+;; set this to your local server
+(defvar gnus-default-nntp-server "" "\
+The name of the host running an NNTP server.
+The null string means use the local host as the server site.")
 
 (defvar gnus-nntp-service "nntp"
   "NNTP service name, usually \"nntp\" or 119).
 Go to a local news spool if its value is nil, in which case `gnus-nntp-server'
 should be set to `(system-name)'.")
 
-(defvar gnus-your-domain nil
-  "Your domain name without your host name like: \"stars.flab.Fujitsu.CO.JP\"
-The DOMAINNAME environment variable is used instead if defined.  If
-the function `system-name' returns a fully qualified domain name, there is no
-need to define the name.")
-
-(defvar gnus-your-organization ""
-  "Your organization like: \"Fujitsu Laboratories Ltd., Kawasaki, Japan.\"
+(defvar gnus-local-organization nil "\
+*The name of your organization, as a string.
 The `ORGANIZATION' environment variable is used instead if defined.")
 
-(defvar mh-progs
-  (cond ((file-directory-p "/usr/bin/mh/") "/usr/bin/mh/") ;Ultrix 4.2
-       ((file-directory-p "/usr/new/mh/") "/usr/new/mh/") ;Ultrix <4.2
-        ((file-directory-p "/usr/local/bin/mh/") "/usr/local/bin/mh/")
-        ((file-directory-p "/usr/local/mh/") "/usr/local/mh/")
-        (t "/usr/local/bin/"))
-  "Directory containing MH commands.")
-
-(defvar mh-lib
-  (cond ((file-directory-p "/usr/lib/mh/") "/usr/lib/mh/") ;Ultrix 4.2
-       ((file-directory-p "/usr/new/lib/mh/") "/usr/new/lib/mh/") ;Ultrix <4.2
-        ((file-directory-p "/usr/local/lib/mh/") "/usr/local/lib/mh/")
-        (t "/usr/local/bin/mh/"))
-  "Directory of MH library.")
-
-(defvar rmail-file-name "~/RMAIL"
-  "Name of user's primary mail file.")
-
-(defvar gnus-startup-file "~/.newsrc"
-  "The file listing groups to which user is subscribed.
-Will use `gnus-startup-file'-SERVER instead if exists.")
-
-(defconst rmail-spool-directory
-  (if (memq system-type '(dgux-unix hpux usg-unix-v unisoft-unix rtu
-                         irix silicon-graphics-unix))
-      "/usr/mail/"
-    "/usr/spool/mail/")
+(defcustom rmail-file-name "~/RMAIL"
+  "*Name of user's primary mail file."
+  :type 'string
+  :group 'rmail
+  :version "21.1")
+
+(defvar rmail-spool-directory
+  (cond ((string-match "^[^-]+-[^-]+-sco3.2v4" system-configuration)
+        "/usr/spool/mail/")
+       ;; On The Bull DPX/2 /usr/spool/mail is used although
+       ;; it is usg-unix-v.
+       ((string-match "^m68k-bull-sysv3" system-configuration)
+        "/usr/spool/mail/")
+       ;; SVR4 and recent BSD are said to use this.
+       ;; Rather than trying to know precisely which systems use it,
+       ;; let's assume this dir is never used for anything else.
+       ((file-exists-p "/var/mail")
+        "/var/mail/")
+       ;; Many GNU/Linux systems use this name.
+       ((file-exists-p "/var/spool/mail")
+        "/var/spool/mail/")
+       ((memq system-type '(dgux hpux usg-unix-v unisoft-unix rtu irix))
+        "/usr/mail/")
+       (t "/usr/spool/mail/"))
   "Name of directory used by system mailer for delivering new mail.
 Its name should end with a slash.")
 
-(defconst sendmail-program
-  (if (file-exists-p "/usr/lib/sendmail")
-      "/usr/lib/sendmail"
-    (if (file-exists-p "/usr/ucblib/sendmail")
-       "/usr/ucblib/sendmail"
-      "fakemail"))                     ;In ../etc, to interface to /bin/mail.
-  "Program used to send messages.")
-
-(defconst term-file-prefix (if (eq system-type 'vax-vms) "[.term]" "term/")
-  "If non-nil, Emacs startup does (load (concat term-file-prefix (getenv \"TERM\")))
+(defcustom sendmail-program
+  (cond
+    ((file-exists-p "/usr/sbin/sendmail") "/usr/sbin/sendmail")
+    ((file-exists-p "/usr/lib/sendmail") "/usr/lib/sendmail")
+    ((file-exists-p "/usr/ucblib/sendmail") "/usr/ucblib/sendmail")
+    (t "fakemail"))                    ;In ../etc, to interface to /bin/mail.
+  "Program used to send messages."
+  :group 'mail
+  :type 'file)
+
+(defcustom remote-shell-program
+  (cond
+   ;; Some systems use rsh for the remote shell; others use that name for the
+   ;; restricted shell and use remsh for the remote shell.  Let's try to guess
+   ;; based on what we actually find out there.  The restricted shell is
+   ;; almost certainly in /bin or /usr/bin, so it's probably safe to assume
+   ;; that an rsh found elsewhere is the remote shell program.  The converse
+   ;; is not true: /usr/bin/rsh could be either one, so check that last.
+   ((file-exists-p "/usr/ucb/remsh") "/usr/ucb/remsh")
+   ((file-exists-p "/usr/bsd/remsh") "/usr/bsd/remsh")
+   ((file-exists-p "/bin/remsh") "/bin/remsh")
+   ((file-exists-p "/usr/bin/remsh") "/usr/bin/remsh")
+   ((file-exists-p "/usr/local/bin/remsh") "/usr/local/bin/remsh")
+   ((file-exists-p "/usr/ucb/rsh") "/usr/ucb/rsh")
+   ((file-exists-p "/usr/bsd/rsh") "/usr/bsd/rsh")
+   ((file-exists-p "/usr/local/bin/rsh") "/usr/local/bin/rsh")
+   ((file-exists-p "/usr/bin/rcmd") "/usr/bin/rcmd")
+   ((file-exists-p "/bin/rcmd") "/bin/rcmd")
+   ((file-exists-p "/bin/rsh") "/bin/rsh")
+   ((file-exists-p "/usr/bin/rsh") "/usr/bin/rsh")
+   (t "rsh"))
+  "File name for remote-shell program (often rsh or remsh)."
+  :group 'environment
+  :type 'file)
+
+(defvar term-file-prefix (if (eq system-type 'vax-vms) "[.term]" "term/") "\
+If non-nil, Emacs startup does (load (concat term-file-prefix (getenv \"TERM\")))
 You may set this variable to nil in your `.emacs' file if you do not wish
 the terminal-initialization file to be loaded.")
 
-;; Solaris 2 has both of these files; prefer /usr/ucb/man
-;; because the other has nonstandard argument conventions.
-(defconst manual-program (if (file-exists-p "/usr/ucb/man")
-                            "/usr/ucb/man" "/usr/bin/man")
-  "Program to run to print man pages.")
-
-;; Note that /usr/man/cat is not really right for this on sysV; nothing is,
-;; judging by the list of directories below.  You can't get the dir
-;; for a section by appending the section number to any one prefix.
-;; But it turns out that a string that's wrong does no harm here.
-(defconst manual-formatted-dir-prefix
-  (if (file-exists-p "/usr/man/cat.C")  ;; Check for Xenix.
-      "/usr/man/cat." "/usr/man/cat")
-  "Prefix for directories containing formatted manual pages.
-Append a section-number or section-name to get a directory name.")
-
-(defconst manual-formatted-dirlist
-  (cond ((eq system-type 'hpux)
-        '("/usr/man/cat1" "/usr/man/cat2" "/usr/man/cat3"
-          "/usr/man/cat4" "/usr/man/cat5" "/usr/man/cat6"
-          "/usr/man/cat7" "/usr/man/cat1m" "/usr/man/cat8"
-          "/usr/local/man/cat1" "/usr/local/man/cat2" "/usr/local/man/cat3"
-          "/usr/local/man/cat4" "/usr/local/man/cat5" "/usr/local/man/cat6"
-          "/usr/local/man/cat7" "/usr/local/man/cat1m" "/usr/local/man/cat8"
-          "/usr/contrib/man/cat1" "/usr/contrib/man/cat2"
-          "/usr/contrib/man/cat3" "/usr/contrib/man/cat4"
-          "/usr/contrib/man/cat5" "/usr/contrib/man/cat6"
-          "/usr/contrib/man/cat7" "/usr/contrib/man/cat1m"
-          "/usr/contrib/man/cat8"))
-        ((file-exists-p "/usr/man/cat.C")  ; Xenix
-         '("/usr/man/cat.C" "/usr/man/cat.CP" "/usr/man/cat.CT"
-           "/usr/man/cat.DOS/" "/usr/man/cat.F" "/usr/man/cat.HW"
-           "/usr/man/cat.M/" "/usr/man/cat.S" "/usr/man/cat.LOCAL"))
-        ((file-exists-p "/usr/man/cat3/cat3")
-         ;; This is for UMAX.
-         '("/usr/man/cat1"       "/usr/man/cat2"
-           "/usr/man/cat3"       "/usr/man/cat3/cat3"
-           "/usr/man/cat3/cat3b" "/usr/man/cat3/cat3c"
-           "/usr/man/cat3/cat3f" "/usr/man/cat3/cat3m"
-           "/usr/man/cat3/cat3n" "/usr/man/cat3/cat3p"
-           "/usr/man/cat3/cat3s" "/usr/man/cat3/cat3u"
-           "/usr/man/cat3/cat3x" "/usr/man/cat4"
-           "/usr/man/cat5"       "/usr/man/cat6"
-           "/usr/man/cat7"       "/usr/man/cat8"
-           "/usr/man/catl"       "/usr/man/catn"))
-        ((file-exists-p "/usr/man/cat1")
-         '("/usr/man/cat1" "/usr/man/cat2" "/usr/man/cat3"
-           "/usr/man/cat4" "/usr/man/cat5" "/usr/man/cat6"
-           "/usr/man/cat7" "/usr/man/cat8" "/usr/man/catl" "/usr/man/catn"))
-        (t
-          '("/usr/catman/u_man/man1" "/usr/catman/u_man/man6"
-            "/usr/catman/p_man/man2" "/usr/catman/p_man/man3"
-            "/usr/catman/p_man/man4" "/usr/catman/p_man/man5"
-            "/usr/catman/a_man/man1" "/usr/catman/a_man/man7"
-            "/usr/catman/a_man/man8" "/usr/catman/local"
-            "/usr/catman/a_man/man8" "/usr/catman/local/man1"
-            "/usr/catman/local/man2" "/usr/catman/local/man3"
-            "/usr/catman/local/man4" "/usr/catman/local/man5"
-            "/usr/catman/local/man6" "/usr/catman/local/man7"
-            "/usr/catman/local/man8")))
-  "List of directories containing formatted manual pages.")
-
-(defconst abbrev-file-name 
+(defvar abbrev-file-name
   (if (eq system-type 'vax-vms)
       "~/abbrev.def"
-    "~/.abbrev_defs")
+    (convert-standard-filename "~/.abbrev_defs"))
   "*Default name of file to read abbrevs from.")
 
+;;; arch-tag: bae27ffb-9944-4c87-b569-30d4635a99e1
 ;;; paths.el ends here