From a7a06a7ccfe0af1e134357678b8fa6cf87dff3b0 Mon Sep 17 00:00:00 2001 From: Lorry Tar Creator Date: Sat, 7 Feb 2009 16:32:56 +0000 Subject: anthy-9100h --- src-util/anthy-isearch.el | 102 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 src-util/anthy-isearch.el (limited to 'src-util/anthy-isearch.el') diff --git a/src-util/anthy-isearch.el b/src-util/anthy-isearch.el new file mode 100644 index 0000000..46d186f --- /dev/null +++ b/src-util/anthy-isearch.el @@ -0,0 +1,102 @@ +;; anthy-isearch.el -- Anthy + +;; Copyright (C) 2003 +;; Author: Yusuke Tabata + +;; DO NOT USE NOW. +;; + +;;; Commentary: +;; TOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO many things to be implemented. +;; most of the code is stolen from SKK. +;; for Emacs-21 + +(require 'anthy) + +(defvar anthy-isearch-mode-map nil) + +;; 検索対象の文字列とプリエディットを入れるバッファ +(defconst anthy-isearch-working-buffer " *anthy-isearch*") + +;; 検索対象の文字列を取得する +(defun anthy-isearch-search-string () + (with-current-buffer (get-buffer-create anthy-isearch-working-buffer) + (if (string-equal anthy-preedit "") + ;; プリエディットが無い時は + (buffer-string) + (save-restriction + (narrow-to-region (point-min) anthy-preedit-start) + (buffer-string))))) + +;; 検索対象の文字列 + 入力途中の文字列 +(defun anthy-isearch-search-message () + (with-current-buffer (get-buffer-create anthy-isearch-working-buffer) + (buffer-string))) + +(defun anthy-isearch-process-search-string (string msg) + (setq isearch-string "") + (setq isearch-message "") + (isearch-process-search-string string msg)) + +(defun anthy-isearch-raw-input () + (with-current-buffer (get-buffer-create anthy-isearch-working-buffer) + (self-insert-command 1))) + +(defun anthy-isearch-wrapper (&rest args) + (interactive "P") + (if current-input-method + (with-current-buffer (get-buffer-create anthy-isearch-working-buffer) + (anthy-insert)) + (anthy-isearch-raw-input)) + (anthy-isearch-process-search-string + (anthy-isearch-search-string) + (anthy-isearch-search-message))) + +(defun anthy-isearch-keyboard-quit (&rest args) + (interactive "P") + (let ((p nil)) + (with-current-buffer (get-buffer-create anthy-isearch-working-buffer) + (if (not (string-equal "" anthy-preedit)) + (setq p t))) + (if p + (anthy-isearch-wrapper) + (progn + (setq isearch-string "") + (setq isearch-message "") + (isearch-abort))))) + +(defun anthy-isearch-toggle-input-method (&rest args) + (interactive "P") + (isearch-toggle-input-method)) + +(defun anthy-isearch-setup-keymap (map) + (let ((i 0)) + (while (< i 127) + (define-key map (char-to-string i) 'anthy-isearch-wrapper) + (setq i (+ 1 i))) + (define-key map "\C-g" 'anthy-isearch-keyboard-quit) + (substitute-key-definition + 'isearch-toggle-input-method + 'anthy-isearch-toggle-input-method + map isearch-mode-map) + map)) + +(defun anthy-isearch-mode-setup () + ;; 最初はキーマップを準備する + (or (keymapp anthy-isearch-mode-map) + (setq anthy-isearch-mode-map + (anthy-isearch-setup-keymap (copy-keymap isearch-mode-map)))) + ;; + (setq overriding-terminal-local-map anthy-isearch-mode-map) + (with-current-buffer (get-buffer-create anthy-isearch-working-buffer) + (erase-buffer)) + ()) + +(defun anthy-isearch-mode-cleanup () + (setq overriding-terminal-local-map nil) + (kill-buffer anthy-isearch-working-buffer) + ()) + +(add-hook 'isearch-mode-hook 'anthy-isearch-mode-setup) +(add-hook 'isearch-mode-end-hook 'anthy-isearch-mode-cleanup) +(setq debug-on-error 't) -- cgit v1.2.1