diff --git a/autoload/eskk.vim b/autoload/eskk.vim index 08671ad1..d490dcd0 100644 --- a/autoload/eskk.vim +++ b/autoload/eskk.vim @@ -75,6 +75,8 @@ let s:eskk_mappings = { \ 'phase:henkan-select:next-page': {}, \ 'phase:henkan-select:prev-page': {}, \ 'phase:henkan-select:escape': {}, + \ 'phase:henkan-select:clear': {}, + \ 'phase:henkan-select:back-to-henkan': {}, \ 'phase:henkan-select:delete-from-dict': {}, \ 'mode:hira:toggle-hankata': {'fn': eskk#util#get_local_func('handle_toggle_hankata', s:SID_PREFIX)}, \ 'mode:hira:ctrl-q-key': {'fn': eskk#util#get_local_func('handle_ctrl_q_key', s:SID_PREFIX)}, @@ -119,6 +121,8 @@ let s:MODE_LOCAL_KEYS = { \ 'phase:henkan-select:next-page', \ 'phase:henkan-select:prev-page', \ 'phase:henkan-select:escape', + \ 'phase:henkan-select:clear', + \ 'phase:henkan-select:back-to-henkan', \ 'mode:hira:toggle-hankata', \ 'mode:hira:ctrl-q-key', \ 'mode:hira:toggle-kata', @@ -141,6 +145,8 @@ let s:MODE_LOCAL_KEYS = { \ 'phase:henkan-select:next-page', \ 'phase:henkan-select:prev-page', \ 'phase:henkan-select:escape', + \ 'phase:henkan-select:clear', + \ 'phase:henkan-select:back-to-henkan', \ 'mode:kata:toggle-hankata', \ 'mode:kata:ctrl-q-key', \ 'mode:kata:toggle-kata', @@ -163,6 +169,8 @@ let s:MODE_LOCAL_KEYS = { \ 'phase:henkan-select:next-page', \ 'phase:henkan-select:prev-page', \ 'phase:henkan-select:escape', + \ 'phase:henkan-select:clear', + \ 'phase:henkan-select:back-to-henkan', \ 'mode:hankata:toggle-hankata', \ 'mode:hankata:ctrl-q-key', \ 'mode:hankata:toggle-kata', @@ -408,6 +416,8 @@ function! s:asym_filter(stash) abort "{{{ let delete_from_dict = eskk#util#key2char(delete_from_dict) let choose_prev = get(mappings['phase:henkan-select:choose-prev'], 'lhs', '') let choose_prev = eskk#util#key2char(choose_prev) + let back_to_henkan = get(mappings['phase:henkan-select:back-to-henkan'], 'lhs', '') + let back_to_henkan = eskk#util#key2char(back_to_henkan) " Convert to real key if sticky_char ==# '' && phase ==# g:eskk#preedit#PHASE_NORMAL let sticky_char = "\" @@ -455,6 +465,14 @@ function! s:asym_filter(stash) abort "{{{ if char ==# ' ' call preedit.choose_next_candidate(a:stash) return + elseif char ==# back_to_henkan + let henkan_result = eskk#get_skk_dict().get_henkan_result() + if !empty(henkan_result) + call preedit.set_henkan_phase(g:eskk#preedit#PHASE_HENKAN) + let yomi = henkan_result.get_key() + let buf_str = preedit.get_buf_str(g:eskk#preedit#PHASE_HENKAN) + call buf_str.rom_pairs.set_one_pair(yomi, yomi, {'converted': 1}) + endif elseif char ==# choose_prev call preedit.choose_prev_candidate(a:stash) return diff --git a/autoload/eskk/dictionary.vim b/autoload/eskk/dictionary.vim index b8252f79..9bd6dc80 100644 --- a/autoload/eskk/dictionary.vim +++ b/autoload/eskk/dictionary.vim @@ -412,6 +412,12 @@ function! s:HenkanResult_select_candidate_prompt(skip_num, fallback) abort dict let mappings = eskk#_get_eskk_mappings() let prev_page = get(mappings['phase:henkan-select:prev-page'], 'lhs', '') let prev_page = eskk#util#key2char(prev_page) + let back_to_henkan = get(mappings['phase:henkan-select:back-to-henkan'], 'lhs', '') + let back_to_henkan = eskk#util#key2char(back_to_henkan) + let escape = get(mappings['phase:henkan-select:escape'], 'lhs', '') + let escape = eskk#util#key2char(escape) + let clear = get(mappings['phase:henkan-select:clear'], 'lhs', '') + let clear = eskk#util#key2char(clear) call eskk#util#assert( \ len(words) > a:skip_num, @@ -454,8 +460,18 @@ function! s:HenkanResult_select_candidate_prompt(skip_num, fallback) abort dict endtry - if char ==# "\" + if char ==# escape return a:fallback + elseif char ==# back_to_henkan + let self._candidates_index = -1 + call self.preedit.set_henkan_phase(g:eskk#preedit#PHASE_HENKAN) + return [self._key, self._okuri] + elseif char ==# clear + let org_preedit = eskk#get_preedit() + call org_preedit.clear_all() + let self._candidates_index = -1 + call org_preedit.set_henkan_phase(g:eskk#preedit#PHASE_NORMAL) + return ['', ''] elseif char ==# ' ' if eskk#util#has_idx(pages, page_index + 1) let page_index += 1 diff --git a/doc/eskk.jax b/doc/eskk.jax index efae8a04..857b6edc 100644 --- a/doc/eskk.jax +++ b/doc/eskk.jax @@ -749,6 +749,27 @@ A. eskkの補完はpum.vimでは動作しないことに注意してください. +Q. 候補一覧表示時に でキャンセルしたいです。 + +A. +> + EskkUnmap -type=phase:henkan-select:escape + EskkMap -type=phase:henkan-select:escape + +Q. 候補一覧表示時のキャンセルで変換前の状態に戻りたいです。 + +A. +> + EskkUnmap -type=phase:henkan-select:escape + EskkMap -type=phase:henkan-select:back-to-henkan + +Q. 候補一覧表示時のキャンセルで入力をクリアしたいです。 + +A. +> + EskkUnmap -type=phase:henkan-select:escape + EskkMap -type=phase:henkan-select:clear + *eskk-faq-use-azik* Q. AZIKで入力したいです。 A. 以下に設定例を示します。 |g:eskk#use_azik| も参照してください。