GithubHelp home page GithubHelp logo

shougo / dein.vim Goto Github PK

View Code? Open in Web Editor NEW
3.4K 71.0 198.0 1.38 MB

:zap: Dark powered Vim/Neovim plugin manager

License: MIT License

Python 1.48% Makefile 0.13% TypeScript 0.66% Vim Script 97.50% Lua 0.23%
vim neovim dein plugin-manager

dein.vim's Introduction

Dein.vim

Gitter GitHub release (latest by date) GitHub issues

Dein.vim is a dark powered Vim/Neovim plugin manager.

Note: Active developement on dein.vim has stopped. The only future changes will be bug fixes.

Please see Dpp.vim

To learn more details, visit here.

Table of contents

Features

  • Fast - Faster than NeoBundle.
  • Simple - Function API and familiar patterns, without commands or dependency hell.
  • Async - Clean asynchronous installation supported.
  • Extendable - Supports plugins from local or remote sources, and also Non-Github plugins.
  • Consistent - Go-like directory structure (eg. github.com/{author}/{repository})
  • Practical - Automatically merge plugins directories to avoid long runtimepath

Getting started

Prerequisites

  • Vim (v8.2 or higher) or NeoVim (v0.8.0 or higher)
  • Git should be installed (v2.4.11 or higher)

Basic installation

You can install dein.vim by your vimrc/init.vim.

let $CACHE = expand('~/.cache')
if !($CACHE->isdirectory())
  call mkdir($CACHE, 'p')
endif
if &runtimepath !~# '/dein.vim'
  let s:dir = 'dein.vim'->fnamemodify(':p')
  if !(s:dir->isdirectory())
    let s:dir = $CACHE .. '/dein/repos/github.com/Shougo/dein.vim'
    if !(s:dir->isdirectory())
      execute '!git clone https://github.com/Shougo/dein.vim' s:dir
    endif
  endif
  execute 'set runtimepath^='
        \ .. s:dir->fnamemodify(':p')->substitute('[/\\]$', '', '')
endif

Command line installation

Please use dein-installer.vim.

Config example

Show a UNIX installation example using "~/.cache/dein" as the base path location.
" Ward off unexpected things that your distro might have made, as
" well as sanely reset options when re-sourcing .vimrc
set nocompatible

" Set dein base path (required)
let s:dein_base = '~/.cache/dein/'

" Set dein source path (required)
let s:dein_src = '~/.cache/dein/repos/github.com/Shougo/dein.vim'

" Set dein runtime path (required)
execute 'set runtimepath+=' .. s:dein_src

" Call dein initialization (required)
call dein#begin(s:dein_base)

call dein#add(s:dein_src)

" Your plugins go here:
"call dein#add('Shougo/neosnippet.vim')
"call dein#add('Shougo/neosnippet-snippets')

" Finish dein initialization (required)
call dein#end()

" Attempt to determine the type of a file based on its name and possibly its
" contents. Use this to allow intelligent auto-indenting for each filetype,
" and for plugins that are filetype specific.
filetype indent plugin on

" Enable syntax highlighting
if has('syntax')
  syntax on
endif

" Uncomment if you want to install not-installed plugins on startup.
"if dein#check_install()
" call dein#install()
"endif

Q&A

Dein has an user interface like vim-plug?

Feedback

Tasks

This is where Dein future plans or TODOS are listed:

  • Other types support (zip, svn, hg, ...)
  • Metadata repository support
  • Require neovim 0.10+ or Vim 9.0+(to use interpolated-string)

License

Licensed under the MIT license.

dein.vim's People

Contributors

aiotter avatar bamchoh avatar bb010g avatar dear avatar gbcreation avatar hokorobi avatar hori-ryota avatar itok01 avatar kg8m avatar kuuote avatar lambdalisue avatar matsui54 avatar milly avatar mofneko avatar nekolaboratory avatar nhooyr avatar ogaken-1 avatar p7g avatar rhysd avatar roflcopter4 avatar shougo avatar thinca avatar tokorom avatar uga-rosa avatar wsdjeg avatar yoshihiroito avatar yuki-yano avatar yuseiueno avatar yuttie avatar zchee avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

dein.vim's Issues

Plugins are not updated if there are already plugins installed

Problems summary

Plugins are not updated if there are already plugins installed

Expected

Plugins are updated

Environment Information

  • OS: Arch Linux
  • Vim version: NVIM v0.1.3-133-g12938b8

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

set runtimepath+=~/.config/nvim/bundle/repos/github.com/Shougo/dein.vim
call dein#begin(expand('~/.cache/dein'))
call dein#add('Shougo/dein.vim')
"call dein#add('Shougo/deoplete.nvim')
"call dein#add('Shougo/neosnippet')
"call dein#add('Shougo/neosnippet-snippets')
"call dein#add('Shougo/neoinclude.vim')
"call dein#add('zchee/deoplete-clang')
call dein#end()

The reproduce ways from Vim starting (Required!)

  • Remove all plugins
  • Run :call dein#update() to install all your plugins
  • Close nvim
  • Open nvim
  • :call dein#update() will now not update plugins

Upload the log messages by :redir and :message

Error detected while processing function dein#update:
line    1:
E119: Not enough arguments for function: dein#install#_update

dein#call_hook() processes no plugins if the second argument is omitted

Problems summary

dein#call_hook() processes no plugins if the second argument is omitted.

Expected

It processes all plugins.

Environment Information

  • OS: Arch Linux
  • Vim version: 7.4.1386

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

" .vimrc-dein
set nocompatible
let s:dein_root = expand('~/.vim/dein')
let s:dein_path = expand(s:dein_root . '/repos/github.com/Shougo/dein.vim')
execute 'set runtimepath^=' . s:dein_path

call dein#begin(s:dein_root)

call dein#add('Shougo/dein.vim')
if dein#tap('dein.vim')
  execute 'autocmd User' 'dein#source#' . g:dein#name 'echomsg "on_source"'
  execute 'autocmd User' 'dein#post_source#' . g:dein#name 'echomsg "on_post_source"'
endif

autocmd VimEnter * call dein#call_hook('post_source')

call dein#end()

The reproduce ways from Vim starting (Required!)

  1. vim -u .vimrc-dein
  2. :messages

Screen shot (if possible)

Upload the log messages by :redir and :message

Messages maintainer: Bram Moolenaar <[email protected]>
on_source

Problems and solutions

dein#get() returns a dictionary, but dein#util#_convert2list couldn't process it correctly.
Which is a better solution?

Fix the argument for dein#util#_convert2list()

diff --git a/autoload/dein/util.vim b/autoload/dein/util.vim
index 2f14040..87d078d 100644
--- a/autoload/dein/util.vim
+++ b/autoload/dein/util.vim
@@ -323,7 +323,7 @@ endfunction"}}}
 function! dein#util#_call_hook(hook_name, ...) abort "{{{
   let prefix = '#User#dein#'.a:hook_name.'#'
   let plugins = filter(dein#util#_convert2list(
-        \ (empty(a:000) ? dein#get() : a:1)),
+        \ (empty(a:000) ? values(dein#get()) : a:1)),
         \ "get(v:val, 'sourced', 0) && exists(prefix . v:val.name)")

   for plugin in dein#util#_tsort(plugins)

or

Fix dein#util#_convert2list() so that it supports dictionary type.

diff --git a/autoload/dein/util.vim b/autoload/dein/util.vim
index 2f14040..37b333e 100644
--- a/autoload/dein/util.vim
+++ b/autoload/dein/util.vim
@@ -382,6 +382,7 @@ endfunction"}}}

 function! dein#util#_convert2list(expr) abort "{{{
   return type(a:expr) ==# type([]) ? copy(a:expr) :
+        \ type(a:expr) ==# type({}) ? values(a:expr) :
         \ type(a:expr) ==# type('') ?
         \   (a:expr == '' ? [] : split(a:expr, '\r\?\n', 1))
         \ : [a:expr]

After vimrc changed, load_state() occurs error

Problems summary

vimrc変更後load_state()がエラーになる

Expected

Environment Information

  • OS & Vim version:
    • Windows7 & (G)Vim 7.4 p1444 kaoriya
    • Ubuntu 14.04 LTS & Vim 7.4 p52
    • Mac OX 10.11(OS X El Capitan) & (G)Vim 7.4 p1537

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

" $HOME/.vimrc
if &compatible
  set nocompatible
endif

set runtimepath+=~/.cache/dein/repos/github.com/Shougo/dein.vim
let s:path = expand('~/.cache/dein')
if dein#load_state(s:path)
  call dein#begin(s:path)
  call dein#load_toml('~/.vim/rc/dein.toml', {'lazy': 0})
  call dein#end()
  call dein#save_state()
endif

if dein#check_install()
  call dein#install()
endif
syntax on
" $HOME/.vim/rc/dein.toml
[[plugins]]
repo = 'Shougo/dein.vim'

The reproduce ways from Vim starting (Required!)

  1. 上記の vimrc と TOML を配置して (g)vim で起動する。
  2. 起動後 vimrc を変更(改行の追加もしくは削除でよい)して保存する。
  3. 新規に (g)vim を起動するとダイアログでエラー

Screen shot (if possible)

cacheloadingerror

Upload the log messages by :redir and :message

[dein] Error occurred while loading state : Cache loading error

dein#call_hook() call hooks of plugins which has not installed yet

Problems summary

dein#call_hook('source') or dein#call_hook('post_source') call hook functions of plugins which has not installed yet so that the initial run raise E117 exception if an autoload function of the plugin has used.

Expected

dein#call_hook('source') or dein#call_hook('post_source') call hook functions of plugins which has installed and sourced.

Or

dein#load_state() call such hooks so that users does not need to call dein#call_hook() manually even there is state cache (but this is rejected at #50)

Environment Information

  • OS: Ubuntu 15.04
  • Vim version: NVIM 0.1.3-dev /

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

" ~/.vimrc.min
if has('vim_starting')
  if &compatible | set nocompatible | endif
  set runtimepath& runtimepath+=~/.vim/bundle/repos/dein.vim
endif

let s:dein_basepath = expand('~/vim_minimum_bundle')

call dein#begin(s:dein_basepath)
call dein#add('Shougo/unite.vim', {
      \ 'hook_post_source': 'call unite#custom#profile("default", "context", {"start_insert": 1})',
      \})
call dein#end()
call dein#save_state()
call dein#call_hook('source')
call dein#call_hook('post_source')

filetype plugin indent on
syntax on

The reproduce ways from Vim starting (Required!)

  1. vim -u ~/.vimrc.min and you will see
[dein] Error occured while executing hook: unite.vim
[dein] Vim(call):E117: Unknown function: unite#custom#profile

Screen shot (if possible)

Upload the log messages by :redir and :message

Lazy plugin isn't sourced on command argument completion

Problems summary

When command listed in on_cmd plugin option isn't matched to any substring of the plugin's name, argument completion doesn't work. Instead, the command line is printed infinitely, until Ctrl-C is hit.

Expected

Command argument completion works for every command listed in on_cmd plugin option.

Environment Information

  • OS: Linux
  • Vim version:
NVIM v0.1.3-317-gbd81239
Build type: Release

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

" Directory where this minimal vimrc file is located.
let s:rcdir = expand('<sfile>:p:h')
" Base path of dein.vim.
let s:dein_base_path = s:rcdir.'/dein'
" Path to cloned repository of dein.vim.
let s:dein_clone_path = s:rcdir.'/dein/dein.vim'

if has('vim_starting')
  if &compatible | set nocompatible | endif
  let &runtimepath .= ','.s:dein_clone_path
endif

call dein#begin(s:dein_base_path)
call dein#add('thinca/vim-prettyprint', {
     \ 'on_cmd': ['PP', 'PrettyPrint']
     \})
