sekka 1.5.7 → 1.5.8

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5bf4756e5b5ff60d017c674400dade5489f8ac9b
4
- data.tar.gz: c06ee065d02bae383dd05b1c8f16f42b809cff72
3
+ metadata.gz: 60bdf6a44d924978bd822a1964693ba999eb0032
4
+ data.tar.gz: 9da6c58564582ae7bc4e0e4c4c16e388a1487c48
5
5
  SHA512:
6
- metadata.gz: d361b6d1e981ba6a6d5e979355086f3dc8d8c3f9d09565559645ea2c51fddfded924e83fa809764a47f42451fc539bd00ee3ea30cc47a5a3a28357681114b32b
7
- data.tar.gz: 902bc3b838becaf488eff1143bb9e89e4d42808c37721287e2a2d16de3f338ad5e55ada20bb614c9c7b64a5ee3511c5750e136ef7b39388987c93e9bee8f1ef4
6
+ metadata.gz: ac0e777364bf1e07232486b74b3e50bb552ce774d7492920ee0869b430eee72f741a8967fdcd2a8e0f092a0adc367ac96cec2a25a51f017bc426fc1c41085e9a
7
+ data.tar.gz: 5a2964f084b8f1c8dc488e7c82e5ed6b08e99f232d95c1c42b9727add922093db317d8b79c7347da9b516636c1005312477c7dbd6b0683b89d42f19e6c44278f
data/VERSION.yml CHANGED
@@ -1,4 +1,4 @@
1
1
  ---
2
2
  :major: 1
3
3
  :minor: 5
4
- :patch: 7
4
+ :patch: 8
data/emacs/sekka.el CHANGED
@@ -3,7 +3,7 @@
3
3
  ;; Copyright (C) 2010-2014 Kiyoka Nishiyama
4
4
  ;;
5
5
  ;; Author: Kiyoka Nishiyama <kiyoka@sumibi.org>
6
- ;; Version: 1.5.7 ;;SEKKA-VERSION
6
+ ;; Version: 1.5.8 ;;SEKKA-VERSION
7
7
  ;; Keywords: ime, skk, japanese
8
8
  ;; Package-Requires: ((cl-lib "0.3") (concurrent "0.3.1") (popup "0.5.0"))
9
9
  ;; URL: https://github.com/kiyoka/sekka
@@ -82,6 +82,11 @@
82
82
  :type 'string
83
83
  :group 'sekka)
84
84
 
85
+ (defcustom sekka-use-curl t
86
+ "non-nil でcurlコマンドを使う。nilでEmacs Lisp(url.elを使う)"
87
+ :type 'boolean
88
+ :group 'sekka)
89
+
85
90
  (defcustom sekka-curl "curl"
86
91
  "curlコマンドの絶対パスを設定する"
87
92
  :type 'string
@@ -208,6 +213,8 @@ non-nil で明示的に呼びだすまでGoogleIMEは起動しない。"
208
213
  (goto-char (point-max))
209
214
  (insert string)))))
210
215
 
216
+ ;; HTTPクライアントの多重起動防止用
217
+ (defvar sekka-busy 0)
211
218
 
212
219
  ;;; 現在のsekka-serverの接続先
213
220
  (defvar current-sekka-server-url nil)
@@ -378,7 +385,7 @@ non-nil で明示的に呼びだすまでGoogleIMEは起動しない。"
378
385
  result)))
379
386
  (let ((arg-alist
380
387
  (cons
381
- `(userid . ,sekka-login-name)
388
+ `("userid" . ,sekka-login-name)
382
389
  arg-alist)))
383
390
  (or
384
391
  (one-request func-name arg-alist)
@@ -397,7 +404,7 @@ non-nil で明示的に呼びだすまでGoogleIMEは起動しない。"
397
404
  (list "--noproxy" sekka-no-proxy-hosts)
398
405
  nil)
399
406
  (sekka-construct-curl-argstr (cons
400
- '(format . "sexp")
407
+ '("format" . "sexp")
401
408
  arg-alist))))
