diff options
author | Glenn Morris <rgm@gnu.org> | 2013-11-26 22:15:06 -0800 |
---|---|---|
committer | Glenn Morris <rgm@gnu.org> | 2013-11-26 22:15:06 -0800 |
commit | cb6c95a394d9a9d2f068bf8ee240f2d2297867d1 (patch) | |
tree | 6da24e3ad26db4ab42d800dd78feea2eee3d79d9 /lisp/leim/quail/uni-input.el | |
parent | 4cbac8e94b68297189524f2db456c776bda4ed69 (diff) | |
download | emacs-cb6c95a394d9a9d2f068bf8ee240f2d2297867d1.tar.gz emacs-cb6c95a394d9a9d2f068bf8ee240f2d2297867d1.tar.bz2 emacs-cb6c95a394d9a9d2f068bf8ee240f2d2297867d1.zip |
Move runtime leim lisp files to lisp/leim directory
This allows us to reuse much of the lisp build and installation machinery,
rather than duplicating it.
* Makefile.in (abs_builddir, leimdir): Remove.
(buildlisppath, SUBDIR, COPYDIR, COPYDESTS): No more leim directory.
(epaths-force-w32): No longer set BLD.
(leim): Remove.
(install-arch-indep): No longer run or install leim.
(mostlyclean, clean): No longer run leim rule.
(bootstrap-clean): Change leim target.
(maintainer-clean): Add leim.
(check-declare): Remove leim.
* README: Update for leim changes.
* configure.ac (leimdir): Remove.
(standardlisppath): No more leimdir.
* make-dist: Update for files from leim/ now being in lisp/leim/.
* doc/lispref/loading.texi (Library Search):
* doc/lispref/os.texi (Startup Summary): No more leim directory.
* leim/Makefile.in (leimdir): New variable.
(TIT_GB, TIT_BIG5, MISC, changed.tit, changed.misc)
(${leimdir}/leim-list.el, ${leimdir}/ja-dic/ja-dic.el):
Generate in $leimdir.
(all): Remove compilation, add ja-dic.
(leim-list.el): Now PHONY.
(setwins, compile-targets, compile-main, clean, mostlyclean)
(extraclean): Remove.
(bootstrap-clean): Delete all generated files.
* leim/README: Update for moved leim/ directory.
* leim/leim-ext.el (ucs-input-activate, hangul-input-method-activate):
Remove manual autoloads; now in loaddefs.el.
Disable byte-compile, version-control, autoloads in the output.
* lisp/Makefile.in (setwins_for_subdirs): Skip leim/ directory.
(compile-main): Depend on lisp/leim rule.
(leim): New rule.
* lisp/loadup.el: Move leim-list.el to leim/ subdirectory.
* lisp/startup.el (normal-top-level): No more leim directory.
* lisp/international/ja-dic-cnv.el (skkdic-convert):
Disable version-control and autoloads in output files.
* lisp/international/titdic-cnv.el (titdic-convert, miscdic-convert):
Disable version-control and autoloads in output files.
* lisp/leim/quail: Move here from ../leim.
* lisp/leim/quail/hangul.el (hangul-input-method-activate):
Add autoload cookie.
(generated-autoload-load-name): Set file-local value.
* lisp/leim/quail/uni-input.el (ucs-input-activate): Add autoload cookie.
(generated-autoload-load-name): Set file-local value.
* nt/README.W32:
* nt/addpm.c (env_vars):
* nt/epaths.nt (PATH_LOADSEARCH, PATH_DUMPLOADSEARCH):
* nt/paths.h (PATH_LOADSEARCH): No more leim directory.
* src/Makefile.in (leimdir): Now in lisp source directory.
($(leimdir)/leim-list.el): Just use ../leim .
* src/epaths.in (PATH_DUMPLOADSEARCH):
* src/lread.c (load_path_default):
* src/nsterm.m (ns_load_path): No more leim directory.
* .bzrignore: Update for relocated leim files.
Diffstat (limited to 'lisp/leim/quail/uni-input.el')
-rw-r--r-- | lisp/leim/quail/uni-input.el | 138 |
1 files changed, 138 insertions, 0 deletions
diff --git a/lisp/leim/quail/uni-input.el b/lisp/leim/quail/uni-input.el new file mode 100644 index 00000000000..0ec4f8581ef --- /dev/null +++ b/lisp/leim/quail/uni-input.el @@ -0,0 +1,138 @@ +;;; uni-input.el --- Hex Unicode input method + +;; Copyright (C) 2001-2013 Free Software Foundation, Inc. +;; Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 +;; 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. + +;; GNU Emacs 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 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. + +;;; Commentary: + +;; Provides an input method for entering characters by hex unicode in +;; the form `uxxxx', similarly to the Yudit editor. + +;; This is not really a Quail method, but uses some Quail functions. +;; There is probably A Better Way. + +;; You can get a similar effect by using C-q with +;; `read-quoted-char-radix' set to 16. + +;; Note that this only allows you to enter BMP values unless someone +;; extends it to use variable numbers of digits. + +;;; Code: + +(require 'quail) + +(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) + (ucs-input-insert-char key) + (let ((modified-p (buffer-modified-p)) + (buffer-undo-list t) + (input-method-function nil) + (echo-keystrokes 0) + (help-char nil) + (events (list key)) + (str " ")) + (unwind-protect + (catch 'non-digit + (progn + (dotimes (i 4) + (let ((seq (read-key-sequence nil)) + key) + (if (and (stringp seq) + (= 1 (length seq)) + (setq key (aref seq 0)) + (memq key '(?0 ?1 ?2 ?3 ?4 ?5 ?6 ?7 ?8 ?9 ?a + ?b ?c ?d ?e ?f ?A ?B ?C ?D ?E ?F))) + (progn + (push key events) + (ucs-input-insert-char key)) + (quail-delete-region) + (throw 'non-digit (append (reverse events) + (listify-key-sequence seq)))))) + (quail-delete-region) + (let ((n (string-to-number (apply 'string + (cdr (nreverse events))) + 16))) + (if (characterp n) + (list n))))) + (quail-delete-overlays) + (set-buffer-modified-p modified-p) + (run-hooks 'input-method-after-insert-chunk-hook))))) + +;;;###autoload +(defun ucs-input-activate (&optional arg) + "Activate UCS input method. +With ARG, activate UCS input method if and only if ARG is positive. + +While this input method is active, the variable +`input-method-function' is bound to the function `ucs-input-method'." + (if (and arg + (< (prefix-numeric-value arg) 0)) + (unwind-protect + (progn + (quail-hide-guidance) + (quail-delete-overlays) + (setq describe-current-input-method-function nil)) + (kill-local-variable 'input-method-function)) + (setq deactivate-current-input-method-function 'ucs-input-deactivate) + (setq describe-current-input-method-function 'ucs-input-help) + (quail-delete-overlays) + (if (eq (selected-window) (minibuffer-window)) + (add-hook 'minibuffer-exit-hook 'quail-exit-from-minibuffer)) + (set (make-local-variable 'input-method-function) + 'ucs-input-method))) + +(defun ucs-input-deactivate () + "Deactivate UCS input method." + (interactive) + (ucs-input-activate -1)) + +(define-obsolete-function-alias + 'ucs-input-inactivate + 'ucs-input-deactivate "24.3") + +(defun ucs-input-help () + (interactive) + (with-output-to-temp-buffer "*Help*" + (princ "\ +Input method: ucs (mode line indicator:U+) + +Input as Unicode: U<hex> or u<hex>, where <hex> is a four-digit hex number."))) + +;; The file leim-list.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) + +;; Local Variables: +;; generated-autoload-load-name: "quail/uni-input" +;; End: + +;;; uni-input.el ends here |