call dein#end()

filetype plugin indent on
syntax on

The reproduce ways from Vim starting (Required!)

  1. Press :PP
  2. Hit the <Space> key
  3. Hit the <Tab> key

Screen shot (if possible)

Here :PP's argument completion is invoked with following infinite command printing (because plugin isn't sourced). Then :PrettyPrint's argument is completed just fine (because plugin is sourced). Then :PP's argument is completed also just fine (because plugin was already sourced on :PrettyPrint argument completion).

a

Upload the log messages by :redir and :message

Some vim plugins do not work with dein

Problems summary

Trying to move from NeoBundle to dein and cannot get all my vim plugins to work. The plugin in particular that I am stumbling on with dein is https://github.com/Quramy/tsuquyomi.

Expected

After loading this plugin, I expect there to be a command named TsuquyomiDefinition. There is not.

Environment Information

  • OS: Ubuntu 14.04
  • Vim version: 7.4 (2013 Aug 10, compiled Jan 2 2014 19:39:47)

Will try to set aside time to get a minimal .vimrc setup for this. Thought I'd file the issue anyway since you seem to be eager to get people off of NeoBundle and this is a show-stopper for me...

Cannot use vital.vim and other plugins using vital.vim

Problems summary

I cannot use original vital.vim with vital-based plugins, such as vim-quickrun.

Expected

  • can use pure vital.vim & vital-based plugins.

Environment Information

  • OS: Mac OS X El Capitan
  • Vim version: MacVim 7.4.1425

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

let s:dein_dir = expand('~/.cache/dein')
let s:dein_repo_dir = s:dein_dir . '/repos/github.com/Shougo/dein.vim'
execute 'set runtimepath^=' . fnamemodify(s:dein_repo_dir, ':p')

call dein#begin(s:dein_dir)
call dein#add('vim-jp/vital.vim')
call dein#add('thinca/vim-quickrun')
call dein#end()

if dein#check_install()
  call dein#install()
endif

The reproduce ways from Vim starting (Required!)

  1. rm -fr ~/.cache/dein

  2. git clone https://github.com/Shougo/dein.vim ~/.cache/dein/repos/github.com/Shougo/dein.vim

  3. vim -N -u /path/to/minimal-vimrc -U NONE -i NONE

  4. :echo vim#of('vital').import('Prelude').is_number(123)

  5. It says error below.

    E716: Key not present in Dictionary: is_number(123)
    E15: Invalid expression: vital#of('vital').import('Prelude').is_number(123)
    Press ENTER or type command to continue
    

Upload the log messages by :redir and :message

:message log

Messages maintainer: Bram Moolenaar <[email protected]>
Not installed plugins:  ['vital.vim', 'vim-quickrun']
[dein] Runtimepath updated: (2016/02/28 13:03:28)
E716: Key not present in Dictionary: is_number(123)
E15: Invalid expression: vital#of('vital').import('Prelude').is_number(123)

Press ENTER or type command to continue

[temp] rev でブランチを指定しても、そのブランチが checkout されない

Problems summary

rev でブランチを指定しても、そのブランチが checkout されない

rev の使い方が変わっていそうな気はします……。

Expected

rev でブランチを指定したら、そのブランチが checkout される

Environment Information

  • OS: Windows7 64bit
  • Vim version: vim74-kaoriya-win64-20160124

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

" Your minimal .vimrc
set runtimepath^=~/path/to/dein.nvim/
call dein#begin(path)
call dein#end()

The reproduce ways from Vim starting (Required!)

  1. foo
  2. bar
  3. baz

Screen shot (if possible)

Upload the log messages by :redir and :message

Depended plug-ins aren't sourced correctly.

Problems summary

Depended plug-ins doesn't sourced correctly.

Expected

Plug-ins sourced correctly.

Environment Information

  • OS: Ubuntu
  • Vim version: NVIM v0.1.3-328-ga40a4e2

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

" dein.vimrc
set nocompatible
let s:dein_dir         = expand('$HOME/.cache/nvim/dein')
let s:dein_repo_dir    = s:dein_dir . '/repos/github.com/Shougo/dein.vim'
execute 'set runtimepath^=' . s:dein_repo_dir

call dein#begin(s:dein_dir)
call dein#add('Shougo/dein.vim')
call dein#add('tomasr/molokai',  {'name' : 'a', 'depends' : 'b', 'merged' : 0})
call dein#add('w0ng/vim-hybrid', {'name' : 'b', 'merged' : 0})
call dein#add('mhinz/vim-janah', {'name' : 'c', 'depends' : 'b', 'merged' : 0})

if dein#tap('a') "{{{
  function! s:fa()
    echomsg 'a : sourced'
  endfunction
  execute 'autocmd User' 'dein#source#'.g:dein#name
        \ 'call s:fa()'
endi "}}}
if dein#tap('b') "{{{
  function! s:fb()
    echomsg 'b : sourced'
  endfunction
  execute 'autocmd User' 'dein#source#'.g:dein#name
        \ 'call s:fb()'
endi "}}}
if dein#tap('c') "{{{
  function! s:fc()
    echomsg 'c : sourced'
  endfunction
  execute 'autocmd User' 'dein#source#'.g:dein#name
        \ 'call s:fc()'
endi "}}}
call dein#end()

" vim: foldmethod=marker

The reproduce ways from Vim starting (Required!)

  1. vim -u ~/dein.vimrc
  2. :messages

Screen shot (if possible)

Upload the log messages by :redir and :message

日本語メッセージ翻訳/監修: 村岡 太郎 <[email protected]>
b : sourced
a : sourced

Problem and possible solutions

We can't return in 10th line of s:load_depends of util.vim.
Also, order of &runtimepath is not correct.

Possible solution is as follows:

diff --git a/autoload/dein/util.vim b/autoload/dein/util.vim
index 89716f6..1f80702 100644
--- a/autoload/dein/util.vim
+++ b/autoload/dein/util.vim
@@ -290,8 +290,12 @@ function! dein#util#_end() abort "{{{
     return 1
   endif

