emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] Changes to emacs/lisp/files.el,v


From: Kim F. Storm
Subject: [Emacs-diffs] Changes to emacs/lisp/files.el,v
Date: Sun, 31 Dec 2006 00:29:50 +0000

CVSROOT:        /cvsroot/emacs
Module name:    emacs
Changes by:     Kim F. Storm <kfstorm>  06/12/31 00:29:49

Index: files.el
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/files.el,v
retrieving revision 1.872
retrieving revision 1.873
diff -u -b -r1.872 -r1.873
--- files.el    30 Dec 2006 06:28:57 -0000      1.872
+++ files.el    31 Dec 2006 00:29:49 -0000      1.873
@@ -1876,6 +1876,16 @@
   (if (fboundp 'ucs-set-table-for-input) ; don't lose when building
       (ucs-set-table-for-input)))
 
+(defcustom auto-mode-case-fold nil
+  "Non-nil means to try second pass through `auto-mode-alist'.
+This means that if the first case-sensitive search through the alist fails
+to find a matching major mode, a second case-insensitive search is made.
+On systems with case-insensitive file names, this variable is ignored,
+since only a single case-sensitive search through the alist is made."
+  :group 'files
+  :version "22.1"
+  :type 'boolean)
+
 (defvar auto-mode-alist
   ;; Note: The entries for the modes defined in cc-mode.el (c-mode,
   ;; c++-mode, java-mode and more) are added through autoload
@@ -2238,15 +2248,29 @@
              (setq name (file-name-sans-versions name))
              (while name
                ;; Find first matching alist entry.
-               (let ((case-fold-search
-                      (memq system-type '(vax-vms windows-nt cygwin))))
-                 (if (and (setq mode (assoc-default name auto-mode-alist
+               (setq mode
+                     (if (memq system-type '(vax-vms windows-nt cygwin))
+                         ;; System is case-insensitive.
+                         (let ((case-fold-search t))
+                           (assoc-default name auto-mode-alist
+                                          'string-match))
+                       ;; System is case-sensitive.
+                       (or
+                        ;; First match case-sensitively.
+                        (let ((case-fold-search nil))
+                          (assoc-default name auto-mode-alist
                                                     'string-match))
+                        ;; Fallback to case-insensitive match.
+                        (and auto-mode-case-fold
+                             (let ((case-fold-search t))
+                               (assoc-default name auto-mode-alist
+                                              'string-match))))))
+               (if (and mode
                           (consp mode)
                           (cadr mode))
                      (setq mode (car mode)
                            name (substring name 0 (match-beginning 0)))
-                   (setq name)))
+                 (setq name))
                (when mode
                  (set-auto-mode-0 mode keep-mode-if-same)))))))))
 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]