changeset 29089:cdecd2b73d56

(parse-colon-path): Doc fix. (auto-mode-alist, interpreter-mode-alist): Purecopy the cars. (set-auto-mode): Use mapc.
author Dave Love <fx@gnu.org>
date Mon, 22 May 2000 19:29:04 +0000
parents 6dce569d0615
children 86d462e378ce
files lisp/files.el
diffstat 1 files changed, 170 insertions(+), 163 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/files.el	Mon May 22 19:14:50 2000 +0000
+++ b/lisp/files.el	Mon May 22 19:29:04 2000 +0000
@@ -472,7 +472,9 @@
 Not actually set up until the first time you you use it.")
 
 (defun parse-colon-path (cd-path)
-  "Explode a colon-separated search path into a list of directory names."
+  "Explode a colon-separated search path into a list of directory names.
+\(For values of `colon' equal to `path-separator'.)"
+  ;; We could use split-string here.
   (and cd-path
        (let (cd-prefix cd-list (cd-start 0) cd-colon)
 	 (setq cd-path (concat cd-path path-separator))
@@ -1310,135 +1312,137 @@
 		    (prin1-to-string err)))))
 
 (defvar auto-mode-alist
-  '(("\\.te?xt\\'" . text-mode)
-    ("\\.c\\'" . c-mode)
-    ("\\.h\\'" . c-mode)
-    ("\\.tex\\'" . tex-mode)
-    ("\\.ltx\\'" . latex-mode)
-    ("\\.el\\'" . emacs-lisp-mode)
-    ("\\.scm\\'" . scheme-mode)
-    ("\\.l\\'" . lisp-mode)
-    ("\\.lisp\\'" . lisp-mode)
-    ("\\.f\\'" . fortran-mode)
-    ("\\.F\\'" . fortran-mode)
-    ("\\.for\\'" . fortran-mode)
-    ("\\.p\\'" . pascal-mode)
-    ("\\.pas\\'" . pascal-mode)
-    ("\\.ad[abs]\\'" . ada-mode)
-    ("\\.\\([pP][Llm]\\|al\\)\\'" . perl-mode)
-    ("\\.s?html?\\'" . html-mode)
-    ("\\.cc\\'" . c++-mode)
-    ("\\.hh\\'" . c++-mode)
-    ("\\.hpp\\'" . c++-mode)
-    ("\\.C\\'" . c++-mode)
-    ("\\.H\\'" . c++-mode)
-    ("\\.cpp\\'" . c++-mode)
-    ("\\.cxx\\'" . c++-mode)
-    ("\\.hxx\\'" . c++-mode)
-    ("\\.c\\+\\+\\'" . c++-mode)
-    ("\\.h\\+\\+\\'" . c++-mode)
-    ("\\.m\\'" . objc-mode)
-    ("\\.java\\'" . java-mode)
-    ("\\.mk\\'" . makefile-mode)
-    ("\\(M\\|m\\|GNUm\\)akefile\\(\\.in\\)?\\'" . makefile-mode)
-    ("\\.am\\'" . makefile-mode)	;For Automake.
+  (mapc
+   (lambda (elt)
+     (cons (purecopy (car elt)) (cdr elt)))
+   '(("\\.te?xt\\'" . text-mode)
+     ("\\.c\\'" . c-mode)
+     ("\\.h\\'" . c-mode)
+     ("\\.tex\\'" . tex-mode)
+     ("\\.ltx\\'" . latex-mode)
+     ("\\.el\\'" . emacs-lisp-mode)
+     ("\\.scm\\'" . scheme-mode)
+     ("\\.l\\'" . lisp-mode)
+     ("\\.lisp\\'" . lisp-mode)
+     ("\\.f\\'" . fortran-mode)
+     ("\\.F\\'" . fortran-mode)
+     ("\\.for\\'" . fortran-mode)
+     ("\\.p\\'" . pascal-mode)
+     ("\\.pas\\'" . pascal-mode)
+     ("\\.ad[abs]\\'" . ada-mode)
+     ("\\.\\([pP][Llm]\\|al\\)\\'" . perl-mode)
+     ("\\.s?html?\\'" . html-mode)
+     ("\\.cc\\'" . c++-mode)
+     ("\\.hh\\'" . c++-mode)
+     ("\\.hpp\\'" . c++-mode)
+     ("\\.C\\'" . c++-mode)
+     ("\\.H\\'" . c++-mode)
+     ("\\.cpp\\'" . c++-mode)
+     ("\\.cxx\\'" . c++-mode)
+     ("\\.hxx\\'" . c++-mode)
+     ("\\.c\\+\\+\\'" . c++-mode)
+     ("\\.h\\+\\+\\'" . c++-mode)
+     ("\\.m\\'" . objc-mode)
+     ("\\.java\\'" . java-mode)
+     ("\\.mk\\'" . makefile-mode)
+     ("\\(M\\|m\\|GNUm\\)akefile\\(\\.in\\)?\\'" . makefile-mode)
+     ("\\.am\\'" . makefile-mode)	;For Automake.
 ;;; Less common extensions come here
 ;;; so more common ones above are found faster.
-    ("\\.texinfo\\'" . texinfo-mode)
-    ("\\.te?xi\\'" . texinfo-mode)
-    ("\\.s\\'" . asm-mode)
-    ("\\.S\\'" . asm-mode)
-    ("\\.asm\\'" . asm-mode)
-    ("ChangeLog\\'" . change-log-mode)
-    ("change\\.log\\'" . change-log-mode)
-    ("changelo\\'" . change-log-mode)
-    ("ChangeLog\\.[0-9]+\\'" . change-log-mode)
-    ;; for MSDOS and MS-Windows (which are case-insensitive)
-    ("changelog\\'" . change-log-mode)
-    ("changelog\\.[0-9]+\\'" . change-log-mode)
-    ("\\$CHANGE_LOG\\$\\.TXT" . change-log-mode)
-    ("\\.scm\\.[0-9]*\\'" . scheme-mode)
-    ("\\.[ck]?sh\\'\\|\\.shar\\'\\|/\\.z?profile\\'" . sh-mode)
-    ("\\(/\\|\\`\\)\\.\\(bash_profile\\|z?login\\|bash_login\\|z?logout\\)\\'" . sh-mode)
-    ("\\(/\\|\\`\\)\\.\\(bash_logout\\|shrc\\|[kz]shrc\\|bashrc\\|t?cshrc\\|esrc\\)\\'" . sh-mode)
-    ("\\(/\\|\\`\\)\\.\\([kz]shenv\\|xinitrc\\|startxrc\\|xsession\\)\\'" . sh-mode)
-    ("\\.m?spec$" . sh-mode)
-    ("\\.mm\\'" . nroff-mode)
-    ("\\.me\\'" . nroff-mode)
-    ("\\.ms\\'" . nroff-mode)
-    ("\\.man\\'" . nroff-mode)
-    ("\\.\\(u?lpc\\|pike\\|pmod\\)\\'" . pike-mode)
+     ("\\.texinfo\\'" . texinfo-mode)
+     ("\\.te?xi\\'" . texinfo-mode)
+     ("\\.s\\'" . asm-mode)
+     ("\\.S\\'" . asm-mode)
+     ("\\.asm\\'" . asm-mode)
+     ("ChangeLog\\'" . change-log-mode)
+     ("change\\.log\\'" . change-log-mode)
+     ("changelo\\'" . change-log-mode)
+     ("ChangeLog\\.[0-9]+\\'" . change-log-mode)
+     ;; for MSDOS and MS-Windows (which are case-insensitive)
+     ("changelog\\'" . change-log-mode)
+     ("changelog\\.[0-9]+\\'" . change-log-mode)
+     ("\\$CHANGE_LOG\\$\\.TXT" . change-log-mode)
+     ("\\.scm\\.[0-9]*\\'" . scheme-mode)
+     ("\\.[ck]?sh\\'\\|\\.shar\\'\\|/\\.z?profile\\'" . sh-mode)
+     ("\\(/\\|\\`\\)\\.\\(bash_profile\\|z?login\\|bash_login\\|z?logout\\)\\'" . sh-mode)
+     ("\\(/\\|\\`\\)\\.\\(bash_logout\\|shrc\\|[kz]shrc\\|bashrc\\|t?cshrc\\|esrc\\)\\'" . sh-mode)
+     ("\\(/\\|\\`\\)\\.\\([kz]shenv\\|xinitrc\\|startxrc\\|xsession\\)\\'" . sh-mode)
+     ("\\.m?spec$" . sh-mode)
+     ("\\.mm\\'" . nroff-mode)
+     ("\\.me\\'" . nroff-mode)
+     ("\\.ms\\'" . nroff-mode)
+     ("\\.man\\'" . nroff-mode)
+     ("\\.\\(u?lpc\\|pike\\|pmod\\)\\'" . pike-mode)
 ;;; The following should come after the ChangeLog pattern
 ;;; for the sake of ChangeLog.1, etc.
 ;;; and after the .scm.[0-9] pattern too.
-    ("\\.[12345678]\\'" . nroff-mode)
-    ("\\.TeX\\'" . tex-mode)
-    ("\\.sty\\'" . latex-mode)
-    ("\\.cls\\'" . latex-mode)		;LaTeX 2e class
-    ("\\.clo\\'" . latex-mode)		;LaTeX 2e class option
-    ("\\.bbl\\'" . latex-mode)
-    ("\\.bib\\'" . bibtex-mode)
-    ("\\.sql\\'" . sql-mode)
-    ("\\.m4\\'" . m4-mode)
-    ("\\.mc\\'" . m4-mode)
-    ("\\.mf\\'" . metafont-mode)
-    ("\\.mp\\'" . metapost-mode)
-    ("\\.vhdl?\\'" . vhdl-mode)
-    ("\\.article\\'" . text-mode)
-    ("\\.letter\\'" . text-mode)
-    ("\\.tcl\\'" . tcl-mode)
-    ("\\.exp\\'" . tcl-mode)
-    ("\\.itcl\\'" . tcl-mode)
-    ("\\.itk\\'" . tcl-mode)
-    ("\\.icn\\'" . icon-mode)
-    ("\\.sim\\'" . simula-mode)
-    ("\\.mss\\'" . scribe-mode)
-    ("\\.f90\\'" . f90-mode)
-    ("\\.pro\\'" . idlwave-mode)
-    ("\\.lsp\\'" . lisp-mode)
-    ("\\.awk\\'" . awk-mode)
-    ("\\.prolog\\'" . prolog-mode)
-    ("\\.tar\\'" . tar-mode)
-    ("\\.\\(arc\\|zip\\|lzh\\|zoo\\|jar\\)\\'" . archive-mode)
-    ("\\.\\(ARC\\|ZIP\\|LZH\\|ZOO\\|JAR\\)\\'" . archive-mode)
-    ;; Mailer puts message to be edited in
-    ;; /tmp/Re.... or Message
-    ("\\`/tmp/Re" . text-mode)
-    ("/Message[0-9]*\\'" . text-mode)
-    ("/drafts/[0-9]+\\'" . mh-letter-mode)
-    ("\\.zone\\'" . zone-mode)
-    ;; some news reader is reported to use this
-    ("\\`/tmp/fol/" . text-mode)
-    ("\\.y\\'" . c-mode)
-    ("\\.lex\\'" . c-mode)
-    ("\\.oak\\'" . scheme-mode)
-    ("\\.sgml?\\'" . sgml-mode)
-    ("\\.xml\\'" . sgml-mode)
-    ("\\.dtd\\'" . sgml-mode)
-    ("\\.ds\\(ss\\)?l\\'" . dsssl-mode)
-    ("\\.idl\\'" . idl-mode)
-    ;; .emacs following a directory delimiter
-    ;; in Unix, MSDOG or VMS syntax.
-    ("[]>:/\\]\\..*emacs\\'" . emacs-lisp-mode)
-    ("\\`\\..*emacs\\'" . emacs-lisp-mode)
-    ;; _emacs following a directory delimiter
-    ;; in MsDos syntax
-    ("[:/]_emacs\\'" . emacs-lisp-mode)
-    ("/crontab\\.X*[0-9]+\\'" . shell-script-mode)
-    ("\\.ml\\'" . lisp-mode)
-    ("\\.asn$" . snmp-mode)
-    ("\\.mib$" . snmp-mode)
-    ("\\.smi$" . snmp-mode)
-    ("\\.as2$" . snmpv2-mode)
-    ("\\.mi2$" . snmpv2-mode)
-    ("\\.sm2$" . snmpv2-mode)
-    ("\\.\\(diffs?\\|patch\\|rej\\)\\'" . diff-mode)
-    ("\\.[eE]?[pP][sS]$" . ps-mode)
-    ("configure\\.in\\'" . autoconf-mode)
-    ("BROWSE\\'" . ebrowse-tree-mode)
-    ("\\.ebrowse\\'" . ebrowse-tree-mode))
-  "\
-Alist of filename patterns vs corresponding major mode functions.
+     ("\\.[12345678]\\'" . nroff-mode)
+     ("\\.TeX\\'" . tex-mode)
+     ("\\.sty\\'" . latex-mode)
+     ("\\.cls\\'" . latex-mode)		;LaTeX 2e class
+     ("\\.clo\\'" . latex-mode)		;LaTeX 2e class option
+     ("\\.bbl\\'" . latex-mode)
+     ("\\.bib\\'" . bibtex-mode)
+     ("\\.sql\\'" . sql-mode)
+     ("\\.m4\\'" . m4-mode)
+     ("\\.mc\\'" . m4-mode)
+     ("\\.mf\\'" . metafont-mode)
+     ("\\.mp\\'" . metapost-mode)
+     ("\\.vhdl?\\'" . vhdl-mode)
+     ("\\.article\\'" . text-mode)
+     ("\\.letter\\'" . text-mode)
+     ("\\.tcl\\'" . tcl-mode)
+     ("\\.exp\\'" . tcl-mode)
+     ("\\.itcl\\'" . tcl-mode)
+     ("\\.itk\\'" . tcl-mode)
+     ("\\.icn\\'" . icon-mode)
+     ("\\.sim\\'" . simula-mode)
+     ("\\.mss\\'" . scribe-mode)
+     ("\\.f90\\'" . f90-mode)
+     ("\\.pro\\'" . idlwave-mode)
+     ("\\.lsp\\'" . lisp-mode)
+     ("\\.awk\\'" . awk-mode)
+     ("\\.prolog\\'" . prolog-mode)
+     ("\\.tar\\'" . tar-mode)
+     ("\\.\\(arc\\|zip\\|lzh\\|zoo\\|jar\\)\\'" . archive-mode)
+     ("\\.\\(ARC\\|ZIP\\|LZH\\|ZOO\\|JAR\\)\\'" . archive-mode)
+     ;; Mailer puts message to be edited in
+     ;; /tmp/Re.... or Message
+     ("\\`/tmp/Re" . text-mode)
+     ("/Message[0-9]*\\'" . text-mode)
+     ("/drafts/[0-9]+\\'" . mh-letter-mode)
+     ("\\.zone\\'" . zone-mode)
+     ;; some news reader is reported to use this
+     ("\\`/tmp/fol/" . text-mode)
+     ("\\.y\\'" . c-mode)
+     ("\\.lex\\'" . c-mode)
+     ("\\.oak\\'" . scheme-mode)
+     ("\\.sgml?\\'" . sgml-mode)
+     ("\\.xml\\'" . sgml-mode)
+     ("\\.dtd\\'" . sgml-mode)
+     ("\\.ds\\(ss\\)?l\\'" . dsssl-mode)
+     ("\\.idl\\'" . idl-mode)
+     ;; .emacs following a directory delimiter
+     ;; in Unix, MSDOG or VMS syntax.
+     ("[]>:/\\]\\..*emacs\\'" . emacs-lisp-mode)
+     ("\\`\\..*emacs\\'" . emacs-lisp-mode)
+     ;; _emacs following a directory delimiter
+     ;; in MsDos syntax
+     ("[:/]_emacs\\'" . emacs-lisp-mode)
+     ("/crontab\\.X*[0-9]+\\'" . shell-script-mode)
+     ("\\.ml\\'" . lisp-mode)
+     ("\\.asn$" . snmp-mode)
+     ("\\.mib$" . snmp-mode)
+     ("\\.smi$" . snmp-mode)
+     ("\\.as2$" . snmpv2-mode)
+     ("\\.mi2$" . snmpv2-mode)
+     ("\\.sm2$" . snmpv2-mode)
+     ("\\.\\(diffs?\\|patch\\|rej\\)\\'" . diff-mode)
+     ("\\.[eE]?[pP][sS]$" . ps-mode)
+     ("configure\\.in\\'" . autoconf-mode)
+     ("BROWSE\\'" . ebrowse-tree-mode)
+     ("\\.ebrowse\\'" . ebrowse-tree-mode)))
+  "Alist of filename patterns vs corresponding major mode functions.
 Each element looks like (REGEXP . FUNCTION) or (REGEXP FUNCTION NON-NIL).
 \(NON-NIL stands for anything that is not nil; the value does not matter.)
 Visiting a file whose name matches REGEXP specifies FUNCTION as the