-  for plugin in filter(values(g:dein#_plugins),
-        \ "!v:val.lazy && !v:val.sourced && v:val.rtp != ''")
+  for plugin in reverse(filter(dein#util#_tsort(values(g:dein#_plugins)),
+        \ "!v:val.lazy && !v:val.sourced && v:val.rtp != ''"))
+    if plugin.sourced
+      continue
+    endif
+
     " Load dependencies
     if !empty(plugin.depends)
       if s:load_depends(plugin, rtps, index)
@@ -448,7 +452,7 @@ function! s:load_depends(plugin, rtps, index) abort "{{{

   for depend in dein#util#_tsort([a:plugin])
     if depend.sourced
-      return
+      continue
     endif

     let depend.sourced = 1

Another possible solution is as follows:

diff --git a/autoload/dein/util.vim b/autoload/dein/util.vim
index 89716f6..105620d 100644
--- a/autoload/dein/util.vim
+++ b/autoload/dein/util.vim
@@ -282,33 +282,24 @@ function! dein#util#_end() abort "{{{

   let g:dein#_block_level -= 1

-  " Add runtimepath
+  let befores = []
+  let afters = []
+
+  for plugin in filter(values(g:dein#_plugins),
+        \ "!v:val.lazy && !v:val.sourced && v:val.rtp != ''")
+    if s:load_with_depends(plugin, befores, afters)
+      return 1
+    endif
+  endfor
+
   let rtps = dein#util#_split_rtp(&runtimepath)
   let index = index(rtps, g:dein#_runtime_path)
   if index < 0
     call dein#util#_error('Invalid runtimepath.')
     return 1
   endif
+  let rtps = extend(rtps, befores, index) + afters

-  for plugin in filter(values(g:dein#_plugins),
-        \ "!v:val.lazy && !v:val.sourced && v:val.rtp != ''")
-    " Load dependencies
-    if !empty(plugin.depends)
-      if s:load_depends(plugin, rtps, index)
-        return 1
-      endif
-      continue
-    endif
-
-    if !plugin.merged
-      call insert(rtps, plugin.rtp, index)
-      if isdirectory(plugin.rtp.'/after')
-        call add(rtps, plugin.rtp.'/after')
-      endif
-    endif
-
-    let plugin.sourced = 1
-  endfor
   let &runtimepath = dein#util#_join_rtp(rtps, &runtimepath, '')

   call dein#call_hook('source')
@@ -438,28 +429,29 @@ function! s:escape(path) abort "{{{
   return substitute(a:path, ',\|\\,\@=', '\\\0', 'g')
 endfunction"}}}

-function! s:load_depends(plugin, rtps, index) abort "{{{
+function! s:load_with_depends(plugin, befores, afters) abort "{{{
+  if a:plugin.sourced
+    return
+  endif
+
+  let a:plugin.sourced = 1
+
   for name in a:plugin.depends
     if !has_key(g:dein#_plugins, name)
       call dein#util#_error(printf('Plugin name "%s" is not found.', name))
       return 1
     endif
-  endfor

-  for depend in dein#util#_tsort([a:plugin])
-    if depend.sourced
-      return
-    endif
-
-    let depend.sourced = 1
+    let depend = dein#get(name)
+    call s:load_with_depends(depend, a:befores, a:afters)
+  endfor

-    if !depend.merged
-      call insert(a:rtps, depend.rtp, a:index)
-      if isdirectory(depend.rtp.'/after')
-        call add(a:rtps, depend.rtp.'/after')
-      endif
+  if !a:plugin.merged
+    call add(a:befores, a:plugin.rtp)
+    if isdirectory(a:plugin.rtp.'/after')
+      call add(a:afters, a:plugin.rtp.'/after')
     endif
-  endfor
+  endif
 endfunction"}}}

 " vim: foldmethod=marker

I recommend latter one because it is fast in terms of time complexity.
It seems O(nm) v.s. O(n+m) where n and m are the number of vertices and edges of the dependency graph, respectively.
Former one's bottleneck is call of _tsort in load_depends, which doesn't pruning at all.

README quickstart?

Problems summary

Can't figure out how to use dein.vim from readme

Expected

README.md to have a quickstart with at least one example of installing a plugin.

Not trying to troll or anything, but as someone who has used vundle/pathogen for 2-ish years; this is extremely vague, and seems easy to fix.

othree/yajs.vim not loaded with dein.vim

Problems summary

When I switched to using dein.vim https://github.com/othree/yajs.vim stopped being loaded when opening a javascript file. I examined :scriptnames and it is not listed there (and e.g. the syntax highlighting is missing). It is cloned into the repos folder of dein.vim though.

Expected

othree/yajs.vim should be loaded when opening a javascript file

Environment Information

  • OS: OS X 10.11.3
  • Vim version:
VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Jan  6 2016 11:21:03)
MacOS X (unix) version
Included patches: 1-1054
Compiled by Homebrew
Huge version with MacVim GUI.  Features included (+) or not (-):
+acl             +file_in_path    +mouse_sgr       +tag_binary
+arabic          +find_in_path    -mouse_sysmouse  +tag_old_static
+autocmd         +float           +mouse_urxvt     -tag_any_white
+balloon_eval    +folding         +mouse_xterm     +tcl
+browse          -footer          +multi_byte      +terminfo
++builtin_terms  +fork()          +multi_lang      +termresponse
+byte_offset     +fullscreen      -mzscheme        +textobjects
+cindent         -gettext         +netbeans_intg   +title
+clientserver    -hangul_input    +odbeditor       +toolbar
+clipboard       +iconv           +path_extra      +transparency
+cmdline_compl   +insert_expand   +perl            +user_commands
+cmdline_hist    +jumplist        +persistent_undo +vertsplit
+cmdline_info    +keymap          +postscript      +virtualedit
+comments        +langmap         +printer         +visual
+conceal         +libcall         +profile         +visualextra
+cryptv          +linebreak       +python          +viminfo
+cscope          +lispindent      -python3         +vreplace
+cursorbind      +listcmds        +quickfix        +wildignore
+cursorshape     +localmap        +reltime         +wildmenu
+dialog_con_gui  +lua             +rightleft       +windows
+diff            +menu            +ruby            +writebackup
+digraphs        +mksession       +scrollbind      -X11
+dnd             +modify_fname    +signs           -xfontset
-ebcdic          +mouse           +smartindent     +xim
+emacs_tags      +mouseshape      -sniff           -xsmp
+eval            +mouse_dec       +startuptime     -xterm_clipboard
+ex_extra        -mouse_gpm       +statusline      -xterm_save
+extra_search    -mouse_jsbterm   -sun_workshop    -xpm
+farsi           +mouse_netterm   +syntax          
   system vimrc file: "$VIM/vimrc"
     user vimrc file: "$HOME/.vimrc"
 2nd user vimrc file: "~/.vim/vimrc"
      user exrc file: "$HOME/.exrc"
  system gvimrc file: "$VIM/gvimrc"
    user gvimrc file: "$HOME/.gvimrc"
2nd user gvimrc file: "~/.vim/gvimrc"
    system menu file: "$VIMRUNTIME/menu.vim"
  fall-back for $VIM: "/Applications/MacVim.app/Contents/Resources/vim"
Compilation: clang -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_MACVIM -Wall -Wno-unknown-pragmas -pipe  -DMACOS_X_UNIX  -F/usr/local/Cellar/python/2.7.11/Frameworks -I/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/include/python2.7 -I/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/include/python2.7 -fno-strict-aliasing -fno-common -dynamic -g -O2 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1      -I/System/Library/Frameworks/Tcl.framework/Headers  -D_REENTRANT=1  -D_THREAD_SAFE=1  -D_DARWIN_C_SOURCE=1  
Linking: clang   -L. -L/usr/local/lib -L. -L/usr/local/lib -F/usr/local/Cellar/python/2.7.11/Frameworks -L/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/config -lpython2.7 -framework CoreFoundation -L/usr/local/lib -o Vim -framework Cocoa -framework Carbon       -lm  -lncurses -liconv -framework Cocoa  -L/usr/local/lib -llua -fstack-protector  -L/System/Library/Perl/5.18/darwin-thread-multi-2level/CORE -lperl -F/usr/local/Cellar/python/2.7.11/Frameworks -framework Python  -F/System/Library/Frameworks -framework Tcl -framework CoreFoundation -framework Ruby    

.vimrc

This is how I load dein.vim

"dein Scripts-----------------------------
if &compatible
  set nocompatible               " Be iMproved
endif

" Required:
set runtimepath^=~/.vim/dein/repos/github.com/Shougo/dein.vim

" Required:
call dein#begin(expand('~/.vim/dein'))

" Let dein manage dein
" Required:
call dein#add('Shougo/dein.vim')

source $HOME/.vim/bundlerc.vim

" Required:
call dein#end()

" Required:
filetype plugin indent on

" If you want to install not installed plugins on startup.
if dein#check_install()
 call dein#install()
endif

"End dein Scripts-------------------------

And this is how I added othree/yajs.vim my bundlerc.vim

call dein#add('othree/yajs.vim')

The reproduce ways from Vim starting (Required!)

  1. Add dein-loading code and bundlerc.vim
  2. Open a js-file
  3. :scriptnames does not list yajs files

Screen shot

With NeoBundle: http://imgur.com/ju9N4rm
With dein.vim: http://imgur.com/agZdD9Y

dein, unite, vimproc: missing so file

Problems summary

i try to combine dein + unite + vimproc

after i make for vimproc, execute Unite in vim, an error shows up said ...vimproc_mac.so is not found...

Expected

no error when i run Unite in vim

Environment Information

  • OS: OS X 10.11.2
  • Vim version:
VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Feb 15 2016 01:36:17)
MacOS X (unix) version
Included patches: 1-1301
Compiled by Homebrew
Huge version without GUI.  Features included (+) or not (-):
+acl             +farsi           +mouse_netterm   +tag_binary
+arabic          +file_in_path    +mouse_sgr       +tag_old_static
+autocmd         +find_in_path    -mouse_sysmouse  -tag_any_white
-balloon_eval    +float           +mouse_urxvt     -tcl
-browse          +folding         +mouse_xterm     +terminfo
++builtin_terms  -footer          +multi_byte      +termresponse
+byte_offset     +fork()          +multi_lang      +textobjects
+channel         -gettext         -mzscheme        +title
+cindent         -hangul_input    +netbeans_intg   -toolbar
-clientserver    +iconv           +path_extra      +user_commands
+clipboard       +insert_expand   +perl            +vertsplit
+cmdline_compl   +job             +persistent_undo +virtualedit
+cmdline_hist    +jumplist        +postscript      +visual
+cmdline_info    +keymap          +printer         +visualextra
+comments        +langmap         +profile         +viminfo
+conceal         +libcall         +python          +vreplace
+cryptv          +linebreak       -python3         +wildignore
+cscope          +lispindent      +quickfix        +wildmenu
+cursorbind      +listcmds        +reltime         +windows
+cursorshape     +localmap        +rightleft       +writebackup
+dialog_con      -lua             +ruby            -X11
+diff            +menu            +scrollbind      -xfontset
+digraphs        +mksession       +signs           -xim
-dnd             +modify_fname    +smartindent     -xsmp
-ebcdic          +mouse           -sniff           -xterm_clipboard
+emacs_tags      -mouseshape      +startuptime     -xterm_save
+eval            +mouse_dec       +statusline      -xpm
+ex_extra        -mouse_gpm       -sun_workshop
+extra_search    -mouse_jsbterm   +syntax
   system vimrc file: "$VIM/vimrc"
     user vimrc file: "$HOME/.vimrc"
 2nd user vimrc file: "~/.vim/vimrc"
      user exrc file: "$HOME/.exrc"
  fall-back for $VIM: "/usr/local/share/vim"
Compilation: /usr/bin/clang -c -I. -Iproto -DHAVE_CONFIG_H   -F/usr/local/Frameworks -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk -DMACOS_X_UNIX  -Os -w -pipe -march=native -mmacosx-version-min=10.11 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1
Linking: /usr/bin/clang   -L. -L/usr/local/lib -L/usr/local/lib -F/usr/local/Frameworks -Wl,-headerpad_max_install_names -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk -F/private/tmp/vim20160215-56786-eiiq8u/vim-7.4.1301/Frameworks -o vim        -lm  -lncurses -liconv -framework Cocoa   -fstack-protector  -L/System/Library/Perl/5.18/darwin-thread-multi-2level/CORE -lperl -framework Python   -lruby.2.0.0 -lobjc

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

if &compatible
set nocompatible
endif
set runtimepath^=~/.vim/bundle/repos/github.com/Shougo/dein.vim/

call dein#begin(expand('~/.cache/dein'))

call dein#add('Shougo/dein.vim')
call dein#add('Shougo/unite.vim')
call dein#add('Shougo/vimproc.vim')

call dein#end()

filetype plugin indent on

The reproduce ways from Vim starting (Required!)

  1. :call dein#update()
  2. run make in vimproc dir manully
  3. open vim and run :Unite

Screen shot (if possible)

2016-02-24 11 02 08

## Upload the log messages by `:redir` and `:message`

:message:

Messages maintainer: Bram Moolenaar <[email protected]>
[vimproc] vimproc's DLL: "/Users/nos/.cache/dein/.dein/lib/vimproc_mac.so" is not found.  Please read
 :help vimproc and make it.

Can I get g:dein#plugin in `hook`s?

Since 19e721a, build dict is disabled in plugin setting. I wrote setting to build vimproc by hook_post_update with referring to doc.

[[plugins]]
repo = 'Shougo/vimproc.vim'
hook_post_update = '''
  if dein#tap('vimproc.vim')
    if dein#util#_is_windows()
      let cmd = 'tools\\update-dll-mingw'
    elseif dein#util#_is_cygwin()
      let cmd = 'make -f make_cygwin.mak'
    elseif executable('gmake')
      let cmd = 'gmake'
    else
      let cmd = 'make'
    endif
    let g:dein#plugin.build = cmd
  endif
'''

I could get the desirable result, but this if dein#tap() block seems redundant to me.

Can I use the plugin dict with more simple way? Such as...

# local variable `plugin` has the `g:dein#plugin` value
hook_post_update = '''
  let plugin.build = 'make'
'''

I think this can be useful in other cases.

vim-altercmd setting in hook_add block

Problems summary

If I comment out AlterCommand di Dictionary -no-duplicate, the rest of altercommand define not works.

Expected

comment should work fine.

Environment Information

  • OS: OS X El Capitan 10.11.3
  • Vim version:7.4.1556

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

before

[[plugins]]
repo = 'tyru/vim-altercmd'
on_cmd = 'Altercommand'
hook_add = '''
  call altercmd#load()
  AlterCommand du call dein#update()
  AlterCommand dcs call dein#clear_state()
  AlterCommand di Dictionary -no-duplicate
  AlterCommand ref Unite ref
'''

after

[[plugins]]
repo = 'tyru/vim-altercmd'
on_cmd = 'Altercommand'
hook_add = '''
  call altercmd#load()
  AlterCommand du call dein#update()
  AlterCommand dcs call dein#clear_state()
  " AlterCommand di Dictionary -no-duplicate
  AlterCommand ref Unite ref
'''

The reproduce ways from Vim starting (Required!)

  1. use " to comment out AlterCommand di Dictionary -no-duplicate
  2. call dein#clear_state() to reload setting.
  3. input di or ref does not work. But works fine with du and dcs

Screen shot (if possible)

Upload the log messages by :redir and :message

How to switch between neobundle and dein.vim

Hi @Shougo,sorry for my question,but I really like neobundle,so I want to switch between them.
here is my test vimrc,but I can not finish the TODO for dein

fu! s:begin(path)
    if s:settings.plugin_manager == 'neobundle'
        call neobundle#begin(a:path)
    elseif s:settings.plugin_manager == 'dein'
        call dein#begin(a:path)
    endif
endf
fu! s:end()
    if s:settings.plugin_manager == 'neobundle'
        call neobundle#end()
        NeoBundleCheck
    elseif s:settings.plugin_manager == 'dein'
        call dein#end()
    endif
endf
fu! s:add(repo,...)
    if s:settings.plugin_manager == 'neobundle'
        exec 'NeoBundle "'.a:repo.'"'.','.join(a:000,',')
    elseif s:settings.plugin_manager == 'dein'
        call dein#add(a:repo)
    endif
endf
fu! s:lazyadd(repo,...)
    if s:settings.plugin_manager == 'neobundle'
        exec 'NeoBundleLazy "'.a:repo.'"'.','.join(a:000,',')
    elseif s:settings.plugin_manager == 'dein'
        call dein#add(a:repo)
    endif
endf
fu! s:tap(plugin)
    if s:settings.plugin_manager == 'neobundle'
        return neobundle#tap(a:plugin)
    elseif s:settings.plugin_manager == 'dein'
        return dein#tap(a:plugin)
    endif
endf
fu! s:get_hooks(plugin)
    if s:settings.plugin_manager == 'neobundle'
        return neobundle#get_hooks(a:plugin)
    elseif s:settings.plugin_manager == 'dein'
        return dein#get_hooks(a:plugin)
    endif
endf
fu! s:fetch()
    if s:settings.plugin_manager == 'neobundle'
        NeoBundleFetch 'Shougo/neobundle.vim'
    elseif s:settings.plugin_manager == 'dein'
        call dein#add('Shougo/dein.vim', {'rtp': ''})
    endif
endf

after defind this func I can use

call s:begin('~/.cache/vimplugin')
call s:fetch()
call s:add('Shougo/Unite.vim')
    if s:tap('vim-airline')
        let s:hooks = s:get_hooks('bling/vim-airline')
        function! s:hooks.on_source(bundle)
            let g:Powerline_sybols = 'unicode'
            let g:airline#extensions#tmuxline#enabled = 0
            set statusline+=%#warningmsg#
            set statusline+=%{SyntasticStatuslineFlag()}
            set statusline+=%*
        endfunction
    endif
call s:end()

but I can not change to dein ,because the hooks and the addlazy are defferent with neobundle

Need to be able to disable/uninstall plugins

There are sometimes problems with a particular plugin that I would like to disable temporarily, or when one decides to stop using a plugin, it is nice to be able to remove it. There does not appear to be a way to do that with dein because it puts all the vim files in one directory ~/.vim/dein/.dein. This makes it very difficult both to to disable something temporarily as well as to remove completely.

Could you please explain how the "merging" works with dein.vim

Hi,

I am having a bit of a hard time understanding how merging and the caching system work. Of course, if merging and caching are the same thing? Could you please add some case studies to the docs or maybe use this issue to explain how that specific aspect of dein.vim works.

When I first switched from neobundle to dein.vim, I did not really know about the merging and caching functionality. So I experienced some issues because of this. As far as I understand, so far there are two main options: [A] Not using the caching/merging back-end and [B] Using the merging/caching option.

Let's assume we would like to go with option [A]. So how should the user be initializing dein.vim for this specific scenario? Below is a list of what I think I kind of understand when it comes to this option:

[A] No Caching, No Merging

  1. call dein#begin('my_bundle_path'): Pointing dein to the bundles folder.
  2. No need to use the following functions: dein#save_cache(), dein#load_cache, dein#load_state, dein#save_state? I assume that we do not need to use the dein#recache_runtimepath() function as the bundles folder is where all the plugins are being installed? Is that correct?
  3. All plugins have to be added using the {'merged' : 0} option.

Now, let's assume that we would like to take advantage of the caching/merging infrastructure dein.vim provides. Below is a list of my observations and questions:

[B] With Caching and With Merging

  1. What should be used in the dein#begin() function? Should it be some kind of a temp folder such as call dein#begin('/.vim/.cache/dein') or should we use the bundles folder as in call dein#begin('my_bundle_path')?
  2. How do we use the following dein#save_cache(), dein#load_cache, dein#load_state, dein#save_state functions?
  3. As far as I understand, merging means that all the plugins are merged into a .cache folder in order to speed up the loading process. So, when do we need to run the dein#recache_runtimepath() command in this case? How we specify the location of the plugin cache?

I hope @Shougo or some of the more experienced users can help me to understand this a bit better.

Below is how I use dein.vim in my .vimrc:

if &compatible
   set nocompatible
endif

set runtimepath+=/Users/me/.vim/bundle/repos/dein.vim
call dein#begin('/Users/me/.vim/bundle')
call dein#add('Shougo/dein.vim')
call dein#add('SomeRepo/SomePlugin.vim', {'merged': 0})
call dein#end()

if dein#check_install()
    call dein#install()
endif

filetype plugin indent on

Is this a correct application? How would one modify that to utilize the caching/merging approach? Can we have a hybrid workflow where some of the plugins would be merged and some would NOT be merged?

Thanks.

Two different plugin set for Vim and Neovim

Should I prepare two different bundle path for Vim and Neovim if they use different plugin sets? I just found I have to use the following function calls to make the proper plugin set working correctly when I switch back and forth.

call dein#clear_state() | call dein#recache_runtimepath()

The only way I can think about to solve this problem is to create two bundle folders for Vim and Neovim. Does there any better way to solve this problem?

Any help would be much appreciated.

Mark

A repository which isn't on GitHub doesn't work correctly

Problems summary

I added the following setting. But the plugin wasn't cloned and installed.

call dein#add('https://bitbucket.org/mortonfox/twitvim.git')

It seems that dein.vim uses https://github.com/..., not https://bitbucket.org/....
and dein.vim makes the directory under repos/github.com directory, not repos/bitbucket.org directory.

Expected

The plugin is cloned from the specified URL and installed into related directory.

Environment Information

  • OS: Arch Linux
  • Vim version: 7.4.1529 (OS packaged version)
VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Mar  9 2016 16:25:55)
Included patches: 1-1529
Compiled by Arch Linux
Huge version without GUI.  Features included (+) or not (-):
+acl             -dnd             +lispindent      +perl/dyn        +termresponse
+arabic          -ebcdic          +listcmds        +persistent_undo +textobjects
+autocmd         +emacs_tags      +localmap        +postscript      +title
-balloon_eval    +eval            +lua/dyn         +printer         -toolbar
-browse          +ex_extra        +menu            +profile         +user_commands
++builtin_terms  +extra_search    +mksession       +python/dyn      +vertsplit
+byte_offset     +farsi           +modify_fname    +python3/dyn     +virtualedit
+channel         +file_in_path    +mouse           +quickfix        +visual
+cindent         +find_in_path    -mouseshape      +reltime         +visualextra
-clientserver    +float           +mouse_dec       +rightleft       +viminfo
-clipboard       +folding         +mouse_gpm       +ruby/dyn        +vreplace
+cmdline_compl   -footer          -mouse_jsbterm   +scrollbind      +wildignore
+cmdline_hist    +fork()          +mouse_netterm   +signs           +wildmenu
+cmdline_info    +gettext         +mouse_sgr       +smartindent     +windows
+comments        -hangul_input    -mouse_sysmouse  +startuptime     +writebackup
+conceal         +iconv           +mouse_urxvt     +statusline      -X11
+cryptv          +insert_expand   +mouse_xterm     -sun_workshop    -xfontset
+cscope          +job             +multi_byte      +syntax          -xim
+cursorbind      +jumplist        +multi_lang      +tag_binary      -xsmp
+cursorshape     +keymap          -mzscheme        +tag_old_static  -xterm_clipboard
+dialog_con      +langmap         +netbeans_intg   -tag_any_white   -xterm_save
+diff            +libcall         +packages        +tcl/dyn         -xpm
+digraphs        +linebreak       +path_extra      +terminfo
   system vimrc file: "/etc/vimrc"
     user vimrc file: "$HOME/.vimrc"
 2nd user vimrc file: "~/.vim/vimrc"
      user exrc file: "$HOME/.exrc"
  fall-back for $VIM: "/usr/share/vim"
Compilation: gcc -c -I. -Iproto -DHAVE_CONFIG_H   -D_FORTIFY_SOURCE=2  -march=x86-64 -mtune=generic -O2 -pipe -fstack-protector-strong -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1
Linking: gcc   -L. -Wl,-O1,--sort-common,--as-needed,-z,relro -fstack-protector -rdynamic-Wl,-export-dynamic -Wl,-E -Wl,-rpath,/usr/lib/perl5/core_perl/CORE  -Wl,-O1,--sort-common,--as-needed,-z,relro -L/usr/local/lib -Wl,--as-needed -o vim        -lm -lncurses -lelf -lnsl    -lacl -lattr -lgpm -ldl   -Wl,-E -Wl,-rpath,/usr/lib/perl5/core_perl/CORE -Wl,-O1,--sort-common,--as-needed,-z,relro -fstack-protector-strong -L/usr/local/lib  -L/usr/lib/perl5/core_perl/CORE -lperl -lpthread -lnsl -ldl -lm -lcrypt -lutil -lc   -L/usr/lib -ltclstub8.6 -ldl -lz -lpthread -lieee -lm

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

set nocompatible
let s:dein_root = expand('~/.vim/dein')
let s:dein_path = expand(s:dein_root . '/repos/github.com/Shougo/dein.vim')
execute 'set runtimepath^=' . s:dein_path

call dein#begin(s:dein_root)

call dein#add('Shougo/dein.vim')
call dein#add('Shougo/vimproc.vim', { 'build': 'make' })

call dein#add('https://bitbucket.org/mortonfox/twitvim.git')

call dein#end()

filetype plugin indent on

The reproduce ways from Vim starting (Required!)

  1. vim -u .vimrc-dein
  2. :call dein#install()

Screen shot (if possible)

Upload the log messages by :redir and :message

:call dein#install()

[dein] Cloning into '/home/pasela/.vim/dein/repos/github.com/mortonfox/twitvim'...fatal: could not read Username for 'https://github.com': No such device or address
Press ENTER or type command to continue

:messages

Messages maintainer: Bram Moolenaar <[email protected]>
".vimrc-dein" 17L, 477C
[vimproc] vimproc's DLL: "/home/pasela/.vim/dein/repos/github.com/Shougo/vimproc.vim/lib/vimproc_linux64.so" is not found.  Please read :help vimproc and make it.
[vimproc] vimproc's DLL: "/home/pasela/.vim/dein/repos/github.com/Shougo/vimproc.vim/lib/vimproc_linux64.so" is not found.  Please read :help vimproc and make it.
[dein] Updated plugins:
[dein]   vimproc.vim
[dein]     https://github.com/Shougo/vimproc.vim/compare/...3ab0a236e65b277670266c1187da9a
49064c1500
[dein] Runtimepath updated: (2016/03/12 00:34:39)
Press ENTER or type command to continue

:call dein#get_log()

(1/2): |twitvim| git clone --recursive https://github.com/mortonfox/twitvim.git "/home/pasela/.vim/dein/repos/github.com/mortonfox/twitvim"
(1/2) [==========          ] twitvim
(2/2): |vimproc.vim| git clone --recursive https://github.com/Shougo/vimproc.vim.git "/home/pasela/.vim/dein/repos/github.com/Shougo/vimproc.vim"
(2/2) [====================] vimproc.vim
Cloning into '/home/pasela/.vim/dein/repos/github.com/mortonfox/twitvim'...fatal: could not read Username for 'https://github.com': No such device or address
(1/2): |twitvim| Same revision
Cloning into '/home/pasela/.vim/dein/repos/github.com/Shougo/vimproc.vim'...DETACH
(2/2): |vimproc.vim| Updated
Building...
make -f make_unix.mak
make[1]: Entering directory '/home/pasela/.vim/dein/repos/github.com/Shougo/vimproc.vim'
cc -W -O2 -Wall -Wno-unused -Wno-unused-parameter -std=gnu99 -pedantic -shared -fPIC -o lib/vimproc_linux64.so src/proc.c -lutil
make[1]: Leaving directory '/home/pasela/.vim/dein/repos/github.com/Shougo/vimproc.vim'


Updated plugins:
  vimproc.vim
    https://github.com/Shougo/vimproc.vim/compare/...3ab0a236e65b277670266c1187da9a49064c1500
Runtimepath updated: (2016/03/12 00:34:39)
Press ENTER or type command to continue

Operator mapping does not work correctly for lazy plugin at the beggining

Problems summary

ciX does not work and <Plug>(textobj-X-i) is inserted at the beginning if textobj-X is a lazy plugin.

Expected

Operator works as expected from the beginning.

Environment Information

  • OS: Ubuntu 15.04 / Mac OS X
  • Vim version: neovim 1.0.2, GVim 7.4.1556, MacVim 7.4.1553

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

if has('vim_starting')
  if &compatible | set nocompatible | endif
  set runtimepath& runtimepath+=~/.vim/bundle/repos/dein.vim
endif

call dein#begin(expand('~/.vim/bundle/minimum'))
call dein#add('kana/vim-textobj-user')
call dein#add('osyo-manga/vim-textobj-multiblock', {
      \ 'depends': 'vim-textobj-user',
      \ 'on_map': [['ox', '<Plug>']],
      \ 'hook_add': join([
      \   'omap ab <Plug>(textobj-multiblock-a)',
      \   'omap ib <Plug>(textobj-multiblock-i)',
      \   'xmap ab <Plug>(textobj-multiblock-a)',
      \   'xmap ib <Plug>(textobj-multiblock-i)',
      \ ], "\n"),
      \})