402
409
  (buffername "*sekka-output*")
403
410
  (result ""))
@@ -429,12 +436,74 @@ non-nil で明示的に呼びだすまでGoogleIMEは起動しない。"
429
436
  "henkan"
430
437
  '(
431
438
  ("yomi" . "Nihon")
432
- (limit . "1")
433
- (method . "normal")
439
+ ("limit" . "1")
440
+ ("method" . "normal")
434
441
  ("userid" . "kiyoka")))
435
442
  )
436
443
 
437
-
444
+
445
+ (defun sekka-url-http-post (url args)
446
+ "Send ARGS to URL as a POST request."
447
+ (progn
448
+ (setq url-request-method "POST")
449
+ (setq url-http-version "1.0")
450
+ (setq url-request-extra-headers
451
+ '(("Content-Type" . "application/x-www-form-urlencoded")))
452
+ (setq url-request-data
453
+ (mapconcat (lambda (arg)
454
+ (concat (url-hexify-string (car arg))
455
+ "="
456
+ (url-hexify-string (cdr arg))))
457
+ args
458
+ "&"))
459
+ (let* ((lines
460
+ (let ((buf (url-retrieve-synchronously url)))
461
+ (sekka-debug-print (buffer-name buf))
462
+ (sekka-debug-print "\n")
463
+ (if buf
464
+ (with-current-buffer buf
465
+ (decode-coding-string
466
+ (let ((str (buffer-substring-no-properties (point-min) (point-max))))
467
+ (sekka-debug-print (format "http result code:%s\n" url-http-response-status))
468
+ (sekka-debug-print (format "(%d-%d) eoh=%s\n" (point-min) (point-max) url-http-end-of-headers))
469
+ (sekka-debug-print (format "<<<%s>>>\n" str))
470
+ str)
471
+ 'utf-8))
472
+ (list "curl: (7) Couldn't connect to host 'localhost'")))) ;; Emulate curl error.
473
+ (line-list
474
+ (split-string lines "\n")))
475
+
476
+ (car (reverse line-list)))))
477
+
478
+ ;;
479
+ ;; http request function with pure emacs
480
+ ;; (no proxy supported)
481
+ (defun sekka-rest-request-by-pure (func-name arg-alist)
482
+ (setq sekka-busy (+ sekka-busy 1))
483
+ (sekka-debug-print (format "sekka-busy=%d\n" sekka-busy))
484
+ (let* ((arg-alist
485
+ (cons
486
+ '("format" . "sexp")
487
+ arg-alist))
488
+ (result
489
+ (sekka-url-http-post
490
+ (concat current-sekka-server-url func-name)
491
+ arg-alist)))
492
+ (setq sekka-busy (- sekka-busy 1))
493
+ (sekka-debug-print (format "sekka-busy=%d\n" sekka-busy))
494
+ result))
495
+
496
+ (when nil
497
+ ;; unit test
498
+ (setq sekka-login-name (user-login-name))
499
+ (setq current-sekka-server-url "http://localhost:12929/")
500
+ (sekka-rest-request-by-pure
501
+ "henkan"
502
+ '(
503
+ ("yomi" . "Nihon")
504
+ ("limit" . "1")
505
+ ("method" . "normal")
506
+ ("userid" . "kiyoka"))))
438
507
 
439
508
  (defun sekka-rest-request-sub (func-name arg-alist)
440
509
  (if sekka-psudo-server
@@ -452,7 +521,11 @@ non-nil で明示的に呼びだすまでGoogleIMEは起動しない。"
452
521
  ;; "(\"初回起動\", \"諸快気堂\", \"諸開基堂\", \"しょかいきどう\", \"ショカイキドウ\")"
453
522
  ))
454
523
  ;; 実際のサーバに接続する
455
- (sekka-rest-request-by-curl func-name arg-alist)))
524
+ (cond
525
+ (sekka-use-curl
526
+ (sekka-rest-request-by-curl func-name arg-alist))
527
+ (t
528
+ (sekka-rest-request-by-pure func-name arg-alist)))))
456
529
 
