sekka 0.9.2 → 0.9.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/emacs/sekka.el CHANGED
@@ -41,6 +41,16 @@
41
41
  :type 'string
42
42
  :group 'sekka)
43
43
 
44
+ (defcustom sekka-server-url-2 ""
45
+ "SekkaサーバーのURLを指定する。"
46
+ :type 'string
47
+ :group 'sekka)
48
+
49
+ (defcustom sekka-server-url-3 ""
50
+ "SekkaサーバーのURLを指定する。"
51
+ :type 'string
52
+ :group 'sekka)
53
+
44
54
  (defcustom sekka-server-timeout 10
45
55
  "Sekkaサーバーと通信する時のタイムアウトを指定する。(秒数)"
46
56
  :type 'integer
@@ -124,11 +134,16 @@ non-nil で明示的に呼びだすまでGoogleIMEは起動しない。"
124
134
 
125
135
  (defvar sekka-sticky-shift nil "*Non-nil であれば、Sticky-Shiftを有効にする")
126
136
  (defvar sekka-mode nil "漢字変換トグル変数")
127
- (defvar sekka-mode-line-string " Sekka")
137
+ (defun sekka-modeline-string ()
138
+ ;; 接続先sekka-serverのホスト名を表示する。
139
+ (format " Sekka[%s]" (if current-sekka-server-url
140
+ (url-host
141
+ (url-generic-parse-url current-sekka-server-url))
142
+ "")))
128
143
  (defvar sekka-select-mode nil "候補選択モード変数")
129
144
  (or (assq 'sekka-mode minor-mode-alist)
130
145
  (setq minor-mode-alist (cons
131
- '(sekka-mode sekka-mode-line-string)
146
+ '(sekka-mode (:eval (sekka-modeline-string)))
132
147
  minor-mode-alist)))
133
148
 
134
149
 
@@ -144,6 +159,8 @@ non-nil で明示的に呼びだすまでGoogleIMEは起動しない。"
144
159
  (cons 'sekka-select-mode sekka-select-mode-map))
145
160
  minor-mode-map-alist)))
146
161
 
162
+
163
+
147
164
  ;;;
148
165
  ;;; hooks
149
166
  ;;;
@@ -172,6 +189,9 @@ non-nil で明示的に呼びだすまでGoogleIMEは起動しない。"
172
189
  (insert string)))))
173
190
 
174
191
 
192
+ ;;; 現在のsekka-serverの接続先
193
+ (defvar current-sekka-server-url nil)
194
+
175
195
  ;;; 候補選択モード用
176
196
  (defvar sekka-history-stack '()) ; 過去に変換した、場所と変換候補の状態を保存しておくスタック
177
197
  ;; データ構造は以下の通り。
@@ -253,6 +273,9 @@ non-nil で明示的に呼びだすまでGoogleIMEは起動しない。"
253
273
  ;;
254
274
  (defun sekka-init ()
255
275
  (when (not sekka-init)
276
+ ;; 現在のsekka-serverの接続先
277
+ (defvar current-sekka-server-url sekka-server-url) ;; 第一候補で初期化しておく。
278
+
256
279
  ;; ユーザー語彙のロード + サーバーへの登録
257
280
  (sekka-register-userdict-internal)
258
281
 
@@ -279,6 +302,31 @@ non-nil で明示的に呼びだすまでGoogleIMEは起動しない。"
279
302
  ("method" . "normal")
280
303
  )))
281
304
 
305
+
306
+ ;;
307
+ ;; 接続先を次候補のsekka-serverに切りかえる
308
+ ;;
309
+ (defun sekka-next-sekka-server ()
310
+ (defun sekka-next-sekka-server-message(str varname)
311
+ (message (format "If you have %s sekka-server, please set the `%s' variable." str varname))
312
+ (sit-for 5))
313
+
314
+ (cond
315
+ ((string-equal current-sekka-server-url
316
+ sekka-server-url)
317
+ (if (< 0 (length sekka-server-url-2))
318
+ (setq current-sekka-server-url sekka-server-url-2)
319
+ (sekka-next-sekka-server-message "second" "sekka-server-url-2")))
320
+ ((string-equal current-sekka-server-url
321
+ sekka-server-url-2)
322
+ (if (< 0 (length sekka-server-url-3))
323
+ (setq current-sekka-server-url sekka-server-url-3)
324
+ (sekka-next-sekka-server-message "third" "sekka-server-url-3")))
325
+ (t
326
+ (when (< 0 (length sekka-server-url))
327
+ (setq current-sekka-server-url sekka-server-url)))))
328
+
329
+
282
330
  ;;
