diff --git a/autoload/qf.vim b/autoload/qf.vim index 9bc9d2c..6fc872d 100644 --- a/autoload/qf.vim +++ b/autoload/qf.vim @@ -21,15 +21,7 @@ set cpo&vim " open the current entry in th preview window function qf#PreviewFileUnderCursor() - let cur_list = b:qf_isLoc == 1 ? getloclist('.') : getqflist() - let cur_line = getline(line('.')) - let cur_file = fnameescape(substitute(cur_line, '|.*$', '', '')) - if cur_line =~ '|\d\+' - let cur_pos = substitute(cur_line, '^\(.\{-}|\)\(\d\+\)\(.*\)', '\2', '') - execute "pedit +" . cur_pos . " " . cur_file - else - execute "pedit " . cur_file - endif + call qf#preview#PreviewFileUnderCursor() endfunction " helper function diff --git a/autoload/qf/preview.vim b/autoload/qf/preview.vim index 27ec033..26cf8d7 100644 --- a/autoload/qf/preview.vim +++ b/autoload/qf/preview.vim @@ -24,8 +24,11 @@ function! qf#preview#PreviewFileUnderCursor() let cur_list = qf#GetList() let cur_line = getline(line('.')) let cur_file = fnameescape(qf#GetEntryPath(cur_line)) + let cur_ntry = get(cur_list, line('.')-1, {}) - if cur_line =~ '|\d\+' + if !empty(cur_ntry) && bufexists(cur_ntry.bufnr) && cur_ntry.bufnr + execute 'pedit +' . cur_ntry.lnum . ' #' . cur_ntry.bufnr + elseif cur_line =~ '|\d\+' let cur_pos = substitute(cur_line, '^\(.\{-}|\)\(\d\+\)\(.*\)', '\2', '') execute "pedit +" . cur_pos . " " . cur_file else