Mercurial > emacs
changeset 22617:bcb4a7a67d13
(isearch-toggle-korean-input-method,
isearch-hangul-switch-symbol-ksc, isearch-hangul-switch-hanja):
New functions.
(korean-key-bindings): Renamed from exit-korean-environment-data.
Initialized apropriately.
(setup-korean-environment): Setup key bindings according to
korean-key-bindings.
(exit-korean-environment): Revert key bindings only if the current
key bindings is the same as what set by setup-korean-environment.
author | Kenichi Handa <handa@m17n.org> |
---|---|
date | Fri, 26 Jun 1998 03:29:58 +0000 |
parents | c493ce6a31e4 |
children | ed91f54d85b9 |
files | lisp/language/korea-util.el |
diffstat | 1 files changed, 52 insertions(+), 15 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/language/korea-util.el Fri Jun 26 03:29:15 1998 +0000 +++ b/lisp/language/korea-util.el Fri Jun 26 03:29:58 1998 +0000 @@ -57,8 +57,34 @@ (activate-input-method (concat "korean-hanja" default-korean-keyboard))))) -;; Information for exiting Korean environment. -(defvar exit-korean-environment-data nil) +;; The following three commands are set in isearch-mode-map. + +(defun isearch-toggle-korean-input-method () + (interactive) + (let ((overriding-terminal-local-map nil)) + (toggle-korean-input-method)) + (isearch-update)) + +(defun isearch-hangul-switch-symbol-ksc () + (interactive) + (let ((overriding-terminal-local-map nil)) + (quail-hangul-switch-symbol-ksc)) + (isearch-update)) + +(defun isearch-hangul-switch-hanja () + (interactive) + (let ((overriding-terminal-local-map nil)) + (quail-hangul-switch-hanja)) + (isearch-update)) + +;; Information for setting and exiting Korean environment. +(defvar korean-key-bindings + `((global [?\S- ] toggle-korean-input-method nil) + (global [C-f9] quail-hangul-switch-symbol-ksc nil) + (global [f9] quail-hangul-switch-hanja nil) + (,isearch-mode-map [?\S- ] isearch-toggle-korean-input-method nil) + (,isearch-mode-map [C-f9] isearch-hangul-switch-symbol-ksc nil) + (,isearch-mode-map [f9] isearch-hangul-switch-hanja nil))) ;;;###autoload (defun setup-korean-environment () @@ -69,24 +95,35 @@ (setq default-input-method "korean-hangul") - (let ((key-bindings '(([?\S- ] . toggle-korean-input-method) - ([C-f9] . quail-hangul-switch-symbol-ksc) - ([f9] . quail-hangul-switch-hanja)))) + (let ((key-bindings korean-key-bindings)) (while key-bindings - (let ((prev-binding (global-key-binding (car (car key-bindings))))) - (setq exit-korean-environment-data - (cons (cons (car (car key-bindings)) prev-binding) - exit-korean-environment-data))) - (global-set-key (car (car key-bindings)) (cdr (car key-bindings))) + (let* ((this (car key-bindings)) + (key (nth 1 this)) + (new-def (nth 2 this)) + old-def) + (if (eq (car this) 'global) + (progn + (setq old-def (global-key-binding key)) + (global-set-key key new-def)) + (setq old-def (lookup-key (car this) key)) + (define-key (car this) key new-def)) + (setcar (nthcdr 3 this) old-def)) (setq key-bindings (cdr key-bindings))))) (defun exit-korean-environment () "Exit Korean language environment." - (while exit-korean-environment-data - (global-set-key (car (car exit-korean-environment-data)) - (cdr (car exit-korean-environment-data))) - (setq exit-korean-environment-data - (cdr exit-korean-environment-data)))) + (let ((key-bindings korean-key-bindings)) + (while key-bindings + (let* ((this (car key-bindings)) + (key (nth 1 this)) + (new-def (nth 2 this)) + (old-def (nth 3 this))) + (if (eq (car this) 'global) + (if (eq (global-key-binding key) new-def) + (global-set-key key old-def)) + (if (eq (lookup-key (car this) key) new-def) + (define-key (car this) key old-def)))) + (setq key-bindings (cdr key-bindings))))) ;; (provide 'korea-util)