emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] Changes to emacs/lisp/term/mac-win.el


From: Steven Tamm
Subject: [Emacs-diffs] Changes to emacs/lisp/term/mac-win.el
Date: Mon, 27 Dec 2004 12:42:50 -0500

Index: emacs/lisp/term/mac-win.el
diff -c emacs/lisp/term/mac-win.el:1.27 emacs/lisp/term/mac-win.el:1.28
*** emacs/lisp/term/mac-win.el:1.27     Sat Dec 18 16:36:31 2004
--- emacs/lisp/term/mac-win.el  Mon Dec 27 17:23:02 2004
***************
*** 1,8 ****
! ;;; mac-win.el --- support for "Macintosh windows"
  
! ;; Copyright (C) 1999, 2000, 2002, 2003  Free Software Foundation, Inc.
  
  ;; Author: Andrew Choi <address@hidden>
  
  ;; This file is part of GNU Emacs.
  
--- 1,9 ----
! ;;; mac-win.el --- parse switches controlling interface with Mac window system
  
! ;; Copyright (C) 1999, 2000, 2002, 2003, 2004  Free Software Foundation, Inc.
  
  ;; Author: Andrew Choi <address@hidden>
+ ;; Keywords: terminals
  
  ;; This file is part of GNU Emacs.
  
***************
*** 23,659 ****
  
  ;;; Commentary:
  