call dein#end()

filetype plugin indent on
syntax on

The reproduce ways from Vim starting (Required!)

  1. Hit i(aaaaaaaaaaaaaaaaaaaaa)<Esc>hh
  2. Hit cib
  3. Instead of removing aaa...aaa, c<Plug>(textobj-multiblock-i) is inserted
  4. Hit <Esc>u to return the previous status
  5. Hit cib again
  6. Then works as expect.

Screen shot (if possible)

Screencast

Upload the log messages by :redir and :message

Wrong help for "on_source"?

Problems summary

Help for on_source seems wrong.

                                            *dein-options-on_source*
            on_source       (List) or (String)
            Load the plugin after the listed plugins are loaded.
            Note: The plugins must be lazy loaded plugins.

Expected

It should be like:

Load the plugin before the listed plugins are loaded.

before instead of after.

At settings like:

call dein#add('a.vim', {
      \ 'on_source': ['b.vim'],
      \ 'on_cmd': ['a'],
      \ 'lazy': 1})
call dein#add('b.vim', {
      \ 'on_cmd': ['b'],
      \ 'lazy':1 })

I assume "a.vim" as "the plugin" and "b.vim" as "the listed plugins",
then "a.vim" is loaded just before "b.vim" is loaded, if it is not loaded.

更新時にエラーになる

