Mercurial > emacs
changeset 68209:ac1d7b21ddfc
(autoload-coding-system): Prepare for EOL variants.
author | Kenichi Handa <handa@m17n.org> |
---|---|
date | Mon, 16 Jan 2006 12:07:26 +0000 |
parents | 4bc30665eef2 |
children | 64f09dba41dc |
files | lisp/international/mule.el |
diffstat | 1 files changed, 31 insertions(+), 16 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/international/mule.el Mon Jan 16 12:07:08 2006 +0000 +++ b/lisp/international/mule.el Mon Jan 16 12:07:26 2006 +0000 @@ -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))))