Mercurial > hg > xemacs-beta
comparison lisp/egg/egg-wnn.el @ 98:0d2f883870bc r20-1b1
Import from CVS: tag r20-1b1
author | cvs |
---|---|
date | Mon, 13 Aug 2007 09:13:56 +0200 |
parents | 131b0175ea99 |
children | 8619ce7e4c50 |
comparison
equal
deleted
inserted
replaced
97:498bf5da1c90 | 98:0d2f883870bc |
---|---|
33 ;;; Wnn V4 $B$N(B jl $B%i%$%V%i%j$r;H$$$^$9!#(B | 33 ;;; Wnn V4 $B$N(B jl $B%i%$%V%i%j$r;H$$$^$9!#(B |
34 ;;; $B%i%$%V%i%j$H$N%$%s%?!<%U%'!<%9$O(B wnnfns.c $B$GDj5A$5$l$F$$$^$9!#(B | 34 ;;; $B%i%$%V%i%j$H$N%$%s%?!<%U%'!<%9$O(B wnnfns.c $B$GDj5A$5$l$F$$$^$9!#(B |
35 | 35 |
36 ;;; $B=$@5%a%b(B | 36 ;;; $B=$@5%a%b(B |
37 | 37 |
38 ;;; 97/2/4 Modified for use with XEmacs by J.Hein <jhod@po.iijnet.or.jp> | |
39 ;;; (mostly changes regarding extents and markers) | |
38 ;;; 94/2/3 kWnn support by H.Kuribayashi | 40 ;;; 94/2/3 kWnn support by H.Kuribayashi |
39 ;;; 93/11/24 henkan-select-kouho: bug fixed | 41 ;;; 93/11/24 henkan-select-kouho: bug fixed |
40 ;;; 93/7/22 hinsi-from-menu updated | 42 ;;; 93/7/22 hinsi-from-menu updated |
41 ;;; 93/5/12 remove-regexp-in-string | 43 ;;; 93/5/12 remove-regexp-in-string |
42 ;;; fixed by Shuji NARAZAKI <narazaki@csce.kyushu-u.ac.jp> | 44 ;;; fixed by Shuji NARAZAKI <narazaki@csce.kyushu-u.ac.jp> |
90 (make-variable-buffer-local 'wnn-server-type) | 92 (make-variable-buffer-local 'wnn-server-type) |
91 (make-variable-buffer-local 'cwnn-zhuyin) | 93 (make-variable-buffer-local 'cwnn-zhuyin) |
92 | 94 |
93 (defvar egg:*sho-bunsetu-face* nil "*$B>.J8@aI=<($KMQ$$$k(B face $B$^$?$O(B nil") | 95 (defvar egg:*sho-bunsetu-face* nil "*$B>.J8@aI=<($KMQ$$$k(B face $B$^$?$O(B nil") |
94 (make-variable-buffer-local | 96 (make-variable-buffer-local |
95 (defvar egg:*sho-bunsetu-overlay* nil "$B>.J8@a$NI=<($K;H$&(B overlay")) | 97 (defvar egg:*sho-bunsetu-extent* nil "$B>.J8@a$NI=<($K;H$&(B extent")) |
96 | 98 |
97 (defvar egg:*sho-bunsetu-kugiri* "-" "*$B>.J8@a$N6h@Z$j$r<($9J8;zNs(B") | 99 (defvar egg:*sho-bunsetu-kugiri* "-" "*$B>.J8@a$N6h@Z$j$r<($9J8;zNs(B") |
98 | 100 |
99 (defvar egg:*dai-bunsetu-face* nil "*$BBgJ8@aI=<($KMQ$$$k(B face $B$^$?$O(B nil") | 101 (defvar egg:*dai-bunsetu-face* nil "*$BBgJ8@aI=<($KMQ$$$k(B face $B$^$?$O(B nil") |
100 (make-variable-buffer-local | 102 (make-variable-buffer-local |
101 (defvar egg:*dai-bunsetu-overlay* nil "$BBgJ8@a$NI=<($K;H$&(B overlay")) | 103 (defvar egg:*dai-bunsetu-extent* nil "$BBgJ8@a$NI=<($K;H$&(B extent")) |
102 | 104 |
103 (defvar egg:*dai-bunsetu-kugiri* " " "*$BBgJ8@a$N6h@Z$j$r<($9J8;zNs(B") | 105 (defvar egg:*dai-bunsetu-kugiri* " " "*$BBgJ8@a$N6h@Z$j$r<($9J8;zNs(B") |
104 | 106 |
105 (defvar egg:*henkan-face* nil "*$BJQ49NN0h$rI=<($9$k(B face $B$^$?$O(B nil") | 107 (defvar egg:*henkan-face* nil "*$BJQ49NN0h$rI=<($9$k(B face $B$^$?$O(B nil") |
106 (make-variable-buffer-local | 108 (make-variable-buffer-local |
107 (defvar egg:*henkan-overlay* nil "$BJQ49NN0h$NI=<($K;H$&(B overlay")) | 109 (defvar egg:*henkan-extent* nil "$BJQ49NN0h$NI=<($K;H$&(B extent")) |
108 | 110 |
109 (defvar egg:*henkan-open* "|" "*$BJQ49$N;OE@$r<($9J8;zNs(B") | 111 (defvar egg:*henkan-open* "|" "*$BJQ49$N;OE@$r<($9J8;zNs(B") |
110 (defvar egg:*henkan-close* "|" "*$BJQ49$N=*E@$r<($9J8;zNs(B") | 112 (defvar egg:*henkan-close* "|" "*$BJQ49$N=*E@$r<($9J8;zNs(B") |
111 | 113 |
112 (defvar egg:henkan-mode-in-use nil) | 114 (defvar egg:henkan-mode-in-use nil) |
451 (defun set-wnn-fuzokugo (ffile) | 453 (defun set-wnn-fuzokugo (ffile) |
452 ; (open-wnn-if-disconnected) | 454 ; (open-wnn-if-disconnected) |
453 (if (null (wnn-server-fuzokugo-set (substitute-in-file-name ffile))) | 455 (if (null (wnn-server-fuzokugo-set (substitute-in-file-name ffile))) |
454 (egg:error (wnn-server-get-msg)))) | 456 (egg:error (wnn-server-get-msg)))) |
455 | 457 |
458 ;; ###jhod Currently very broken. Needs to be rewritten for the new | |
459 ;; wnn-server-set-param | |
456 (defun set-wnn-param (&rest param) | 460 (defun set-wnn-param (&rest param) |
457 (interactive) | 461 (interactive) |
458 ; (open-wnn-if-disconnected) | 462 ; (open-wnn-if-disconnected) |
459 (let ((current-param (wnn-server-get-param)) | 463 (let ((current-param (wnn-server-get-param)) |
460 (new-param) | 464 (new-param) |
774 ;;;; | 778 ;;;; |
775 ;;;; User entry : henkan-region, henkan-paragraph, henkan-sentence | 779 ;;;; User entry : henkan-region, henkan-paragraph, henkan-sentence |
776 ;;;; | 780 ;;;; |
777 | 781 |
778 (defun egg:henkan-face-on () | 782 (defun egg:henkan-face-on () |
779 ;; Make an overlay if henkan overlay does not exist. | 783 ;; Make an extent if henkan extent does not exist. |
780 ;; Move henkan overlay to henkan region. | 784 ;; Move henkan extent to henkan region. |
781 (if egg:*henkan-face* | 785 (if egg:*henkan-face* |
782 (progn | 786 (progn |
783 (if (overlayp egg:*henkan-overlay*) | 787 (if (extentp egg:*henkan-extent*) |
784 nil | 788 nil |
785 (setq egg:*henkan-overlay* (make-overlay 1 1 nil t)) | 789 ;; ###jhod this was a 'point-type' overlay |
786 (overlay-put egg:*henkan-overlay* 'face egg:*henkan-face*)) | 790 (setq egg:*henkan-extent* (make-extent 1 1)) |
787 (move-overlay egg:*henkan-overlay* egg:*region-start* egg:*region-end*)))) | 791 (set-extent-property egg:*henkan-extent* 'face egg:*henkan-face*)) |
792 (set-extent-endpoints egg:*henkan-extent* egg:*region-start* egg:*region-end*)))) | |
788 | 793 |
789 (defun egg:henkan-face-off () | 794 (defun egg:henkan-face-off () |
790 ;; detach henkan overlay from the current buffer. | 795 ;; detach henkan extent from the current buffer. |
791 (and egg:*henkan-face* | 796 (and egg:*henkan-face* |
792 (overlayp egg:*henkan-overlay*) | 797 (extentp egg:*henkan-extent*) |
793 (delete-overlay egg:*henkan-overlay*) )) | 798 (delete-extent egg:*henkan-extent*) )) |
794 | 799 |
795 | 800 |
796 (defun henkan-region (start end) | 801 (defun henkan-region (start end) |
797 "Convert a text in the region between START and END from kana to kanji." | 802 "Convert a text in the region between START and END from kana to kanji." |
798 (interactive "r") | 803 (interactive "r") |
835 (mode-line-egg-mode-update (egg:msg-get 'henkan-mode-indicator)) | 840 (mode-line-egg-mode-update (egg:msg-get 'henkan-mode-indicator)) |
836 (goto-char start) | 841 (goto-char start) |
837 (or (markerp egg:*region-start*) | 842 (or (markerp egg:*region-start*) |
838 (setq egg:*region-start* (make-marker))) | 843 (setq egg:*region-start* (make-marker))) |
839 (or (markerp egg:*region-end*) | 844 (or (markerp egg:*region-end*) |
840 (setq egg:*region-end* (set-marker-type (make-marker) t))) | 845 (setq egg:*region-end* (set-marker-insertion-type (make-marker) t))) |
841 (if (null (marker-position egg:*region-start*)) | 846 (if (null (marker-position egg:*region-start*)) |
842 (progn | 847 (progn |
843 ;;;(setq egg:*global-map-backup* (current-global-map)) | 848 ;;;(setq egg:*global-map-backup* (current-global-map)) |
844 (setq egg:*local-map-backup* (current-local-map)) | 849 (setq egg:*local-map-backup* (current-local-map)) |
845 (and (boundp 'disable-undo) (setq disable-undo t)) | 850 (and (boundp 'disable-undo) (setq disable-undo t)) |
972 (egg:error "Wrong type of arguments(kugiri-sho): %s" kugiri-sho)) | 977 (egg:error "Wrong type of arguments(kugiri-sho): %s" kugiri-sho)) |
973 | 978 |
974 (if (or (null henkan-face) (memq henkan-face (face-list))) | 979 (if (or (null henkan-face) (memq henkan-face (face-list))) |
975 (progn | 980 (progn |
976 (setq egg:*henkan-face* henkan-face) | 981 (setq egg:*henkan-face* henkan-face) |
977 (if (overlayp egg:*henkan-overlay*) | 982 (if (extentp egg:*henkan-extent*) |
978 (overlay-put egg:*henkan-overlay* 'face egg:*henkan-face*))) | 983 (set-extent-property egg:*henkan-extent* 'face egg:*henkan-face*))) |
979 (egg:error "Wrong type of arguments(henkan-face): %s" henkan-face)) | 984 (egg:error "Wrong type of arguments(henkan-face): %s" henkan-face)) |
980 | 985 |
981 (if (or (null dai-bunsetu-face) (memq dai-bunsetu-face (face-list))) | 986 (if (or (null dai-bunsetu-face) (memq dai-bunsetu-face (face-list))) |
982 (progn | 987 (progn |
983 (setq egg:*dai-bunsetu-face* dai-bunsetu-face) | 988 (setq egg:*dai-bunsetu-face* dai-bunsetu-face) |
984 (if (overlayp egg:*dai-bunsetu-overlay*) | 989 (if (extentp egg:*dai-bunsetu-extent*) |
985 (overlay-put egg:*dai-bunsetu-overlay* 'face egg:*dai-bunsetu-face*))) | 990 (set-extent-property egg:*dai-bunsetu-extent* 'face egg:*dai-bunsetu-face*))) |
986 (egg:error "Wrong type of arguments(dai-bunsetu-face): %s" dai-bunsetu-face)) | 991 (egg:error "Wrong type of arguments(dai-bunsetu-face): %s" dai-bunsetu-face)) |
987 | 992 |
988 (if (or (null sho-bunsetu-face) (memq sho-bunsetu-face (face-list))) | 993 (if (or (null sho-bunsetu-face) (memq sho-bunsetu-face (face-list))) |
989 (progn | 994 (progn |
990 (setq egg:*sho-bunsetu-face* sho-bunsetu-face) | 995 (setq egg:*sho-bunsetu-face* sho-bunsetu-face) |
991 (if (overlayp egg:*sho-bunsetu-overlay*) | 996 (if (extentp egg:*sho-bunsetu-extent*) |
992 (overlay-put egg:*sho-bunsetu-overlay* 'face egg:*sho-bunsetu-face*))) | 997 (set-extent-property egg:*sho-bunsetu-extent* 'face egg:*sho-bunsetu-face*))) |
993 (egg:error "Wrong type of arguments(sho-bunsetu-face): %s" sho-bunsetu-face)) | 998 (egg:error "Wrong type of arguments(sho-bunsetu-face): %s" sho-bunsetu-face)) |
994 ) | 999 ) |
995 | 1000 |
996 (defun henkan-insert-kouho (start number) | 1001 (defun henkan-insert-kouho (start number) |
997 (let ((i start)) | 1002 (let ((i start)) |
1121 (setq finished t)) | 1126 (setq finished t)) |
1122 (or finished (setq disable-undo nil) (setq egg:henkan-mode-in-use nil))))) | 1127 (or finished (setq disable-undo nil) (setq egg:henkan-mode-in-use nil))))) |
1123 ) | 1128 ) |
1124 | 1129 |
1125 (defun egg:bunsetu-face-on () | 1130 (defun egg:bunsetu-face-on () |
1126 ;; make dai-bunsetu overlay and sho-bunsetu overlay if they do not exist. | 1131 ;; make dai-bunsetu extent and sho-bunsetu extent if they do not exist. |
1127 ;; put thier faces to overlays and move them to each bunsetu. | 1132 ;; put thier faces to extents and move them to each bunsetu. |
1128 (let* ((bunsetu-begin *bunsetu-number*) | 1133 (let* ((bunsetu-begin *bunsetu-number*) |
1129 (bunsetu-end) | 1134 (bunsetu-end) |
1130 (bunsetu-suu (wnn-server-bunsetu-suu))) | 1135 (bunsetu-suu (wnn-server-bunsetu-suu))) |
1131 ; dai bunsetu | 1136 ; dai bunsetu |
1132 (if egg:*dai-bunsetu-face* | 1137 (if egg:*dai-bunsetu-face* |
1133 (progn | 1138 (progn |
1134 (if (overlayp egg:*dai-bunsetu-overlay*) | 1139 (if (extentp egg:*dai-bunsetu-extent*) |
1135 nil | 1140 nil |
1136 (setq egg:*dai-bunsetu-overlay* (make-overlay 1 1)) | 1141 (setq egg:*dai-bunsetu-extent* (make-extent 1 1)) |
1137 (overlay-put egg:*dai-bunsetu-overlay* 'face egg:*dai-bunsetu-face*)) | 1142 (set-extent-property egg:*dai-bunsetu-extent* 'face egg:*dai-bunsetu-face*)) |
1138 (setq bunsetu-end (wnn-server-dai-end *bunsetu-number*)) | 1143 (setq bunsetu-end (wnn-server-dai-end *bunsetu-number*)) |
1139 (while (not (wnn-server-dai-top bunsetu-begin)) | 1144 (while (not (wnn-server-dai-top bunsetu-begin)) |
1140 (setq bunsetu-begin (1- bunsetu-begin))) | 1145 (setq bunsetu-begin (1- bunsetu-begin))) |
1141 (move-overlay egg:*dai-bunsetu-overlay* | 1146 (set-extent-endpoints egg:*dai-bunsetu-extent* |
1142 (bunsetu-position bunsetu-begin) | 1147 (bunsetu-position bunsetu-begin) |
1143 (+ (bunsetu-position (1- bunsetu-end)) | 1148 (+ (bunsetu-position (1- bunsetu-end)) |
1144 (length (bunsetu-kanji (1- bunsetu-end))))))) | 1149 (length (bunsetu-kanji (1- bunsetu-end))))))) |
1145 ; sho bunsetu | 1150 ; sho bunsetu |
1146 (if egg:*sho-bunsetu-face* | 1151 (if egg:*sho-bunsetu-face* |
1147 (progn | 1152 (progn |
1148 (if (overlayp egg:*sho-bunsetu-overlay*) | 1153 (if (extentp egg:*sho-bunsetu-extent*) |
1149 nil | 1154 nil |
1150 (setq egg:*sho-bunsetu-overlay* (make-overlay 1 1)) | 1155 (setq egg:*sho-bunsetu-extent* (make-extent 1 1)) |
1151 (overlay-put egg:*sho-bunsetu-overlay* 'face egg:*sho-bunsetu-face*)) | 1156 (set-extent-property egg:*sho-bunsetu-extent* 'face egg:*sho-bunsetu-face*)) |
1152 (setq bunsetu-end (1+ *bunsetu-number*)) | 1157 (setq bunsetu-end (1+ *bunsetu-number*)) |
1153 (move-overlay egg:*sho-bunsetu-overlay* | 1158 (set-extent-endpoints egg:*sho-bunsetu-extent* |
1154 (let ((point (bunsetu-position *bunsetu-number*))) | 1159 (let ((point (bunsetu-position *bunsetu-number*))) |
1160 ;; ###jhod Removed the char-boundary stuff, as I *THINK* we can only move by whole chars... | |
1161 ;; (if (eq egg:*sho-bunsetu-face* 'modeline) | |
1162 ;; (+ point (1+ (char-boundary-p point))) | |
1163 ;; point)) | |
1155 (if (eq egg:*sho-bunsetu-face* 'modeline) | 1164 (if (eq egg:*sho-bunsetu-face* 'modeline) |
1156 (+ point (1+ (char-boundary-p point))) | 1165 (+ point 1) |
1157 point)) | 1166 point)) |
1167 | |
1158 (+ (bunsetu-position (1- bunsetu-end)) | 1168 (+ (bunsetu-position (1- bunsetu-end)) |
1159 (length (bunsetu-kanji (1- bunsetu-end))))))))) | 1169 (length (bunsetu-kanji (1- bunsetu-end))))))))) |
1160 | 1170 |
1161 (defun egg:bunsetu-face-off () | 1171 (defun egg:bunsetu-face-off () |
1162 (and egg:*dai-bunsetu-face* | 1172 (and egg:*dai-bunsetu-face* |
1163 (overlayp egg:*dai-bunsetu-overlay*) | 1173 (extentp egg:*dai-bunsetu-extent*) |
1164 (delete-overlay egg:*dai-bunsetu-overlay*)) | 1174 (delete-extent egg:*dai-bunsetu-extent*)) |
1165 (and egg:*sho-bunsetu-face* | 1175 (and egg:*sho-bunsetu-face* |
1166 (overlayp egg:*sho-bunsetu-overlay*) | 1176 (extentp egg:*sho-bunsetu-extent*) |
1167 (delete-overlay egg:*sho-bunsetu-overlay*)) | 1177 (delete-extent egg:*sho-bunsetu-extent*)) |
1168 ) | 1178 ) |
1169 | 1179 |
1170 (defun henkan-goto-bunsetu (number) | 1180 (defun henkan-goto-bunsetu (number) |
1171 (setq *bunsetu-number* | 1181 (setq *bunsetu-number* |
1172 (check-number-range number 0 (1- (wnn-server-bunsetu-suu)))) | 1182 (check-number-range number 0 (1- (wnn-server-bunsetu-suu)))) |
1173 (goto-char (bunsetu-position *bunsetu-number*)) | 1183 (goto-char (bunsetu-position *bunsetu-number*)) |
1174 ; (egg:move-bunsetu-overlay) | 1184 ; (egg:move-bunsetu-extent) |
1175 (egg:bunsetu-face-on) | 1185 (egg:bunsetu-face-on) |
1176 ) | 1186 ) |
1177 | 1187 |
1178 (defun henkan-forward-bunsetu () | 1188 (defun henkan-forward-bunsetu () |
1179 (interactive) | 1189 (interactive) |
1257 (delete-region | 1267 (delete-region |
1258 (bunsetu-position min) egg:*region-end*) | 1268 (bunsetu-position min) egg:*region-end*) |
1259 (goto-char (bunsetu-position min)) | 1269 (goto-char (bunsetu-position min)) |
1260 (henkan-insert-kouho min max) | 1270 (henkan-insert-kouho min max) |
1261 (goto-char point)) | 1271 (goto-char point)) |
1262 ; (egg:move-bunsetu-overlay) | 1272 ; (egg:move-bunsetu-extent) |
1263 (egg:bunsetu-face-on) | 1273 (egg:bunsetu-face-on) |
1264 (egg:henkan-face-on) | 1274 (egg:henkan-face-on) |
1265 ) | 1275 ) |
1266 | 1276 |
1267 (defun henkan-bunsetu-chijime-dai () | 1277 (defun henkan-bunsetu-chijime-dai () |