sekka 1.5.7 → 1.5.8

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.
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.