--- sj3-egg.el.ORG Thu Aug 6 18:54:48 1998 +++ sj3-egg.el Mon Aug 17 17:18:26 1998 @@ -585,6 +585,8 @@ (defconst egg:*henkan-open* "|" "*変換の始点を示す文字列") (defconst egg:*henkan-close* "|" "*変換の終点を示す文字列") +(defvar egg:henkan-mode-in-use nil) + (defun egg:henkan-face-on () (if (overlayp egg:*henkan-overlay*) nil (setq egg:*henkan-overlay* (make-overlay 1 1 nil)) @@ -604,57 +606,54 @@ (defun henkan-region-internal (start end) "regionをかな漢字変換する。" - (setq egg:*kanji-kanabuff* (buffer-substring start end)) - (if overwrite-mode - (setq egg:*overwrite-mode-deleted-chars* - (if egg:*henkan-fence-mode* 0 - (length egg:*kanji-kanabuff*)))) - (setq *bunsetu-number* nil) - (let ((result (KKCP:henkan-begin egg:*kanji-kanabuff*))) - (if result - (progn - (mode-line-egg-mode-update henkan-mode-indicator) - (goto-char start) - (or (markerp egg:*region-start*) - (setq egg:*region-start* (make-marker))) - (or (markerp egg:*region-end*) - (setq egg:*region-end* (set-marker-type (make-marker) t))) - (if (null (marker-position egg:*region-start*)) + (if egg:henkan-mode-in-use nil + (setq egg:henkan-mode-in-use t) + (setq egg:*kanji-kanabuff* (buffer-substring start end)) + (if overwrite-mode + (setq egg:*overwrite-mode-deleted-chars* + (if egg:*henkan-fence-mode* 0 + (length egg:*kanji-kanabuff*)))) + (setq *bunsetu-number* nil) + (let ((result (KKCP:henkan-begin egg:*kanji-kanabuff*))) + (if result + (progn + (mode-line-egg-mode-update henkan-mode-indicator) + (goto-char start) + (or (markerp egg:*region-start*) + (setq egg:*region-start* (make-marker))) + (or (markerp egg:*region-end*) + (setq egg:*region-end* (set-marker-type (make-marker) t))) + (if (null (marker-position egg:*region-start*)) + (progn + (and (boundp 'disable-undo) (setq disable-undo t)) + (goto-char start) + (delete-region start end) + (insert egg:*henkan-open*) + (set-marker egg:*region-start* (point)) + (insert egg:*henkan-close*) + (set-marker egg:*region-end* egg:*region-start*) + (egg:henkan-face-on) + (goto-char egg:*region-start*) + ) (progn - ;;;(setq egg:*global-map-backup* (current-global-map)) - (setq egg:*local-map-backup* (current-local-map)) - (and (boundp 'disable-undo) (setq disable-undo t)) - (goto-char start) - (delete-region start end) + (egg:fence-face-off) + (delete-region (- egg:*region-start* (length egg:*fence-open*)) + egg:*region-start*) + (delete-region egg:*region-end* (+ egg:*region-end* (length egg:*fence-close*))) + (goto-char egg:*region-start*) (insert egg:*henkan-open*) (set-marker egg:*region-start* (point)) - (insert egg:*henkan-close*) - (set-marker egg:*region-end* egg:*region-start*) - (egg:henkan-face-on) - (goto-char egg:*region-start*) - ) - (progn - (egg:fence-face-off) - (delete-region (- egg:*region-start* (length egg:*fence-open*)) - egg:*region-start*) - (delete-region egg:*region-end* (+ egg:*region-end* (length egg:*fence-close*))) - (goto-char egg:*region-start*) - (insert egg:*henkan-open*) - (set-marker egg:*region-start* (point)) - (goto-char egg:*region-end*) - (let ((point (point))) - (insert egg:*henkan-close*) - (set-marker egg:*region-end* point)) - (goto-char start) - (delete-region start end) - (egg:henkan-face-on)) - ) - (henkan-insert-kouho 0) - (henkan-goto-bunsetu 0) - ;;;(use-global-map henkan-mode-map) - ;;;(use-local-map nil) - (use-local-map henkan-mode-map) - ))) + (goto-char egg:*region-end*) + (let ((point (point))) + (insert egg:*henkan-close*) + (set-marker egg:*region-end* point)) + (goto-char start) + (delete-region start end) + (egg:henkan-face-on)) + ) + (henkan-insert-kouho 0) + (henkan-goto-bunsetu 0) + )))) ) (defun henkan-paragraph () @@ -733,6 +732,7 @@ (defun henkan-kakutei () (interactive) + (setq egg:henkan-mode-in-use nil) (egg:bunsetu-face-off *bunsetu-number*) (egg:henkan-face-off) (delete-region (- egg:*region-start* (length egg:*henkan-open*)) @@ -754,6 +754,7 @@ (defun henkan-kakutei-before-point () (interactive) + (setq egg:henkan-mode-in-use nil) (egg:bunsetu-face-off *bunsetu-number*) (egg:henkan-face-off) (delete-region egg:*region-start* egg:*region-end*) @@ -788,9 +789,6 @@ ;;;(set-marker egg:*region-end* (point)) (goto-char point)) (setq egg:*mode-on* t) - ;;;(use-global-map fence-mode-map) - ;;;(use-local-map nil) - (use-local-map fence-mode-map) (egg:mode-line-display)) (defun egg:set-bunsetu-face (no face switch) @@ -923,6 +921,7 @@ (defun henkan-quit () (interactive) + (setq egg:henkan-mode-in-use nil) (egg:bunsetu-face-off *bunsetu-number*) (egg:henkan-face-off) (delete-region (- egg:*region-start* (length egg:*henkan-open*)) @@ -941,9 +940,6 @@ (egg:fence-face-on) (KKCP:henkan-quit) (setq egg:*mode-on* t) - ;;;(use-global-map fence-mode-map) - ;;;(use-local-map nil) - (use-local-map fence-mode-map) (egg:mode-line-display) ) @@ -972,9 +968,11 @@ (defvar henkan-mode-map (make-keymap)) - (defvar henkan-mode-esc-map (make-keymap)) +(define-key henkan-mode-map [t] 'undefined) +(define-key henkan-mode-esc-map [t] 'undefined) + (let ((ch 0)) (while (<= ch 127) (define-key henkan-mode-map (make-string 1 ch) 'undefined) @@ -987,6 +985,7 @@ (setq ch (1+ ch)))) (define-key henkan-mode-map "\e" henkan-mode-esc-map) +(define-key henkan-mode-map [escape] henkan-mode-esc-map) (define-key henkan-mode-map "\ei" 'undefined) ;; henkan-inspect-bunsetu ;; not support for sj3 (define-key henkan-mode-map "\es" 'henkan-select-kouho) @@ -996,33 +995,38 @@ (define-key henkan-mode-map "\e>" 'henkan-saichou-bunsetu) (define-key henkan-mode-map " " 'henkan-next-kouho) (define-key henkan-mode-map "\C-@" 'henkan-next-kouho) +(define-key henkan-mode-map [?\C-\ ] 'henkan-next-kouho) (define-key henkan-mode-map "\C-a" 'henkan-first-bunsetu) (define-key henkan-mode-map "\C-b" 'henkan-backward-bunsetu) (define-key henkan-mode-map "\C-c" 'henkan-quit) -(define-key henkan-mode-map "\C-d" 'undefined) (define-key henkan-mode-map "\C-e" 'henkan-last-bunsetu) (define-key henkan-mode-map "\C-f" 'henkan-forward-bunsetu) (define-key henkan-mode-map "\C-g" 'henkan-quit) (define-key henkan-mode-map "\C-h" 'help-command) (define-key henkan-mode-map "\C-i" 'henkan-bunsetu-chijime) -(define-key henkan-mode-map "\C-j" 'undefined) (define-key henkan-mode-map "\C-k" 'henkan-kakutei-before-point) (define-key henkan-mode-map "\C-l" 'henkan-kakutei) (define-key henkan-mode-map "\C-m" 'henkan-kakutei) +(define-key henkan-mode-map [return] 'henkan-kakutei) (define-key henkan-mode-map "\C-n" 'henkan-next-kouho) (define-key henkan-mode-map "\C-o" 'henkan-bunsetu-nobasi) (define-key henkan-mode-map "\C-p" 'henkan-previous-kouho) -(define-key henkan-mode-map "\C-q" 'undefined) -(define-key henkan-mode-map "\C-r" 'undefined) -(define-key henkan-mode-map "\C-s" 'undefined) -(define-key henkan-mode-map "\C-t" 'undefined) -(define-key henkan-mode-map "\C-u" 'undefined) -(define-key henkan-mode-map "\C-v" 'undefined) -(define-key henkan-mode-map "\C-w" 'undefined) -(define-key henkan-mode-map "\C-x" 'undefined) -(define-key henkan-mode-map "\C-y" 'undefined) -(define-key henkan-mode-map "\C-z" 'undefined) (define-key henkan-mode-map "\177" 'henkan-quit) +(define-key henkan-mode-map [delete] 'henkan-quit) +(define-key henkan-mode-map [backspace] 'henkan-quit) +(define-key henkan-mode-map [right] 'henkan-forward-bunsetu) +(define-key henkan-mode-map [left] 'henkan-backward-bunsetu) +(define-key henkan-mode-map [down] 'henkan-next-kouho) +(define-key henkan-mode-map [up] 'henkan-previous-kouho) +(define-key henkan-mode-map [kp-right] 'henkan-forward-bunsetu) +(define-key henkan-mode-map [kp-left] 'henkan-backward-bunsetu) +(define-key henkan-mode-map [kp-down] 'henkan-next-kouho) +(define-key henkan-mode-map [kp-up] 'henkan-previous-kouho) + +(or (assq 'egg:henkan-mode-in-use minor-mode-map-alist) + (setq minor-mode-map-alist + (cons (cons 'egg:henkan-mode-in-use henkan-mode-map) + minor-mode-map-alist))) (defun henkan-help-command () "Display documentation fo henkan-mode."