Skip to content

Commit

Permalink
feat: just save grep_cmd instead of jisyo_list
Browse files Browse the repository at this point in the history
  • Loading branch information
kawarimidoll committed Nov 27, 2023
1 parent 98f30c6 commit 449337d
Showing 1 changed file with 13 additions and 17 deletions.
30 changes: 13 additions & 17 deletions k.vim
Original file line number Diff line number Diff line change
Expand Up @@ -137,27 +137,28 @@ function! k#initialize(opts = {}) abort
\ ], s:user_jisyo_path)
endif

" 変換辞書リスト
let s:jisyo_list = get(a:opts, 'jisyo_list', [])
" 変換辞書リストからgrep_cmdを生成
let jisyo_list = get(a:opts, 'jisyo_list', [])
let exists_user_jisyo = v:false
let s:jisyo_mark_pair = {}
for jisyo in s:jisyo_list
let s:grep_cmd = ''
for jisyo in jisyo_list
if jisyo.path =~ ':'
echoerr "[k#initialize] jisyo.path must NOT includes ':'"
return
endif
let s:jisyo_mark_pair[jisyo.path] = get(jisyo, 'mark', '') ==# '' ? '' : $'[{jisyo.mark}] '
let encoding = get(jisyo, 'encoding', '')
if encoding ==# ''
let jisyo.encoding = 'auto'
endif
if !exists_user_jisyo
let exists_user_jisyo = jisyo.path ==# s:user_jisyo_path
endif
let encoding = get(jisyo, 'encoding', '') ==# '' ? 'auto' : jisyo.encoding
let s:grep_cmd ..= 'rg --no-heading --with-filename --no-line-number'
\ .. $" --encoding {encoding} '^:query:' {jisyo.path} 2>/dev/null; "
let exists_user_jisyo = exists_user_jisyo || jisyo.path ==# s:user_jisyo_path
endfor
if !exists_user_jisyo
" ユーザー辞書がリストに無ければ先頭に追加する
call insert(s:jisyo_list, { 'path': s:user_jisyo_path, 'encoding': 'utf-8', 'mark': 'U' })
" マークはU エンコードはutf-8で固定
let s:jisyo_mark_pair[s:user_jisyo_path] = '[U] '
let s:grep_cmd = 'rg --no-heading --with-filename --no-line-number'
\ .. $" --encoding utf-8 '^:query:' {s:user_jisyo_path} 2>/dev/null; " .. s:grep_cmd
endif

" かなテーブル
Expand Down Expand Up @@ -311,12 +312,7 @@ endfunction

function! k#update_henkan_list(str, exact_match = v:true) abort
let query = a:exact_match ? $'{a:str} ' : $'{a:str}[^ -~]* '
let cmd = ''
for jisyo in s:jisyo_list
let cmd ..= 'rg --no-heading --with-filename --no-line-number'
\ .. $" --encoding {jisyo.encoding} '^{query}' {jisyo.path} 2>/dev/null; "
endfor
let results = systemlist(cmd)
let results = systemlist(substitute(s:grep_cmd, ':query:', query, 'g'))
let henkan_list = []
for r in results
try
Expand Down

0 comments on commit 449337d

Please sign in to comment.