emacs-devel
[Top][All Lists]
Advanced

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

Re: Should `auto-coding-functions' be mode-specific?


From: Romain Francoise
Subject: Re: Should `auto-coding-functions' be mode-specific?
Date: Sun, 07 Jan 2007 14:47:26 +0100

Juri Linkov <address@hidden> writes:

> The reported bug can occur even without my change because "<html"
> was not anchored at the beginning of the buffer and can match
> "<html" in the presented HTML snippet near the top.

Right.

> But then why not to go further and use the same regexp as used for
> detecting HTML files in `magic-mode-alist'?  It seems reasonable
> to detect the HTML encoding exactly in the same files that later
> recognized as HTML according to the file contents.

I think it's a good idea, and it is easy to do (see below).
But it would reopen your original issue: that encoding detection
doesn't work in Mozilla bookmark files.

Index: lisp/international/mule.el
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/international/mule.el,v
retrieving revision 1.250
diff -c -r1.250 mule.el
*** lisp/international/mule.el  5 Jan 2007 17:58:02 -0000       1.250
--- lisp/international/mule.el  7 Jan 2007 13:43:29 -0000
***************
*** 2292,2309 ****
                        ;; In case of no header, search only 10 lines.
                        (forward-line 10))
                    (point))))
!   ;; Make sure that the buffer really contains an HTML document, by
!   ;; checking that it starts with a doctype or a <HTML> start tag
!   ;; (allowing for whitespace at bob).  Note: 'DOCTYPE NETSCAPE' is
!   ;; useful for Mozilla bookmark files.
!   (when (and (re-search-forward 
"\\`[[:space:]\n]*\\(<!doctype[[:space:]\n]+\\(html\\|netscape\\)\\|<html\\)" 
size t)
!            (re-search-forward 
"<meta\\s-+http-equiv=[\"']?content-type[\"']?\\s-+content=[\"']text/\\sw+;\\s-*charset=\\(.+?\\)[\"']"
 size t))
!     (let* ((match (match-string 1))
!          (sym (intern (downcase match))))
!       (if (coding-system-p sym)
!         sym
!       (message "Warning: unknown coding system \"%s\"" match)
!       nil))))
  
  ;;;
  (provide 'mule)
--- 2292,2311 ----
                        ;; In case of no header, search only 10 lines.
                        (forward-line 10))
                    (point))))
!   ;; Make sure that the buffer really contains an HTML document.  We
!   ;; assume that the first entry that associates itself to html-mode in
!   ;; `magic-mode-alist' is good enough to detect HTML documents
!   ;; reliably.
!   (let ((html-re (car (rassoc 'html-mode magic-mode-alist))))
!     (when (and html-re
!              (re-search-forward (concat "\\`" html-re) size t)
!              (re-search-forward 
"<meta\\s-+http-equiv=[\"']?content-type[\"']?\\s-+content=[\"']text/\\sw+;\\s-*charset=\\(.+?\\)[\"']"
 size t))
!       (let* ((match (match-string 1))
!            (sym (intern (downcase match))))
!       (if (coding-system-p sym)
!           sym
!         (message "Warning: unknown coding system \"%s\"" match)
!         nil)))))
  
  ;;;
  (provide 'mule)

-- 
Romain Francoise <address@hidden> | The sea! the sea! the open
it's a miracle -- http://orebokech.com/ | sea! The blue, the fresh, the
                                        | ever free! --Bryan W. Procter




reply via email to

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