! ;;; Code:
! 
! ;; ---------------------------------------------------------------------------
! ;; We want to delay setting frame parameters until the faces are setup
! 
! ;; Mac can't handle ~ prefix in file names
! ;(setq auto-save-list-file-prefix ".saves-")
! 
! (setq frame-creation-function 'x-create-frame-with-faces)
  
! ;; for debugging
! ;; (defun mac-handle-scroll-bar-event (event) (interactive "e") (princ event))
  
! ;;(global-set-key [vertical-scroll-bar mouse-1] 'mac-handle-scroll-bar-event)
  
! (global-set-key
!  [vertical-scroll-bar down-mouse-1]
!  'mac-handle-scroll-bar-event)
  
! (global-unset-key [vertical-scroll-bar drag-mouse-1])
! (global-unset-key [vertical-scroll-bar mouse-1])
  
  (require 'scroll-bar)
! 
! (defun mac-handle-scroll-bar-event (event)
!   "Handle scroll bar EVENT to emulate Mac Toolbox style scrolling."
!   (interactive "e")
!   (let* ((position (event-start event))
!        (window (nth 0 position))
!        (bar-part (nth 4 position)))
!     (select-window window)
!     (cond
!      ((eq bar-part 'up)
!       (goto-char (window-start window))
!       (mac-scroll-down-line))
!      ((eq bar-part 'above-handle)
!       (mac-scroll-down))
!      ((eq bar-part 'handle)
!       (scroll-bar-drag event))
!      ((eq bar-part 'below-handle)
!       (mac-scroll-up))
!      ((eq bar-part 'down)
!       (goto-char (window-start window))
!       (mac-scroll-up-line)))))
! 
! (defun mac-scroll-ignore-events ()
!   ;; Ignore confusing non-mouse events
!   (while (not (memq (car-safe (read-event))
!                   '(mouse-1 double-mouse-1 triple-mouse-1))) nil))
! 
! (defun mac-scroll-down ()
!   (track-mouse
!     (mac-scroll-ignore-events)
!     (scroll-down)))
! 
! (defun mac-scroll-down-line ()
!   (track-mouse
!     (mac-scroll-ignore-events)
!     (scroll-down 1)))
! 
! (defun mac-scroll-up ()
!   (track-mouse
!     (mac-scroll-ignore-events)
!     (scroll-up)))
! 
! (defun mac-scroll-up-line ()
!   (track-mouse
!     (mac-scroll-ignore-events)
!     (scroll-up 1)))
! 
! (defun xw-defined-colors (&optional frame)
!   "Internal function called by `defined-colors', which see."
!   (or frame (setq frame (selected-frame)))
!   (let ((all-colors x-colors)
!       (this-color nil)
!       (defined-colors nil))
!     (while all-colors
!       (setq this-color (car all-colors)
!           all-colors (cdr all-colors))
!       (and (color-supported-p this-color frame t)
!          (setq defined-colors (cons this-color defined-colors))))
!     defined-colors))
! 
! ;; Don't have this yet.
! (fset 'x-get-resource 'ignore)
! 
! (unless (eq system-type 'darwin)
!   ;; This variable specifies the Unix program to call (as a process) to
!   ;; deteremine the amount of free space on a file system (defaults to
!   ;; df).  If it is not set to nil, ls-lisp will not work correctly
!   ;; unless an external application df is implemented on the Mac.
!   (setq directory-free-space-program nil)
! 
!   ;; Set this so that Emacs calls subprocesses with "sh" as shell to
!   ;; expand filenames Note no subprocess for the shell is actually
!   ;; started (see run_mac_command in sysdep.c).
!   (setq shell-file-name "sh"))
! 
! ;; X Window emulation in macterm.c is not complete enough to start a
! ;; frame without a minibuffer properly.  Call this to tell ediff
! ;; library to use a single frame.
! ; (ediff-toggle-multiframe)
! 
! ;; Setup to use the Mac clipboard.  The functions mac-cut-function and
! ;; mac-paste-function are defined in mac.c.
! (set-selection-coding-system 'compound-text-mac)
! 
! (setq interprogram-cut-function
!       '(lambda (str push)
!        (mac-cut-function
!         (encode-coding-string str selection-coding-system t) push)))
! 
! (setq interprogram-paste-function
!       '(lambda ()
!        (let ((clipboard (mac-paste-function)))
!          (if clipboard
!              (decode-coding-string clipboard selection-coding-system t)))))
! 
! ;; Don't show the frame name; that's redundant.
! (setq-default mode-line-frame-identification "  ")
! 
! (defun mac-drag-n-drop (event)
!   "Edit the files listed in the drag-n-drop event.\n\
! Switch to a buffer editing the last file dropped."
!   (interactive "e")
!   (save-excursion
!     ;; Make sure the drop target has positive co-ords
!     ;; before setting the selected frame - otherwise it
!     ;; won't work.  <address@hidden>
!     (let* ((window (posn-window (event-start event)))
!          (coords (posn-x-y (event-start event)))
!          (x (car coords))
!          (y (cdr coords)))
!       (if (and (> x 0) (> y 0))
!         (set-frame-selected-window nil window))
!       (mapcar
!        '(lambda (file)
!         (find-file
!          (decode-coding-string
!           file
!           (or file-name-coding-system
!               default-file-name-coding-system))))
!        (car (cdr (cdr event)))))
!   (raise-frame)
!   (recenter)))
! 
! (global-set-key [drag-n-drop] 'mac-drag-n-drop)
! 
! ;; By checking whether the variable mac-ready-for-drag-n-drop has been
! ;; defined, the event loop in macterm.c can be informed that it can
! ;; now receive Finder drag and drop events.  Files dropped onto the
! ;; Emacs application icon can only be processed when the initial frame
! ;; has been created: this is where the files should be opened.
! (add-hook 'after-init-hook
!         '(lambda ()
!            (defvar mac-ready-for-drag-n-drop t)))
! 
! ; Define constant values to be set to mac-keyboard-text-encoding
! (defconst kTextEncodingMacRoman 0)
! (defconst kTextEncodingISOLatin1 513 "0x201")
! (defconst kTextEncodingISOLatin2 514 "0x202")
! 
! 
! (define-ccl-program ccl-encode-mac-roman-font
!   `(0
!     (if (r0 != ,(charset-id 'ascii))
!       (if (r0 <= ?\x8f)
!           (translate-character mac-roman-encoder r0 r1)
!         ((r1 <<= 7)
!          (r1 |= r2)
!          (translate-character mac-roman-encoder r0 r1)))))
!   "CCL program for Mac Roman font")
! 
! (let
!     ((encoding-vector (make-vector 256 nil))
!      (i 0)
!      (vec     ;; mac-centraleurroman (128..255) -> UCS mapping
!       [       #x00C4  ;; 128:LATIN CAPITAL LETTER A WITH DIAERESIS
!       #x0100  ;; 129:LATIN CAPITAL LETTER A WITH MACRON
!       #x0101  ;; 130:LATIN SMALL LETTER A WITH MACRON
!       #x00C9  ;; 131:LATIN CAPITAL LETTER E WITH ACUTE
!       #x0104  ;; 132:LATIN CAPITAL LETTER A WITH OGONEK
!       #x00D6  ;; 133:LATIN CAPITAL LETTER O WITH DIAERESIS
!       #x00DC  ;; 134:LATIN CAPITAL LETTER U WITH DIAERESIS
!       #x00E1  ;; 135:LATIN SMALL LETTER A WITH ACUTE
!       #x0105  ;; 136:LATIN SMALL LETTER A WITH OGONEK
!       #x010C  ;; 137:LATIN CAPITAL LETTER C WITH CARON
!       #x00E4  ;; 138:LATIN SMALL LETTER A WITH DIAERESIS
!       #x010D  ;; 139:LATIN SMALL LETTER C WITH CARON
!       #x0106  ;; 140:LATIN CAPITAL LETTER C WITH ACUTE
!       #x0107  ;; 141:LATIN SMALL LETTER C WITH ACUTE
!       #x00E9  ;; 142:LATIN SMALL LETTER E WITH ACUTE
!       #x0179  ;; 143:LATIN CAPITAL LETTER Z WITH ACUTE
!       #x017A  ;; 144:LATIN SMALL LETTER Z WITH ACUTE
!       #x010E  ;; 145:LATIN CAPITAL LETTER D WITH CARON
!       #x00ED  ;; 146:LATIN SMALL LETTER I WITH ACUTE
!       #x010F  ;; 147:LATIN SMALL LETTER D WITH CARON
!       #x0112  ;; 148:LATIN CAPITAL LETTER E WITH MACRON
!       #x0113  ;; 149:LATIN SMALL LETTER E WITH MACRON
!       #x0116  ;; 150:LATIN CAPITAL LETTER E WITH DOT ABOVE
!       #x00F3  ;; 151:LATIN SMALL LETTER O WITH ACUTE
!       #x0117  ;; 152:LATIN SMALL LETTER E WITH DOT ABOVE
!       #x00F4  ;; 153:LATIN SMALL LETTER O WITH CIRCUMFLEX
!       #x00F6  ;; 154:LATIN SMALL LETTER O WITH DIAERESIS
!       #x00F5  ;; 155:LATIN SMALL LETTER O WITH TILDE
!       #x00FA  ;; 156:LATIN SMALL LETTER U WITH ACUTE
!       #x011A  ;; 157:LATIN CAPITAL LETTER E WITH CARON
!       #x011B  ;; 158:LATIN SMALL LETTER E WITH CARON
!       #x00FC  ;; 159:LATIN SMALL LETTER U WITH DIAERESIS
!       #x2020  ;; 160:DAGGER
!       #x00B0  ;; 161:DEGREE SIGN
!       #x0118  ;; 162:LATIN CAPITAL LETTER E WITH OGONEK
!       #x00A3  ;; 163:POUND SIGN
!       #x00A7  ;; 164:SECTION SIGN
!       #x2022  ;; 165:BULLET
!       #x00B6  ;; 166:PILCROW SIGN
!       #x00DF  ;; 167:LATIN SMALL LETTER SHARP S
!       #x00AE  ;; 168:REGISTERED SIGN
!       #x00A9  ;; 169:COPYRIGHT SIGN
!       #x2122  ;; 170:TRADE MARK SIGN
!       #x0119  ;; 171:LATIN SMALL LETTER E WITH OGONEK
!       #x00A8  ;; 172:DIAERESIS
!       #x2260  ;; 173:NOT EQUAL TO
!       #x0123  ;; 174:LATIN SMALL LETTER G WITH CEDILLA
!       #x012E  ;; 175:LATIN CAPITAL LETTER I WITH OGONEK
!       #x012F  ;; 176:LATIN SMALL LETTER I WITH OGONEK
!       #x012A  ;; 177:LATIN CAPITAL LETTER I WITH MACRON
!       #x2264  ;; 178:LESS-THAN OR EQUAL TO
!       #x2265  ;; 179:GREATER-THAN OR EQUAL TO
!       #x012B  ;; 180:LATIN SMALL LETTER I WITH MACRON
!       #x0136  ;; 181:LATIN CAPITAL LETTER K WITH CEDILLA
!       #x2202  ;; 182:PARTIAL DIFFERENTIAL
!       #x2211  ;; 183:N-ARY SUMMATION
!       #x0142  ;; 184:LATIN SMALL LETTER L WITH STROKE
!       #x013B  ;; 185:LATIN CAPITAL LETTER L WITH CEDILLA
!       #x013C  ;; 186:LATIN SMALL LETTER L WITH CEDILLA
!       #x013D  ;; 187:LATIN CAPITAL LETTER L WITH CARON
!       #x013E  ;; 188:LATIN SMALL LETTER L WITH CARON
!       #x0139  ;; 189:LATIN CAPITAL LETTER L WITH ACUTE
!       #x013A  ;; 190:LATIN SMALL LETTER L WITH ACUTE
!       #x0145  ;; 191:LATIN CAPITAL LETTER N WITH CEDILLA
!       #x0146  ;; 192:LATIN SMALL LETTER N WITH CEDILLA
!       #x0143  ;; 193:LATIN CAPITAL LETTER N WITH ACUTE
!       #x00AC  ;; 194:NOT SIGN
!       #x221A  ;; 195:SQUARE ROOT
!       #x0144  ;; 196:LATIN SMALL LETTER N WITH ACUTE
!       #x0147  ;; 197:LATIN CAPITAL LETTER N WITH CARON
!       #x2206  ;; 198:INCREMENT
!       #x00AB  ;; 199:LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
!       #x00BB  ;; 200:RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
!       #x2026  ;; 201:HORIZONTAL ELLIPSIS
!       #x00A0  ;; 202:NO-BREAK SPACE
!       #x0148  ;; 203:LATIN SMALL LETTER N WITH CARON
!       #x0150  ;; 204:LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
!       #x00D5  ;; 205:LATIN CAPITAL LETTER O WITH TILDE
!       #x0151  ;; 206:LATIN SMALL LETTER O WITH DOUBLE ACUTE
!       #x014C  ;; 207:LATIN CAPITAL LETTER O WITH MACRON
!       #x2013  ;; 208:EN DASH
!       #x2014  ;; 209:EM DASH
!       #x201C  ;; 210:LEFT DOUBLE QUOTATION MARK
!       #x201D  ;; 211:RIGHT DOUBLE QUOTATION MARK
!       #x2018  ;; 212:LEFT SINGLE QUOTATION MARK
!       #x2019  ;; 213:RIGHT SINGLE QUOTATION MARK
!       #x00F7  ;; 214:DIVISION SIGN
!       #x25CA  ;; 215:LOZENGE
!       #x014D  ;; 216:LATIN SMALL LETTER O WITH MACRON
!       #x0154  ;; 217:LATIN CAPITAL LETTER R WITH ACUTE
!       #x0155  ;; 218:LATIN SMALL LETTER R WITH ACUTE
!       #x0158  ;; 219:LATIN CAPITAL LETTER R WITH CARON
!       #x2039  ;; 220:SINGLE LEFT-POINTING ANGLE QUOTATION MARK
!       #x203A  ;; 221:SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
!       #x0159  ;; 222:LATIN SMALL LETTER R WITH CARON
!       #x0156  ;; 223:LATIN CAPITAL LETTER R WITH CEDILLA
!       #x0157  ;; 224:LATIN SMALL LETTER R WITH CEDILLA
!       #x0160  ;; 225:LATIN CAPITAL LETTER S WITH CARON
!       #x201A  ;; 226:SINGLE LOW-9 QUOTATION MARK
!       #x201E  ;; 227:DOUBLE LOW-9 QUOTATION MARK
!       #x0161  ;; 228:LATIN SMALL LETTER S WITH CARON
!       #x015A  ;; 229:LATIN CAPITAL LETTER S WITH ACUTE
!       #x015B  ;; 230:LATIN SMALL LETTER S WITH ACUTE
!       #x00C1  ;; 231:LATIN CAPITAL LETTER A WITH ACUTE
!       #x0164  ;; 232:LATIN CAPITAL LETTER T WITH CARON
!       #x0165  ;; 233:LATIN SMALL LETTER T WITH CARON
!       #x00CD  ;; 234:LATIN CAPITAL LETTER I WITH ACUTE
!       #x017D  ;; 235:LATIN CAPITAL LETTER Z WITH CARON
!       #x017E  ;; 236:LATIN SMALL LETTER Z WITH CARON
!       #x016A  ;; 237:LATIN CAPITAL LETTER U WITH MACRON
!       #x00D3  ;; 238:LATIN CAPITAL LETTER O WITH ACUTE
!       #x00D4  ;; 239:LATIN CAPITAL LETTER O WITH CIRCUMFLEX
!       #x016B  ;; 240:LATIN SMALL LETTER U WITH MACRON
!       #x016E  ;; 241:LATIN CAPITAL LETTER U WITH RING ABOVE
!       #x00DA  ;; 242:LATIN CAPITAL LETTER U WITH ACUTE
!       #x016F  ;; 243:LATIN SMALL LETTER U WITH RING ABOVE
!       #x0170  ;; 244:LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
!       #x0171  ;; 245:LATIN SMALL LETTER U WITH DOUBLE ACUTE
!       #x0172  ;; 246:LATIN CAPITAL LETTER U WITH OGONEK
!       #x0173  ;; 247:LATIN SMALL LETTER U WITH OGONEK
!       #x00DD  ;; 248:LATIN CAPITAL LETTER Y WITH ACUTE
!       #x00FD  ;; 249:LATIN SMALL LETTER Y WITH ACUTE
!       #x0137  ;; 250:LATIN SMALL LETTER K WITH CEDILLA
!       #x017B  ;; 251:LATIN CAPITAL LETTER Z WITH DOT ABOVE
!       #x0141  ;; 252:LATIN CAPITAL LETTER L WITH STROKE
!       #x017C  ;; 253:LATIN SMALL LETTER Z WITH DOT ABOVE
!       #x0122  ;; 254:LATIN CAPITAL LETTER G WITH CEDILLA
!       #x02C7  ;; 255:CARON
!       ])
!      translation-table)
!   (while (< i 128)
!     (aset encoding-vector i i)
!     (setq i (1+ i)))
!   (while (< i 256)
!     (aset encoding-vector i
!         (decode-char 'ucs (aref vec (- i 128))))
!     (setq i (1+ i)))
!   (setq translation-table
!       (make-translation-table-from-vector encoding-vector))
! ;;  (define-translation-table 'mac-centraleurroman-decoder translation-table)
!   (define-translation-table 'mac-centraleurroman-encoder
!     (char-table-extra-slot translation-table 0)))
! 
! (let
!     ((encoding-vector (make-vector 256 nil))
!      (i 0)
!      (vec     ;; mac-cyrillic (128..255) -> UCS mapping
!       [       #x0410  ;; 128:CYRILLIC CAPITAL LETTER A
!       #x0411  ;; 129:CYRILLIC CAPITAL LETTER BE
!       #x0412  ;; 130:CYRILLIC CAPITAL LETTER VE
!       #x0413  ;; 131:CYRILLIC CAPITAL LETTER GHE
!       #x0414  ;; 132:CYRILLIC CAPITAL LETTER DE
!       #x0415  ;; 133:CYRILLIC CAPITAL LETTER IE
!       #x0416  ;; 134:CYRILLIC CAPITAL LETTER ZHE
!       #x0417  ;; 135:CYRILLIC CAPITAL LETTER ZE
!       #x0418  ;; 136:CYRILLIC CAPITAL LETTER I
!       #x0419  ;; 137:CYRILLIC CAPITAL LETTER SHORT I
!       #x041A  ;; 138:CYRILLIC CAPITAL LETTER KA
!       #x041B  ;; 139:CYRILLIC CAPITAL LETTER EL
!       #x041C  ;; 140:CYRILLIC CAPITAL LETTER EM
!       #x041D  ;; 141:CYRILLIC CAPITAL LETTER EN
!       #x041E  ;; 142:CYRILLIC CAPITAL LETTER O
!       #x041F  ;; 143:CYRILLIC CAPITAL LETTER PE
!       #x0420  ;; 144:CYRILLIC CAPITAL LETTER ER
!       #x0421  ;; 145:CYRILLIC CAPITAL LETTER ES
!       #x0422  ;; 146:CYRILLIC CAPITAL LETTER TE
!       #x0423  ;; 147:CYRILLIC CAPITAL LETTER U
!       #x0424  ;; 148:CYRILLIC CAPITAL LETTER EF
!       #x0425  ;; 149:CYRILLIC CAPITAL LETTER HA
!       #x0426  ;; 150:CYRILLIC CAPITAL LETTER TSE
!       #x0427  ;; 151:CYRILLIC CAPITAL LETTER CHE
!       #x0428  ;; 152:CYRILLIC CAPITAL LETTER SHA
!       #x0429  ;; 153:CYRILLIC CAPITAL LETTER SHCHA
!       #x042A  ;; 154:CYRILLIC CAPITAL LETTER HARD SIGN
!       #x042B  ;; 155:CYRILLIC CAPITAL LETTER YERU
!       #x042C  ;; 156:CYRILLIC CAPITAL LETTER SOFT SIGN
!       #x042D  ;; 157:CYRILLIC CAPITAL LETTER E
!       #x042E  ;; 158:CYRILLIC CAPITAL LETTER YU
!       #x042F  ;; 159:CYRILLIC CAPITAL LETTER YA
!       #x2020  ;; 160:DAGGER
!       #x00B0  ;; 161:DEGREE SIGN
!       #x0490  ;; 162:CYRILLIC CAPITAL LETTER GHE WITH UPTURN
!       #x00A3  ;; 163:POUND SIGN
!       #x00A7  ;; 164:SECTION SIGN
!       #x2022  ;; 165:BULLET
!       #x00B6  ;; 166:PILCROW SIGN
!       #x0406  ;; 167:CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
!       #x00AE  ;; 168:REGISTERED SIGN
!       #x00A9  ;; 169:COPYRIGHT SIGN
!       #x2122  ;; 170:TRADE MARK SIGN
!       #x0402  ;; 171:CYRILLIC CAPITAL LETTER DJE
!       #x0452  ;; 172:CYRILLIC SMALL LETTER DJE
!       #x2260  ;; 173:NOT EQUAL TO
!       #x0403  ;; 174:CYRILLIC CAPITAL LETTER GJE
!       #x0453  ;; 175:CYRILLIC SMALL LETTER GJE
!       #x221E  ;; 176:INFINITY
!       #x00B1  ;; 177:PLUS-MINUS SIGN
!       #x2264  ;; 178:LESS-THAN OR EQUAL TO
!       #x2265  ;; 179:GREATER-THAN OR EQUAL TO
!       #x0456  ;; 180:CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
!       #x00B5  ;; 181:MICRO SIGN
!       #x0491  ;; 182:CYRILLIC SMALL LETTER GHE WITH UPTURN
!       #x0408  ;; 183:CYRILLIC CAPITAL LETTER JE
!       #x0404  ;; 184:CYRILLIC CAPITAL LETTER UKRAINIAN IE
!       #x0454  ;; 185:CYRILLIC SMALL LETTER UKRAINIAN IE
!       #x0407  ;; 186:CYRILLIC CAPITAL LETTER YI
!       #x0457  ;; 187:CYRILLIC SMALL LETTER YI
!       #x0409  ;; 188:CYRILLIC CAPITAL LETTER LJE
!       #x0459  ;; 189:CYRILLIC SMALL LETTER LJE
!       #x040A  ;; 190:CYRILLIC CAPITAL LETTER NJE
!       #x045A  ;; 191:CYRILLIC SMALL LETTER NJE
!       #x0458  ;; 192:CYRILLIC SMALL LETTER JE
!       #x0405  ;; 193:CYRILLIC CAPITAL LETTER DZE
!       #x00AC  ;; 194:NOT SIGN
!       #x221A  ;; 195:SQUARE ROOT
!       #x0192  ;; 196:LATIN SMALL LETTER F WITH HOOK
!       #x2248  ;; 197:ALMOST EQUAL TO
!       #x2206  ;; 198:INCREMENT
!       #x00AB  ;; 199:LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
!       #x00BB  ;; 200:RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
!       #x2026  ;; 201:HORIZONTAL ELLIPSIS
!       #x00A0  ;; 202:NO-BREAK SPACE
!       #x040B  ;; 203:CYRILLIC CAPITAL LETTER TSHE
!       #x045B  ;; 204:CYRILLIC SMALL LETTER TSHE
!       #x040C  ;; 205:CYRILLIC CAPITAL LETTER KJE
!       #x045C  ;; 206:CYRILLIC SMALL LETTER KJE
!       #x0455  ;; 207:CYRILLIC SMALL LETTER DZE
!       #x2013  ;; 208:EN DASH
!       #x2014  ;; 209:EM DASH
!       #x201C  ;; 210:LEFT DOUBLE QUOTATION MARK
!       #x201D  ;; 211:RIGHT DOUBLE QUOTATION MARK
!       #x2018  ;; 212:LEFT SINGLE QUOTATION MARK
!       #x2019  ;; 213:RIGHT SINGLE QUOTATION MARK
!       #x00F7  ;; 214:DIVISION SIGN
!       #x201E  ;; 215:DOUBLE LOW-9 QUOTATION MARK
!       #x040E  ;; 216:CYRILLIC CAPITAL LETTER SHORT U
!       #x045E  ;; 217:CYRILLIC SMALL LETTER SHORT U
!       #x040F  ;; 218:CYRILLIC CAPITAL LETTER DZHE
!       #x045F  ;; 219:CYRILLIC SMALL LETTER DZHE
!       #x2116  ;; 220:NUMERO SIGN
!       #x0401  ;; 221:CYRILLIC CAPITAL LETTER IO
!       #x0451  ;; 222:CYRILLIC SMALL LETTER IO
!       #x044F  ;; 223:CYRILLIC SMALL LETTER YA
!       #x0430  ;; 224:CYRILLIC SMALL LETTER A
!       #x0431  ;; 225:CYRILLIC SMALL LETTER BE
!       #x0432  ;; 226:CYRILLIC SMALL LETTER VE
!       #x0433  ;; 227:CYRILLIC SMALL LETTER GHE
!       #x0434  ;; 228:CYRILLIC SMALL LETTER DE
!       #x0435  ;; 229:CYRILLIC SMALL LETTER IE
!       #x0436  ;; 230:CYRILLIC SMALL LETTER ZHE
!       #x0437  ;; 231:CYRILLIC SMALL LETTER ZE
!       #x0438  ;; 232:CYRILLIC SMALL LETTER I
!       #x0439  ;; 233:CYRILLIC SMALL LETTER SHORT I
!       #x043A  ;; 234:CYRILLIC SMALL LETTER KA
!       #x043B  ;; 235:CYRILLIC SMALL LETTER EL
!       #x043C  ;; 236:CYRILLIC SMALL LETTER EM
!       #x043D  ;; 237:CYRILLIC SMALL LETTER EN
!       #x043E  ;; 238:CYRILLIC SMALL LETTER O
!       #x043F  ;; 239:CYRILLIC SMALL LETTER PE
!       #x0440  ;; 240:CYRILLIC SMALL LETTER ER
!       #x0441  ;; 241:CYRILLIC SMALL LETTER ES
!       #x0442  ;; 242:CYRILLIC SMALL LETTER TE
!       #x0443  ;; 243:CYRILLIC SMALL LETTER U
!       #x0444  ;; 244:CYRILLIC SMALL LETTER EF
!       #x0445  ;; 245:CYRILLIC SMALL LETTER HA
!       #x0446  ;; 246:CYRILLIC SMALL LETTER TSE
!       #x0447  ;; 247:CYRILLIC SMALL LETTER CHE
!       #x0448  ;; 248:CYRILLIC SMALL LETTER SHA
!       #x0449  ;; 249:CYRILLIC SMALL LETTER SHCHA
!       #x044A  ;; 250:CYRILLIC SMALL LETTER HARD SIGN
!       #x044B  ;; 251:CYRILLIC SMALL LETTER YERU
!       #x044C  ;; 252:CYRILLIC SMALL LETTER SOFT SIGN
!       #x044D  ;; 253:CYRILLIC SMALL LETTER E
!       #x044E  ;; 254:CYRILLIC SMALL LETTER YU
!       #x20AC  ;; 255:EURO SIGN
!       ])
!      translation-table)
!   (while (< i 128)
!     (aset encoding-vector i i)
!     (setq i (1+ i)))
!   (while (< i 256)
!     (aset encoding-vector i
!         (decode-char 'ucs (aref vec (- i 128))))
!     (setq i (1+ i)))
!   (setq translation-table
!       (make-translation-table-from-vector encoding-vector))
! ;;  (define-translation-table 'mac-cyrillic-decoder translation-table)
!   (define-translation-table 'mac-cyrillic-encoder
!     (char-table-extra-slot translation-table 0)))
! 
! (defvar mac-font-encoder-list
!   '(("mac-roman" mac-roman-encoder
!      ccl-encode-mac-roman-font "%s")
!     ("mac-centraleurroman" mac-centraleurroman-encoder
!      ccl-encode-mac-centraleurroman-font "%s ce")
!     ("mac-cyrillic" mac-cyrillic-encoder
!      ccl-encode-mac-cyrillic-font "%s cy")))
! 
! (let ((encoder-list
!        (mapcar (lambda (lst) (nth 1 lst)) mac-font-encoder-list))
!       (charset-list
!        '(latin-iso8859-2
!        latin-iso8859-3 latin-iso8859-4
!        cyrillic-iso8859-5 greek-iso8859-7 hebrew-iso8859-8
!        latin-iso8859-9 latin-iso8859-14 latin-iso8859-15)))
!   (dolist (encoder encoder-list)
!     (let ((table (get encoder 'translation-table)))
!       (dolist (charset charset-list)
!       (dotimes (i 96)
!         (let* ((c (make-char charset (+ i 32)))
!                (mu (aref ucs-mule-to-mule-unicode c))
!                (mac-encoded (and mu (aref table mu))))
!           (if mac-encoded
!               (aset table c mac-encoded))))))))
! 
! (define-ccl-program ccl-encode-mac-centraleurroman-font
!   `(0
!     (if (r0 != ,(charset-id 'ascii))
!       (if (r0 <= ?\x8f)
!           (translate-character mac-centraleurroman-encoder r0 r1)
!         ((r1 <<= 7)
!          (r1 |= r2)
!          (translate-character mac-centraleurroman-encoder r0 r1)))))
!   "CCL program for Mac Central European Roman font")
! 
! (define-ccl-program ccl-encode-mac-cyrillic-font
!   `(0
!     (if (r0 != ,(charset-id 'ascii))
!       (if (r0 <= ?\x8f)
!           (translate-character mac-cyrillic-encoder r0 r1)
!         ((r1 <<= 7)
!          (r1 |= r2)
!          (translate-character mac-cyrillic-encoder r0 r1)))))
!   "CCL program for Mac Cyrillic font")
! 
! 
! (setq font-ccl-encoder-alist
!       (nconc
!        (mapcar (lambda (lst) (cons (nth 0 lst) (nth 2 lst)))
!              mac-font-encoder-list)
!        font-ccl-encoder-alist))
! 
! (defun fontset-add-mac-fonts (fontset &optional base-family)
!   (if base-family
!       (setq base-family (downcase base-family))
!     (let ((ascii-font
!          (downcase (x-resolve-font-name
!                     (fontset-font fontset (charset-id 'ascii))))))
!       (setq base-family (aref (x-decompose-font-name ascii-font)
!                             xlfd-regexp-family-subnum))))
! ;;  (if (not (string-match "^fontset-" fontset))
! ;;      (setq fontset
! ;;        (concat "fontset-" (aref (x-decompose-font-name fontset)
! ;;                                 xlfd-regexp-encoding-subnum))))
!   (dolist
!       (font-encoder
!        (nreverse
!       (mapcar (lambda (lst)
!                 (cons (cons (format (nth 3 lst) base-family) (nth 0 lst))
!                       (nth 1 lst)))
!               mac-font-encoder-list)))
!     (let ((font (car font-encoder))
!         (encoder (cdr font-encoder)))
!       (map-char-table
!        (lambda (key val)
!        (or (null val)
!            (generic-char-p key)
!            (memq (char-charset key)
!                  '(ascii eight-bit-control eight-bit-graphic))
!            (set-fontset-font fontset key font)))
!        (get encoder 'translation-table)))))
!  
! (defun create-fontset-from-mac-roman-font (font &optional resolved-font
!                                               fontset-name)
!   "Create a fontset from a Mac roman font FONT.
! 
! Optional 1st arg RESOLVED-FONT is a resolved name of FONT.  If
! omitted, `x-resolve-font-name' is called to get the resolved name.  At
! this time, if FONT is not available, error is signaled.
! 
! Optional 2nd arg FONTSET-NAME is a string to be used in
! `<CHARSET_ENCODING>' fields of a new fontset name.  If it is omitted,
! an appropriate name is generated automatically.
! 
! It returns a name of the created fontset."
!   (let ((fontset
!        (create-fontset-from-ascii-font font resolved-font fontset-name)))
!     (fontset-add-mac-fonts fontset)
!     fontset))
! 
! ;; 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
!       (require 'fontset)
!       (setup-default-fontset)
!       (create-fontset-from-fontset-spec
!        "-etl-fixed-medium-r-normal-*-16-*-*-*-*-*-fontset-mac,
! ascii:-*-Monaco-*-*-*-*-12-*-*-*-*-*-mac-roman")
!       (fontset-add-mac-fonts "fontset-mac")))
! 
! (if (eq system-type 'darwin)
!     ;; On Darwin filenames are encoded in UTF-8
!     (setq file-name-coding-system 'utf-8)
!   ;; To display filenames in Chinese or Japanese, replace mac-roman with
!   ;; big5 or sjis
!   (setq file-name-coding-system 'mac-roman))
! 
! ;; If Emacs is started from the Finder, change the default directory
! ;; to the user's home directory.
! (if (string= default-directory "/")
!     (cd "~"))
! 
! ;; Tell Emacs to use pipes instead of pty's for processes because the
! ;; latter sometimes lose characters.  Pty support is compiled in since
! ;; ange-ftp will not work without it.
! (setq process-connection-type nil)
! 
! ;; Assume that fonts are always scalable on the Mac.  This sometimes
! ;; results in characters with jagged edges.  However, without it,
! ;; fonts with both truetype and bitmap representations but no italic
! ;; or bold bitmap versions will not display these variants correctly.
! (setq scalable-fonts-allowed t)
! 
! ;; Make suspend-emacs [C-z] collapse the current frame
! (substitute-key-definition 'suspend-emacs 'iconify-frame
!                          global-map)
! 
! ;; Support mouse-wheel scrolling
! (mouse-wheel-mode 1)
! 
! ;; (prefer-coding-system 'mac-roman)
! 
! ;; Map certain keypad keys into ASCII characters that people usually expect
! (define-key function-key-map [return] [?\C-m])
! (define-key function-key-map [M-return] [?\M-\C-m])
! (define-key function-key-map [tab] [?\t])
! (define-key function-key-map [M-tab] [?\M-\t])
! (define-key function-key-map [backspace] [127])
! (define-key function-key-map [M-backspace] [?\M-\d])
! (define-key function-key-map [escape] [?\e])
! (define-key function-key-map [M-escape] [?\M-\e])
! 
! ;; Tell read-char how to convert special chars to ASCII
! (put 'return 'ascii-character 13)
! (put 'tab 'ascii-character ?\t)
! (put 'backspace 'ascii-character 127)
! (put 'escape 'ascii-character ?\e)
! 
! ;;
! ;; Available colors
! ;;
  
  (defvar x-colors '("LightGreen"
                   "light green"
--- 24,238 ----
  
  ;;; Commentary:
  
! ;; Mac-win.el:  this file is loaded from ../lisp/startup.el when it recognizes
! ;; that Mac windows are to be used.  Command line switches are parsed and 
those
! ;; pertaining to Mac are processed and removed from the command line.  The
! ;; Mac display is opened and hooks are set for popping up the initial window.
  
! ;; startup.el will then examine startup files, and eventually call the hooks
! ;; which create the first window(s).
  
! ;;; Code:
! 
! ;; These are the standard X switches from the Xt Initialize.c file of
! ;; Release 4.
! 
! ;; Command line               Resource Manager string
! 
! ;; +rv                        *reverseVideo
! ;; +synchronous               *synchronous
! ;; -background                *background
! ;; -bd                        *borderColor
! ;; -bg                        *background
! ;; -bordercolor               *borderColor
! ;; -borderwidth               .borderWidth
! ;; -bw                        .borderWidth
! ;; -display           .display
! ;; -fg                        *foreground
! ;; -fn                        *font
! ;; -font              *font
! ;; -foreground                *foreground
! ;; -geometry          .geometry
! ;; -i                 .iconType
! ;; -itype             .iconType
! ;; -iconic            .iconic
! ;; -name              .name
! ;; -reverse           *reverseVideo
! ;; -rv                        *reverseVideo
! ;; -selectionTimeout    .selectionTimeout
! ;; -synchronous               *synchronous
! ;; -xrm
  
! ;; An alist of X options and the function which handles them.  See
! ;; ../startup.el.
  
! (if (not (eq window-system 'mac))
!     (error "%s: Loading mac-win.el but not compiled for Mac" 
(invocation-name)))
  
+ (require 'frame)
+ (require 'mouse)
  (require 'scroll-bar)
! (require 'faces)
! ;;(require 'select)
! (require 'menu-bar)
! (require 'fontset)
! ;;(require 'x-dnd)
! 
! (defvar x-invocation-args)
! 
! (defvar x-command-line-resources nil)
! 
! ;; Handler for switches of the form "-switch value" or "-switch".
! (defun x-handle-switch (switch)
!   (let ((aelt (assoc switch command-line-x-option-alist)))
!     (if aelt
!       (let ((param (nth 3 aelt))
!             (value (nth 4 aelt)))
!         (if value
!             (setq default-frame-alist
!                   (cons (cons param value)
!                         default-frame-alist))
!           (setq default-frame-alist
!                 (cons (cons param
!                             (car x-invocation-args))
!                       default-frame-alist)
!                 x-invocation-args (cdr x-invocation-args)))))))
! 
! ;; Handler for switches of the form "-switch n"
! (defun x-handle-numeric-switch (switch)
!   (let ((aelt (assoc switch command-line-x-option-alist)))
!     (if aelt
!       (let ((param (nth 3 aelt)))
!         (setq default-frame-alist
!               (cons (cons param
!                           (string-to-int (car x-invocation-args)))
!                     default-frame-alist)
!               x-invocation-args
!               (cdr x-invocation-args))))))
! 
! ;; Handle options that apply to initial frame only
! (defun x-handle-initial-switch (switch)
!   (let ((aelt (assoc switch command-line-x-option-alist)))
!     (if aelt
!       (let ((param (nth 3 aelt))
!             (value (nth 4 aelt)))
!         (if value
!             (setq initial-frame-alist
!                   (cons (cons param value)
!                         initial-frame-alist))
!           (setq initial-frame-alist
!                 (cons (cons param
!                             (car x-invocation-args))
!                       initial-frame-alist)
!                 x-invocation-args (cdr x-invocation-args)))))))
! 
! ;; Make -iconic apply only to the initial frame!
! (defun x-handle-iconic (switch)
!   (setq initial-frame-alist
!       (cons '(visibility . icon) initial-frame-alist)))
! 
! ;; Handle the -xrm option.
! (defun x-handle-xrm-switch (switch)
!   (unless (consp x-invocation-args)
!     (error "%s: missing argument to `%s' option" (invocation-name) switch))
!   (setq x-command-line-resources
!       (if (null x-command-line-resources)
!           (car x-invocation-args)
!         (concat x-command-line-resources "\n" (car x-invocation-args))))
!   (setq x-invocation-args (cdr x-invocation-args)))
! 
! ;; Handle the geometry option
! (defun x-handle-geometry (switch)
!   (let* ((geo (x-parse-geometry (car x-invocation-args)))
!        (left (assq 'left geo))
!        (top (assq 'top geo))
!        (height (assq 'height geo))
!        (width (assq 'width geo)))
!     (if (or height width)
!       (setq default-frame-alist
!             (append default-frame-alist
!                     '((user-size . t))
!                     (if height (list height))
!                     (if width (list width)))
!             initial-frame-alist
!             (append initial-frame-alist
!                     '((user-size . t))
!                     (if height (list height))
!                     (if width (list width)))))
!     (if (or left top)
!       (setq initial-frame-alist
!             (append initial-frame-alist
!                     '((user-position . t))
!                     (if left (list left))
!                     (if top (list top)))))
!     (setq x-invocation-args (cdr x-invocation-args))))
! 
! ;; Handle the -name option.  Set the variable x-resource-name
! ;; to the option's operand; set the name of
! ;; the initial frame, too.
! (defun x-handle-name-switch (switch)
!   (or (consp x-invocation-args)
!       (error "%s: missing argument to `%s' option" (invocation-name) switch))
!   (setq x-resource-name (car x-invocation-args)
!       x-invocation-args (cdr x-invocation-args))
!   (setq initial-frame-alist (cons (cons 'name x-resource-name)
!                                 initial-frame-alist)))
! 
! (defvar x-display-name nil
!   "The display name specifying server and frame.")
! 
! (defun x-handle-display (switch)
!   (setq x-display-name (car x-invocation-args)
!       x-invocation-args (cdr x-invocation-args)))
! 
! (defun x-handle-args (args)
!   "Process the X-related command line options in ARGS.
! This is done before the user's startup file is loaded.  They are copied to
! `x-invocation-args', from which the X-related things are extracted, first
! the switch (e.g., \"-fg\") in the following code, and possible values
! \(e.g., \"black\") in the option handler code (e.g., x-handle-switch).
! This function returns ARGS minus the arguments that have been processed."
!   ;; We use ARGS to accumulate the args that we don't handle here, to return.
!   (setq x-invocation-args args
!       args nil)
!   (while (and x-invocation-args
!             (not (equal (car x-invocation-args) "--")))
!     (let* ((this-switch (car x-invocation-args))
!          (orig-this-switch this-switch)
!          completion argval aelt handler)
!       (setq x-invocation-args (cdr x-invocation-args))
!       ;; Check for long options with attached arguments
!       ;; and separate out the attached option argument into argval.
!       (if (string-match "^--[^=]*=" this-switch)
!         (setq argval (substring this-switch (match-end 0))
!               this-switch (substring this-switch 0 (1- (match-end 0)))))
!       ;; Complete names of long options.
!       (if (string-match "^--" this-switch)
!         (progn
!           (setq completion (try-completion this-switch 
command-line-x-option-alist))
!           (if (eq completion t)
!               ;; Exact match for long option.
!               nil
!             (if (stringp completion)
!                 (let ((elt (assoc completion command-line-x-option-alist)))
!                   ;; Check for abbreviated long option.
!                   (or elt
!                       (error "Option `%s' is ambiguous" this-switch))
!                   (setq this-switch completion))))))
!       (setq aelt (assoc this-switch command-line-x-option-alist))
!       (if aelt (setq handler (nth 2 aelt)))
!       (if handler
!         (if argval
!             (let ((x-invocation-args
!                    (cons argval x-invocation-args)))
!               (funcall handler this-switch))
!           (funcall handler this-switch))
!       (setq args (cons orig-this-switch args)))))
!   (nconc (nreverse args) x-invocation-args))
! 
! ;;
! ;; Available colors
! ;;
  
  (defvar x-colors '("LightGreen"
                   "light green"
***************
*** 1407,1414 ****
                   "GhostWhite"
                   "ghost white"
                   "snow")
!  "The list of X colors from the `rgb.txt' file.
  XConsortium: rgb.txt,v 10.41 94/02/20 18:39:36 rws Exp")
  
  ;;; arch-tag: 71dfcd14-cde8-4d66-b05c-85ec94fb23a6
  ;;; mac-win.el ends here
--- 986,1708 ----
                   "GhostWhite"
                   "ghost white"
                   "snow")
!   "The list of X colors from the `rgb.txt' file.
  XConsortium: rgb.txt,v 10.41 94/02/20 18:39:36 rws Exp")
  
+ (defun xw-defined-colors (&optional frame)
+   "Internal function called by `defined-colors', which see."
+   (or frame (setq frame (selected-frame)))
+   (let ((all-colors x-colors)
+       (this-color nil)
+       (defined-colors nil))
+     (while all-colors
+       (setq this-color (car all-colors)
+           all-colors (cdr all-colors))
+       (and (color-supported-p this-color frame t)
+          (setq defined-colors (cons this-color defined-colors))))
+     defined-colors))
+ 
+ ;;;; Function keys
+ 
+ (substitute-key-definition 'suspend-emacs 'iconify-or-deiconify-frame
+                          global-map)
+ 
+ ;; Map certain keypad keys into ASCII characters
+ ;; that people usually expect.
+ (define-key function-key-map [return] [?\C-m])
+ (define-key function-key-map [M-return] [?\M-\C-m])
+ (define-key function-key-map [tab] [?\t])
+ (define-key function-key-map [M-tab] [?\M-\t])
+ (define-key function-key-map [backspace] [127])
+ (define-key function-key-map [M-backspace] [?\M-\d])
+ (define-key function-key-map [escape] [?\e])
+ (define-key function-key-map [M-escape] [?\M-\e])
+ 
+ ;; These tell read-char how to convert
+ ;; these special chars to ASCII.
+ (put 'return 'ascii-character 13)
+ (put 'tab 'ascii-character ?\t)
+ (put 'backspace 'ascii-character 127)
+ (put 'escape 'ascii-character ?\e)
+ 
+ 
+ ;;;; Keysyms
+ 
+ ;; Define constant values to be set to mac-keyboard-text-encoding
+ (defconst kTextEncodingMacRoman 0)
+ (defconst kTextEncodingISOLatin1 513 "0x201")
+ (defconst kTextEncodingISOLatin2 514 "0x202")
+ 
+ 
+ ;;;; Selections and cut buffers
+ 
+ ;; Setup to use the Mac clipboard.  The functions mac-cut-function and
+ ;; mac-paste-function are defined in mac.c.
+ (set-selection-coding-system 'compound-text-mac)
+ 
+ (setq interprogram-cut-function
+       '(lambda (str push)
+        (mac-cut-function
+         (encode-coding-string str selection-coding-system t) push)))
+ 
+ (setq interprogram-paste-function
+       '(lambda ()
+        (let ((clipboard (mac-paste-function)))
+          (if clipboard
+              (decode-coding-string clipboard selection-coding-system t)))))
+ 
+ 
+ ;;; Do the actual Windows setup here; the above code just defines
+ ;;; functions and variables that we use now.
+ 
+ (setq command-line-args (x-handle-args command-line-args))
+ 
+ ;;; Make sure we have a valid resource name.
+ (or (stringp x-resource-name)
+     (let (i)
+       (setq x-resource-name (invocation-name))
+ 
+       ;; Change any . or * characters in x-resource-name to hyphens,
+       ;; so as not to choke when we use it in X resource queries.
+       (while (setq i (string-match "[.*]" x-resource-name))
+       (aset x-resource-name i ?-))))
+ 
+ (if (x-display-list)
+     ;; On Mac OS 8/9, Most coding systems used in code conversion for
+     ;; font names are not ready at the time when the terminal frame is
+     ;; created.  So we reconstruct font name table for the initial
+     ;; frame.
+     (mac-clear-font-name-table)
+   (x-open-connection "Mac"
+                    x-command-line-resources
+                    ;; Exit Emacs with fatal error if this fails.
+                    t))
+ 
+ (setq frame-creation-function 'x-create-frame-with-faces)
+ 
+ (define-ccl-program ccl-encode-mac-roman-font
+   `(0
+     (if (r0 != ,(charset-id 'ascii))
+       (if (r0 <= ?\x8f)
+           (translate-character mac-roman-encoder r0 r1)
+         ((r1 <<= 7)
+          (r1 |= r2)
+          (translate-character mac-roman-encoder r0 r1)))))
+   "CCL program for Mac Roman font")
+ 
+ (let
+     ((encoding-vector (make-vector 256 nil))
+      (i 0)
+      (vec     ;; mac-centraleurroman (128..255) -> UCS mapping
+       [       #x00C4  ;; 128:LATIN CAPITAL LETTER A WITH DIAERESIS
+       #x0100  ;; 129:LATIN CAPITAL LETTER A WITH MACRON
+       #x0101  ;; 130:LATIN SMALL LETTER A WITH MACRON
+       #x00C9  ;; 131:LATIN CAPITAL LETTER E WITH ACUTE
+       #x0104  ;; 132:LATIN CAPITAL LETTER A WITH OGONEK
+       #x00D6  ;; 133:LATIN CAPITAL LETTER O WITH DIAERESIS
+       #x00DC  ;; 134:LATIN CAPITAL LETTER U WITH DIAERESIS
+       #x00E1  ;; 135:LATIN SMALL LETTER A WITH ACUTE
+       #x0105  ;; 136:LATIN SMALL LETTER A WITH OGONEK
+       #x010C  ;; 137:LATIN CAPITAL LETTER C WITH CARON
+       #x00E4  ;; 138:LATIN SMALL LETTER A WITH DIAERESIS
+       #x010D  ;; 139:LATIN SMALL LETTER C WITH CARON
+       #x0106  ;; 140:LATIN CAPITAL LETTER C WITH ACUTE
+       #x0107  ;; 141:LATIN SMALL LETTER C WITH ACUTE
+       #x00E9  ;; 142:LATIN SMALL LETTER E WITH ACUTE
+       #x0179  ;; 143:LATIN CAPITAL LETTER Z WITH ACUTE
+       #x017A  ;; 144:LATIN SMALL LETTER Z WITH ACUTE
+       #x010E  ;; 145:LATIN CAPITAL LETTER D WITH CARON
+       #x00ED  ;; 146:LATIN SMALL LETTER I WITH ACUTE
+       #x010F  ;; 147:LATIN SMALL LETTER D WITH CARON
+       #x0112  ;; 148:LATIN CAPITAL LETTER E WITH MACRON
+       #x0113  ;; 149:LATIN SMALL LETTER E WITH MACRON
+       #x0116  ;; 150:LATIN CAPITAL LETTER E WITH DOT ABOVE
+       #x00F3  ;; 151:LATIN SMALL LETTER O WITH ACUTE
+       #x0117  ;; 152:LATIN SMALL LETTER E WITH DOT ABOVE
+       #x00F4  ;; 153:LATIN SMALL LETTER O WITH CIRCUMFLEX
+       #x00F6  ;; 154:LATIN SMALL LETTER O WITH DIAERESIS
+       #x00F5  ;; 155:LATIN SMALL LETTER O WITH TILDE
+       #x00FA  ;; 156:LATIN SMALL LETTER U WITH ACUTE
+       #x011A  ;; 157:LATIN CAPITAL LETTER E WITH CARON
+       #x011B  ;; 158:LATIN SMALL LETTER E WITH CARON
+       #x00FC  ;; 159:LATIN SMALL LETTER U WITH DIAERESIS
+       #x2020  ;; 160:DAGGER
+       #x00B0  ;; 161:DEGREE SIGN
+       #x0118  ;; 162:LATIN CAPITAL LETTER E WITH OGONEK
+       #x00A3  ;; 163:POUND SIGN
+       #x00A7  ;; 164:SECTION SIGN
+       #x2022  ;; 165:BULLET
+       #x00B6  ;; 166:PILCROW SIGN
+       #x00DF  ;; 167:LATIN SMALL LETTER SHARP S
+       #x00AE  ;; 168:REGISTERED SIGN
+       #x00A9  ;; 169:COPYRIGHT SIGN
+       #x2122  ;; 170:TRADE MARK SIGN
+       #x0119  ;; 171:LATIN SMALL LETTER E WITH OGONEK
+       #x00A8  ;; 172:DIAERESIS
+       #x2260  ;; 173:NOT EQUAL TO
+       #x0123  ;; 174:LATIN SMALL LETTER G WITH CEDILLA
+       #x012E  ;; 175:LATIN CAPITAL LETTER I WITH OGONEK
+       #x012F  ;; 176:LATIN SMALL LETTER I WITH OGONEK
+       #x012A  ;; 177:LATIN CAPITAL LETTER I WITH MACRON
+       #x2264  ;; 178:LESS-THAN OR EQUAL TO
+       #x2265  ;; 179:GREATER-THAN OR EQUAL TO
+       #x012B  ;; 180:LATIN SMALL LETTER I WITH MACRON
+       #x0136  ;; 181:LATIN CAPITAL LETTER K WITH CEDILLA
+       #x2202  ;; 182:PARTIAL DIFFERENTIAL
+       #x2211  ;; 183:N-ARY SUMMATION
+       #x0142  ;; 184:LATIN SMALL LETTER L WITH STROKE
+       #x013B  ;; 185:LATIN CAPITAL LETTER L WITH CEDILLA
+       #x013C  ;; 186:LATIN SMALL LETTER L WITH CEDILLA
+       #x013D  ;; 187:LATIN CAPITAL LETTER L WITH CARON
+       #x013E  ;; 188:LATIN SMALL LETTER L WITH CARON
+       #x0139  ;; 189:LATIN CAPITAL LETTER L WITH ACUTE
+       #x013A  ;; 190:LATIN SMALL LETTER L WITH ACUTE
+       #x0145  ;; 191:LATIN CAPITAL LETTER N WITH CEDILLA
+       #x0146  ;; 192:LATIN SMALL LETTER N WITH CEDILLA
+       #x0143  ;; 193:LATIN CAPITAL LETTER N WITH ACUTE
+       #x00AC  ;; 194:NOT SIGN
+       #x221A  ;; 195:SQUARE ROOT
+       #x0144  ;; 196:LATIN SMALL LETTER N WITH ACUTE
+       #x0147  ;; 197:LATIN CAPITAL LETTER N WITH CARON
+       #x2206  ;; 198:INCREMENT
+       #x00AB  ;; 199:LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+       #x00BB  ;; 200:RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+       #x2026  ;; 201:HORIZONTAL ELLIPSIS
+       #x00A0  ;; 202:NO-BREAK SPACE
+       #x0148  ;; 203:LATIN SMALL LETTER N WITH CARON
+       #x0150  ;; 204:LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+       #x00D5  ;; 205:LATIN CAPITAL LETTER O WITH TILDE
+       #x0151  ;; 206:LATIN SMALL LETTER O WITH DOUBLE ACUTE
+       #x014C  ;; 207:LATIN CAPITAL LETTER O WITH MACRON
+       #x2013  ;; 208:EN DASH
+       #x2014  ;; 209:EM DASH
+       #x201C  ;; 210:LEFT DOUBLE QUOTATION MARK
+       #x201D  ;; 211:RIGHT DOUBLE QUOTATION MARK
+       #x2018  ;; 212:LEFT SINGLE QUOTATION MARK
+       #x2019  ;; 213:RIGHT SINGLE QUOTATION MARK
+       #x00F7  ;; 214:DIVISION SIGN
+       #x25CA  ;; 215:LOZENGE
+       #x014D  ;; 216:LATIN SMALL LETTER O WITH MACRON
+       #x0154  ;; 217:LATIN CAPITAL LETTER R WITH ACUTE
+       #x0155  ;; 218:LATIN SMALL LETTER R WITH ACUTE
+       #x0158  ;; 219:LATIN CAPITAL LETTER R WITH CARON
+       #x2039  ;; 220:SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+       #x203A  ;; 221:SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+       #x0159  ;; 222:LATIN SMALL LETTER R WITH CARON
+       #x0156  ;; 223:LATIN CAPITAL LETTER R WITH CEDILLA
+       #x0157  ;; 224:LATIN SMALL LETTER R WITH CEDILLA
+       #x0160  ;; 225:LATIN CAPITAL LETTER S WITH CARON
+       #x201A  ;; 226:SINGLE LOW-9 QUOTATION MARK
+       #x201E  ;; 227:DOUBLE LOW-9 QUOTATION MARK
+       #x0161  ;; 228:LATIN SMALL LETTER S WITH CARON
+       #x015A  ;; 229:LATIN CAPITAL LETTER S WITH ACUTE
+       #x015B  ;; 230:LATIN SMALL LETTER S WITH ACUTE
+       #x00C1  ;; 231:LATIN CAPITAL LETTER A WITH ACUTE
+       #x0164  ;; 232:LATIN CAPITAL LETTER T WITH CARON
+       #x0165  ;; 233:LATIN SMALL LETTER T WITH CARON
+       #x00CD  ;; 234:LATIN CAPITAL LETTER I WITH ACUTE
+       #x017D  ;; 235:LATIN CAPITAL LETTER Z WITH CARON
+       #x017E  ;; 236:LATIN SMALL LETTER Z WITH CARON
+       #x016A  ;; 237:LATIN CAPITAL LETTER U WITH MACRON
+       #x00D3  ;; 238:LATIN CAPITAL LETTER O WITH ACUTE
+       #x00D4  ;; 239:LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+       #x016B  ;; 240:LATIN SMALL LETTER U WITH MACRON
+       #x016E  ;; 241:LATIN CAPITAL LETTER U WITH RING ABOVE
+       #x00DA  ;; 242:LATIN CAPITAL LETTER U WITH ACUTE
+       #x016F  ;; 243:LATIN SMALL LETTER U WITH RING ABOVE
+       #x0170  ;; 244:LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+       #x0171  ;; 245:LATIN SMALL LETTER U WITH DOUBLE ACUTE
+       #x0172  ;; 246:LATIN CAPITAL LETTER U WITH OGONEK
+       #x0173  ;; 247:LATIN SMALL LETTER U WITH OGONEK
+       #x00DD  ;; 248:LATIN CAPITAL LETTER Y WITH ACUTE
+       #x00FD  ;; 249:LATIN SMALL LETTER Y WITH ACUTE
+       #x0137  ;; 250:LATIN SMALL LETTER K WITH CEDILLA
+       #x017B  ;; 251:LATIN CAPITAL LETTER Z WITH DOT ABOVE
+       #x0141  ;; 252:LATIN CAPITAL LETTER L WITH STROKE
+       #x017C  ;; 253:LATIN SMALL LETTER Z WITH DOT ABOVE
+       #x0122  ;; 254:LATIN CAPITAL LETTER G WITH CEDILLA
+       #x02C7  ;; 255:CARON
+       ])
+      translation-table)
+   (while (< i 128)
+     (aset encoding-vector i i)
+     (setq i (1+ i)))
+   (while (< i 256)
+     (aset encoding-vector i
+         (decode-char 'ucs (aref vec (- i 128))))
+     (setq i (1+ i)))
+   (setq translation-table
+       (make-translation-table-from-vector encoding-vector))
+ ;;  (define-translation-table 'mac-centraleurroman-decoder translation-table)
+   (define-translation-table 'mac-centraleurroman-encoder
+     (char-table-extra-slot translation-table 0)))
+ 
+ (let
+     ((encoding-vector (make-vector 256 nil))
+      (i 0)
+      (vec     ;; mac-cyrillic (128..255) -> UCS mapping
+       [       #x0410  ;; 128:CYRILLIC CAPITAL LETTER A
+       #x0411  ;; 129:CYRILLIC CAPITAL LETTER BE
+       #x0412  ;; 130:CYRILLIC CAPITAL LETTER VE
+       #x0413  ;; 131:CYRILLIC CAPITAL LETTER GHE
+       #x0414  ;; 132:CYRILLIC CAPITAL LETTER DE
+       #x0415  ;; 133:CYRILLIC CAPITAL LETTER IE
+       #x0416  ;; 134:CYRILLIC CAPITAL LETTER ZHE
+       #x0417  ;; 135:CYRILLIC CAPITAL LETTER ZE
+       #x0418  ;; 136:CYRILLIC CAPITAL LETTER I
+       #x0419  ;; 137:CYRILLIC CAPITAL LETTER SHORT I
+       #x041A  ;; 138:CYRILLIC CAPITAL LETTER KA
+       #x041B  ;; 139:CYRILLIC CAPITAL LETTER EL
+       #x041C  ;; 140:CYRILLIC CAPITAL LETTER EM
+       #x041D  ;; 141:CYRILLIC CAPITAL LETTER EN
+       #x041E  ;; 142:CYRILLIC CAPITAL LETTER O
+       #x041F  ;; 143:CYRILLIC CAPITAL LETTER PE
+       #x0420  ;; 144:CYRILLIC CAPITAL LETTER ER
+       #x0421  ;; 145:CYRILLIC CAPITAL LETTER ES
+       #x0422  ;; 146:CYRILLIC CAPITAL LETTER TE
+       #x0423  ;; 147:CYRILLIC CAPITAL LETTER U
+       #x0424  ;; 148:CYRILLIC CAPITAL LETTER EF
+       #x0425  ;; 149:CYRILLIC CAPITAL LETTER HA
+       #x0426  ;; 150:CYRILLIC CAPITAL LETTER TSE
+       #x0427  ;; 151:CYRILLIC CAPITAL LETTER CHE
+       #x0428  ;; 152:CYRILLIC CAPITAL LETTER SHA
+       #x0429  ;; 153:CYRILLIC CAPITAL LETTER SHCHA
+       #x042A  ;; 154:CYRILLIC CAPITAL LETTER HARD SIGN
+       #x042B  ;; 155:CYRILLIC CAPITAL LETTER YERU
+       #x042C  ;; 156:CYRILLIC CAPITAL LETTER SOFT SIGN
+       #x042D  ;; 157:CYRILLIC CAPITAL LETTER E
+       #x042E  ;; 158:CYRILLIC CAPITAL LETTER YU
+       #x042F  ;; 159:CYRILLIC CAPITAL LETTER YA
+       #x2020  ;; 160:DAGGER
+       #x00B0  ;; 161:DEGREE SIGN
+       #x0490  ;; 162:CYRILLIC CAPITAL LETTER GHE WITH UPTURN
+       #x00A3  ;; 163:POUND SIGN
+       #x00A7  ;; 164:SECTION SIGN
+       #x2022  ;; 165:BULLET
+       #x00B6  ;; 166:PILCROW SIGN
+       #x0406  ;; 167:CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
+       #x00AE  ;; 168:REGISTERED SIGN
+       #x00A9  ;; 169:COPYRIGHT SIGN
+       #x2122  ;; 170:TRADE MARK SIGN
+       #x0402  ;; 171:CYRILLIC CAPITAL LETTER DJE
+       #x0452  ;; 172:CYRILLIC SMALL LETTER DJE
+       #x2260  ;; 173:NOT EQUAL TO
+       #x0403  ;; 174:CYRILLIC CAPITAL LETTER GJE
+       #x0453  ;; 175:CYRILLIC SMALL LETTER GJE
+       #x221E  ;; 176:INFINITY
+       #x00B1  ;; 177:PLUS-MINUS SIGN
+       #x2264  ;; 178:LESS-THAN OR EQUAL TO
+       #x2265  ;; 179:GREATER-THAN OR EQUAL TO
+       #x0456  ;; 180:CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+       #x00B5  ;; 181:MICRO SIGN
+       #x0491  ;; 182:CYRILLIC SMALL LETTER GHE WITH UPTURN
+       #x0408  ;; 183:CYRILLIC CAPITAL LETTER JE
+       #x0404  ;; 184:CYRILLIC CAPITAL LETTER UKRAINIAN IE
+       #x0454  ;; 185:CYRILLIC SMALL LETTER UKRAINIAN IE
+       #x0407  ;; 186:CYRILLIC CAPITAL LETTER YI
+       #x0457  ;; 187:CYRILLIC SMALL LETTER YI
+       #x0409  ;; 188:CYRILLIC CAPITAL LETTER LJE
+       #x0459  ;; 189:CYRILLIC SMALL LETTER LJE
+       #x040A  ;; 190:CYRILLIC CAPITAL LETTER NJE
+       #x045A  ;; 191:CYRILLIC SMALL LETTER NJE
+       #x0458  ;; 192:CYRILLIC SMALL LETTER JE
+       #x0405  ;; 193:CYRILLIC CAPITAL LETTER DZE
+       #x00AC  ;; 194:NOT SIGN
+       #x221A  ;; 195:SQUARE ROOT
+       #x0192  ;; 196:LATIN SMALL LETTER F WITH HOOK
+       #x2248  ;; 197:ALMOST EQUAL TO
+       #x2206  ;; 198:INCREMENT
+       #x00AB  ;; 199:LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+       #x00BB  ;; 200:RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+       #x2026  ;; 201:HORIZONTAL ELLIPSIS
+       #x00A0  ;; 202:NO-BREAK SPACE
+       #x040B  ;; 203:CYRILLIC CAPITAL LETTER TSHE
+       #x045B  ;; 204:CYRILLIC SMALL LETTER TSHE
+       #x040C  ;; 205:CYRILLIC CAPITAL LETTER KJE
+       #x045C  ;; 206:CYRILLIC SMALL LETTER KJE
+       #x0455  ;; 207:CYRILLIC SMALL LETTER DZE
+       #x2013  ;; 208:EN DASH
+       #x2014  ;; 209:EM DASH
+       #x201C  ;; 210:LEFT DOUBLE QUOTATION MARK
+       #x201D  ;; 211:RIGHT DOUBLE QUOTATION MARK
+       #x2018  ;; 212:LEFT SINGLE QUOTATION MARK
+       #x2019  ;; 213:RIGHT SINGLE QUOTATION MARK
+       #x00F7  ;; 214:DIVISION SIGN
+       #x201E  ;; 215:DOUBLE LOW-9 QUOTATION MARK
+       #x040E  ;; 216:CYRILLIC CAPITAL LETTER SHORT U
+       #x045E  ;; 217:CYRILLIC SMALL LETTER SHORT U
+       #x040F  ;; 218:CYRILLIC CAPITAL LETTER DZHE
+       #x045F  ;; 219:CYRILLIC SMALL LETTER DZHE
+       #x2116  ;; 220:NUMERO SIGN
+       #x0401  ;; 221:CYRILLIC CAPITAL LETTER IO
+       #x0451  ;; 222:CYRILLIC SMALL LETTER IO
+       #x044F  ;; 223:CYRILLIC SMALL LETTER YA
+       #x0430  ;; 224:CYRILLIC SMALL LETTER A
+       #x0431  ;; 225:CYRILLIC SMALL LETTER BE
+       #x0432  ;; 226:CYRILLIC SMALL LETTER VE
+       #x0433  ;; 227:CYRILLIC SMALL LETTER GHE
+       #x0434  ;; 228:CYRILLIC SMALL LETTER DE
+       #x0435  ;; 229:CYRILLIC SMALL LETTER IE
+       #x0436  ;; 230:CYRILLIC SMALL LETTER ZHE
+       #x0437  ;; 231:CYRILLIC SMALL LETTER ZE
+       #x0438  ;; 232:CYRILLIC SMALL LETTER I
+       #x0439  ;; 233:CYRILLIC SMALL LETTER SHORT I
+       #x043A  ;; 234:CYRILLIC SMALL LETTER KA
+       #x043B  ;; 235:CYRILLIC SMALL LETTER EL
+       #x043C  ;; 236:CYRILLIC SMALL LETTER EM
+       #x043D  ;; 237:CYRILLIC SMALL LETTER EN
+       #x043E  ;; 238:CYRILLIC SMALL LETTER O
+       #x043F  ;; 239:CYRILLIC SMALL LETTER PE
+       #x0440  ;; 240:CYRILLIC SMALL LETTER ER
+       #x0441  ;; 241:CYRILLIC SMALL LETTER ES
+       #x0442  ;; 242:CYRILLIC SMALL LETTER TE
+       #x0443  ;; 243:CYRILLIC SMALL LETTER U
+       #x0444  ;; 244:CYRILLIC SMALL LETTER EF
+       #x0445  ;; 245:CYRILLIC SMALL LETTER HA
+       #x0446  ;; 246:CYRILLIC SMALL LETTER TSE
+       #x0447  ;; 247:CYRILLIC SMALL LETTER CHE
+       #x0448  ;; 248:CYRILLIC SMALL LETTER SHA
+       #x0449  ;; 249:CYRILLIC SMALL LETTER SHCHA
+       #x044A  ;; 250:CYRILLIC SMALL LETTER HARD SIGN
+       #x044B  ;; 251:CYRILLIC SMALL LETTER YERU
+       #x044C  ;; 252:CYRILLIC SMALL LETTER SOFT SIGN
+       #x044D  ;; 253:CYRILLIC SMALL LETTER E
+       #x044E  ;; 254:CYRILLIC SMALL LETTER YU
+       #x20AC  ;; 255:EURO SIGN
+       ])
+      translation-table)
+   (while (< i 128)
+     (aset encoding-vector i i)
+     (setq i (1+ i)))
+   (while (< i 256)
+     (aset encoding-vector i
+         (decode-char 'ucs (aref vec (- i 128))))
+     (setq i (1+ i)))
+   (setq translation-table
+       (make-translation-table-from-vector encoding-vector))
+ ;;  (define-translation-table 'mac-cyrillic-decoder translation-table)
+   (define-translation-table 'mac-cyrillic-encoder
+     (char-table-extra-slot translation-table 0)))
+ 
+ (defvar mac-font-encoder-list
+   '(("mac-roman" mac-roman-encoder
+      ccl-encode-mac-roman-font "%s")
+     ("mac-centraleurroman" mac-centraleurroman-encoder
+      ccl-encode-mac-centraleurroman-font "%s ce")
+     ("mac-cyrillic" mac-cyrillic-encoder
+      ccl-encode-mac-cyrillic-font "%s cy")))
+ 
+ (let ((encoder-list
+        (mapcar (lambda (lst) (nth 1 lst)) mac-font-encoder-list))
+       (charset-list
+        '(latin-iso8859-2
+        latin-iso8859-3 latin-iso8859-4
+        cyrillic-iso8859-5 greek-iso8859-7 hebrew-iso8859-8
+        latin-iso8859-9 latin-iso8859-14 latin-iso8859-15)))
+   (dolist (encoder encoder-list)
+     (let ((table (get encoder 'translation-table)))
+       (dolist (charset charset-list)
+       (dotimes (i 96)
+         (let* ((c (make-char charset (+ i 32)))
+                (mu (aref ucs-mule-to-mule-unicode c))
+                (mac-encoded (and mu (aref table mu))))
+           (if mac-encoded
+               (aset table c mac-encoded))))))))
+ 
+ (define-ccl-program ccl-encode-mac-centraleurroman-font
+   `(0
+     (if (r0 != ,(charset-id 'ascii))
+       (if (r0 <= ?\x8f)
+           (translate-character mac-centraleurroman-encoder r0 r1)
+         ((r1 <<= 7)
+          (r1 |= r2)
+          (translate-character mac-centraleurroman-encoder r0 r1)))))
+   "CCL program for Mac Central European Roman font")
+ 
+ (define-ccl-program ccl-encode-mac-cyrillic-font
+   `(0
+     (if (r0 != ,(charset-id 'ascii))
+       (if (r0 <= ?\x8f)
+           (translate-character mac-cyrillic-encoder r0 r1)
+         ((r1 <<= 7)
+          (r1 |= r2)
+          (translate-character mac-cyrillic-encoder r0 r1)))))
+   "CCL program for Mac Cyrillic font")
+ 
+ 
+ (setq font-ccl-encoder-alist
+       (nconc
+        (mapcar (lambda (lst) (cons (nth 0 lst) (nth 2 lst)))
+              mac-font-encoder-list)
+        font-ccl-encoder-alist))
+ 
+ (defun fontset-add-mac-fonts (fontset &optional base-family)
+   (if base-family
+       (setq base-family (downcase base-family))
+     (let ((ascii-font
+          (downcase (x-resolve-font-name
+                     (fontset-font fontset (charset-id 'ascii))))))
+       (setq base-family (aref (x-decompose-font-name ascii-font)
+                             xlfd-regexp-family-subnum))))
+ ;;  (if (not (string-match "^fontset-" fontset))
+ ;;      (setq fontset
+ ;;        (concat "fontset-" (aref (x-decompose-font-name fontset)
+ ;;                                 xlfd-regexp-encoding-subnum))))
+   (dolist
+       (font-encoder
+        (nreverse
+       (mapcar (lambda (lst)
+                 (cons (cons (format (nth 3 lst) base-family) (nth 0 lst))
+                       (nth 1 lst)))
+               mac-font-encoder-list)))
+     (let ((font (car font-encoder))
+         (encoder (cdr font-encoder)))
+       (map-char-table
+        (lambda (key val)
+        (or (null val)
+            (generic-char-p key)
+            (memq (char-charset key)
+                  '(ascii eight-bit-control eight-bit-graphic))
+            (set-fontset-font fontset key font)))
+        (get encoder 'translation-table)))))
+  
+ (defun create-fontset-from-mac-roman-font (font &optional resolved-font
+                                               fontset-name)
+   "Create a fontset from a Mac roman font FONT.
+ 
+ Optional 1st arg RESOLVED-FONT is a resolved name of FONT.  If
+ omitted, `x-resolve-font-name' is called to get the resolved name.  At
+ this time, if FONT is not available, error is signaled.
+ 
+ Optional 2nd arg FONTSET-NAME is a string to be used in
+ `<CHARSET_ENCODING>' fields of a new fontset name.  If it is omitted,
+ an appropriate name is generated automatically.
+ 
+ It returns a name of the created fontset."
+   (let ((fontset
+        (create-fontset-from-ascii-font font resolved-font fontset-name)))
+     (fontset-add-mac-fonts fontset)
+     fontset))
+ 
+ ;; Setup the default fontset.
+ (setup-default-fontset)
+ 
+ ;; 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.
+ (create-fontset-from-fontset-spec
+  "-etl-fixed-medium-r-normal-*-16-*-*-*-*-*-fontset-mac,
+ ascii:-*-Monaco-*-*-*-*-12-*-*-*-*-*-mac-roman")
+ (fontset-add-mac-fonts "fontset-mac")
+ 
+ ;; Create fontset specified in X resources "Fontset-N" (N is 0, 1, ...).
+ (create-fontset-from-x-resource)
+ 
+ ;; Try to create a fontset from a font specification which comes
+ ;; from initial-frame-alist, default-frame-alist, or X resource.
+ ;; A font specification in command line argument (i.e. -fn XXXX)
+ ;; should be already in default-frame-alist as a `font'
+ ;; parameter.  However, any font specifications in site-start
+ ;; library, user's init file (.emacs), and default.el are not
+ ;; yet handled here.
+ 
+ (let ((font (or (cdr (assq 'font initial-frame-alist))
+               (cdr (assq 'font default-frame-alist))
+               (x-get-resource "font" "Font")))
+       xlfd-fields resolved-name)
+   (if (and font
+          (not (query-fontset font))
+          (setq resolved-name (x-resolve-font-name font))
+          (setq xlfd-fields (x-decompose-font-name font)))
+       (if (string= "fontset" (aref xlfd-fields xlfd-regexp-registry-subnum))
+         (new-fontset font (x-complement-fontset-spec xlfd-fields nil))
+       ;; Create a fontset from FONT.  The fontset name is
+       ;; generated from FONT.
+       (create-fontset-from-ascii-font font resolved-name "startup"))))
+ 
+ ;; Apply a geometry resource to the initial frame.  Put it at the end
+ ;; of the alist, so that anything specified on the command line takes
+ ;; precedence.
+ (let* ((res-geometry (x-get-resource "geometry" "Geometry"))
+        parsed)
+   (if res-geometry
+       (progn
+       (setq parsed (x-parse-geometry res-geometry))
+       ;; If the resource specifies a position,
+       ;; call the position and size "user-specified".
+       (if (or (assq 'top parsed) (assq 'left parsed))
+           (setq parsed (cons '(user-position . t)
+                              (cons '(user-size . t) parsed))))
+       ;; All geometry parms apply to the initial frame.
+       (setq initial-frame-alist (append initial-frame-alist parsed))
+       ;; The size parms apply to all frames.
+       (if (assq 'height parsed)
+           (setq default-frame-alist
+                 (cons (cons 'height (cdr (assq 'height parsed)))
+                       default-frame-alist)))
+       (if (assq 'width parsed)
+           (setq default-frame-alist
+                 (cons (cons 'width (cdr (assq 'width parsed)))
+                       default-frame-alist))))))
+ 
+ ;; Check the reverseVideo resource.
+ (let ((case-fold-search t))
+   (let ((rv (x-get-resource "reverseVideo" "ReverseVideo")))
+     (if (and rv
+            (string-match "^\\(true\\|yes\\|on\\)$" rv))
+       (setq default-frame-alist
+             (cons '(reverse . t) default-frame-alist)))))
+ 
+ (defun x-win-suspend-error ()
+   (error "Suspending an Emacs running under Mac makes no sense"))
+ (add-hook 'suspend-hook 'x-win-suspend-error)
+ 
+ ;; Don't show the frame name; that's redundant.
+ (setq-default mode-line-frame-identification "  ")
+ 
+ ;; Turn on support for mouse wheels.
+ (mouse-wheel-mode 1)
+ 
+ (defun mac-drag-n-drop (event)
+   "Edit the files listed in the drag-n-drop event.\n\
+ Switch to a buffer editing the last file dropped."
+   (interactive "e")
+   (save-excursion
+     ;; Make sure the drop target has positive co-ords
+     ;; before setting the selected frame - otherwise it
+     ;; won't work.  <address@hidden>
+     (let* ((window (posn-window (event-start event)))
+          (coords (posn-x-y (event-start event)))
+          (x (car coords))
+          (y (cdr coords)))
+       (if (and (> x 0) (> y 0))
+         (set-frame-selected-window nil window))
+       (mapcar
+        '(lambda (file)
+         (find-file
+          (decode-coding-string
+           file
+           (or file-name-coding-system
+               default-file-name-coding-system))))
+        (car (cdr (cdr event)))))
+   (raise-frame)
+   (recenter)))
+ 
+ (global-set-key [drag-n-drop] 'mac-drag-n-drop)
+ 
+ ;; By checking whether the variable mac-ready-for-drag-n-drop has been
+ ;; defined, the event loop in macterm.c can be informed that it can
+ ;; now receive Finder drag and drop events.  Files dropped onto the
+ ;; Emacs application icon can only be processed when the initial frame
+ ;; has been created: this is where the files should be opened.
+ (add-hook 'after-init-hook
+         '(lambda ()
+            (defvar mac-ready-for-drag-n-drop t)))
+ 
+ ;;;; Scroll bars
+ 
+ ;; for debugging
+ ;; (defun mac-handle-scroll-bar-event (event) (interactive "e") (princ event))
+ 
+ ;;(global-set-key [vertical-scroll-bar mouse-1] 'mac-handle-scroll-bar-event)
+ 
+ (global-set-key
+  [vertical-scroll-bar down-mouse-1]
+  'mac-handle-scroll-bar-event)
+ 
+ (global-unset-key [vertical-scroll-bar drag-mouse-1])
+ (global-unset-key [vertical-scroll-bar mouse-1])
+ 
+ (defun mac-handle-scroll-bar-event (event)
+   "Handle scroll bar EVENT to emulate Mac Toolbox style scrolling."
+   (interactive "e")
+   (let* ((position (event-start event))
+        (window (nth 0 position))
+        (bar-part (nth 4 position)))
+     (select-window window)
+     (cond
+      ((eq bar-part 'up)
+       (goto-char (window-start window))
+       (mac-scroll-down-line))
+      ((eq bar-part 'above-handle)
+       (mac-scroll-down))
+      ((eq bar-part 'handle)
+       (scroll-bar-drag event))
+      ((eq bar-part 'below-handle)
+       (mac-scroll-up))
+      ((eq bar-part 'down)
+       (goto-char (window-start window))
+       (mac-scroll-up-line)))))
+ 
+ (defun mac-scroll-ignore-events ()
+   ;; Ignore confusing non-mouse events
+   (while (not (memq (car-safe (read-event))
+                   '(mouse-1 double-mouse-1 triple-mouse-1))) nil))
+ 
+ (defun mac-scroll-down ()
+   (track-mouse
+     (mac-scroll-ignore-events)
+     (scroll-down)))
+ 
+ (defun mac-scroll-down-line ()
+   (track-mouse
+     (mac-scroll-ignore-events)
+     (scroll-down 1)))
+ 
+ (defun mac-scroll-up ()
+   (track-mouse
+     (mac-scroll-ignore-events)
+     (scroll-up)))
+ 
+ (defun mac-scroll-up-line ()
+   (track-mouse
+     (mac-scroll-ignore-events)
+     (scroll-up 1)))
+ 
+ 
+ ;;;; Others
+ 
+ (unless (eq system-type 'darwin)
+   ;; This variable specifies the Unix program to call (as a process) to
+   ;; deteremine the amount of free space on a file system (defaults to
+   ;; df).  If it is not set to nil, ls-lisp will not work correctly
+   ;; unless an external application df is implemented on the Mac.
+   (setq directory-free-space-program nil)
+ 
+   ;; Set this so that Emacs calls subprocesses with "sh" as shell to
+   ;; expand filenames Note no subprocess for the shell is actually
+   ;; started (see run_mac_command in sysdep.c).
+   (setq shell-file-name "sh"))
+ 
+ ;; X Window emulation in macterm.c is not complete enough to start a
+ ;; frame without a minibuffer properly.  Call this to tell ediff
+ ;; library to use a single frame.
+ ; (ediff-toggle-multiframe)
+ 
+ (if (eq system-type 'darwin)
+     ;; On Darwin filenames are encoded in UTF-8
+     (setq file-name-coding-system 'utf-8)
+   ;; To display filenames in Chinese or Japanese, replace mac-roman with
+   ;; big5 or sjis
+   (setq file-name-coding-system 'mac-roman))
+ 
+ ;; If Emacs is started from the Finder, change the default directory
+ ;; to the user's home directory.
+ (if (string= default-directory "/")
+     (cd "~"))
+ 
+ ;; Tell Emacs to use pipes instead of pty's for processes because the
+ ;; latter sometimes lose characters.  Pty support is compiled in since
+ ;; ange-ftp will not work without it.
+ (setq process-connection-type nil)
+ 
+ ;; Assume that fonts are always scalable on the Mac.  This sometimes
+ ;; results in characters with jagged edges.  However, without it,
+ ;; fonts with both truetype and bitmap representations but no italic
+ ;; or bold bitmap versions will not display these variants correctly.
+ (setq scalable-fonts-allowed t)
+ 
+ ;; (prefer-coding-system 'mac-roman)
+ 
  ;;; arch-tag: 71dfcd14-cde8-4d66-b05c-85ec94fb23a6
  ;;; mac-win.el ends here




reply via email to

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