;;; uni-input.el --- Hex Unicode input method
-;; Copyright (C) 2001 Free Software Foundation, Inc.
+;; Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
+;; Free Software Foundation, Inc.
+;; Copyright (C) 2004, 2005, 2006, 2007
+;; National Institute of Advanced Industrial Science and Technology (AIST)
+;; Registration Number H14PRO021
;; Author: Dave Love <fx@gnu.org>
;; Keywords: i18n
+;; This file is part of GNU Emacs.
+
;; This file is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation; either version 2, or (at your option)
+;; the Free Software Foundation; either version 3, or (at your option)
;; any later version.
;; This file is distributed in the hope that it will be useful,
;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs; see the file COPYING. If not, write to
-;; the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
+;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
;;; Commentary:
(write ((r0 & ?\x3F) | ?\x80)))
(if (r0 < #x200000)
((write ((r0 >> 18) | ?\xF0))
- (write (((r0 >> 12) & ?\3F) | ?\x80))
+ (write (((r0 >> 12) & ?\x3F) | ?\x80))
(write (((r0 >> 6) & ?\x3F) | ?\x80))
(write ((r0 & ?\x3F) | ?\x80)))
(if (r0 < #x4000000)
(write (((r0 >> 18) & ?\x3F) | ?\x80))
(write (((r0 >> 12) & ?\x3F) | ?\x80))
(write (((r0 >> 6) & ?\x3F) | ?\x80))
- (write ((r0 & ?\x3f) | ?\x80)))
+ (write ((r0 & ?\x3F) | ?\x80)))
((write ((r0 >> 30) | ?\xFC))
(write (((r0 >> 24) & ?\x3F) | ?\x80))
(write (((r0 >> 18) & ?\x3F) | ?\x80))
(write (((r0 >> 12) & ?\x3F) | ?\x80))
(write (((r0 >> 6) & ?\x3F) | ?\x80))
- (write ((r0 & ?\x3f) | ?\x80))))))))))
+ (write ((r0 & ?\x3F) | ?\x80))))))))))
+
+(defun ucs-input-insert-char (char)
+ (insert char)
+ (move-overlay quail-overlay (overlay-start quail-overlay) (point)))
(defun ucs-input-method (key)
(if (or buffer-read-only
(and (/= key ?U) (/= key ?u)))
(list key)
(quail-setup-overlays nil)
- (let ((current-prefix-arg)
- (last-command-char key))
- (call-interactively 'self-insert-command))
+ (ucs-input-insert-char key)
(let ((modified-p (buffer-modified-p))
(buffer-undo-list t)
(input-method-function nil)
?b ?c ?d ?e ?f ?A ?B ?C ?D ?E ?F)))
(progn
(push key events)
- (let ((last-command-char key)
- (current-prefix-arg))
- (call-interactively 'self-insert-command)))
- (let ((last-command-char key)
- (current-prefix-arg))
- (condition-case nil
- (call-interactively (key-binding seq))))
+ (ucs-input-insert-char key))
(quail-delete-region)
(throw 'non-digit (append (reverse events)
(listify-key-sequence seq))))))
(let* ((n (string-to-number (apply 'string
(cdr (nreverse events)))
16))
- (c (decode-char 'ucs n))
- (status (make-vector 9 nil)))
+ (c (decode-char 'ucs n)))
(if c
(list c)
- (aset status 0 n)
- (string-to-list (ccl-execute-on-string
- 'utf-8-ccl-encode status ""))))))
+ ;; The intention of the following code is to insert
+ ;; a correct UTF-8 sequence by raw bytes, but
+ ;; currently it doesn't work.
+ ;; (let ((status (make-vector 9 nil)))
+ ;; (aset status 0 n)
+ ;; (string-to-list (ccl-execute-on-string
+ ;; 'utf-8-ccl-encode status "")))
+ (error "Character U+%04X is not yet supported" n)))))
(quail-delete-overlays)
(set-buffer-modified-p modified-p)
(run-hooks 'input-method-after-insert-chunk-hook)))))
(< (prefix-numeric-value arg) 0))
(unwind-protect
(progn
- (quail-hide-guidance-buf)
+ (quail-hide-guidance)
(quail-delete-overlays)
(setq describe-current-input-method-function nil))
(kill-local-variable 'input-method-function))
(quail-delete-overlays)
(if (eq (selected-window) (minibuffer-window))
(add-hook 'minibuffer-exit-hook 'quail-exit-from-minibuffer))
- (add-hook 'kill-buffer-hook 'quail-kill-guidance-buf nil t)
(set (make-local-variable 'input-method-function)
'ucs-input-method)))
(interactive)
(with-output-to-temp-buffer "*Help*"
(princ "\
-Input method: ucs (mode line indicator:U)
+Input method: ucs (mode line indicator:U+)
Input as Unicode: U<hex> or u<hex>, where <hex> is a four-digit hex number.")))
-(register-input-method "ucs" "UTF-8" 'ucs-input-activate "U+"
- "Unicode input as hex in the form Uxxxx.")
+;; The file ../leim-ext.el contains the following call.
+;; (register-input-method "ucs" "UTF-8" 'ucs-input-activate "U+"
+;; "Unicode input as hex in the form Uxxxx.")
(provide 'uni-input)
+;;; arch-tag: e0d91c7c-19a1-43d3-8f2b-28c0e031efaa
;;; uni-input.el ends here