457
530
  ;;
458
531
  ;; 現在時刻をUNIXタイムを返す(単位は秒)
@@ -476,9 +549,9 @@ non-nil で明示的に呼びだすまでGoogleIMEは起動しない。"
476
549
  (sekka-debug-print (format "henkan-send :[%s]\n" yomi))
477
550
 
478
551
  (let (
479
- (result (sekka-rest-request "henkan" `((yomi . ,yomi)
480
- (limit . ,(format "%d" limit))
481
- (method . ,sekka-roman-method)))))
552
+ (result (sekka-rest-request "henkan" `(("yomi" . ,yomi)
553
+ ("limit" . ,(format "%d" limit))
554
+ ("method" . ,sekka-roman-method)))))
482
555
  (sekka-debug-print (format "henkan-result:%S\n" result))
483
556
  (if (eq (string-to-char result) ?\( )
484
557
  (progn
@@ -502,8 +575,8 @@ non-nil で明示的に呼びだすまでGoogleIMEは起動しない。"
502
575
  ;;(message "Requesting to sekka server...")
503
576
 
504
577
  (let ((result (sekka-rest-request "kakutei" `(
505
- (key . ,key)
506
- (tango . ,tango)))))
578
+ ("key" . ,key)
579
+ ("tango" . ,tango)))))
507
580
  (sekka-debug-print (format "kakutei-result:%S\n" result))
508
581
  (message result)
509
582
  t))
@@ -518,7 +591,7 @@ non-nil で明示的に呼びだすまでGoogleIMEは起動しない。"
518
591
  ;;(message "Requesting to sekka server...")
519
592
 
520
593
  (let ((result (sekka-rest-request "googleime" `(
521
- (yomi . ,yomi)))))
594
+ ("yomi" . ,yomi)))))
522
595
  (sekka-debug-print (format "googleime-result:%S\n" result))
523
596
  (progn
524
597
  (message nil)
@@ -554,7 +627,7 @@ non-nil で明示的に呼びだすまでGoogleIMEは起動しない。"
554
627
  (setq x (pop str-lst))
555
628
  ;;(message "Requesting to sekka server...")
556
629
  (sekka-debug-print (format "register [%s]\n" x))
557
- (lexical-let ((result (sekka-rest-request "register" `((dict . ,x)))))
630
+ (lexical-let ((result (sekka-rest-request "register" `(("dict" . ,x)))))
558
631
  (sekka-debug-print (format "register-result:%S\n" result))))
559
632
  (setq sekka-uploading-flag nil)
560
633
  (redraw-modeline)))
@@ -853,6 +926,7 @@ non-nil で明示的に呼びだすまでGoogleIMEは起動しない。"
853
926
  (define-key map "\C-r" 'popup-select)
854
927
  map))
855
928
 
929
+
856
930
  ;; 選択操作回数のインクリメント
857
931
  (defun sekka-select-operation-inc ()
858
932
  (incf sekka-select-operation-times)
@@ -872,7 +946,7 @@ non-nil で明示的に呼びだすまでGoogleIMEは起動しない。"
872
946
  :scroll-bar t
873
947
  :margin t
874
948
  :keymap sekka-popup-menu-keymap
875
- :initial-index sekka-cand-cur)))
949
+ :initial-index sekka-cand-cur)))
876
950
  (let ((selected-word (car (split-string result " "))))
877
951
  (setq sekka-cand-cur (sekka-find-by-tango selected-word))))))
878
952
 
@@ -1497,6 +1571,10 @@ non-nil で明示的に呼びだすまでGoogleIMEは起動しない。"
1497
1571
  "リアルタイムで変換中のガイドを出す
1498
1572
  sekka-modeがONの間中呼び出される可能性がある。"
