[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#9044: 24.0.50; File mode specification error: (error "Malformed -*-
From: |
Chong Yidong |
Subject: |
bug#9044: 24.0.50; File mode specification error: (error "Malformed -*- line") |
Date: |
Sat, 17 Sep 2011 17:58:37 -0400 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.0.50 (gnu/linux) |
Juri Linkov <juri@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.
- bug#9044: 24.0.50; File mode specification error: (error "Malformed -*- line"), Lars Magne Ingebrigtsen, 2011/09/10
- bug#9044: 24.0.50; File mode specification error: (error "Malformed -*- line"), Juri Linkov, 2011/09/15
- bug#9044: 24.0.50; File mode specification error: (error "Malformed -*- line"), Stefan Monnier, 2011/09/15
- bug#9044: 24.0.50; File mode specification error: (error "Malformed -*- line"), Lars Magne Ingebrigtsen, 2011/09/15
- bug#9044: 24.0.50; File mode specification error: (error "Malformed -*- line"), Juri Linkov, 2011/09/16
- bug#9044: 24.0.50; File mode specification error: (error "Malformed -*- line"), Lars Magne Ingebrigtsen, 2011/09/17
- bug#9044: 24.0.50; File mode specification error: (error "Malformed -*- line"), Juri Linkov, 2011/09/17
- bug#9044: 24.0.50; File mode specification error: (error "Malformed -*- line"), Lars Magne Ingebrigtsen, 2011/09/18
- bug#9044: 24.0.50; File mode specification error: (error "Malformed -*- line"),
Chong Yidong <=
- bug#9044: 24.0.50; File mode specification error: (error "Malformed -*- line"), Lars Magne Ingebrigtsen, 2011/09/18
- bug#9044: 24.0.50; File mode specification error: (error "Malformed -*- line"), Juri Linkov, 2011/09/18
- bug#9044: 24.0.50; File mode specification error: (error "Malformed -*- line"), Juri Linkov, 2011/09/18
- bug#9044: 24.0.50; File mode specification error: (error "Malformed -*- line"), Stefan Monnier, 2011/09/19
- bug#9044: 24.0.50; File mode specification error: (error "Malformed -*- line"), Juri Linkov, 2011/09/19