Problems summary

Expected

Environment Information

  • OS: Windows10
  • Vim version: GVim 7.4 p1194 kaoriya  

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

set nocompatible

let s:cache_dir = expand('~/.cache')
let s:vim_plugin_toml = expand('~/mini_vim_plugin.toml')

execute 'set runtimepath^=' . s:cache_dir . '/plugin/repos/github.com/Shougo/dein.vim'

call dein#begin(s:cache_dir . '/plugin')

if dein#load_cache([$MYVIMRC, s:vim_plugin_toml])
  call dein#add('Shougo/dein.vim')
  call dein#load_toml(s:vim_plugin_toml)
  call dein#save_cache()
endif

call dein#end()

filetype plugin indent on
[[plugins]]
repo      = 'Shougo/vimproc'
lazy      = 0

[[plugins]]
repo      = 'Shougo/tabpagebuffer.vim'
lazy      = 1
on_path   = '.*'

The reproduce ways from Vim starting (Required!)

それぞれ

~/.mini_vimrc
~/mini_vim_plugin.toml

で保存時 gvim -u ~/.minivimrc

:call  dein#update()

を行い更新する。
エラーになる。(スクリーンショット参照)

Screen shot (if possible)

image

Upload the log messages by :redir and :message

dein#check_install(['some-plugins']) does not work well

Problems summary

If I try to use 'dein#check_install' with a list of plugin names, it is failed with error messages and does not install any plugins.

Expected

Specific plugins can be checked and installed successfully with "dein#check_install('plugin')" and "dein#install('plugin')".

Environment Information

  • OS: OS X 10.11.4
  • Vim version: NVIM 0.1.3-dev

Provide a minimal .vimrc with less than 50 lines

" After some configurations for dein.vim

if has('vim_starting')
  " I want to install vimproc before installing any other plugins
  if dein#check_install(['vimproc'])
    call dein#install(['vimproc'])
  endif
  if dein#check_install()
    call dein#install()
  endif
endif

The reproduce ways from Vim starting

  1. Add the code 'call dein#check_install(['vimproc'])' in vimrc.
  2. Remove caches.
  3. Start vim.

Upload the log messages by :redir and :message

Error detected while processing function dein#check_install:
line    8:
E715: Dictionary required
E712: Argument of map() must be a List or Dictionary
[dein] Not installed plugins: 0

Consideration

I think that this error is caused by the function "dein#get".

The function returns a dictionary of dictionaries for plugins when it is called without argument.
On the other hand, it returns a dictionary for plugins (not a dictionary of dictionaries) when it is called with an argument.
Hence, the function 'map' with the function 'values' (at lines 76-77 in autoload/dein.vim) may cause errors.

:Unite dein, cause E716 error

Problems summary

:Unite deinを実行した際に、E716(辞書型にキーが存在しません)エラーが発生する。
スマホからなので.vimrcとlogは省略させてください。

Expected

g:dein#_pluginsに存在しないキー(uri)を使用している箇所がある。

\ 'source__uri': v:val.uri,

エラーが発生するのは afebba4 からです。

Environment Information

  • OS: Windows Server 2008 R2
  • Vim version: 7.4.1655

The reproduce ways from Vim starting (Required!)

  1. Unite dein

vim-localvimrc not working with dein.vim

Problems summary

vim-localvimrc is a plugin designed to source vim setting per project by sourcing a .localvimrc file in the root directory of the project. When using the dein#load_state(g:vim_bundle_path) / call dein#save_state() the live stage that sources the plugin seems to be skipped, but the plugin is listed as added. However does not work.

Expected

I have a minimal .localvimrc file inside a project dir:

let g:my_current_project_name = 'vectorExample'

