emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] Changes to emacs/lisp/international/mule.el


From: Kenichi Handa
Subject: [Emacs-diffs] Changes to emacs/lisp/international/mule.el
Date: Mon, 16 Jan 2006 12:07:26 +0000

Index: emacs/lisp/international/mule.el
diff -u emacs/lisp/international/mule.el:1.228 
emacs/lisp/international/mule.el:1.229
--- emacs/lisp/international/mule.el:1.228      Mon Dec 12 05:11:57 2005
+++ emacs/lisp/international/mule.el    Mon Jan 16 12:07:26 2006
@@ -1144,7 +1144,11 @@
 FROM is a form to evaluate to define the coding-system."
   (put symbol 'coding-system-define-form form)
   (setq coding-system-alist (cons (list (symbol-name symbol))
-                                 coding-system-alist)))
+                                 coding-system-alist))
+  (dolist (elt '("-unix" "-dos" "-mac"))
+    (let ((name (concat (symbol-name symbol) elt)))
+      (put (intern name) 'coding-system-define-form form)
+      (setq coding-system-alist (cons (list name) coding-system-alist)))))
 
 (defun set-buffer-file-coding-system (coding-system &optional force nomodify)
   "Set the file coding-system of the current buffer to CODING-SYSTEM.
@@ -1589,6 +1593,23 @@
   :type '(repeat (cons (regexp :tag "Regexp")
                       (symbol :tag "Coding system"))))
 
+(defun auto-coding-regexp-alist-lookup (from to)
+  "Lookup `auto-coding-regexp-alist' for the contents of the current buffer.
+The value is a coding system is specified for the region FROM and TO,
+or nil."
+  (save-excursion
+    (goto-char from)
+    (let ((alist auto-coding-regexp-alist)
+         coding-system)
+      (while (and alist (not coding-system))
+       (let ((regexp (car (car alist))))
+         (if enable-multibyte-characters
+             (setq regexp (string-to-multibyte regexp)))
+         (if (re-search-forward regexp to t)
+             (setq coding-system (cdr (car alist)))
+           (setq alist (cdr alist)))))
+      coding-system)))
+
 ;; See the bottom of this file for built-in auto coding functions.
 (defcustom auto-coding-functions '(sgml-xml-auto-coding-function
                                   sgml-html-meta-auto-coding-function)
@@ -1648,24 +1669,15 @@
 of CODING is not checked; it's callers responsibility to check
 it.
 
-If nothing is specified, the return value is nil.
-
-The variable `set-auto-coding-function' (which see) is set to this
-function by default."
+If nothing is specified, the return value is nil."
   (or (let ((coding-system (auto-coding-alist-lookup filename)))
        (if coding-system
            (cons coding-system 'auto-coding-alist)))
       ;; Try using `auto-coding-regexp-alist'.
-      (save-excursion
-       (let ((alist auto-coding-regexp-alist)
-             coding-system)
-         (while (and alist (not coding-system))
-           (let ((regexp (car (car alist))))
-             (when (re-search-forward regexp (+ (point) size) t)
-               (setq coding-system (cdr (car alist)))))
-           (setq alist (cdr alist)))
-         (if coding-system
-             (cons coding-system 'auto-coding-regexp-alist))))
+      (let ((coding-system (auto-coding-regexp-alist-lookup (point)
+                                                           (+ (point) size))))
+       (if coding-system
+           (cons coding-system 'auto-coding-regexp-alist)))
       (let* ((case-fold-search t)
             (head-start (point))
             (head-end (+ head-start (min size 1024)))
@@ -1758,7 +1770,10 @@
 (defun set-auto-coding (filename size)
   "Return coding system for a file FILENAME of which SIZE bytes follow point.
 See `find-auto-coding' for how the coding system is found.
-Return nil if an invalid coding system is found."
+Return nil if an invalid coding system is found.
+
+The variable `set-auto-coding-function' (which see) is set to this
+function by default."
   (let ((found (find-auto-coding filename size)))
     (if (and found (coding-system-p (car found)))
        (car found))))




reply via email to

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