wnn-decide-candidate
wnn-change-bunsetsu-length
wnn-end-conversion
+ wnn-start-reverse-conversion
wnn-fini
])
(defvar wnn-environments nil
"Environment for WNN kana-kanji conversion")
-(defcustom wnn-jserver "localhost" "jserver host" :group 'wnn :type 'string)
-(defcustom wnn-cserver "localhost" "cserver host" :group 'wnn :type 'string)
-(defcustom wnn-tserver "localhost" "tserver host" :group 'wnn :type 'string)
-(defcustom wnn-kserver "localhost" "kserver host" :group 'wnn :type 'string)
+(defcustom wnn-jserver nil "jserver host list" :group 'wnn :type 'string)
+(defcustom wnn-cserver nil "cserver host list" :group 'wnn :type 'string)
+(defcustom wnn-tserver nil "tserver host list" :group 'wnn :type 'string)
+(defcustom wnn-kserver nil "kserver host list" :group 'wnn :type 'string)
+
+(defcustom wnn-jport 22273 "jserver port number" :group 'wnn :type 'integer)
+(defcustom wnn-cport 22289 "cserver port number" :group 'wnn :type 'integer)
+(defcustom wnn-tport 22321 "tserver port number" :group 'wnn :type 'integer)
+(defcustom wnn-kport 22305 "kserver port number" :group 'wnn :type 'integer)
;; The port number should be initialized from $WNNLIB/serverdefs by wnn-init
(defconst wnn-server-info-list
- ;; language locale server port stream coding-system hostname
- '(("Japanese" "ja_JP" jserver 22273 "Wnn" fixed-euc-jp wnn-jserver)
- ("Chinese-GB" "zh_CN" cserver 22289 "cWnn" fixed-euc-cn wnn-cserver)
- ("Chinese-CNS" "zh_TW" tserver 22321 "tWnn" fixed-euc-tw wnn-tserver)
- ("Korean" "ko_KR" kserver 22305 "kWnn" fixed-euc-kr wnn-kserver)))
+ ;; language locale server port stream coding-system hostname
+ '(("Japanese" "ja_JP" jserver wnn-jport "Wnn" fixed-euc-jp wnn-jserver)
+ ("Chinese-GB" "zh_CN" cserver wnn-cport "cWnn" fixed-euc-cn wnn-cserver)
+ ("Chinese-CNS" "zh_TW" tserver wnn-tport "tWnn" fixed-euc-tw wnn-tserver)
+ ("Korean" "ko_KR" kserver wnn-kport "kWnn" fixed-euc-kr wnn-kserver)))
(defun wnn-get-server-info (lang)
(let (info)
(nth 2 info))
(defsubst wnn-server-port (info)
- (nth 3 info))
+ (symbol-value (nth 3 info)))
(defsubst wnn-server-stream-name (info)
(nth 4 info))
(wnnenv-set-daibunsetsu-info env (car result))
(cdr result)))
+(defun wnn-start-reverse-conversion (yomi &optional language dic-set)
+ (wnn-start-conversion yomi language dic-set t))
+
(defun wnn-get-bunsetsu-converted (bunsetsu)
(concat (wnn-bunsetsu-get-converted bunsetsu)
(wnn-bunsetsu-get-fuzokugo bunsetsu)))
l (cdr l))))))
;;
+(defvar wnn-open-message)
+
(defun wnn-open (server-info)
"Establish the connection to WNN server. Return process object."
;; Open the session to WNN server,
(let ((buf (generate-new-buffer (wnn-server-buffer-name server-info)))
- (hostname (wnn-server-hostname server-info))
- proc result)
- (condition-case result
- (setq proc (open-network-stream (wnn-server-stream-name server-info)
- buf
- hostname
- (wnn-server-port server-info)))
- (error (progn
- (kill-buffer buf)
- (signal (car result) (cdr result)))))
- (process-kill-without-query proc)
- (set-process-coding-system proc 'no-conversion 'no-conversion)
- (set-process-sentinel proc 'wnn-comm-sentinel)
- (set-marker-insertion-type (process-mark proc) t)
+ (server-type (wnn-server-type server-info))
+ (hostname-list (wnn-server-hostname server-info))
+ (msg-form "WNN: connecting to %S at %s...")
+ hostname proc result msg)
(save-excursion
(set-buffer buf)
(erase-buffer)
(buffer-disable-undo)
(setq enable-multibyte-characters nil
egg-fixed-euc (wnn-server-coding-system server-info)))
- (setq result (wnnrpc-open proc
- (if (equal hostname "localhost")
- "unix"
- (system-name))
- (user-login-name)))
- (if (< result 0)
- (let ((msg (wnnrpc-get-error-message (- result))))
- (delete-process proc)
- (kill-buffer buf)
- (error "Can't open WNN session (%s %S): %s"
- hostname
- (wnn-server-type server-info) msg))
- proc)))
+ (cond
+ ((null hostname-list)
+ (setq hostname-list '("localhost")))
+ ((null (listp hostname-list))
+ (setq hostname-list (list hostname-list))))
+ (while (and hostname-list (null proc))
+ (setq hostname (car hostname-list)
+ hostname-list (cdr hostname-list))
+ (message msg-form server-type hostname)
+ (sit-for 0)
+ (condition-case result
+ (setq proc (open-network-stream (wnn-server-stream-name server-info)
+ buf
+ hostname
+ (wnn-server-port server-info)))
+ (error nil))
+ (if proc
+ (progn
+ (process-kill-without-query proc)
+ (set-process-coding-system proc 'no-conversion 'no-conversion)
+ (set-process-sentinel proc 'wnn-comm-sentinel)
+ (set-marker-insertion-type (process-mark proc) t)
+ (setq result (wnnrpc-open proc
+ (if (equal hostname "localhost")
+ "unix"
+ (system-name))
+ (user-login-name)))
+ (if (< result 0)
+ (progn
+ (delete-process proc)
+ (setq proc nil
+ msg (format "Can't open WNN session (%s %S): %s"
+ hostname
+ (wnn-server-type server-info)
+ msg)))))))
+ (if proc
+ (progn
+ (setq wnn-open-message (format (concat msg-form "done")
+ server-type
+ hostname))
+ proc)
+ (kill-buffer buf)
+ (error "%s" (or msg (format "no %S available" server-type))))))
(defvar wnn-dictionary-specification-list
'((jserver
(eq (wnn-dic-spec-reverse s) reverse))
(setq env e))
(setq spec (cdr spec)))
+ (if (null env)
+ (error "WNN: environment for %S%s (%s) not found"
+ server-type
+ (if dic-set (format "(%S)" dic-set) "")
+ (if reverse 'reverse 'normal)))
+ (message "%s" wnn-open-message)
env)))
(defun wnn-create-environment (proc server-type spec)
"Activate Wnn backend of Tamagotchy."
(egg-set-support-languages wnn-support-languages)
(egg-set-conversion-backend wnn-conversion-backend
- (list (nth 2 arg))
wnn-support-languages)
(apply 'egg-mode arg))