-
-
Notifications
You must be signed in to change notification settings - Fork 2
/
kensaku.jax
168 lines (135 loc) · 5.51 KB
/
kensaku.jax
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
*kensaku.jax* ローマ字による日本語検索機能を提供
Author: Alisue <lambdalisue@gmail.com>
License: MIT License (See LICENSE)
=============================================================================
CONTENTS *kensaku-contents*
INTRODUCTION |kensaku-introduction|
REQUIREMENTS |kensaku-requirements|
INTERFACE |kensaku-interface|
VARIABLES |kensaku-variables|
FUNCTIONS |kensaku-functions|
=============================================================================
INTRODUCTION *kensaku-introduction*
Kensaku (*kensaku.vim*) は Migemo を利用してローマ字のまま日本語検索を行う機能
を提供するプラグインです。既存の Migemo プラグインとは異なり JavaScript で実装
された jsmigemo を利用するため C/Migemo のインストールは不要です。
jemigemo https://github.com/oguna/jsmigemo
C/Migemo https://www.kaoriya.net/software/cmigemo/
=============================================================================
REQUIREMENTS *kensaku-requirements*
denops.vim~
An ecosystem for writing Vim/Neovim plugin in Deno.
https://github.com/vim-denops/denops.vim
=============================================================================
INTERFACE *kensaku-interface*
-----------------------------------------------------------------------------
VARIABLES *kensaku-variables*
*g:kensaku_dictionary_url*
ダウンロードする辞書ファイルの URL です。
値を変更した場合は手動で |g:kensaku_dictionary_cache| に指定されている
ファイルを削除する必要があります。
デフォルトでは https://github.com/oguna/migemo-compact-dict-latest
の v0.2 を利用します。
Default: '...'
*g:kensaku_dictionary_cache*
ダウンロードした辞書ファイルの格納先です。
Default: `~/.cache/kensaku.vim/migemo-compact-dict`
*g:kensaku#rxop#vim*
*g:kensaku#rxop#javascript*
正規表現で使う記号のプリセットです。 |kensaku#query()| で使用します。
>
call kensaku#query("kensaku", {
\ 'rxop': g:kensaku#rxop#vim,
\})
call kensaku#query("kensaku", {
\ 'rxop': g:kensaku#rxop#javascript,
\})
<
-----------------------------------------------------------------------------
FUNCTIONS *kensaku-functions*
*kensaku#query()*
kensaku#query({value}[, {option}])
{value} をローマ字として解釈し、検索するための正規表現を返します。
>
function! Search(value) abort
let @/ = a:value
normal! n
endfunction
call Search(kensaku#query('kensaku'))
<
{option} には以下のパラメータがあります。
"rxop" 正規表現に利用する記号文字の辞書です。
"#{prefix?, or, startGroup, endGroup, startClass, endClass,
newline, escape}" (? は省略可能) で表され、それぞれ以下の意味
を持ちます。
prefix 正規表現前に前置する文字列。未指定時は空文字。
or 選択子 (alternation operator)。|/bar|
startGroup グループ化の開始。|/\(|
endGroup グループ化の終了。|/\)|
startClass 文字クラスの開始。|/\[]|
endClass 文字クラスの終了。|/\[]|
newline 行末。|/\_s|
escape 辞書に含まれる文字のうち、'\' でエスケープする
対象。
kensaku v3 以前で利用していた "[or, startGroup, endGroup,
startClass, endClass, newline, escape]" or "[prefix, or,
startGroup, endGroup, startClass, endClass, newline, escape]"
で表される記号文字リストも利用可能ですが非推奨です。
デフォルト: |g:kensaku#rxop#vim|
>
" :grep で kensaku.vim を使う
command! -nargs=1 KensakuGrep call KensakuGrep(<q-args>)
function! KensakuGrep(input) abort
if !executable('rg')
return
endif
let grepprg = &grepprg
set grepprg=rg\ -e\ $*\ --vimgrep
" :execute は '|' でコマンドを区切るのでエスケープ
execute 'grep' string(kensaku#query(a:input, #{
\ rxop: #{
\ or: '\|',
\ startGroup: '(',
\ endGroup: ')',
\ startClass: '[',
\ endClass: ']',
\ newline: '',
\ escape: '\\.[]{}()*+-?^$|',
\ },
\}))
let &grepprg = grepprg
endfunction
<
*kensaku#query_async()*
kensaku#query_async({value}, {success}[, {option}])
|kensaku#query()| の非同期バージョンで、結果を {success} コールバックに
渡します。
{option} には以下のパラメータがあります。
"rxop" |kensaku#query()| と同じです。
"failure" エラー時に呼ばれるコールバック関数です。
>
function! Search(value) abort
let @/ = a:value
normal! n
endfunction
call kensaku#query_async('kensaku', function('Search'), {
\ 'failure': { e -> ...},
\ 'rxop': ...,
\})
<
*kensaku#set_roman_table()*
kensaku#set_roman_table({romanTable})
ローマ字の変換ルールを定義します。azikなどに対応できます。
{romanTable}は、[roman: string, hiragana: string, remain: number?]の配
列です。romanがhiraganaに変換され、remainの数だけromanが残ります。例え
ば、["qq", "っ", 1]は、「qq」を入力すると「っq」に変換されるルールにな
ります。remainは省略可能で、その場合は0になります。
>
call kensaku#set_roman_table([
\ ["qq", "っ", 1],
\ ["kz", "かん", 0],
\ ...
\])
<
=============================================================================
vim:tw=78:fo=tcq2mM:ts=8:ft=help:norl