I am expecting to see the text vectorExample when I do echo g:my_current_project_name but that is not the case. When I take out the dein#load_state(g:vim_bundle_path) / call dein#save_state() bits, the plugin is sourced and the functionality is as expected.

Environment Information

  • OS: OSX 10.10.5
  • Vim version:
    7.4 (1-1553)

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

" Minimal DEBUG .vimrc file
if &compatible
    set nocompatible
endif

" Path to the plugin manager:
set runtimepath^=/Users/me/.vim/bundle/repos/github.com/Shougo/dein.vim
let g:tmp_bundle_path = '/Users/me/.tmp/tmp_bundle'

" (DISABLE_TO_MAKE_THIS WORK)
if dein#load_state(g:tmp_bundle_path)
    " Start the plugin block.
    call dein#begin(g:tmp_bundle_path)

    " Initial plugin is the plugin manager.
    call dein#add('Shougo/dein.vim')

    " Add or remove your plugins here:
    call dein#add('embear/vim-localvimrc',
    \ {'merged' : 0,
            \ 'normalized_name' : 'localvimrc'})
    " Plugin configuration.
    if dein#tap('vim-localvimrc')
        " The plugin is active.
        let g:localvimrc_name = [".vixrc"]
        let g:localvimrc_sandbox = 0
        let g:localvimrc_script_dir = 1
        let g:localvimrc_debug = 0
        let g:localvimrc_persistent = 2
        let g:localvimrc_event = [ "BufWinEnter",  "BufWritePost" ]
        let g:localvimrc_ask = 0
    endif
    " End the plugin block.
    call dein#end()
" (DISABLE_TO_MAKE_THIS WORK)
call dein#save_state()
endif

" Install the plugins that have not been installed  so far.
if dein#check_install()
    call dein#install()
endif

" Reset settings.
filetype plugin indent on

The reproduce ways from Vim starting (Required!)

  1. Start Vim.
  2. Load a script file (py/vim/cpp) from a folder with a .localvimrc file
  3. Run: echo g:my_current_project_name

Screen shot (if possible)

(Not provided.)

Upload the log messages by :redir and :message

(Not provided.)

dein doesn't build vimproc automatically

I'm almost sure I didn't see anything in the documentation, but I'm curious because you actually have it in your dotfiles.

I'm trying to install vimproc, and build it, but:

call dein#add('Shougo/vimproc.vim',   {'build': 'make'})

nor the following on a toml file works:

[[plugins]]
repo = 'Shougo/vimproc.vim'
build = 'make'

Is the function hasn't implemented yet, or I'm missing something?

Setting {'merged': 0} for all plugins makes help files unaccessible after recaching runtimepath

Problems summary

When I pass {'merged': 0} as a default options for all plugins, every call of dein#update() makes help files unaccessible (with E149: Sorry, no help for <...> reaction to :help <...> command)

I failed in making simple reproducible example of my described case, but this behavior can be also reproduced by initial installing of plugins with {'merged': 0}.

My temporary fix is to comment this line in autoload/dein/install.vim before every dein#update()/dein#recache_runtimepath().

Expected

:help works for all help files provided by plugins

Environment Information

  • OS: Linux
  • Vim version:
NVIM v0.1.3-317-gbd81239
Build type: Release

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

" Directory where this minimal vimrc file is located.
let s:rcdir = expand('<sfile>:p:h')
" Base path of dein.vim.
let s:dein_base_path = s:rcdir.'/dein'
" Path to cloned repository of dein.vim.
let s:dein_clone_path = s:rcdir.'/dein/dein.vim'

if has('vim_starting')
  if &compatible | set nocompatible | endif
  let &runtimepath .= ','.s:dein_clone_path
endif

call dein#begin(s:dein_base_path)
call dein#add('thinca/vim-prettyprint', {'merged': 0})
call dein#end()

filetype plugin indent on
syntax on

The reproduce ways from Vim starting (Required!)

  1. :call dein#install()
  2. :help prettyprint

Screen shot (if possible)

a

Upload the log messages by :redir and :message

dein.vim creates dir named ~ at execute dir

After execute vim, there is new directory named ~, when I write call den#begin(...) in .vimrc.

.vimrc is below.

if has('vim_starting')
    set runtimepath+=~/.vim/remote/dein.vim
    call dein#begin('~/.vim/remote')
endif

Result of :version is below.

:version
VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Feb  9 2016 18:56:38)
MacOS X (unix) version
Included patches: 1-1293
Compiled by [email protected]
Huge version without GUI.  Features included (+) or not (-):
+acl             -clientserver    +cursorbind      +ex_extra        -gettext         +linebreak       -mouseshape      +multi_byte      +profile         +smartindent     -tcl             +visual          -xfontset
+arabic          +clipboard       +cursorshape     +extra_search    -hangul_input    +lispindent      +mouse_dec       +multi_lang      +python/dyn      -sniff           +terminfo        +visualextra     -xim
+autocmd         +cmdline_compl   +dialog_con      +farsi           +iconv           +listcmds        -mouse_gpm       -mzscheme   

can't access dein documentation

I followed the instruccions on how to install dein:

let s:dein_path = expand('$CACHE/dein/repos/github.com/Shougo/dein.vim')
execute 'set runtimepath^=' . s:dein_path

call dein#begin(expand('$CACHE/dein'))

if dein#load_cache()

  call dein#add('Shougo/dein.vim',      {'rtp': ''})

  call dein#save_cache()
endif

After opening neovim, :h dein, says E149: Sorry, no help for dein. but it has help for the other plugins.

When dein#install(), C directory is made

Problems summary

dein#install() 実行時、カレントディレクトリに C というディレクトリが作成される。

Windows でしか発生しない現象なのかもしれません。
Neobundle でも発生していました。
Vim は M ドライブにインストールしていますが、最小構成の vimrc を作って dein#install() したところ、M が作成されました。最初の一文字はドライブ名由来ですね。

Expected

ディレクトリが作成されない。

Environment Information

  • OS: Windows7 64bit
  • Vim version: vim74-kaoriya-win64-20160124
  • git version: 2.7.0 msys2

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

set nocompatible
set runtimepath+=$VIM/temp/repos/github.com/Shougo/dein.vim
call dein#begin(expand('$VIM/temp'))
call dein#add('Shougo/dein.vim')
call dein#add('Shougo/neco-syntax')
call dein#end()

The reproduce ways from Vim starting (Required!)

gvim.exe -u _vimrc_dein_issue15 -U NONE
:call dein#install()

Screen shot (if possible)

Upload the log messages by :redir and :message

:Unite dein, 'X'(not installed) mark not output

Problems summary

:Unite deinを実行した際に、未インストールのプラグインに'X'(not installed)マークがつかない。

Expected

未インストールのプラグインの、g:dein#_plugins[{plugin-name}]['sourced']が1になっている。
is_sourcedis_installedの判定順番を入れ替えるか、g:dein#_plugins[{plugin-name}]['sourced']が0になるのが良いのかなと思いましたが、いかがでしょうか?

let candidate.abbr =
      \ candidate.source__is_sourced ? ' ' :
      \ candidate.source__is_installed ? '#' : 'X'

Environment Information

  • OS: OS X v10.9 Mavericks
  • Vim version: 7.4.1641

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

set nocompatible
set runtimepath^=~/sample/dein/repos/github.com/Shougo/dein.vim

call dein#begin(expand('~/sample/dein'))
call dein#add('Shougo/unite.vim')
call dein#add('Shougo/vimfiler.vim')
call dein#end()

