# HG changeset patch # User Kenichi Handa # Date 1073439784 0 # Node ID 5c66f1de49077305e293fa8e787c466e35fd13f0 # Parent 00ccb778950db695a1480cbcbb122a75aa3189ee (set-auto-coding): Fix for the case that end-of-line is only CR. diff -r 00ccb778950d -r 5c66f1de4907 lisp/international/mule.el --- a/lisp/international/mule.el Wed Jan 07 00:24:44 2004 +0000 +++ b/lisp/international/mule.el Wed Jan 07 01:43:04 2004 +0000 @@ -1662,31 +1662,36 @@ (setq coding-system nil))))) ;; If no coding: tag in the head, check the tail. + ;; Here we must pay attention to the case that the end-of-line + ;; is just "\r" and we can't use "^" nor "$" in regexp. (when (and tail-found (not coding-system)) (goto-char tail-start) - (search-forward "\n\^L" nil t) + (re-search-forward "[\r\n]\^L" nil t) (if (re-search-forward - "^\\(.*\\)[ \t]*Local Variables:[ \t]*\\(.*\\)$" tail-end t) - ;; The prefix is what comes before "local variables:" in its - ;; line. The suffix is what comes after "local variables:" + "[\r\n]\\([^[\r\n]*\\)[ \t]*Local Variables:[ \t]*\\([^\r\n]*\\)[\r\n]" + tail-end t) + ;; The prefix is what comes before "local variables:" in its + ;; line. The suffix is what comes after "local variables:" ;; in its line. (let* ((prefix (regexp-quote (match-string 1))) (suffix (regexp-quote (match-string 2))) (re-coding (concat - "^" prefix + "[\r\n]" prefix ;; N.B. without the \n below, the regexp can ;; eat newlines. - "[ \t]*coding[ \t]*:[ \t]*\\([^ \t\n]+\\)[ \t]*" - suffix "$")) + "[ \t]*coding[ \t]*:[ \t]*\\([^ \t\r\n]+\\)[ \t]*" + suffix "[\r\n]")) (re-unibyte (concat - "^" prefix - "[ \t]*unibyte[ \t]*:[ \t]*\\([^ \t\n]+\\)[ \t]*" - suffix "$")) + "[\r\n]" prefix + "[ \t]*unibyte[ \t]*:[ \t]*\\([^ \t\r\n]+\\)[ \t]*" + suffix "[\r\n]")) (re-end - (concat "^" prefix "[ \t]*End *:[ \t]*" suffix "$")) - (pos (point))) + (concat "[\r\n]" prefix "[ \t]*End *:[ \t]*" suffix + "[\r\n]?")) + (pos (1- (point)))) + (forward-char -1) ; skip back \r or \n. (re-search-forward re-end tail-end 'move) (setq tail-end (point)) (goto-char pos)