283
331
  ;; ローマ字で書かれた文章をSekkaサーバーを使って変換する
284
332
  ;;
@@ -290,6 +338,30 @@ non-nil で明示的に呼びだすまでGoogleIMEは起動しない。"
290
338
  ;; ("method" . "normal")
291
339
  ;; )
292
340
  (defun sekka-rest-request (func-name arg-alist)
341
+ (defun one-request (func-name arg-alist)
342
+ (let ((result (sekka-rest-request-sub func-name arg-alist)))
343
+ (if (or
344
+ (string-match-p "^curl: [(]6[)] " result) ;; Couldn't resolve host 'aaa.example.com'
345
+ (string-match-p "^curl: [(]7[)] " result) ;; Couldn't connect to host 'localhost'
346
+ )
347
+ (progn
348
+ (sekka-next-sekka-server)
349
+ nil)
350
+ result)))
351
+
352
+ (or
353
+ (one-request func-name arg-alist)
354
+ (one-request func-name arg-alist)
355
+ (one-request func-name arg-alist)
356
+ (concat
357
+ "Error: All sekka-server are down. "
358
+ " " sekka-server-url
359
+ " " sekka-server-url-2
360
+ " " sekka-server-url-3)))
361
+
362
+
363
+
364
+ (defun sekka-rest-request-sub (func-name arg-alist)
293
365
  (if sekka-psudo-server
294
366
  (cond
295
367
  ((string-equal func-name "henkan")
@@ -314,7 +386,7 @@ non-nil で明示的に呼びだすまでGoogleIMEは起動しない。"
314
386
  (format " --max-time %d " sekka-server-timeout)
315
387
  " --insecure "
316
388
  " --header 'Content-Type: application/x-www-form-urlencoded' "
317
- (format "%s%s " sekka-server-url func-name)
389
+ (format "%s%s " current-sekka-server-url func-name)
318
390
  (sekka-construct-curl-argstr (cons
319
391
  '("format" . "sexp")
320
392
  arg-alist))
@@ -1552,7 +1624,7 @@ point から行頭方向に同種の文字列が続く間を漢字変換しま
1552
1624
  (setq default-input-method "japanese-sekka")
1553
1625
 
1554
1626
  (defconst sekka-version
1555
- "0.9.2" ;;SEKKA-VERSION
1627
+ "0.9.3" ;;SEKKA-VERSION
1556
1628
  )
1557
1629
  (defun sekka-version (&optional arg)
1558
1630
  "入力モード変更"
@@ -242,10 +242,10 @@
242
242
  (let ([d (. (Date.new 0) to_s)])
243
243
  (if (and (kvs.pure_put! "key_for_ping" d)
244
244
  (string=? (kvs.get "key_for_ping") d))
245
- (STDERR.puts "Info: database file was clean")
245
+ (STDERR.puts "Info: database file is clean")
246
246
  ;; 正常に読み書きできないようであれば、データベースを修復する
247
247
  (begin
248
- (STDERR.puts "Info: database file was NOT clean. try to fix...")
248
+ (STDERR.puts "Info: database file is NOT clean. try to fix...")
249
249
  (kvs.fixdb)
250
250
  (STDERR.puts "Info: done."))))
251
251
  (to-arr (list kvs cachesv)))))
@@ -1,5 +1,5 @@
1
1
  class SekkaVersion
2
2
  def self.version
3
- "0.9.2"
3
+ "0.9.3"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sekka
3
3
  version: !ruby/object:Gem::Version
4
- hash: 63
4
+ hash: 61
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 9
9
- - 2
10
- version: 0.9.2
9
+ - 3
10
+ version: 0.9.3
11
11
  platform: ruby
12
12
  authors:
13
13
  - Kiyoka Nishiyama
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-09-15 00:00:00 Z
18
+ date: 2011-10-03 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: rspec
@@ -339,7 +339,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
339
339
  requirements: []
340
340
 
341
341
  rubyforge_project:
342
- rubygems_version: 1.7.2
342
+ rubygems_version: 1.8.10
343
343
  signing_key:
344
344
  specification_version: 3
345
345
  summary: Sekka is a SKK like input method.