sekka 0.8.7 → 0.8.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.
Files changed (3) hide show
  1. data/emacs/sekka.el +104 -66
  2. data/lib/sekka/sekkaversion.rb +1 -1
  3. metadata +18 -9
data/emacs/sekka.el CHANGED
@@ -236,27 +236,15 @@ non-nil で明示的に呼びだすまでGoogleIMEは起動しない。"
236
236
 
237
237
  (defvar sekka-init nil)
238
238
 
239
+
239
240
  ;;
240
241
  ;; 初期化
241
242
  ;;
242
243
  (defun sekka-init ()
243
- ;; 最初の n 件のリストを取得する
244
- (defun sekka-take (arg-list n)
245
- (let ((lst '()))
246
- (dotimes (i n (reverse lst))
247
- (let ((item (nth i arg-list)))
248
- (when item
249
- (push item lst))))))
250
-
251
244
  (when (not sekka-init)
252
245
  ;; ユーザー語彙のロード + サーバーへの登録
253
246
  (sekka-register-userdict-internal)
254
-
255
- ;; Emacs終了時の処理
256
- (add-hook 'kill-emacs-hook
257
- (lambda ()
258
- ;; 何もすることは無い
259
- t))
247
+
260
248
  ;; 初期化完了
261
249
  (setq sekka-init t)))
262
250
 
@@ -573,12 +561,12 @@ non-nil で明示的に呼びだすまでGoogleIMEは起動しない。"
573
561
  ;; カーソル前の文字種を返却する関数
574
562
  (eval-and-compile
575
563
  (if (>= emacs-major-version 20)
576
- (progn
577
- (defalias 'sekka-char-charset (symbol-function 'char-charset))
578
- (when (and (boundp 'byte-compile-depth)
579
- (not (fboundp 'char-category)))
580
- (defalias 'char-category nil))) ; for byte compiler
564
+ (defun sekka-char-charset (ch)
565
+ (let ((result (char-charset ch)))
566
+ (sekka-debug-print (format "sekka-char-charset:1(%s) => %s\n" ch result))
567
+ result))
581
568
  (defun sekka-char-charset (ch)
569
+ (sekka-debug-print (format "sekka-char-charset:2(%s) => %s\n" ch (char-category)))
582
570
  (cond ((equal (char-category ch) "a") 'ascii)
583
571
  ((equal (char-category ch) "k") 'katakana-jisx0201)
584
572
  ((string-match "[SAHK]j" (char-category ch)) 'japanese-jisx0208)
@@ -624,52 +612,72 @@ non-nil で明示的に呼びだすまでGoogleIMEは起動しない。"
624
612
  word))
625
613
 
626
614
  (defun sekka-display-function (b e select-mode)
627
- (setq sekka-henkan-separeter (if sekka-use-fence " " ""))
628
- (when sekka-henkan-kouho-list
629
- ;; UNDO抑制開始
630
- (sekka-disable-undo)
631
-
632
- (delete-region b e)
615
+ (let ((insert-word (sekka-get-display-string))
616
+ (word (buffer-substring-no-properties b e)))
617
+ (cond
618
+ ((and (not select-mode)
619
+ (string-equal insert-word word))
620
+ ;; sekka-markersの更新
621
+ (setq sekka-fence-start (progn
622
+ (goto-char b)
623
+ (point-marker)))
624
+ (setq sekka-fence-end (progn
625
+ (goto-char e)
626
+ (point-marker)))
627
+ (setq sekka-markers
628
+ (cons sekka-fence-start sekka-fence-end))
629
+
630
+ ;; 確定文字列の作成
631
+ (setq sekka-last-fix insert-word)
632
+
633
+ (sekka-debug-print (format "don't touch:[%s] point:%d-%d\n" insert-word (marker-position sekka-fence-start) (marker-position sekka-fence-end))))
633
634
 
634
- ;; リスト初期化
635
- (setq sekka-markers '())
635
+ (t
636
+ (setq sekka-henkan-separeter (if sekka-use-fence " " ""))
637
+ (when sekka-henkan-kouho-list
638
+ ;; UNDO抑制開始
639
+ (sekka-disable-undo)
640
+
641
+ (delete-region b e)
636
642
 
637
- (setq sekka-last-fix "")
643
+ ;; リスト初期化
644
+ (setq sekka-markers '())
638
645
 
639
- ;; 変換したpointの保持
640
- (setq sekka-fence-start (point-marker))
641
- (when select-mode (insert "|"))
642
-
643
- (let* (
644
- (start (point-marker))
645
- (_cur sekka-cand-cur)
646
- (_len sekka-cand-len)
647
- (insert-word (sekka-get-display-string)))
648
- (progn
649
- (insert insert-word)
650
- (message (format "[%s] candidate (%d/%d)" insert-word (+ _cur 1) _len))
651
- (let* ((end (point-marker))
652
- (ov (make-overlay start end)))
653
-
654
- ;; 確定文字列の作成
655
- (setq sekka-last-fix insert-word)
656
-
657
- ;; 選択中の場所を装飾する。
658
- (when select-mode
659
- (overlay-put ov 'face 'default)
660
- (overlay-put ov 'face 'highlight))
661
- (setq sekka-markers (cons start end))
662
- (sekka-debug-print (format "insert:[%s] point:%d-%d\n" insert-word (marker-position start) (marker-position end))))))
663
-
664
- ;; fenceの範囲を設定する
665
- (when select-mode (insert "|"))
666
- (setq sekka-fence-end (point-marker))
646
+ (setq sekka-last-fix "")
647
+
648
+ ;; 変換したpointの保持
649
+ (setq sekka-fence-start (point-marker))
650
+ (when select-mode (insert "|"))
667
651
 
668
- (sekka-debug-print (format "total-point:%d-%d\n"
669
- (marker-position sekka-fence-start)
670
- (marker-position sekka-fence-end)))
671
- ;; UNDO再開
672
- (sekka-enable-undo)))
652
+ (let* (
653
+ (start (point-marker))
654
+ (_cur sekka-cand-cur)
655
+ (_len sekka-cand-len))
656
+ (progn
657
+ (insert insert-word)
658
+ (message (format "[%s] candidate (%d/%d)" insert-word (+ _cur 1) _len))
659
+ (let* ((end (point-marker))
660
+ (ov (make-overlay start end)))
661
+
662
+ ;; 確定文字列の作成
663
+ (setq sekka-last-fix insert-word)
664
+
665
+ ;; 選択中の場所を装飾する。
666
+ (when select-mode
667
+ (overlay-put ov 'face 'default)
668
+ (overlay-put ov 'face 'highlight))
669
+ (setq sekka-markers (cons start end))
670
+ (sekka-debug-print (format "insert:[%s] point:%d-%d\n" insert-word (marker-position start) (marker-position end))))))
671
+
672
+ ;; fenceの範囲を設定する
673
+ (when select-mode (insert "|"))
674
+ (setq sekka-fence-end (point-marker))
675
+
676
+ (sekka-debug-print (format "total-point:%d-%d\n"
677
+ (marker-position sekka-fence-start)
678
+ (marker-position sekka-fence-end)))
679
+ ;; UNDO再開
680
+ (sekka-enable-undo))))))
673
681
 
674
682
 
675
683
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -963,10 +971,15 @@ non-nil で明示的に呼びだすまでGoogleIMEは起動しない。"
963
971
 
964
972
  (defun sekka-history-gc ()
965
973
  ;; sekka-history-stack中の無効なマークを持つエントリを削除する
974
+ (sekka-debug-print (format "sekka-history-gc before len=%d\n" (length sekka-history-stack)))
975
+
966
976
  (let ((temp-list '()))
967
977
  (mapcar
968
978
  (lambda (alist)
969
979
  (let ((markers (sekka-assoc-ref 'markers alist nil)))
980
+ (sekka-debug-print (format "markers=%S\n" markers))
981
+ (sekka-debug-print (format "marker-position car=%d\n" (marker-position (car markers))))
982
+ (sekka-debug-print (format "marker-position cdr=%d\n" (marker-position (cdr markers))))
970
983
  (when (and (marker-position (car markers)) ;; 存在するバッファを指しているか
971
984
  (marker-position (cdr markers)))
972
985
  (if (= (marker-position (car markers))
@@ -979,6 +992,8 @@ non-nil で明示的に呼びだすまでGoogleIMEは起動しない。"
979
992
  (push alist temp-list)))))
980
993
  sekka-history-stack)
981
994
 
995
+ (sekka-debug-print (format "sekka-history-gc temp-list len=%d\n" (length temp-list)))
996
+
982
997
  ;; temp-list から limit 件数だけコピーする
983
998
  (setq sekka-history-stack '())
984
999
  (mapcar
@@ -986,7 +1001,8 @@ non-nil で明示的に呼びだすまでGoogleIMEは起動しない。"
986
1001
  (when (< (length sekka-history-stack)
987
1002
  sekka-history-stack-limit)
988
1003
  (push alist sekka-history-stack)))
989
- (reverse temp-list))))
1004
+ (reverse temp-list)))
1005
+ (sekka-debug-print (format "sekka-history-gc after len=%d\n" (length sekka-history-stack))))
990
1006
 
991
1007
 
992
1008
  ;;確定ヒストリから、指定_pointに変換済の単語が埋まっているかどうか調べる
@@ -1060,6 +1076,8 @@ non-nil で明示的に呼びだすまでGoogleIMEは起動しない。"
1060
1076
  ・カーソルから行頭方向にローマ字列が続く範囲でローマ字漢字変換を行う。"
1061
1077
  (interactive)
1062
1078
  ; (print last-command) ; DEBUG
1079
+ (sekka-debug-print "sekka-rK-trans()")
1080
+
1063
1081
 
1064
1082
  (cond
1065
1083
  ;; タイマーイベントを設定しない条件
@@ -1092,6 +1110,7 @@ non-nil で明示的に呼びだすまでGoogleIMEは起動しない。"
1092
1110
 
1093
1111
  (cond
1094
1112
  (sekka-select-mode
1113
+ (sekka-debug-print "<<sekka-select-mode>>\n")
1095
1114
  ;; 候補選択モード中に呼出されたら、keymapから再度候補選択モードに入る
1096
1115
  (funcall (lookup-key sekka-select-mode-map sekka-rK-trans-key)))
1097
1116
 
@@ -1100,6 +1119,7 @@ non-nil で明示的に呼びだすまでGoogleIMEは起動しない。"
1100
1119
  (cond
1101
1120
 
1102
1121
  ((eq (sekka-char-charset (preceding-char)) 'ascii)
1122
+ (sekka-debug-print (format "ascii? (%s) => t\n" (preceding-char)))
1103
1123
  ;; カーソル直前が alphabet だったら
1104
1124
  (let ((end (point))
1105
1125
  (gap (sekka-skip-chars-backward)))
@@ -1124,6 +1144,7 @@ non-nil で明示的に呼びだすまでGoogleIMEは起動しない。"
1124
1144
  )))))
1125
1145
 
1126
1146
  ((sekka-kanji (preceding-char))
1147
+ (sekka-debug-print (format "sekka-kanji(%s) => t\n" (preceding-char)))
1127
1148
 
1128
1149
  ;; カーソル直前が 全角で漢字以外 だったら候補選択モードに移行する。
1129
1150
  ;; また、最後に確定した文字列と同じかどうかも確認する。
@@ -1136,7 +1157,11 @@ non-nil で明示的に呼びだすまでGoogleIMEは起動しない。"
1136
1157
  (sekka-display-function
1137
1158
  (marker-position (car sekka-markers))
1138
1159
  (marker-position (cdr sekka-markers))
1139
- t)))))))
1160
+ t)))
1161
+
1162
+ (t
1163
+ (sekka-debug-print (format "<<OTHER:non-ascii,non-kanji>> (%s)\n" (preceding-char))))))))
1164
+
1140
1165
 
1141
1166
 
1142
1167
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -1276,7 +1301,7 @@ sekka-modeがONの間中呼び出される可能性がある。"
1276
1301
  (setq sekka-timer-rest (- sekka-timer-rest 1))
1277
1302
 
1278
1303
  ;; カーソルがsekka-realtime-guide-limit-lines をはみ出していないかチェック
1279
- (sekka-debug-print (format "sekka-last-lineno [%d] : current-line" sekka-last-lineno (line-number-at-pos (point))))
1304
+ (sekka-debug-print (format "sekka-last-lineno [%d] : current-line\n" sekka-last-lineno (line-number-at-pos (point))))
1280
1305
  (when (< 0 sekka-realtime-guide-limit-lines)
1281
1306
  (let ((diff-lines (abs (- (line-number-at-pos (point)) sekka-last-lineno))))
1282
1307
  (when (<= sekka-realtime-guide-limit-lines diff-lines)
@@ -1318,6 +1343,11 @@ sekka-modeがONの間中呼び出される可能性がある。"
1318
1343
  (overlay-put sekka-guide-overlay 'face 'sekka-guide-face))))
1319
1344
 
1320
1345
 
1346
+ (defun sekka-stop-realtime-guide ()
1347
+ (when (eq this-command 'keyboard-quit)
1348
+ (setq sekka-timer-rest 0)))
1349
+
1350
+
1321
1351
  ;;;
1322
1352
  ;;; human interface
1323
1353
  ;;;
@@ -1367,6 +1397,8 @@ point から行頭方向に同種の文字列が続く間を漢字変換しま
1367
1397
 
1368
1398
  ;; sekka-mode を変更する共通関数
1369
1399
  (defun sekka-mode-internal (arg global)
1400
+ (sekka-debug-print "sekka-mode-internal :1\n")
1401
+
1370
1402
  (or (local-variable-p 'sekka-mode (current-buffer))
1371
1403
  (make-local-variable 'sekka-mode))
1372
1404
  (if global
@@ -1378,7 +1410,13 @@ point から行頭方向に同種の文字列が続く間を漢字変換しま
1378
1410
  (> (prefix-numeric-value arg) 0))))
1379
1411
  (when sekka-sticky-shift
1380
1412
  (add-hook 'sekka-mode-hook 'sekka-sticky-shift-init-function))
1381
- (when sekka-mode (run-hooks 'sekka-mode-hook)))
1413
+ (when sekka-mode (run-hooks 'sekka-mode-hook))
1414
+
1415
+ (sekka-debug-print "sekka-mode-internal :2\n")
1416
+
1417
+ ;; Ctrl-G押下時、リアルタイムガイドをOFFにするhook
1418
+ (add-hook 'post-command-hook 'sekka-stop-realtime-guide)
1419
+ (add-hook 'pre-command-hook 'sekka-stop-realtime-guide))
1382
1420
 
1383
1421
 
1384
1422
  ;; buffer local な sekka-mode を削除する関数
@@ -1417,7 +1455,7 @@ point から行頭方向に同種の文字列が続く間を漢字変換しま
1417
1455
  (setq default-input-method "japanese-sekka")
1418
1456
 
1419
1457
  (defconst sekka-version
1420
- "0.8.7" ;;SEKKA-VERSION
1458
+ "0.8.8" ;;SEKKA-VERSION
1421
1459
  )
1422
1460
  (defun sekka-version (&optional arg)
1423
1461
  "入力モード変更"
@@ -1,6 +1,6 @@
1
1
  class SekkaVersion
2
2
  include Singleton
3
3
  def self.version
4
- "0.8.7"
4
+ "0.8.8"
5
5
  end
6
6
  end
metadata CHANGED
@@ -1,12 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sekka
3
3
  version: !ruby/object:Gem::Version
4
- prerelease: false
4
+ hash: 47
5
+ prerelease:
5
6
  segments:
6
7
  - 0
7
8
  - 8
8
- - 7
9
- version: 0.8.7
9
+ - 8
10
+ version: 0.8.8
10
11
  platform: ruby
11
12
  authors:
12
13
  - Kiyoka Nishiyama
@@ -14,8 +15,7 @@ autorequire:
14
15
  bindir: bin
15
16
  cert_chain: []
16
17
 
17
- date: 2011-06-24 00:00:00 +09:00
18
- default_executable:
18
+ date: 2011-07-30 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: rubyforge
@@ -25,6 +25,7 @@ dependencies:
25
25
  requirements:
26
26
  - - ">="
27
27
  - !ruby/object:Gem::Version
28
+ hash: 3
28
29
  segments:
29
30
  - 0
30
31
  version: "0"
@@ -38,6 +39,7 @@ dependencies:
38
39
  requirements:
39
40
  - - ">="
40
41
  - !ruby/object:Gem::Version
42
+ hash: 3
41
43
  segments:
42
44
  - 0
43
45
  version: "0"
@@ -51,6 +53,7 @@ dependencies:
51
53
  requirements:
52
54
  - - ">="
53
55
  - !ruby/object:Gem::Version
56
+ hash: 3
54
57
  segments:
55
58
  - 0
56
59
  version: "0"
@@ -64,6 +67,7 @@ dependencies:
64
67
  requirements:
65
68
  - - ">="
66
69
  - !ruby/object:Gem::Version
70
+ hash: 3
67
71
  segments:
68
72
  - 0
69
73
  version: "0"
@@ -77,6 +81,7 @@ dependencies:
77
81
  requirements:
78
82
  - - ">="
79
83
  - !ruby/object:Gem::Version
84
+ hash: 3
80
85
  segments:
81
86
  - 0
82
87
  version: "0"
@@ -90,11 +95,12 @@ dependencies:
90
95
  requirements:
91
96
  - - "="
92
97
  - !ruby/object:Gem::Version
98
+ hash: 15
93
99
  segments:
94
100
  - 0
95
101
  - 5
96
- - 1
97
- version: 0.5.1
102
+ - 2
103
+ version: 0.5.2
98
104
  type: :runtime
99
105
  version_requirements: *id006
100
106
  - !ruby/object:Gem::Dependency
@@ -105,6 +111,7 @@ dependencies:
105
111
  requirements:
106
112
  - - ">="
107
113
  - !ruby/object:Gem::Version
114
+ hash: 3
108
115
  segments:
109
116
  - 0
110
117
  version: "0"
@@ -118,6 +125,7 @@ dependencies:
118
125
  requirements:
119
126
  - - ">="
120
127
  - !ruby/object:Gem::Version
128
+ hash: 3
121
129
  segments:
122
130
  - 0
123
131
  version: "0"
@@ -172,7 +180,6 @@ files:
172
180
  - test/sharp-number.nnd
173
181
  - test/skk-azik-table.nnd
174
182
  - test/util.nnd
175
- has_rdoc: true
176
183
  homepage: http://github.com/kiyoka/sekka
177
184
  licenses: []
178
185
 
@@ -186,6 +193,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
186
193
  requirements:
187
194
  - - ">="
188
195
  - !ruby/object:Gem::Version
196
+ hash: 49
189
197
  segments:
190
198
  - 1
191
199
  - 9
@@ -196,13 +204,14 @@ required_rubygems_version: !ruby/object:Gem::Requirement
196
204
  requirements:
197
205
  - - ">="
198
206
  - !ruby/object:Gem::Version
207
+ hash: 3
199
208
  segments:
200
209
  - 0
201
210
  version: "0"
202
211
  requirements: []
203
212
 
204
213
  rubyforge_project:
205
- rubygems_version: 1.3.7
214
+ rubygems_version: 1.7.2
206
215
  signing_key:
207
216
  specification_version: 3
208
217
  summary: Sekka is a SKK like input method.