eskk.vim
eskk.vim copied to clipboard
バッファごとに句読点のスタイルを変更するには?
質問になってすみません。
文書の種類に応じて異なる句読点のスタイルを用いる必要があって、どうしたものかと思っています。
- 論文のときは
,と. - ふつうの文章では
、と。
を使いわけます。
で、eskk#register_mode_table を使って mode table を変更する方法を知ったため、以下のように SkkTechnical と SkkCasual というコマンドを用意して、eskk が動く出す前であれば、それ以後、利用する mode table を変更できるようにしています。
let s:eskk_mode_tables = [
\ eskk#table#new('rom_to_hira'.'*', 'rom_to_hira'),
\ eskk#table#new('rom_to_kata'.'*', 'rom_to_kata')]
function! s:eskk_register_mode_table()
call eskk#register_mode_table('hira', b:eskk_mode_tables[0])
call eskk#register_mode_table('kata', b:eskk_mode_tables[1])
endfunction
autocmd User eskk-initialize-pre call s:eskk_register_mode_table()
function! s:eskk_punctuation(punctuation_mapping)
for table in s:eskk_mode_tables
for [from, to] in a:punctuation_mapping
call table.add_map(from, to)
endfor
endfor
endfunction
command SkkTechnical call s:eskk_punctuation([[',', ','], ['.', '.']])
command SkkCasual call s:eskk_punctuation([[',', '、'], ['.', '。']])
でも、実際にはいろいろな種類の文書をひとつの vim で編集したいので、できればバッファごとに設定できると嬉しいです。
よい方法があったらご教示いただけませんでしょうか。 (本当は編集中に mode table を交換できればさらに嬉しいですが…)
https://github.com/tyru/eskk.vim/blob/master/autoload/eskk.vim#L2026
既に存在するテーブルは上書きできない模様です。
でも、実際にはいろいろな種類の文書をひとつの vim で編集したいので、できればバッファごとに設定できると嬉しいです。
要望としては分かるんですが、データ構造がグローバルになっておりこれをバッファーローカルに変更するのはすさまじく手間がかかるので無理といってよいでしょう。
ご回答ありがとうございました。今のやりかたが現実的な対処法なことがわかっただけでもありがたいです。
どうぞ、close して下さい。
誰かが対処方法を見つけてくれるかもしれないので、一応残しておきます