sj3-decide-candidate
sj3-change-bunsetsu-length
sj3-end-conversion
+ nil
sj3-fini
])
-(defconst sj3-server-port 3000 "Port number of SJ3 server")
+(defvar sj3-server-port 3000 "Port number of SJ3 server")
(defvar sj3-stdy-size 0 "STDYSIZE of SJ3 server")
(defvar sj3-hostname "localhost"
"Hostname of SJ3 server")
-(defun sj3-open (hostname)
+(defvar sj3-open-message)
+
+(defun sj3-open (hostname-list)
"Establish the connection to SJ3 server. Return process object."
(let* ((buf (generate-new-buffer " *SJ3*"))
- (proc (open-network-stream "SJ3" buf hostname sj3-server-port))
- result)
- (process-kill-without-query proc)
- (set-process-coding-system proc 'no-conversion 'no-conversion)
- (set-marker-insertion-type (process-mark proc) t)
+ (msg-form "SJ3: connecting to sj3serv at %s...")
+ hostname proc result msg)
(save-excursion
(set-buffer buf)
(erase-buffer)
(buffer-disable-undo)
(setq enable-multibyte-characters nil))
- ;; Initialize dictionaries
- (setq sj3-sys-dict-list nil)
- (setq sj3-user-dict-list nil)
- (setq result (sj3rpc-open proc (system-name) (user-login-name)))
- (if (< result 0)
- (let ((msg (sj3rpc-get-error-message (- result))))
- (delete-process proc)
- (kill-buffer buf)
- (error "Can't open SJ3 session (%s): %s" hostname msg)))
- (setq result (sj3rpc-get-stdy-size proc))
- (if (< result 0)
- (let ((msg (sj3rpc-get-error-message (- result))))
- (delete-process proc)
- (kill-buffer buf)
- (error "Can't get SJ3 STDYSIZE: %s"msg)))
- (setq sj3-stdy-size result)
- 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 hostname)
+ (sit-for 0)
+ (condition-case result
+ (setq proc (open-network-stream "SJ3" buf hostname sj3-server-port))
+ (error nil))
+ (if proc
+ (progn
+ (process-kill-without-query proc)
+ (set-process-coding-system proc 'no-conversion 'no-conversion)
+ (set-marker-insertion-type (process-mark proc) t)
+ ;; Initialize dictionaries
+ (setq sj3-sys-dict-list nil)
+ (setq sj3-user-dict-list nil)
+ (setq result (sj3rpc-open proc (system-name) (user-login-name)))
+ (if (< result 0)
+ (progn
+ (delete-process proc)
+ (setq proc nil
+ msg (format "Can't open SJ3 session (%s): %s"
+ hostname msg)))
+ (setq result (sj3rpc-get-stdy-size proc))
+ (if (< result 0)
+ (progn
+ (delete-process proc)
+ (setq proc nil
+ msg (format "Can't get SJ3 STDYSIZE: %s"
+ (sj3rpc-get-error-message (- result)))))
+ (setq sj3-stdy-size result))))))
+ (if proc
+ (progn
+ (setq sj3-open-message (format (concat msg-form "done") hostname))
+ proc)
+ (kill-buffer buf)
+ (error "%s" (or msg "no sj3serv available")))))
;; <env> ::= [ <proc> <dictionary-list> ]
(defvar sj3-environment nil
(if (< dic-id 0)
(error "Dame2") ; XXX
(setq dict-list (cons dic-id dict-list)
- l (cdr l))))))
- (setq sj3-environment (vector proc dict-list)))))
+ l (cdr l)))))
+ (message "%s" sj3-open-message)
+ (setq sj3-environment (vector proc dict-list))))))
(defun sj3-init ()
)
-(defun sj3-start-conversion (yomi lang)
+(defun sj3-start-conversion (yomi &optional lang)
"Convert YOMI string to kanji, and enter conversion mode.
Return the list of bunsetsu."
(let ((env (sj3-get-environment)))
"Activate SJ3 backend of Tamagotchy."
(egg-set-support-languages sj3-support-languages)
(egg-set-conversion-backend sj3-conversion-backend
- sj3-support-languages
- nil)
+ sj3-support-languages)
(apply 'egg-mode arg))
;;; egg/sj3.el ends here.