diff options
author | Kim F. Storm <[email protected]> | 2006-12-19 09:04:30 +0000 |
---|---|---|
committer | Kim F. Storm <[email protected]> | 2006-12-19 09:04:30 +0000 |
commit | 10ffa2a1cefca36dd67ef7cf4dfa1e7b143e87d3 (patch) | |
tree | ccb15ae73c4761bee4877f6d5dbf83a0f11d6edd /lisp | |
parent | bb8792de32d885dbcc0cb6850e1414b5df486c3a (diff) |
(magic-mode-alist): Allow matching file type by
calling a function at bob. Check for image types by calling
image-type-from-buffer. Suggested by Juanma Barranquero.
(set-auto-mode): Do it.
Diffstat (limited to 'lisp')
-rw-r--r-- | lisp/files.el | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/lisp/files.el b/lisp/files.el index 6c9b9a7542..71f33e5f1a 100644 --- a/lisp/files.el +++ b/lisp/files.el @@ -2115,7 +2115,8 @@ of the regular expression. The mode is then determined as the mode associated with that interpreter in `interpreter-mode-alist'.") (defvar magic-mode-alist - `(;; The < comes before the groups (but the first) to reduce backtracking. + `((image-type-from-buffer . image-mode) + ;; The < comes before the groups (but the first) to reduce backtracking. ;; TODO: UTF-16 <?xml may be preceded by a BOM 0xff 0xfe or 0xfe 0xff. ;; We use [ \t\n] instead of `\\s ' to make regex overflow less likely. (,(let* ((incomment-re "\\(?:[^-]\\|-[^-]\\)") @@ -2134,10 +2135,11 @@ associated with that interpreter in `interpreter-mode-alist'.") ("%![^V]" . ps-mode) ("# xmcd " . conf-unix-mode)) "Alist of buffer beginnings vs. corresponding major mode functions. -Each element looks like (REGEXP . FUNCTION). After visiting a file, -if REGEXP matches the text at the beginning of the buffer, -`normal-mode' will call FUNCTION rather than allowing `auto-mode-alist' -to decide the buffer's major mode. +Each element looks like (REGEXP . FUNCTION) or (MATCH-FUNCTION . FUNCTION). +After visiting a file, if REGEXP matches the text at the beginning of the +buffer, or calling MATCH-FUNCTION returns non-nil, `normal-mode' will +call FUNCTION rather than allowing `auto-mode-alist' to decide the buffer's +major mode. If FUNCTION is nil, then it is not called. (That is a way of saying \"allow `auto-mode-alist' to decide for these files.\")") @@ -2225,7 +2227,9 @@ only set the major mode, if that would change it." (+ (point-min) magic-mode-regexp-match-limit))) (assoc-default nil magic-mode-alist (lambda (re dummy) - (looking-at re)))))) + (if (functionp re) + (funcall re) + (looking-at re))))))) (set-auto-mode-0 done keep-mode-if-same) ;; Compare the filename against the entries in auto-mode-alist. (if buffer-file-name |