Commit 74e2abe2 authored by Steven Tamm's avatar Steven Tamm
Browse files

* term/mac-win.el: Sync with x-win.el. Rearrange the contents.

Call mac-clear-font-name-table if invoked on Mac OS 8/9.  Call
x-open-connection on Mac OS X.
parent e6973a25
2004-12-27 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
* term/mac-win.el: Sync with x-win.el. Rearrange the contents.
Call mac-clear-font-name-table if invoked on Mac OS 8/9. Call
x-open-connection on Mac OS X.
2004-12-27 Richard M. Stallman <rms@gnu.org>
 
* bookmark.el (bookmark-jump): Nice error if BOOKMARK is nil.
......
;;; mac-win.el --- support for "Macintosh windows"
;;; mac-win.el --- parse switches controlling interface with Mac window system
;; Copyright (C) 1999, 2000, 2002, 2003 Free Software Foundation, Inc.
;; Copyright (C) 1999, 2000, 2002, 2003, 2004 Free Software Foundation, Inc.
;; Author: Andrew Choi <akochoi@mac.com>
;; Keywords: terminals
;; This file is part of GNU Emacs.
......@@ -23,637 +24,215 @@
;;; Commentary:
;;; Code:
;; ---------------------------------------------------------------------------
;; We want to delay setting frame parameters until the faces are setup
;; 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.
;; Mac can't handle ~ prefix in file names
;(setq auto-save-list-file-prefix ".saves-")
;; startup.el will then examine startup files, and eventually call the hooks
;; which create the first window(s).
(setq frame-creation-function 'x-create-frame-with-faces)
;;; Code:
;; These are the standard X switches from the Xt Initialize.c file of
;; Release 4.
;; for debugging
;; (defun mac-handle-scroll-bar-event (event) (interactive "e") (princ event))
;; Command line Resource Manager string
;;(global-set-key [vertical-scroll-bar mouse-1] 'mac-handle-scroll-bar-event)
;; +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
(global-set-key
[vertical-scroll-bar down-mouse-1]
'mac-handle-scroll-bar-event)
;; An alist of X options and the function which handles them. See
;; ../startup.el.
(global-unset-key [vertical-scroll-bar drag-mouse-1])
(global-unset-key [vertical-scroll-bar mouse-1])
(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)
(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"))
(defvar x-invocation-args)
;; 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)
(defvar x-command-line-resources nil)
;; 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)
;; 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)))))))
(setq interprogram-cut-function
'(lambda (str push)
(mac-cut-function
(encode-coding-string str selection-coding-system t) push)))
;; 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))))))
(setq interprogram-paste-function
'(lambda ()
(let ((clipboard (mac-paste-function)))
(if clipboard
(decode-coding-string clipboard selection-coding-system t)))))
;; 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)))))))
;; Don't show the frame name; that's redundant.
(setq-default mode-line-frame-identification " ")
;; Make -iconic apply only to the initial frame!
(defun x-handle-iconic (switch)
(setq initial-frame-alist
(cons '(visibility . icon) initial-frame-alist)))
(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. <skx@tardis.ed.ac.uk>
(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)))
;; 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)))
(global-set-key [drag-n-drop] 'mac-drag-n-drop)
;; 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))))
;; 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)))
;; 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)))
; Define constant values to be set to mac-keyboard-text-encoding
(defconst kTextEncodingMacRoman 0)
(defconst kTextEncodingISOLatin1 513 "0x201")
(defconst kTextEncodingISOLatin2 514 "0x202")
(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)))
(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")