The reproduce ways from Vim starting (Required!)

  1. call dein#install('unite.vim')
  2. echo dein#_plugins['unite.vim']['sourced'] " => 1
  3. echo dein#_plugins['vimfiler.vim']['sourced'] " => 1
  4. echo isdirectory(dein#_plugins['unite.vim']['path']) " => 1
  5. echo isdirectory(dein#_plugins['vimfiler.vim']['path']) " => 0

Upload the log messages by :redir and :message

[dein] Update started: (2016/04/01 21:53:36)
[dein] Updated plugins:
[dein]   unite.vim
[dein]     https://github.com/Shougo/unite.vim/compare/...bb2654fdcf79383216b1707c021351a05b630985
[dein] Runtimepath updated: (2016/04/01 21:53:46)

Question about dein#tap()

I've seen some vimrc's and a lot of them that use neobundle, or yours even that uses dein... "wrapping" plugins configuration like:

if dein#tap('unite.vim') "{{{
  " The prefix key.
  nnoremap    [unite]   <Nop>
  xnoremap    [unite]   <Nop>
  nmap    ;u [unite]
  xmap    ;u [unite]

  nnoremap <silent> ;b
        \ :<C-u>Unite -buffer-name=build`tabpagenr()` -no-quit build<CR>
endif

It's strange, because if the plugin is added to dein, why I would want to check again if it exists? Or is it that dein loads the value between that if … endif only when the plugin is actually being loaded?

How to install fzf with dein?

Problems summary

I am converting my vimrc to rein from neobundle.

I am having trouble getting fzf to install properly

Expected

Environment Information

  • OS: OS X
  • Vim version: nvim 0.1.2

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

" Your minimal .vimrc
set runtimepath^=~/.vim/bundle/dein.nvim/
call dein#begin(path)
call dein#add('junegunn/fzf', { 'build': './install' })
call dein#add('junegunn/fzf.vim', { 'depends': 'junegunn/fzf' })
call dein#end()
call dein#update()

The reproduce ways from Vim starting (Required!)

  1. start vim, run :Files command
  2. Not an editor command: Files

Upload the log messages by :redir and :message

Output when running nvim:

nvim nvim/init.vim
[dein] Update started: (2016/04/11 12:19:00)
[dein] (1/2): |fzf.vim| git clone --recursive https://github.com/junegunn/fzf.vim.git "/Users/mr1483/.vim/bundle/repos/github.com/junegunn/fzf.vim"
[dein] (1/2) [==========          ] fzf.vim
[dein] (2/2): |fzf| git clone --recursive https://github.com/junegunn/fzf.git "/Users/mr1483/.vim/bundle/repos/github.com/junegunn/fzf"
[dein] (2/2) [====================] fzf
[dein] (1/2): |fzf.vim| Updated
[dein] (2/2): |fzf| Updated
[dein] Building...
[dein] Downloading bin/fzf ...
[dein]   - Found in $PATH
[dein]   - Creating symlink: /Users/mr1483/.fzf/bin/fzf -> bin/fzf
[dein]   - Checking fzf executable ... 0.11.4
[dein] Generate ~/.fzf.bash ... OK
[dein] Generate ~/.fzf.zsh ... OK
[dein] Update fish_user_paths ... OK
[dein] Symlink /Users/mr1483/.config/fish/functions/fzf_key_bindings.fish ... OK
[dein] Update /Users/mr1483/.bashrc:
[dein]   - [ -f ~/.fzf.bash ] && source ~/.fzf.bash
[dein]     - Already exists: line #2
[dein] Update /Users/mr1483/.zshrc:
[dein]   - [ -f ~/.fzf.zsh ] && source ~/.fzf.zsh
[dein]     - Already exists: line #143
[dein] Update /Users/mr1483/.config/fish/functions/fish_user_key_bindings.fish:
[dein]   - fzf_key_bindings
[dein]     - Already exists: line #2
[dein] Finished. Restart your shell or reload config file.
[dein]    source ~/.bashrc  # bash
[dein]    source ~/.zshrc   # zsh
[dein]    fzf_key_bindings  # fish
[dein] Use uninstall script to remove fzf.
[dein] For more information, see: https://github.com/junegunn/fzf
[dein] Updated plugins:
[dein]   fzf.vim
[dein]     https://github.com/junegunn/fzf.vim/compare/...7cfff6b16f43c74702e93e20ec9bc846647650ba
[dein]   fzf
[dein]     https://github.com/junegunn/fzf/compare/...e5ac2ebd7c6f845d34b908455a7f12d1be40d6a4
[dein] Runtimepath updated: (2016/04/11 12:19:12)
Press ENTER or type command to continue

vim-easymotion doesn't work with dein#add()

Problem summary

vim-easymotion doesn't work with dein#add(). It does nothing on <Plug>(easymotion-overwin-f2).

Expected

vim-easymotion is available with dein.vim.

Environment Information

  • OS: OS X 10.11.3
  • Vim version: NVIM 0.1.2 (in terminal)

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

set runtimepath^=~/.config/dein/repos/github.com/Shougo/dein.vim
call dein#begin(expand('~/.cache/dein'))
call dein#add('easymotion/vim-easymotion')
call dein#end()
filetype plugin indent on
map m <Plug>(easymotion-overwin-f2)

The reproduce ways from Vim starting (Required!)

  1. rm -rf ~/.cache/dein/* to ensure this is not related to cache
  2. :call dein#install() to install vim-easymotion
  3. Close nvim window with :q
  4. Open nvim
  5. Enter m in normal mode

Screen shot (if possible)

N/A

Upload the log messages by :redir and :message

N/A


I tried adding vim-easymotion directory to &rtp manually and it worked correctly. It ensures this is a problem of dein.vim. Revision of dein.vim is 0a2803d and revision of easymotion is 649120e.

@haya14busa
If you have additional information, please give it to solve this issue.

ftdetect ignored if `call dein#begin` is after `syntax enable`

Problems summary

dein's ftdetect is ignored if call dein#begin is after syntax enable

Expected

ftdetect should work wherever syntax enable is placed

Environment Information

  • OS: Ubuntu Linux
  • Vim version: NVIM 0.1.3-dev, Build type: RelWithDebInfo

minimal .vimrc

syntax enable

set rtp+=~/.vim/dein/repos/github.com/Shougo/dein.vim/
call dein#begin(expand('~/.vim/dein'))
call dein#add('Shougo/dein.vim')
call dein#add('HerringtonDarkholme/yats.vim')
call dein#end()

The reproduce ways from Vim starting (Required!)

First, touch test.ts in shell

  1. nvim test.ts
  2. :set ft

it prints xml rather than typescript as specified in ftdetec.vim

p.s. ftdetect works if syntax enable is placed after dein#begin

dein#local() and frozen option: strange behavior

dein#local()

From the documentation:

dein#local({directory}, [{options}, [{names}]])

Simplest test:

call dein#local("~/vim/dotvim", {}, ['plugin'])

call dein#update()

The plugin will be loaded, but with the message:

[dein] ~/vim/dotvim/plugin
[dein] fatal: Not a git repository (or any of the parent directories): .git

frozen option (no doc.)

call dein#add('Shougo/unite.vim', {'frozen': 1})
call dein#local("~/vim/dotvim", {'frozen': 1}, ['plugin'])

call dein#update()

In both cases we get the exception (and interruption update):

Error detected while processing function dein#update[1]..dein#install#_update[9]..35_install[23]..35_sync[46]..vimproc#pgroup_open[15]..36_pgroup_open:
line 5:
E684: list index out of range: 0
E116: Invalid arguments for function vimproc#util#cd

It seems to run an "empty" command, because "cmd" var. will be empty when there is the frozen option: dein/install.vim#L172

The installation path changes with g:dein#types#git#default_protocol

Problems summary

The installation path of plugin changes with g:dein#types#git#default_protocol.

For example, install Shougo/dein.vim:

call dein#add('Shougo/dein.vim')

When g:dein#types#git#default_protocol = 'https' (default), the plugin is installed to:

<dein-base>/repos/github.com/Shougo/dein.vim

But when g:dein#types#git#default_protocol = 'git':

<dein-base>/repos/Shougo/dein.vim

github.com is missing.

Expected

I think this should not be changed.

Environment Information

  • OS: Windows
  • Vim version: 7.4.1403 (from Chocolatey)
  • Maybe this occurs on all environment (I think).

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

let $DEIN_ROOT = expand('~/vimfiles/bundle')
let $DEIN_DIR = expand('$DEIN_ROOT/repos/github.com/Shougo/dein.vim')

set runtimepath^=$DEIN_DIR

let g:dein#types#git#default_protocol = 'ssh'

call dein#begin($DEIN_ROOT)
call dein#add('Shougo/dein.vim')
call dein#end()

The reproduce ways from Vim starting (Required!)

  1. mkdir %HOMEDRIVE%%HOMEPATH%\vimfiles\bundle\repos\github.com\Shougo
    git clone https://github.com/Shougo/dein.vim %HOMEDRIVE%%HOMEPATH%\vimfiles\bundle\repos\github.com\Shougo\dein.vim
    
  2. Start Vim with above vimrc

Long time installing plugins in neovim

Problems summary

Not sure if this is an issue with Dein or my setup, but plugin install is taking a rather long time. On hour 2 right now.

Also there are some errors randomly popping up

Error detected while processing function <SNR>39_install_async..<SNR>39_check_loop..<SNR>39_check_output:
line   21:
E900: Invalid job id

Environment Information

  • OS: Mac OSX
  • NeoVim version: NVIM v0.1.1-165-g074d3dc (compiled Jan 4 2016 11:59:01

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

https://gist.github.com/mhartington/2bac361929a18e801106

The lastest version of dein.vim cause E741 error

Problems summary

After I updated dein.vim this morning, I think dein#save_cache() cause vim error. But works fine in neovim. Without save_cache also works fine in vim.

Expected

Environment Information

  • OS: OS X El Capitan 10.11.3
  • Vim version: 7.4.1468 or MacVim 7.4.1362, NVIM v0.1.3-250-gb01db02

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

" Your minimal .vimrc
set nocompatible
let s:cache_dir = expand('~/.cache/')
execute 'set runtimepath^=' . s:cache_dir . '/dein/repos/github.com/Shougo/dein.vim'
call dein#begin(s:cache_dir . '/dein')
if dein#load_cache()
      call dein#add('Shougo/dein.vim')
      call dein#add('xxxxxx.vim') " any other plugin. I tried lightline and neocompletein this minimal vimrc
      call dein#save_cache()
endif
call dein#end()
filetype plugin indent on

The reproduce ways from Vim starting (Required!)

  1. First run command call dein#clear_cache() in vim then quit.
  2. Open vim again. No error shows at this time. Then quit.
  3. Open vim. This time the error comes up.

Screen shot (if possible)

Upload the log messages by :redir and :message

Error detected while processing function dein#end:
line 34:
E741: Value is locked: plugin.sourced = 1

autocmd in hook_add in toml cause exceptions

Problems summary

autocmd in hook_add attribute in TOML file cause one of the following exception

  • E215: Illegal character after *: *
  • E216: No such group or event:

Environment Information

  • OS: Ubuntu 15.04
  • Vim version: neovim / vim 7.4.1685

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

" vim -u ~/.vim/vimrc.min
if has('vim_starting')
  set nocompatible
  set runtimepath+=~/.vim/bundle/repos/dein.vim
endif

call dein#begin(expand('~/.vim/bundle/minimum'))
call dein#load_toml('~/test.toml')
call dein#end()

filetype plugin indent on
syntax on

And ~/test.toml is

[[plugins]]
repo = 'lambdalisue/vim-findent'
hook_add = '''
  augroup findent
    autocmd! *
    autocmd FileType vim Findent --no-warnings
  augroup END
'''

The reproduce ways from Vim starting (Required!)

  1. vim -u ~/vimrc.min
  2. autocmd! * cause E215 and autocmd! cause E216

Upload the log messages by :redir and :message

# with autocmd! *
alisue *> vim -u ~/.vim/vimrc.min
[dein] Error occurred while executing hook: vim-findent
[dein] Vim(autocmd):E215: Illegal character after *: *
[dein]     autocmd FileType vim Findent --no-warnings
[dein]   augroup END
Press ENTER or type command to continue
# with autocmd!
alisue *> vim -u ~/.vim/vimrc.min
[dein] Error occurred while executing hook: vim-findent
[dein] Vim(autocmd):E216: No such group or event: 
[dein]     autocmd FileType vim Findent --no-warnings
[dein]   augroup END
Press ENTER or type command to continue

Note that ~/.vim/bundle/state_nvim.vim or so looks correct so this happen only during TOML parse even the parsed value is correct.

E121: Undefined variable: g:dein#install_process_timeout

Problems summary

Problem started with this commit:
0714f93

Error:

Error detected while processing function dein#add[1]..dein#parse#_add[1]..dein#parse#_dict:
line    1:
E121: Undefined variable: g:dein#install_process_timeout
E15: Invalid expression: { 'type': 'none', 'uri': '', 'rev': '', 'rtp': '', 'if': 1, 'sourced': 0, 'local': 0, 'base': dein#util#_get_base_path() . '/repos', 'frozen': 0, 'depends': [], 'timeout': g:dein#install_process_timeout, 'dummy_commands': [], 'dummy_mappings': [], 'build': {}, 'on_i': 0, 'on_ft': [], 'on_cmd': [], 'on_func': [], 'on_map': [], 'on_path': [], 'on_source': [], 'pre_cmd': [], 'pre_func': [], }

Expected

Environment Information

  • OS: Ubuntu Linux 15.04
  • Vim version: neovim-0.1.2ubuntu1+git201603131848+2368+17~ubuntu15.04.1

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

set runtimepath+=$HOME/.config/nvim/repos/github.com/Shougo/dein.vim

call dein#begin(expand('~/.cache/dein'))
call dein#add('Shougo/dein.vim')
call dein#end()

The reproduce ways from Vim starting (Required!)

Occurs on starting nvim

dein#add() with local path

Problems summary

dein#add() にローカルパスを指定すると「インストールされていないプラグイン」としてマークされて毎回インストールしようとしてしまう。

Expected

ローカルパスは更新を試みないで欲しい。

Environment Information

  • OS: MS-Windows 10
  • Vim version: 7.4.1403

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

let $DEIN_ROOT = expand('~/sample/dein')
let $DEIN_DIR = expand('$DEIN_ROOT/repos/github.com/Shougo/dein.vim')

set runtimepath^=$DEIN_DIR

call dein#begin($DEIN_ROOT)
call dein#add($DEIN_DIR)
call dein#end()

if dein#check_install()
  call dein#install()
endif

The reproduce ways from Vim starting (Required!)

cd %HOMEDRIVE%%HOMEPATH%
mkdir sample/dein/repos/github.com/Shougo
git clone https://github.com/Shougo/dein.vim sample/dein/repos/github.com/Shougo/dein.vim

Warn users when invalid key is specified in dein-options

Problems summary

I used 'directory' option to tell dein.vim to look a different directory (~/.vim/bundle/repos/dein.vim) instead of a normal directory (~/.vim/bundle/repos/github.com/Shougo/dein.vim).
However, 962cb62 remove 'base' and 'directory' options and I didn't notice that.
That's why I made an invalid issue which was fixed several days ago because I believed that I was using a latest version while I called call dein#update() just before making that issue and confirmed the behaviour with the minimal vimrc. This kind of invalid issue is just a wasting time of yours and mine....

I'm OK that if you make backward incompatible changes, but it would be nice to warn users if they have backward incompatible configuration.
In this case, warn users when dein-options dictionary has invalid keys.
Otherwise users never notice that them configuration actually became invalid. What do you think?

Expected

When invalid options (say, 'directory') are specified, warn users.

Environment Information

  • OS:
  • Vim version:
  • dein.vim version: aa606a1

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

" vim -u ~/.vim/vimrc.min
if has('vim_starting')
  set nocompatible
  set runtimepath+=~/bundle/repos/dein.vim
endif

call dein#begin(expand('~/bundle'))
call dein#add('Shougo/dein.vim', {
      \ 'directory': 'dein.vim',
      \})
call dein#end()

filetype plugin indent on
syntax on

The reproduce ways from Vim starting (Required!)

  1. vim -u ~/vimrc.min
  2. 'directory' key is invalid but no warning is shown.

Plugins disabled at start-up are still active.

Problems summary

I have a block in my .vimrc that would selectively load some plugins. This looks roughly like this:

"/Users/myUser/.vim/bundle
call dein#begin('/Users/myUser/.vim/bundle')
" Initial plugin is the plugin manager.
call dein#add('Shougo/dein.vim')
" Add or remove your plugins here:
call s:InitMyPlugins()
call dein#end()

The s:InitMyPlugins() is simply sourcing .vim files with dein# command(s) inside. For example:

" vim-airline-init.vim
call dein#add('bling/vim-airline')

" vim-syntastic-init.vim
call dein#add('scrooloose/syntastic')

Expected

I would expect that the syntastic plugin is not loaded if I skip sourcing the vim-syntastic-init.vim or in a similar fashion I would expect the vim-airline plugin to be offline if I am not sourcing the vim-airline-init.vim. Instead, after a VIM restart, those plugins are still around. Only after running dein#recache_runtimepath() and another restart, those plugins are disabled.

Environment Information

  • OS:
    OSX, Yosemite, 10.10.5
  • Vim version:
    7.4 (Included patches: 1-1553)

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

This might be some kind of a feature that I was not able to understand, so before creating a minimal .vimrc I would like to see if I can fix this.

The reproduce ways from Vim starting (Required!)

(not available)

Screen shot (if possible)

(not available)

Upload the log messages by :redir and :message

(not available)

最小の.vimrcでエラー

Problems summary

最小限の.vimrcでエラーに成ってしまう

Expected

Environment Information

  • OS: Windows10
  • Vim version: GVim 7.4 p1194 kaoriya
     

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

let s:cache_dir = expand('~/.cache')
execute 'set runtimepath^=' . s:cache_dir . '/plugin/repos/github.com/Shougo/dein.vim'
call dein#begin(s:cache_dir . '/plugin')
call dein#add('Shougo/dein.vim')
call dein#end()
filetype plugin indent on

The reproduce ways from Vim starting (Required!)

1.上記の .vimrc を .minivimrc の名前にホームディレクトリにおいて gvim -u ~/.minivimrc で起動
2. 起動時にダイアログでエラー

C:\Users\yoi\.cache\plugin\repos\github.
com\Shougo\dein.vim\autoload\dein.vim 
の処理中にエラーが検出されました:

行   82:

E15: 無効な式です: 

E15: 無効な式です: 

行   83:

E10: \ の後は / か ? か & でなければなりません

行   84:

E15: 無効な式です: 

E15: 無効な式です: 

行   85:

E10: \ の後は / か ? か & でなければなりません

--- Auto-Commands ---

function dein#_init の処理中にエラーが検出さ
れました:

行   16:

E10: \ の後は / か ? か & でなければなりません

C:\Users\yoi\.cache\plugin\repos\github.
com\Shougo\dein.vim\autoload\dein.vim 
の処理中にエラーが検出されました:

行  336:

E10: \ の後は / か ? か & でなければなりません

function dein#begin[7]..dein#_expand 
の処理中にエラーが検出されました:

行    1:

E15: 無効な式です: 

E15: 無効な式です: (a:path =~ '^\~') ? 
fnamemodify(a:path, ':p') :

function dein#add の処理中にエラーが検出さ
れました:

行    6:

E116: 関数の無効な引数です: dein#parse#_d
ict(

E15: 無効な式です: dein#parse#_dict(

[dein] Invalid runtimepath.

Screen shot (if possible)

image

Upload the log messages by :redir and :message

When the plugin is not lazy, hook_source and hook_post_source does not fire on second or later startup.

Problems summary

Expected

If lazy option of the plugin is disabled, all hooks (hook_add, hook_source, hook_post_source) will be fired in this order on always startup.

Actual

If lazy option of the plugin is disabled,

  • on first startup
    • hook_add and hook_source and hook_post_source will be fired. (this is expected)
  • on second or later startup
    • hook_add fire will be fired
    • hook_source and hook_post_source will be never fired. (this is not expected)

Environment Information

  • OS: OSX10.11.3
  • Vim version: nvim (brew latest)

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

Add this to my dein.toml. and call 'dein#load_toml('/path/to/dein.toml', {'lazy':1})` in init.vim.

[[plugins]]
repo = 'w0ng/vim-hybrid'
hook_add = '''
  echo "hook_add"
'''
hook_source = '''
  echo "hook_source"
'''
hook_post_source = '''
  echo "hook_post_source"
'''

The reproduce ways from Vim starting (Required!)

  1. clear state cache
  2. start nvim(or vim)
    • hook_add / hook_source / hook_post_source are displayed.
    • quit nvim(or vim)
  3. start nvim(or vim) again
    • hook_add is displayed. (expected)
    • hook_source / hook_post_source are not displayed. (not expected)

dein#util#_load_merged_plugins() raise E474

Problems summary

function! dein#util#_vim2json(expr) abort "{{{
return has('patch-7.4.1498') ? js_encode(a:expr) : string(a:expr)
endfunction "}}}
function! dein#util#_json2vim(expr) abort "{{{
sandbox return has('patch-7.4.1498') ? js_decode(a:expr) : eval(a:expr)
endfunction "}}}

json_decode({string}) raise E474: Invalid argument when an item in a list is quoted by single quotes instead of double quotes (invalid json, like vimson).

Expected

json_decode should not be used while user might use neovim and vim and json and vimson is completely different.

Or

Do not use string({object}) to create a vimson and create a valid json (quote with double quotes) even in neovim or old vim.

Or

Simply use writefile() and readfile() instead of making json while merged just contain plugin names (but it solved _load_merged_plugins() function only)

Environment Information

  • OS:
  • Vim version: NVIM-0.1.3 vs Vim 7.4.1685

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

" In neovim, eval is used instead of js_decode
eval("['A']")
" => ['A']

" In Vim, js_decode is used instead of eval
js_decode("['A']")
" => E474: Invalid argument

" Opposite is OK
eval('["A"]')
" => ['A']
js_decode('["A"]')
" => ['A']

Reproduce

  1. Remove ~/.vim/bundle/merged
  2. Start neovim to create ~/.vim/bundle/merged
  3. Start vim to load ~/.vim/bundle/merged

Screen shot (if possible)

The E474 raise cause something like the below

selection_020

Upload the log messages by :redir and :message

dein#check_install not working

Problems summary

echo dein#check_install(['syntastic']) returns 0

Expected

Syntastic is installed and I would expect the function to return 1

Environment Information

  • OS:
    OSX
  • Vim version:
    7.4 (1-1553)

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

" Your minimal .vimrc
set runtimepath^=~/path/to/dein.nvim/
call dein#begin(path)
call dein#end()

The reproduce ways from Vim starting (Required!)

  1. Start VIM and run echo dein#check_install(['syntastic']) or do this for any plugin.

Screen shot (if possible)

Upload the log messages by :redir and :message

E464 Ambiguous use of user-defined command

Problems summary

lazy load plugin get error E464,can not reproduce in neobundle.

Expected

command works well

Environment Information

  • OS: ubuntu
  • Vim version: latest(neovim)

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

" Your minimal .vimrc
set runtimepath^=~/path/to/dein.nvim/
call dein#begin(path)
call dein#add('Shougo/vimfiler.vim',{'lazy' : 1 , 'on_cmd' : 'VimFiler'})
    noremap <silent> <F3> :VimFiler<CR>
call dein#end()

The reproduce ways from Vim starting (Required!)

  1. star vim
  2. type twice
  3. baz

Screen shot (if possible)

Upload the log messages by :redir and :message

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.