1499
1573
  (cond
1574
+ ((< 0 sekka-busy)
1575
+ ;; 残り回数のデクリメント
1576
+ (setq sekka-timer-rest (- sekka-timer-rest 1))
1577
+ (sekka-debug-print "busy!\n"))
1500
1578
  ((or (null sekka-mode)
1501
1579
  (> 1 sekka-timer-rest))
1502
1580
  (cancel-timer sekka-timer)
@@ -1666,7 +1744,7 @@ point から行頭方向に同種の文字列が続く間を漢字変換しま
1666
1744
  (setq default-input-method "japanese-sekka")
1667
1745
 
1668
1746
  (defconst sekka-version
1669
- "1.5.7" ;;SEKKA-VERSION
1747
+ "1.5.8" ;;SEKKA-VERSION
1670
1748
  )
1671
1749
  (defun sekka-version (&optional arg)
1672
1750
  "入力モード変更"
@@ -1,4 +1,4 @@
1
1
  class SekkaVersion
2
- def self.version() "1.5.7" end
2
+ def self.version() "1.5.8" end
3
3
  def self.dictVersion() "1.4.1" end
4
4
  end
metadata CHANGED
@@ -1,41 +1,41 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sekka
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.7
4
+ version: 1.5.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kiyoka Nishiyama
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-10-13 00:00:00.000000000 Z
11
+ date: 2014-12-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: eventmachine
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ~>
18
18
  - !ruby/object:Gem::Version
19
19
  version: '1.0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ~>
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: memcache-client
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ~>
32
32
  - !ruby/object:Gem::Version
33
33
  version: '1.8'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ~>
39
39
  - !ruby/object:Gem::Version
40
40
  version: '1.8'
41
41
  - !ruby/object:Gem::Dependency
@@ -70,56 +70,56 @@ dependencies:
70
70
  name: rack
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - "~>"
73
+ - - ~>
74
74
  - !ruby/object:Gem::Version
75
75
  version: '1.5'
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - "~>"
80
+ - - ~>
81
81
  - !ruby/object:Gem::Version
82
82
  version: '1.5'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: ruby-progressbar
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - "~>"
87
+ - - ~>
88
88
  - !ruby/object:Gem::Version
89
89
  version: '1.4'
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - "~>"
94
+ - - ~>
95
95
  - !ruby/object:Gem::Version
96
96
  version: '1.4'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: bundler
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - "~>"
101
+ - - ~>
102
102
  - !ruby/object:Gem::Version
103
103
  version: '1.7'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - "~>"
108
+ - - ~>
109
109
  - !ruby/object:Gem::Version
110
110
  version: '1.7'
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: rake
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - "~>"
115
+ - - ~>
116
116
  - !ruby/object:Gem::Version
117
117
  version: '10.0'
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
- - - "~>"
122
+ - - ~>
123
123
  - !ruby/object:Gem::Version
124
124
  version: '10.0'
125
125
  description: Sekka is a SKK like input method. Sekka server provides REST Based API.
@@ -134,9 +134,9 @@ executables:
134
134
  extensions: []
135
135
  extra_rdoc_files: []
136
136
  files:
137
- - ".gemtest"
138
- - ".gitignore"
139
- - ".travis.yml"
137
+ - .gemtest
138
+ - .gitignore
139
+ - .travis.yml
140
140
  - COPYING
141
141
  - DESIGN
142
142
  - README.md
@@ -253,17 +253,17 @@ require_paths:
253
253
  - lib
254
254
  required_ruby_version: !ruby/object:Gem::Requirement
255
255
  requirements:
256
- - - ">="
256
+ - - '>='
257
257
  - !ruby/object:Gem::Version
258
258
  version: '0'
259
259
  required_rubygems_version: !ruby/object:Gem::Requirement
260
260
  requirements:
261
- - - ">="
261
+ - - '>='
262
262
  - !ruby/object:Gem::Version
263
263
  version: '0'
264
264
  requirements: []
265
265
  rubyforge_project:
266
- rubygems_version: 2.2.2
266
+ rubygems_version: 2.0.14
267
267
  signing_key:
268
268
  specification_version: 4
269
269
  summary: Sekka is a SKK like input method.