emacs/sekka.el in sekka-1.4.0 vs emacs/sekka.el in sekka-1.5.0
- old
+ new
@@ -75,11 +75,11 @@
(defcustom sekka-realtime-guide-running-seconds 30
"リアルタイムガイド表示の継続時間(秒数)・ゼロでガイド表示機能が無効になる"
:type 'integer
:group 'sekka)
-(defcustom sekka-realtime-guide-limit-lines 5
+(defcustom sekka-realtime-guide-limit-lines 3
"最後に変換した行から N 行離れたらリアルタイムガイド表示が止まる"
:type 'integer
:group 'sekka)
(defcustom sekka-realtime-guide-interval 0.2
@@ -278,27 +278,30 @@
;; 初期化完了
(setq sekka-init t)))
(defun sekka-construct-curl-argstr (arg-alist)
- (apply 'concat
- (mapcar
- (lambda (x)
- (format "--data '%s=%s' " (car x)
- (if (stringp (cdr x))
- (http-url-encode (cdr x) 'utf-8)
- (cdr x))))
- arg-alist)))
+ (apply
+ 'append
+ (mapcar
+ (lambda (x)
+ (list "--data" (format "%s=%s"
+ (car x)
+ (if (stringp (cdr x))
+ (http-url-encode (cdr x) 'utf-8)
+ (cdr x)))))
+ arg-alist)))
;; test-code
(when nil
(sekka-construct-curl-argstr
'(
("yomi" . "kanji")
("limit" . 2)
("method" . "normal")
- )))
+ ))
+ )
;;
;; 接続先を次候補のsekka-serverに切りかえる
;;
@@ -343,21 +346,68 @@
)
(progn
(sekka-next-sekka-server)
nil)
result)))
+ (let ((arg-alist
+ (cons
+ `(userid . ,sekka-login-name)
+ arg-alist)))
+ (or
+ (one-request func-name arg-alist)
+ (one-request func-name arg-alist)
+ (one-request func-name arg-alist)
+ (concat
+ "Error: All sekka-server are down. "
+ " " sekka-server-url
+ " " sekka-server-url-2
+ " " sekka-server-url-3))))
- (or
- (one-request func-name arg-alist)
- (one-request func-name arg-alist)
- (one-request func-name arg-alist)
- (concat
- "Error: All sekka-server are down. "
- " " sekka-server-url
- " " sekka-server-url-2
- " " sekka-server-url-3)))
+(defun sekka-rest-request-by-curl (func-name arg-alist)
+ (let* ((lst
+ (append
+ (if (< 0 (length sekka-no-proxy-hosts))
+ (list "--noproxy" sekka-no-proxy-hosts)
+ nil)
+ (sekka-construct-curl-argstr (cons
+ '(format . "sexp")
+ arg-alist))))
+ (buffername "*sekka-output*")
+ (result ""))
+ (sekka-debug-print (format "arg-lst :[%S]\n" lst))
+ (progn
+ (apply
+ 'call-process
+ sekka-curl
+ nil buffername nil
+ "--silent" "--show-error"
+ "--max-time" (format "%d" sekka-server-timeout)
+ "--insecure"
+ "--header" "Content-Type: application/x-www-form-urlencoded"
+ (concat current-sekka-server-url func-name)
+ lst)
+ (setq result
+ (with-current-buffer buffername
+ (buffer-substring-no-properties (point-min) (point-max))))
+ (kill-buffer buffername)
+ result)))
+
+(when nil
+ ;; unit test
+ (setq sekka-curl "curl")
+ (setq sekka-login-name (user-login-name))
+ (setq current-sekka-server-url "http://localhost:12929/")
+ (sekka-rest-request-by-curl
+ "henkan"
+ '(
+ ("yomi" . "Nihon")
+ (limit . "1")
+ (method . "normal")
+ ("userid" . "kiyoka")))
+ )
+
(defun sekka-rest-request-sub (func-name arg-alist)
(if sekka-psudo-server
(cond
@@ -372,35 +422,12 @@
"(\"四文字熟語\" \"4文字熟語\" \"4文字熟語\" \"よんもじじゅくご\" \"ヨンモジジュクゴ\")"
;; 2) しょかいきどう
;; "(\"初回起動\", \"諸快気堂\", \"諸開基堂\", \"しょかいきどう\", \"ショカイキドウ\")"
))
;; 実際のサーバに接続する
- (let ((command
- (concat
- sekka-curl " --silent --show-error "
- (if (< 0 (length sekka-no-proxy-hosts))
- (concat " --noproxy " sekka-no-proxy-hosts)
- "")
- (format " --max-time %d " sekka-server-timeout)
- " --insecure "
- " --header 'Content-Type: application/x-www-form-urlencoded' "
- (format "%s%s " current-sekka-server-url func-name)
- (sekka-construct-curl-argstr (cons
- '("format" . "sexp")
- arg-alist))
- (format "--data 'userid=%s' " sekka-login-name))))
+ (sekka-rest-request-by-curl func-name arg-alist)))
- (sekka-debug-print (format "curl-command :%s\n" command))
-
- (let (
- (result
- (shell-command-to-string
- command)))
-
- (sekka-debug-print (format "curl-result-sexp :%s\n" result))
- result))))
-
;;
;; 現在時刻をUNIXタイムを返す(単位は秒)
;;
(defun sekka-current-unixtime ()
(let (
@@ -420,11 +447,11 @@
(setq yomi (replace-regexp-in-string ":" "+" yomi)))
(sekka-debug-print (format "henkan-send :[%s]\n" yomi))
(let (
(result (sekka-rest-request "henkan" `((yomi . ,yomi)
- (limit . ,limit)
+ (limit . ,(format "%d" limit))
(method . ,sekka-roman-method)))))
(sekka-debug-print (format "henkan-result:%S\n" result))
(if (eq (string-to-char result) ?\( )
(progn
(message nil)
@@ -1619,10 +1646,10 @@
;; input-method として登録する。
(set-language-info "Japanese" 'input-method "japanese-sekka")
(setq default-input-method "japanese-sekka")
(defconst sekka-version
- "1.4.0" ;;SEKKA-VERSION
+ "1.5.0" ;;SEKKA-VERSION
)
(defun sekka-version (&optional arg)
"入力モード変更"
(interactive "P")
(message sekka-version))