Shougo / unite.vim

:dragon: Unite and create user interfaces
http://www.vim.org/scripts/script.php?script_id=3396
Other
2.85k stars 227 forks source link

起動直後に: Unite neosnippetするとinvalid sourceになる。 #1247

Closed kjnh10 closed 5 years ago

kjnh10 commented 5 years ago

Problems summary

起動直後に: Unite neosnippetするとinvalid sourceになる。 一度Uniteを起動した後であればneosnippetが認識されて使用出来るようになる。

Expected

起動直後からuniteからneosnippetが認識される。

Environment Information

Provide a minimal .vimrc with less than 50 lines (Required!)

init.vim

"dein plugins{{{
""""""""""""""""""""""""""""""
"dein Scripts-----------------------------
  " dein自体の自動インストール
  let s:cache_home = empty($XDG_CACHE_HOME) ? expand('~/.cache') : $XDG_CACHE_HOME
  let s:dein_dir = s:cache_home . '/dein'
  let s:dein_repo_dir = s:dein_dir . '/repos/github.com/Shougo/dein.vim'
  if !isdirectory(s:dein_repo_dir)
    call system('git clone https://github.com/Shougo/dein.vim ' . shellescape(s:dein_repo_dir))
  endif
  let &runtimepath = s:dein_repo_dir .",". &runtimepath
  " プラグイン読み込み&キャッシュ作成
  let s:toml_file = fnamemodify(expand('<sfile>'), ':h').'/dein.toml'
  "if dein#load_state(s:dein_dir)
    call dein#begin(s:dein_dir)
    call dein#load_toml(s:toml_file)
    call dein#end()
    call dein#save_state()
  "endif

  " Required:
  filetype plugin indent on
  syntax enable

  " 不足プラグインの自動インストール
  if has('vim_starting') && dein#check_install()
    call dein#install()
  endif
"End dein Scripts-------------------------
"}}}

dein.toml

[[plugins]]
repo = 'Shougo/dein.vim'

[[plugins]]
repo = 'Shougo/unite.vim'
hook_source = '''
・・・・
""

[[plugins]] # neosnippet
repo = 'Shougo/neosnippet'
hook_source = '''
  "Ctrl+Kにターゲットジャンプ割当{{{
  imap <C-k> <Plug>(neosnippet_expand_or_jump)
  smap <C-k> <Plug>(neosnippet_expand_or_jump)
  xmap <C-k> <Plug>(neosnippet_expand_target)
  if has('conceal')
    set conceallevel=2 concealcursor=niv
  endif
    let g:neosnippet#enable_snipmate_compatibility = 1
    let g:neosnippet#disable_runtime_snippets = {'_' : 1}
    let g:neosnippet#snippets_directory = ['~/.cache/dein/.cache/init.vim/.dein/neosnippets']
    let g:neosnippet#snippets_directory += ['~/.cache/dein/.cache/init.vim/.dein/snippets']

  "}}}
'''
on_i  = 1
on_ft = ['snippet']

The reproduce ways from Vim starting (Required!)

  1. nvim ./ (from terminal)
  2. :e sample.cpp
  3. :Unite neosnippet

Screen shot (if possible)

Upload the log messages by :redir and :message

[unite.vim] Invalid source name "neosnippet" is detected. [unite.vim] unite.vim: Invalid source

Shougo commented 5 years ago

起動直後は neosnippet がロードされていないからですね。仕様です。

neosnippet の設定をよく見てください。

多分、neosnippet の設定に on_source = 'unite.vim' が必要ですね。

kjnh10 commented 5 years ago

読込順序がunite→neosnippetになってしまっていたからということですね。 lazy_dein.tomlを作成してuniteをそちらに移したら解決しました。

[[plugins]]
  repo = 'Shougo/unite.vim'
  hook_post_source = '''
  ・・・・
  '''
  on_event = "VimEnter"

ありがとうございます。