GNU bug report logs -
#9044
24.0.50; File mode specification error: (error "Malformed -*- line")
Previous Next
Reported by: Peter Dyballa <Peter_Dyballa <at> Freenet.DE>
Date: Sun, 10 Jul 2011 23:37:02 UTC
Severity: minor
Found in version 24.0.50
Done: Chong Yidong <cyd <at> stupidchicken.com>
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
Juri Linkov <juri <at> jurta.org> writes:
>> How about just adding the common ones -- jpeg?, tiff?, png, gif. That
>> will take care of 99% of the problems.
>
> There are many other binary formats that may contain "-*-" in the
> first line. For example, it's impossible to visit TGA files in Emacs
> because they contain a lot of "-*-".
I propose two fixes: (1) Adding some common image types to
inhibit-first-line-modes-regexps, and (2) changing
hack-local-variables-prop-line to return nil instead of signalling an
error for the "Malformed mode line" case.
Does anyone see a problem with this approach (in particular (2))?
=== modified file 'lisp/files.el'
*** lisp/files.el 2011-09-12 20:45:56 +0000
--- lisp/files.el 2011-09-17 21:56:13 +0000
***************
*** 2461,2467 ****
See also `auto-mode-alist'.")
! (defvar inhibit-first-line-modes-regexps (mapcar 'purecopy '("\\.tar\\'" "\\.tgz\\'"))
"List of regexps; if one matches a file name, don't look for `-*-'.")
(defvar inhibit-first-line-modes-suffixes nil
--- 2461,2469 ----
See also `auto-mode-alist'.")
! (defvar inhibit-first-line-modes-regexps
! (mapcar 'purecopy '("\\.tar\\'" "\\.tgz\\'" "\\.tiff?\\'"
! "\\.gif\\'" "\\.png\\'" "\\.jpe?g\\'"))
"List of regexps; if one matches a file name, don't look for `-*-'.")
(defvar inhibit-first-line-modes-suffixes nil
***************
*** 2952,2961 ****
and VAL is the specified value. Ignores any specification for
`mode:' and `coding:' (which should have already been handled
by `set-auto-mode' and `set-auto-coding', respectively).
! Throws an error if the -*- line is malformed.
If MODE-ONLY is non-nil, just returns the symbol specifying the
mode, if there is one, otherwise nil."
(save-excursion
(goto-char (point-min))
(let ((end (set-auto-mode-1))
--- 2954,2964 ----
and VAL is the specified value. Ignores any specification for
`mode:' and `coding:' (which should have already been handled
by `set-auto-mode' and `set-auto-coding', respectively).
! Return nil if the -*- line is malformed.
If MODE-ONLY is non-nil, just returns the symbol specifying the
mode, if there is one, otherwise nil."
+ (catch 'fail
(save-excursion
(goto-char (point-min))
(let ((end (set-auto-mode-1))
***************
*** 2974,2981 ****
(while (and (or (not mode-only)
(not result))
(< (point) end))
! (or (looking-at "[ \t]*\\([^ \t\n:]+\\)[ \t]*:[ \t]*")
! (error "Malformed -*- line"))
(goto-char (match-end 0))
;; There used to be a downcase here,
;; but the manual didn't say so,
--- 2977,2985 ----
(while (and (or (not mode-only)
(not result))
(< (point) end))
! (unless (looking-at "[ \t]*\\([^ \t\n:]+\\)[ \t]*:[ \t]*")
! (message "Malformed mode-line")
! (throw 'fail nil))
(goto-char (match-end 0))
;; There used to be a downcase here,
;; but the manual didn't say so,
***************
*** 3005,3011 ****
val) result)
(error nil))))
(skip-chars-forward " \t;")))
! result)))))
(defun hack-local-variables-filter (variables dir-name)
"Filter local variable settings, querying the user if necessary.
--- 3009,3015 ----
val) result)
(error nil))))
(skip-chars-forward " \t;")))
! result))))))
(defun hack-local-variables-filter (variables dir-name)
"Filter local variable settings, querying the user if necessary.
This bug report was last modified 13 years and 253 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.