@@ -1450,43 +1454,46 @@
 
 
 (defvar interpreter-mode-alist
-  '(("perl" . perl-mode)
-    ("perl5" . perl-mode)
-    ("miniperl" . perl-mode)
-    ("wish" . tcl-mode)
-    ("wishx" . tcl-mode)
-    ("tcl" . tcl-mode)
-    ("tclsh" . tcl-mode)
-    ("awk" . awk-mode)
-    ("mawk" . awk-mode)
-    ("nawk" . awk-mode)
-    ("gawk" . awk-mode)
-    ("scm" . scheme-mode)
-    ("ash" . sh-mode)
-    ("bash" . sh-mode)
-    ("csh" . sh-mode)
-    ("dtksh" . sh-mode)
-    ("es" . sh-mode)
-    ("itcsh" . sh-mode)
-    ("jsh" . sh-mode)
-    ("ksh" . sh-mode)
-    ("oash" . sh-mode)
-    ("pdksh" . sh-mode)
-    ("rc" . sh-mode)
-    ("rpm" . sh-mode)
-    ("sh" . sh-mode)
-    ("sh5" . sh-mode)
-    ("tcsh" . sh-mode)
-    ("wksh" . sh-mode)
-    ("wsh" . sh-mode)
-    ("zsh" . sh-mode)
-    ("tail" . text-mode)
-    ("more" . text-mode)
-    ("less" . text-mode)
-    ("pg" . text-mode)
-    ("make" . makefile-mode)		; Debian uses this
-    ("guile" . scheme-mode)
-    ("clisp" . lisp-mode))
+  (mapc
+   (lambda (l)
+     (cons (purecopy (car l)) (cdr l)))
+   '(("perl" . perl-mode)
+     ("perl5" . perl-mode)
+     ("miniperl" . perl-mode)
+     ("wish" . tcl-mode)
+     ("wishx" . tcl-mode)
+     ("tcl" . tcl-mode)
+     ("tclsh" . tcl-mode)
+     ("awk" . awk-mode)
+     ("mawk" . awk-mode)
+     ("nawk" . awk-mode)
+     ("gawk" . awk-mode)
+     ("scm" . scheme-mode)
+     ("ash" . sh-mode)
+     ("bash" . sh-mode)
+     ("csh" . sh-mode)
+     ("dtksh" . sh-mode)
+     ("es" . sh-mode)
+     ("itcsh" . sh-mode)
+     ("jsh" . sh-mode)
+     ("ksh" . sh-mode)
+     ("oash" . sh-mode)
+     ("pdksh" . sh-mode)
+     ("rc" . sh-mode)
+     ("rpm" . sh-mode)
+     ("sh" . sh-mode)
+     ("sh5" . sh-mode)
+     ("tcsh" . sh-mode)
+     ("wksh" . sh-mode)
+     ("wsh" . sh-mode)
+     ("zsh" . sh-mode)
+     ("tail" . text-mode)
+     ("more" . text-mode)
+     ("less" . text-mode)
+     ("pg" . text-mode)
+     ("make" . makefile-mode)		; Debian uses this
+     ("guile" . scheme-mode)
+     ("clisp" . lisp-mode)))
   "Alist mapping interpreter names to major modes.
 This alist applies to files whose first line starts with `#!'.
 Each element looks like (INTERPRETER . MODE).
@@ -1583,7 +1590,7 @@
     ;; outside the save-excursion.
     (when modes
       (unless just-from-file-name
-	(mapcar 'funcall (nreverse modes)))
+	(mapc 'funcall (nreverse modes)))
       (setq done t))
     ;; If we didn't find a mode from a -*- line, try using the file name.
     (if (and (not done) buffer-file-name)