-
Notifications
You must be signed in to change notification settings - Fork 41
/
dot.skk
784 lines (652 loc) · 30.9 KB
/
dot.skk
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
;;; dot.skk --- examples for SKK init file -*- mode: emacs-lisp; coding: utf-8 -*-
;;; Commentary:
;; 以下は ~/.skk の設定例集です。
;; (注意)
;; このファイルは ~/.skk に直接コピーして使用するように意図されたものでは
;; ありません。必要な設定例のみコピーして使用してください。
;;; Code:
;; @@ 基本中の基本の設定
;; 辞書サーバを使うとき
;; (setq skk-server-host "localhost"
;; skk-server-portnum 1178
;; skk-server-report-response t)
;; 辞書サーバを使わないとき
;; SKK が検索する CDB 形式辞書 (DDSKK 14 以降)
;; (setq skk-cdb-large-jisyo "/usr/share/skk/SKK-JISYO.L.cdb")
;; SKK が検索する辞書
;; (setq skk-large-jisyo "/usr/share/skk/SKK-JISYO.L")
;; ja-dic.el を利用したかな漢字変換(DDSKK 14.2〜)を無効とする
;; (setq skk-inhibit-ja-dic-search t)
;; SHIFT キーを使うことなく、見出し語・送り仮名の位置を指定する
;; (setq skk-sticky-key ";")
;; @@ 表示の設定
;; 各種メッセージを日本語で通知する
(setq skk-japanese-message-and-error t)
;; skk-version() の結果を日本語で表示する
;; nil => Daredevil SKK/15.1 (Umeda)
;; t => Daredevil SKK/15.1 (梅田)
(setq skk-version-codename-ja t)
;; モードライン上の表示を変更する
;; 'left => モードラインの左端に表示する
;; 以外 => マイナーモードとして表示する
;; (setq skk-status-indicator 'minor-mode)
;; モードラインに SKK アイコンを表示する。
(setq skk-show-icon t)
;; マーカー(▼と▽)を変更する
;; https://github.com/skk-dev/ddskk/issues/162
(defun skk-set-display-table ()
(walk-windows (lambda (w)
(let ((disptab (make-display-table)))
(aset disptab ?\▼ (vector (make-glyph-code ?# 'escape-glyph)))
(aset disptab ?\▽ (vector (make-glyph-code ?@ 'escape-glyph)))
(set-window-display-table w disptab)))))
(add-hook 'window-configuration-change-hook #'skk-set-display-table)
(add-hook 'after-init-hook #'skk-set-display-table)
;; カーソル付近にモード切り替えを表示する
;; (setq skk-show-mode-show t) ; M-x skk-show-mode でトグル可。
;; (setq skk-show-mode-style 'tooltip) ;デフォルトは 'inline
;; (set-face-background 'skk-show-mode-inline-face "DodgerBlue")
;; メニューバーの表示
;; Non-nil => 日本語
;; nil => 英語
;; (setq skk-show-japanese-menu nil)
;; 変換時に注釈 (annotation) を表示する
(setq skk-show-annotation
t ; 常に表示
; '(not list) ; *候補*バッファでは非表示
; '(not minibuf) ; ミニバッファでは非表示
; '(not list minibuf) ; 両方とも非表示
)
;; 注釈を表示するまでの遅延を秒で指定する
(setq skk-annotation-delay 0) ;デフォルトは1.0秒
;; 注釈 (annotation) の表示の仕方
;; Non-nil => エコーエリアに表示する (デフォルト)
;; nil => 別な window に表示する
;; (setq skk-annotation-show-as-message nil) ;`skk-show-tooltip' が優先される
;; 変換前/変換中にエコーエリアに冗長なメッセージを表示
(setq skk-verbose t)
;; カーソルに色を付けない
;; (setq skk-use-color-cursor nil)
;; (when skk-use-color-cursor
;; ;; カーソル色を変えてみる
;; (setq skk-cursor-hiragana-color "blue"
;; skk-cursor-katakana-color "green"
;; skk-cursor-abbrev-color "red"
;; skk-cursor-jisx0208-latin-color "red"
;; skk-cursor-jisx0201-color "purple"
;; skk-cursor-latin-color "cyan")
;; ;;
;; (set-face-foreground 'skk-prefix-hiragana-face skk-cursor-hiragana-color)
;; (set-face-foreground 'skk-prefix-katakana-face skk-cursor-katakana-color)
;; (set-face-foreground 'skk-prefix-jisx0201-face skk-cursor-jisx0201-color))
;; インジケータに色を付けない
;; (setq skk-indicator-use-cursor-color nil)
;; インジケータをシンプルにする
(setq skk-indicator-prefix "")
(setq skk-indicator-suffix-func #'(lambda (mode)
(if (memq mode '(latin abbrev))
" "
"")))
;; ;; [残り 99++]
;; 表示を右端へ寄せてみる
;; (setq skk-henkan-rest-indicator t)
;; 適用するフェイス
;; (copy-face 'font-lock-keyword-face 'skk-henkan-rest-indicator-face)
;; `$' skk-display-code-for-char-at-point で使用するフェイス
(set-face-attribute 'skk-display-code-prompt-face nil
:foreground "cyan"
:bold t)
(set-face-attribute 'skk-display-code-char-face nil
:height 150
:foreground "white"
:background "black")
;; @@ 基本的なユーザ・インターフェース
;; 候補一覧を表示するまでの `skk-start-henkan-char' を打鍵する回数
;; (setq skk-show-candidates-nth-henkan-char 5) ; 2 以上の整数である必要
;; いちどに表示する候補の数
;; (setq skk-henkan-number-to-display-candidates 5)
;; 前候補/前候補群に戻る操作
;; (setq skk-previous-candidate-keys (list "x" "\C-p"))
;; ▼モードで Enter キーを押したとき
;; nil => 確定と改行(デフォルト)
;; non-nil => 確定するのみ。改行しない。
(setq skk-egg-like-newline t)
;; ▼モードで BS を押したときには確定しないで前候補を表示する
;; (setq skk-delete-implies-kakutei nil)
;; 対応する閉括弧を自動的に挿入する
(setq skk-auto-insert-paren t)
;; リージョンを括弧で囲む
(setq skk-use-auto-enclose-pair-of-region t)
;; 確定アンドゥ
(define-key skk-j-mode-map (kbd "C-M-j") 'skk-undo-kakutei)
;; ▽モードと▼モード時のアンドゥ情報を記録しない
;; (setq skk-undo-kakutei-word-only t)
;; 句読点に ., を使う
;; (setq-default skk-kutouten-type 'en)
;; 句読点を動的に決定する
;; (add-hook 'skk-mode-hook
;; (lambda ()
;; (save-excursion
;; (goto-char 0)
;; (make-local-variable 'skk-kutouten-type)
;; (if (re-search-forward "。" 10000 t)
;; (setq skk-kutouten-type 'en)
;; (setq skk-kutouten-type 'jp)))))
(define-key skk-j-mode-map (kbd "M-,") 'skk-toggle-kutouten)
;; 見出し語の補完を行う際の候補の表示順
;; (setq skk-comp-circulate t)
;; 見出し語の補完動作(前候補の出力) Shift + TAB を無効化する
;; (setq skk-previous-completion-use-backtab nil)
;; 動的な補完を使う
;; (setq skk-dcomp-activate t)
;; ▽ほ-!-んとう の「んとう」の face
;; (set-face-foreground 'skk-dcomp-face "green")
;; 動的補完の可否を判定するより高度な設定例
(setq skk-dcomp-activate
#'(lambda ()
(and
;; -nw では動的補完をしない。
window-system
;; 基本的に行末のときのみ補完する。ただし行末でなくても現在の
;; ポイントから行末までの文字が空白のみだったら補完する。
(or (eolp)
(looking-at "[ \t]+$")))))
;; 動的補完で候補を複数表示する
;; (setq skk-dcomp-multiple-activate t
;; skk-dcomp-multiple-rows 10)
;; 動的補完では、「見出し語を補完する」のではなく、
;; 「先頭一致する見出し語に対応する候補」を複数表示する
(when skk-dcomp-multiple-activate
(require 'skk-pre-henkan) ; experimental/skk-pre-henkan.el
)
;;; ▽ほ*んとう-!-
;;; ほ んとう
;;; ほ かん
;;; ほ うほう
;; 「ほ」のフェイス
;; (set-face-foreground 'skk-dcomp-multiple-face "COLOR")
;; 「んとう」、「かん」、「うほう」のフェイス
;; (set-face-foreground 'skk-dcomp-multiple-trailing-face "COLOR")
;; 選択位置のフェイス
;; (set-face-foreground 'skk-dcomp-multiple-selected-face "COLOR")
;; viper と組み合わせて使う
;; (setq skk-use-viper t)
;; 確定には C-j ではなく【変換キー】を使う
;; (setq skk-kakutei-key [henkan])
;; 注) 変換キーは、Emacs on XFree86 では [henkan]
;; Meadow と NTEmacs では [convert]
;; 接頭・接尾辞変換のキーを設定する
;; 例 1) 標準の設定
;; (setq skk-special-midashi-char-list '(?> ?< ??))
;; 例 2) ? は普通に入力したいから外す
;; (setq skk-special-midashi-char-list '(?> ?<))
;; 例 3) 文字キーは普通に入力したいから他のキーを使う
;; (setq skk-special-midashi-char-list nil)
;; (define-key skk-j-mode-map [muhenkan] 'skk-process-prefix-or-suffix)
;; @@ かな入力関連の設定
;; 半角カナ入力メソッドを使う
;; (setq skk-use-jisx0201-input-method t)
;; かな配列キーボードで入力する
;; (setq skk-use-kana-keyboard t)
;; (when skk-use-kana-keyboard
;; ;; 旧 JIS 配列を使う
;; ;; (setq skk-kanagaki-keyboard-type '106-jis)
;; ;; 親指シフトエミュレーションを使う
;; (setq skk-kanagaki-keyboard-type 'omelet-jis)
;; ;; OASYS 風の後退・取消キーを使う
;; (setq skk-nicola-use-koyubi-functions t))
;; Microsoft Windows の IME のようにファンクションキーにいくつかの変換機能を割り当てる
;; conversion => skk-search-prog-list-{1-9,0} を実行できる。
;; kanagaki => かなキーボード入力用の設定になる。
;; nil => 自動設定しない(自分で好きな設定ができる) デフォルト
(setq skk-j-mode-function-key-usage 'conversion)
;; 注) 標準では以下の変換機能が割り当てられます。
;; [F5]単漢字 [F6]無変換 [F7]カタカナ [F8]半角カナ [F9]全角ローマ [F10]ローマ
;; (setq skk-verbose t) と併用すると上記の割り当て情報がメッセージされます。
;; かなモードにおいて、モード変更を伴わなくとも
;; ASCII 数字の直後であれば、長音(ー)を `-' に
;; 句点(。)を `.' に
;; 読点(、)を `,' に
;; JISX0208(全角)数字の直後であれば、長音(ー)を `−' に
;; 句点(。)を `.' に
;; 読点(、)を `,' に
;; (setq skk-use-auto-kutouten t)
;; @@ 変換動作の調整
;; 送り仮名が厳密に正しい候補を優先して表示する
;; (setq skk-henkan-strict-okuri-precedence t)
;; 辞書登録のとき、余計な送り仮名を送らないようにする
;; (setq skk-check-okurigana-on-touroku 'auto)
;; 変換の学習
(require 'skk-study)
;;;; @@ 候補の表示方法
;; 変換中の文字列をハイライトしない
;; (setq skk-use-face nil)
(when skk-use-face
;; ;; 変換文字列の色を変えてみる
;; ;; 注) `skk-treat-candidate-appearance-function' の設定が優先されます。
;; (setq skk-henkan-face (skk-make-face 'DimGray/PeachPuff1))
)
;; A S D F J K L に適用するフェイス
;; (set-face-attribute 'skk-henkan-show-candidates-keys-face nil
;; :foreground "black"
;; :background white"")
;; 漢字変換の候補の表示は、次の変数で指定します。
;; このうち2つ以上が non-nil の場合は、記載の順に優先適用されます。
;; 1. skk-show-inline
;; 2. skk-show-tooltip
;; 3. skk-show-candidates-always-pop-to-buffer
;; (4. echo area)
;; 変換候補をインラインに
;; nil => 表示しない (デフォルト)
;; t => 表示する
;; 'vertical => 縦型インラインに表示する
;; (setq skk-show-inline t)
(when skk-show-inline
;; 変換候補の装飾に変数 `skk-treat-candidate-appearance-function' を利用
;; するならば、skk-inline-show-face を nil に設定すること
(setq skk-inline-show-face nil
skk-inline-show-background-color "gray15" ;偶数ラインの背景色
skk-inline-show-background-color-odd "gray20")) ;奇数ラインの背景色
;; 変換候補一覧と注釈 (annotation) の表示をエコーエリアに代えて tooltip で表示する
(setq skk-show-tooltip t)
;; ;; Tip 描画に pos-tip を利用してみる
;; ;; http://www.emacswiki.org/emacs-en/PosTip
;; (require 'pos-tip)
;; (setq skk-tooltip-function
;; #'(lambda (tooltip-str)
;; (pos-tip-show tooltip-str nil nil nil 0)))
;; ;; Tip 描画に popup-tip を利用してみる
;; ;; http://github.com/m2ym/auto-complete
;; (require 'popup)
;; (setq skk-tooltip-function
;; #'(lambda (tooltip-str)
;; (popup-tip tooltip-str)))
(when skk-show-tooltip
;; tooltip のルックスを指定する。
;; 文字の前景色と背景色の適用は、下記の順の上位ほど優先される。
;; `skk-treat-candidate-appearance-function'
;; `skk-tooltip-face'
;; `skk-tooltip-parameters'
;; `tooltip-frame-parameters'
;; `tooltip' face
(setq skk-tooltip-parameters
'((background-color . "alice blue")
(border-color . "royal blue")
(foreground-color . "gray") ;`skk-tooltip-face' が優先される
(internal-border-width . 3) ;境界線と文字との間の余白
))
;; (setq skk-tooltip-face 'font-lock-doc-face) ; 例
;; Tooltip 表示位置の調整。Tooltip の表示位置は OS (Window System) や
;; Emacs のバージョン、フォント設定など諸々の影響を受けてずれるので、
;; 自分の環境に合わせて微調整します。
;; (setq skk-tooltip-x-offset 3)
;; (setq skk-tooltip-y-offset 10)
;; Tooltip を表示する場合の、マウスポインタの挙動。
;; follow => tip の位置に移動する。
;; avoid => ウィンドウの端に退避する。
;; avoid-maybe => ウィンドウ上にあるマウスポインタのみ退避する。
;; banish => ウィンドウの端に退避したまま帰ってこない。
;; nil => 退避しない。この場合、tip のテキストとマウスポインタが
;; 重なってしまうこともある。
(setq skk-tooltip-mouse-behavior 'avoid-maybe)
;; tooltip 表示の際のマウスポインタを変更して遊んでみる
;; 注) この設定は X Window System 上の GNU Emacs でないと利用できません。
(defadvice skk-tooltip-show-at-point (around set-pointer activate)
(let ((shape x-pointer-shape))
(require 'avoid)
(mouse-avoidance-set-pointer-shape (if (ad-get-arg 1)
x-pointer-pencil
x-pointer-hand1))
(unwind-protect
ad-do-it
(mouse-avoidance-set-pointer-shape shape))))
)
;; 変換候補を別ウインドウに表示する
;; nil => 変換候補をエコーエリアに表示する (デフォルト)
;; Non-nil => *候補*バッファ を pop-to-buffer する。
;; (setq skk-show-candidates-always-pop-to-buffer t)
;; *候補*バッファ の背景色
;; (setq skk-candidate-buffer-background-color "grey90"
;; skk-candidate-buffer-background-color-odd "grey80")
;;; ;; (setq skk-show-inline 'vertical) を装飾する関数
;; (setq skk-inline-show-vertically-decor
;; #'skk-inline-show-vertically-decor-func)
;;; ;; (setq skk-show-tooltip t) を装飾する関数
;; (setq skk-tooltip-show-at-point-decor
;; #'skk-tooltip-show-at-point-decor-func)
;;; ;; (setq skk-show-candidates-always-pop-to-buffer t) を装飾する関数
;; (setq skk-henkan-show-candidates-buffer-decor
;; #'skk-henkan-show-candidates-buffer-decor-func)
;; @@ window 管理
(dolist (buf '(("\\*SKK annotation\\*" display-buffer-at-bottom)
("\\*候補\\*" display-buffer-at-bottom)
(" *数値変換タイプ*" display-buffer-at-bottom)))
(setq display-buffer-alist (cons buf display-buffer-alist)))
;; @@ 候補表示の装飾(フェイス)に関する高度な設定
;; 注) 候補の個人辞書への登録においても、`skk-update-jisyo-function' を
;; 設定することで同様のカスタマイズができます。「個人辞書に関する設定」の
;; 例をご覧ください。
(setq skk-treat-candidate-appearance-function
#'(lambda (candidate listing-p)
(let* ((value (skk-treat-strip-note-from-word candidate))
(cand (car value)) ;候補
(note (cdr value)) ;注釈
(sep (if note ;セパレータ
(propertize (if (skk-annotation-display-p 'list)
" ≒ "
" !")
'face 'skk-emacs-jisx0208-latin-face)
nil)))
(cond (note
(put-text-property 0 (length cand)
'face 'skk-emacs-jisx0201-face cand)
(put-text-property 0 (length note)
'face 'skk-emacs-katakana-face note)
(cons cand (cons sep note)))
(t
(put-text-property 0 (length cand)
'face 'skk-emacs-hiragana-face cand)
cand)))))
;; `$' skk-display-code-for-char-at-point() は必ず tooltip で表示
(advice-add #'skk-display-code-for-char-at-point :around
#'(lambda (orig-func &rest args)
(let ((skk-show-tooltip t)
skk-display-code-char-face)
(set-face-attribute 'skk-display-code-char-face nil
:foreground "black"
:height 400)
(apply orig-func args))))
;; @@ 辞書検索に関連した設定
;; From DDSKK 14.2:
;; メイン辞書(L 辞書、CDB 形式辞書、辞書サーバ)以外の辞書を指定する
;; `skk-search-prog-list' を手動で設定している場合は、この機能の動作は
;; 保証されません。
(setq skk-extra-jisyo-file-list
(list "/usr/share/skk/SKK-JISYO.JIS2"
'("/usr/share/skk/SKK-JISYO.JIS3_4" . euc-jisx0213)
"/usr/share/skk/SKK-JISYO.notes"
"/usr/share/skk/SKK-JISYO.assoc"
"/usr/share/skk/SKK-JISYO.edict"
"/usr/share/skk/SKK-JISYO.geo"
"/usr/share/skk/SKK-JISYO.hukugougo"
"/usr/share/skk/SKK-JISYO.jinmei"
"/usr/share/skk/SKK-JISYO.law"
"/usr/share/skk/SKK-JISYO.lisp"
"/usr/share/skk/SKK-JISYO.okinawa"
"/usr/share/skk/SKK-JISYO.propernoun"
"/usr/share/skk/SKK-JISYO.pubdic+"
"/usr/share/skk/SKK-JISYO.station"
"/usr/share/skk/SKK-JISYO.zipcode"
"/usr/share/skk/SKK-JISYO.office.zipcode"))
;; 注 辞書ファイル名のリストを指定します。その辞書ファイルが `skk-jisyo-code' と
;; は異なるコード系 (coding system) で作成・保存されている場合は、ファイル名の
;; 代わりに ("ファイル名" . コード系) のペアを指定することが推奨されます。
;; 上記の SKK-JISYO.JIS3_4 の例をご覧ください。
;; 異体字の候補を表示する
;; skk マニュアル「異体字へ変換する」
(setq skk-itaiji-jisyo
;; "/usr/share/skk/SKK-JISYO.itaiji"
"/usr/share/skk/SKK-JISYO.ivd")
(defun skk-itaiji-henkan (&optional arg)
(interactive "p")
(let ((c (following-char))
(skk-search-prog-list '((skk-search-itaiji))))
(forward-char)
(skip-chars-forward (format "[%s-%s]"
(char-to-string #xE0100)
(char-to-string #xE01EF)))
(skk-set-henkan-point-subr)
(insert c)
(skk-start-henkan arg)))
(define-key skk-j-mode-map (kbd "C-c v") 'skk-itaiji-henkan)
;; look コマンドを使った検索を行う
(setq skk-use-look t)
(when skk-use-look
;; look が見つけた語を見出し語として検索する
(setq skk-look-recursive-search t)
;; ispell を look と一緒に使うのはやめる
(setq skk-look-use-ispell nil)
;; look に渡すコマンドラインオプションの設定。補完時と検索時それぞれに
;; ついて設定できる。
;; look で case を見るときは、それ専用の辞書を sort コマンドで作る必要
;; がある (look の引数 -d, -f は sort の引数 -d, -f と一致させておく必
;; 要がある)。
;; (*) 補完時には引数 -d を指定すると dcomp との併用時に問題あることが
;; 報告されているため、-d を指定しないことをお勧めします。
(setq skk-look-completion-arguments "%s /usr/share/dict/words")
(setq skk-look-conversion-arguments "-df %s /usr/share/dict/words")
;; `skk-abbrev-mode' で skk-look を使った検索をしたときに確定情報を
;; 個人辞書に記録しないようにする
(add-hook 'skk-search-excluding-word-pattern-function
;; KAKUTEI-WORD を引数にしてコールされるので、不要でも引数を取る
;; 必要あり
#'(lambda (kakutei-word)
(and skk-abbrev-mode
(save-match-data
;; `skk-henkan-key' が "*" で終わるとき、または
;; `skk-henkan-key' が数字のみのとき
(or (string-match "\\*$" skk-henkan-key)
(string-match "^[0-9]*$" skk-henkan-key)))))))
;; 数値変換機能を使う
(setq skk-use-numeric-conversion t)
(when skk-use-numeric-conversion
;; 数値変換の検索から除外する辞書検索プログラムを指定する
(setq skk-non-numeric-prog-list
'(skk-look
skk-tankan-search
(skk-search-jisyo-file "/usr/share/skk/SKK-JISYO.jinmei" 10000))))
;; Lookup を利用した変換を行う
(if (featurep 'skk-lookup)
(setq skk-search-prog-list (skk-nunion skk-search-prog-list
'((skk-lookup-search)))))
;; 送りあり変換を送りなし変換と同じ操作でできるようにする
;; (setq skk-auto-okuri-process t)
;; カタカナ語を変換候補に加える。1、2 を好みで選んでください
;; 例 1) 単純にカタカナに変換したものを加える
;; (setq skk-search-katakana t)
;; 例 2) 全角カタカナの候補と半角カタカナの候補を共に加える
;; (setq skk-search-katakana 'jisx0201-kana)
;; 注) `skk-search-prog-list' を手動で設定している場合はこの機能の
;; 動作は保証されません。
;; サ行変格活用の動詞も送りあり変換出来るようにする
;; (setq skk-search-sagyo-henkaku t)
;; 注) `skk-search-prog-list' を手動で設定している場合はこの機能の
;; 動作は保証されません。
;; 辞書検索に関する高度な設定 --
;; ユーザオプションに頼らず検索方法と検索順を自分で制御する方法
;; (setq skk-search-prog-list
;; '(;; 0. 確定辞書
;; (skk-search-kakutei-jisyo-file skk-kakutei-jisyo 10000 t)
;; ;; 注) 確定変換機能を使うときには上記設定します。
;; ;; 確定変換機能については info を参照してください。
;; ;; 1. 個人辞書
;; (skk-search-jisyo-file skk-jisyo 0 t)
;; ;; 2. list の前方に置くべき機能
;; (skk-abbrev-search)
;; (skk-look)
;; (skk-okuri-search)
;; ;; 3. 以下に直接検索したい辞書を検索順に列挙する
;; (skk-search-jisyo-file
;; '("/usr/share/skk/SKK-JISYO.L" . euc-jp) 10000)
;; (skk-search-jisyo-file
;; '("/usr/share/skk/SKK-JISYO.JIS2" . euc-jp) 10000)
;; (skk-search-jisyo-file
;; '("/usr/share/skk/SKK-JISYO.JIS3_4" . euc-jisx0213) 10000)
;; (skk-search-jisyo-file
;; '("/usr/share/skk/SKK-JISYO.assoc" . euc-jp) 10000)
;; (skk-search-jisyo-file
;; '("/usr/share/skk/SKK-JISYO.edict" . euc-jp) 10000)
;; (skk-search-jisyo-file
;; '("/usr/share/skk/SKK-JISYO.geo" . euc-jp) 10000)
;; (skk-search-jisyo-file
;; '("/usr/share/skk/SKK-JISYO.hukugougo" . euc-jp) 10000)
;; (skk-search-jisyo-file
;; '("/usr/share/skk/SKK-JISYO.jinmei" . euc-jp) 10000)
;; (skk-search-jisyo-file
;; '("/usr/share/skk/SKK-JISYO.law" . euc-jp) 10000)
;; (skk-search-jisyo-file
;; '("/usr/share/skk/SKK-JISYO.okinawa" . euc-jp) 10000)
;; (skk-search-jisyo-file
;; '("/usr/share/skk/SKK-JISYO.propernoun" . euc-jp) 10000)
;; (skk-search-jisyo-file
;; '("/usr/share/skk/SKK-JISYO.pubdic+" . euc-jp) 10000)
;; (skk-search-jisyo-file
;; '("/usr/share/skk/SKK-JISYO.station" . euc-jp) 10000)
;; (skk-search-jisyo-file
;; '("/usr/share/skk/SKK-JISYO.zipcode" . euc-jp) 10000)
;; (skk-search-jisyo-file
;; '("/usr/share/skk/SKK-JISYO.office.zipcode" . euc-jp) 10000)
;; ;; 4. その他の検索手段を検索順に列挙する
;; (skk-lookup-search)
;; (skk-search-server skk-aux-large-jisyo 10000)
;; (skk-search-katakana t)
;; ;; 注) 3 → 4 は好みにより 4 → 3 の順にすることもできる
;; ;; 5. list の後方に置くべき機能
;; (skk-search-sagyo-henkaku)
;; ))
;; 注) `skk-search-prog-list' は厳密な意味でのユーザオプションではないので
;; 直接設定することはお勧めしません。自分が何をしようとしているか理解し
;; ている場合のみ設定してください。
;; 単漢字変換を行う ▽よみ@<SPC>
;; DDSKK 14.2 からは特段の設定の必要なしに標準で単漢字変換が行えます。
(set-face-attribute 'skk-tankan-face nil
:foreground "yellow"
:height 150)
(set-face-foreground 'skk-tankan-radical-name-face
"gray40")
;; @@ 個人辞書に関する設定
;; 複数の Emacsen を起動して個人辞書を共有する
(setq skk-share-private-jisyo t)
;; 10 分放置すると個人辞書が自動的に保存される設定
(defvar skk-auto-save-jisyo-interval 600)
(defun skk-auto-save-jisyo ()
(skk-save-jisyo)
;; skk-bayesian.el を使っていなければ以下の 2 行はコメントアウト
;; (skk-bayesian-save-history)
;; (skk-bayesian-corpus-save)
)
(run-with-idle-timer skk-auto-save-jisyo-interval
skk-auto-save-jisyo-interval
'skk-auto-save-jisyo)
;; (cancel-function-timers 'skk-auto-save-jisyo)
;; 単語登録/単語削除のたびに個人辞書を保存する
;; (setq skk-save-jisyo-instantly t)
;; 個人辞書の文字コードを指定する
;; (setq skk-jisyo-code 'utf-8)
;; 注) この設定は気をつけないと辞書の検索ができなくなりますので十分理
;; 解してから行ってください。 `skk-jisyo-code' は個人辞書の読み書きの
;; 他、L 辞書などの読み込みコードも決めている影響力の強い変数です。
;; この設定をした場合は、まず個人辞書を上記のコードに変換しなければ
;; いけません。その上で、さらに以下のいずれかの対処をする必要があり
;; ます。
;;
;; 方針 1) Emacs のバッファに読み込む辞書を全て `skk-jisyo-code' と同じ
;; 文字コードに変換する
;; 方針 2) `skk-search-prog-list' の要素を全て文字コード指定に書き直す。
;; 例えば
;;
;; (setq skk-search-prog-list
;; '((skk-search-jisyo-file skk-jisyo 0 t)
;; [...]
;; (skk-search-jisyo-file (cons skk-large-jisyo 'euc-jp) 10000)
;; [...]
;; ))
;;
;; なお、辞書サーバとの通信の際の文字コードなどは気にする必要はありません。
;;
;; このことに関しては上記「辞書検索に関する高度な設定」の部分も参照す
;; ることをお勧めします。
;; 個人辞書の更新方法に関する設定
;;
;; 以下は注釈が長すぎる場合に個人辞書から注釈を除外して候補を登録する
;; 設定例です。この他にも色々なカスタマイズが考えられます。
(setq skk-update-jisyo-function
#'(lambda (word &optional purge)
(if purge
(skk-update-jisyo-original word purge)
(let* ((pair (skk-treat-strip-note-from-word word))
(cand (car pair))
(note (cdr pair)))
(when (and (stringp note)
(> (length note) 8))
;; 注釈が 8 文字より長かったら注釈を消して登録する
(setq note nil))
(setq word (if (stringp note)
(concat cand ";" note)
cand))
(skk-update-jisyo-original word)))))
;; @@ 辞書登録に関する設定
;; 強制的に辞書登録モードに入るキーキャラクタ
;; (setq skk-force-registration-mode-char ?.)
;; 「↓辞書登録中↓」に適用するフェイス
;; skk-jisyo-registration-badge-face
;; @@ skk-search-web.el
;; (setq skk-use-search-web t)
(when skk-use-search-web
;; ;; 辞書変換が尽きたら Google CGI API for Japanese Input による変換を実行
;; ;; https://www.google.co.jp/ime/cgiapi.html
;; (add-to-list 'skk-search-prog-list
;; '(skk-search-web 'skk-google-cgi-api-for-japanese-input)
;; t)
;; ;; 辞書登録モードに移ったときの初期値に Google サジェストを利用する
;; (setq skk-read-from-minibuffer-function
;; (lambda ()
;; (car (skk-google-suggest skk-henkan-key))))
;; ;; 動的補完 (Dynamic Completion) に Google サジェストを表示
;; (add-to-list 'skk-completion-prog-list '(skk-comp-google) t)
)
;; @@ SKK abbrev mode
;; 見出し語の補完において Lisp シンボルも補完する
;; (add-to-list 'skk-completion-prog-list
;; '(skk-comp-lisp-symbol) t)
;; @@ server completion
;; (add-to-list 'skk-search-prog-list
;; '(skk-server-completion-search) t)
;; (add-to-list 'skk-completion-prog-list
;; '(skk-comp-by-server-completion) t)
;; @@ その他いろいろ
;; いつでもどこでも領域選択して Wikipedia/Wiktionary を調べる。
;; (global-set-key "\M-i" 'skk-annotation-lookup-region-or-at-point)
;; 注) 基本形の (活用形/複数形などでない) 英単語なら領域を選択せずとも M-i
;; だけで調べることが可能です。例えば en.wiktionary を使うと「どこでも
;; 英英辞典」のように使えて便利です。 skk-annotation-other-sources
;; の設定がデフォルト値であれば、英単語にカーソルを置いて M-3 M-i で常
;; に en.wiktionary を調べることができます (Apple OS X では M-4 M-i)。
;; アノテーション に代えて Wikipedia/Wiktionary を表示しているとき、
;; C-o で browse-url が起動します。eww で閲覧する設定は次のとおり。
;; (setq browse-url-browser-function 'eww-browse-url)
;; Tips といえるものではないが、`lisp-interaction-mode' において "C-j"
;; (`eval-print-last-sexp') を利用する人にとっては、英数モードにおいて
;; "C-j" によって かなモードに入る仕様は使いづらい。
;; (defadvice skk-latin-mode (after no-latin-mode-in-lisp-interaction activate)
;; "`lisp-interaction-mode' において英数モードを回避する。"
;; (when (eq major-mode 'lisp-interaction-mode)
;; (skk-mode-off)))
;; ■モードのまま C-j を有効とする
(defun skk-C-j-key (arg)
(interactive "P")
(let ((enable-modes '(lisp-interaction-mode ; eval-print-last-sexp
emacs-lisp-mode ; newline-and-indent
;; and more.
)))
(cond
((and (null (skk-in-minibuffer-p))
(null skk-henkan-mode)
(member major-mode enable-modes))
(skk-emulate-original-map arg))
(t
(skk-kakutei arg)))))
(add-to-list 'skk-rom-kana-rule-list
'(skk-kakutei-key nil skk-C-j-key))
;; よく使う英単語を■モードのままでも
(add-to-list 'skk-rom-kana-rule-list
'("http" nil "http://"))
;; 日本語と英語の間に空白を自動挿入する
;; http://hins11.jugem.jp/?eid=47
;;; orgtbl-mode
;;; http://mail.ring.gr.jp/skk/201807/msg00001.html
(skk-wrap-newline-command orgtbl-ret)
(defadvice org-delete-backward-char (around skk-ad activate)
(skk-delete-backward-char N)
ad-do-it)
;;; dot.skk ends here