Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

After searching backward, the n-direction is wrong #2

Open
toshi32tony3 opened this issue Jan 1, 2016 · 3 comments
Open

After searching backward, the n-direction is wrong #2

toshi32tony3 opened this issue Jan 1, 2016 · 3 comments

Comments

@toshi32tony3
Copy link

backward検索後、n/Nのカーソル移動方向がforward検索時と同じになっています。

@haya14busa
Copy link
Owner

以下のようなマッピングをしてないでしょうか?

let g:incsearch#consistent_n_direction = 1

デフォルト状態だと再現しないように思います

@toshi32tony3
Copy link
Author

コメントありがとうございます。consistent_n_directionは使用していません。
再確認したのですが、現象が再現しています。少しコードを確認してみます。

  • Environment Information
    • OS: Windows 7 64-bit
    • Vim version: GVim 7.4.884
  • Minimal vimrc less than 50 lines
set encoding=utf-8
scriptencoding utf-8

filetype plugin indent off

if has('vim_starting')
  set runtimepath+=~/.vim/bundle/neobundle.vim/
endif

call neobundle#begin(expand('~/.vim/bundle'))

NeoBundle 'haya14busa/incsearch.vim'
NeoBundle 'easymotion/vim-easymotion'
NeoBundle 'haya14busa/incsearch-easymotion.vim',

call neobundle#end()

filetype plugin indent on
syntax enable

map z/ <Plug>(incsearch-easymotion-/)
map z? <Plug>(incsearch-easymotion-?)
map gz/ <Plug>(incsearch-easymotion-stay)
noremap <silent> <expr> gz? incsearch#go(incsearch#config#easymotion#make({'command' : '?', 'is_stay' : 1}))
  • How to reproduce
    1. GVimを起動
    2. 「G」でカーソルを最下部に移動
    3. 「z?incsearch」で検索し、easymotionの表示が出るので適当に真ん中ぐらいに表示されたものを選ぶ
    4. 「n」を押すと、forward方向(画面下方向)にカーソルが進む
    5. 「N」を押すと、backward方向(画面上方向)にカーソルが進む

@toshi32tony3
Copy link
Author

コード読んだのですが、原因まで辿りつけていません…。
以下コメントアウトしても再現するのでeasymotion自体は関係ないみたいです。

incsearch-easymotion.vim\autoload\incsearch\over\modules\EasyMotion.vim

function! s:module.on_char_pre(cmdline)
if a:cmdline.is_input('(easymotion)')
" echo a:cmdline.setchar('')
" echo self._easymotion(a:cmdline)
echo a:cmdline._exit_incsearch()
endif
endfunction

それと、easymotionでは以下の関数が呼び出されていませんでした。
(通常のincsearch, incsearch-fuzzy, incsearch-migemoでは呼び出されていました)

incsearch.vim\autoload\incsearch.vim

function! s:_searchforward_cmd() abort
let d = (g:incsearch#consistent_n_direction ? s:DIRECTION.forward : (incsearch#cli()._base_key is# '/' ? 1 : 0))
return printf(":let v:searchforward=%d", d)
endfunction

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants