changeset 33087:a72416fbef44

(decode-mac-roman, encode-mac-roman, mac-roman): Moved to european.el. (ccl-encode-mac-roman-font, fontset-mac): Modified for mule-unicode-2500-33ff and mule-unicode-e000-ffff. (mac-roman-kbd-insert, mac-roman-kbd-mode): These functions deleted. (mac-roman-kbd-mode, mac-roman-kbd-mode-map): These variables deleted.
author Kenichi Handa <handa@m17n.org>
date Tue, 31 Oct 2000 04:17:17 +0000
parents 3f4c811b6ea4
children 9d03916282c9
files lisp/term/mac-win.el
diffstat 1 files changed, 21 insertions(+), 113 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/term/mac-win.el	Tue Oct 31 04:16:17 2000 +0000
+++ b/lisp/term/mac-win.el	Tue Oct 31 04:17:17 2000 +0000
@@ -170,77 +170,39 @@
 (defconst kTextEncodingISOLatin1 513 "0x201")
 (defconst kTextEncodingISOLatin2 514 "0x202")
 
-;; Definitions for the Mac Roman character sets and coding system.
-;; The Mac Roman encoding uses all 128 code points in the range 128 to
-;; 255 for actual characters.  Since Emacs cannot handle this many
-;; code points as one character set, we divide it into two:
-;; mac-roman-lower for code points 128 to 159 and mac-roman-upper for
-;; code points 160 to 255.
-
-;; Since Mac Roman does not follow the ISO 2022 standard and uses code
-;; points in the range 128-159, it is necessary to define it as a
-;; type-4 charset, with CCL programs and all.
-
-(define-ccl-program decode-mac-roman
-  `(2
-    ((loop
-      (read r0)
-      (if (r0 < 128)  ;; ASCII
-	  (if (r0 == ?\r)  ;; assume such a file uses Mac EOL's
-	      (write-repeat ?\n)
-	    (write-repeat r0))
-	(if (r0 < 160)  ;; lower
-	    ((r0 += 32)
-	     (r1 = ,(charset-id 'mac-roman-lower))
-	     (write-multibyte-character r1 r0)
-	     (repeat))
-	  ((r1 = ,(charset-id 'mac-roman-upper))  ;; upper
-	   (write-multibyte-character r1 r0)
-	   (repeat)))))))
-  "CCL program to decode Mac Roman")
-
-(define-ccl-program encode-mac-roman
-  `(1
-    ((loop
-      (read-multibyte-character r0 r1)
-      (if (r0 == ,(charset-id 'ascii))
-	  (if (r1 == ?\n)
-	      (write-repeat ?\r)
-	    (write-repeat r1))
-	(if (r0 == ,(charset-id 'mac-roman-lower))
-	    ((r1 += 96)
-	     (write-repeat r1))
-	  (if (r0 == ,(charset-id 'mac-roman-upper))
-	      ((r1 += 128)
-	       (write-repeat r1))))))))
-  "CCL program to encode Mac Roman")
-
-(make-coding-system
- 'mac-roman 4 ?M "Mac Roman Encoding"
- '(decode-mac-roman . encode-mac-roman)
- '((safe-charsets ascii mac-roman-lower mac-roman-upper)
-   (valid codes (0 . 255))))
-
-;; This doesn't seem to do anything for type-4 charsets:
-;; (put 'mac-roman 'eol-type (make-subsidiary-coding-system 'mac-roman))
 
 (define-ccl-program ccl-encode-mac-roman-font
   `(0
-    (if (r0 == ,(charset-id 'mac-roman-lower))
-	(r1 += 96)
-      (r1 += 128))))
+    (if (r0 != ,(charset-id 'ascii))
+	(if (r0 == ,(charset-id 'latin-iso8859-1))
+	    (translate-character mac-roman-encoder r0 r1)
+	  ((r1 <<= 7)
+	   (r1 |= r2)
+	   (translate-character mac-roman-encoder r0 r1)))))
+  "CCL program for Mac Roman font")
 
 (setq font-ccl-encoder-alist
       (cons '("mac-roman" . ccl-encode-mac-roman-font)
 	    font-ccl-encoder-alist))
 
+;; Create a fontset that uses mac-roman font.  With this fontset,
+;; characters decoded from mac-roman encoding (ascii, latin-iso8859-1,
+;; and mule-unicode-xxxx-yyyy) are displayed by a mac-roman font.
+
 (if (fboundp 'new-fontset)
     (progn
       (create-fontset-from-fontset-spec
        "-etl-fixed-medium-r-normal-*-16-*-*-*-*-*-fontset-mac,
-        mac-roman-lower:-*-Monaco-*-*-*-*-12-*-*-*-*-*-mac-roman,
-        mac-roman-upper:-*-Monaco-*-*-*-*-12-*-*-*-*-*-mac-roman"
-       t)))
+ascii:-*-Monaco-*-*-*-*-12-*-*-*-*-*-mac-roman")
+      (let ((monaco-font '("monaco" . "mac-roman")))
+	(map-char-table
+	 (function
+	  (lambda (key val)
+	    (or (generic-char-p key)
+		(memq (char-charset key)
+		      '(ascii eight-bit-control eight-bit-graphic))
+		(set-fontset-font "fontset-mac" key monaco-font))))
+	 (get 'mac-roman-encoder 'translation-table)))))
 
 ;; To display filenames in Chinese or Japanese, replace mac-roman with
 ;; big5 or sjis
@@ -248,60 +210,6 @@
 
 ;; (prefer-coding-system 'mac-roman)
 
-(defun mac-roman-kbd-insert ()
-  "Insert a character in Mac Roman encoding at point.\n\
-Called by keymap of Mac-kbd minor mode."
-  (interactive "*")
-  (let ((ch last-command-char))
-    (if (< ch 160)
-	(insert
-	 (make-char 'mac-roman-lower
-		    (- last-command-char 96)))
-      (insert
-       (make-char 'mac-roman-upper
-		  (- last-command-char 128))))))
-
-(defvar mac-roman-kbd-mode nil
-  "Non-nil if in Mac-kbd minor mode.")
-
-(put 'mac-roman-kbd-mode 'permanent-local t)
-
-(or (assq 'mac-roman-kbd-mode minor-mode-alist)
-    (setq minor-mode-alist
-	  (cons '(mac-roman-kbd-mode " Mac-kbd") minor-mode-alist)))
-
-(defvar mac-roman-kbd-mode-map
-  (let ((map (make-keymap))
-	(i 128))
-    (while (< i 256)
-      (define-key map (vector i) 'mac-roman-kbd-insert)
-      (setq i (1+ i)))
-    map)
-  "Keymap for Mac-kbd minor mode.")
-
-(or (assq 'mac-roman-kbd-mode minor-mode-map-alist)
-    (setq minor-mode-map-alist
-	  (cons (cons 'mac-roman-kbd-mode mac-roman-kbd-mode-map)
-		minor-mode-map-alist)))
-
-(defun mac-roman-kbd-mode (&optional arg)
-  "Toggle Mac Roman Keyboard (Mac-kbd) minor mode.\n\
-In this minor mode, characters in the range 128 to 255 generated by\n\
-the Mac keyboard are inserted as mac-roman-lower or mac-roman-upper\n\
-characters, in the mac-roman encoding.\n\
-\n\
-With an argument, a positive argument enables Mac Roman Keyboard mode,\n\
-and a negative argument disables it."
-  (interactive "P")
-  (if (if arg
-	  ;; Negative arg means switch it off.
-	  (<= (prefix-numeric-value arg) 0)
-	;; No arg means toggle.
-	mac-roman-kbd-mode)
-      (setq mac-roman-kbd-mode nil)
-    ;; Enable mode.
-    (setq mac-roman-kbd-mode t)))
-
 ;;
 ;; Available colors
 ;;