diff --git a/iterm/dive-blue.itermcolors b/iterm/dive-blue.itermcolors
new file mode 100644
index 0000000..ed0b2f6
--- /dev/null
+++ b/iterm/dive-blue.itermcolors
@@ -0,0 +1,213 @@
+
+
+
+
+ Ansi 0 Color
+
+ Blue Component
+ 0.13863241792929293
+ Green Component
+ 0.13863241792929293
+ Red Component
+ 0.13863241792929293
+
+ Ansi 1 Color
+
+ Blue Component
+ 0.0
+ Green Component
+ 0.0
+ Red Component
+ 0.73333334922790527
+
+ Ansi 10 Color
+
+ Blue Component
+ 0.0
+ Green Component
+ 0.93863123655319214
+ Red Component
+ 0.81519259891667195
+
+ Ansi 11 Color
+
+ Blue Component
+ 0.95831196345308145
+ Green Component
+ 0.90818294859853477
+ Red Component
+ 1
+
+ Ansi 12 Color
+
+ Blue Component
+ 1
+ Green Component
+ 0.35028249216144114
+ Red Component
+ 0.33228410804237429
+
+ Ansi 13 Color
+
+ Blue Component
+ 0.95580336202768557
+ Green Component
+ 0.43898106009313798
+ Red Component
+ 1
+
+ Ansi 14 Color
+
+ Blue Component
+ 1
+ Green Component
+ 0.69175738096237183
+ Red Component
+ 0.18206536769866943
+
+ Ansi 15 Color
+
+ Blue Component
+ 1
+ Green Component
+ 0.98374009132385254
+ Red Component
+ 0.96765059232711792
+
+ Ansi 2 Color
+
+ Blue Component
+ 1
+ Green Component
+ 0.0
+ Red Component
+ 0.48821133375167847
+
+ Ansi 3 Color
+
+ Blue Component
+ 0.44253450624810831
+ Green Component
+ 0.37018267775822222
+ Red Component
+ 1
+
+ Ansi 4 Color
+
+ Blue Component
+ 1
+ Green Component
+ 0.6520163853240426
+ Red Component
+ 0.0
+
+ Ansi 5 Color
+
+ Blue Component
+ 0.9444358223077236
+ Green Component
+ 1
+ Red Component
+ 0.0
+
+ Ansi 6 Color
+
+ Blue Component
+ 0.63589870929718018
+ Green Component
+ 0.73333334922790527
+ Red Component
+ 0.063085161149501801
+
+ Ansi 7 Color
+
+ Blue Component
+ 0.7519041080853881
+ Green Component
+ 0.71496204568995447
+ Red Component
+ 0.79409998655319214
+
+ Ansi 8 Color
+
+ Blue Component
+ 0.33333333333333331
+ Green Component
+ 0.33333333333333331
+ Red Component
+ 0.33333333333333331
+
+ Ansi 9 Color
+
+ Blue Component
+ 0.3333333432674408
+ Green Component
+ 0.3333333432674408
+ Red Component
+ 1
+
+ Background Color
+
+ Blue Component
+ 0.87079782196969691
+ Green Component
+ 0.1721805548914164
+ Red Component
+ 0.0
+
+ Bold Color
+
+ Blue Component
+ 0.87799109818097032
+ Green Component
+ 1
+ Red Component
+ 0.75928070281883253
+
+ Cursor Color
+
+ Blue Component
+ 0.73333334922790527
+ Green Component
+ 0.73333334922790527
+ Red Component
+ 0.73333334922790527
+
+ Cursor Text Color
+
+ Blue Component
+ 1
+ Green Component
+ 1
+ Red Component
+ 1
+
+ Foreground Color
+
+ Blue Component
+ 0.94509803921568625
+ Green Component
+ 1
+ Red Component
+ 0.94117647058823528
+
+ Selected Text Color
+
+ Blue Component
+ 1
+ Green Component
+ 0.18293527746864413
+ Red Component
+ 0.94237203617683463
+
+ Selection Color
+
+ Blue Component
+ 0.28296638257575757
+ Green Component
+ 0.062421906360556716
+ Red Component
+ 0.12213946629502002
+
+
+
diff --git a/vim/bundle/Vundle.vim b/vim/bundle/Vundle.vim
index 0b28e33..cfd3b2d 160000
--- a/vim/bundle/Vundle.vim
+++ b/vim/bundle/Vundle.vim
@@ -1 +1 @@
-Subproject commit 0b28e334e65b6628b0a61c412fcb45204a2f2bab
+Subproject commit cfd3b2d388a8c2e9903d7a9d80a65539aabfe933
diff --git a/vim/bundle/ag/.gitignore b/vim/bundle/ag/.gitignore
deleted file mode 100644
index e350ecc..0000000
--- a/vim/bundle/ag/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-tags
-ag-vim.tgz
diff --git a/vim/bundle/ag/README.md b/vim/bundle/ag/README.md
deleted file mode 100644
index e35d7bd..0000000
--- a/vim/bundle/ag/README.md
+++ /dev/null
@@ -1,75 +0,0 @@
-# ag.vim #
-
-This plugin is a front for ag, A.K.A.
-[the_silver_searcher](https://github.com/ggreer/the_silver_searcher). Ag can
-be used as a replacement for 153% of the uses of `ack`. This plugin will allow
-you to run ag from vim, and shows the results in a split window.
-
-## Installation ##
-
-### The Silver Searcher
-
-You have to first install [ag](https://github.com/ggreer/the_silver_searcher), itself. On Mac+Homebrew, Gentoo Linux, several others, there's package named `the_silver_searcher`, but if your OS/distro don't have one, the GitHub repo installs fine:
-
-```sh
-git clone https://github.com/ggreer/the_silver_searcher ag && cd ag && ./build.sh && sudo make install
-```
-
-* Then, if you're using [pathogen](https://github.com/tpope/vim-pathogen):
-
-```sh
-cd ~/.vim/bundle && git clone https://github.com/rking/ag.vim ag && vim +Helptags
-```
-
-* Or, if you're using [Vundle](https://github.com/gmarik/vundle):
-
-```sh
-echo "Bundle 'rking/ag.vim'" >> ~/.vimrc && vim +BundleInstall
-```
-
-### Configuration
-
-You can specify a custom ag name and path in your .vimrc like so:
-
- let g:agprg=" --column"
-
-## Usage ##
-
- :Ag [options] {pattern} [{directory}]
-
-Search recursively in {directory} (which defaults to the current directory) for the {pattern}.
-
-Files containing the search term will be listed in the split window, along with
-the line number of the occurrence, once for each occurrence. [Enter] on a line
-in this window will open the file, and place the cursor on the matching line.
-
-Just like where you use :grep, :grepadd, :lgrep, and :lgrepadd, you can use `:Ag`, `:AgAdd`, `:LAg`, and `:LAgAdd` respectively. (See `doc/ag.txt`, or install and `:h Ag` for more information.)
-
-### Gotchas ###
-
-Some characters have special meaning, and need to be escaped your search pattern. For instance, '#'. You have to escape it like this `:Ag '\\\#define foo'` to search for `#define foo`. (From [blueyed in issue #5](https://github.com/mileszs/ack.vim/issues/5).)
-
-Sometimes `git grep` is even faster, though in my experience it's not noticeably so.
-
-### Keyboard Shortcuts ###
-
-In the quickfix window, you can use:
-
- e to open file and close the quickfix window
- o to open (same as enter)
- go to preview file (open but maintain focus on ag.vim results)
- t to open in new tab
- T to open in new tab silently
- h to open in horizontal split
- H to open in horizontal split silently
- v to open in vertical split
- gv to open in vertical split silently
- q to close the quickfix window
-
-### Acknowledgements
-
-This Vim plugin is derived (and by derived, I mean copied, almost entirely)
-from [milesz's ack.vim](https://github.com/mileszs/ack.vim), which I also
-recommend installing since you might be in a situation where you have ack but
-not ag, and don't want to stop to install ag. Also, ack supports `--type`, and
-a few other features.
diff --git a/vim/bundle/ag/Rakefile b/vim/bundle/ag/Rakefile
deleted file mode 100644
index e6bb6da..0000000
--- a/vim/bundle/ag/Rakefile
+++ /dev/null
@@ -1,3 +0,0 @@
-task :tgz do
- sh 'cd ..; tar czvf ag/ag-vim.tgz ag/{plugin,autoload,doc}'
-end
diff --git a/vim/bundle/ag/autoload/ag.vim b/vim/bundle/ag/autoload/ag.vim
deleted file mode 100644
index 86cbe95..0000000
--- a/vim/bundle/ag/autoload/ag.vim
+++ /dev/null
@@ -1,147 +0,0 @@
-" NOTE: You must, of course, install ag / the_silver_searcher
-
-" Location of the ag utility
-if !exists("g:agprg")
- let g:agprg="ag --column"
-endif
-
-if !exists("g:ag_apply_qmappings")
- let g:ag_apply_qmappings=1
-endif
-
-if !exists("g:ag_apply_lmappings")
- let g:ag_apply_lmappings=1
-endif
-
-if !exists("g:ag_qhandler")
- let g:ag_qhandler="botright copen"
-endif
-
-if !exists("g:ag_lhandler")
- let g:ag_lhandler="botright lopen"
-endif
-
-if !exists("g:ag_mapping_message")
- let g:ag_mapping_message=1
-endif
-
-function! ag#Ag(cmd, args)
- let l:ag_executable = get(split(g:agprg, " "), 0)
-
- " Ensure that `ag` is installed
- if !executable(l:ag_executable)
- echoe "Ag command '" . l:ag_executable . "' was not found. Is the silver searcher installed and on your $PATH?"
- return
- endif
-
- " If no pattern is provided, search for the word under the cursor
- if empty(a:args)
- let l:grepargs = expand("")
- else
- let l:grepargs = a:args . join(a:000, ' ')
- end
-
- " Format, used to manage column jump
- if a:cmd =~# '-g$'
- let s:agformat_backup=g:agformat
- let g:agformat="%f"
- elseif exists("s:agformat_backup")
- let g:agformat=s:agformat_backup
- elseif !exists("g:agformat")
- let g:agformat="%f:%l:%c:%m"
- endif
-
- let l:grepprg_bak=&grepprg
- let l:grepformat_bak=&grepformat
- let l:t_ti_bak=&t_ti
- let l:t_te_bak=&t_te
- try
- let &grepprg=g:agprg
- let &grepformat=g:agformat
- set t_ti=
- set t_te=
- silent execute a:cmd . " " . escape(l:grepargs, '|')
- finally
- let &grepprg=l:grepprg_bak
- let &grepformat=l:grepformat_bak
- let &t_ti=l:t_ti_bak
- let &t_te=l:t_te_bak
- endtry
-
- if a:cmd =~# '^l'
- let l:match_count = len(getloclist(winnr()))
- else
- let l:match_count = len(getqflist())
- endif
-
- if a:cmd =~# '^l' && l:match_count
- exe g:ag_lhandler
- let l:apply_mappings = g:ag_apply_lmappings
- let l:matches_window_prefix = 'l' " we're using the location list
- elseif l:match_count
- exe g:ag_qhandler
- let l:apply_mappings = g:ag_apply_qmappings
- let l:matches_window_prefix = 'c' " we're using the quickfix window
- endif
-
- " If highlighting is on, highlight the search keyword.
- if exists("g:aghighlight")
- let @/=a:args
- set hlsearch
- end
-
- redraw!
-
- if l:match_count
- if l:apply_mappings
- nnoremap h K
- nnoremap H Kb
- nnoremap o
- nnoremap t T
- nnoremap T TgT
- nnoremap v HbJt
-
- exe 'nnoremap e :' . l:matches_window_prefix .'close'
- exe 'nnoremap go :' . l:matches_window_prefix . 'open'
- exe 'nnoremap q :' . l:matches_window_prefix . 'close'
-
- exe 'nnoremap gv :let b:height=winheight(0)H:' . l:matches_window_prefix . 'openJ:exe printf(":normal %d\c-w>_", b:height)'
- " Interpretation:
- " :let b:height=winheight(0) Get the height of the quickfix/location list window
- " Open the current item in a new split
- " H Slam the newly opened window against the left edge
- " :copen -or- :lopen Open either the quickfix window or the location list (whichever we were using)
- " J Slam the quickfix/location list window against the bottom edge
- " :exe printf(":normal %d\c-w>_", b:height) Restore the quickfix/location list window's height from before we opened the match
-
- if g:ag_mapping_message && l:apply_mappings
- echom "ag.vim keys: q=quit /e/t/h/v=enter/edit/tab/split/vsplit go/T/H/gv=preview versions of same"
- endif
- endif
- else
- echom 'No matches for "'.a:args.'"'
- endif
-endfunction
-
-function! ag#AgFromSearch(cmd, args)
- let search = getreg('/')
- " translate vim regular expression to perl regular expression.
- let search = substitute(search,'\(\\<\|\\>\)','\\b','g')
- call ag#Ag(a:cmd, '"' . search .'" '. a:args)
-endfunction
-
-function! ag#GetDocLocations()
- let dp = ''
- for p in split(&runtimepath,',')
- let p = p.'/doc/'
- if isdirectory(p)
- let dp = p.'*.txt '.dp
- endif
- endfor
- return dp
-endfunction
-
-function! ag#AgHelp(cmd,args)
- let args = a:args.' '.ag#GetDocLocations()
- call ag#Ag(a:cmd,args)
-endfunction
diff --git a/vim/bundle/ag/doc/ag.txt b/vim/bundle/ag/doc/ag.txt
deleted file mode 100644
index 37b107b..0000000
--- a/vim/bundle/ag/doc/ag.txt
+++ /dev/null
@@ -1,142 +0,0 @@
-*ag.txt* Plugin that integrates ag with Vim
-
-==============================================================================
-INTRODUCTION *ag*
-
-This plugin is a front for the_silver_searcher: ag. Ag can be used as a
-replacement for ack. This plugin will allow you to run ag from vim, and
-shows the results in a split window.
-
-:Ag[!] [options] {pattern} [{directory}] *:Ag*
-
- Search recursively in {directory} (which defaults to the current
- directory) for the {pattern}. Behaves just like the |:grep| command, but
- will open the |Quickfix| window for you. If [!] is not given the first
- error is jumped to.
-
-:AgAdd [options] {pattern} [{directory}] *:AgAdd*
-
- Just like |:Ag|, but instead of making a new list, the matches are
- appended to the current |quickfix| list.
-
-:AgFromSearch [{directory}] *:AgFromSearch*
-
- Just like |:Ag| but the pattern is from previous search.
-
-:LAg [options] {pattern} [{directory}] *:LAg*
-
- Just like |:Ag| but instead of the |quickfix| list, matches are placed in
- the current |location-list|.
-
-:LAgAdd [options] {pattern} [{directory}] *:LAgAdd*
-
- Just like |:AgAdd| but instead of the |quickfix| list, matches are added
- to the current |location-list|
-
-:AgFile [options] {pattern} [{directory}] *:AgFile*
-
- Search recursively in {directory} (which defaults to the current
- directory) for filenames matching the {pattern}. Behaves just like the
- |:grep| command, but will open the |Quickfix| window for you.
-
-:AgHelp[!] [options] {pattern} *:AgHelp*
-
- Search vim documentation files for the {pattern}. Behaves just like the
- |:Ag| command, but searches only vim documentation .txt files
-
-:LAgHelp [options] {pattern} *:LAgHelp*
-
- Just like |:AgHelp| but instead of the |quickfix| list, matches are placed
- in the current |location-list|.
-
-Files containing the search term will be listed in the split window, along
-with the line number of the occurrence, once for each occurrence. on
-a line in this window will open the file, and place the cursor on the matching
-line.
-
-See http://geoff.greer.fm/2011/12/27/the-silver-searcher-better-than-ack/ for
-more information.
-
-==============================================================================
-OPTIONS *ag-options*
-
- *g:agprg*
-The location of the Ag program, and any options you want passed to it before
-searching. Default: "ag --column". Example: >
- let g:agprg="ag --column --smart-case"
-<
-
- *g:aghighlight*
-If 1, highlight the search terms after searching. Default: 0. Example: >
- let g:aghighlight=1
-<
-
- *g:agformat*
-Format to recognize the matches. See 'errorformat' for more info. Default:
-"%f" when searching for files, "%f:%l:%c:%m" if not otherwise set. For
-example, if your `g:agprg` is set to just "ag" (no column numbers in the
-output, so when you jump to a match your cursor will be on the start of the
-line): >
- let g:agformat="%f:%l:%m"
-<
-
- *g:ag_apply_lmappings*
-Whether or not to add custom mappings to location list windows opened by this
-plugin. Only applies if you're using the location list. Default 1. Example: >
- let g:ag_apply_lmappings=0
-<
-
- *g:ag_apply_qmappings*
-Whether or not to add custom mappings to quickfix windows opened by this
-plugin. Only applies if you're using the error list. Default 1. Example: >
- let g:ag_apply_qmappings=0
-<
-
- *g:ag_lhandler*
-A custom command used to open the location list after it's populated.
-Default: "botright lopen". You might want to set this to change where the
-location list is opened, or what size it is. Example: >
- let g:ag_lhandler="topleft lopen"
-<
-
- *g:ag_qhandler*
-A custom command used to open the error list after it's populated. Default:
-"botright copen". You might want to set this to change where the quickfix
-window is opened, or what size it is. Example: >
- let g:ag_qhandler="copen 20"
-<
-
- *g:ag_mapping_message*
-Whether or not to show the message explaining the extra mappings that are
-added to the results list this plugin populates. This message is not shown if
-the mappings are not applied (see |g:ag_apply_qmappings| and
-|g:ag_apply_lmappings| for more info. Default 1. Example: >
- let g:ag_mapping_message=0
-<
-
-==============================================================================
-MAPPINGS *ag-mappings*
-
-The following keyboard shortcuts are available in the quickfix window:
-
-e open file and close the quickfix window.
-
-o open file (same as enter).
-
-go preview file (open but maintain focus on ag.vim results).
-
-t open in a new tab.
-
-T open in new tab silently.
-
-h open in horizontal split.
-
-H open in horizontal split silently.
-
-v open in vertical split.
-
-gv open in vertical split silently.
-
-q close the quickfix window.
-
- vim:tw=78:fo=tcq2:ft=help:norl:
diff --git a/vim/bundle/ag/plugin/ag.vim b/vim/bundle/ag/plugin/ag.vim
deleted file mode 100644
index eb5bc22..0000000
--- a/vim/bundle/ag/plugin/ag.vim
+++ /dev/null
@@ -1,9 +0,0 @@
-" NOTE: You must, of course, install ag / the_silver_searcher
-command! -bang -nargs=* -complete=file Ag call ag#Ag('grep',)
-command! -bang -nargs=* -complete=file AgAdd call ag#Ag('grepadd', )
-command! -bang -nargs=* -complete=file AgFromSearch call ag#AgFromSearch('grep', )
-command! -bang -nargs=* -complete=file LAg call ag#Ag('lgrep', )
-command! -bang -nargs=* -complete=file LAgAdd call ag#Ag('lgrepadd', )
-command! -bang -nargs=* -complete=file AgFile call ag#Ag('grep -g', )
-command! -bang -nargs=* -complete=help AgHelp call ag#AgHelp('grep',)
-command! -bang -nargs=* -complete=help LAgHelp call ag#AgHelp('lgrep',)
diff --git a/vim/bundle/gist-vim/Makefile b/vim/bundle/gist-vim/Makefile
deleted file mode 100644
index 81370a8..0000000
--- a/vim/bundle/gist-vim/Makefile
+++ /dev/null
@@ -1,11 +0,0 @@
-all : gist-vim.zip
-
-remove-zip:
- -rm -f doc/tags
- -rm -f gist-vim.zip
-
-gist-vim.zip: remove-zip
- zip -r gist-vim.zip autoload plugin doc README.mkd
-
-release: gist-vim.zip
- vimup update-script gist.vim
diff --git a/vim/bundle/gist-vim/README.mkd b/vim/bundle/gist-vim/README.mkd
deleted file mode 100644
index d87b02f..0000000
--- a/vim/bundle/gist-vim/README.mkd
+++ /dev/null
@@ -1,224 +0,0 @@
-### Gist.vim
-
-This is a vimscript for creating gists (http://gist.github.com).
-
-For the latest version please see https://github.com/mattn/gist-vim.
-
-## Usage:
-
-- Post current buffer to gist, using default privacy option.
-
- :Gist
-
-- Post selected text to gist, using default privacy option.
- This applies to all permutations listed below (except multi).
-
- :'<,'>Gist
-
-- Create a private gist.
-
- :Gist -p
-
-- Create a public gist.
- (Only relevant if you've set gists to be private by default.)
-
- :Gist -P
-
-> This is only relevant if you've set gists to be private by default;
-> if you get an empty gist list, try ":Gist --abandon".
-
-- Create a gist anonymously.
-
- :Gist -a
-
-- Create a gist with all open buffers.
-
- :Gist -m
-
-- Edit the gist (you need to have opened the gist buffer first).
- You can update the gist with the ":w" command within the gist buffer.
-
- :Gist -e
-
-- Edit the gist with name 'foo.js' (you need to have opened the gist buffer
- first).
-
- :Gist -e foo.js
-
-- Post/Edit with the description " (you need to have opened the gist buffer
- first). >
-
- :Gist -s something
- :Gist -e -s something
-
-- Delete the gist (you need to have opened the gist buffer first).
- Password authentication is needed.
-
- :Gist -d
-
-- Fork the gist (you need to have opened the gist buffer first).
- Password authentication is needed.
-
- :Gist -f
-
-- Star the gist (you need to have opened the gist buffer first).
- Password authentication is needed.
-
- :Gist +1
-
-- Unstar the gist (you need to have opened the gist buffer first).
- Password authentication is needed.
-
- :Gist -1
-
-- Get gist XXXXX.
-
- :Gist XXXXX
-
-- Get gist XXXXX and add to clipboard.
-
- :Gist -c XXXXX
-
-- List your public gists.
-
- :Gist -l
-
-- List gists from user "mattn".
-
- :Gist -l mattn
-
-- List everyone's gists.
-
- :Gist -la
-
-- List gists from your starred gists.
-
- :Gist -ls
-
-## Tips:
-
-If you set g:gist_clip_command, gist.vim will copy the gist code with option
-'-c'.
-
-- Mac:
-
- let g:gist_clip_command = 'pbcopy'
-
-- Linux:
-
- let g:gist_clip_command = 'xclip -selection clipboard'
-
-- Others (cygwin?):
-
- let g:gist_clip_command = 'putclip'
-
-If you want to detect filetype from the filename:
-
- let g:gist_detect_filetype = 1
-
-If you want to open browser after the post:
-
- let g:gist_open_browser_after_post = 1
-
-If you want to change the browser:
-
- let g:gist_browser_command = 'w3m %URL%'
-
-or:
-
- let g:gist_browser_command = 'opera %URL% &'
-
-On windows, this should work with your user settings.
-
-If you want to show your private gists with ":Gist -l":
-
- let g:gist_show_privates = 1
-
-If you want your gist to be private by default:
-
- let g:gist_post_private = 1
-
-If you want to manipulate multiple files in a gist:
-
- let g:gist_get_multiplefile = 1
-
-If you want to use on Github Enterprise:
-
- let g:github_api_url = 'http://your-github-enterprise-domain/api/v3'
-
-You need to either set global git config:
-
- $ git config --global github.user Username
-
-## License:
-
- Copyright 2010 by Yasuhiro Matsumoto
- modification, are permitted provided that the following conditions are met:
-
- 1. Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- 2. Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
- OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-## Install:
-
-Copy it to your plugin directory.
-gist.vim will create a curl cookie-jar file in your runtimepath.
-
-- rtp:
- - autoload/gist.vim
- - plugin/gist.vim
-
-If you want to uninstall gist.vim, remember to also remove `~/.gist-vim`.
-
-You need to install webapi-vim also:
-
- http://www.vim.org/scripts/script.php?script_id=4019
-
-If you want to use latest one:
-
- https://github.com/mattn/webapi-vim
-
-### Install with [Vundle](https://github.com/gmarik/vundle)
-
-Add the following lines to your `.vimrc`.
-
- Bundle 'mattn/webapi-vim'
- Bundle 'mattn/gist-vim'
-
-Now restart Vim and run `:BundleInstall`.
-
-## Requirements:
-
-- curl command (http://curl.haxx.se/)
-- webapi-vim (https://github.com/mattn/webapi-vim)
-- and if you want to use your git profile, the git command-line client.
-
-## Setup:
-
-This plugin uses github API v3. Setting value is stored in `~/.gist-vim`.
-gist-vim have two ways to access APIs.
-
-First, you need to set your Github username in global git config:
-
- $ git config --global github.user Username
-
-Then, gist.vim will ask for your password to create an authorization when you
-first use it. The password is not stored and only the OAuth access token will
-be kept for later use. You can revoke the token at any time from the list of
-["Authorized applications" on Github's "Account Settings" page](https://github.com/settings/applications).
diff --git a/vim/bundle/gist-vim/autoload/gist.vim b/vim/bundle/gist-vim/autoload/gist.vim
deleted file mode 100644
index 97ab18a..0000000
--- a/vim/bundle/gist-vim/autoload/gist.vim
+++ /dev/null
@@ -1,919 +0,0 @@
-"=============================================================================
-" File: gist.vim
-" Author: Yasuhiro Matsumoto
-" Last Change: 21-Jan-2013.
-" Version: 7.1
-" WebPage: http://github.com/mattn/gist-vim
-" License: BSD
-
-let s:save_cpo = &cpo
-set cpo&vim
-
-if !exists('g:github_user') && !executable('git')
- echohl ErrorMsg | echomsg "Gist: require 'git' command" | echohl None
- finish
-endif
-
-if !executable('curl')
- echohl ErrorMsg | echomsg "Gist: require 'curl' command" | echohl None
- finish
-endif
-
-let s:configfile = expand('~/.gist-vim')
-
-if !exists('g:github_user')
- let s:system = function(get(g:, 'webapi#system_function', 'system'))
- let g:github_user = substitute(s:system('git config --get github.user'), "\n", '', '')
- if strlen(g:github_user) == 0
- let g:github_user = $GITHUB_USER
- end
-endif
-
-if !exists('g:github_api_url')
- let g:github_api_url = 'https://api.github.com'
-endif
-
-if !exists('g:gist_update_on_write')
- let g:gist_update_on_write = 1
-endif
-
-function! s:get_browser_command()
- let gist_browser_command = get(g:, 'gist_browser_command', '')
- if gist_browser_command == ''
- if has('win32') || has('win64')
- let gist_browser_command = '!start rundll32 url.dll,FileProtocolHandler %URL%'
- elseif has('mac') || has('macunix') || has('gui_macvim') || system('uname') =~? '^darwin'
- let gist_browser_command = 'open %URL%'
- elseif executable('xdg-open')
- let gist_browser_command = 'xdg-open %URL%'
- elseif executable('firefox')
- let gist_browser_command = 'firefox %URL% &'
- else
- let gist_browser_command = ''
- endif
- endif
- return gist_browser_command
-endfunction
-
-function! s:open_browser(url)
- let cmd = s:get_browser_command()
- if len(cmd) == 0
- redraw
- echohl WarningMsg
- echo "It seems that you don't have general web browser. Open URL below."
- echohl None
- echo a:url
- return
- endif
- if cmd =~ '^!'
- let cmd = substitute(cmd, '%URL%', '\=shellescape(a:url)', 'g')
- silent! exec cmd
- elseif cmd =~ '^:[A-Z]'
- let cmd = substitute(cmd, '%URL%', '\=a:url', 'g')
- exec cmd
- else
- let cmd = substitute(cmd, '%URL%', '\=shellescape(a:url)', 'g')
- call system(cmd)
- endif
-endfunction
-
-function! s:shellwords(str)
- let words = split(a:str, '\%(\([^ \t\''"]\+\)\|''\([^\'']*\)''\|"\(\%([^\"\\]\|\\.\)*\)"\)\zs\s*\ze')
- let words = map(words, 'substitute(v:val, ''\\\([\\ ]\)'', ''\1'', "g")')
- let words = map(words, 'matchstr(v:val, ''^\%\("\zs\(.*\)\ze"\|''''\zs\(.*\)\ze''''\|.*\)$'')')
- return words
-endfunction
-
-function! s:format_gist(gist)
- let files = sort(keys(a:gist.files))
- if empty(files)
- return ""
- endif
- let file = a:gist.files[files[0]]
- if has_key(file, "content")
- let code = file.content
- let code = "\n".join(map(split(code, "\n"), '" ".v:val'), "\n")
- else
- let code = ""
- endif
- return printf("gist: %s %s%s", a:gist.id, type(a:gist.description)==0?"": a:gist.description, code)
-endfunction
-
-" Note: A colon in the file name has side effects on Windows due to NTFS Alternate Data Streams; avoid it.
-let s:bufprefix = 'gist' . (has('unix') ? ':' : '_')
-function! s:GistList(gistls, page)
- if a:gistls == '-all'
- let url = g:github_api_url.'/gists/public'
- elseif get(g:, 'gist_show_privates', 0) && a:gistls == 'starred'
- let url = g:github_api_url.'/gists/starred'
- elseif get(g:, 'gist_show_privates') && a:gistls == 'mine'
- let url = g:github_api_url.'/gists'
- else
- let url = g:github_api_url.'/users/'.a:gistls.'/gists'
- endif
- let winnum = bufwinnr(bufnr(s:bufprefix.a:gistls))
- if winnum != -1
- if winnum != bufwinnr('%')
- exe winnum 'wincmd w'
- endif
- setlocal modifiable
- else
- exec 'silent noautocmd split' s:bufprefix.a:gistls
- endif
- if a:page > 1
- let oldlines = getline(0, line('$'))
- let url = url . '?page=' . a:page
- endif
-
- setlocal modifiable
- let old_undolevels = &undolevels
- let oldlines = []
- silent %d _
-
- redraw | echon 'Listing gists... '
- let auth = s:GistGetAuthHeader()
- if len(auth) == 0
- bw!
- redraw
- echohl ErrorMsg | echomsg v:errmsg | echohl None
- return
- endif
- let res = webapi#http#get(url, '', { "Authorization": auth })
- if v:shell_error != 0
- bw!
- redraw
- echohl ErrorMsg | echomsg 'Gists not found' | echohl None
- return
- endif
- let content = webapi#json#decode(res.content)
- if type(content) == 4 && has_key(content, 'message') && len(content.message)
- bw!
- redraw
- echohl ErrorMsg | echomsg content.message | echohl None
- if content.message == 'Bad credentials'
- call delete(s:configfile)
- endif
- return
- endif
-
- let lines = map(filter(content, '!empty(v:val.files)'), 's:format_gist(v:val)')
- call setline(1, split(join(lines, "\n"), "\n"))
-
- $put='more...'
-
- let b:gistls = a:gistls
- let b:page = a:page
- setlocal buftype=nofile bufhidden=hide noswapfile
- setlocal nomodified
- setlocal nomodifiable
- syntax match SpecialKey /^gist:/he=e-1
- nnoremap :call GistListAction(0)
- nnoremap :call GistListAction(1)
-
- cal cursor(1+len(oldlines),1)
- nohlsearch
- redraw | echo ''
-endfunction
-
-function! gist#list(user, ...)
- let page = get(a:000, 0, 0)
- if a:user == '-all'
- let url = g:github_api_url.'/gists/public'
- elseif get(g:, 'gist_show_privates', 0) && a:user == 'starred'
- let url = g:github_api_url.'/gists/starred'
- elseif get(g:, 'gist_show_privates') && a:user == 'mine'
- let url = g:github_api_url.'/gists'
- else
- let url = g:github_api_url.'/users/'.a:user.'/gists'
- endif
-
- let auth = s:GistGetAuthHeader()
- if len(auth) == 0
- return []
- endif
- let res = webapi#http#get(url, '', { "Authorization": auth })
- return webapi#json#decode(res.content)
-endfunction
-
-function! s:GistGetFileName(gistid)
- let auth = s:GistGetAuthHeader()
- if len(auth) == 0
- return ''
- endif
- let res = webapi#http#get(g:github_api_url.'/gists/'.a:gistid, '', { "Authorization": auth })
- let gist = webapi#json#decode(res.content)
- if has_key(gist, 'files')
- return sort(keys(gist.files))[0]
- endif
- return ''
-endfunction
-
-function! s:GistDetectFiletype(gistid)
- let auth = s:GistGetAuthHeader()
- if len(auth) == 0
- return ''
- endif
- let res = webapi#http#get(g:github_api_url.'/gists/'.a:gistid, '', { "Authorization": auth })
- let gist = webapi#json#decode(res.content)
- let filename = sort(keys(gist.files))[0]
- let ext = fnamemodify(filename, ':e')
- if has_key(s:extmap, ext)
- let type = s:extmap[ext]
- else
- let type = get(gist.files[filename], "type", "text")
- endif
- silent! exec "setlocal ft=".tolower(type)
-endfunction
-
-function! s:GistWrite(fname)
- if substitute(a:fname, '\\', '/', 'g') == expand("%:p:gs@\\@/@")
- if g:gist_update_on_write != 2 || v:cmdbang
- Gist -e
- else
- echohl ErrorMsg | echomsg 'Please type ":w!" to update a gist.' | echohl None
- endif
- else
- exe "w".(v:cmdbang ? "!" : "") fnameescape(v:cmdarg) fnameescape(a:fname)
- silent! exe "file" fnameescape(a:fname)
- silent! au! BufWriteCmd
- endif
-endfunction
-
-function! s:GistGet(gistid, clipboard)
- redraw | echon 'Getting gist... '
- let res = webapi#http#get(g:github_api_url.'/gists/'.a:gistid, '', { "Authorization": s:GistGetAuthHeader() })
- let status = matchstr(matchstr(res.header, '^Status:'), '^[^:]\+: \zs.*')
- if status =~ '^2'
- let gist = webapi#json#decode(res.content)
- if get(g:, 'gist_get_multiplefile', 0) != 0
- let num_file = len(keys(gist.files))
- else
- let num_file = 1
- endif
- redraw
- if num_file > len(keys(gist.files))
- echohl ErrorMsg | echomsg 'Gist not found' | echohl None
- return
- endif
- for n in range(num_file)
- try
- let old_undolevels = &undolevels
- let filename = sort(keys(gist.files))[n]
-
- let winnum = bufwinnr(bufnr(s:bufprefix.a:gistid."/".filename))
- if winnum != -1
- if winnum != bufwinnr('%')
- exe winnum 'wincmd w'
- endif
- setlocal modifiable
- else
- exec 'silent noautocmd new'
- setlocal noswapfile
- exec 'noautocmd file' s:bufprefix.a:gistid."/".fnameescape(filename)
- endif
- set undolevels=-1
- filetype detect
- silent %d _
-
- let content = gist.files[filename].content
- call setline(1, split(content, "\n"))
- let b:gist = {
- \ "filename": filename,
- \ "id": gist.id,
- \ "description": gist.description,
- \ "private": gist.public =~ 'true',
- \}
- catch
- let &undolevels = old_undolevels
- bw!
- redraw
- echohl ErrorMsg | echomsg 'Gist contains binary' | echohl None
- return
- endtry
- let &undolevels = old_undolevels
- setlocal buftype=acwrite bufhidden=delete noswapfile
- setlocal nomodified
- doau StdinReadPost,BufRead,BufReadPost
- let gist_detect_filetype = get(g:, 'gist_detect_filetype', 0)
- if (&ft == '' && gist_detect_filetype == 1) || gist_detect_filetype == 2
- call s:GistDetectFiletype(a:gistid)
- endif
- if a:clipboard
- if exists('g:gist_clip_command')
- exec 'silent w !'.g:gist_clip_command
- elseif has('clipboard')
- silent! %yank +
- else
- %yank
- endif
- endif
- 1
- au! BufWriteCmd call s:GistWrite(expand(""))
- endfor
- else
- bw!
- redraw
- echohl ErrorMsg | echomsg 'Gist not found' | echohl None
- return
- endif
-endfunction
-
-function! s:GistListAction(shift)
- let line = getline('.')
- let mx = '^gist:\s*\zs\(\w\+\)\ze.*'
- if line =~# mx
- let gistid = matchstr(line, mx)
- if a:shift
- call s:open_browser("https://gist.github.com/" . gistid)
- else
- call s:GistGet(gistid, 0)
- endif
- return
- endif
- if line =~# '^more\.\.\.$'
- call s:GistList(b:gistls, b:page+1)
- return
- endif
-endfunction
-
-function! s:GistUpdate(content, gistid, gistnm, desc)
- let gist = { "id": a:gistid, "files" : {}, "description": "","public": function('webapi#json#true') }
- if exists('b:gist')
- if has_key(b:gist, 'private') && b:gist.private | let gist["public"] = function('webapi#json#false') | endif
- if has_key(b:gist, 'description') | let gist["description"] = b:gist.description | endif
- if has_key(b:gist, 'filename') | let filename = b:gist.filename | endif
- else
- let filename = a:gistnm
- if len(filename) == 0 | let filename = s:GistGetFileName(a:gistid) | endif
- if len(filename) == 0 | let filename = s:get_current_filename(1) | endif
- endif
-
- let auth = s:GistGetAuthHeader()
- if len(auth) == 0
- redraw
- echohl ErrorMsg | echomsg v:errmsg | echohl None
- return
- endif
-
- " Update description
- " If no new description specified, keep the old description
- if a:desc != ' '
- let gist["description"] = a:desc
- else
- let res = webapi#http#get(g:github_api_url.'/gists/'.a:gistid, '', { "Authorization": auth })
- let status = matchstr(matchstr(res.header, '^Status:'), '^[^:]\+: \zs.*')
- if status =~ '^2'
- let old_gist = webapi#json#decode(res.content)
- let gist["description"] = old_gist.description
- endif
- endif
-
- let gist.files[filename] = { "content": a:content, "filename": filename }
-
- redraw | echon 'Updating gist... '
- let res = webapi#http#post(g:github_api_url.'/gists/' . a:gistid,
- \ webapi#json#encode(gist), {
- \ "Authorization": auth,
- \ "Content-Type": "application/json",
- \})
- let status = matchstr(matchstr(res.header, '^Status:'), '^[^:]\+: \zs.*')
- if status =~ '^2'
- let obj = webapi#json#decode(res.content)
- let loc = obj["html_url"]
- redraw | echomsg 'Done: '.loc
- let b:gist = {"id": a:gistid, "filename": filename}
- setlocal nomodified
- else
- let loc = ''
- let status = matchstr(status, '^\d\+\s*\zs.*')
- echohl ErrorMsg | echomsg 'Post failed: '.status | echohl None
- endif
- return loc
-endfunction
-
-function! s:GistDelete(gistid)
- let auth = s:GistGetAuthHeader()
- if len(auth) == 0
- redraw
- echohl ErrorMsg | echomsg v:errmsg | echohl None
- return
- endif
-
- redraw | echon 'Deleting gist... '
- let res = webapi#http#post(g:github_api_url.'/gists/'.a:gistid, '', {
- \ "Authorization": auth,
- \ "Content-Type": "application/json",
- \}, 'DELETE')
- let status = matchstr(matchstr(res.header, '^Status:'), '^[^:]\+: \zs.*')
- if status =~ '^2'
- redraw | echomsg 'Done: '
- if exists('b:gist')
- unlet b:gist
- endif
- else
- let status = matchstr(status, '^\d\+\s*\zs.*')
- echohl ErrorMsg | echomsg 'Delete failed: '.status | echohl None
- endif
-endfunction
-
-function! s:get_current_filename(no)
- let filename = expand('%:t')
- if len(filename) == 0 && &ft != ''
- let pair = filter(items(s:extmap), 'v:val[1] == &ft')
- if len(pair) > 0
- let filename = printf('gistfile%d%s', a:no, pair[0][0])
- endif
- endif
- if filename == ''
- let filename = printf('gistfile%d.txt', a:no)
- endif
- return filename
-endfunction
-
-" GistPost function:
-" Post new gist to github
-"
-" if there is an embedded gist url or gist id in your file,
-" it will just update it.
-" -- by c9s
-"
-" embedded gist url format:
-"
-" Gist: https://gist.github.com/123123
-"
-" embedded gist id format:
-"
-" GistID: 123123
-"
-function! s:GistPost(content, private, desc, anonymous)
- let gist = { "files" : {}, "description": "","public": function('webapi#json#true') }
- if a:desc != ' ' | let gist["description"] = a:desc | endif
- if a:private | let gist["public"] = function('webapi#json#false') | endif
- let filename = s:get_current_filename(1)
- let gist.files[filename] = { "content": a:content, "filename": filename }
-
- let header = {"Content-Type": "application/json"}
- if !a:anonymous
- let auth = s:GistGetAuthHeader()
- if len(auth) == 0
- redraw
- echohl ErrorMsg | echomsg v:errmsg | echohl None
- return
- endif
- let header["Authorization"] = auth
- endif
-
- redraw | echon 'Posting it to gist... '
- let res = webapi#http#post(g:github_api_url.'/gists', webapi#json#encode(gist), header)
- let status = matchstr(matchstr(res.header, '^Status:'), '^[^:]\+: \zs.*')
- if status =~ '^2'
- let obj = webapi#json#decode(res.content)
- let loc = obj["html_url"]
- redraw | echomsg 'Done: '.loc
- let b:gist = {
- \ "filename": filename,
- \ "id": matchstr(loc, '[^/]\+$'),
- \ "description": gist['description'],
- \ "private": a:private,
- \}
- else
- let loc = ''
- let status = matchstr(status, '^\d\+\s*\zs.*')
- echohl ErrorMsg | echomsg 'Post failed: '.status | echohl None
- endif
- return loc
-endfunction
-
-function! s:GistPostBuffers(private, desc, anonymous)
- let bufnrs = range(1, bufnr("$"))
- let bn = bufnr('%')
- let query = []
-
- let gist = { "files" : {}, "description": "","public": function('webapi#json#true') }
- if a:desc != ' ' | let gist["description"] = a:desc | endif
- if a:private | let gist["public"] = function('webapi#json#false') | endif
-
- let index = 1
- for bufnr in bufnrs
- if !bufexists(bufnr) || buflisted(bufnr) == 0
- continue
- endif
- echo "Creating gist content".index."... "
- silent! exec "buffer!" bufnr
- let content = join(getline(1, line('$')), "\n")
- let filename = s:get_current_filename(index)
- let gist.files[filename] = { "content": content, "filename": filename }
- let index = index + 1
- endfor
- silent! exec "buffer!" bn
-
- let header = {"Content-Type": "application/json"}
- if !a:anonymous
- let auth = s:GistGetAuthHeader()
- if len(auth) == 0
- redraw
- echohl ErrorMsg | echomsg v:errmsg | echohl None
- return
- endif
- let header["Authorization"] = auth
- endif
-
- redraw | echon 'Posting it to gist... '
- let res = webapi#http#post(g:github_api_url.'/gists', webapi#json#encode(gist), header)
- let status = matchstr(matchstr(res.header, '^Status:'), '^[^:]\+: \zs.*')
- if status =~ '^2'
- let obj = webapi#json#decode(res.content)
- let loc = obj["html_url"]
- redraw | echomsg 'Done: '.loc
- let b:gist = {"id": matchstr(loc, '[^/]\+$'), "filename": filename, "private": a:private}
- else
- let loc = ''
- let status = matchstr(status, '^\d\+\s*\zs.*')
- echohl ErrorMsg | echomsg 'Post failed: '.status | echohl None
- endif
- return loc
-endfunction
-
-function! gist#Gist(count, line1, line2, ...)
- redraw
- if strlen(g:github_user) == 0
- echohl ErrorMsg | echomsg "You don't have github account. read ':help gist-vim-setup'." | echohl None
- return
- endif
- let bufname = bufname("%")
- " find GistID: in content , then we should just update
- let gistid = ''
- let gistls = ''
- let gistnm = ''
- let gistdesc = ' '
- let private = get(g:, 'gist_post_private', 0)
- let multibuffer = 0
- let clipboard = 0
- let deletepost = 0
- let editpost = 0
- let anonymous = 0
- let listmx = '^\%(-l\|--list\)\s*\([^\s]\+\)\?$'
- let bufnamemx = '^' . s:bufprefix .'\(\zs[0-9a-f]\+\ze\|\zs[0-9a-f]\+\ze[/\\].*\)$'
- if bufname =~ bufnamemx
- let gistidbuf = matchstr(bufname, bufnamemx)
- else
- let gistidbuf = matchstr(join(getline(a:line1, a:line2), "\n"), 'GistID:\s*\zs\w\+')
- endif
-
- let args = (a:0 > 0) ? s:shellwords(a:1) : []
- for arg in args
- if arg =~ '^\(-h\|--help\)$\C'
- help :Gist
- return
- elseif arg =~ '^\(-la\|--listall\)$\C'
- let gistls = '-all'
- elseif arg =~ '^\(-ls\|--liststar\)$\C'
- let gistls = 'starred'
- elseif arg =~ '^\(-l\|--list\)$\C'
- if get(g:, 'gist_show_privates')
- let gistls = 'mine'
- else
- let gistls = g:github_user
- endif
- elseif arg =~ '^\(-m\|--multibuffer\)$\C'
- let multibuffer = 1
- elseif arg =~ '^\(-p\|--private\)$\C'
- let private = 1
- elseif arg =~ '^\(-P\|--public\)$\C'
- let private = 0
- elseif arg =~ '^\(-a\|--anonymous\)$\C'
- let anonymous = 1
- elseif arg =~ '^\(-s\|--description\)$\C'
- let gistdesc = ''
- elseif arg =~ '^\(-c\|--clipboard\)$\C'
- let clipboard = 1
- elseif arg =~ '^--rawurl$\C' && gistidbuf != '' && g:github_api_url == 'https://api.github.com'
- let gistid = gistidbuf
- echo 'https://gist.github.com/raw/'.gistid
- return
- elseif arg =~ '^\(-d\|--delete\)$\C' && gistidbuf != ''
- let gistid = gistidbuf
- let deletepost = 1
- elseif arg =~ '^\(-e\|--edit\)$\C' && gistidbuf != ''
- let gistid = gistidbuf
- let editpost = 1
- elseif arg =~ '^\(+1\|--star\)$\C' && gistidbuf != ''
- let auth = s:GistGetAuthHeader()
- if len(auth) == 0
- echohl ErrorMsg | echomsg v:errmsg | echohl None
- else
- let gistid = gistidbuf
- let res = webapi#http#post(g:github_api_url.'/gists/'.gistid.'/star', '', { "Authorization": auth }, 'PUT')
- let status = matchstr(matchstr(res.header, '^Status:'), '^[^:]\+: \zs.*')
- if status =~ '^2'
- echomsg "Stared" gistid
- else
- echohl ErrorMsg | echomsg 'Star failed' | echohl None
- endif
- endif
- return
- elseif arg =~ '^\(-1\|--unstar\)$\C' && gistidbuf != ''
- let auth = s:GistGetAuthHeader()
- if len(auth) == 0
- echohl ErrorMsg | echomsg v:errmsg | echohl None
- else
- let gistid = gistidbuf
- let res = webapi#http#post(g:github_api_url.'/gists/'.gistid.'/star', '', { "Authorization": auth }, 'DELETE')
- if status =~ '^2'
- echomsg "Unstared" gistid
- else
- echohl ErrorMsg | echomsg 'Unstar failed' | echohl None
- endif
- endif
- return
- elseif arg =~ '^\(-f\|--fork\)$\C' && gistidbuf != ''
- let auth = s:GistGetAuthHeader()
- if len(auth) == 0
- echohl ErrorMsg | echomsg v:errmsg | echohl None
- return
- else
- let gistid = gistidbuf
- let res = webapi#http#post(g:github_api_url.'/gists/'.gistid.'/fork', '', { "Authorization": auth })
- let status = matchstr(matchstr(res.header, '^Status:'), '^[^:]\+: \zs.*')
- if status =~ '^2'
- let obj = webapi#json#decode(res.content)
- let gistid = obj["id"]
- else
- echohl ErrorMsg | echomsg 'Fork failed' | echohl None
- return
- endif
- endif
- elseif arg !~ '^-' && len(gistnm) == 0
- if gistdesc != ' '
- let gistdesc = matchstr(arg, '^\s*\zs.*\ze\s*$')
- elseif editpost == 1 || deletepost == 1
- let gistnm = arg
- elseif len(gistls) > 0 && arg != '^\w\+$\C'
- let gistls = arg
- elseif arg =~ '^[0-9a-z]\+$\C'
- let gistid = arg
- else
- echohl ErrorMsg | echomsg 'Invalid arguments: '.arg | echohl None
- unlet args
- return 0
- endif
- elseif len(arg) > 0
- echohl ErrorMsg | echomsg 'Invalid arguments: '.arg | echohl None
- unlet args
- return 0
- endif
- endfor
- unlet args
- "echo "gistid=".gistid
- "echo "gistls=".gistls
- "echo "gistnm=".gistnm
- "echo "gistdesc=".gistdesc
- "echo "private=".private
- "echo "clipboard=".clipboard
- "echo "editpost=".editpost
- "echo "deletepost=".deletepost
-
- if gistidbuf != '' && gistid == '' && editpost == 0 && deletepost == 0
- let editpost = 1
- let gistid = gistidbuf
- endif
-
- if len(gistls) > 0
- call s:GistList(gistls, 1)
- elseif len(gistid) > 0 && editpost == 0 && deletepost == 0
- call s:GistGet(gistid, clipboard)
- else
- let url = ''
- if multibuffer == 1
- let url = s:GistPostBuffers(private, gistdesc, anonymous)
- else
- if a:count < 1
- let content = join(getline(a:line1, a:line2), "\n")
- else
- let save_regcont = @"
- let save_regtype = getregtype('"')
- silent! normal! gvy
- let content = @"
- call setreg('"', save_regcont, save_regtype)
- endif
- if editpost == 1
- let url = s:GistUpdate(content, gistid, gistnm, gistdesc)
- elseif deletepost == 1
- call s:GistDelete(gistid)
- else
- let url = s:GistPost(content, private, gistdesc, anonymous)
- endif
- if a:count >= 1 && get(g:, 'gist_keep_selection', 0) == 1
- silent! normal! gv
- endif
- endif
- if len(url) > 0
- if get(g:, 'gist_open_browser_after_post', 0) == 1
- call s:open_browser(url)
- endif
- let gist_put_url_to_clipboard_after_post = get(g:, 'gist_put_url_to_clipboard_after_post', 1)
- if gist_put_url_to_clipboard_after_post > 0
- if gist_put_url_to_clipboard_after_post == 2
- let url = url . "\n"
- endif
- if exists('g:gist_clip_command')
- call system(g:gist_clip_command, url)
- elseif has('unix') && !has('xterm_clipboard')
- let @" = url
- else
- let @+ = url
- endif
- endif
- endif
- endif
- return 1
-endfunction
-
-function! s:GistGetAuthHeader()
- if get(g:, 'gist_use_password_in_gitconfig', 0) != 0
- let password = substitute(system('git config --get github.password'), "\n", '', '')
- if password =~ '^!' | let password = system(password[1:]) | endif
- return printf("basic %s", webapi#base64#b64encode(g:github_user.":".password))
- endif
- let auth = ""
- if filereadable(s:configfile)
- let str = join(readfile(s:configfile), "")
- if type(str) == 1
- let auth = str
- endif
- endif
- if len(auth) > 0
- return auth
- endif
-
- redraw
- echohl WarningMsg
- echo 'Gist.vim requires authorization to use the Github API. These settings are stored in "~/.gist-vim". If you want to revoke, do "rm ~/.gist-vim".'
- echohl None
- let password = inputsecret("Github Password for ".g:github_user.":")
- if len(password) > 0
- let insecureSecret = printf("basic %s", webapi#base64#b64encode(g:github_user.":".password))
- let res = webapi#http#post(g:github_api_url.'/authorizations', webapi#json#encode({
- \ "scopes" : ["gist"],
- \ "note" : "Gist.vim on ".hostname(),
- \ "note_url" : "http://www.vim.org/scripts/script.php?script_id=2423"
- \}), {
- \ "Content-Type" : "application/json",
- \ "Authorization" : insecureSecret,
- \})
- let authorization = webapi#json#decode(res.content)
- if has_key(authorization, 'token')
- let secret = printf("token %s", authorization.token)
- call writefile([secret], s:configfile)
- if !(has('win32') || has('win64'))
- call system("chmod go= ".s:configfile)
- endif
- elseif has_key(authorization, 'message')
- let secret = ''
- let v:errmsg = authorization.message
- endif
- else
- let secret = ''
- let v:errmsg = 'Canceled'
- endif
- return secret
-endfunction
-
-let s:extmap = {
-\".adb": "ada",
-\".ahk": "ahk",
-\".arc": "arc",
-\".as": "actionscript",
-\".asm": "asm",
-\".asp": "asp",
-\".aw": "php",
-\".b": "b",
-\".bat": "bat",
-\".befunge": "befunge",
-\".bmx": "bmx",
-\".boo": "boo",
-\".c-objdump": "c-objdump",
-\".c": "c",
-\".cfg": "cfg",
-\".cfm": "cfm",
-\".ck": "ck",
-\".cl": "cl",
-\".clj": "clj",
-\".cmake": "cmake",
-\".coffee": "coffee",
-\".cpp": "cpp",
-\".cppobjdump": "cppobjdump",
-\".cs": "csharp",
-\".css": "css",
-\".cw": "cw",
-\".d-objdump": "d-objdump",
-\".d": "d",
-\".darcspatch": "darcspatch",
-\".diff": "diff",
-\".duby": "duby",
-\".dylan": "dylan",
-\".e": "e",
-\".ebuild": "ebuild",
-\".eclass": "eclass",
-\".el": "lisp",
-\".erb": "erb",
-\".erl": "erlang",
-\".f90": "f90",
-\".factor": "factor",
-\".feature": "feature",
-\".fs": "fs",
-\".fy": "fy",
-\".go": "go",
-\".groovy": "groovy",
-\".gs": "gs",
-\".gsp": "gsp",
-\".haml": "haml",
-\".hs": "haskell",
-\".html": "html",
-\".hx": "hx",
-\".ik": "ik",
-\".ino": "ino",
-\".io": "io",
-\".j": "j",
-\".java": "java",
-\".js": "javascript",
-\".json": "json",
-\".jsp": "jsp",
-\".kid": "kid",
-\".lhs": "lhs",
-\".lisp": "lisp",
-\".ll": "ll",
-\".lua": "lua",
-\".ly": "ly",
-\".m": "objc",
-\".mak": "mak",
-\".man": "man",
-\".mao": "mao",
-\".matlab": "matlab",
-\".md": "markdown",
-\".minid": "minid",
-\".ml": "ml",
-\".moo": "moo",
-\".mu": "mu",
-\".mustache": "mustache",
-\".mxt": "mxt",
-\".myt": "myt",
-\".n": "n",
-\".nim": "nim",
-\".nu": "nu",
-\".numpy": "numpy",
-\".objdump": "objdump",
-\".ooc": "ooc",
-\".parrot": "parrot",
-\".pas": "pas",
-\".pasm": "pasm",
-\".pd": "pd",
-\".phtml": "phtml",
-\".pir": "pir",
-\".pl": "perl",
-\".po": "po",
-\".py": "python",
-\".pytb": "pytb",
-\".pyx": "pyx",
-\".r": "r",
-\".raw": "raw",
-\".rb": "ruby",
-\".rhtml": "rhtml",
-\".rkt": "rkt",
-\".rs": "rs",
-\".rst": "rst",
-\".s": "s",
-\".sass": "sass",
-\".sc": "sc",
-\".scala": "scala",
-\".scm": "scheme",
-\".scpt": "scpt",
-\".scss": "scss",
-\".self": "self",
-\".sh": "sh",
-\".sml": "sml",
-\".sql": "sql",
-\".st": "smalltalk",
-\".tcl": "tcl",
-\".tcsh": "tcsh",
-\".tex": "tex",
-\".textile": "textile",
-\".tpl": "smarty",
-\".twig": "twig",
-\".txt" : "text",
-\".v": "verilog",
-\".vala": "vala",
-\".vb": "vbnet",
-\".vhd": "vhdl",
-\".vim": "vim",
-\".weechatlog": "weechatlog",
-\".xml": "xml",
-\".xq": "xquery",
-\".xs": "xs",
-\".yml": "yaml",
-\}
-
-let &cpo = s:save_cpo
-unlet s:save_cpo
-
-" vim:set et:
diff --git a/vim/bundle/gist-vim/doc/gist-vim.txt b/vim/bundle/gist-vim/doc/gist-vim.txt
deleted file mode 100644
index aed7220..0000000
--- a/vim/bundle/gist-vim/doc/gist-vim.txt
+++ /dev/null
@@ -1,279 +0,0 @@
-*Gist.vim* Vimscript for creating gists (http://gist.github.com)
-
-Usage |gist-vim-usage|
-Tips |gist-vim-tips|
-License |gist-vim-license|
-Install |gist-vim-install|
-Requirements |gist-vim-requirements|
-Setup |gist-vim-setup|
-
-This is a vimscript for creating gists (http://gist.github.com)
-
-For the latest version please see https://github.com/mattn/gist-vim.
-
-==============================================================================
-USAGE *:Gist* *gist-vim-usage*
-
-- Post current buffer to gist, using default privacy option. >
-
- :Gist
-<
-- Post selected text to gist, using defualt privacy option.
- This applies to all permutations listed below (except multi). >
-
- :'<,'>Gist
-<
-- Create a private gist. >
-
- :Gist -p
-<
-- Create a public gist.
- (Only relevant if you've set gists to be private by default.) >
-
- :Gist -P
-<
-- Post whole text to gist as public.
- This is only relevant if you've set gists to be private by default.
->
- :Gist -P
-<
-- Create a gist anonymously. >
-
- :Gist -a
-<
-- Create a gist with all open buffers. >
-
- :Gist -m
-<
-- Edit the gist (you need to have opened the gist buffer first).
- You can update the gist with the {:w} command within the gist buffer. >
-
- :Gist -e
-<
-- Edit the gist with name "foo.js" (you need to have opened the gist buffer
- first). >
-
- :Gist -e foo.js
-<
-- Post/Edit with the description " (you need to have opened the gist buffer
- first). >
-
- :Gist -s something
- :Gist -e -s something
-<
-- Delete the gist (you need to have opened the gist buffer first).
- Password authentication is needed. >
-
- :Gist -d
-<
-- Fork the gist (you need to have opened the gist buffer first).
- Password authentication is needed. >
-
- :Gist -f
-<
-- Star the gist (you need to have opened the gist buffer first).
- Password authentication is needed.
->
- :Gist +1
-<
-- Unstar the gist (you need to have opened the gist buffer first).
- Password authentication is needed.
->
- :Gist -1
-<
-- Get gist XXXXX. >
-
- :Gist XXXXX
-<
-- Get gist XXXXX and add to clipboard. >
-
- :Gist -c XXXXX
-<
-- List your public gists. >
-
- :Gist -l
-<
-- List gists from user "mattn". >
-
- :Gist -l mattn
-<
-- List everyone's gists. >
-
- :Gist -la
-<
-- List gists from your starred gists.
->
- :Gist -ls
-<
-==============================================================================
-TIPS *gist-vim-tips*
-
-If you set "g:gist_clip_command", gist.vim will copy the gist code with option
-"-c".
-
- - Mac: >
- let g:gist_clip_command = 'pbcopy'
-<
- - Linux: >
- let g:gist_clip_command = 'xclip -selection clipboard'
-<
- - Others (cygwin?): >
- let g:gist_clip_command = 'putclip'
-<
-If you want to detect filetype from the filename: >
-
- let g:gist_detect_filetype = 1
-<
-If you want to open the browser after the post: >
-
- let g:gist_open_browser_after_post = 1
-<
-If you want to change the browser: >
-
- let g:gist_browser_command = 'w3m %URL%'
-<
-or: >
-
- let g:gist_browser_command = 'opera %URL% &'
-<
-On windows, this should work with your user settings.
-
-If you want to show your private gists with ":Gist -l": >
-
- let g:gist_show_privates = 1
-<
-If you want your gist to be private by default: >
-
- let g:gist_post_private = 1
-
-<
-If you want to edit all files for gists containing more than one: >
-
- let g:gist_get_multiplefile = 1
-<
-
-If you want to use on Github Enterprise: >
-
- let g:github_api_url = 'http://your-github-enterprise-domain/api/v3'
-<
-
-If you want to update a gist, embed >
-
- GistID: xxxxx
->
-in your local file, then call >
-
- :Gist
->
-
-If you want to update a gist when only |:w!|: >
-
- " :w and :w! update a gist.
- let g:gist_update_on_write = 1
-
- " Only :w! updates a gist.
- let g:gist_update_on_write = 2
->
-All other values are treated as 1.
-This variable's value is 1 by default.
-
-==============================================================================
-LICENSE *gist-vim-license*
-
-
- Copyright 2010 by Yasuhiro Matsumoto
- modification, are permitted provided that the following conditions are met:
-
- 1. Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- 2. Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
- OF THE POSSIBILITY OF SUCH DAMAGE.
-
-==============================================================================
-INSTALL *gist-vim-install*
-
-Copy following files into your plugin directory.
-
-rtp:
- - autoload/gist.vim
- - plugin/gist.vim
-
-If you want to uninstall gist.vim, remember to also remove `~/.gist-vim`.
-
-You need to install webapi-vim also:
-
- http://www.vim.org/scripts/script.php?script_id=4019
-
-If you want to use latest one:
-
- https://github.com/mattn/webapi-vim
-
-==============================================================================
-REQUIREMENTS *gist-vim-requirements*
-
- - curl command (http://curl.haxx.se/)
- - webapi-vim (https://github.com/mattn/webapi-vim)
- - and, if you want to use your git profile, the git command-line client.
-
-==============================================================================
-SETUP *gist-vim-setup*
-
-This plugin uses github API v3. Setting value is stored in `~/.gist.vim`.
-gist-vim have two ways to access APIs.
-
-First, you need to set your Github username in global git config:
->
- $ git config --global github.user Username
-<
-Then, gist.vim will ask for your password to create an authorization when you
-first use it. The password is not stored and only the OAuth access token will
-be kept for later use. You can revoke the token at any time from the list of
-"Authorized applications" on Github's "Account Settings" page.
-(https://github.com/settings/applications)
-
-If you happen to have your password already written in ~/.gitconfig like
-below:
->
- [github]
- password = xxxxx
-<
-Then, add following into your ~/.vimrc
->
- let g:gist_use_password_in_gitconfig = 1
-<
-This is not secure at all, so strongly discouraged.
-
-==============================================================================
-THANKS *gist-vim-thanks*
-
- AD7six
- Bruno Bigras
- c9s
- Daniel Bretoi
- Jeremy Michael Cantrell
- Kien N
- kongo2002
- MATSUU Takuto
- Matthew Weier O'Phinney
- ornicar
- Roland Schilter
- steve
- tyru
- Will Gray
- netj
-
- vim:tw=78:ts=8:ft=help:norl:
diff --git a/vim/bundle/gist-vim/doc/tags b/vim/bundle/gist-vim/doc/tags
deleted file mode 100644
index 27d265b..0000000
--- a/vim/bundle/gist-vim/doc/tags
+++ /dev/null
@@ -1,9 +0,0 @@
-:Gist gist-vim.txt /*:Gist*
-Gist.vim gist-vim.txt /*Gist.vim*
-gist-vim-install gist-vim.txt /*gist-vim-install*
-gist-vim-license gist-vim.txt /*gist-vim-license*
-gist-vim-requirements gist-vim.txt /*gist-vim-requirements*
-gist-vim-setup gist-vim.txt /*gist-vim-setup*
-gist-vim-thanks gist-vim.txt /*gist-vim-thanks*
-gist-vim-tips gist-vim.txt /*gist-vim-tips*
-gist-vim-usage gist-vim.txt /*gist-vim-usage*
diff --git a/vim/bundle/gist-vim/gist.vim.vimup b/vim/bundle/gist-vim/gist.vim.vimup
deleted file mode 100644
index 96e6a30..0000000
--- a/vim/bundle/gist-vim/gist.vim.vimup
+++ /dev/null
@@ -1,297 +0,0 @@
-script_name: Gist.vim
-script_id: '2423'
-script_type: utility
-script_package: gist-vim.zip
-script_version: '7.1'
-required_vim_version: '7.0'
-summary: vimscript for gist
-
-detailed_description: |
- This is vimscript for gist (http://gist.github.com)
-
- Usage:
-
- :Gist
- post whole text to gist.
-
- :'<,'>Gist
- post selected text to gist.
-
- :Gist -p
- post whole text to gist with private.
- if you got empty gist list, try :Gist --abandon
-
- :Gist -a
- post whole text to gist with anonymous.
-
- :Gist -m
- post multi buffer to gist.
-
- :Gist -e
- edit the gist. (shoud be work on gist buffer)
- you can update the gist with :w command on gist buffer.
-
- :Gist -e foo.js
- edit the gist with name 'foo.js'. (shoud be work on gist buffer)
-
- :Gist -d
- delete the gist. (should be work on gist buffer)
- authentication required.
-
- :Gist -f
- fork the gist. (should be work on gist buffer)
- authentication required.
-
- :Gist XXXXX
- get gist XXXXX.
-
- :Gist -c XXXXX.
- get gist XXXXX and put to clipboard.
-
- :Gist -l
- list gists from mine.
-
- :Gist -la
- list gists from all.
-
- Tips:
- if set g:gist_clip_command, gist.vim will copy the gist code
- with option '-c'.
-
- # mac
- let g:gist_clip_command = 'pbcopy'
-
- # linux
- let g:gist_clip_command = 'xclip -selection clipboard'
-
- # others(cygwin?)
- let g:gist_clip_command = 'putclip'
-
- if you want to detect filetype from filename...
-
- let g:gist_detect_filetype = 1
-
- if you want to open browser after the post...
-
- let g:gist_open_browser_after_post = 1
-
- if you want to change the browser...
-
- let g:gist_browser_command = 'w3m %URL%'
-
- or
-
- let g:gist_browser_command = 'opera %URL% &'
-
- on windows, should work with original setting.
-
- Require:
- curl command (http://curl.haxx.se/)
- and if you want to use profile of git, it require git command.
-
-install_details: |
- copy it to your plugin directory.
-
- gist.vim leave cookie-jar file into runtimepath.
-
- rtp:
- plugin/gist.vim
- cookies/github
-
- See also: https://github.com/mattn/gist-vim/blob/master/README.mkd
-
-versions:
-- '7.1': |
- This is an upgrade for Gist.vim: updated installation notes.
-
-- '7.0': |
- This is an upgrade for Gist.vim: fixed few bugs.
-
-- '6.9': |
- This is an upgrade for Gist.vim: fixed few bugs.
-
-- '6.8': |
- This is an upgrade for Gist.vim: changed authentication. removed password authentication. if you want to keep using password authentication, let gist_use_password_in_gitconfig to 1.
-
-- '6.7': |
- This is an upgrade for Gist.vim: fix behavior of g:gist_browser_command = ':OpenBrowser %URL%'.
-
-- '6.6': |
- This is an upgrade for Gist.vim: fixed detecting filetype.
-
-- '6.5': |
- This is an upgrade for Gist.vim: use webapi namespace. NOTE: please upgrade webapi-vim also.
-
-- '6.4': |
- This is an upgrade for Gist.vim: fixed updating with description.
-
-- '6.3': |
- This is an upgrade for Gist.vim: fixed typos.
-
-- '6.2': |
- This is an upgrade for Gist.vim: fixed some bugs.
-
-- '6.1': |
- This is an upgrade for Gist.vim: fixed opening browser.
-
-- '6.0': |
- This is an upgrade for Gist.vim: changed to use github APIs. Note to remove cookies directory if you used.
-
-- '5.9': |
- This is an upgrade for Gist.vim: add support anonymous post. fixed many bugs.
-
-- '5.8': |
- This is an upgrade for Gist.vim: add support for description. you can post description using -s option.
-
-- '5.7': |
- This is an upgrade for Gist.vim: post with filetype more cleverly.
-
-- '5.6': |
- This is an upgrade for Gist.vim: fix '--abandon'.
-
-- '5.5': |
- This is an upgrade for Gist.vim: fix: forgot to upload autoload/gist.vim.
-
-- '5.4': |
- This is an upgrade for Gist.vim: fix: does not work correctly with blockwize selection.
-
-- '5.3': |
- This is an upgrade for Gist.vim: upd: support autoload.
-
-- '5.2': |
- This is an upgrade for Gist.vim: add: support block-wise selection.
-
-- '5.1': |
- This is an upgrade for Gist.vim: fix: can't update privates.
-
-- '5.0': |
- This is an upgrade for Gist.vim: follow update of gist.github.com
-
-- '4.9': |
- fix: don't add new line after "Done: xxx".
- fix: show WHY FAILED' when failed to post.
- add: support for :OpenBrowser.
- add: new option 'gist_curl_options'.
-
-- '4.8': |
- This is an upgrade for Gist.vim: fix: can't open private gist with ":Gist XXXXX".
-
-- '4.7': |
- This is an upgrade for Gist.vim: fix: filetype detection.
-
-- '4.6': |
- This is an upgrade for Gist.vim: fix: strange cookies folder.
-
-- '4.5': |
- This is an upgrade for Gist.vim: fix: use gist_clip_command for copying URL to clipboard. this fix strange behavior on Mac OSX.
-
-- '4.4': |
- This is an upgrade for Gist.vim: fix: gist is now only using https.
-
-- '4.3': |
- This is an upgrade for Gist.vim: add new option '-f' for fork.
-
-- '4.2': |
- This is an upgrade for Gist.vim: fixed code for login.
-
-- '4.1': |
- This is an upgrade for Gist.vim: fixed code cleanup.
-
-- '4.0': |
- This is an upgrade for Gist.vim: fixed deleting gist, listing privates.
-
-- '3.9': |
- This is an upgrade for Gist.vim: fixed :w handler in gist buffer.
-
-- '3.8': |
- This is an upgrade for Gist.vim: 'more...' on gist list.
-
-- '3.7': |
- This is an upgrade for Gist.vim: fix problem that break "gist list" window at twice.
-
-- '3.6': |
- This is an upgrade for Gist.vim: fix filetype detection for 'vimscript'.
-
-- '3.5': |
- This is an upgrade for Gist.vim: fix filetype detection.
-
-- '3.4': |
- This is an upgrade for Gist.vim: use '+' register on unix only if built with 'xterm_clipboard'. and some bug fixes.
-
-- '3.3': |
- This is an upgrade for Gist.vim: fix problem that append empty line when getting gist.
-
-- '3.2': |
- This is an upgrade for Gist.vim: added Gist header to recognize the gist. added script type header for Vimana.
-
-- '3.1': |
- This is an upgrade for Gist.vim: fix checking redirect url.
-
-- '3.0': |
- This is an upgrade for Gist.vim: fix for official changes(private button name was changed).
-
-- '2.9': |
- This is an upgrade for Gist.vim: fix for official changes(private button name was changed).
-
-- '2.8': |
- This is an upgrade for Gist.vim: be able to post multi buffer. currently updating or showing not supported. and ':Gist -d' delete the gist.
-
-- '2.7': |
- This is an upgrade for Gist.vim: be able to write the gist to local file with ':w foo.txt'.
-
-- '2.6': |
- This is an upgrade for Gist.vim: fixed problem that does not work 'Gist XXXX'.
-
-- '2.5': |
- This is an upgrade for Gist.vim: use existing buffer when open the list or gist.
-
-- '2.4': |
- This is an upgrade for Gist.vim: show error message when no any github settings.
-
-- '2.3': |
- This is an upgrade for Gist.vim: added :w BufWriteCmd for GistUpdate.
-
-- '2.2': |
- This is an upgrade for Gist.vim: fixed a bug for anonymous post. and new option '-a' for anonymous post.
-
-- '2.1': |
- This is an upgrade for Gist.vim: support changing gist filename.
-
-- '2.0': |
- This is an upgrade for Gist.vim: bugfix for listing gists in specified user.
-
-- '1.9': |
- This is an upgrade for Gist.vim: added support editing the gist. and bits bug fix.
-
-- '1.8': |
- This is an upgrade for Gist.vim: added new option g:gist_open_browser_after_post/g:gist_browser_command to open posted gist.
-
-- '1.7': |
- This is an upgrade for Gist.vim: now changed argument for putting clipboard as ':Gist -c XXXXX'.
-
-- '1.6': |
- This is an upgrade for Gist.vim: add gist's author in gist list.
-
-- '1.5': |
- This is an upgrade for Gist.vim: oops. bugfix for auto-detection.
-
-- '1.4': |
- This is an upgrade for Gist.vim: bugfix for auto-detection.
-
-- '1.3': |
- This is an upgrade for Gist.vim: more auto-detection for filetype.
-
-- '1.2': |
- This is an upgrade for Gist.vim: added new option for detect filetype from filename.
-
-- '1.1': |
- This is an upgrade for Gist.vim: calling StdinReadPost.
-
-- '1.0': |
- This is an upgrade for Gist.vim: treat literal "-" as part of username.
-
-- '0.9': |
- This is an upgrade for Gist.vim: added new option 'g:gist_clip_command' that copy the gist code.
-
-# __END__
-# vim: filetype=yaml
diff --git a/vim/bundle/gist-vim/plugin/gist.vim b/vim/bundle/gist-vim/plugin/gist.vim
deleted file mode 100644
index 973d300..0000000
--- a/vim/bundle/gist-vim/plugin/gist.vim
+++ /dev/null
@@ -1,16 +0,0 @@
-"=============================================================================
-" File: gist.vim
-" Author: Yasuhiro Matsumoto
-" WebPage: http://github.com/mattn/gist-vim
-" License: BSD
-" GetLatestVimScripts: 2423 1 :AutoInstall: gist.vim
-" script type: plugin
-
-if &cp || (exists('g:loaded_gist_vim') && g:loaded_gist_vim)
- finish
-endif
-let g:loaded_gist_vim = 1
-
-command! -nargs=? -range=% Gist :call gist#Gist(, , , )
-
-" vim:set et:
diff --git a/vim/bundle/jellybeans.vim b/vim/bundle/jellybeans.vim
deleted file mode 160000
index 0761708..0000000
--- a/vim/bundle/jellybeans.vim
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 0761708c890becd3e027551068e0ae272da003e0
diff --git a/vim/bundle/nerdtree/.gitignore b/vim/bundle/nerdtree/.gitignore
deleted file mode 100644
index 3698c0e..0000000
--- a/vim/bundle/nerdtree/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-*~
-*.swp
-tags
diff --git a/vim/bundle/nerdtree/README.markdown b/vim/bundle/nerdtree/README.markdown
deleted file mode 100644
index e617809..0000000
--- a/vim/bundle/nerdtree/README.markdown
+++ /dev/null
@@ -1,108 +0,0 @@
-The NERD Tree
-=============
-
-Intro
------
-
-The NERD tree allows you to explore your filesystem and to open files and
-directories. It presents the filesystem to you in the form of a tree which you
-manipulate with the keyboard and/or mouse. It also allows you to perform
-simple filesystem operations.
-
-The following features and functionality are provided by the NERD tree:
-
- * Files and directories are displayed in a hierarchical tree structure
- * Different highlighting is provided for the following types of nodes:
- * files
- * directories
- * sym-links
- * windows .lnk files
- * read-only files
- * executable files
- * Many (customisable) mappings are provided to manipulate the tree:
- * Mappings to open/close/explore directory nodes
- * Mappings to open files in new/existing windows/tabs
- * Mappings to change the current root of the tree
- * Mappings to navigate around the tree
- * ...
- * Directories and files can be bookmarked.
- * Most NERD tree navigation can also be done with the mouse
- * Filtering of tree content (can be toggled at runtime)
- * custom file filters to prevent e.g. vim backup files being displayed
- * optional displaying of hidden files (. files)
- * files can be "turned off" so that only directories are displayed
- * The position and size of the NERD tree window can be customised
- * The order in which the nodes in the tree are listed can be customised.
- * A model of your filesystem is created/maintained as you explore it. This
- has several advantages:
- * All filesystem information is cached and is only re-read on demand
- * If you revisit a part of the tree that you left earlier in your
- session, the directory nodes will be opened/closed as you left them
- * The script remembers the cursor position and window position in the NERD
- tree so you can toggle it off (or just close the tree window) and then
- reopen it (with NERDTreeToggle) the NERD tree window will appear exactly
- as you left it
- * You can have a separate NERD tree for each tab, share trees across tabs,
- or a mix of both.
- * By default the script overrides the default file browser (netrw), so if
- you :edit a directory a (slightly modified) NERD tree will appear in the
- current window
- * A programmable menu system is provided (simulates right clicking on a node)
- * one default menu plugin is provided to perform basic filesystem
- operations (create/delete/move/copy files/directories)
- * There's an API for adding your own keymappings
-
-Installation
-------------
-
-[pathogen.vim](https://github.com/tpope/vim-pathogen) is the recommended way to install nerdtree.
-
- cd ~/.vim/bundle
- git clone https://github.com/scrooloose/nerdtree.git
-
-Then reload vim, run `:helptags`, and check out `:help NERD_tree.txt`.
-
-
-Faq
----
-
-__Q. Can I have the nerdtree on every tab automatically?__
-
-A. Nope. If this is something you want then chances are you aren't using tabs
- and buffers as they were intended to be used. Read this
- http://stackoverflow.com/questions/102384/using-vims-tabs-like-buffers
-
- If you are interested in this behaviour then consider [vim-nerdtree-tabs](https://github.com/jistr/vim-nerdtree-tabs)
-
-__Q. How can I open a NERDTree automatically when vim starts up?__
-
-A. Stick this in your vimrc: `autocmd vimenter * NERDTree`
-
-__Q. How can I open a NERDTree automatically when vim starts up if no files were specified?__
-
-A. Stick this in your vimrc `autocmd vimenter * if !argc() | NERDTree | endif`
-
-__Q. How can I map a specific key or shortcut to open NERDTree?__
-
-A. Stick this in your vimrc to open NERDTree with `Ctrl+n` (you can set whatever key you want): `map :NERDTreeToggle`
-
-__Q. How can I close vim if the only window left open is a NERDTree?__
-
-A. Stick this in your vimrc:
-
- `autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTreeType") && b:NERDTreeType == "primary") | q | endif`
-
-
-Changelog
----------
-
-4.2.0 (2011-12-28)
-
- * Add NERDTreeDirArrows option to make the UI use pretty arrow chars instead of the old +~| chars to define the tree structure (sickill)
- * shift the syntax highlighting out into its own syntax file (gnap) * add some mac specific options to the filesystem menu - for macvim only (andersonfreitas)
- * Add NERDTreeMinimalUI option to remove some non functional parts of the nerdtree ui (camthompson)
- * tweak the behaviour of :NERDTreeFind - see :help :NERDTreeFind for the new behaviour (benjamingeiger)
- * if no name is given to :Bookmark, make it default to the name of the target file/dir (minyoung)
- * use 'file' completion when doing copying, create, and move operations (EvanDotPro)
- * lots of misc bug fixes (paddyoloughlin, sdewald, camthompson, Vitaly Bogdanov, AndrewRadev, mathias, scottstvnsn, kml, wycats, me RAWR!)
-
diff --git a/vim/bundle/nerdtree/autoload/nerdtree.vim b/vim/bundle/nerdtree/autoload/nerdtree.vim
deleted file mode 100644
index 3a2d71a..0000000
--- a/vim/bundle/nerdtree/autoload/nerdtree.vim
+++ /dev/null
@@ -1,1380 +0,0 @@
-if exists("g:loaded_nerdtree_autoload")
- finish
-endif
-let g:loaded_nerdtree_autoload = 1
-
-function! nerdtree#version()
- return '4.2.0'
-endfunction
-
-" SECTION: General Functions {{{1
-"============================================================
-"FUNCTION: nerdtree#bufInWindows(bnum){{{2
-"[[STOLEN FROM VTREEEXPLORER.VIM]]
-"Determine the number of windows open to this buffer number.
-"Care of Yegappan Lakshman. Thanks!
-"
-"Args:
-"bnum: the subject buffers buffer number
-function! nerdtree#bufInWindows(bnum)
- let cnt = 0
- let winnum = 1
- while 1
- let bufnum = winbufnr(winnum)
- if bufnum < 0
- break
- endif
- if bufnum ==# a:bnum
- let cnt = cnt + 1
- endif
- let winnum = winnum + 1
- endwhile
-
- return cnt
-endfunction
-
-"FUNCTION: nerdtree#checkForBrowse(dir) {{{2
-"inits a secondary nerd tree in the current buffer if appropriate
-function! nerdtree#checkForBrowse(dir)
- if a:dir != '' && isdirectory(a:dir)
- call g:NERDTreeCreator.CreateSecondary(a:dir)
- endif
-endfunction
-
-" FUNCTION: nerdtree#completeBookmarks(A,L,P) {{{2
-" completion function for the bookmark commands
-function! nerdtree#completeBookmarks(A,L,P)
- return filter(g:NERDTreeBookmark.BookmarkNames(), 'v:val =~# "^' . a:A . '"')
-endfunction
-
-"FUNCTION: nerdtree#compareBookmarks(dir) {{{2
-function! nerdtree#compareBookmarks(first, second)
- return a:first.compareTo(a:second)
-endfunction
-
-"FUNCTION: nerdtree#compareNodes(dir) {{{2
-function! nerdtree#compareNodes(n1, n2)
- return a:n1.path.compareTo(a:n2.path)
-endfunction
-
-" FUNCTION: nerdtree#createDefaultBindings() {{{2
-function! nerdtree#createDefaultBindings()
- let s = '' . s:SID() . '_'
-
- call NERDTreeAddKeyMap({ 'key': '', 'scope': "all", 'callback': s."handleMiddleMouse" })
- call NERDTreeAddKeyMap({ 'key': '', 'scope': "all", 'callback': s."handleLeftClick" })
- call NERDTreeAddKeyMap({ 'key': '<2-LeftMouse>', 'scope': "DirNode", 'callback': s."activateDirNode" })
- call NERDTreeAddKeyMap({ 'key': '<2-LeftMouse>', 'scope': "FileNode", 'callback': s."activateFileNode" })
- call NERDTreeAddKeyMap({ 'key': '<2-LeftMouse>', 'scope': "Bookmark", 'callback': s."activateBookmark" })
- call NERDTreeAddKeyMap({ 'key': '<2-LeftMouse>', 'scope': "all", 'callback': s."activateAll" })
-
-
- call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapActivateNode, 'scope': "DirNode", 'callback': s."activateDirNode" })
- call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapActivateNode, 'scope': "FileNode", 'callback': s."activateFileNode" })
- call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapActivateNode, 'scope': "Bookmark", 'callback': s."activateBookmark" })
- call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapActivateNode, 'scope': "all", 'callback': s."activateAll" })
-
- call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapOpenSplit, 'scope': "Node", 'callback': s."openHSplit" })
- call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapOpenVSplit, 'scope': "Node", 'callback': s."openVSplit" })
-
- call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapOpenSplit, 'scope': "Bookmark", 'callback': s."openHSplit" })
- call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapOpenVSplit, 'scope': "Bookmark", 'callback': s."openVSplit" })
-
- call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapPreview, 'scope': "Node", 'callback': s."previewNodeCurrent" })
- call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapPreviewVSplit, 'scope': "Node", 'callback': s."previewNodeVSplit" })
- call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapPreviewSplit, 'scope': "Node", 'callback': s."previewNodeHSplit" })
-
- call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapPreview, 'scope': "Bookmark", 'callback': s."previewNodeCurrent" })
- call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapPreviewVSplit, 'scope': "Bookmark", 'callback': s."previewNodeVSplit" })
- call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapPreviewSplit, 'scope': "Bookmark", 'callback': s."previewNodeHSplit" })
-
- call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapOpenRecursively, 'scope': "DirNode", 'callback': s."openNodeRecursively" })
-
- call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapUpdir, 'scope': "all", 'callback': s."upDirCurrentRootClosed" })
- call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapUpdirKeepOpen, 'scope': "all", 'callback': s."upDirCurrentRootOpen" })
- call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapChangeRoot, 'scope': "Node", 'callback': s."chRoot" })
-
- call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapChdir, 'scope': "Node", 'callback': s."chCwd" })
-
- call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapQuit, 'scope': "all", 'callback': s."closeTreeWindow" })
-
- call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapCWD, 'scope': "all", 'callback': "nerdtree#chRootCwd" })
-
- call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapRefreshRoot, 'scope': "all", 'callback': s."refreshRoot" })
- call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapRefresh, 'scope': "Node", 'callback': s."refreshCurrent" })
-
- call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapHelp, 'scope': "all", 'callback': s."displayHelp" })
- call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapToggleZoom, 'scope': "all", 'callback': s."toggleZoom" })
- call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapToggleHidden, 'scope': "all", 'callback': s."toggleShowHidden" })
- call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapToggleFilters, 'scope': "all", 'callback': s."toggleIgnoreFilter" })
- call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapToggleFiles, 'scope': "all", 'callback': s."toggleShowFiles" })
- call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapToggleBookmarks, 'scope': "all", 'callback': s."toggleShowBookmarks" })
-
- call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapCloseDir, 'scope': "Node", 'callback': s."closeCurrentDir" })
- call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapCloseChildren, 'scope': "DirNode", 'callback': s."closeChildren" })
-
- call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapMenu, 'scope': "Node", 'callback': s."showMenu" })
-
- call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapJumpParent, 'scope': "Node", 'callback': s."jumpToParent" })
- call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapJumpFirstChild, 'scope': "Node", 'callback': s."jumpToFirstChild" })
- call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapJumpLastChild, 'scope': "Node", 'callback': s."jumpToLastChild" })
- call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapJumpRoot, 'scope': "all", 'callback': s."jumpToRoot" })
- call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapJumpNextSibling, 'scope': "Node", 'callback': s."jumpToNextSibling" })
- call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapJumpPrevSibling, 'scope': "Node", 'callback': s."jumpToPrevSibling" })
-
- call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapOpenInTab, 'scope': "Node", 'callback': s."openInNewTab" })
- call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapOpenInTabSilent, 'scope': "Node", 'callback': s."openInNewTabSilent" })
- call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapOpenInTab, 'scope': "Bookmark", 'callback': s."openInNewTab" })
- call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapOpenInTabSilent, 'scope': "Bookmark", 'callback': s."openInNewTabSilent" })
-
- call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapOpenExpl, 'scope': "DirNode", 'callback': s."openExplorer" })
-
- call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapDeleteBookmark, 'scope': "Bookmark", 'callback': s."deleteBookmark" })
-endfunction
-
-" FUNCTION: nerdtree#deprecated(func, [msg]) {{{2
-" Issue a deprecation warning for a:func. If a second arg is given, use this
-" as the deprecation message
-function! nerdtree#deprecated(func, ...)
- let msg = a:0 ? a:func . ' ' . a:1 : a:func . ' is deprecated'
-
- if !exists('s:deprecationWarnings')
- let s:deprecationWarnings = {}
- endif
- if !has_key(s:deprecationWarnings, a:func)
- let s:deprecationWarnings[a:func] = 1
- echomsg msg
- endif
-endfunction
-
-"FUNCTION: nerdtree#escChars(dir) {{{2
-function! nerdtree#escChars()
- if nerdtree#runningWindows()
- return " `\|\"#%&,?()\*^<>"
- endif
-
- return " \\`\|\"#%&,?()\*^<>[]"
-endfunction
-
-" FUNCTION: nerdtree#exec(cmd) {{{2
-" same as :exec cmd but eventignore=all is set for the duration
-function! nerdtree#exec(cmd)
- let old_ei = &ei
- set ei=all
- exec a:cmd
- let &ei = old_ei
-endfunction
-
-" FUNCTION: nerdtree#findAndRevealPath() {{{2
-function! nerdtree#findAndRevealPath()
- try
- let p = g:NERDTreePath.New(expand("%:p"))
- catch /^NERDTree.InvalidArgumentsError/
- call nerdtree#echo("no file for the current buffer")
- return
- endtry
-
- if p.isUnixHiddenPath()
- let showhidden=g:NERDTreeShowHidden
- let g:NERDTreeShowHidden = 1
- endif
-
- if !nerdtree#treeExistsForTab()
- try
- let cwd = g:NERDTreePath.New(getcwd())
- catch /^NERDTree.InvalidArgumentsError/
- call nerdtree#echo("current directory does not exist.")
- let cwd = p.getParent()
- endtry
-
- if p.isUnder(cwd)
- call g:NERDTreeCreator.CreatePrimary(cwd.str())
- else
- call g:NERDTreeCreator.CreatePrimary(p.getParent().str())
- endif
- else
- if !p.isUnder(g:NERDTreeFileNode.GetRootForTab().path)
- if !nerdtree#isTreeOpen()
- call g:NERDTreeCreator.TogglePrimary('')
- else
- call nerdtree#putCursorInTreeWin()
- endif
- let b:NERDTreeShowHidden = g:NERDTreeShowHidden
- call nerdtree#chRoot(g:NERDTreeDirNode.New(p.getParent()))
- else
- if !nerdtree#isTreeOpen()
- call g:NERDTreeCreator.TogglePrimary("")
- endif
- endif
- endif
- call nerdtree#putCursorInTreeWin()
- call b:NERDTreeRoot.reveal(p)
-
- if p.isUnixHiddenFile()
- let g:NERDTreeShowHidden = showhidden
- endif
-endfunction
-
-" FUNCTION: nerdtree#has_opt(options, name) {{{2
-function! nerdtree#has_opt(options, name)
- return has_key(a:options, a:name) && a:options[a:name] == 1
-endfunction
-
-" FUNCTION: nerdtree#invokeKeyMap(key) {{{2
-"this is needed since I cant figure out how to invoke dict functions from a
-"key map
-function! nerdtree#invokeKeyMap(key)
- call g:NERDTreeKeyMap.Invoke(a:key)
-endfunction
-
-" FUNCTION: nerdtree#loadClassFiles() {{{2
-function! nerdtree#loadClassFiles()
- runtime lib/nerdtree/path.vim
- runtime lib/nerdtree/menu_controller.vim
- runtime lib/nerdtree/menu_item.vim
- runtime lib/nerdtree/key_map.vim
- runtime lib/nerdtree/bookmark.vim
- runtime lib/nerdtree/tree_file_node.vim
- runtime lib/nerdtree/tree_dir_node.vim
- runtime lib/nerdtree/opener.vim
- runtime lib/nerdtree/creator.vim
-endfunction
-
-" FUNCTION: nerdtree#postSourceActions() {{{2
-function! nerdtree#postSourceActions()
- call g:NERDTreeBookmark.CacheBookmarks(0)
- call nerdtree#createDefaultBindings()
-
- "load all nerdtree plugins
- runtime! nerdtree_plugin/**/*.vim
-endfunction
-
-"FUNCTION: nerdtree#runningWindows(dir) {{{2
-function! nerdtree#runningWindows()
- return has("win16") || has("win32") || has("win64")
-endfunction
-
-" Function: s:SID() {{{2
-function s:SID()
- if !exists("s:sid")
- let s:sid = matchstr(expand(''), '\zs\d\+\ze_SID$')
- endif
- return s:sid
-endfun
-
-" FUNCTION: nerdtree#tabpagevar(tabnr, var) {{{2
-function! nerdtree#tabpagevar(tabnr, var)
- let currentTab = tabpagenr()
- let old_ei = &ei
- set ei=all
-
- exec "tabnext " . a:tabnr
- let v = -1
- if exists('t:' . a:var)
- exec 'let v = t:' . a:var
- endif
- exec "tabnext " . currentTab
-
- let &ei = old_ei
-
- return v
-endfunction
-
-" Function: nerdtree#treeExistsForBuffer() {{{2
-" Returns 1 if a nerd tree root exists in the current buffer
-function! nerdtree#treeExistsForBuf()
- return exists("b:NERDTreeRoot")
-endfunction
-
-" Function: nerdtree#treeExistsForTab() {{{2
-" Returns 1 if a nerd tree root exists in the current tab
-function! nerdtree#treeExistsForTab()
- return exists("t:NERDTreeBufName")
-endfunction
-
-"FUNCTION: nerdtree#treeMarkupReg(dir) {{{2
-function! nerdtree#treeMarkupReg()
- if g:NERDTreeDirArrows
- return '^\([▾▸] \| \+[▾▸] \| \+\)'
- endif
-
- return '^[ `|]*[\-+~]'
-endfunction
-
-"FUNCTION: nerdtree#treeUpDirLine(dir) {{{2
-function! nerdtree#treeUpDirLine()
- return '.. (up a dir)'
-endfunction
-
-"FUNCTION: nerdtree#treeWid(dir) {{{2
-function! nerdtree#treeWid()
- return 2
-endfunction
-
-"FUNCTION: nerdtree#upDir(keepState) {{{2
-"moves the tree up a level
-"
-"Args:
-"keepState: 1 if the current root should be left open when the tree is
-"re-rendered
-function! nerdtree#upDir(keepState)
- let cwd = b:NERDTreeRoot.path.str({'format': 'UI'})
- if cwd ==# "/" || cwd =~# '^[^/]..$'
- call nerdtree#echo("already at top dir")
- else
- if !a:keepState
- call b:NERDTreeRoot.close()
- endif
-
- let oldRoot = b:NERDTreeRoot
-
- if empty(b:NERDTreeRoot.parent)
- let path = b:NERDTreeRoot.path.getParent()
- let newRoot = g:NERDTreeDirNode.New(path)
- call newRoot.open()
- call newRoot.transplantChild(b:NERDTreeRoot)
- let b:NERDTreeRoot = newRoot
- else
- let b:NERDTreeRoot = b:NERDTreeRoot.parent
- endif
-
- if g:NERDTreeChDirMode ==# 2
- call b:NERDTreeRoot.path.changeToDir()
- endif
-
- call nerdtree#renderView()
- call oldRoot.putCursorHere(0, 0)
- endif
-endfunction
-
-" Function: nerdtree#unique(list) {{{2
-" returns a:list without duplicates
-function! nerdtree#unique(list)
- let uniqlist = []
- for elem in a:list
- if index(uniqlist, elem) ==# -1
- let uniqlist += [elem]
- endif
- endfor
- return uniqlist
-endfunction
-
-" SECTION: View Functions {{{1
-"============================================================
-"
-"FUNCTION: nerdtree#centerView() {{{2
-"centers the nerd tree window around the cursor (provided the nerd tree
-"options permit)
-function! nerdtree#centerView()
- if g:NERDTreeAutoCenter
- let current_line = winline()
- let lines_to_top = current_line
- let lines_to_bottom = winheight(nerdtree#getTreeWinNum()) - current_line
- if lines_to_top < g:NERDTreeAutoCenterThreshold || lines_to_bottom < g:NERDTreeAutoCenterThreshold
- normal! zz
- endif
- endif
-endfunction
-
-" FUNCTION: nerdtree#chRoot(node) {{{2
-" changes the current root to the selected one
-function! nerdtree#chRoot(node)
- call s:chRoot(a:node)
-endfunction
-"FUNCTION: nerdtree#closeTree() {{{2
-"Closes the primary NERD tree window for this tab
-function! nerdtree#closeTree()
- if !nerdtree#isTreeOpen()
- throw "NERDTree.NoTreeFoundError: no NERDTree is open"
- endif
-
- if winnr("$") != 1
- if winnr() == nerdtree#getTreeWinNum()
- call nerdtree#exec("wincmd p")
- let bufnr = bufnr("")
- call nerdtree#exec("wincmd p")
- else
- let bufnr = bufnr("")
- endif
-
- call nerdtree#exec(nerdtree#getTreeWinNum() . " wincmd w")
- close
- call nerdtree#exec(bufwinnr(bufnr) . " wincmd w")
- else
- close
- endif
-endfunction
-
-"FUNCTION: nerdtree#closeTreeIfOpen() {{{2
-"Closes the NERD tree window if it is open
-function! nerdtree#closeTreeIfOpen()
- if nerdtree#isTreeOpen()
- call nerdtree#closeTree()
- endif
-endfunction
-
-"FUNCTION: nerdtree#closeTreeIfQuitOnOpen() {{{2
-"Closes the NERD tree window if the close on open option is set
-function! nerdtree#closeTreeIfQuitOnOpen()
- if g:NERDTreeQuitOnOpen && nerdtree#isTreeOpen()
- call nerdtree#closeTree()
- endif
-endfunction
-
-"FUNCTION: nerdtree#dumpHelp {{{2
-"prints out the quick help
-function! nerdtree#dumpHelp()
- let old_h = @h
- if b:treeShowHelp ==# 1
- let @h= "\" NERD tree (" . nerdtree#version() . ") quickhelp~\n"
- let @h=@h."\" ============================\n"
- let @h=@h."\" File node mappings~\n"
- let @h=@h."\" ". (g:NERDTreeMouseMode ==# 3 ? "single" : "double") ."-click,\n"
- let @h=@h."\" ,\n"
- if b:NERDTreeType ==# "primary"
- let @h=@h."\" ". g:NERDTreeMapActivateNode .": open in prev window\n"
- else
- let @h=@h."\" ". g:NERDTreeMapActivateNode .": open in current window\n"
- endif
- if b:NERDTreeType ==# "primary"
- let @h=@h."\" ". g:NERDTreeMapPreview .": preview\n"
- endif
- let @h=@h."\" ". g:NERDTreeMapOpenInTab.": open in new tab\n"
- let @h=@h."\" ". g:NERDTreeMapOpenInTabSilent .": open in new tab silently\n"
- let @h=@h."\" middle-click,\n"
- let @h=@h."\" ". g:NERDTreeMapOpenSplit .": open split\n"
- let @h=@h."\" ". g:NERDTreeMapPreviewSplit .": preview split\n"
- let @h=@h."\" ". g:NERDTreeMapOpenVSplit .": open vsplit\n"
- let @h=@h."\" ". g:NERDTreeMapPreviewVSplit .": preview vsplit\n"
-
- let @h=@h."\"\n\" ----------------------------\n"
- let @h=@h."\" Directory node mappings~\n"
- let @h=@h."\" ". (g:NERDTreeMouseMode ==# 1 ? "double" : "single") ."-click,\n"
- let @h=@h."\" ". g:NERDTreeMapActivateNode .": open & close node\n"
- let @h=@h."\" ". g:NERDTreeMapOpenRecursively .": recursively open node\n"
- let @h=@h."\" ". g:NERDTreeMapCloseDir .": close parent of node\n"
- let @h=@h."\" ". g:NERDTreeMapCloseChildren .": close all child nodes of\n"
- let @h=@h."\" current node recursively\n"
- let @h=@h."\" middle-click,\n"
- let @h=@h."\" ". g:NERDTreeMapOpenExpl.": explore selected dir\n"
-
- let @h=@h."\"\n\" ----------------------------\n"
- let @h=@h."\" Bookmark table mappings~\n"
- let @h=@h."\" double-click,\n"
- let @h=@h."\" ". g:NERDTreeMapActivateNode .": open bookmark\n"
- let @h=@h."\" ". g:NERDTreeMapOpenInTab.": open in new tab\n"
- let @h=@h."\" ". g:NERDTreeMapOpenInTabSilent .": open in new tab silently\n"
- let @h=@h."\" ". g:NERDTreeMapDeleteBookmark .": delete bookmark\n"
-
- let @h=@h."\"\n\" ----------------------------\n"
- let @h=@h."\" Tree navigation mappings~\n"
- let @h=@h."\" ". g:NERDTreeMapJumpRoot .": go to root\n"
- let @h=@h."\" ". g:NERDTreeMapJumpParent .": go to parent\n"
- let @h=@h."\" ". g:NERDTreeMapJumpFirstChild .": go to first child\n"
- let @h=@h."\" ". g:NERDTreeMapJumpLastChild .": go to last child\n"
- let @h=@h."\" ". g:NERDTreeMapJumpNextSibling .": go to next sibling\n"
- let @h=@h."\" ". g:NERDTreeMapJumpPrevSibling .": go to prev sibling\n"
-
- let @h=@h."\"\n\" ----------------------------\n"
- let @h=@h."\" Filesystem mappings~\n"
- let @h=@h."\" ". g:NERDTreeMapChangeRoot .": change tree root to the\n"
- let @h=@h."\" selected dir\n"
- let @h=@h."\" ". g:NERDTreeMapUpdir .": move tree root up a dir\n"
- let @h=@h."\" ". g:NERDTreeMapUpdirKeepOpen .": move tree root up a dir\n"
- let @h=@h."\" but leave old root open\n"
- let @h=@h."\" ". g:NERDTreeMapRefresh .": refresh cursor dir\n"
- let @h=@h."\" ". g:NERDTreeMapRefreshRoot .": refresh current root\n"
- let @h=@h."\" ". g:NERDTreeMapMenu .": Show menu\n"
- let @h=@h."\" ". g:NERDTreeMapChdir .":change the CWD to the\n"
- let @h=@h."\" selected dir\n"
- let @h=@h."\" ". g:NERDTreeMapCWD .":change tree root to CWD\n"
-
- let @h=@h."\"\n\" ----------------------------\n"
- let @h=@h."\" Tree filtering mappings~\n"
- let @h=@h."\" ". g:NERDTreeMapToggleHidden .": hidden files (" . (b:NERDTreeShowHidden ? "on" : "off") . ")\n"
- let @h=@h."\" ". g:NERDTreeMapToggleFilters .": file filters (" . (b:NERDTreeIgnoreEnabled ? "on" : "off") . ")\n"
- let @h=@h."\" ". g:NERDTreeMapToggleFiles .": files (" . (b:NERDTreeShowFiles ? "on" : "off") . ")\n"
- let @h=@h."\" ". g:NERDTreeMapToggleBookmarks .": bookmarks (" . (b:NERDTreeShowBookmarks ? "on" : "off") . ")\n"
-
- "add quickhelp entries for each custom key map
- let @h=@h."\"\n\" ----------------------------\n"
- let @h=@h."\" Custom mappings~\n"
- for i in g:NERDTreeKeyMap.All()
- if !empty(i.quickhelpText)
- let @h=@h."\" ". i.key .": ". i.quickhelpText ."\n"
- endif
- endfor
-
- let @h=@h."\"\n\" ----------------------------\n"
- let @h=@h."\" Other mappings~\n"
- let @h=@h."\" ". g:NERDTreeMapQuit .": Close the NERDTree window\n"
- let @h=@h."\" ". g:NERDTreeMapToggleZoom .": Zoom (maximize-minimize)\n"
- let @h=@h."\" the NERDTree window\n"
- let @h=@h."\" ". g:NERDTreeMapHelp .": toggle help\n"
- let @h=@h."\"\n\" ----------------------------\n"
- let @h=@h."\" Bookmark commands~\n"
- let @h=@h."\" :Bookmark \n"
- let @h=@h."\" :BookmarkToRoot \n"
- let @h=@h."\" :RevealBookmark \n"
- let @h=@h."\" :OpenBookmark \n"
- let @h=@h."\" :ClearBookmarks []\n"
- let @h=@h."\" :ClearAllBookmarks\n"
- silent! put h
- elseif g:NERDTreeMinimalUI == 0
- let @h="\" Press ". g:NERDTreeMapHelp ." for help\n"
- silent! put h
- endif
-
- let @h = old_h
-endfunction
-
-"FUNCTION: nerdtree#echo {{{2
-"A wrapper for :echo. Appends 'NERDTree:' on the front of all messages
-"
-"Args:
-"msg: the message to echo
-function! nerdtree#echo(msg)
- redraw
- echomsg "NERDTree: " . a:msg
-endfunction
-
-"FUNCTION: nerdtree#echoError {{{2
-"Wrapper for nerdtree#echo, sets the message type to errormsg for this message
-"Args:
-"msg: the message to echo
-function! nerdtree#echoError(msg)
- echohl errormsg
- call nerdtree#echo(a:msg)
- echohl normal
-endfunction
-
-"FUNCTION: nerdtree#echoWarning {{{2
-"Wrapper for nerdtree#echo, sets the message type to warningmsg for this message
-"Args:
-"msg: the message to echo
-function! nerdtree#echoWarning(msg)
- echohl warningmsg
- call nerdtree#echo(a:msg)
- echohl normal
-endfunction
-
-"FUNCTION: nerdtree#firstUsableWindow(){{{2
-"find the window number of the first normal window
-function! nerdtree#firstUsableWindow()
- let i = 1
- while i <= winnr("$")
- let bnum = winbufnr(i)
- if bnum != -1 && getbufvar(bnum, '&buftype') ==# ''
- \ && !getwinvar(i, '&previewwindow')
- \ && (!getbufvar(bnum, '&modified') || &hidden)
- return i
- endif
-
- let i += 1
- endwhile
- return -1
-endfunction
-
-"FUNCTION: nerdtree#getPath(ln) {{{2
-"Gets the full path to the node that is rendered on the given line number
-"
-"Args:
-"ln: the line number to get the path for
-"
-"Return:
-"A path if a node was selected, {} if nothing is selected.
-"If the 'up a dir' line was selected then the path to the parent of the
-"current root is returned
-function! nerdtree#getPath(ln)
- let line = getline(a:ln)
-
- let rootLine = g:NERDTreeFileNode.GetRootLineNum()
-
- "check to see if we have the root node
- if a:ln == rootLine
- return b:NERDTreeRoot.path
- endif
-
- if !g:NERDTreeDirArrows
- " in case called from outside the tree
- if line !~# '^ *[|`▸▾ ]' || line =~# '^$'
- return {}
- endif
- endif
-
- if line ==# nerdtree#treeUpDirLine()
- return b:NERDTreeRoot.path.getParent()
- endif
-
- let indent = nerdtree#indentLevelFor(line)
-
- "remove the tree parts and the leading space
- let curFile = nerdtree#stripMarkupFromLine(line, 0)
-
- let wasdir = 0
- if curFile =~# '/$'
- let wasdir = 1
- let curFile = substitute(curFile, '/\?$', '/', "")
- endif
-
- let dir = ""
- let lnum = a:ln
- while lnum > 0
- let lnum = lnum - 1
- let curLine = getline(lnum)
- let curLineStripped = nerdtree#stripMarkupFromLine(curLine, 1)
-
- "have we reached the top of the tree?
- if lnum == rootLine
- let dir = b:NERDTreeRoot.path.str({'format': 'UI'}) . dir
- break
- endif
- if curLineStripped =~# '/$'
- let lpindent = nerdtree#indentLevelFor(curLine)
- if lpindent < indent
- let indent = indent - 1
-
- let dir = substitute (curLineStripped,'^\\', "", "") . dir
- continue
- endif
- endif
- endwhile
- let curFile = b:NERDTreeRoot.path.drive . dir . curFile
- let toReturn = g:NERDTreePath.New(curFile)
- return toReturn
-endfunction
-
-"FUNCTION: nerdtree#getTreeWinNum() {{{2
-"gets the nerd tree window number for this tab
-function! nerdtree#getTreeWinNum()
- if exists("t:NERDTreeBufName")
- return bufwinnr(t:NERDTreeBufName)
- else
- return -1
- endif
-endfunction
-
-"FUNCTION: nerdtree#indentLevelFor(line) {{{2
-function! nerdtree#indentLevelFor(line)
- let level = match(a:line, '[^ \-+~▸▾`|]') / nerdtree#treeWid()
- " check if line includes arrows
- if match(a:line, '[▸▾]') > -1
- " decrement level as arrow uses 3 ascii chars
- let level = level - 1
- endif
- return level
-endfunction
-
-"FUNCTION: nerdtree#isTreeOpen() {{{2
-function! nerdtree#isTreeOpen()
- return nerdtree#getTreeWinNum() != -1
-endfunction
-
-"FUNCTION: nerdtree#isWindowUsable(winnumber) {{{2
-"Returns 0 if opening a file from the tree in the given window requires it to
-"be split, 1 otherwise
-"
-"Args:
-"winnumber: the number of the window in question
-function! nerdtree#isWindowUsable(winnumber)
- "gotta split if theres only one window (i.e. the NERD tree)
- if winnr("$") ==# 1
- return 0
- endif
-
- let oldwinnr = winnr()
- call nerdtree#exec(a:winnumber . "wincmd p")
- let specialWindow = getbufvar("%", '&buftype') != '' || getwinvar('%', '&previewwindow')
- let modified = &modified
- call nerdtree#exec(oldwinnr . "wincmd p")
-
- "if its a special window e.g. quickfix or another explorer plugin then we
- "have to split
- if specialWindow
- return 0
- endif
-
- if &hidden
- return 1
- endif
-
- return !modified || nerdtree#bufInWindows(winbufnr(a:winnumber)) >= 2
-endfunction
-
-" FUNCTION: nerdtree#jumpToChild(direction) {{{2
-" Args:
-" direction: 0 if going to first child, 1 if going to last
-function! nerdtree#jumpToChild(currentNode, direction)
- if a:currentNode.isRoot()
- return nerdtree#echo("cannot jump to " . (a:direction ? "last" : "first") . " child")
- end
- let dirNode = a:currentNode.parent
- let childNodes = dirNode.getVisibleChildren()
-
- let targetNode = childNodes[0]
- if a:direction
- let targetNode = childNodes[len(childNodes) - 1]
- endif
-
- if targetNode.equals(a:currentNode)
- let siblingDir = a:currentNode.parent.findOpenDirSiblingWithVisibleChildren(a:direction)
- if siblingDir != {}
- let indx = a:direction ? siblingDir.getVisibleChildCount()-1 : 0
- let targetNode = siblingDir.getChildByIndex(indx, 1)
- endif
- endif
-
- call targetNode.putCursorHere(1, 0)
-
- call nerdtree#centerView()
-endfunction
-
-" FUNCTION: nerdtree#jumpToSibling(currentNode, forward) {{{2
-" moves the cursor to the sibling of the current node in the given direction
-"
-" Args:
-" forward: 1 if the cursor should move to the next sibling, 0 if it should
-" move back to the previous sibling
-function! nerdtree#jumpToSibling(currentNode, forward)
- let sibling = a:currentNode.findSibling(a:forward)
-
- if !empty(sibling)
- call sibling.putCursorHere(1, 0)
- call nerdtree#centerView()
- endif
-endfunction
-
-"FUNCTION: nerdtree#promptToDelBuffer(bufnum, msg){{{2
-"prints out the given msg and, if the user responds by pushing 'y' then the
-"buffer with the given bufnum is deleted
-"
-"Args:
-"bufnum: the buffer that may be deleted
-"msg: a message that will be echoed to the user asking them if they wish to
-" del the buffer
-function! nerdtree#promptToDelBuffer(bufnum, msg)
- echo a:msg
- if nr2char(getchar()) ==# 'y'
- exec "silent bdelete! " . a:bufnum
- endif
-endfunction
-
-"FUNCTION: nerdtree#putCursorOnBookmarkTable(){{{2
-"Places the cursor at the top of the bookmarks table
-function! nerdtree#putCursorOnBookmarkTable()
- if !b:NERDTreeShowBookmarks
- throw "NERDTree.IllegalOperationError: cant find bookmark table, bookmarks arent active"
- endif
-
- if g:NERDTreeMinimalUI
- return cursor(1, 2)
- endif
-
- let rootNodeLine = g:NERDTreeFileNode.GetRootLineNum()
-
- let line = 1
- while getline(line) !~# '^>-\+Bookmarks-\+$'
- let line = line + 1
- if line >= rootNodeLine
- throw "NERDTree.BookmarkTableNotFoundError: didnt find the bookmarks table"
- endif
- endwhile
- call cursor(line, 2)
-endfunction
-
-"FUNCTION: nerdtree#putCursorInTreeWin(){{{2
-"Places the cursor in the nerd tree window
-function! nerdtree#putCursorInTreeWin()
- if !nerdtree#isTreeOpen()
- throw "NERDTree.InvalidOperationError: cant put cursor in NERD tree window, no window exists"
- endif
-
- call nerdtree#exec(nerdtree#getTreeWinNum() . "wincmd w")
-endfunction
-
-"FUNCTION: nerdtree#renderBookmarks {{{2
-function! nerdtree#renderBookmarks()
-
- if g:NERDTreeMinimalUI == 0
- call setline(line(".")+1, ">----------Bookmarks----------")
- call cursor(line(".")+1, col("."))
- endif
-
- for i in g:NERDTreeBookmark.Bookmarks()
- call setline(line(".")+1, i.str())
- call cursor(line(".")+1, col("."))
- endfor
-
- call setline(line(".")+1, '')
- call cursor(line(".")+1, col("."))
-endfunction
-
-"FUNCTION: nerdtree#renderView {{{2
-"The entry function for rendering the tree
-function! nerdtree#renderView()
- setlocal modifiable
-
- "remember the top line of the buffer and the current line so we can
- "restore the view exactly how it was
- let curLine = line(".")
- let curCol = col(".")
- let topLine = line("w0")
-
- "delete all lines in the buffer (being careful not to clobber a register)
- silent 1,$delete _
-
- call nerdtree#dumpHelp()
-
- "delete the blank line before the help and add one after it
- if g:NERDTreeMinimalUI == 0
- call setline(line(".")+1, "")
- call cursor(line(".")+1, col("."))
- endif
-
- if b:NERDTreeShowBookmarks
- call nerdtree#renderBookmarks()
- endif
-
- "add the 'up a dir' line
- if !g:NERDTreeMinimalUI
- call setline(line(".")+1, nerdtree#treeUpDirLine())
- call cursor(line(".")+1, col("."))
- endif
-
- "draw the header line
- let header = b:NERDTreeRoot.path.str({'format': 'UI', 'truncateTo': winwidth(0)})
- call setline(line(".")+1, header)
- call cursor(line(".")+1, col("."))
-
- "draw the tree
- let old_o = @o
- let @o = b:NERDTreeRoot.renderToString()
- silent put o
- let @o = old_o
-
- "delete the blank line at the top of the buffer
- silent 1,1delete _
-
- "restore the view
- let old_scrolloff=&scrolloff
- let &scrolloff=0
- call cursor(topLine, 1)
- normal! zt
- call cursor(curLine, curCol)
- let &scrolloff = old_scrolloff
-
- setlocal nomodifiable
-endfunction
-
-"FUNCTION: nerdtree#renderViewSavingPosition {{{2
-"Renders the tree and ensures the cursor stays on the current node or the
-"current nodes parent if it is no longer available upon re-rendering
-function! nerdtree#renderViewSavingPosition()
- let currentNode = g:NERDTreeFileNode.GetSelected()
-
- "go up the tree till we find a node that will be visible or till we run
- "out of nodes
- while currentNode != {} && !currentNode.isVisible() && !currentNode.isRoot()
- let currentNode = currentNode.parent
- endwhile
-
- call nerdtree#renderView()
-
- if currentNode != {}
- call currentNode.putCursorHere(0, 0)
- endif
-endfunction
-"
-"FUNCTION: nerdtree#restoreScreenState() {{{2
-"
-"Sets the screen state back to what it was when nerdtree#saveScreenState was last
-"called.
-"
-"Assumes the cursor is in the NERDTree window
-function! nerdtree#restoreScreenState()
- if !exists("b:NERDTreeOldTopLine") || !exists("b:NERDTreeOldPos") || !exists("b:NERDTreeOldWindowSize")
- return
- endif
- exec("silent vertical resize ".b:NERDTreeOldWindowSize)
-
- let old_scrolloff=&scrolloff
- let &scrolloff=0
- call cursor(b:NERDTreeOldTopLine, 0)
- normal! zt
- call setpos(".", b:NERDTreeOldPos)
- let &scrolloff=old_scrolloff
-endfunction
-
-"FUNCTION: nerdtree#saveScreenState() {{{2
-"Saves the current cursor position in the current buffer and the window
-"scroll position
-function! nerdtree#saveScreenState()
- let win = winnr()
- try
- call nerdtree#putCursorInTreeWin()
- let b:NERDTreeOldPos = getpos(".")
- let b:NERDTreeOldTopLine = line("w0")
- let b:NERDTreeOldWindowSize = winwidth("")
- call nerdtree#exec(win . "wincmd w")
- catch /^NERDTree.InvalidOperationError/
- endtry
-endfunction
-
-"FUNCTION: nerdtree#stripMarkupFromLine(line, removeLeadingSpaces){{{2
-"returns the given line with all the tree parts stripped off
-"
-"Args:
-"line: the subject line
-"removeLeadingSpaces: 1 if leading spaces are to be removed (leading spaces =
-"any spaces before the actual text of the node)
-function! nerdtree#stripMarkupFromLine(line, removeLeadingSpaces)
- let line = a:line
- "remove the tree parts and the leading space
- let line = substitute (line, nerdtree#treeMarkupReg(),"","")
-
- "strip off any read only flag
- let line = substitute (line, ' \[RO\]', "","")
-
- "strip off any bookmark flags
- let line = substitute (line, ' {[^}]*}', "","")
-
- "strip off any executable flags
- let line = substitute (line, '*\ze\($\| \)', "","")
-
- let wasdir = 0
- if line =~# '/$'
- let wasdir = 1
- endif
- let line = substitute (line,' -> .*',"","") " remove link to
- if wasdir ==# 1
- let line = substitute (line, '/\?$', '/', "")
- endif
-
- if a:removeLeadingSpaces
- let line = substitute (line, '^ *', '', '')
- endif
-
- return line
-endfunction
-
-"SECTION: Interface bindings {{{1
-"============================================================
-
-"FUNCTION: s:activateAll() {{{2
-"handle the user activating the updir line
-function! s:activateAll()
- if getline(".") ==# nerdtree#treeUpDirLine()
- return nerdtree#upDir(0)
- endif
-endfunction
-"FUNCTION: s:activateDirNode() {{{2
-"handle the user activating a tree node
-function! s:activateDirNode(node)
- call a:node.activate({'reuse': 1})
-endfunction
-
-"FUNCTION: s:activateFileNode() {{{2
-"handle the user activating a tree node
-function! s:activateFileNode(node)
- call a:node.activate({'reuse': 1, 'where': 'p'})
-endfunction
-
-"FUNCTION: s:activateBookmark() {{{2
-"handle the user activating a bookmark
-function! s:activateBookmark(bm)
- call a:bm.activate(!a:bm.path.isDirectory ? {'where': 'p'} : {})
-endfunction
-
-" FUNCTION: nerdtree#bookmarkNode(name) {{{2
-" Associate the current node with the given name
-function! nerdtree#bookmarkNode(...)
- let currentNode = g:NERDTreeFileNode.GetSelected()
- if currentNode != {}
- let name = a:1
- if empty(name)
- let name = currentNode.path.getLastPathComponent(0)
- endif
- try
- call currentNode.bookmark(name)
- call nerdtree#renderView()
- catch /^NERDTree.IllegalBookmarkNameError/
- call nerdtree#echo("bookmark names must not contain spaces")
- endtry
- else
- call nerdtree#echo("select a node first")
- endif
-endfunction
-
-" FUNCTION: s:chCwd(node) {{{2
-function! s:chCwd(node)
- try
- call a:node.path.changeToDir()
- catch /^NERDTree.PathChangeError/
- call nerdtree#echoWarning("could not change cwd")
- endtry
-endfunction
-
-" FUNCTION: s:chRoot(node) {{{2
-" changes the current root to the selected one
-function! s:chRoot(node)
- call a:node.makeRoot()
- call nerdtree#renderView()
- call b:NERDTreeRoot.putCursorHere(0, 0)
-endfunction
-
-" FUNCTION: s:chRootCwd() {{{2
-" changes the current root to CWD
-function! nerdtree#chRootCwd()
- try
- let cwd = g:NERDTreePath.New(getcwd())
- catch /^NERDTree.InvalidArgumentsError/
- call nerdtree#echo("current directory does not exist.")
- return
- endtry
- if cwd.str() == g:NERDTreeFileNode.GetRootForTab().path.str()
- return
- endif
- call nerdtree#chRoot(g:NERDTreeDirNode.New(cwd))
-endfunction
-
-" FUNCTION: nerdtree#clearBookmarks(bookmarks) {{{2
-function! nerdtree#clearBookmarks(bookmarks)
- if a:bookmarks ==# ''
- let currentNode = g:NERDTreeFileNode.GetSelected()
- if currentNode != {}
- call currentNode.clearBookmarks()
- endif
- else
- for name in split(a:bookmarks, ' ')
- let bookmark = g:NERDTreeBookmark.BookmarkFor(name)
- call bookmark.delete()
- endfor
- endif
- call nerdtree#renderView()
-endfunction
-
-" FUNCTION: s:closeChildren(node) {{{2
-" closes all childnodes of the current node
-function! s:closeChildren(node)
- call a:node.closeChildren()
- call nerdtree#renderView()
- call a:node.putCursorHere(0, 0)
-endfunction
-
-" FUNCTION: s:closeCurrentDir(node) {{{2
-" closes the parent dir of the current node
-function! s:closeCurrentDir(node)
- let parent = a:node.parent
- if parent ==# {} || parent.isRoot()
- call nerdtree#echo("cannot close tree root")
- else
- call a:node.parent.close()
- call nerdtree#renderView()
- call a:node.parent.putCursorHere(0, 0)
- endif
-endfunction
-
-" FUNCTION: s:closeTreeWindow() {{{2
-" close the tree window
-function! s:closeTreeWindow()
- if b:NERDTreeType ==# "secondary" && b:NERDTreePreviousBuf != -1
- exec "buffer " . b:NERDTreePreviousBuf
- else
- if winnr("$") > 1
- call nerdtree#closeTree()
- else
- call nerdtree#echo("Cannot close last window")
- endif
- endif
-endfunction
-
-" FUNCTION: s:deleteBookmark(bm) {{{2
-" if the cursor is on a bookmark, prompt to delete
-function! s:deleteBookmark(bm)
- echo "Are you sure you wish to delete the bookmark:\n\"" . a:bm.name . "\" (yN):"
-
- if nr2char(getchar()) ==# 'y'
- try
- call a:bm.delete()
- call nerdtree#renderView()
- redraw
- catch /^NERDTree/
- call nerdtree#echoWarning("Could not remove bookmark")
- endtry
- else
- call nerdtree#echo("delete aborted" )
- endif
-
-endfunction
-
-" FUNCTION: s:displayHelp() {{{2
-" toggles the help display
-function! s:displayHelp()
- let b:treeShowHelp = b:treeShowHelp ? 0 : 1
- call nerdtree#renderView()
- call nerdtree#centerView()
-endfunction
-
-"FUNCTION: s:handleLeftClick() {{{2
-"Checks if the click should open the current node
-function! s:handleLeftClick()
- let currentNode = g:NERDTreeFileNode.GetSelected()
- if currentNode != {}
-
- "the dir arrows are multibyte chars, and vim's string functions only
- "deal with single bytes - so split the line up with the hack below and
- "take the line substring manually
- let line = split(getline(line(".")), '\zs')
- let startToCur = ""
- for i in range(0,len(line)-1)
- let startToCur .= line[i]
- endfor
-
- if currentNode.path.isDirectory
- if startToCur =~# nerdtree#treeMarkupReg() && startToCur =~# '[+~▾▸] \?$'
- call currentNode.activate()
- return
- endif
- endif
-
- if (g:NERDTreeMouseMode ==# 2 && currentNode.path.isDirectory) || g:NERDTreeMouseMode ==# 3
- let char = strpart(startToCur, strlen(startToCur)-1, 1)
- if char !~# nerdtree#treeMarkupReg()
- if currentNode.path.isDirectory
- call currentNode.activate()
- else
- call currentNode.activate({'reuse': 1, 'where': 'p'})
- endif
- return
- endif
- endif
- endif
-endfunction
-
-" FUNCTION: s:handleMiddleMouse() {{{2
-function! s:handleMiddleMouse()
- let curNode = g:NERDTreeFileNode.GetSelected()
- if curNode ==# {}
- call nerdtree#echo("Put the cursor on a node first" )
- return
- endif
-
- if curNode.path.isDirectory
- call nerdtree#openExplorer(curNode)
- else
- call curNode.open({'where': 'h'})
- endif
-endfunction
-
-" FUNCTION: s:jumpToFirstChild() {{{2
-" wrapper for the jump to child method
-function! s:jumpToFirstChild(node)
- call nerdtree#jumpToChild(a:node, 0)
-endfunction
-
-" FUNCTION: s:jumpToLastChild() {{{2
-" wrapper for the jump to child method
-function! s:jumpToLastChild(node)
- call nerdtree#jumpToChild(a:node, 1)
-endfunction
-
-" FUNCTION: s:jumpToParent(node) {{{2
-" moves the cursor to the parent of the current node
-function! s:jumpToParent(node)
- if !empty(a:node.parent)
- call a:node.parent.putCursorHere(1, 0)
- call nerdtree#centerView()
- else
- call nerdtree#echo("cannot jump to parent")
- endif
-endfunction
-
-" FUNCTION: s:jumpToRoot() {{{2
-" moves the cursor to the root node
-function! s:jumpToRoot()
- call b:NERDTreeRoot.putCursorHere(1, 0)
- call nerdtree#centerView()
-endfunction
-
-" FUNCTION: s:jumpToNextSibling(node) {{{2
-function! s:jumpToNextSibling(node)
- call nerdtree#jumpToSibling(a:node, 1)
-endfunction
-
-" FUNCTION: s:jumpToPrevSibling(node) {{{2
-function! s:jumpToPrevSibling(node)
- call nerdtree#jumpToSibling(a:node, 0)
-endfunction
-
-" FUNCTION: nerdtree#openBookmark(name) {{{2
-" put the cursor on the given bookmark and, if its a file, open it
-function! nerdtree#openBookmark(name)
- try
- let targetNode = g:NERDTreeBookmark.GetNodeForName(a:name, 0)
- call targetNode.putCursorHere(0, 1)
- redraw!
- catch /^NERDTree.BookmarkedNodeNotFoundError/
- call nerdtree#echo("note - target node is not cached")
- let bookmark = g:NERDTreeBookmark.BookmarkFor(a:name)
- let targetNode = g:NERDTreeFileNode.New(bookmark.path)
- endtry
- if targetNode.path.isDirectory
- call targetNode.openExplorer()
- else
- call targetNode.open({'where': 'p'})
- endif
-endfunction
-
-" FUNCTION: s:openHSplit(target) {{{2
-function! s:openHSplit(target)
- call a:target.activate({'where': 'h'})
-endfunction
-
-" FUNCTION: s:openVSplit(target) {{{2
-function! s:openVSplit(target)
- call a:target.activate({'where': 'v'})
-endfunction
-
-" FUNCTION: s:openExplorer(node) {{{2
-function! s:openExplorer(node)
- call a:node.openExplorer()
-endfunction
-
-" FUNCTION: s:openInNewTab(target) {{{2
-function! s:openInNewTab(target)
- call a:target.activate({'where': 't'})
-endfunction
-
-" FUNCTION: s:openInNewTabSilent(target) {{{2
-function! s:openInNewTabSilent(target)
- call a:target.activate({'where': 't', 'stay': 1})
-endfunction
-
-" FUNCTION: s:openNodeRecursively(node) {{{2
-function! s:openNodeRecursively(node)
- call nerdtree#echo("Recursively opening node. Please wait...")
- call a:node.openRecursively()
- call nerdtree#renderView()
- redraw
- call nerdtree#echo("Recursively opening node. Please wait... DONE")
-endfunction
-
-"FUNCTION: s:previewNodeCurrent(node) {{{2
-function! s:previewNodeCurrent(node)
- call a:node.open({'stay': 1, 'where': 'p', 'keepopen': 1})
-endfunction
-
-"FUNCTION: s:previewNodeHSplit(node) {{{2
-function! s:previewNodeHSplit(node)
- call a:node.open({'stay': 1, 'where': 'h', 'keepopen': 1})
-endfunction
-
-"FUNCTION: s:previewNodeVSplit(node) {{{2
-function! s:previewNodeVSplit(node)
- call a:node.open({'stay': 1, 'where': 'v', 'keepopen': 1})
-endfunction
-
-" FUNCTION: nerdtree#revealBookmark(name) {{{2
-" put the cursor on the node associate with the given name
-function! nerdtree#revealBookmark(name)
- try
- let targetNode = g:NERDTreeBookmark.GetNodeForName(a:name, 0)
- call targetNode.putCursorHere(0, 1)
- catch /^NERDTree.BookmarkNotFoundError/
- call nerdtree#echo("Bookmark isnt cached under the current root")
- endtry
-endfunction
-
-" FUNCTION: s:refreshRoot() {{{2
-" Reloads the current root. All nodes below this will be lost and the root dir
-" will be reloaded.
-function! s:refreshRoot()
- call nerdtree#echo("Refreshing the root node. This could take a while...")
- call b:NERDTreeRoot.refresh()
- call nerdtree#renderView()
- redraw
- call nerdtree#echo("Refreshing the root node. This could take a while... DONE")
-endfunction
-
-" FUNCTION: s:refreshCurrent(node) {{{2
-" refreshes the root for the current node
-function! s:refreshCurrent(node)
- let node = a:node
- if !node.path.isDirectory
- let node = node.parent
- endif
-
- call nerdtree#echo("Refreshing node. This could take a while...")
- call node.refresh()
- call nerdtree#renderView()
- redraw
- call nerdtree#echo("Refreshing node. This could take a while... DONE")
-endfunction
-
-" FUNCTION: s:showMenu(node) {{{2
-function! s:showMenu(node)
- let mc = g:NERDTreeMenuController.New(g:NERDTreeMenuItem.AllEnabled())
- call mc.showMenu()
-endfunction
-
-" FUNCTION: s:toggleIgnoreFilter() {{{2
-" toggles the use of the NERDTreeIgnore option
-function! s:toggleIgnoreFilter()
- let b:NERDTreeIgnoreEnabled = !b:NERDTreeIgnoreEnabled
- call nerdtree#renderViewSavingPosition()
- call nerdtree#centerView()
-endfunction
-
-" FUNCTION: s:toggleShowBookmarks() {{{2
-" toggles the display of bookmarks
-function! s:toggleShowBookmarks()
- let b:NERDTreeShowBookmarks = !b:NERDTreeShowBookmarks
- if b:NERDTreeShowBookmarks
- call nerdtree#renderView()
- call nerdtree#putCursorOnBookmarkTable()
- else
- call nerdtree#renderViewSavingPosition()
- endif
- call nerdtree#centerView()
-endfunction
-
-" FUNCTION: s:toggleShowFiles() {{{2
-" toggles the display of hidden files
-function! s:toggleShowFiles()
- let b:NERDTreeShowFiles = !b:NERDTreeShowFiles
- call nerdtree#renderViewSavingPosition()
- call nerdtree#centerView()
-endfunction
-
-" FUNCTION: s:toggleShowHidden() {{{2
-" toggles the display of hidden files
-function! s:toggleShowHidden()
- let b:NERDTreeShowHidden = !b:NERDTreeShowHidden
- call nerdtree#renderViewSavingPosition()
- call nerdtree#centerView()
-endfunction
-
-" FUNCTION: s:toggleZoom() {{{2
-" zoom (maximize/minimize) the NERDTree window
-function! s:toggleZoom()
- if exists("b:NERDTreeZoomed") && b:NERDTreeZoomed
- let size = exists("b:NERDTreeOldWindowSize") ? b:NERDTreeOldWindowSize : g:NERDTreeWinSize
- exec "silent vertical resize ". size
- let b:NERDTreeZoomed = 0
- else
- exec "vertical resize"
- let b:NERDTreeZoomed = 1
- endif
-endfunction
-
-" FUNCTION: s:upDirCurrentRootOpen() {{{2
-function! s:upDirCurrentRootOpen()
- call nerdtree#upDir(1)
-endfunction
-
-" FUNCTION: s:upDirCurrentRootClosed() {{{2
-function! s:upDirCurrentRootClosed()
- call nerdtree#upDir(0)
-endfunction
-
-" vim: set sw=4 sts=4 et fdm=marker:
diff --git a/vim/bundle/nerdtree/doc/NERD_tree.txt b/vim/bundle/nerdtree/doc/NERD_tree.txt
deleted file mode 100644
index bf03896..0000000
--- a/vim/bundle/nerdtree/doc/NERD_tree.txt
+++ /dev/null
@@ -1,1362 +0,0 @@
-*NERD_tree.txt* A tree explorer plugin that owns your momma!
-
-
-
- omg its ... ~
-
- ________ ________ _ ____________ ____ __________ ____________~
- /_ __/ / / / ____/ / | / / ____/ __ \/ __ \ /_ __/ __ \/ ____/ ____/~
- / / / /_/ / __/ / |/ / __/ / /_/ / / / / / / / /_/ / __/ / __/ ~
- / / / __ / /___ / /| / /___/ _, _/ /_/ / / / / _, _/ /___/ /___ ~
- /_/ /_/ /_/_____/ /_/ |_/_____/_/ |_/_____/ /_/ /_/ |_/_____/_____/ ~
-
-
- Reference Manual~
-
-
-
-
-==============================================================================
-CONTENTS *NERDTree-contents*
-
- 1.Intro...................................|NERDTree|
- 2.Functionality provided..................|NERDTreeFunctionality|
- 2.1.Global commands...................|NERDTreeGlobalCommands|
- 2.2.Bookmarks.........................|NERDTreeBookmarks|
- 2.2.1.The bookmark table..........|NERDTreeBookmarkTable|
- 2.2.2.Bookmark commands...........|NERDTreeBookmarkCommands|
- 2.2.3.Invalid bookmarks...........|NERDTreeInvalidBookmarks|
- 2.3.NERD tree mappings................|NERDTreeMappings|
- 2.4.The NERD tree menu................|NERDTreeMenu|
- 3.Options.................................|NERDTreeOptions|
- 3.1.Option summary....................|NERDTreeOptionSummary|
- 3.2.Option details....................|NERDTreeOptionDetails|
- 4.The NERD tree API.......................|NERDTreeAPI|
- 4.1.Key map API.......................|NERDTreeKeymapAPI|
- 4.2.Menu API..........................|NERDTreeMenuAPI|
- 5.About...................................|NERDTreeAbout|
- 6.Changelog...............................|NERDTreeChangelog|
- 7.Credits.................................|NERDTreeCredits|
- 8.License.................................|NERDTreeLicense|
-
-==============================================================================
-1. Intro *NERDTree*
-
-What is this "NERD tree"??
-
-The NERD tree allows you to explore your filesystem and to open files and
-directories. It presents the filesystem to you in the form of a tree which you
-manipulate with the keyboard and/or mouse. It also allows you to perform
-simple filesystem operations.
-
-The following features and functionality are provided by the NERD tree:
- * Files and directories are displayed in a hierarchical tree structure
- * Different highlighting is provided for the following types of nodes:
- * files
- * directories
- * sym-links
- * windows .lnk files
- * read-only files
- * executable files
- * Many (customisable) mappings are provided to manipulate the tree:
- * Mappings to open/close/explore directory nodes
- * Mappings to open files in new/existing windows/tabs
- * Mappings to change the current root of the tree
- * Mappings to navigate around the tree
- * ...
- * Directories and files can be bookmarked.
- * Most NERD tree navigation can also be done with the mouse
- * Filtering of tree content (can be toggled at runtime)
- * custom file filters to prevent e.g. vim backup files being displayed
- * optional displaying of hidden files (. files)
- * files can be "turned off" so that only directories are displayed
- * The position and size of the NERD tree window can be customised
- * The order in which the nodes in the tree are listed can be customised.
- * A model of your filesystem is created/maintained as you explore it. This
- has several advantages:
- * All filesystem information is cached and is only re-read on demand
- * If you revisit a part of the tree that you left earlier in your
- session, the directory nodes will be opened/closed as you left them
- * The script remembers the cursor position and window position in the NERD
- tree so you can toggle it off (or just close the tree window) and then
- reopen it (with NERDTreeToggle) the NERD tree window will appear exactly
- as you left it
- * You can have a separate NERD tree for each tab, share trees across tabs,
- or a mix of both.
- * By default the script overrides the default file browser (netrw), so if
- you :edit a directory a (slightly modified) NERD tree will appear in the
- current window
- * A programmable menu system is provided (simulates right clicking on a
- node)
- * one default menu plugin is provided to perform basic filesystem
- operations (create/delete/move/copy files/directories)
- * There's an API for adding your own keymappings
-
-
-==============================================================================
-2. Functionality provided *NERDTreeFunctionality*
-
-------------------------------------------------------------------------------
-2.1. Global Commands *NERDTreeGlobalCommands*
-
-:NERDTree [ | ] *:NERDTree*
- Opens a fresh NERD tree. The root of the tree depends on the argument
- given. There are 3 cases: If no argument is given, the current directory
- will be used. If a directory is given, that will be used. If a bookmark
- name is given, the corresponding directory will be used. For example: >
- :NERDTree /home/marty/vim7/src
- :NERDTree foo (foo is the name of a bookmark)
-<
-:NERDTreeFromBookmark *:NERDTreeFromBookmark*
- Opens a fresh NERD tree with the root initialized to the dir for
- . This only reason to use this command over :NERDTree is for
- the completion (which is for bookmarks rather than directories).
-
-:NERDTreeToggle [ | ] *:NERDTreeToggle*
- If a NERD tree already exists for this tab, it is reopened and rendered
- again. If no NERD tree exists for this tab then this command acts the
- same as the |:NERDTree| command.
-
-:NERDTreeMirror *:NERDTreeMirror*
- Shares an existing NERD tree, from another tab, in the current tab.
- Changes made to one tree are reflected in both as they are actually the
- same buffer.
-
- If only one other NERD tree exists, that tree is automatically mirrored. If
- more than one exists, the script will ask which tree to mirror.
-
-:NERDTreeClose *:NERDTreeClose*
- Close the NERD tree in this tab.
-
-:NERDTreeFind *:NERDTreeFind*
- Find the current file in the tree.
-
- If not tree exists and the current file is under vim's CWD, then init a
- tree at the CWD and reveal the file. Otherwise init a tree in the current
- file's directory.
-
- In any case, the current file is revealed and the cursor is placed on it.
-
-:NERDTreeCWD *:NERDTreeCWD*
- Change tree root to current directory. If no NERD tree exists for this
- tab, a new tree will be opened.
-
-------------------------------------------------------------------------------
-2.2. Bookmarks *NERDTreeBookmarks*
-
-Bookmarks in the NERD tree are a way to tag files or directories of interest.
-For example, you could use bookmarks to tag all of your project directories.
-
-------------------------------------------------------------------------------
-2.2.1. The Bookmark Table *NERDTreeBookmarkTable*
-
-If the bookmark table is active (see |NERDTree-B| and
-|'NERDTreeShowBookmarks'|), it will be rendered above the tree. You can double
-click bookmarks or use the |NERDTree-o| mapping to activate them. See also,
-|NERDTree-t| and |NERDTree-T|
-
-------------------------------------------------------------------------------
-2.2.2. Bookmark commands *NERDTreeBookmarkCommands*
-
-Note that the following commands are only available in the NERD tree buffer.
-
-:Bookmark
- Bookmark the current node as . If there is already a
- bookmark, it is overwritten. must not contain spaces.
- If is not provided, it defaults to the file or directory name.
- For directories, a trailing slash is present.
-
-:BookmarkToRoot
- Make the directory corresponding to the new root. If a treenode
- corresponding to is already cached somewhere in the tree then
- the current tree will be used, otherwise a fresh tree will be opened.
- Note that if points to a file then its parent will be used
- instead.
-
-:RevealBookmark
- If the node is cached under the current root then it will be revealed
- (i.e. directory nodes above it will be opened) and the cursor will be
- placed on it.
-
-:OpenBookmark
- must point to a file. The file is opened as though |NERDTree-o|
- was applied. If the node is cached under the current root then it will be
- revealed and the cursor will be placed on it.
-
-:ClearBookmarks []
- Remove all the given bookmarks. If no bookmarks are given then remove all
- bookmarks on the current node.
-
-:ClearAllBookmarks
- Remove all bookmarks.
-
-:ReadBookmarks
- Re-read the bookmarks in the |'NERDTreeBookmarksFile'|.
-
-See also |:NERDTree| and |:NERDTreeFromBookmark|.
-
-------------------------------------------------------------------------------
-2.2.3. Invalid Bookmarks *NERDTreeInvalidBookmarks*
-
-If invalid bookmarks are detected, the script will issue an error message and
-the invalid bookmarks will become unavailable for use.
-
-These bookmarks will still be stored in the bookmarks file (see
-|'NERDTreeBookmarksFile'|), down the bottom. There will always be a blank line
-after the valid bookmarks but before the invalid ones.
-
-Each line in the bookmarks file represents one bookmark. The proper format is:
-
-
-After you have corrected any invalid bookmarks, either restart vim, or go
-:ReadBookmarks from the NERD tree window.
-
-------------------------------------------------------------------------------
-2.3. NERD tree Mappings *NERDTreeMappings*
-
-Default Description~ help-tag~
-Key~
-
-o.......Open files, directories and bookmarks....................|NERDTree-o|
-go......Open selected file, but leave cursor in the NERDTree.....|NERDTree-go|
-t.......Open selected node/bookmark in a new tab.................|NERDTree-t|
-T.......Same as 't' but keep the focus on the current tab........|NERDTree-T|
-i.......Open selected file in a split window.....................|NERDTree-i|
-gi......Same as i, but leave the cursor on the NERDTree..........|NERDTree-gi|
-s.......Open selected file in a new vsplit.......................|NERDTree-s|
-gs......Same as s, but leave the cursor on the NERDTree..........|NERDTree-gs|
-O.......Recursively open the selected directory..................|NERDTree-O|
-x.......Close the current nodes parent...........................|NERDTree-x|
-X.......Recursively close all children of the current node.......|NERDTree-X|
-e.......Edit the current dir.....................................|NERDTree-e|
-
-...............same as |NERDTree-o|.
-double-click.......same as the |NERDTree-o| map.
-middle-click.......same as |NERDTree-i| for files, same as
- |NERDTree-e| for dirs.
-
-D.......Delete the current bookmark .............................|NERDTree-D|
-
-P.......Jump to the root node....................................|NERDTree-P|
-p.......Jump to current nodes parent.............................|NERDTree-p|
-K.......Jump up inside directories at the current tree depth.....|NERDTree-K|
-J.......Jump down inside directories at the current tree depth...|NERDTree-J|
-...Jump down to the next sibling of the current directory...|NERDTree-C-J|
-...Jump up to the previous sibling of the current directory.|NERDTree-C-K|
-
-C.......Change the tree root to the selected dir.................|NERDTree-C|
-u.......Move the tree root up one directory......................|NERDTree-u|
-U.......Same as 'u' except the old root node is left open........|NERDTree-U|
-r.......Recursively refresh the current directory................|NERDTree-r|
-R.......Recursively refresh the current root.....................|NERDTree-R|
-m.......Display the NERD tree menu...............................|NERDTree-m|
-cd......Change the CWD to the dir of the selected node...........|NERDTree-cd|
-CD......Change tree root to the CWD..............................|NERDTree-CD|
-
-I.......Toggle whether hidden files displayed....................|NERDTree-I|
-f.......Toggle whether the file filters are used.................|NERDTree-f|
-F.......Toggle whether files are displayed.......................|NERDTree-F|
-B.......Toggle whether the bookmark table is displayed...........|NERDTree-B|
-
-q.......Close the NERDTree window................................|NERDTree-q|
-A.......Zoom (maximize/minimize) the NERDTree window.............|NERDTree-A|
-?.......Toggle the display of the quick help.....................|NERDTree-?|
-
-------------------------------------------------------------------------------
- *NERDTree-o*
-Default key: o
-Map option: NERDTreeMapActivateNode
-Applies to: files and directories.
-
-If a file node is selected, it is opened in the previous window.
-
-If a directory is selected it is opened or closed depending on its current
-state.
-
-If a bookmark that links to a directory is selected then that directory
-becomes the new root.
-
-If a bookmark that links to a file is selected then that file is opened in the
-previous window.
-
-------------------------------------------------------------------------------
- *NERDTree-go*
-Default key: go
-Map option: None
-Applies to: files.
-
-If a file node is selected, it is opened in the previous window, but the
-cursor does not move.
-
-The key combo for this mapping is always "g" + NERDTreeMapActivateNode (see
-|NERDTree-o|).
-
-------------------------------------------------------------------------------
- *NERDTree-t*
-Default key: t
-Map option: NERDTreeMapOpenInTab
-Applies to: files and directories.
-
-Opens the selected file in a new tab. If a directory is selected, a fresh
-NERD Tree for that directory is opened in a new tab.
-
-If a bookmark which points to a directory is selected, open a NERD tree for
-that directory in a new tab. If the bookmark points to a file, open that file
-in a new tab.
-
-------------------------------------------------------------------------------
- *NERDTree-T*
-Default key: T
-Map option: NERDTreeMapOpenInTabSilent
-Applies to: files and directories.
-
-The same as |NERDTree-t| except that the focus is kept in the current tab.
-
-------------------------------------------------------------------------------
- *NERDTree-i*
-Default key: i
-Map option: NERDTreeMapOpenSplit
-Applies to: files.
-
-Opens the selected file in a new split window and puts the cursor in the new
-window.
-
-------------------------------------------------------------------------------
- *NERDTree-gi*
-Default key: gi
-Map option: None
-Applies to: files.
-
-The same as |NERDTree-i| except that the cursor is not moved.
-
-The key combo for this mapping is always "g" + NERDTreeMapOpenSplit (see
-|NERDTree-i|).
-
-------------------------------------------------------------------------------
- *NERDTree-s*
-Default key: s
-Map option: NERDTreeMapOpenVSplit
-Applies to: files.
-
-Opens the selected file in a new vertically split window and puts the cursor in
-the new window.
-
-------------------------------------------------------------------------------
- *NERDTree-gs*
-Default key: gs
-Map option: None
-Applies to: files.
-
-The same as |NERDTree-s| except that the cursor is not moved.
-
-The key combo for this mapping is always "g" + NERDTreeMapOpenVSplit (see
-|NERDTree-s|).
-
-------------------------------------------------------------------------------
- *NERDTree-O*
-Default key: O
-Map option: NERDTreeMapOpenRecursively
-Applies to: directories.
-
-Recursively opens the selelected directory.
-
-All files and directories are cached, but if a directory would not be
-displayed due to file filters (see |'NERDTreeIgnore'| |NERDTree-f|) or the
-hidden file filter (see |'NERDTreeShowHidden'|) then its contents are not
-cached. This is handy, especially if you have .svn directories.
-
-------------------------------------------------------------------------------
- *NERDTree-x*
-Default key: x
-Map option: NERDTreeMapCloseDir
-Applies to: files and directories.
-
-Closes the parent of the selected node.
-
-------------------------------------------------------------------------------
- *NERDTree-X*
-Default key: X
-Map option: NERDTreeMapCloseChildren
-Applies to: directories.
-
-Recursively closes all children of the selected directory.
-
-Tip: To quickly "reset" the tree, use |NERDTree-P| with this mapping.
-
-------------------------------------------------------------------------------
- *NERDTree-e*
-Default key: e
-Map option: NERDTreeMapOpenExpl
-Applies to: files and directories.
-
-|:edit|s the selected directory, or the selected file's directory. This could
-result in a NERD tree or a netrw being opened, depending on
-|'NERDTreeHijackNetrw'|.
-
-------------------------------------------------------------------------------
- *NERDTree-D*
-Default key: D
-Map option: NERDTreeMapDeleteBookmark
-Applies to: lines in the bookmarks table
-
-Deletes the currently selected bookmark.
-
-------------------------------------------------------------------------------
- *NERDTree-P*
-Default key: P
-Map option: NERDTreeMapJumpRoot
-Applies to: no restrictions.
-
-Jump to the tree root.
-
-------------------------------------------------------------------------------
- *NERDTree-p*
-Default key: p
-Map option: NERDTreeMapJumpParent
-Applies to: files and directories.
-
-Jump to the parent node of the selected node.
-
-------------------------------------------------------------------------------
- *NERDTree-K*
-Default key: K
-Map option: NERDTreeMapJumpFirstChild
-Applies to: files and directories.
-
-Jump to the first child of the current nodes parent.
-
-If the cursor is already on the first node then do the following:
- * loop back thru the siblings of the current nodes parent until we find an
- open dir with children
- * go to the first child of that node
-
-------------------------------------------------------------------------------
- *NERDTree-J*
-Default key: J
-Map option: NERDTreeMapJumpLastChild
-Applies to: files and directories.
-
-Jump to the last child of the current nodes parent.
-
-If the cursor is already on the last node then do the following:
- * loop forward thru the siblings of the current nodes parent until we find
- an open dir with children
- * go to the last child of that node
-
-------------------------------------------------------------------------------
- *NERDTree-C-J*
-Default key:
-Map option: NERDTreeMapJumpNextSibling
-Applies to: files and directories.
-
-Jump to the next sibling of the selected node.
-
-------------------------------------------------------------------------------
- *NERDTree-C-K*
-Default key:
-Map option: NERDTreeMapJumpPrevSibling
-Applies to: files and directories.
-
-Jump to the previous sibling of the selected node.
-
-------------------------------------------------------------------------------
- *NERDTree-C*
-Default key: C
-Map option: NERDTreeMapChdir
-Applies to: directories.
-
-Make the selected directory node the new tree root. If a file is selected, its
-parent is used.
-
-------------------------------------------------------------------------------
- *NERDTree-u*
-Default key: u
-Map option: NERDTreeMapUpdir
-Applies to: no restrictions.
-
-Move the tree root up a dir (like doing a "cd ..").
-
-------------------------------------------------------------------------------
- *NERDTree-U*
-Default key: U
-Map option: NERDTreeMapUpdirKeepOpen
-Applies to: no restrictions.
-
-Like |NERDTree-u| except that the old tree root is kept open.
-
-------------------------------------------------------------------------------
- *NERDTree-r*
-Default key: r
-Map option: NERDTreeMapRefresh
-Applies to: files and directories.
-
-If a dir is selected, recursively refresh that dir, i.e. scan the filesystem
-for changes and represent them in the tree.
-
-If a file node is selected then the above is done on it's parent.
-
-------------------------------------------------------------------------------
- *NERDTree-R*
-Default key: R
-Map option: NERDTreeMapRefreshRoot
-Applies to: no restrictions.
-
-Recursively refresh the tree root.
-
-------------------------------------------------------------------------------
- *NERDTree-m*
-Default key: m
-Map option: NERDTreeMapMenu
-Applies to: files and directories.
-
-Display the NERD tree menu. See |NERDTreeMenu| for details.
-
-------------------------------------------------------------------------------
- *NERDTree-cd*
-Default key: cd
-Map option: NERDTreeMapChdir
-Applies to: files and directories.
-
-Change vims current working directory to that of the selected node.
-
-------------------------------------------------------------------------------
- *NERDTree-CD*
-Default key: CD
-Map option: NERDTreeMapCWD
-Applies to: no restrictions.
-
-Change tree root to vims current working directory.
-
-------------------------------------------------------------------------------
- *NERDTree-I*
-Default key: I
-Map option: NERDTreeMapToggleHidden
-Applies to: no restrictions.
-
-Toggles whether hidden files (i.e. "dot files") are displayed.
-
-------------------------------------------------------------------------------
- *NERDTree-f*
-Default key: f
-Map option: NERDTreeMapToggleFilters
-Applies to: no restrictions.
-
-Toggles whether file filters are used. See |'NERDTreeIgnore'| for details.
-
-------------------------------------------------------------------------------
- *NERDTree-F*
-Default key: F
-Map option: NERDTreeMapToggleFiles
-Applies to: no restrictions.
-
-Toggles whether file nodes are displayed.
-
-------------------------------------------------------------------------------
- *NERDTree-B*
-Default key: B
-Map option: NERDTreeMapToggleBookmarks
-Applies to: no restrictions.
-
-Toggles whether the bookmarks table is displayed.
-
-------------------------------------------------------------------------------
- *NERDTree-q*
-Default key: q
-Map option: NERDTreeMapQuit
-Applies to: no restrictions.
-
-Closes the NERDtree window.
-
-------------------------------------------------------------------------------
- *NERDTree-A*
-Default key: A
-Map option: NERDTreeMapToggleZoom
-Applies to: no restrictions.
-
-Maximize (zoom) and minimize the NERDtree window.
-
-------------------------------------------------------------------------------
- *NERDTree-?*
-Default key: ?
-Map option: NERDTreeMapHelp
-Applies to: no restrictions.
-
-Toggles whether the quickhelp is displayed.
-
-------------------------------------------------------------------------------
-2.3. The NERD tree menu *NERDTreeMenu*
-
-The NERD tree has a menu that can be programmed via the an API (see
-|NERDTreeMenuAPI|). The idea is to simulate the "right click" menus that most
-file explorers have.
-
-The script comes with two default menu plugins: exec_menuitem.vim and
-fs_menu.vim. fs_menu.vim adds some basic filesystem operations to the menu for
-creating/deleting/moving/copying files and dirs. exec_menuitem.vim provides a
-menu item to execute executable files.
-
-Related tags: |NERDTree-m| |NERDTreeApi|
-
-==============================================================================
-3. Customisation *NERDTreeOptions*
-
-
-------------------------------------------------------------------------------
-3.1. Customisation summary *NERDTreeOptionSummary*
-
-The script provides the following options that can customise the behaviour the
-NERD tree. These options should be set in your vimrc.
-
-|'loaded_nerd_tree'| Turns off the script.
-
-|'NERDChristmasTree'| Tells the NERD tree to make itself colourful
- and pretty.
-
-|'NERDTreeAutoCenter'| Controls whether the NERD tree window centers
- when the cursor moves within a specified
- distance to the top/bottom of the window.
-|'NERDTreeAutoCenterThreshold'| Controls the sensitivity of autocentering.
-
-|'NERDTreeCaseSensitiveSort'| Tells the NERD tree whether to be case
- sensitive or not when sorting nodes.
-
-|'NERDTreeChDirMode'| Tells the NERD tree if/when it should change
- vim's current working directory.
-
-|'NERDTreeHighlightCursorline'| Tell the NERD tree whether to highlight the
- current cursor line.
-
-|'NERDTreeHijackNetrw'| Tell the NERD tree whether to replace the netrw
- autocommands for exploring local directories.
-
-|'NERDTreeIgnore'| Tells the NERD tree which files to ignore.
-
-|'NERDTreeBookmarksFile'| Where the bookmarks are stored.
-
-|'NERDTreeMouseMode'| Tells the NERD tree how to handle mouse
- clicks.
-
-|'NERDTreeQuitOnOpen'| Closes the tree window after opening a file.
-
-|'NERDTreeShowBookmarks'| Tells the NERD tree whether to display the
- bookmarks table on startup.
-
-|'NERDTreeShowFiles'| Tells the NERD tree whether to display files
- in the tree on startup.
-
-|'NERDTreeShowHidden'| Tells the NERD tree whether to display hidden
- files on startup.
-
-|'NERDTreeShowLineNumbers'| Tells the NERD tree whether to display line
- numbers in the tree window.
-
-|'NERDTreeSortOrder'| Tell the NERD tree how to sort the nodes in
- the tree.
-
-|'NERDTreeStatusline'| Set a statusline for NERD tree windows.
-
-|'NERDTreeWinPos'| Tells the script where to put the NERD tree
- window.
-
-|'NERDTreeWinSize'| Sets the window size when the NERD tree is
- opened.
-
-|'NERDTreeMinimalUI'| Disables display of the 'Bookmarks' label and
- 'Press ? for help' text.
-
-|'NERDTreeDirArrows'| Tells the NERD tree to use arrows instead of
- + ~ chars when displaying directories.
-
-|'NERDTreeCasadeOpenSingleChildDir'|
- Casade open while selected directory has only
- one child that also is a directory.
-
-|'NERDTreeAutoDeleteBuffer'| Tells the NERD tree to automatically remove
- a buffer when a file is being deleted or renamed
- via a context menu command.
-
-------------------------------------------------------------------------------
-3.2. Customisation details *NERDTreeOptionDetails*
-
-To enable any of the below options you should put the given line in your
-~/.vimrc
-
- *'loaded_nerd_tree'*
-If this plugin is making you feel homicidal, it may be a good idea to turn it
-off with this line in your vimrc: >
- let loaded_nerd_tree=1
-<
-------------------------------------------------------------------------------
- *'NERDChristmasTree'*
-Values: 0 or 1.
-Default: 1.
-
-If this option is set to 1 then some extra syntax highlighting elements are
-added to the nerd tree to make it more colourful.
-
-Set it to 0 for a more vanilla looking tree.
-
-------------------------------------------------------------------------------
- *'NERDTreeAutoCenter'*
-Values: 0 or 1.
-Default: 1
-
-If set to 1, the NERD tree window will center around the cursor if it moves to
-within |'NERDTreeAutoCenterThreshold'| lines of the top/bottom of the window.
-
-This is ONLY done in response to tree navigation mappings,
-i.e. |NERDTree-J| |NERDTree-K| |NERDTree-C-J| |NERDTree-C-K| |NERDTree-p|
-|NERDTree-P|
-
-The centering is done with a |zz| operation.
-
-------------------------------------------------------------------------------
- *'NERDTreeAutoCenterThreshold'*
-Values: Any natural number.
-Default: 3
-
-This option controls the "sensitivity" of the NERD tree auto centering. See
-|'NERDTreeAutoCenter'| for details.
-
-------------------------------------------------------------------------------
- *'NERDTreeCaseSensitiveSort'*
-Values: 0 or 1.
-Default: 0.
-
-By default the NERD tree does not sort nodes case sensitively, i.e. nodes
-could appear like this: >
- bar.c
- Baz.c
- blarg.c
- boner.c
- Foo.c
-<
-But, if you set this option to 1 then the case of the nodes will be taken into
-account. The above nodes would then be sorted like this: >
- Baz.c
- Foo.c
- bar.c
- blarg.c
- boner.c
-<
-------------------------------------------------------------------------------
- *'NERDTreeChDirMode'*
-
-Values: 0, 1 or 2.
-Default: 0.
-
-Use this option to tell the script when (if at all) to change the current
-working directory (CWD) for vim.
-
-If it is set to 0 then the CWD is never changed by the NERD tree.
-
-If set to 1 then the CWD is changed when the NERD tree is first loaded to the
-directory it is initialized in. For example, if you start the NERD tree with >
- :NERDTree /home/marty/foobar
-<
-then the CWD will be changed to /home/marty/foobar and will not be changed
-again unless you init another NERD tree with a similar command.
-
-If the option is set to 2 then it behaves the same as if set to 1 except that
-the CWD is changed whenever the tree root is changed. For example, if the CWD
-is /home/marty/foobar and you make the node for /home/marty/foobar/baz the new
-root then the CWD will become /home/marty/foobar/baz.
-
-------------------------------------------------------------------------------
- *'NERDTreeHighlightCursorline'*
-Values: 0 or 1.
-Default: 1.
-
-If set to 1, the current cursor line in the NERD tree buffer will be
-highlighted. This is done using the |'cursorline'| option.
-
-------------------------------------------------------------------------------
- *'NERDTreeHijackNetrw'*
-Values: 0 or 1.
-Default: 1.
-
-If set to 1, doing a >
- :edit
-<
-will open up a "secondary" NERD tree instead of a netrw in the target window.
-
-Secondary NERD trees behaves slightly different from a regular trees in the
-following respects:
- 1. 'o' will open the selected file in the same window as the tree,
- replacing it.
- 2. you can have as many secondary tree as you want in the same tab.
-
-------------------------------------------------------------------------------
- *'NERDTreeIgnore'*
-Values: a list of regular expressions.
-Default: ['\~$'].
-
-This option is used to specify which files the NERD tree should ignore. It
-must be a list of regular expressions. When the NERD tree is rendered, any
-files/dirs that match any of the regex's in 'NERDTreeIgnore' wont be
-displayed.
-
-For example if you put the following line in your vimrc: >
- let NERDTreeIgnore=['\.vim$', '\~$']
-<
-then all files ending in .vim or ~ will be ignored.
-
-There are 2 magic flags that can be appended to the end of each regular
-expression to specify that the regex should match only files or only dirs.
-These flags are "[[dir]]" and "[[file]]". Example: >
- let NERDTreeIgnore=['.d$[[dir]]', '.o$[[file]]']
-<
-This will cause all dirs ending in ".d" to be ignored and all files ending in
-".o" to be ignored.
-
-Note: to tell the NERD tree not to ignore any files you must use the following
-line: >
- let NERDTreeIgnore=[]
-<
-
-The file filters can be turned on and off dynamically with the |NERDTree-f|
-mapping.
-
-------------------------------------------------------------------------------
- *'NERDTreeBookmarksFile'*
-Values: a path
-Default: $HOME/.NERDTreeBookmarks
-
-This is where bookmarks are saved. See |NERDTreeBookmarkCommands|.
-
-------------------------------------------------------------------------------
- *'NERDTreeMouseMode'*
-Values: 1, 2 or 3.
-Default: 1.
-
-If set to 1 then a double click on a node is required to open it.
-If set to 2 then a single click will open directory nodes, while a double
-click will still be required for file nodes.
-If set to 3 then a single click will open any node.
-
-Note: a double click anywhere on a line that a tree node is on will
-activate it, but all single-click activations must be done on name of the node
-itself. For example, if you have the following node: >
- | | |-application.rb
-<
-then (to single click activate it) you must click somewhere in
-'application.rb'.
-
-------------------------------------------------------------------------------
- *'NERDTreeQuitOnOpen'*
-
-Values: 0 or 1.
-Default: 0
-
-If set to 1, the NERD tree window will close after opening a file with the
-|NERDTree-o|, |NERDTree-i|, |NERDTree-t| and |NERDTree-T| mappings.
-
-------------------------------------------------------------------------------
- *'NERDTreeShowBookmarks'*
-Values: 0 or 1.
-Default: 0.
-
-If this option is set to 1 then the bookmarks table will be displayed.
-
-This option can be toggled dynamically, per tree, with the |NERDTree-B|
-mapping.
-
-------------------------------------------------------------------------------
- *'NERDTreeShowFiles'*
-Values: 0 or 1.
-Default: 1.
-
-If this option is set to 1 then files are displayed in the NERD tree. If it is
-set to 0 then only directories are displayed.
-
-This option can be toggled dynamically, per tree, with the |NERDTree-F|
-mapping and is useful for drastically shrinking the tree when you are
-navigating to a different part of the tree.
-
-------------------------------------------------------------------------------
- *'NERDTreeShowHidden'*
-Values: 0 or 1.
-Default: 0.
-
-This option tells vim whether to display hidden files by default. This option
-can be dynamically toggled, per tree, with the |NERDTree-I| mapping. Use one
-of the follow lines to set this option: >
- let NERDTreeShowHidden=0
- let NERDTreeShowHidden=1
-<
-
-------------------------------------------------------------------------------
- *'NERDTreeShowLineNumbers'*
-Values: 0 or 1.
-Default: 0.
-
-This option tells vim whether to display line numbers for the NERD tree
-window. Use one of the follow lines to set this option: >
- let NERDTreeShowLineNumbers=0
- let NERDTreeShowLineNumbers=1
-<
-
-------------------------------------------------------------------------------
- *'NERDTreeSortOrder'*
-Values: a list of regular expressions.
-Default: ['\/$', '*', '\.swp$', '\.bak$', '\~$']
-
-This option is set to a list of regular expressions which are used to
-specify the order of nodes under their parent.
-
-For example, if the option is set to: >
- ['\.vim$', '\.c$', '\.h$', '*', 'foobar']
-<
-then all .vim files will be placed at the top, followed by all .c files then
-all .h files. All files containing the string 'foobar' will be placed at the
-end. The star is a special flag: it tells the script that every node that
-doesnt match any of the other regexps should be placed here.
-
-If no star is present in 'NERDTreeSortOrder' then one is automatically
-appended to the array.
-
-The regex '\/$' should be used to match directory nodes.
-
-After this sorting is done, the files in each group are sorted alphabetically.
-
-Other examples: >
- (1) ['*', '\/$']
- (2) []
- (3) ['\/$', '\.rb$', '\.php$', '*', '\.swp$', '\.bak$', '\~$']
-<
-1. Directories will appear last, everything else will appear above.
-2. Everything will simply appear in alphabetical order.
-3. Dirs will appear first, then ruby and php. Swap files, bak files and vim
- backup files will appear last with everything else preceding them.
-
-------------------------------------------------------------------------------
- *'NERDTreeStatusline'*
-Values: Any valid statusline setting.
-Default: %{b:NERDTreeRoot.path.strForOS(0)}
-
-Tells the script what to use as the |'statusline'| setting for NERD tree
-windows.
-
-Note that the statusline is set using |:let-&| not |:set| so escaping spaces
-isn't necessary.
-
-Setting this option to -1 will will deactivate it so that your global
-statusline setting is used instead.
-
-------------------------------------------------------------------------------
- *'NERDTreeWinPos'*
-Values: "left" or "right"
-Default: "left".
-
-This option is used to determine where NERD tree window is placed on the
-screen.
-
-This option makes it possible to use two different explorer plugins
-simultaneously. For example, you could have the taglist plugin on the left of
-the window and the NERD tree on the right.
-
-------------------------------------------------------------------------------
- *'NERDTreeWinSize'*
-Values: a positive integer.
-Default: 31.
-
-This option is used to change the size of the NERD tree when it is loaded.
-
-------------------------------------------------------------------------------
- *'NERDTreeMinimalUI'*
-Values: 0 or 1
-Default: 0
-
-This options disables the 'Bookmarks' label 'Press ? for help' text. Use one
-of the following lines to set this option: >
- let NERDTreeMinimalUI=0
- let NERDTreeMinimalUI=1
-<
-
-------------------------------------------------------------------------------
- *'NERDTreeDirArrows'*
-Values: 0 or 1
-Default: 0.
-
-This option is used to change the default look of directory nodes displayed in
-the tree. When set to 0 it shows old-school bars (|), + and ~ chars. If set to
-1 it shows right and down arrows. Use one of the follow lines to set this
-option: >
- let NERDTreeDirArrows=0
- let NERDTreeDirArrows=1
-<
-
-------------------------------------------------------------------------------
- *'NERDTreeCasadeOpenSingleChildDir'*
-Values: 0 or 1
-Default: 1.
-
-When opening dir nodes, this option tells NERDTree to recursively open dirs
-that have only one child which is also a dir. NERDTree will stop when it finds
-a dir that contains anything but another single dir. This option may be useful
-for Java projects. Use one of the follow lines to set this option: >
- let NERDTreeCasadeOpenSingleChildDir=0
- let NERDTreeCasadeOpenSingleChildDir=1
-<
-
-------------------------------------------------------------------------------
- *'NERDTreeAutoDeleteBuffer'*
-Values: 0 or 1
-Default: 0.
-
-When using a context menu to delete or rename a file you may also want to delete
-the buffer which is no more valid. If the option is not set you will see a
-confirmation if you really want to delete an old buffer. If you always press 'y'
-then it worths to set this option to 1. Use one of the follow lines to set this
-option: >
- let NERDTreeAutoDeleteBuffer=0
- let NERDTreeAutoDeleteBuffer=1
-<
-
-==============================================================================
-4. The NERD tree API *NERDTreeAPI*
-
-The NERD tree script allows you to add custom key mappings and menu items via
-a set of API calls. Any scripts that use this API should be placed in
-~/.vim/nerdtree_plugin/ (*nix) or ~/vimfiles/nerdtree_plugin (windows).
-
-The script exposes some prototype objects that can be used to manipulate the
-tree and/or get information from it: >
- g:NERDTreePath
- g:NERDTreeDirNode
- g:NERDTreeFileNode
- g:NERDTreeBookmark
-<
-See the code/comments in NERD_tree.vim to find how to use these objects. The
-following code conventions are used:
- * class members start with a capital letter
- * instance members start with a lower case letter
- * private members start with an underscore
-
-See this blog post for more details:
- http://got-ravings.blogspot.com/2008/09/vim-pr0n-prototype-based-objects.html
-
-------------------------------------------------------------------------------
-4.1. Key map API *NERDTreeKeymapAPI*
-
-NERDTreeAddKeyMap({options}) *NERDTreeAddKeyMap()*
- Adds a new keymapping for all NERD tree buffers.
- {options} must be a dictionary, and must contain the following keys:
- "key" - the trigger key for the new mapping
- "callback" - the function the new mapping will be bound to
- "quickhelpText" - the text that will appear in the quickhelp (see
- |NERDTree-?|)
-
- Additionally, a "scope" argument may be supplied. This constrains the
- mapping so that it is only activated if the cursor is on a certain object.
- That object is then passed into the handling method. Possible values are:
- "FileNode" - a file node
- "DirNode" - a directory node
- "Node" - a file or directory node
- "Bookmark" - A bookmark
- "all" - the keymap is not constrained to any scope (default). When
- thei is used, the handling function is not passed any arguments.
-
-
- Example: >
- call NERDTreeAddKeyMap({
- \ 'key': 'foo',
- \ 'callback': 'NERDTreeCDHandler',
- \ 'quickhelpText': 'echo full path of current node' })
- \ 'scope': 'DirNode'
-
- function! NERDTreeCDHandler(dirnode)
- call a:dirnode.changeToDir()
- endfunction
-<
- This code should sit in a file like ~/.vim/nerdtree_plugin/mymapping.vim.
- It adds a (redundant) mapping on 'foo' which changes vim's CWD to that of
- the current dir node. Note this mapping will only fire when the cursor is
- on a directory node.
-
-------------------------------------------------------------------------------
-4.2. Menu API *NERDTreeMenuAPI*
-
-NERDTreeAddSubmenu({options}) *NERDTreeAddSubmenu()*
- Creates and returns a new submenu.
-
- {options} must be a dictionary and must contain the following keys:
- "text" - the text of the submenu that the user will see
- "shortcut" - a shortcut key for the submenu (need not be unique)
-
- The following keys are optional:
- "isActiveCallback" - a function that will be called to determine whether
- this submenu item will be displayed or not. The callback function must return
- 0 or 1.
- "parent" - the parent submenu of the new submenu (returned from a previous
- invocation of NERDTreeAddSubmenu()). If this key is left out then the new
- submenu will sit under the top level menu.
-
- See below for an example.
-
-NERDTreeAddMenuItem({options}) *NERDTreeAddMenuItem()*
- Adds a new menu item to the NERD tree menu (see |NERDTreeMenu|).
-
- {options} must be a dictionary and must contain the
- following keys:
- "text" - the text of the menu item which the user will see
- "shortcut" - a shortcut key for the menu item (need not be unique)
- "callback" - the function that will be called when the user activates the
- menu item.
-
- The following keys are optional:
- "isActiveCallback" - a function that will be called to determine whether
- this menu item will be displayed or not. The callback function must return
- 0 or 1.
- "parent" - if the menu item belongs under a submenu then this key must be
- specified. This value for this key will be the object that
- was returned when the submenu was created with |NERDTreeAddSubmenu()|.
-
- See below for an example.
-
-NERDTreeAddMenuSeparator([{options}]) *NERDTreeAddMenuSeparator()*
- Adds a menu separator (a row of dashes).
-
- {options} is an optional dictionary that may contain the following keys:
- "isActiveCallback" - see description in |NERDTreeAddMenuItem()|.
-
-Below is an example of the menu API in action. >
- call NERDTreeAddMenuSeparator()
-
- call NERDTreeAddMenuItem({
- \ 'text': 'a (t)op level menu item',
- \ 'shortcut': 't',
- \ 'callback': 'SomeFunction' })
-
- let submenu = NERDTreeAddSubmenu({
- \ 'text': 'a (s)ub menu',
- \ 'shortcut': 's' })
-
- call NERDTreeAddMenuItem({
- \ 'text': '(n)ested item 1',
- \ 'shortcut': 'n',
- \ 'callback': 'SomeFunction',
- \ 'parent': submenu })
-
- call NERDTreeAddMenuItem({
- \ 'text': '(n)ested item 2',
- \ 'shortcut': 'n',
- \ 'callback': 'SomeFunction',
- \ 'parent': submenu })
-<
-This will create the following menu: >
- --------------------
- a (t)op level menu item
- a (s)ub menu
-<
-Where selecting "a (s)ub menu" will lead to a second menu: >
- (n)ested item 1
- (n)ested item 2
-<
-When any of the 3 concrete menu items are selected the function "SomeFunction"
-will be called.
-
-------------------------------------------------------------------------------
-NERDTreeRender() *NERDTreeRender()*
- Re-renders the NERD tree buffer. Useful if you change the state of the
- tree and you want to it to be reflected in the UI.
-
-==============================================================================
-5. About *NERDTreeAbout*
-
-The author of the NERD tree is a terrible terrible monster called Martyzilla
-who gobbles up small children with milk and sugar for breakfast.
-
-He can be reached at martin.grenfell at gmail dot com. He would love to hear
-from you, so feel free to send him suggestions and/or comments about this
-plugin. Don't be shy --- the worst he can do is slaughter you and stuff you in
-the fridge for later ;)
-
-The latest stable versions can be found at
- http://www.vim.org/scripts/script.php?script_id=1658
-
-The latest dev versions are on github
- http://github.com/scrooloose/nerdtree
-
-
-==============================================================================
-6. Changelog *NERDTreeChangelog*
-
-Next
- - add 'scope' argument to the key map API
- - add NERDTreeCustomIgnoreFilter hook - needs doc
- - add magic [[dir]] and [[file]] flags to NERDTreeIgnore
-
-4.2.0
- - Add NERDTreeDirArrows option to make the UI use pretty arrow chars
- instead of the old +~| chars to define the tree structure (sickill)
- - shift the syntax highlighting out into its own syntax file (gnap)
- - add some mac specific options to the filesystem menu - for macvim
- only (andersonfreitas)
- - Add NERDTreeMinimalUI option to remove some non functional parts of the
- nerdtree ui (camthompson)
- - tweak the behaviour of :NERDTreeFind - see :help :NERDTreeFind for the
- new behaviour (benjamingeiger)
- - if no name is given to :Bookmark, make it default to the name of the
- target file/dir (minyoung)
- - use 'file' completion when doing copying, create, and move
- operations (EvanDotPro)
- - lots of misc bug fixes (paddyoloughlin, sdewald, camthompson, Vitaly
- Bogdanov, AndrewRadev, mathias, scottstvnsn, kml, wycats, me RAWR!)
-
-4.1.0
- features:
- - NERDTreeFind to reveal the node for the current buffer in the tree,
- see |NERDTreeFind|. This effectively merges the FindInNERDTree plugin (by
- Doug McInnes) into the script.
- - make NERDTreeQuitOnOpen apply to the t/T keymaps too. Thanks to Stefan
- Ritter and Rémi Prévost.
- - truncate the root node if wider than the tree window. Thanks to Victor
- Gonzalez.
-
- bugfixes:
- - really fix window state restoring
- - fix some win32 path escaping issues. Thanks to Stephan Baumeister, Ricky,
- jfilip1024, and Chris Chambers
-
-4.0.0
- - add a new programmable menu system (see :help NERDTreeMenu).
- - add new APIs to add menus/menu-items to the menu system as well as
- custom key mappings to the NERD tree buffer (see :help NERDTreeAPI).
- - removed the old API functions
- - added a mapping to maximize/restore the size of nerd tree window, thanks
- to Guillaume Duranceau for the patch. See :help NERDTree-A for details.
-
- - fix a bug where secondary nerd trees (netrw hijacked trees) and
- NERDTreeQuitOnOpen didnt play nicely, thanks to Curtis Harvey.
- - fix a bug where the script ignored directories whose name ended in a dot,
- thanks to Aggelos Orfanakos for the patch.
- - fix a bug when using the x mapping on the tree root, thanks to Bryan
- Venteicher for the patch.
- - fix a bug where the cursor position/window size of the nerd tree buffer
- wasnt being stored on closing the window, thanks to Richard Hart.
- - fix a bug where NERDTreeMirror would mirror the wrong tree
-
-3.1.1
- - fix a bug where a non-listed no-name buffer was getting created every
- time the tree windows was created, thanks to Derek Wyatt and owen1
- - make behave the same as the 'o' mapping
- - some helptag fixes in the doc, thanks strull
- - fix a bug when using :set nohidden and opening a file where the previous
- buf was modified. Thanks iElectric
- - other minor fixes
-
-3.1.0
- New features:
- - add mappings to open files in a vsplit, see :help NERDTree-s and :help
- NERDTree-gs
- - make the statusline for the nerd tree window default to something
- hopefully more useful. See :help 'NERDTreeStatusline'
- Bugfixes:
- - make the hijack netrw functionality work when vim is started with "vim
- " (thanks to Alf Mikula for the patch).
- - fix a bug where the CWD wasnt being changed for some operations even when
- NERDTreeChDirMode==2 (thanks to Lucas S. Buchala)
- - add -bar to all the nerd tree :commands so they can chain with other
- :commands (thanks to tpope)
- - fix bugs when ignorecase was set (thanks to nach)
- - fix a bug with the relative path code (thanks to nach)
- - fix a bug where doing a :cd would cause :NERDTreeToggle to fail (thanks nach)
-
-
-3.0.1
- Bugfixes:
- - fix bugs with :NERDTreeToggle and :NERDTreeMirror when 'hidden
- was not set
- - fix a bug where :NERDTree would fail if was relative and
- didnt start with a ./ or ../ Thanks to James Kanze.
- - make the q mapping work with secondary (:e style) trees,
- thanks to jamessan
- - fix a bunch of small bugs with secondary trees
-
- More insane refactoring.
-
-3.0.0
- - hijack netrw so that doing an :edit will put a NERD tree in
- the window rather than a netrw browser. See :help 'NERDTreeHijackNetrw'
- - allow sharing of trees across tabs, see :help :NERDTreeMirror
- - remove "top" and "bottom" as valid settings for NERDTreeWinPos
- - change the '' mapping to 'i'
- - change the 'H' mapping to 'I'
- - lots of refactoring
-
-==============================================================================
-7. Credits *NERDTreeCredits*
-
-Thanks to the following people for testing, bug reports, ideas etc. Without
-you I probably would have got bored of the hacking the NERD tree and
-just downloaded pr0n instead.
-
- Tim Carey-Smith (halorgium)
- Vigil
- Nick Brettell
- Thomas Scott Urban
- Terrance Cohen
- Yegappan Lakshmanan
- Jason Mills
- Michael Geddes (frogonwheels)
- Yu Jun
- Michael Madsen
- AOYAMA Shotaro
- Zhang Weiwu
- Niels Aan de Brugh
- Olivier Yiptong
- Zhang Shuhan
- Cory Echols
- Piotr Czachur
- Yuan Jiang
- Matan Nassau
- Maxim Kim
- Charlton Wang
- Matt Wozniski (godlygeek)
- knekk
- Sean Chou
- Ryan Penn
- Simon Peter Nicholls
- Michael Foobar
- Tomasz Chomiuk
- Denis Pokataev
- Tim Pope (tpope)
- James Kanze
- James Vega (jamessan)
- Frederic Chanal (nach)
- Alf Mikula
- Lucas S. Buchala
- Curtis Harvey
- Guillaume Duranceau
- Richard Hart (hates)
- Doug McInnes
- Stefan Ritter
- Rémi Prévost
- Victor Gonzalez
- Stephan Baumeister
- Ricky
- jfilip1024
- Chris Chambers
- Vitaly Bogdanov
- Patrick O'Loughlin (paddyoloughlin)
- Cam Thompson (camthompson)
- Marcin Kulik (sickill)
- Steve DeWald (sdewald)
- Ivan Necas (iNecas)
- George Ang (gnap)
- Evan Coury (EvanDotPro)
- Andrew Radev (AndrewRadev)
- Matt Gauger (mathias)
- Scott Stevenson (scottstvnsn)
- Anderson Freitas (andersonfreitas)
- Kamil K. Lemański (kml)
- Yehuda Katz (wycats)
- Min-Young Wu (minyoung)
- Benjamin Geiger (benjamingeiger)
-
-==============================================================================
-8. License *NERDTreeLicense*
-
-The NERD tree is released under the wtfpl.
-See http://sam.zoy.org/wtfpl/COPYING.
diff --git a/vim/bundle/nerdtree/lib/nerdtree/bookmark.vim b/vim/bundle/nerdtree/lib/nerdtree/bookmark.vim
deleted file mode 100644
index 5b845d8..0000000
--- a/vim/bundle/nerdtree/lib/nerdtree/bookmark.vim
+++ /dev/null
@@ -1,315 +0,0 @@
-"CLASS: Bookmark
-"============================================================
-let s:Bookmark = {}
-let g:NERDTreeBookmark = s:Bookmark
-
-" FUNCTION: Bookmark.activate() {{{1
-function! s:Bookmark.activate(...)
- call self.open(a:0 ? a:1 : {})
-endfunction
-
-" FUNCTION: Bookmark.AddBookmark(name, path) {{{1
-" Class method to add a new bookmark to the list, if a previous bookmark exists
-" with the same name, just update the path for that bookmark
-function! s:Bookmark.AddBookmark(name, path)
- for i in s:Bookmark.Bookmarks()
- if i.name ==# a:name
- let i.path = a:path
- return
- endif
- endfor
- call add(s:Bookmark.Bookmarks(), s:Bookmark.New(a:name, a:path))
- call s:Bookmark.Sort()
-endfunction
-
-" FUNCTION: Bookmark.Bookmarks() {{{1
-" Class method to get all bookmarks. Lazily initializes the bookmarks global
-" variable
-function! s:Bookmark.Bookmarks()
- if !exists("g:NERDTreeBookmarks")
- let g:NERDTreeBookmarks = []
- endif
- return g:NERDTreeBookmarks
-endfunction
-
-" FUNCTION: Bookmark.BookmarkExistsFor(name) {{{1
-" class method that returns 1 if a bookmark with the given name is found, 0
-" otherwise
-function! s:Bookmark.BookmarkExistsFor(name)
- try
- call s:Bookmark.BookmarkFor(a:name)
- return 1
- catch /^NERDTree.BookmarkNotFoundError/
- return 0
- endtry
-endfunction
-
-" FUNCTION: Bookmark.BookmarkFor(name) {{{1
-" Class method to get the bookmark that has the given name. {} is return if no
-" bookmark is found
-function! s:Bookmark.BookmarkFor(name)
- for i in s:Bookmark.Bookmarks()
- if i.name ==# a:name
- return i
- endif
- endfor
- throw "NERDTree.BookmarkNotFoundError: no bookmark found for name: \"". a:name .'"'
-endfunction
-
-" FUNCTION: Bookmark.BookmarkNames() {{{1
-" Class method to return an array of all bookmark names
-function! s:Bookmark.BookmarkNames()
- let names = []
- for i in s:Bookmark.Bookmarks()
- call add(names, i.name)
- endfor
- return names
-endfunction
-
-" FUNCTION: Bookmark.CacheBookmarks(silent) {{{1
-" Class method to read all bookmarks from the bookmarks file initialize
-" bookmark objects for each one.
-"
-" Args:
-" silent - dont echo an error msg if invalid bookmarks are found
-function! s:Bookmark.CacheBookmarks(silent)
- if filereadable(g:NERDTreeBookmarksFile)
- let g:NERDTreeBookmarks = []
- let g:NERDTreeInvalidBookmarks = []
- let bookmarkStrings = readfile(g:NERDTreeBookmarksFile)
- let invalidBookmarksFound = 0
- for i in bookmarkStrings
-
- "ignore blank lines
- if i != ''
-
- let name = substitute(i, '^\(.\{-}\) .*$', '\1', '')
- let path = substitute(i, '^.\{-} \(.*\)$', '\1', '')
-
- try
- let bookmark = s:Bookmark.New(name, g:NERDTreePath.New(path))
- call add(g:NERDTreeBookmarks, bookmark)
- catch /^NERDTree.InvalidArgumentsError/
- call add(g:NERDTreeInvalidBookmarks, i)
- let invalidBookmarksFound += 1
- endtry
- endif
- endfor
- if invalidBookmarksFound
- call s:Bookmark.Write()
- if !a:silent
- call nerdtree#echo(invalidBookmarksFound . " invalid bookmarks were read. See :help NERDTreeInvalidBookmarks for info.")
- endif
- endif
- call s:Bookmark.Sort()
- endif
-endfunction
-
-" FUNCTION: Bookmark.compareTo(otherbookmark) {{{1
-" Compare these two bookmarks for sorting purposes
-function! s:Bookmark.compareTo(otherbookmark)
- return a:otherbookmark.name < self.name
-endfunction
-" FUNCTION: Bookmark.ClearAll() {{{1
-" Class method to delete all bookmarks.
-function! s:Bookmark.ClearAll()
- for i in s:Bookmark.Bookmarks()
- call i.delete()
- endfor
- call s:Bookmark.Write()
-endfunction
-
-" FUNCTION: Bookmark.delete() {{{1
-" Delete this bookmark. If the node for this bookmark is under the current
-" root, then recache bookmarks for its Path object
-function! s:Bookmark.delete()
- let node = {}
- try
- let node = self.getNode(1)
- catch /^NERDTree.BookmarkedNodeNotFoundError/
- endtry
- call remove(s:Bookmark.Bookmarks(), index(s:Bookmark.Bookmarks(), self))
- if !empty(node)
- call node.path.cacheDisplayString()
- endif
- call s:Bookmark.Write()
-endfunction
-
-" FUNCTION: Bookmark.getNode(searchFromAbsoluteRoot) {{{1
-" Gets the treenode for this bookmark
-"
-" Args:
-" searchFromAbsoluteRoot: specifies whether we should search from the current
-" tree root, or the highest cached node
-function! s:Bookmark.getNode(searchFromAbsoluteRoot)
- let searchRoot = a:searchFromAbsoluteRoot ? g:NERDTreeDirNode.AbsoluteTreeRoot() : b:NERDTreeRoot
- let targetNode = searchRoot.findNode(self.path)
- if empty(targetNode)
- throw "NERDTree.BookmarkedNodeNotFoundError: no node was found for bookmark: " . self.name
- endif
- return targetNode
-endfunction
-
-" FUNCTION: Bookmark.GetNodeForName(name, searchFromAbsoluteRoot) {{{1
-" Class method that finds the bookmark with the given name and returns the
-" treenode for it.
-function! s:Bookmark.GetNodeForName(name, searchFromAbsoluteRoot)
- let bookmark = s:Bookmark.BookmarkFor(a:name)
- return bookmark.getNode(a:searchFromAbsoluteRoot)
-endfunction
-
-" FUNCTION: Bookmark.GetSelected() {{{1
-" returns the Bookmark the cursor is over, or {}
-function! s:Bookmark.GetSelected()
- let line = getline(".")
- let name = substitute(line, '^>\(.\{-}\) .\+$', '\1', '')
- if name != line
- try
- return s:Bookmark.BookmarkFor(name)
- catch /^NERDTree.BookmarkNotFoundError/
- return {}
- endtry
- endif
- return {}
-endfunction
-
-" FUNCTION: Bookmark.InvalidBookmarks() {{{1
-" Class method to get all invalid bookmark strings read from the bookmarks
-" file
-function! s:Bookmark.InvalidBookmarks()
- if !exists("g:NERDTreeInvalidBookmarks")
- let g:NERDTreeInvalidBookmarks = []
- endif
- return g:NERDTreeInvalidBookmarks
-endfunction
-
-" FUNCTION: Bookmark.mustExist() {{{1
-function! s:Bookmark.mustExist()
- if !self.path.exists()
- call s:Bookmark.CacheBookmarks(1)
- throw "NERDTree.BookmarkPointsToInvalidLocationError: the bookmark \"".
- \ self.name ."\" points to a non existing location: \"". self.path.str()
- endif
-endfunction
-
-" FUNCTION: Bookmark.New(name, path) {{{1
-" Create a new bookmark object with the given name and path object
-function! s:Bookmark.New(name, path)
- if a:name =~# ' '
- throw "NERDTree.IllegalBookmarkNameError: illegal name:" . a:name
- endif
-
- let newBookmark = copy(self)
- let newBookmark.name = a:name
- let newBookmark.path = a:path
- return newBookmark
-endfunction
-
-" FUNCTION: Bookmark.open([options]) {{{1
-"Args:
-"A dictionary containing the following keys (all optional):
-" 'where': Specifies whether the node should be opened in new split/tab or in
-" the previous window. Can be either 'v' (vertical split), 'h'
-" (horizontal split), 't' (new tab) or 'p' (previous window).
-" 'reuse': if a window is displaying the file then jump the cursor there
-" 'keepopen': dont close the tree window
-" 'stay': open the file, but keep the cursor in the tree win
-"
-function! s:Bookmark.open(...)
- let opts = a:0 ? a:1 : {}
-
- if self.path.isDirectory && !has_key(opts, 'where')
- call self.toRoot()
- else
- let opener = g:NERDTreeOpener.New(self.path, opts)
- call opener.open(self)
- endif
-endfunction
-
-" FUNCTION: Bookmark.openInNewTab(options) {{{1
-" Create a new bookmark object with the given name and path object
-function! s:Bookmark.openInNewTab(options)
- call nerdtree#deprecated('Bookmark.openInNewTab', 'is deprecated, use open() instead')
- call self.open(a:options)
-endfunction
-
-" FUNCTION: Bookmark.setPath(path) {{{1
-" makes this bookmark point to the given path
-function! s:Bookmark.setPath(path)
- let self.path = a:path
-endfunction
-
-" FUNCTION: Bookmark.Sort() {{{1
-" Class method that sorts all bookmarks
-function! s:Bookmark.Sort()
- let CompareFunc = function("nerdtree#compareBookmarks")
- call sort(s:Bookmark.Bookmarks(), CompareFunc)
-endfunction
-
-" FUNCTION: Bookmark.str() {{{1
-" Get the string that should be rendered in the view for this bookmark
-function! s:Bookmark.str()
- let pathStrMaxLen = winwidth(nerdtree#getTreeWinNum()) - 4 - len(self.name)
- if &nu
- let pathStrMaxLen = pathStrMaxLen - &numberwidth
- endif
-
- let pathStr = self.path.str({'format': 'UI'})
- if len(pathStr) > pathStrMaxLen
- let pathStr = '<' . strpart(pathStr, len(pathStr) - pathStrMaxLen)
- endif
- return '>' . self.name . ' ' . pathStr
-endfunction
-
-" FUNCTION: Bookmark.toRoot() {{{1
-" Make the node for this bookmark the new tree root
-function! s:Bookmark.toRoot()
- if self.validate()
- try
- let targetNode = self.getNode(1)
- catch /^NERDTree.BookmarkedNodeNotFoundError/
- let targetNode = g:NERDTreeFileNode.New(s:Bookmark.BookmarkFor(self.name).path)
- endtry
- call targetNode.makeRoot()
- call nerdtree#renderView()
- call targetNode.putCursorHere(0, 0)
- endif
-endfunction
-
-" FUNCTION: Bookmark.ToRoot(name) {{{1
-" Make the node for this bookmark the new tree root
-function! s:Bookmark.ToRoot(name)
- let bookmark = s:Bookmark.BookmarkFor(a:name)
- call bookmark.toRoot()
-endfunction
-
-" FUNCTION: Bookmark.validate() {{{1
-function! s:Bookmark.validate()
- if self.path.exists()
- return 1
- else
- call s:Bookmark.CacheBookmarks(1)
- call nerdtree#renderView()
- call nerdtree#echo(self.name . "now points to an invalid location. See :help NERDTreeInvalidBookmarks for info.")
- return 0
- endif
-endfunction
-
-" FUNCTION: Bookmark.Write() {{{1
-" Class method to write all bookmarks to the bookmarks file
-function! s:Bookmark.Write()
- let bookmarkStrings = []
- for i in s:Bookmark.Bookmarks()
- call add(bookmarkStrings, i.name . ' ' . i.path.str())
- endfor
-
- "add a blank line before the invalid ones
- call add(bookmarkStrings, "")
-
- for j in s:Bookmark.InvalidBookmarks()
- call add(bookmarkStrings, j)
- endfor
- call writefile(bookmarkStrings, g:NERDTreeBookmarksFile)
-endfunction
-
-" vim: set sw=4 sts=4 et fdm=marker:
diff --git a/vim/bundle/nerdtree/lib/nerdtree/creator.vim b/vim/bundle/nerdtree/lib/nerdtree/creator.vim
deleted file mode 100644
index 7f0721f..0000000
--- a/vim/bundle/nerdtree/lib/nerdtree/creator.vim
+++ /dev/null
@@ -1,322 +0,0 @@
-"CLASS: Creator
-"Creates primary/secondary/mirror nerdtree windows. Sets up all the window and
-"buffer options and key mappings etc.
-"============================================================
-let s:Creator = {}
-let g:NERDTreeCreator = s:Creator
-
-"FUNCTION: s:Creator._bindMappings() {{{1
-function! s:Creator._bindMappings()
- "make do the same as the default 'o' mapping
- exec "nnoremap :call nerdtree#invokeKeyMap('". g:NERDTreeMapActivateNode ."')"
-
- call g:NERDTreeKeyMap.BindAll()
-
- command! -buffer -nargs=? Bookmark :call nerdtree#bookmarkNode('')
- command! -buffer -complete=customlist,nerdtree#completeBookmarks -nargs=1 RevealBookmark :call nerdtree#revealBookmark('')
- command! -buffer -complete=customlist,nerdtree#completeBookmarks -nargs=1 OpenBookmark :call nerdtree#openBookmark('')
- command! -buffer -complete=customlist,nerdtree#completeBookmarks -nargs=* ClearBookmarks call nerdtree#clearBookmarks('')
- command! -buffer -complete=customlist,nerdtree#completeBookmarks -nargs=+ BookmarkToRoot call g:NERDTreeBookmark.ToRoot('')
- command! -buffer -nargs=0 ClearAllBookmarks call g:NERDTreeBookmark.ClearAll() call nerdtree#renderView()
- command! -buffer -nargs=0 ReadBookmarks call g:NERDTreeBookmark.CacheBookmarks(0) call nerdtree#renderView()
- command! -buffer -nargs=0 WriteBookmarks call g:NERDTreeBookmark.Write()
-endfunction
-
-"FUNCTION: s:Creator._broadcastInitEvent() {{{1
-function! s:Creator._broadcastInitEvent()
- silent doautocmd User NERDTreeInit
-endfunction
-
-" FUNCTION: s:Creator.BufNamePrefix() {{{2
-function! s:Creator.BufNamePrefix()
- return 'NERD_tree_'
-endfunction
-
-"FUNCTION: s:Creator.CreatePrimary(a:name) {{{1
-function! s:Creator.CreatePrimary(name)
- let creator = s:Creator.New()
- call creator.createPrimary(a:name)
-endfunction
-
-"FUNCTION: s:Creator.createPrimary(a:name) {{{1
-"name: the name of a bookmark or a directory
-function! s:Creator.createPrimary(name)
- let path = self._pathForString(a:name)
-
- "if instructed to, then change the vim CWD to the dir the NERDTree is
- "inited in
- if g:NERDTreeChDirMode != 0
- call path.changeToDir()
- endif
-
- if nerdtree#treeExistsForTab()
- if nerdtree#isTreeOpen()
- call nerdtree#closeTree()
- endif
- unlet t:NERDTreeBufName
- endif
-
- let newRoot = g:NERDTreeDirNode.New(path)
- call newRoot.open()
-
- call self._createTreeWin()
- let b:treeShowHelp = 0
- let b:NERDTreeIgnoreEnabled = 1
- let b:NERDTreeShowFiles = g:NERDTreeShowFiles
- let b:NERDTreeShowHidden = g:NERDTreeShowHidden
- let b:NERDTreeShowBookmarks = g:NERDTreeShowBookmarks
- let b:NERDTreeRoot = newRoot
- let b:NERDTreeType = "primary"
-
- call nerdtree#renderView()
- call b:NERDTreeRoot.putCursorHere(0, 0)
-
- call self._broadcastInitEvent()
-endfunction
-
-"FUNCTION: s:Creator.CreateSecondary(dir) {{{1
-function! s:Creator.CreateSecondary(dir)
- let creator = s:Creator.New()
- call creator.createSecondary(a:dir)
-endfunction
-
-"FUNCTION: s:Creator.createSecondary(dir) {{{1
-function! s:Creator.createSecondary(dir)
- try
- let path = g:NERDTreePath.New(a:dir)
- catch /^NERDTree.InvalidArgumentsError/
- call nerdtree#echo("Invalid directory name:" . a:name)
- return
- endtry
-
- "we want the directory buffer to disappear when we do the :edit below
- setlocal bufhidden=wipe
-
- let previousBuf = expand("#")
-
- "we need a unique name for each secondary tree buffer to ensure they are
- "all independent
- exec "silent edit " . self._nextBufferName()
-
- let b:NERDTreePreviousBuf = bufnr(previousBuf)
-
- let b:NERDTreeRoot = g:NERDTreeDirNode.New(path)
- call b:NERDTreeRoot.open()
-
- call self._setCommonBufOptions()
- let b:NERDTreeType = "secondary"
-
- call nerdtree#renderView()
-
- call self._broadcastInitEvent()
-endfunction
-
-" FUNCTION: s:Creator.CreateMirror() {{{1
-function! s:Creator.CreateMirror()
- let creator = s:Creator.New()
- call creator.createMirror()
-endfunction
-
-" FUNCTION: s:Creator.createMirror() {{{1
-function! s:Creator.createMirror()
- "get the names off all the nerd tree buffers
- let treeBufNames = []
- for i in range(1, tabpagenr("$"))
- let nextName = nerdtree#tabpagevar(i, 'NERDTreeBufName')
- if nextName != -1 && (!exists("t:NERDTreeBufName") || nextName != t:NERDTreeBufName)
- call add(treeBufNames, nextName)
- endif
- endfor
- let treeBufNames = nerdtree#unique(treeBufNames)
-
- "map the option names (that the user will be prompted with) to the nerd
- "tree buffer names
- let options = {}
- let i = 0
- while i < len(treeBufNames)
- let bufName = treeBufNames[i]
- let treeRoot = getbufvar(bufName, "NERDTreeRoot")
- let options[i+1 . '. ' . treeRoot.path.str() . ' (buf name: ' . bufName . ')'] = bufName
- let i = i + 1
- endwhile
-
- "work out which tree to mirror, if there is more than 1 then ask the user
- let bufferName = ''
- if len(keys(options)) > 1
- let choices = ["Choose a tree to mirror"]
- let choices = extend(choices, sort(keys(options)))
- let choice = inputlist(choices)
- if choice < 1 || choice > len(options) || choice ==# ''
- return
- endif
-
- let bufferName = options[sort(keys(options))[choice-1]]
- elseif len(keys(options)) ==# 1
- let bufferName = values(options)[0]
- else
- call nerdtree#echo("No trees to mirror")
- return
- endif
-
- if nerdtree#treeExistsForTab() && nerdtree#isTreeOpen()
- call nerdtree#closeTree()
- endif
-
- let t:NERDTreeBufName = bufferName
- call self._createTreeWin()
- exec 'buffer ' . bufferName
- if !&hidden
- call nerdtree#renderView()
- endif
-endfunction
-
-"FUNCTION: s:Creator._createTreeWin() {{{1
-"Inits the NERD tree window. ie. opens it, sizes it, sets all the local
-"options etc
-function! s:Creator._createTreeWin()
- "create the nerd tree window
- let splitLocation = g:NERDTreeWinPos ==# "left" ? "topleft " : "botright "
- let splitSize = g:NERDTreeWinSize
-
- if !exists('t:NERDTreeBufName')
- let t:NERDTreeBufName = self._nextBufferName()
- silent! exec splitLocation . 'vertical ' . splitSize . ' new'
- silent! exec "edit " . t:NERDTreeBufName
- else
- silent! exec splitLocation . 'vertical ' . splitSize . ' split'
- silent! exec "buffer " . t:NERDTreeBufName
- endif
-
- setlocal winfixwidth
- call self._setCommonBufOptions()
-endfunction
-
-"FUNCTION: s:Creator.New() {{{1
-function! s:Creator.New()
- let newCreator = copy(self)
- return newCreator
-endfunction
-
-" FUNCTION: s:Creator._nextBufferName() {{{2
-" returns the buffer name for the next nerd tree
-function! s:Creator._nextBufferName()
- let name = s:Creator.BufNamePrefix() . self._nextBufferNumber()
- return name
-endfunction
-
-" FUNCTION: s:Creator._nextBufferNumber() {{{2
-" the number to add to the nerd tree buffer name to make the buf name unique
-function! s:Creator._nextBufferNumber()
- if !exists("s:Creator._NextBufNum")
- let s:Creator._NextBufNum = 1
- else
- let s:Creator._NextBufNum += 1
- endif
-
- return s:Creator._NextBufNum
-endfunction
-
-"FUNCTION: s:Creator._pathForString(str) {{{1
-"find a bookmark or adirectory for the given string
-function! s:Creator._pathForString(str)
- let path = {}
- if g:NERDTreeBookmark.BookmarkExistsFor(a:str)
- let path = g:NERDTreeBookmark.BookmarkFor(a:str).path
- else
- let dir = a:str ==# '' ? getcwd() : a:str
-
- "hack to get an absolute path if a relative path is given
- if dir =~# '^\.'
- let dir = getcwd() . g:NERDTreePath.Slash() . dir
- endif
- let dir = g:NERDTreePath.Resolve(dir)
-
- try
- let path = g:NERDTreePath.New(dir)
- catch /^NERDTree.InvalidArgumentsError/
- call nerdtree#echo("No bookmark or directory found for: " . a:str)
- return
- endtry
- endif
- if !path.isDirectory
- let path = path.getParent()
- endif
-
- return path
-endfunction
-
-"FUNCTION: s:Creator._setCommonBufOptions() {{{1
-function! s:Creator._setCommonBufOptions()
- "throwaway buffer options
- setlocal noswapfile
- setlocal buftype=nofile
- setlocal bufhidden=hide
- setlocal nowrap
- setlocal foldcolumn=0
- setlocal foldmethod=manual
- setlocal nofoldenable
- setlocal nobuflisted
- setlocal nospell
- if g:NERDTreeShowLineNumbers
- setlocal nu
- else
- setlocal nonu
- if v:version >= 703
- setlocal nornu
- endif
- endif
-
- iabc
-
- if g:NERDTreeHighlightCursorline
- setlocal cursorline
- endif
-
- call self._setupStatusline()
-
- let b:treeShowHelp = 0
- let b:NERDTreeIgnoreEnabled = 1
- let b:NERDTreeShowFiles = g:NERDTreeShowFiles
- let b:NERDTreeShowHidden = g:NERDTreeShowHidden
- let b:NERDTreeShowBookmarks = g:NERDTreeShowBookmarks
- setfiletype nerdtree
- call self._bindMappings()
-endfunction
-
-"FUNCTION: s:Creator._setupStatusline() {{{1
-function! s:Creator._setupStatusline()
- if g:NERDTreeStatusline != -1
- let &l:statusline = g:NERDTreeStatusline
- endif
-endfunction
-
-"FUNCTION: s:Creator.TogglePrimary(dir) {{{1
-function! s:Creator.TogglePrimary(dir)
- let creator = s:Creator.New()
- call creator.togglePrimary(a:dir)
-endfunction
-
-"FUNCTION: s:Creator.togglePrimary(dir) {{{1
-"Toggles the NERD tree. I.e the NERD tree is open, it is closed, if it is
-"closed it is restored or initialized (if it doesnt exist)
-"
-"Args:
-"dir: the full path for the root node (is only used if the NERD tree is being
-"initialized.
-function! s:Creator.togglePrimary(dir)
- if nerdtree#treeExistsForTab()
- if !nerdtree#isTreeOpen()
- call self._createTreeWin()
- if !&hidden
- call nerdtree#renderView()
- endif
- call nerdtree#restoreScreenState()
- else
- call nerdtree#closeTree()
- endif
- else
- call self.createPrimary(a:dir)
- endif
-endfunction
-
-" vim: set sw=4 sts=4 et fdm=marker:
diff --git a/vim/bundle/nerdtree/lib/nerdtree/key_map.vim b/vim/bundle/nerdtree/lib/nerdtree/key_map.vim
deleted file mode 100644
index 8645765..0000000
--- a/vim/bundle/nerdtree/lib/nerdtree/key_map.vim
+++ /dev/null
@@ -1,143 +0,0 @@
-"CLASS: KeyMap
-"============================================================
-let s:KeyMap = {}
-let g:NERDTreeKeyMap = s:KeyMap
-
-"FUNCTION: KeyMap.All() {{{1
-function! s:KeyMap.All()
- if !exists("s:keyMaps")
- let s:keyMaps = []
- endif
- return s:keyMaps
-endfunction
-
-"FUNCTION: KeyMap.FindFor(key, scope) {{{1
-function! s:KeyMap.FindFor(key, scope)
- for i in s:KeyMap.All()
- if i.key ==# a:key && i.scope ==# a:scope
- return i
- endif
- endfor
- return {}
-endfunction
-
-"FUNCTION: KeyMap.BindAll() {{{1
-function! s:KeyMap.BindAll()
- for i in s:KeyMap.All()
- call i.bind()
- endfor
-endfunction
-
-"FUNCTION: KeyMap.bind() {{{1
-function! s:KeyMap.bind()
- " If the key sequence we're trying to map contains any '<>' notation, we
- " must replace each of the '<' characters with '' to ensure the string
- " is not translated into its corresponding keycode during the later part
- " of the map command below
- " :he <>
- let specialNotationRegex = '\m<\([[:alnum:]_-]\+>\)'
- if self.key =~# specialNotationRegex
- let keymapInvokeString = substitute(self.key, specialNotationRegex, '\1', 'g')
- else
- let keymapInvokeString = self.key
- endif
-
- let premap = self.key == "" ? " " : " "
-
- exec 'nnoremap '. self.key . premap . ':call nerdtree#invokeKeyMap("'. keymapInvokeString .'")'
-endfunction
-
-"FUNCTION: KeyMap.Remove(key, scope) {{{1
-function! s:KeyMap.Remove(key, scope)
- let maps = s:KeyMap.All()
- for i in range(len(maps))
- if maps[i].key ==# a:key && maps[i].scope ==# a:scope
- return remove(maps, i)
- endif
- endfor
-endfunction
-
-"FUNCTION: KeyMap.invoke() {{{1
-"Call the KeyMaps callback function
-function! s:KeyMap.invoke(...)
- let Callback = function(self.callback)
- if a:0
- call Callback(a:1)
- else
- call Callback()
- endif
-endfunction
-
-"FUNCTION: KeyMap.Invoke() {{{1
-"Find a keymapping for a:key and the current scope invoke it.
-"
-"Scope is determined as follows:
-" * if the cursor is on a dir node then "DirNode"
-" * if the cursor is on a file node then "FileNode"
-" * if the cursor is on a bookmark then "Bookmark"
-"
-"If a keymap has the scope of "all" then it will be called if no other keymap
-"is found for a:key and the scope.
-function! s:KeyMap.Invoke(key)
- let node = g:NERDTreeFileNode.GetSelected()
- if !empty(node)
-
- "try file node
- if !node.path.isDirectory
- let km = s:KeyMap.FindFor(a:key, "FileNode")
- if !empty(km)
- return km.invoke(node)
- endif
- endif
-
- "try dir node
- if node.path.isDirectory
- let km = s:KeyMap.FindFor(a:key, "DirNode")
- if !empty(km)
- return km.invoke(node)
- endif
- endif
-
- "try generic node
- let km = s:KeyMap.FindFor(a:key, "Node")
- if !empty(km)
- return km.invoke(node)
- endif
-
- endif
-
- "try bookmark
- let bm = g:NERDTreeBookmark.GetSelected()
- if !empty(bm)
- let km = s:KeyMap.FindFor(a:key, "Bookmark")
- if !empty(km)
- return km.invoke(bm)
- endif
- endif
-
- "try all
- let km = s:KeyMap.FindFor(a:key, "all")
- if !empty(km)
- return km.invoke()
- endif
-endfunction
-
-"FUNCTION: KeyMap.Create(options) {{{1
-function! s:KeyMap.Create(options)
- let newKeyMap = copy(self)
- let opts = extend({'scope': 'all', 'quickhelpText': ''}, copy(a:options))
- let newKeyMap.key = opts['key']
- let newKeyMap.quickhelpText = opts['quickhelpText']
- let newKeyMap.callback = opts['callback']
- let newKeyMap.scope = opts['scope']
-
- call s:KeyMap.Add(newKeyMap)
-endfunction
-
-"FUNCTION: KeyMap.Add(keymap) {{{1
-function! s:KeyMap.Add(keymap)
- call s:KeyMap.Remove(a:keymap.key, a:keymap.scope)
- call add(s:KeyMap.All(), a:keymap)
-endfunction
-
-" vim: set sw=4 sts=4 et fdm=marker:
diff --git a/vim/bundle/nerdtree/lib/nerdtree/menu_controller.vim b/vim/bundle/nerdtree/lib/nerdtree/menu_controller.vim
deleted file mode 100644
index ae0ee84..0000000
--- a/vim/bundle/nerdtree/lib/nerdtree/menu_controller.vim
+++ /dev/null
@@ -1,180 +0,0 @@
-"CLASS: MenuController
-"============================================================
-let s:MenuController = {}
-let g:NERDTreeMenuController = s:MenuController
-
-"FUNCTION: MenuController.New(menuItems) {{{1
-"create a new menu controller that operates on the given menu items
-function! s:MenuController.New(menuItems)
- let newMenuController = copy(self)
- if a:menuItems[0].isSeparator()
- let newMenuController.menuItems = a:menuItems[1:-1]
- else
- let newMenuController.menuItems = a:menuItems
- endif
- return newMenuController
-endfunction
-
-"FUNCTION: MenuController.showMenu() {{{1
-"start the main loop of the menu and get the user to choose/execute a menu
-"item
-function! s:MenuController.showMenu()
- call self._saveOptions()
-
- try
- let self.selection = 0
-
- let done = 0
- while !done
- redraw!
- call self._echoPrompt()
- let key = nr2char(getchar())
- let done = self._handleKeypress(key)
- endwhile
- finally
- call self._restoreOptions()
- endtry
-
- if self.selection != -1
- let m = self._current()
- call m.execute()
- endif
-endfunction
-
-"FUNCTION: MenuController._echoPrompt() {{{1
-function! s:MenuController._echoPrompt()
- echo "NERDTree Menu. Use j/k/enter and the shortcuts indicated"
- echo "=========================================================="
-
- for i in range(0, len(self.menuItems)-1)
- if self.selection == i
- echo "> " . self.menuItems[i].text
- else
- echo " " . self.menuItems[i].text
- endif
- endfor
-endfunction
-
-"FUNCTION: MenuController._current(key) {{{1
-"get the MenuItem that is currently selected
-function! s:MenuController._current()
- return self.menuItems[self.selection]
-endfunction
-
-"FUNCTION: MenuController._handleKeypress(key) {{{1
-"change the selection (if appropriate) and return 1 if the user has made
-"their choice, 0 otherwise
-function! s:MenuController._handleKeypress(key)
- if a:key == 'j'
- call self._cursorDown()
- elseif a:key == 'k'
- call self._cursorUp()
- elseif a:key == nr2char(27) "escape
- let self.selection = -1
- return 1
- elseif a:key == "\r" || a:key == "\n" "enter and ctrl-j
- return 1
- else
- let index = self._nextIndexFor(a:key)
- if index != -1
- let self.selection = index
- if len(self._allIndexesFor(a:key)) == 1
- return 1
- endif
- endif
- endif
-
- return 0
-endfunction
-
-"FUNCTION: MenuController._allIndexesFor(shortcut) {{{1
-"get indexes to all menu items with the given shortcut
-function! s:MenuController._allIndexesFor(shortcut)
- let toReturn = []
-
- for i in range(0, len(self.menuItems)-1)
- if self.menuItems[i].shortcut == a:shortcut
- call add(toReturn, i)
- endif
- endfor
-
- return toReturn
-endfunction
-
-"FUNCTION: MenuController._nextIndexFor(shortcut) {{{1
-"get the index to the next menu item with the given shortcut, starts from the
-"current cursor location and wraps around to the top again if need be
-function! s:MenuController._nextIndexFor(shortcut)
- for i in range(self.selection+1, len(self.menuItems)-1)
- if self.menuItems[i].shortcut == a:shortcut
- return i
- endif
- endfor
-
- for i in range(0, self.selection)
- if self.menuItems[i].shortcut == a:shortcut
- return i
- endif
- endfor
-
- return -1
-endfunction
-
-"FUNCTION: MenuController._setCmdheight() {{{1
-"sets &cmdheight to whatever is needed to display the menu
-function! s:MenuController._setCmdheight()
- let &cmdheight = len(self.menuItems) + 3
-endfunction
-
-"FUNCTION: MenuController._saveOptions() {{{1
-"set any vim options that are required to make the menu work (saving their old
-"values)
-function! s:MenuController._saveOptions()
- let self._oldLazyredraw = &lazyredraw
- let self._oldCmdheight = &cmdheight
- set nolazyredraw
- call self._setCmdheight()
-endfunction
-
-"FUNCTION: MenuController._restoreOptions() {{{1
-"restore the options we saved in _saveOptions()
-function! s:MenuController._restoreOptions()
- let &cmdheight = self._oldCmdheight
- let &lazyredraw = self._oldLazyredraw
-endfunction
-
-"FUNCTION: MenuController._cursorDown() {{{1
-"move the cursor to the next menu item, skipping separators
-function! s:MenuController._cursorDown()
- let done = 0
- while !done
- if self.selection < len(self.menuItems)-1
- let self.selection += 1
- else
- let self.selection = 0
- endif
-
- if !self._current().isSeparator()
- let done = 1
- endif
- endwhile
-endfunction
-
-"FUNCTION: MenuController._cursorUp() {{{1
-"move the cursor to the previous menu item, skipping separators
-function! s:MenuController._cursorUp()
- let done = 0
- while !done
- if self.selection > 0
- let self.selection -= 1
- else
- let self.selection = len(self.menuItems)-1
- endif
-
- if !self._current().isSeparator()
- let done = 1
- endif
- endwhile
-endfunction
-
-" vim: set sw=4 sts=4 et fdm=marker:
diff --git a/vim/bundle/nerdtree/lib/nerdtree/menu_item.vim b/vim/bundle/nerdtree/lib/nerdtree/menu_item.vim
deleted file mode 100644
index 6fb9d9e..0000000
--- a/vim/bundle/nerdtree/lib/nerdtree/menu_item.vim
+++ /dev/null
@@ -1,114 +0,0 @@
-"CLASS: MenuItem
-"============================================================
-let s:MenuItem = {}
-let g:NERDTreeMenuItem = s:MenuItem
-
-"FUNCTION: MenuItem.All() {{{1
-"get all top level menu items
-function! s:MenuItem.All()
- if !exists("s:menuItems")
- let s:menuItems = []
- endif
- return s:menuItems
-endfunction
-
-"FUNCTION: MenuItem.AllEnabled() {{{1
-"get all top level menu items that are currently enabled
-function! s:MenuItem.AllEnabled()
- let toReturn = []
- for i in s:MenuItem.All()
- if i.enabled()
- call add(toReturn, i)
- endif
- endfor
- return toReturn
-endfunction
-
-"FUNCTION: MenuItem.Create(options) {{{1
-"make a new menu item and add it to the global list
-function! s:MenuItem.Create(options)
- let newMenuItem = copy(self)
-
- let newMenuItem.text = a:options['text']
- let newMenuItem.shortcut = a:options['shortcut']
- let newMenuItem.children = []
-
- let newMenuItem.isActiveCallback = -1
- if has_key(a:options, 'isActiveCallback')
- let newMenuItem.isActiveCallback = a:options['isActiveCallback']
- endif
-
- let newMenuItem.callback = -1
- if has_key(a:options, 'callback')
- let newMenuItem.callback = a:options['callback']
- endif
-
- if has_key(a:options, 'parent')
- call add(a:options['parent'].children, newMenuItem)
- else
- call add(s:MenuItem.All(), newMenuItem)
- endif
-
- return newMenuItem
-endfunction
-
-"FUNCTION: MenuItem.CreateSeparator(options) {{{1
-"make a new separator menu item and add it to the global list
-function! s:MenuItem.CreateSeparator(options)
- let standard_options = { 'text': '--------------------',
- \ 'shortcut': -1,
- \ 'callback': -1 }
- let options = extend(a:options, standard_options, "force")
-
- return s:MenuItem.Create(options)
-endfunction
-
-"FUNCTION: MenuItem.CreateSubmenu(options) {{{1
-"make a new submenu and add it to global list
-function! s:MenuItem.CreateSubmenu(options)
- let standard_options = { 'callback': -1 }
- let options = extend(a:options, standard_options, "force")
-
- return s:MenuItem.Create(options)
-endfunction
-
-"FUNCTION: MenuItem.enabled() {{{1
-"return 1 if this menu item should be displayed
-"
-"delegates off to the isActiveCallback, and defaults to 1 if no callback was
-"specified
-function! s:MenuItem.enabled()
- if self.isActiveCallback != -1
- return {self.isActiveCallback}()
- endif
- return 1
-endfunction
-
-"FUNCTION: MenuItem.execute() {{{1
-"perform the action behind this menu item, if this menuitem has children then
-"display a new menu for them, otherwise deletegate off to the menuitem's
-"callback
-function! s:MenuItem.execute()
- if len(self.children)
- let mc = s:MenuController.New(self.children)
- call mc.showMenu()
- else
- if self.callback != -1
- call {self.callback}()
- endif
- endif
-endfunction
-
-"FUNCTION: MenuItem.isSeparator() {{{1
-"return 1 if this menuitem is a separator
-function! s:MenuItem.isSeparator()
- return self.callback == -1 && self.children == []
-endfunction
-
-"FUNCTION: MenuItem.isSubmenu() {{{1
-"return 1 if this menuitem is a submenu
-function! s:MenuItem.isSubmenu()
- return self.callback == -1 && !empty(self.children)
-endfunction
-
-" vim: set sw=4 sts=4 et fdm=marker:
diff --git a/vim/bundle/nerdtree/lib/nerdtree/opener.vim b/vim/bundle/nerdtree/lib/nerdtree/opener.vim
deleted file mode 100644
index bcc0d4f..0000000
--- a/vim/bundle/nerdtree/lib/nerdtree/opener.vim
+++ /dev/null
@@ -1,264 +0,0 @@
-"CLASS: Opener
-"============================================================
-let s:Opener = {}
-let g:NERDTreeOpener = s:Opener
-
-"FUNCTION: Opener._checkToCloseTree(newtab) {{{1
-"Check the class options and global options (i.e. NERDTreeQuitOnOpen) to see
-"if the tree should be closed now.
-"
-"Args:
-"a:newtab - boolean. If set, only close the tree now if we are opening the
-"target in a new tab. This is needed because we have to close tree before we
-"leave the tab
-function! s:Opener._checkToCloseTree(newtab)
- if self._keepopen
- return
- endif
-
- if (a:newtab && self._where == 't') || !a:newtab
- call nerdtree#closeTreeIfQuitOnOpen()
- endif
-endfunction
-
-"FUNCTION: Opener._gotoTargetWin() {{{1
-function! s:Opener._gotoTargetWin()
- if b:NERDTreeType ==# "secondary"
- if self._where == 'v'
- vsplit
- elseif self._where == 'h'
- split
- elseif self._where == 't'
- tabnew
- endif
- else
- call self._checkToCloseTree(1)
-
- if self._where == 'v'
- call self._newVSplit()
- elseif self._where == 'h'
- call self._newSplit()
- elseif self._where == 't'
- tabnew
- elseif self._where == 'p'
- call self._previousWindow()
- endif
-
- call self._checkToCloseTree(0)
- endif
-endfunction
-
-"FUNCTION: Opener.New(path, opts) {{{1
-"Args:
-"
-"a:path: The path object that is to be opened.
-"
-"a:opts:
-"
-"A dictionary containing the following keys (all optional):
-" 'where': Specifies whether the node should be opened in new split/tab or in
-" the previous window. Can be either 'v' or 'h' or 't' (for open in
-" new tab)
-" 'reuse': if a window is displaying the file then jump the cursor there
-" 'keepopen': dont close the tree window
-" 'stay': open the file, but keep the cursor in the tree win
-function! s:Opener.New(path, opts)
- let newObj = copy(self)
-
- let newObj._path = a:path
- let newObj._stay = nerdtree#has_opt(a:opts, 'stay')
- let newObj._reuse = nerdtree#has_opt(a:opts, 'reuse')
- let newObj._keepopen = nerdtree#has_opt(a:opts, 'keepopen')
- let newObj._where = has_key(a:opts, 'where') ? a:opts['where'] : ''
- let newObj._treetype = b:NERDTreeType
- call newObj._saveCursorPos()
-
- return newObj
-endfunction
-
-"FUNCTION: Opener._newSplit() {{{1
-function! s:Opener._newSplit()
- " Save the user's settings for splitbelow and splitright
- let savesplitbelow=&splitbelow
- let savesplitright=&splitright
-
- " 'there' will be set to a command to move from the split window
- " back to the explorer window
- "
- " 'back' will be set to a command to move from the explorer window
- " back to the newly split window
- "
- " 'right' and 'below' will be set to the settings needed for
- " splitbelow and splitright IF the explorer is the only window.
- "
- let there= g:NERDTreeWinPos ==# "left" ? "wincmd h" : "wincmd l"
- let back = g:NERDTreeWinPos ==# "left" ? "wincmd l" : "wincmd h"
- let right= g:NERDTreeWinPos ==# "left"
- let below=0
-
- " Attempt to go to adjacent window
- call nerdtree#exec(back)
-
- let onlyOneWin = (winnr("$") ==# 1)
-
- " If no adjacent window, set splitright and splitbelow appropriately
- if onlyOneWin
- let &splitright=right
- let &splitbelow=below
- else
- " found adjacent window - invert split direction
- let &splitright=!right
- let &splitbelow=!below
- endif
-
- let splitMode = onlyOneWin ? "vertical" : ""
-
- " Open the new window
- try
- exec(splitMode." sp ")
- catch /^Vim\%((\a\+)\)\=:E37/
- call nerdtree#putCursorInTreeWin()
- throw "NERDTree.FileAlreadyOpenAndModifiedError: ". self._path.str() ." is already open and modified."
- catch /^Vim\%((\a\+)\)\=:/
- "do nothing
- endtry
-
- "resize the tree window if no other window was open before
- if onlyOneWin
- let size = exists("b:NERDTreeOldWindowSize") ? b:NERDTreeOldWindowSize : g:NERDTreeWinSize
- call nerdtree#exec(there)
- exec("silent ". splitMode ." resize ". size)
- call nerdtree#exec('wincmd p')
- endif
-
- " Restore splitmode settings
- let &splitbelow=savesplitbelow
- let &splitright=savesplitright
-endfunction
-
-"FUNCTION: Opener._newVSplit() {{{1
-function! s:Opener._newVSplit()
- let winwidth = winwidth(".")
- if winnr("$")==#1
- let winwidth = g:NERDTreeWinSize
- endif
-
- call nerdtree#exec("wincmd p")
- vnew
-
- "resize the nerd tree back to the original size
- call nerdtree#putCursorInTreeWin()
- exec("silent vertical resize ". winwidth)
- call nerdtree#exec('wincmd p')
-endfunction
-
-"FUNCTION: Opener.open(target) {{{1
-function! s:Opener.open(target)
- if self._path.isDirectory
- call self._openDirectory(a:target)
- else
- call self._openFile()
- endif
-endfunction
-
-"FUNCTION: Opener._openFile() {{{1
-function! s:Opener._openFile()
- if self._reuse && self._reuseWindow()
- return
- endif
-
- call self._gotoTargetWin()
-
- if self._treetype ==# "secondary"
- call self._path.edit()
- else
- call self._path.edit()
-
-
- if self._stay
- call self._restoreCursorPos()
- endif
- endif
-endfunction
-
-"FUNCTION: Opener._openDirectory(node) {{{1
-function! s:Opener._openDirectory(node)
- if self._treetype ==# "secondary"
- call self._gotoTargetWin()
- call g:NERDTreeCreator.CreateSecondary(a:node.path.str())
- else
- call self._gotoTargetWin()
- if empty(self._where)
- call a:node.makeRoot()
- call nerdtree#renderView()
- call a:node.putCursorHere(0, 0)
- elseif self._where == 't'
- call g:NERDTreeCreator.CreatePrimary(a:node.path.str())
- else
- call g:NERDTreeCreator.CreateSecondary(a:node.path.str())
- endif
- endif
-
- if self._stay
- call self._restoreCursorPos()
- endif
-endfunction
-
-"FUNCTION: Opener._previousWindow() {{{1
-function! s:Opener._previousWindow()
- if !nerdtree#isWindowUsable(winnr("#")) && nerdtree#firstUsableWindow() ==# -1
- call self._newSplit()
- else
- try
- if !nerdtree#isWindowUsable(winnr("#"))
- call nerdtree#exec(nerdtree#firstUsableWindow() . "wincmd w")
- else
- call nerdtree#exec('wincmd p')
- endif
- catch /^Vim\%((\a\+)\)\=:E37/
- call nerdtree#putCursorInTreeWin()
- throw "NERDTree.FileAlreadyOpenAndModifiedError: ". self._path.str() ." is already open and modified."
- catch /^Vim\%((\a\+)\)\=:/
- echo v:exception
- endtry
- endif
-endfunction
-
-"FUNCTION: Opener._restoreCursorPos(){{{1
-function! s:Opener._restoreCursorPos()
- call nerdtree#exec('normal ' . self._tabnr . 'gt')
- call nerdtree#exec(bufwinnr(self._bufnr) . 'wincmd w')
-endfunction
-
-"FUNCTION: Opener._reuseWindow(){{{1
-"put the cursor in the first window we find for this file
-"
-"return 1 if we were successful
-function! s:Opener._reuseWindow()
- "check the current tab for the window
- let winnr = bufwinnr('^' . self._path.str() . '$')
- if winnr != -1
- call nerdtree#exec(winnr . "wincmd w")
- call self._checkToCloseTree(0)
- return 1
- else
- "check other tabs
- let tabnr = self._path.tabnr()
- if tabnr
- call self._checkToCloseTree(1)
- call nerdtree#exec('normal! ' . tabnr . 'gt')
- let winnr = bufwinnr('^' . self._path.str() . '$')
- call nerdtree#exec(winnr . "wincmd w")
- return 1
- endif
- endif
- return 0
-endfunction
-
-"FUNCTION: Opener._saveCursorPos(){{{1
-function! s:Opener._saveCursorPos()
- let self._bufnr = bufnr("")
- let self._tabnr = tabpagenr()
-endfunction
-
-" vim: set sw=4 sts=4 et fdm=marker:
diff --git a/vim/bundle/nerdtree/lib/nerdtree/path.vim b/vim/bundle/nerdtree/lib/nerdtree/path.vim
deleted file mode 100644
index 58bb013..0000000
--- a/vim/bundle/nerdtree/lib/nerdtree/path.vim
+++ /dev/null
@@ -1,724 +0,0 @@
-"we need to use this number many times for sorting... so we calculate it only
-"once here
-let s:NERDTreeSortStarIndex = index(g:NERDTreeSortOrder, '*')
-
-"CLASS: Path
-"============================================================
-let s:Path = {}
-let g:NERDTreePath = s:Path
-
-"FUNCTION: Path.AbsolutePathFor(str) {{{1
-function! s:Path.AbsolutePathFor(str)
- let prependCWD = 0
- if nerdtree#runningWindows()
- let prependCWD = a:str !~# '^.:\(\\\|\/\)' && a:str !~# '^\(\\\\\|\/\/\)'
- else
- let prependCWD = a:str !~# '^/'
- endif
-
- let toReturn = a:str
- if prependCWD
- let toReturn = getcwd() . s:Path.Slash() . a:str
- endif
-
- return toReturn
-endfunction
-
-"FUNCTION: Path.bookmarkNames() {{{1
-function! s:Path.bookmarkNames()
- if !exists("self._bookmarkNames")
- call self.cacheDisplayString()
- endif
- return self._bookmarkNames
-endfunction
-
-"FUNCTION: Path.cacheDisplayString() {{{1
-function! s:Path.cacheDisplayString()
- let self.cachedDisplayString = self.getLastPathComponent(1)
-
- if self.isExecutable
- let self.cachedDisplayString = self.cachedDisplayString . '*'
- endif
-
- let self._bookmarkNames = []
- for i in g:NERDTreeBookmark.Bookmarks()
- if i.path.equals(self)
- call add(self._bookmarkNames, i.name)
- endif
- endfor
- if !empty(self._bookmarkNames)
- let self.cachedDisplayString .= ' {' . join(self._bookmarkNames) . '}'
- endif
-
- if self.isSymLink
- let self.cachedDisplayString .= ' -> ' . self.symLinkDest
- endif
-
- if self.isReadOnly
- let self.cachedDisplayString .= ' [RO]'
- endif
-endfunction
-
-"FUNCTION: Path.changeToDir() {{{1
-function! s:Path.changeToDir()
- let dir = self.str({'format': 'Cd'})
- if self.isDirectory ==# 0
- let dir = self.getParent().str({'format': 'Cd'})
- endif
-
- try
- execute "cd " . dir
- call nerdtree#echo("CWD is now: " . getcwd())
- catch
- throw "NERDTree.PathChangeError: cannot change CWD to " . dir
- endtry
-endfunction
-
-"FUNCTION: Path.compareTo() {{{1
-"
-"Compares this Path to the given path and returns 0 if they are equal, -1 if
-"this Path is "less than" the given path, or 1 if it is "greater".
-"
-"Args:
-"path: the path object to compare this to
-"
-"Return:
-"1, -1 or 0
-function! s:Path.compareTo(path)
- let thisPath = self.getLastPathComponent(1)
- let thatPath = a:path.getLastPathComponent(1)
-
- "if the paths are the same then clearly we return 0
- if thisPath ==# thatPath
- return 0
- endif
-
- let thisSS = self.getSortOrderIndex()
- let thatSS = a:path.getSortOrderIndex()
-
- "compare the sort sequences, if they are different then the return
- "value is easy
- if thisSS < thatSS
- return -1
- elseif thisSS > thatSS
- return 1
- else
- "if the sort sequences are the same then compare the paths
- "alphabetically
- let pathCompare = g:NERDTreeCaseSensitiveSort ? thisPath <# thatPath : thisPath thatPath
- if pathCompare
- return -1
- else
- return 1
- endif
- endif
-endfunction
-
-"FUNCTION: Path.Create(fullpath) {{{1
-"
-"Factory method.
-"
-"Creates a path object with the given path. The path is also created on the
-"filesystem. If the path already exists, a NERDTree.Path.Exists exception is
-"thrown. If any other errors occur, a NERDTree.Path exception is thrown.
-"
-"Args:
-"fullpath: the full filesystem path to the file/dir to create
-function! s:Path.Create(fullpath)
- "bail if the a:fullpath already exists
- if isdirectory(a:fullpath) || filereadable(a:fullpath)
- throw "NERDTree.CreatePathError: Directory Exists: '" . a:fullpath . "'"
- endif
-
- try
-
- "if it ends with a slash, assume its a dir create it
- if a:fullpath =~# '\(\\\|\/\)$'
- "whack the trailing slash off the end if it exists
- let fullpath = substitute(a:fullpath, '\(\\\|\/\)$', '', '')
-
- call mkdir(fullpath, 'p')
-
- "assume its a file and create
- else
- call writefile([], a:fullpath)
- endif
- catch
- throw "NERDTree.CreatePathError: Could not create path: '" . a:fullpath . "'"
- endtry
-
- return s:Path.New(a:fullpath)
-endfunction
-
-"FUNCTION: Path.copy(dest) {{{1
-"
-"Copies the file/dir represented by this Path to the given location
-"
-"Args:
-"dest: the location to copy this dir/file to
-function! s:Path.copy(dest)
- if !s:Path.CopyingSupported()
- throw "NERDTree.CopyingNotSupportedError: Copying is not supported on this OS"
- endif
-
- let dest = s:Path.WinToUnixPath(a:dest)
-
- let cmd = g:NERDTreeCopyCmd . " " . escape(self.str(), nerdtree#escChars()) . " " . escape(dest, nerdtree#escChars())
- let success = system(cmd)
- if success != 0
- throw "NERDTree.CopyError: Could not copy ''". self.str() ."'' to: '" . a:dest . "'"
- endif
-endfunction
-
-"FUNCTION: Path.CopyingSupported() {{{1
-"
-"returns 1 if copying is supported for this OS
-function! s:Path.CopyingSupported()
- return exists('g:NERDTreeCopyCmd')
-endfunction
-
-"FUNCTION: Path.copyingWillOverwrite(dest) {{{1
-"
-"returns 1 if copy this path to the given location will cause files to
-"overwritten
-"
-"Args:
-"dest: the location this path will be copied to
-function! s:Path.copyingWillOverwrite(dest)
- if filereadable(a:dest)
- return 1
- endif
-
- if isdirectory(a:dest)
- let path = s:Path.JoinPathStrings(a:dest, self.getLastPathComponent(0))
- if filereadable(path)
- return 1
- endif
- endif
-endfunction
-
-"FUNCTION: Path.delete() {{{1
-"
-"Deletes the file represented by this path.
-"Deletion of directories is not supported
-"
-"Throws NERDTree.Path.Deletion exceptions
-function! s:Path.delete()
- if self.isDirectory
-
- let cmd = g:NERDTreeRemoveDirCmd . self.str({'escape': 1})
- let success = system(cmd)
-
- if v:shell_error != 0
- throw "NERDTree.PathDeletionError: Could not delete directory: '" . self.str() . "'"
- endif
- else
- let success = delete(self.str())
- if success != 0
- throw "NERDTree.PathDeletionError: Could not delete file: '" . self.str() . "'"
- endif
- endif
-
- "delete all bookmarks for this path
- for i in self.bookmarkNames()
- let bookmark = g:NERDTreeBookmark.BookmarkFor(i)
- call bookmark.delete()
- endfor
-endfunction
-
-"FUNCTION: Path.displayString() {{{1
-"
-"Returns a string that specifies how the path should be represented as a
-"string
-function! s:Path.displayString()
- if self.cachedDisplayString ==# ""
- call self.cacheDisplayString()
- endif
-
- return self.cachedDisplayString
-endfunction
-
-"FUNCTION: Path.edit() {{{1
-function! s:Path.edit()
- exec "edit " . self.str({'format': 'Edit'})
-endfunction
-
-"FUNCTION: Path.extractDriveLetter(fullpath) {{{1
-"
-"If running windows, cache the drive letter for this path
-function! s:Path.extractDriveLetter(fullpath)
- if nerdtree#runningWindows()
- if a:fullpath =~ '^\(\\\\\|\/\/\)'
- "For network shares, the 'drive' consists of the first two parts of the path, i.e. \\boxname\share
- let self.drive = substitute(a:fullpath, '^\(\(\\\\\|\/\/\)[^\\\/]*\(\\\|\/\)[^\\\/]*\).*', '\1', '')
- let self.drive = substitute(self.drive, '/', '\', "g")
- else
- let self.drive = substitute(a:fullpath, '\(^[a-zA-Z]:\).*', '\1', '')
- endif
- else
- let self.drive = ''
- endif
-
-endfunction
-
-"FUNCTION: Path.exists() {{{1
-"return 1 if this path points to a location that is readable or is a directory
-function! s:Path.exists()
- let p = self.str()
- return filereadable(p) || isdirectory(p)
-endfunction
-
-"FUNCTION: Path.getDir() {{{1
-"
-"Returns this path if it is a directory, else this paths parent.
-"
-"Return:
-"a Path object
-function! s:Path.getDir()
- if self.isDirectory
- return self
- else
- return self.getParent()
- endif
-endfunction
-
-"FUNCTION: Path.getParent() {{{1
-"
-"Returns a new path object for this paths parent
-"
-"Return:
-"a new Path object
-function! s:Path.getParent()
- if nerdtree#runningWindows()
- let path = self.drive . '\' . join(self.pathSegments[0:-2], '\')
- else
- let path = '/'. join(self.pathSegments[0:-2], '/')
- endif
-
- return s:Path.New(path)
-endfunction
-
-"FUNCTION: Path.getLastPathComponent(dirSlash) {{{1
-"
-"Gets the last part of this path.
-"
-"Args:
-"dirSlash: if 1 then a trailing slash will be added to the returned value for
-"directory nodes.
-function! s:Path.getLastPathComponent(dirSlash)
- if empty(self.pathSegments)
- return ''
- endif
- let toReturn = self.pathSegments[-1]
- if a:dirSlash && self.isDirectory
- let toReturn = toReturn . '/'
- endif
- return toReturn
-endfunction
-
-"FUNCTION: Path.getSortOrderIndex() {{{1
-"returns the index of the pattern in g:NERDTreeSortOrder that this path matches
-function! s:Path.getSortOrderIndex()
- let i = 0
- while i < len(g:NERDTreeSortOrder)
- if self.getLastPathComponent(1) =~# g:NERDTreeSortOrder[i]
- return i
- endif
- let i = i + 1
- endwhile
- return s:NERDTreeSortStarIndex
-endfunction
-
-"FUNCTION: Path.isUnixHiddenFile() {{{1
-"check for unix hidden files
-function! s:Path.isUnixHiddenFile()
- return self.getLastPathComponent(0) =~# '^\.'
-endfunction
-
-"FUNCTION: Path.isUnixHiddenPath() {{{1
-"check for unix path with hidden components
-function! s:Path.isUnixHiddenPath()
- if self.getLastPathComponent(0) =~# '^\.'
- return 1
- else
- for segment in self.pathSegments
- if segment =~# '^\.'
- return 1
- endif
- endfor
- return 0
- endif
-endfunction
-
-"FUNCTION: Path.ignore() {{{1
-"returns true if this path should be ignored
-function! s:Path.ignore()
- "filter out the user specified paths to ignore
- if b:NERDTreeIgnoreEnabled
- for i in g:NERDTreeIgnore
- if self._ignorePatternMatches(i)
- return 1
- endif
- endfor
- endif
-
- "dont show hidden files unless instructed to
- if b:NERDTreeShowHidden ==# 0 && self.isUnixHiddenFile()
- return 1
- endif
-
- if b:NERDTreeShowFiles ==# 0 && self.isDirectory ==# 0
- return 1
- endif
-
- if exists("*NERDTreeCustomIgnoreFilter") && NERDTreeCustomIgnoreFilter(self)
- return 1
- endif
-
- return 0
-endfunction
-
-"FUNCTION: Path._ignorePatternMatches(pattern) {{{1
-"returns true if this path matches the given ignore pattern
-function! s:Path._ignorePatternMatches(pattern)
- let pat = a:pattern
- if strpart(pat,len(pat)-7) == '[[dir]]'
- if !self.isDirectory
- return 0
- endif
- let pat = strpart(pat,0, len(pat)-7)
- elseif strpart(pat,len(pat)-8) == '[[file]]'
- if self.isDirectory
- return 0
- endif
- let pat = strpart(pat,0, len(pat)-8)
- endif
-
- return self.getLastPathComponent(0) =~# pat
-endfunction
-
-"FUNCTION: Path.isUnder(path) {{{1
-"return 1 if this path is somewhere under the given path in the filesystem.
-"
-"a:path should be a dir
-function! s:Path.isUnder(path)
- if a:path.isDirectory == 0
- return 0
- endif
-
- let this = self.str()
- let that = a:path.str()
- return stridx(this, that . s:Path.Slash()) == 0
-endfunction
-
-"FUNCTION: Path.JoinPathStrings(...) {{{1
-function! s:Path.JoinPathStrings(...)
- let components = []
- for i in a:000
- let components = extend(components, split(i, '/'))
- endfor
- return '/' . join(components, '/')
-endfunction
-
-"FUNCTION: Path.equals() {{{1
-"
-"Determines whether 2 path objects are "equal".
-"They are equal if the paths they represent are the same
-"
-"Args:
-"path: the other path obj to compare this with
-function! s:Path.equals(path)
- return self.str() ==# a:path.str()
-endfunction
-
-"FUNCTION: Path.New() {{{1
-"The Constructor for the Path object
-function! s:Path.New(path)
- let newPath = copy(self)
-
- call newPath.readInfoFromDisk(s:Path.AbsolutePathFor(a:path))
-
- let newPath.cachedDisplayString = ""
-
- return newPath
-endfunction
-
-"FUNCTION: Path.Slash() {{{1
-"return the slash to use for the current OS
-function! s:Path.Slash()
- return nerdtree#runningWindows() ? '\' : '/'
-endfunction
-
-"FUNCTION: Path.Resolve() {{{1
-"Invoke the vim resolve() function and return the result
-"This is necessary because in some versions of vim resolve() removes trailing
-"slashes while in other versions it doesn't. This always removes the trailing
-"slash
-function! s:Path.Resolve(path)
- let tmp = resolve(a:path)
- return tmp =~# '.\+/$' ? substitute(tmp, '/$', '', '') : tmp
-endfunction
-
-"FUNCTION: Path.readInfoFromDisk(fullpath) {{{1
-"
-"
-"Throws NERDTree.Path.InvalidArguments exception.
-function! s:Path.readInfoFromDisk(fullpath)
- call self.extractDriveLetter(a:fullpath)
-
- let fullpath = s:Path.WinToUnixPath(a:fullpath)
-
- if getftype(fullpath) ==# "fifo"
- throw "NERDTree.InvalidFiletypeError: Cant handle FIFO files: " . a:fullpath
- endif
-
- let self.pathSegments = split(fullpath, '/')
-
- let self.isReadOnly = 0
- if isdirectory(a:fullpath)
- let self.isDirectory = 1
- elseif filereadable(a:fullpath)
- let self.isDirectory = 0
- let self.isReadOnly = filewritable(a:fullpath) ==# 0
- else
- throw "NERDTree.InvalidArgumentsError: Invalid path = " . a:fullpath
- endif
-
- let self.isExecutable = 0
- if !self.isDirectory
- let self.isExecutable = getfperm(a:fullpath) =~# 'x'
- endif
-
- "grab the last part of the path (minus the trailing slash)
- let lastPathComponent = self.getLastPathComponent(0)
-
- "get the path to the new node with the parent dir fully resolved
- let hardPath = s:Path.Resolve(self.strTrunk()) . '/' . lastPathComponent
-
- "if the last part of the path is a symlink then flag it as such
- let self.isSymLink = (s:Path.Resolve(hardPath) != hardPath)
- if self.isSymLink
- let self.symLinkDest = s:Path.Resolve(fullpath)
-
- "if the link is a dir then slap a / on the end of its dest
- if isdirectory(self.symLinkDest)
-
- "we always wanna treat MS windows shortcuts as files for
- "simplicity
- if hardPath !~# '\.lnk$'
-
- let self.symLinkDest = self.symLinkDest . '/'
- endif
- endif
- endif
-endfunction
-
-"FUNCTION: Path.refresh() {{{1
-function! s:Path.refresh()
- call self.readInfoFromDisk(self.str())
- call self.cacheDisplayString()
-endfunction
-
-"FUNCTION: Path.rename() {{{1
-"
-"Renames this node on the filesystem
-function! s:Path.rename(newPath)
- if a:newPath ==# ''
- throw "NERDTree.InvalidArgumentsError: Invalid newPath for renaming = ". a:newPath
- endif
-
- let success = rename(self.str(), a:newPath)
- if success != 0
- throw "NERDTree.PathRenameError: Could not rename: '" . self.str() . "'" . 'to:' . a:newPath
- endif
- call self.readInfoFromDisk(a:newPath)
-
- for i in self.bookmarkNames()
- let b = g:NERDTreeBookmark.BookmarkFor(i)
- call b.setPath(copy(self))
- endfor
- call g:NERDTreeBookmark.Write()
-endfunction
-
-"FUNCTION: Path.str() {{{1
-"
-"Returns a string representation of this Path
-"
-"Takes an optional dictionary param to specify how the output should be
-"formatted.
-"
-"The dict may have the following keys:
-" 'format'
-" 'escape'
-" 'truncateTo'
-"
-"The 'format' key may have a value of:
-" 'Cd' - a string to be used with the :cd command
-" 'Edit' - a string to be used with :e :sp :new :tabedit etc
-" 'UI' - a string used in the NERD tree UI
-"
-"The 'escape' key, if specified will cause the output to be escaped with
-"shellescape()
-"
-"The 'truncateTo' key causes the resulting string to be truncated to the value
-"'truncateTo' maps to. A '<' char will be prepended.
-function! s:Path.str(...)
- let options = a:0 ? a:1 : {}
- let toReturn = ""
-
- if has_key(options, 'format')
- let format = options['format']
- if has_key(self, '_strFor' . format)
- exec 'let toReturn = self._strFor' . format . '()'
- else
- raise 'NERDTree.UnknownFormatError: unknown format "'. format .'"'
- endif
- else
- let toReturn = self._str()
- endif
-
- if nerdtree#has_opt(options, 'escape')
- let toReturn = shellescape(toReturn)
- endif
-
- if has_key(options, 'truncateTo')
- let limit = options['truncateTo']
- if len(toReturn) > limit
- let toReturn = "<" . strpart(toReturn, len(toReturn) - limit + 1)
- endif
- endif
-
- return toReturn
-endfunction
-
-"FUNCTION: Path._strForUI() {{{1
-function! s:Path._strForUI()
- let toReturn = '/' . join(self.pathSegments, '/')
- if self.isDirectory && toReturn != '/'
- let toReturn = toReturn . '/'
- endif
- return toReturn
-endfunction
-
-"FUNCTION: Path._strForCd() {{{1
-"
-" returns a string that can be used with :cd
-function! s:Path._strForCd()
- return escape(self.str(), nerdtree#escChars())
-endfunction
-
-"FUNCTION: Path._strForEdit() {{{1
-"
-"Return: the string for this path that is suitable to be used with the :edit
-"command
-function! s:Path._strForEdit()
- let p = escape(self.str({'format': 'UI'}), nerdtree#escChars())
- let cwd = getcwd() . s:Path.Slash()
-
- "return a relative path if we can
- let isRelative = 0
- if nerdtree#runningWindows()
- let isRelative = stridx(tolower(p), tolower(cwd)) == 0
- else
- let isRelative = stridx(p, cwd) == 0
- endif
-
- if isRelative
- let p = strpart(p, strlen(cwd))
-
- "handle the edge case where the file begins with a + (vim interprets
- "the +foo in `:e +foo` as an option to :edit)
- if p[0] == "+"
- let p = '\' . p
- endif
- endif
-
- if p ==# ''
- let p = '.'
- endif
-
- return p
-endfunction
-
-"FUNCTION: Path._strForGlob() {{{1
-function! s:Path._strForGlob()
- let lead = s:Path.Slash()
-
- "if we are running windows then slap a drive letter on the front
- if nerdtree#runningWindows()
- let lead = self.drive . '\'
- endif
-
- let toReturn = lead . join(self.pathSegments, s:Path.Slash())
-
- if !nerdtree#runningWindows()
- let toReturn = escape(toReturn, nerdtree#escChars())
- endif
- return toReturn
-endfunction
-
-"FUNCTION: Path._str() {{{1
-"
-"Gets the string path for this path object that is appropriate for the OS.
-"EG, in windows c:\foo\bar
-" in *nix /foo/bar
-function! s:Path._str()
- let lead = s:Path.Slash()
-
- "if we are running windows then slap a drive letter on the front
- if nerdtree#runningWindows()
- let lead = self.drive . '\'
- endif
-
- return lead . join(self.pathSegments, s:Path.Slash())
-endfunction
-
-"FUNCTION: Path.strTrunk() {{{1
-"Gets the path without the last segment on the end.
-function! s:Path.strTrunk()
- return self.drive . '/' . join(self.pathSegments[0:-2], '/')
-endfunction
-
-" FUNCTION: Path.tabnr() {{{1
-" return the number of the first tab that is displaying this file
-"
-" return 0 if no tab was found
-function! s:Path.tabnr()
- let str = self.str()
- for t in range(tabpagenr('$'))
- for b in tabpagebuflist(t+1)
- if str == expand('#' . b . ':p')
- return t+1
- endif
- endfor
- endfor
- return 0
-endfunction
-
-"FUNCTION: Path.WinToUnixPath(pathstr){{{1
-"Takes in a windows path and returns the unix equiv
-"
-"A class level method
-"
-"Args:
-"pathstr: the windows path to convert
-function! s:Path.WinToUnixPath(pathstr)
- if !nerdtree#runningWindows()
- return a:pathstr
- endif
-
- let toReturn = a:pathstr
-
- "remove the x:\ of the front
- let toReturn = substitute(toReturn, '^.*:\(\\\|/\)\?', '/', "")
-
- "remove the \\ network share from the front
- let toReturn = substitute(toReturn, '^\(\\\\\|\/\/\)[^\\\/]*\(\\\|\/\)[^\\\/]*\(\\\|\/\)\?', '/', "")
-
- "convert all \ chars to /
- let toReturn = substitute(toReturn, '\', '/', "g")
-
- return toReturn
-endfunction
-
-" vim: set sw=4 sts=4 et fdm=marker:
diff --git a/vim/bundle/nerdtree/lib/nerdtree/tree_dir_node.vim b/vim/bundle/nerdtree/lib/nerdtree/tree_dir_node.vim
deleted file mode 100644
index e3a068e..0000000
--- a/vim/bundle/nerdtree/lib/nerdtree/tree_dir_node.vim
+++ /dev/null
@@ -1,528 +0,0 @@
-"CLASS: TreeDirNode
-"A subclass of NERDTreeFileNode.
-"
-"The 'composite' part of the file/dir composite.
-"============================================================
-let s:TreeDirNode = copy(g:NERDTreeFileNode)
-let g:NERDTreeDirNode = s:TreeDirNode
-
-"FUNCTION: TreeDirNode.AbsoluteTreeRoot(){{{1
-"class method that returns the highest cached ancestor of the current root
-function! s:TreeDirNode.AbsoluteTreeRoot()
- let currentNode = b:NERDTreeRoot
- while currentNode.parent != {}
- let currentNode = currentNode.parent
- endwhile
- return currentNode
-endfunction
-
-"FUNCTION: TreeDirNode.activate([options]) {{{1
-unlet s:TreeDirNode.activate
-function! s:TreeDirNode.activate(...)
- let opts = a:0 ? a:1 : {}
- call self.toggleOpen(opts)
- call nerdtree#renderView()
- call self.putCursorHere(0, 0)
-endfunction
-
-"FUNCTION: TreeDirNode.addChild(treenode, inOrder) {{{1
-"Adds the given treenode to the list of children for this node
-"
-"Args:
-"-treenode: the node to add
-"-inOrder: 1 if the new node should be inserted in sorted order
-function! s:TreeDirNode.addChild(treenode, inOrder)
- call add(self.children, a:treenode)
- let a:treenode.parent = self
-
- if a:inOrder
- call self.sortChildren()
- endif
-endfunction
-
-"FUNCTION: TreeDirNode.close() {{{1
-"Closes this directory
-function! s:TreeDirNode.close()
- let self.isOpen = 0
-endfunction
-
-"FUNCTION: TreeDirNode.closeChildren() {{{1
-"Closes all the child dir nodes of this node
-function! s:TreeDirNode.closeChildren()
- for i in self.children
- if i.path.isDirectory
- call i.close()
- call i.closeChildren()
- endif
- endfor
-endfunction
-
-"FUNCTION: TreeDirNode.createChild(path, inOrder) {{{1
-"Instantiates a new child node for this node with the given path. The new
-"nodes parent is set to this node.
-"
-"Args:
-"path: a Path object that this node will represent/contain
-"inOrder: 1 if the new node should be inserted in sorted order
-"
-"Returns:
-"the newly created node
-function! s:TreeDirNode.createChild(path, inOrder)
- let newTreeNode = g:NERDTreeFileNode.New(a:path)
- call self.addChild(newTreeNode, a:inOrder)
- return newTreeNode
-endfunction
-
-"FUNCTION: TreeDirNode.findNode(path) {{{1
-"Will find one of the children (recursively) that has the given path
-"
-"Args:
-"path: a path object
-unlet s:TreeDirNode.findNode
-function! s:TreeDirNode.findNode(path)
- if a:path.equals(self.path)
- return self
- endif
- if stridx(a:path.str(), self.path.str(), 0) ==# -1
- return {}
- endif
-
- if self.path.isDirectory
- for i in self.children
- let retVal = i.findNode(a:path)
- if retVal != {}
- return retVal
- endif
- endfor
- endif
- return {}
-endfunction
-
-"FUNCTION: TreeDirNode.getChildCount() {{{1
-"Returns the number of children this node has
-function! s:TreeDirNode.getChildCount()
- return len(self.children)
-endfunction
-
-"FUNCTION: TreeDirNode.getChild(path) {{{1
-"Returns child node of this node that has the given path or {} if no such node
-"exists.
-"
-"This function doesnt not recurse into child dir nodes
-"
-"Args:
-"path: a path object
-function! s:TreeDirNode.getChild(path)
- if stridx(a:path.str(), self.path.str(), 0) ==# -1
- return {}
- endif
-
- let index = self.getChildIndex(a:path)
- if index ==# -1
- return {}
- else
- return self.children[index]
- endif
-
-endfunction
-
-"FUNCTION: TreeDirNode.getChildByIndex(indx, visible) {{{1
-"returns the child at the given index
-"Args:
-"indx: the index to get the child from
-"visible: 1 if only the visible children array should be used, 0 if all the
-"children should be searched.
-function! s:TreeDirNode.getChildByIndex(indx, visible)
- let array_to_search = a:visible? self.getVisibleChildren() : self.children
- if a:indx > len(array_to_search)
- throw "NERDTree.InvalidArgumentsError: Index is out of bounds."
- endif
- return array_to_search[a:indx]
-endfunction
-
-"FUNCTION: TreeDirNode.getChildIndex(path) {{{1
-"Returns the index of the child node of this node that has the given path or
-"-1 if no such node exists.
-"
-"This function doesnt not recurse into child dir nodes
-"
-"Args:
-"path: a path object
-function! s:TreeDirNode.getChildIndex(path)
- if stridx(a:path.str(), self.path.str(), 0) ==# -1
- return -1
- endif
-
- "do a binary search for the child
- let a = 0
- let z = self.getChildCount()
- while a < z
- let mid = (a+z)/2
- let diff = a:path.compareTo(self.children[mid].path)
-
- if diff ==# -1
- let z = mid
- elseif diff ==# 1
- let a = mid+1
- else
- return mid
- endif
- endwhile
- return -1
-endfunction
-
-"FUNCTION: TreeDirNode.GetSelected() {{{1
-"Returns the current node if it is a dir node, or else returns the current
-"nodes parent
-unlet s:TreeDirNode.GetSelected
-function! s:TreeDirNode.GetSelected()
- let currentDir = g:NERDTreeFileNode.GetSelected()
- if currentDir != {} && !currentDir.isRoot()
- if currentDir.path.isDirectory ==# 0
- let currentDir = currentDir.parent
- endif
- endif
- return currentDir
-endfunction
-
-"FUNCTION: TreeDirNode.getVisibleChildCount() {{{1
-"Returns the number of visible children this node has
-function! s:TreeDirNode.getVisibleChildCount()
- return len(self.getVisibleChildren())
-endfunction
-
-"FUNCTION: TreeDirNode.getVisibleChildren() {{{1
-"Returns a list of children to display for this node, in the correct order
-"
-"Return:
-"an array of treenodes
-function! s:TreeDirNode.getVisibleChildren()
- let toReturn = []
- for i in self.children
- if i.path.ignore() ==# 0
- call add(toReturn, i)
- endif
- endfor
- return toReturn
-endfunction
-
-"FUNCTION: TreeDirNode.hasVisibleChildren() {{{1
-"returns 1 if this node has any childre, 0 otherwise..
-function! s:TreeDirNode.hasVisibleChildren()
- return self.getVisibleChildCount() != 0
-endfunction
-
-"FUNCTION: TreeDirNode._initChildren() {{{1
-"Removes all childen from this node and re-reads them
-"
-"Args:
-"silent: 1 if the function should not echo any "please wait" messages for
-"large directories
-"
-"Return: the number of child nodes read
-function! s:TreeDirNode._initChildren(silent)
- "remove all the current child nodes
- let self.children = []
-
- "get an array of all the files in the nodes dir
- let dir = self.path
- let globDir = dir.str({'format': 'Glob'})
-
- if version >= 703
- let filesStr = globpath(globDir, '*', 1) . "\n" . globpath(globDir, '.*', 1)
- else
- let filesStr = globpath(globDir, '*') . "\n" . globpath(globDir, '.*')
- endif
-
- let files = split(filesStr, "\n")
-
- if !a:silent && len(files) > g:NERDTreeNotificationThreshold
- call nerdtree#echo("Please wait, caching a large dir ...")
- endif
-
- let invalidFilesFound = 0
- for i in files
-
- "filter out the .. and . directories
- "Note: we must match .. AND ../ cos sometimes the globpath returns
- "../ for path with strange chars (eg $)
- if i !~# '\/\.\.\/\?$' && i !~# '\/\.\/\?$'
-
- "put the next file in a new node and attach it
- try
- let path = g:NERDTreePath.New(i)
- call self.createChild(path, 0)
- catch /^NERDTree.\(InvalidArguments\|InvalidFiletype\)Error/
- let invalidFilesFound += 1
- endtry
- endif
- endfor
-
- call self.sortChildren()
-
- if !a:silent && len(files) > g:NERDTreeNotificationThreshold
- call nerdtree#echo("Please wait, caching a large dir ... DONE (". self.getChildCount() ." nodes cached).")
- endif
-
- if invalidFilesFound
- call nerdtree#echoWarning(invalidFilesFound . " file(s) could not be loaded into the NERD tree")
- endif
- return self.getChildCount()
-endfunction
-
-"FUNCTION: TreeDirNode.New(path) {{{1
-"Returns a new TreeNode object with the given path and parent
-"
-"Args:
-"path: a path object representing the full filesystem path to the file/dir that the node represents
-unlet s:TreeDirNode.New
-function! s:TreeDirNode.New(path)
- if a:path.isDirectory != 1
- throw "NERDTree.InvalidArgumentsError: A TreeDirNode object must be instantiated with a directory Path object."
- endif
-
- let newTreeNode = copy(self)
- let newTreeNode.path = a:path
-
- let newTreeNode.isOpen = 0
- let newTreeNode.children = []
-
- let newTreeNode.parent = {}
-
- return newTreeNode
-endfunction
-
-"FUNCTION: TreeDirNode.open([opts]) {{{1
-"Open the dir in the current tree or in a new tree elsewhere.
-"
-"If opening in the current tree, return the number of cached nodes.
-unlet s:TreeDirNode.open
-function! s:TreeDirNode.open(...)
- let opts = a:0 ? a:1 : {}
-
- if has_key(opts, 'where') && !empty(opts['where'])
- let opener = g:NERDTreeOpener.New(self.path, opts)
- call opener.open(self)
- else
- let self.isOpen = 1
- if self.children ==# []
- return self._initChildren(0)
- else
- return 0
- endif
- endif
-endfunction
-
-"FUNCTION: TreeDirNode.openAlong([opts]) {{{1
-"recursive open the dir if it has only one directory child.
-"
-"return the level of opened directories.
-function! s:TreeDirNode.openAlong(...)
- let opts = a:0 ? a:1 : {}
- let level = 0
-
- let node = self
- while node.path.isDirectory
- call node.open(opts)
- let level += 1
- if node.getVisibleChildCount() == 1
- let node = node.getChildByIndex(0, 1)
- else
- break
- endif
- endwhile
- return level
-endfunction
-
-" FUNCTION: TreeDirNode.openExplorer() {{{1
-" opens an explorer window for this node in the previous window (could be a
-" nerd tree or a netrw)
-function! s:TreeDirNode.openExplorer()
- call self.open({'where': 'p'})
-endfunction
-
-"FUNCTION: TreeDirNode.openInNewTab(options) {{{1
-unlet s:TreeDirNode.openInNewTab
-function! s:TreeDirNode.openInNewTab(options)
- call nerdtree#deprecated('TreeDirNode.openInNewTab', 'is deprecated, use open() instead')
- call self.open({'where': 't'})
-endfunction
-
-"FUNCTION: TreeDirNode._openInNewTab() {{{1
-function! s:TreeDirNode._openInNewTab()
- tabnew
- call g:NERDTreeCreator.CreatePrimary(self.path.str())
-endfunction
-
-"FUNCTION: TreeDirNode.openRecursively() {{{1
-"Opens this treenode and all of its children whose paths arent 'ignored'
-"because of the file filters.
-"
-"This method is actually a wrapper for the OpenRecursively2 method which does
-"the work.
-function! s:TreeDirNode.openRecursively()
- call self._openRecursively2(1)
-endfunction
-
-"FUNCTION: TreeDirNode._openRecursively2() {{{1
-"Opens this all children of this treenode recursively if either:
-" *they arent filtered by file filters
-" *a:forceOpen is 1
-"
-"Args:
-"forceOpen: 1 if this node should be opened regardless of file filters
-function! s:TreeDirNode._openRecursively2(forceOpen)
- if self.path.ignore() ==# 0 || a:forceOpen
- let self.isOpen = 1
- if self.children ==# []
- call self._initChildren(1)
- endif
-
- for i in self.children
- if i.path.isDirectory ==# 1
- call i._openRecursively2(0)
- endif
- endfor
- endif
-endfunction
-
-"FUNCTION: TreeDirNode.refresh() {{{1
-unlet s:TreeDirNode.refresh
-function! s:TreeDirNode.refresh()
- call self.path.refresh()
-
- "if this node was ever opened, refresh its children
- if self.isOpen || !empty(self.children)
- "go thru all the files/dirs under this node
- let newChildNodes = []
- let invalidFilesFound = 0
- let dir = self.path
- let globDir = dir.str({'format': 'Glob'})
- let filesStr = globpath(globDir, '*') . "\n" . globpath(globDir, '.*')
- let files = split(filesStr, "\n")
- for i in files
- "filter out the .. and . directories
- "Note: we must match .. AND ../ cos sometimes the globpath returns
- "../ for path with strange chars (eg $)
- if i !~# '\/\.\.\/\?$' && i !~# '\/\.\/\?$'
-
- try
- "create a new path and see if it exists in this nodes children
- let path = g:NERDTreePath.New(i)
- let newNode = self.getChild(path)
- if newNode != {}
- call newNode.refresh()
- call add(newChildNodes, newNode)
-
- "the node doesnt exist so create it
- else
- let newNode = g:NERDTreeFileNode.New(path)
- let newNode.parent = self
- call add(newChildNodes, newNode)
- endif
-
-
- catch /^NERDTree.\(InvalidArguments\|InvalidFiletype\)Error/
- let invalidFilesFound = 1
- endtry
- endif
- endfor
-
- "swap this nodes children out for the children we just read/refreshed
- let self.children = newChildNodes
- call self.sortChildren()
-
- if invalidFilesFound
- call nerdtree#echoWarning("some files could not be loaded into the NERD tree")
- endif
- endif
-endfunction
-
-"FUNCTION: TreeDirNode.reveal(path) {{{1
-"reveal the given path, i.e. cache and open all treenodes needed to display it
-"in the UI
-function! s:TreeDirNode.reveal(path)
- if !a:path.isUnder(self.path)
- throw "NERDTree.InvalidArgumentsError: " . a:path.str() . " should be under " . self.path.str()
- endif
-
- call self.open()
-
- if self.path.equals(a:path.getParent())
- let n = self.findNode(a:path)
- call nerdtree#renderView()
- call n.putCursorHere(1,0)
- return
- endif
-
- let p = a:path
- while !p.getParent().equals(self.path)
- let p = p.getParent()
- endwhile
-
- let n = self.findNode(p)
- call n.reveal(a:path)
-endfunction
-
-"FUNCTION: TreeDirNode.removeChild(treenode) {{{1
-"
-"Removes the given treenode from this nodes set of children
-"
-"Args:
-"treenode: the node to remove
-"
-"Throws a NERDTree.ChildNotFoundError if the given treenode is not found
-function! s:TreeDirNode.removeChild(treenode)
- for i in range(0, self.getChildCount()-1)
- if self.children[i].equals(a:treenode)
- call remove(self.children, i)
- return
- endif
- endfor
-
- throw "NERDTree.ChildNotFoundError: child node was not found"
-endfunction
-
-"FUNCTION: TreeDirNode.sortChildren() {{{1
-"
-"Sorts the children of this node according to alphabetical order and the
-"directory priority.
-"
-function! s:TreeDirNode.sortChildren()
- let CompareFunc = function("nerdtree#compareNodes")
- call sort(self.children, CompareFunc)
-endfunction
-
-"FUNCTION: TreeDirNode.toggleOpen([options]) {{{1
-"Opens this directory if it is closed and vice versa
-function! s:TreeDirNode.toggleOpen(...)
- let opts = a:0 ? a:1 : {}
- if self.isOpen ==# 1
- call self.close()
- else
- if g:NERDTreeCasadeOpenSingleChildDir == 0
- call self.open(opts)
- else
- call self.openAlong(opts)
- endif
- endif
-endfunction
-
-"FUNCTION: TreeDirNode.transplantChild(newNode) {{{1
-"Replaces the child of this with the given node (where the child node's full
-"path matches a:newNode's fullpath). The search for the matching node is
-"non-recursive
-"
-"Arg:
-"newNode: the node to graft into the tree
-function! s:TreeDirNode.transplantChild(newNode)
- for i in range(0, self.getChildCount()-1)
- if self.children[i].equals(a:newNode)
- let self.children[i] = a:newNode
- let a:newNode.parent = self
- break
- endif
- endfor
-endfunction
-
-" vim: set sw=4 sts=4 et fdm=marker:
diff --git a/vim/bundle/nerdtree/lib/nerdtree/tree_file_node.vim b/vim/bundle/nerdtree/lib/nerdtree/tree_file_node.vim
deleted file mode 100644
index ab8d371..0000000
--- a/vim/bundle/nerdtree/lib/nerdtree/tree_file_node.vim
+++ /dev/null
@@ -1,485 +0,0 @@
-"CLASS: TreeFileNode
-"This class is the parent of the TreeDirNode class and is the
-"'Component' part of the composite design pattern between the treenode
-"classes.
-"============================================================
-let s:TreeFileNode = {}
-let g:NERDTreeFileNode = s:TreeFileNode
-
-"FUNCTION: TreeFileNode.activate(...) {{{1
-function! s:TreeFileNode.activate(...)
- call self.open(a:0 ? a:1 : {})
-endfunction
-
-"FUNCTION: TreeFileNode.bookmark(name) {{{1
-"bookmark this node with a:name
-function! s:TreeFileNode.bookmark(name)
-
- "if a bookmark exists with the same name and the node is cached then save
- "it so we can update its display string
- let oldMarkedNode = {}
- try
- let oldMarkedNode = g:NERDTreeBookmark.GetNodeForName(a:name, 1)
- catch /^NERDTree.BookmarkNotFoundError/
- catch /^NERDTree.BookmarkedNodeNotFoundError/
- endtry
-
- call g:NERDTreeBookmark.AddBookmark(a:name, self.path)
- call self.path.cacheDisplayString()
- call g:NERDTreeBookmark.Write()
-
- if !empty(oldMarkedNode)
- call oldMarkedNode.path.cacheDisplayString()
- endif
-endfunction
-
-"FUNCTION: TreeFileNode.cacheParent() {{{1
-"initializes self.parent if it isnt already
-function! s:TreeFileNode.cacheParent()
- if empty(self.parent)
- let parentPath = self.path.getParent()
- if parentPath.equals(self.path)
- throw "NERDTree.CannotCacheParentError: already at root"
- endif
- let self.parent = s:TreeFileNode.New(parentPath)
- endif
-endfunction
-
-"FUNCTION: TreeFileNode.clearBookmarks() {{{1
-function! s:TreeFileNode.clearBookmarks()
- for i in g:NERDTreeBookmark.Bookmarks()
- if i.path.equals(self.path)
- call i.delete()
- end
- endfor
- call self.path.cacheDisplayString()
-endfunction
-
-"FUNCTION: TreeFileNode.copy(dest) {{{1
-function! s:TreeFileNode.copy(dest)
- call self.path.copy(a:dest)
- let newPath = g:NERDTreePath.New(a:dest)
- let parent = b:NERDTreeRoot.findNode(newPath.getParent())
- if !empty(parent)
- call parent.refresh()
- return parent.findNode(newPath)
- else
- return {}
- endif
-endfunction
-
-"FUNCTION: TreeFileNode.delete {{{1
-"Removes this node from the tree and calls the Delete method for its path obj
-function! s:TreeFileNode.delete()
- call self.path.delete()
- call self.parent.removeChild(self)
-endfunction
-
-"FUNCTION: TreeFileNode.displayString() {{{1
-"
-"Returns a string that specifies how the node should be represented as a
-"string
-"
-"Return:
-"a string that can be used in the view to represent this node
-function! s:TreeFileNode.displayString()
- return self.path.displayString()
-endfunction
-
-"FUNCTION: TreeFileNode.equals(treenode) {{{1
-"
-"Compares this treenode to the input treenode and returns 1 if they are the
-"same node.
-"
-"Use this method instead of == because sometimes when the treenodes contain
-"many children, vim seg faults when doing ==
-"
-"Args:
-"treenode: the other treenode to compare to
-function! s:TreeFileNode.equals(treenode)
- return self.path.str() ==# a:treenode.path.str()
-endfunction
-
-"FUNCTION: TreeFileNode.findNode(path) {{{1
-"Returns self if this node.path.Equals the given path.
-"Returns {} if not equal.
-"
-"Args:
-"path: the path object to compare against
-function! s:TreeFileNode.findNode(path)
- if a:path.equals(self.path)
- return self
- endif
- return {}
-endfunction
-
-"FUNCTION: TreeFileNode.findOpenDirSiblingWithVisibleChildren(direction) {{{1
-"
-"Finds the next sibling for this node in the indicated direction. This sibling
-"must be a directory and may/may not have children as specified.
-"
-"Args:
-"direction: 0 if you want to find the previous sibling, 1 for the next sibling
-"
-"Return:
-"a treenode object or {} if no appropriate sibling could be found
-function! s:TreeFileNode.findOpenDirSiblingWithVisibleChildren(direction)
- "if we have no parent then we can have no siblings
- if self.parent != {}
- let nextSibling = self.findSibling(a:direction)
-
- while nextSibling != {}
- if nextSibling.path.isDirectory && nextSibling.hasVisibleChildren() && nextSibling.isOpen
- return nextSibling
- endif
- let nextSibling = nextSibling.findSibling(a:direction)
- endwhile
- endif
-
- return {}
-endfunction
-
-"FUNCTION: TreeFileNode.findSibling(direction) {{{1
-"
-"Finds the next sibling for this node in the indicated direction
-"
-"Args:
-"direction: 0 if you want to find the previous sibling, 1 for the next sibling
-"
-"Return:
-"a treenode object or {} if no sibling could be found
-function! s:TreeFileNode.findSibling(direction)
- "if we have no parent then we can have no siblings
- if self.parent != {}
-
- "get the index of this node in its parents children
- let siblingIndx = self.parent.getChildIndex(self.path)
-
- if siblingIndx != -1
- "move a long to the next potential sibling node
- let siblingIndx = a:direction ==# 1 ? siblingIndx+1 : siblingIndx-1
-
- "keep moving along to the next sibling till we find one that is valid
- let numSiblings = self.parent.getChildCount()
- while siblingIndx >= 0 && siblingIndx < numSiblings
-
- "if the next node is not an ignored node (i.e. wont show up in the
- "view) then return it
- if self.parent.children[siblingIndx].path.ignore() ==# 0
- return self.parent.children[siblingIndx]
- endif
-
- "go to next node
- let siblingIndx = a:direction ==# 1 ? siblingIndx+1 : siblingIndx-1
- endwhile
- endif
- endif
-
- return {}
-endfunction
-
-"FUNCTION: TreeFileNode.getLineNum(){{{1
-"returns the line number this node is rendered on, or -1 if it isnt rendered
-function! s:TreeFileNode.getLineNum()
- "if the node is the root then return the root line no.
- if self.isRoot()
- return s:TreeFileNode.GetRootLineNum()
- endif
-
- let totalLines = line("$")
-
- "the path components we have matched so far
- let pathcomponents = [substitute(b:NERDTreeRoot.path.str({'format': 'UI'}), '/ *$', '', '')]
- "the index of the component we are searching for
- let curPathComponent = 1
-
- let fullpath = self.path.str({'format': 'UI'})
-
-
- let lnum = s:TreeFileNode.GetRootLineNum()
- while lnum > 0
- let lnum = lnum + 1
- "have we reached the bottom of the tree?
- if lnum ==# totalLines+1
- return -1
- endif
-
- let curLine = getline(lnum)
-
- let indent = nerdtree#indentLevelFor(curLine)
- if indent ==# curPathComponent
- let curLine = nerdtree#stripMarkupFromLine(curLine, 1)
-
- let curPath = join(pathcomponents, '/') . '/' . curLine
- if stridx(fullpath, curPath, 0) ==# 0
- if fullpath ==# curPath || strpart(fullpath, len(curPath)-1,1) ==# '/'
- let curLine = substitute(curLine, '/ *$', '', '')
- call add(pathcomponents, curLine)
- let curPathComponent = curPathComponent + 1
-
- if fullpath ==# curPath
- return lnum
- endif
- endif
- endif
- endif
- endwhile
- return -1
-endfunction
-
-"FUNCTION: TreeFileNode.GetRootForTab(){{{1
-"get the root node for this tab
-function! s:TreeFileNode.GetRootForTab()
- if nerdtree#treeExistsForTab()
- return getbufvar(t:NERDTreeBufName, 'NERDTreeRoot')
- end
- return {}
-endfunction
-
-"FUNCTION: TreeFileNode.GetRootLineNum(){{{1
-"gets the line number of the root node
-function! s:TreeFileNode.GetRootLineNum()
- let rootLine = 1
- while getline(rootLine) !~# '^\(/\|<\)'
- let rootLine = rootLine + 1
- endwhile
- return rootLine
-endfunction
-
-"FUNCTION: TreeFileNode.GetSelected() {{{1
-"gets the treenode that the cursor is currently over
-function! s:TreeFileNode.GetSelected()
- try
- let path = nerdtree#getPath(line("."))
- if path ==# {}
- return {}
- endif
- return b:NERDTreeRoot.findNode(path)
- catch /^NERDTree/
- return {}
- endtry
-endfunction
-
-"FUNCTION: TreeFileNode.isVisible() {{{1
-"returns 1 if this node should be visible according to the tree filters and
-"hidden file filters (and their on/off status)
-function! s:TreeFileNode.isVisible()
- return !self.path.ignore()
-endfunction
-
-"FUNCTION: TreeFileNode.isRoot() {{{1
-"returns 1 if this node is b:NERDTreeRoot
-function! s:TreeFileNode.isRoot()
- if !nerdtree#treeExistsForBuf()
- throw "NERDTree.NoTreeError: No tree exists for the current buffer"
- endif
-
- return self.equals(b:NERDTreeRoot)
-endfunction
-
-"FUNCTION: TreeFileNode.makeRoot() {{{1
-"Make this node the root of the tree
-function! s:TreeFileNode.makeRoot()
- if self.path.isDirectory
- let b:NERDTreeRoot = self
- else
- call self.cacheParent()
- let b:NERDTreeRoot = self.parent
- endif
-
- call b:NERDTreeRoot.open()
-
- "change dir to the dir of the new root if instructed to
- if g:NERDTreeChDirMode ==# 2
- exec "cd " . b:NERDTreeRoot.path.str({'format': 'Edit'})
- endif
-
- silent doautocmd User NERDTreeNewRoot
-endfunction
-
-"FUNCTION: TreeFileNode.New(path) {{{1
-"Returns a new TreeNode object with the given path and parent
-"
-"Args:
-"path: a path object representing the full filesystem path to the file/dir that the node represents
-function! s:TreeFileNode.New(path)
- if a:path.isDirectory
- return g:NERDTreeDirNode.New(a:path)
- else
- let newTreeNode = copy(self)
- let newTreeNode.path = a:path
- let newTreeNode.parent = {}
- return newTreeNode
- endif
-endfunction
-
-"FUNCTION: TreeFileNode.open() {{{1
-function! s:TreeFileNode.open(...)
- let opts = a:0 ? a:1 : {}
- let opener = g:NERDTreeOpener.New(self.path, opts)
- call opener.open(self)
-endfunction
-
-"FUNCTION: TreeFileNode.openSplit() {{{1
-"Open this node in a new window
-function! s:TreeFileNode.openSplit()
- call nerdtree#deprecated('TreeFileNode.openSplit', 'is deprecated, use .open() instead.')
- call self.open({'where': 'h'})
-endfunction
-
-"FUNCTION: TreeFileNode.openVSplit() {{{1
-"Open this node in a new vertical window
-function! s:TreeFileNode.openVSplit()
- call nerdtree#deprecated('TreeFileNode.openVSplit', 'is deprecated, use .open() instead.')
- call self.open({'where': 'v'})
-endfunction
-
-"FUNCTION: TreeFileNode.openInNewTab(options) {{{1
-function! s:TreeFileNode.openInNewTab(options)
- echomsg 'TreeFileNode.openInNewTab is deprecated'
- call self.open(extend({'where': 't'}, a:options))
-endfunction
-
-"FUNCTION: TreeFileNode.putCursorHere(isJump, recurseUpward){{{1
-"Places the cursor on the line number this node is rendered on
-"
-"Args:
-"isJump: 1 if this cursor movement should be counted as a jump by vim
-"recurseUpward: try to put the cursor on the parent if the this node isnt
-"visible
-function! s:TreeFileNode.putCursorHere(isJump, recurseUpward)
- let ln = self.getLineNum()
- if ln != -1
- if a:isJump
- mark '
- endif
- call cursor(ln, col("."))
- else
- if a:recurseUpward
- let node = self
- while node != {} && node.getLineNum() ==# -1
- let node = node.parent
- call node.open()
- endwhile
- call nerdtree#renderView()
- call node.putCursorHere(a:isJump, 0)
- endif
- endif
-endfunction
-
-"FUNCTION: TreeFileNode.refresh() {{{1
-function! s:TreeFileNode.refresh()
- call self.path.refresh()
-endfunction
-
-"FUNCTION: TreeFileNode.rename() {{{1
-"Calls the rename method for this nodes path obj
-function! s:TreeFileNode.rename(newName)
- let newName = substitute(a:newName, '\(\\\|\/\)$', '', '')
- call self.path.rename(newName)
- call self.parent.removeChild(self)
-
- let parentPath = self.path.getParent()
- let newParent = b:NERDTreeRoot.findNode(parentPath)
-
- if newParent != {}
- call newParent.createChild(self.path, 1)
- call newParent.refresh()
- endif
-endfunction
-
-"FUNCTION: TreeFileNode.renderToString {{{1
-"returns a string representation for this tree to be rendered in the view
-function! s:TreeFileNode.renderToString()
- return self._renderToString(0, 0, [], self.getChildCount() ==# 1)
-endfunction
-
-"Args:
-"depth: the current depth in the tree for this call
-"drawText: 1 if we should actually draw the line for this node (if 0 then the
-"child nodes are rendered only)
-"vertMap: a binary array that indicates whether a vertical bar should be draw
-"for each depth in the tree
-"isLastChild:true if this curNode is the last child of its parent
-function! s:TreeFileNode._renderToString(depth, drawText, vertMap, isLastChild)
- let output = ""
- if a:drawText ==# 1
-
- let treeParts = ''
-
- "get all the leading spaces and vertical tree parts for this line
- if a:depth > 1
- for j in a:vertMap[0:-2]
- if g:NERDTreeDirArrows
- let treeParts = treeParts . ' '
- else
- if j ==# 1
- let treeParts = treeParts . '| '
- else
- let treeParts = treeParts . ' '
- endif
- endif
- endfor
- endif
-
- "get the last vertical tree part for this line which will be different
- "if this node is the last child of its parent
- if !g:NERDTreeDirArrows
- if a:isLastChild
- let treeParts = treeParts . '`'
- else
- let treeParts = treeParts . '|'
- endif
- endif
-
- "smack the appropriate dir/file symbol on the line before the file/dir
- "name itself
- if self.path.isDirectory
- if self.isOpen
- if g:NERDTreeDirArrows
- let treeParts = treeParts . '▾ '
- else
- let treeParts = treeParts . '~'
- endif
- else
- if g:NERDTreeDirArrows
- let treeParts = treeParts . '▸ '
- else
- let treeParts = treeParts . '+'
- endif
- endif
- else
- if g:NERDTreeDirArrows
- let treeParts = treeParts . ' '
- else
- let treeParts = treeParts . '-'
- endif
- endif
- let line = treeParts . self.displayString()
-
- let output = output . line . "\n"
- endif
-
- "if the node is an open dir, draw its children
- if self.path.isDirectory ==# 1 && self.isOpen ==# 1
-
- let childNodesToDraw = self.getVisibleChildren()
- if len(childNodesToDraw) > 0
-
- "draw all the nodes children except the last
- let lastIndx = len(childNodesToDraw)-1
- if lastIndx > 0
- for i in childNodesToDraw[0:lastIndx-1]
- let output = output . i._renderToString(a:depth + 1, 1, add(copy(a:vertMap), 1), 0)
- endfor
- endif
-
- "draw the last child, indicating that it IS the last
- let output = output . childNodesToDraw[lastIndx]._renderToString(a:depth + 1, 1, add(copy(a:vertMap), 0), 1)
- endif
- endif
-
- return output
-endfunction
-
-" vim: set sw=4 sts=4 et fdm=marker:
diff --git a/vim/bundle/nerdtree/nerdtree_plugin/exec_menuitem.vim b/vim/bundle/nerdtree/nerdtree_plugin/exec_menuitem.vim
deleted file mode 100644
index e7a7c53..0000000
--- a/vim/bundle/nerdtree/nerdtree_plugin/exec_menuitem.vim
+++ /dev/null
@@ -1,41 +0,0 @@
-" ============================================================================
-" File: exec_menuitem.vim
-" Description: plugin for NERD Tree that provides an execute file menu item
-" Maintainer: Martin Grenfell
-" Last Change: 22 July, 2009
-" License: This program is free software. It comes without any warranty,
-" to the extent permitted by applicable law. You can redistribute
-" it and/or modify it under the terms of the Do What The Fuck You
-" Want To Public License, Version 2, as published by Sam Hocevar.
-" See http://sam.zoy.org/wtfpl/COPYING for more details.
-"
-" ============================================================================
-if exists("g:loaded_nerdtree_exec_menuitem")
- finish
-endif
-let g:loaded_nerdtree_exec_menuitem = 1
-
-call NERDTreeAddMenuItem({
- \ 'text': '(!)Execute file',
- \ 'shortcut': '!',
- \ 'callback': 'NERDTreeExecFile',
- \ 'isActiveCallback': 'NERDTreeExecFileActive' })
-
-function! NERDTreeExecFileActive()
- let node = g:NERDTreeFileNode.GetSelected()
- return !node.path.isDirectory && node.path.isExecutable
-endfunction
-
-function! NERDTreeExecFile()
- let treenode = g:NERDTreeFileNode.GetSelected()
- echo "==========================================================\n"
- echo "Complete the command to execute (add arguments etc):\n"
- let cmd = treenode.path.str({'escape': 1})
- let cmd = input(':!', cmd . ' ')
-
- if cmd != ''
- exec ':!' . cmd
- else
- echo "Aborted"
- endif
-endfunction
diff --git a/vim/bundle/nerdtree/nerdtree_plugin/fs_menu.vim b/vim/bundle/nerdtree/nerdtree_plugin/fs_menu.vim
deleted file mode 100644
index 9b81ed3..0000000
--- a/vim/bundle/nerdtree/nerdtree_plugin/fs_menu.vim
+++ /dev/null
@@ -1,262 +0,0 @@
-" ============================================================================
-" File: fs_menu.vim
-" Description: plugin for the NERD Tree that provides a file system menu
-" Maintainer: Martin Grenfell
-" Last Change: 17 July, 2009
-" License: This program is free software. It comes without any warranty,
-" to the extent permitted by applicable law. You can redistribute
-" it and/or modify it under the terms of the Do What The Fuck You
-" Want To Public License, Version 2, as published by Sam Hocevar.
-" See http://sam.zoy.org/wtfpl/COPYING for more details.
-"
-" ============================================================================
-if exists("g:loaded_nerdtree_fs_menu")
- finish
-endif
-let g:loaded_nerdtree_fs_menu = 1
-
-"Automatically delete the buffer after deleting or renaming a file
-if !exists("g:NERDTreeAutoDeleteBuffer")
- let g:NERDTreeAutoDeleteBuffer = 0
-endif
-
-call NERDTreeAddMenuItem({'text': '(a)dd a childnode', 'shortcut': 'a', 'callback': 'NERDTreeAddNode'})
-call NERDTreeAddMenuItem({'text': '(m)ove the current node', 'shortcut': 'm', 'callback': 'NERDTreeMoveNode'})
-call NERDTreeAddMenuItem({'text': '(d)elete the current node', 'shortcut': 'd', 'callback': 'NERDTreeDeleteNode'})
-
-if has("gui_mac") || has("gui_macvim")
- call NERDTreeAddMenuItem({'text': '(r)eveal in Finder the current node', 'shortcut': 'r', 'callback': 'NERDTreeRevealInFinder'})
- call NERDTreeAddMenuItem({'text': '(o)pen the current node with system editor', 'shortcut': 'o', 'callback': 'NERDTreeExecuteFile'})
- call NERDTreeAddMenuItem({'text': '(q)uicklook the current node', 'shortcut': 'q', 'callback': 'NERDTreeQuickLook'})
-endif
-
-if g:NERDTreePath.CopyingSupported()
- call NERDTreeAddMenuItem({'text': '(c)opy the current node', 'shortcut': 'c', 'callback': 'NERDTreeCopyNode'})
-endif
-
-"FUNCTION: s:echo(msg){{{1
-function! s:echo(msg)
- redraw
- echomsg "NERDTree: " . a:msg
-endfunction
-
-"FUNCTION: s:echoWarning(msg){{{1
-function! s:echoWarning(msg)
- echohl warningmsg
- call s:echo(a:msg)
- echohl normal
-endfunction
-
-"FUNCTION: s:promptToDelBuffer(bufnum, msg){{{1
-"prints out the given msg and, if the user responds by pushing 'y' then the
-"buffer with the given bufnum is deleted
-"
-"Args:
-"bufnum: the buffer that may be deleted
-"msg: a message that will be echoed to the user asking them if they wish to
-" del the buffer
-function! s:promptToDelBuffer(bufnum, msg)
- echo a:msg
- if g:NERDTreeAutoDeleteBuffer || nr2char(getchar()) ==# 'y'
- " 1. ensure that all windows which display the just deleted filename
- " now display an empty buffer (so a layout is preserved).
- " Is not it better to close single tabs with this file only ?
- let s:originalTabNumber = tabpagenr()
- let s:originalWindowNumber = winnr()
- exec "tabdo windo if winbufnr(0) == " . a:bufnum . " | exec ':enew! ' | endif"
- exec "tabnext " . s:originalTabNumber
- exec s:originalWindowNumber . "wincmd w"
- " 3. We don't need a previous buffer anymore
- exec "bwipeout! " . a:bufnum
- endif
-endfunction
-
-"FUNCTION: s:promptToRenameBuffer(bufnum, msg){{{1
-"prints out the given msg and, if the user responds by pushing 'y' then the
-"buffer with the given bufnum is replaced with a new one
-"
-"Args:
-"bufnum: the buffer that may be deleted
-"msg: a message that will be echoed to the user asking them if they wish to
-" del the buffer
-function! s:promptToRenameBuffer(bufnum, msg, newFileName)
- echo a:msg
- if g:NERDTreeAutoDeleteBuffer || nr2char(getchar()) ==# 'y'
- " 1. ensure that a new buffer is loaded
- exec "badd " . a:newFileName
- " 2. ensure that all windows which display the just deleted filename
- " display a buffer for a new filename.
- let s:originalTabNumber = tabpagenr()
- let s:originalWindowNumber = winnr()
- exec "tabdo windo if winbufnr(0) == " . a:bufnum . " | exec ':e! " . a:newFileName . "' | endif"
- exec "tabnext " . s:originalTabNumber
- exec s:originalWindowNumber . "wincmd w"
- " 3. We don't need a previous buffer anymore
- exec "bwipeout! " . a:bufnum
- endif
-endfunction
-"FUNCTION: NERDTreeAddNode(){{{1
-function! NERDTreeAddNode()
- let curDirNode = g:NERDTreeDirNode.GetSelected()
-
- let newNodeName = input("Add a childnode\n".
- \ "==========================================================\n".
- \ "Enter the dir/file name to be created. Dirs end with a '/'\n" .
- \ "", curDirNode.path.str() . g:NERDTreePath.Slash(), "file")
-
- if newNodeName ==# ''
- call s:echo("Node Creation Aborted.")
- return
- endif
-
- try
- let newPath = g:NERDTreePath.Create(newNodeName)
- let parentNode = b:NERDTreeRoot.findNode(newPath.getParent())
-
- let newTreeNode = g:NERDTreeFileNode.New(newPath)
- if parentNode.isOpen || !empty(parentNode.children)
- call parentNode.addChild(newTreeNode, 1)
- call NERDTreeRender()
- call newTreeNode.putCursorHere(1, 0)
- endif
- catch /^NERDTree/
- call s:echoWarning("Node Not Created.")
- endtry
-endfunction
-
-"FUNCTION: NERDTreeMoveNode(){{{1
-function! NERDTreeMoveNode()
- let curNode = g:NERDTreeFileNode.GetSelected()
- let newNodePath = input("Rename the current node\n" .
- \ "==========================================================\n" .
- \ "Enter the new path for the node: \n" .
- \ "", curNode.path.str(), "file")
-
- if newNodePath ==# ''
- call s:echo("Node Renaming Aborted.")
- return
- endif
-
- try
- let bufnum = bufnr(curNode.path.str())
-
- call curNode.rename(newNodePath)
- call NERDTreeRender()
-
- "if the node is open in a buffer, ask the user if they want to
- "close that buffer
- if bufnum != -1
- let prompt = "\nNode renamed.\n\nThe old file is open in buffer ". bufnum . (bufwinnr(bufnum) ==# -1 ? " (hidden)" : "") .". Replace this buffer with a new file? (yN)"
- call s:promptToRenameBuffer(bufnum, prompt, newNodePath)
- endif
-
- call curNode.putCursorHere(1, 0)
-
- redraw
- catch /^NERDTree/
- call s:echoWarning("Node Not Renamed.")
- endtry
-endfunction
-
-" FUNCTION: NERDTreeDeleteNode() {{{1
-function! NERDTreeDeleteNode()
- let currentNode = g:NERDTreeFileNode.GetSelected()
- let confirmed = 0
-
- if currentNode.path.isDirectory
- let choice =input("Delete the current node\n" .
- \ "==========================================================\n" .
- \ "STOP! To delete this entire directory, type 'yes'\n" .
- \ "" . currentNode.path.str() . ": ")
- let confirmed = choice ==# 'yes'
- else
- echo "Delete the current node\n" .
- \ "==========================================================\n".
- \ "Are you sure you wish to delete the node:\n" .
- \ "" . currentNode.path.str() . " (yN):"
- let choice = nr2char(getchar())
- let confirmed = choice ==# 'y'
- endif
-
-
- if confirmed
- try
- call currentNode.delete()
- call NERDTreeRender()
-
- "if the node is open in a buffer, ask the user if they want to
- "close that buffer
- let bufnum = bufnr(currentNode.path.str())
- if buflisted(bufnum)
- let prompt = "\nNode deleted.\n\nThe file is open in buffer ". bufnum . (bufwinnr(bufnum) ==# -1 ? " (hidden)" : "") .". Delete this buffer? (yN)"
- call s:promptToDelBuffer(bufnum, prompt)
- endif
-
- redraw
- catch /^NERDTree/
- call s:echoWarning("Could not remove node")
- endtry
- else
- call s:echo("delete aborted")
- endif
-
-endfunction
-
-" FUNCTION: NERDTreeCopyNode() {{{1
-function! NERDTreeCopyNode()
- let currentNode = g:NERDTreeFileNode.GetSelected()
- let newNodePath = input("Copy the current node\n" .
- \ "==========================================================\n" .
- \ "Enter the new path to copy the node to: \n" .
- \ "", currentNode.path.str(), "file")
-
- if newNodePath != ""
- "strip trailing slash
- let newNodePath = substitute(newNodePath, '\/$', '', '')
-
- let confirmed = 1
- if currentNode.path.copyingWillOverwrite(newNodePath)
- call s:echo("Warning: copying may overwrite files! Continue? (yN)")
- let choice = nr2char(getchar())
- let confirmed = choice ==# 'y'
- endif
-
- if confirmed
- try
- let newNode = currentNode.copy(newNodePath)
- if !empty(newNode)
- call NERDTreeRender()
- call newNode.putCursorHere(0, 0)
- endif
- catch /^NERDTree/
- call s:echoWarning("Could not copy node")
- endtry
- endif
- else
- call s:echo("Copy aborted.")
- endif
- redraw
-endfunction
-
-function! NERDTreeQuickLook()
- let treenode = g:NERDTreeFileNode.GetSelected()
- if treenode != {}
- call system("qlmanage -p 2>/dev/null '" . treenode.path.str() . "'")
- endif
-endfunction
-
-function! NERDTreeRevealInFinder()
- let treenode = g:NERDTreeFileNode.GetSelected()
- if treenode != {}
- let x = system("open -R '" . treenode.path.str() . "'")
- endif
-endfunction
-
-function! NERDTreeExecuteFile()
- let treenode = g:NERDTreeFileNode.GetSelected()
- if treenode != {}
- let x = system("open '" . treenode.path.str() . "'")
- endif
-endfunction
-
-" vim: set sw=4 sts=4 et fdm=marker:
diff --git a/vim/bundle/nerdtree/plugin/NERD_tree.vim b/vim/bundle/nerdtree/plugin/NERD_tree.vim
deleted file mode 100644
index 5bee03a..0000000
--- a/vim/bundle/nerdtree/plugin/NERD_tree.vim
+++ /dev/null
@@ -1,210 +0,0 @@
-" ============================================================================
-" File: NERD_tree.vim
-" Description: vim global plugin that provides a nice tree explorer
-" Maintainer: Martin Grenfell
-" Last Change: 28 December, 2011
-" License: This program is free software. It comes without any warranty,
-" to the extent permitted by applicable law. You can redistribute
-" it and/or modify it under the terms of the Do What The Fuck You
-" Want To Public License, Version 2, as published by Sam Hocevar.
-" See http://sam.zoy.org/wtfpl/COPYING for more details.
-"
-" ============================================================================
-"
-" SECTION: Script init stuff {{{1
-"============================================================
-if exists("loaded_nerd_tree")
- finish
-endif
-if v:version < 700
- echoerr "NERDTree: this plugin requires vim >= 7. DOWNLOAD IT! You'll thank me later!"
- finish
-endif
-let loaded_nerd_tree = 1
-
-"for line continuation - i.e dont want C in &cpo
-let s:old_cpo = &cpo
-set cpo&vim
-
-"Function: s:initVariable() function {{{2
-"This function is used to initialise a given variable to a given value. The
-"variable is only initialised if it does not exist prior
-"
-"Args:
-"var: the name of the var to be initialised
-"value: the value to initialise var to
-"
-"Returns:
-"1 if the var is set, 0 otherwise
-function! s:initVariable(var, value)
- if !exists(a:var)
- exec 'let ' . a:var . ' = ' . "'" . substitute(a:value, "'", "''", "g") . "'"
- return 1
- endif
- return 0
-endfunction
-
-"SECTION: Init variable calls and other random constants {{{2
-call s:initVariable("g:NERDChristmasTree", 1)
-call s:initVariable("g:NERDTreeAutoCenter", 1)
-call s:initVariable("g:NERDTreeAutoCenterThreshold", 3)
-call s:initVariable("g:NERDTreeCaseSensitiveSort", 0)
-call s:initVariable("g:NERDTreeChDirMode", 0)
-call s:initVariable("g:NERDTreeMinimalUI", 0)
-if !exists("g:NERDTreeIgnore")
- let g:NERDTreeIgnore = ['\~$']
-endif
-call s:initVariable("g:NERDTreeBookmarksFile", expand('$HOME') . '/.NERDTreeBookmarks')
-call s:initVariable("g:NERDTreeHighlightCursorline", 1)
-call s:initVariable("g:NERDTreeHijackNetrw", 1)
-call s:initVariable("g:NERDTreeMouseMode", 1)
-call s:initVariable("g:NERDTreeNotificationThreshold", 100)
-call s:initVariable("g:NERDTreeQuitOnOpen", 0)
-call s:initVariable("g:NERDTreeShowBookmarks", 0)
-call s:initVariable("g:NERDTreeShowFiles", 1)
-call s:initVariable("g:NERDTreeShowHidden", 0)
-call s:initVariable("g:NERDTreeShowLineNumbers", 0)
-call s:initVariable("g:NERDTreeSortDirs", 1)
-call s:initVariable("g:NERDTreeDirArrows", !nerdtree#runningWindows())
-call s:initVariable("g:NERDTreeCasadeOpenSingleChildDir", 1)
-
-if !exists("g:NERDTreeSortOrder")
- let g:NERDTreeSortOrder = ['\/$', '*', '\.swp$', '\.bak$', '\~$']
-else
- "if there isnt a * in the sort sequence then add one
- if count(g:NERDTreeSortOrder, '*') < 1
- call add(g:NERDTreeSortOrder, '*')
- endif
-endif
-
-if !exists('g:NERDTreeStatusline')
-
- "the exists() crap here is a hack to stop vim spazzing out when
- "loading a session that was created with an open nerd tree. It spazzes
- "because it doesnt store b:NERDTreeRoot (its a b: var, and its a hash)
- let g:NERDTreeStatusline = "%{exists('b:NERDTreeRoot')?b:NERDTreeRoot.path.str():''}"
-
-endif
-call s:initVariable("g:NERDTreeWinPos", "left")
-call s:initVariable("g:NERDTreeWinSize", 31)
-
-"init the shell commands that will be used to copy nodes, and remove dir trees
-"
-"Note: the space after the command is important
-if nerdtree#runningWindows()
- call s:initVariable("g:NERDTreeRemoveDirCmd", 'rmdir /s /q ')
-else
- call s:initVariable("g:NERDTreeRemoveDirCmd", 'rm -rf ')
- call s:initVariable("g:NERDTreeCopyCmd", 'cp -r ')
-endif
-
-
-"SECTION: Init variable calls for key mappings {{{2
-call s:initVariable("g:NERDTreeMapActivateNode", "o")
-call s:initVariable("g:NERDTreeMapChangeRoot", "C")
-call s:initVariable("g:NERDTreeMapChdir", "cd")
-call s:initVariable("g:NERDTreeMapCloseChildren", "X")
-call s:initVariable("g:NERDTreeMapCloseDir", "x")
-call s:initVariable("g:NERDTreeMapDeleteBookmark", "D")
-call s:initVariable("g:NERDTreeMapMenu", "m")
-call s:initVariable("g:NERDTreeMapHelp", "?")
-call s:initVariable("g:NERDTreeMapJumpFirstChild", "K")
-call s:initVariable("g:NERDTreeMapJumpLastChild", "J")
-call s:initVariable("g:NERDTreeMapJumpNextSibling", "")
-call s:initVariable("g:NERDTreeMapJumpParent", "p")
-call s:initVariable("g:NERDTreeMapJumpPrevSibling", "")
-call s:initVariable("g:NERDTreeMapJumpRoot", "P")
-call s:initVariable("g:NERDTreeMapOpenExpl", "e")
-call s:initVariable("g:NERDTreeMapOpenInTab", "t")
-call s:initVariable("g:NERDTreeMapOpenInTabSilent", "T")
-call s:initVariable("g:NERDTreeMapOpenRecursively", "O")
-call s:initVariable("g:NERDTreeMapOpenSplit", "i")
-call s:initVariable("g:NERDTreeMapOpenVSplit", "s")
-call s:initVariable("g:NERDTreeMapPreview", "g" . NERDTreeMapActivateNode)
-call s:initVariable("g:NERDTreeMapPreviewSplit", "g" . NERDTreeMapOpenSplit)
-call s:initVariable("g:NERDTreeMapPreviewVSplit", "g" . NERDTreeMapOpenVSplit)
-call s:initVariable("g:NERDTreeMapQuit", "q")
-call s:initVariable("g:NERDTreeMapRefresh", "r")
-call s:initVariable("g:NERDTreeMapRefreshRoot", "R")
-call s:initVariable("g:NERDTreeMapToggleBookmarks", "B")
-call s:initVariable("g:NERDTreeMapToggleFiles", "F")
-call s:initVariable("g:NERDTreeMapToggleFilters", "f")
-call s:initVariable("g:NERDTreeMapToggleHidden", "I")
-call s:initVariable("g:NERDTreeMapToggleZoom", "A")
-call s:initVariable("g:NERDTreeMapUpdir", "u")
-call s:initVariable("g:NERDTreeMapUpdirKeepOpen", "U")
-call s:initVariable("g:NERDTreeMapCWD", "CD")
-
-"SECTION: Load class files{{{2
-call nerdtree#loadClassFiles()
-
-" SECTION: Commands {{{1
-"============================================================
-"init the command that users start the nerd tree with
-command! -n=? -complete=dir -bar NERDTree :call g:NERDTreeCreator.CreatePrimary('')
-command! -n=? -complete=dir -bar NERDTreeToggle :call g:NERDTreeCreator.TogglePrimary('')
-command! -n=0 -bar NERDTreeClose :call nerdtree#closeTreeIfOpen()
-command! -n=1 -complete=customlist,nerdtree#completeBookmarks -bar NERDTreeFromBookmark call g:NERDTreeCreator.CreatePrimary('')
-command! -n=0 -bar NERDTreeMirror call g:NERDTreeCreator.CreateMirror()
-command! -n=0 -bar NERDTreeFind call nerdtree#findAndRevealPath()
-command! -n=0 -bar NERDTreeFocus call NERDTreeFocus()
-command! -n=0 -bar NERDTreeCWD call NERDTreeCWD()
-" SECTION: Auto commands {{{1
-"============================================================
-augroup NERDTree
- "Save the cursor position whenever we close the nerd tree
- exec "autocmd BufWinLeave ". g:NERDTreeCreator.BufNamePrefix() ."* call nerdtree#saveScreenState()"
-
- "disallow insert mode in the NERDTree
- exec "autocmd BufEnter ". g:NERDTreeCreator.BufNamePrefix() ."* stopinsert"
-augroup END
-
-if g:NERDTreeHijackNetrw
- augroup NERDTreeHijackNetrw
- autocmd VimEnter * silent! autocmd! FileExplorer
- au BufEnter,VimEnter * call nerdtree#checkForBrowse(expand(""))
- augroup END
-endif
-
-" SECTION: Public API {{{1
-"============================================================
-function! NERDTreeAddMenuItem(options)
- call g:NERDTreeMenuItem.Create(a:options)
-endfunction
-
-function! NERDTreeAddMenuSeparator(...)
- let opts = a:0 ? a:1 : {}
- call g:NERDTreeMenuItem.CreateSeparator(opts)
-endfunction
-
-function! NERDTreeAddSubmenu(options)
- return g:NERDTreeMenuItem.Create(a:options)
-endfunction
-
-function! NERDTreeAddKeyMap(options)
- call g:NERDTreeKeyMap.Create(a:options)
-endfunction
-
-function! NERDTreeRender()
- call nerdtree#renderView()
-endfunction
-
-function! NERDTreeFocus()
- if nerdtree#isTreeOpen()
- call nerdtree#putCursorInTreeWin()
- else
- call g:NERDTreeCreator.TogglePrimary("")
- endif
-endfunction
-
-function! NERDTreeCWD()
- call NERDTreeFocus()
- call nerdtree#chRootCwd()
-endfunction
-" SECTION: Post Source Actions {{{1
-call nerdtree#postSourceActions()
-
-"reset &cpo back to users setting
-let &cpo = s:old_cpo
-
-" vim: set sw=4 sts=4 et fdm=marker:
diff --git a/vim/bundle/nerdtree/syntax/nerdtree.vim b/vim/bundle/nerdtree/syntax/nerdtree.vim
deleted file mode 100644
index 636d2af..0000000
--- a/vim/bundle/nerdtree/syntax/nerdtree.vim
+++ /dev/null
@@ -1,88 +0,0 @@
-let s:tree_up_dir_line = '.. (up a dir)'
-"NERDTreeFlags are syntax items that should be invisible, but give clues as to
-"how things should be highlighted
-syn match NERDTreeFlag #\~#
-syn match NERDTreeFlag #\[RO\]#
-
-"highlighting for the .. (up dir) line at the top of the tree
-execute "syn match NERDTreeUp #\\V". s:tree_up_dir_line ."#"
-
-"highlighting for the ~/+ symbols for the directory nodes
-syn match NERDTreeClosable #\~\<#
-syn match NERDTreeClosable #\~\.#
-syn match NERDTreeOpenable #+\<#
-syn match NERDTreeOpenable #+\.#he=e-1
-
-"highlighting for the tree structural parts
-syn match NERDTreePart #|#
-syn match NERDTreePart #`#
-syn match NERDTreePartFile #[|`]-#hs=s+1 contains=NERDTreePart
-
-"quickhelp syntax elements
-syn match NERDTreeHelpKey #" \{1,2\}[^ ]*:#hs=s+2,he=e-1
-syn match NERDTreeHelpKey #" \{1,2\}[^ ]*,#hs=s+2,he=e-1
-syn match NERDTreeHelpTitle #" .*\~#hs=s+2,he=e-1 contains=NERDTreeFlag
-syn match NERDTreeToggleOn #".*(on)#hs=e-2,he=e-1 contains=NERDTreeHelpKey
-syn match NERDTreeToggleOff #".*(off)#hs=e-3,he=e-1 contains=NERDTreeHelpKey
-syn match NERDTreeHelpCommand #" :.\{-}\>#hs=s+3
-syn match NERDTreeHelp #^".*# contains=NERDTreeHelpKey,NERDTreeHelpTitle,NERDTreeFlag,NERDTreeToggleOff,NERDTreeToggleOn,NERDTreeHelpCommand
-
-"highlighting for readonly files
-syn match NERDTreeRO #.*\[RO\]#hs=s+2 contains=NERDTreeFlag,NERDTreeBookmark,NERDTreePart,NERDTreePartFile
-
-"highlighting for sym links
-syn match NERDTreeLink #[^-| `].* -> # contains=NERDTreeBookmark,NERDTreeOpenable,NERDTreeClosable,NERDTreeDirSlash
-
-"highlighing for directory nodes and file nodes
-syn match NERDTreeDirSlash #/#
-syn match NERDTreeDir #[^-| `].*/# contains=NERDTreeLink,NERDTreeDirSlash,NERDTreeOpenable,NERDTreeClosable
-syn match NERDTreeExecFile #[|` ].*\*\($\| \)# contains=NERDTreeLink,NERDTreePart,NERDTreeRO,NERDTreePartFile,NERDTreeBookmark
-syn match NERDTreeFile #|-.*# contains=NERDTreeLink,NERDTreePart,NERDTreeRO,NERDTreePartFile,NERDTreeBookmark,NERDTreeExecFile
-syn match NERDTreeFile #`-.*# contains=NERDTreeLink,NERDTreePart,NERDTreeRO,NERDTreePartFile,NERDTreeBookmark,NERDTreeExecFile
-syn match NERDTreeCWD #^[].*$#
-
-"highlighting for bookmarks
-syn match NERDTreeBookmark # {.*}#hs=s+1
-
-"highlighting for the bookmarks table
-syn match NERDTreeBookmarksLeader #^>#
-syn match NERDTreeBookmarksHeader #^>-\+Bookmarks-\+$# contains=NERDTreeBookmarksLeader
-syn match NERDTreeBookmarkName #^>.\{-} #he=e-1 contains=NERDTreeBookmarksLeader
-syn match NERDTreeBookmark #^>.*$# contains=NERDTreeBookmarksLeader,NERDTreeBookmarkName,NERDTreeBookmarksHeader
-
-if exists("g:NERDChristmasTree") && g:NERDChristmasTree
- hi def link NERDTreePart Special
- hi def link NERDTreePartFile Type
- hi def link NERDTreeFile Normal
- hi def link NERDTreeExecFile Title
- hi def link NERDTreeDirSlash Identifier
- hi def link NERDTreeClosable Type
-else
- hi def link NERDTreePart Normal
- hi def link NERDTreePartFile Normal
- hi def link NERDTreeFile Normal
- hi def link NERDTreeClosable Title
-endif
-
-hi def link NERDTreeBookmarksHeader statement
-hi def link NERDTreeBookmarksLeader ignore
-hi def link NERDTreeBookmarkName Identifier
-hi def link NERDTreeBookmark normal
-
-hi def link NERDTreeHelp String
-hi def link NERDTreeHelpKey Identifier
-hi def link NERDTreeHelpCommand Identifier
-hi def link NERDTreeHelpTitle Macro
-hi def link NERDTreeToggleOn Question
-hi def link NERDTreeToggleOff WarningMsg
-
-hi def link NERDTreeDir Directory
-hi def link NERDTreeUp Directory
-hi def link NERDTreeCWD Statement
-hi def link NERDTreeLink Macro
-hi def link NERDTreeOpenable Title
-hi def link NERDTreeFlag ignore
-hi def link NERDTreeRO WarningMsg
-hi def link NERDTreeBookmark Statement
-
-hi def link NERDTreeCurrentNode Search
diff --git a/vim/bundle/rainbow_parentheses.vim b/vim/bundle/rainbow_parentheses.vim
deleted file mode 160000
index 53f3197..0000000
--- a/vim/bundle/rainbow_parentheses.vim
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 53f319728a57caed6c7db0304b218d662a67981f
diff --git a/vim/bundle/vim-airline b/vim/bundle/vim-airline
deleted file mode 160000
index 616dace..0000000
--- a/vim/bundle/vim-airline
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 616daceb735771ed27535abe8a6e4907320f1e82
diff --git a/vim/bundle/vim-bundler/.gitignore b/vim/bundle/vim-bundler/.gitignore
deleted file mode 100644
index 0a56e3f..0000000
--- a/vim/bundle/vim-bundler/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/doc/tags
diff --git a/vim/bundle/vim-bundler/CONTRIBUTING.markdown b/vim/bundle/vim-bundler/CONTRIBUTING.markdown
deleted file mode 100644
index 77b6cfa..0000000
--- a/vim/bundle/vim-bundler/CONTRIBUTING.markdown
+++ /dev/null
@@ -1,2 +0,0 @@
-See the contribution guidelines for
-[rails.vim](https://github.com/tpope/vim-rails/blob/HEAD/CONTRIBUTING.markdown).
diff --git a/vim/bundle/vim-bundler/README.markdown b/vim/bundle/vim-bundler/README.markdown
deleted file mode 100644
index 546931e..0000000
--- a/vim/bundle/vim-bundler/README.markdown
+++ /dev/null
@@ -1,55 +0,0 @@
-# bundler.vim
-
-This is a lightweight bag of Vim goodies for
-[Bundler](http://gembundler.com), best accompanied by
-[rake.vim](https://github.com/tpope/vim-rake) and/or
-[rails.vim](https://github.com/tpope/vim-rails). Features:
-
-* `:Bundle`, which wraps `bundle`.
-* An internalized version of `bundle open`: `:Bopen` (and `:Bsplit`,
- `:Btabedit`, etc.).
-* `'path'` and `'tags'` are automatically altered to include all gems
- from your bundle. (Generate those tags with
- [gem-ctags](https://github.com/tpope/gem-ctags)!)
-* Highlight Bundler keywords in `Gemfile`.
-* Support for `gf` in `Gemfile.lock`, plus syntax highlighting that
- distinguishes between installed and missing gems.
-
-## Installation
-
-If you don't have a preferred installation method, I recommend
-installing [pathogen.vim](https://github.com/tpope/vim-pathogen), and
-then simply copy and paste:
-
- cd ~/.vim/bundle
- git clone git://github.com/tpope/vim-bundler.git
-
-Once help tags have been generated, you can view the manual with
-`:help bundler`.
-
-## FAQ
-
-> I installed the plugin and started Vim. Why don't any of the commands
-> exist?
-
-This plugin cares about the current file, not the current working
-directory. Edit a file that's covered by a `Gemfile`.
-
-> I opened a new tab. Why don't any of the commands exist?
-
-This plugin cares about the current file, not the current working
-directory. Edit a file that's covered by a `Gemfile`.
-
-## Self-Promotion
-
-Like bundler.vim? Follow the repository on
-[GitHub](https://github.com/tpope/vim-bundler) and vote for it on
-[vim.org](http://www.vim.org/scripts/script.php?script_id=4280). And if
-you're feeling especially charitable, follow [tpope](http://tpo.pe/) on
-[Twitter](http://twitter.com/tpope) and
-[GitHub](https://github.com/tpope).
-
-## License
-
-Copyright (c) Tim Pope. Distributed under the same terms as Vim itself.
-See `:help license`.
diff --git a/vim/bundle/vim-bundler/compiler/bundler.vim b/vim/bundle/vim-bundler/compiler/bundler.vim
deleted file mode 100644
index b129793..0000000
--- a/vim/bundle/vim-bundler/compiler/bundler.vim
+++ /dev/null
@@ -1,26 +0,0 @@
-" Vim compiler file
-
-if exists("current_compiler")
- finish
-endif
-let current_compiler = "bundler"
-
-let s:cpo_save = &cpo
-set cpo-=C
-
-CompilerSet makeprg=bundle
-
-CompilerSet errorformat=
- \%+E%f:%l:\ parse\ error,
- \%W%f:%l:\ warning:\ %m,
- \%E%f:%l:in\ %*[^:]:\ %m,
- \%E%f:%l:\ %m,
- \%-C%\tfrom\ %f:%l:in\ %.%#,
- \%-Z%\tfrom\ %f:%l,
- \%-Z%p^,
- \%-G%.%#
-
-let &cpo = s:cpo_save
-unlet s:cpo_save
-
-" vim: sw=2:
diff --git a/vim/bundle/vim-bundler/doc/bundler.txt b/vim/bundle/vim-bundler/doc/bundler.txt
deleted file mode 100644
index cc57e6f..0000000
--- a/vim/bundle/vim-bundler/doc/bundler.txt
+++ /dev/null
@@ -1,68 +0,0 @@
-*bundler.txt* Support for Ruby's Bundler
-
-Author: Tim Pope
-License: Same terms as Vim itself (see |license|)
-
-This plugin is only available if 'compatible' is not set.
-
-INTRODUCTION *bundler*
-
-This lightweight companion to rails.vim and rake.vim provides support for
-Bundler. In addition to the below commands, it also syntax highlights
-Gemfile and Gemfile.lock, and alters 'path' and 'tags' to include bundled
-gems. I recommend gem-ctags for generating tags for your gems.
-
-COMMANDS *bundler-commands*
-
- *bundler-:Bundle*
-:Bundle[!] [args] Invoke `bundle` via |:make|.
-
-
- *bundler-:Bopen*
-:Bopen[!] [gem] With no argument, edits the Gemfile. Otherwise,
- effectively does a `bundle open` of a gem inside of
- Vim, including an |:lcd| to the gem's root directory.
- Add ! to discard the current buffer's changes.
-
- *bundler-:Bedit*
-:Bedit[!] [gem] Like |:Bopen|, but don't |:lcd| afterwards.
-
- *bundler-:Bsplit*
-:Bsplit[!] [gem] Like |:Bopen|, but horizontally split. Add ! to
- suppress the |:lcd|.
-
- *bundler-:Bvsplit*
-:Bvsplit[!] [gem] Like |:Bopen|, but vertically split. Add ! to
- suppress the |:lcd|.
-
- *bundler-:Btabedit*
-:Btabedit[!] [gem] Like |:Bopen|, but use a new tab. Add ! to
- suppress the |:lcd|.
-
- *bundler-:Bpedit*
-:Bpedit[!] [gem] Like |:Bopen|, but use a preview window. Add ! to
- suppress the |:lcd|.
-
-API *bundler-api*
-
-Use bundler#project(root) to retrieve an object for the project at the given
-root path. If no path is given, the current buffer's project root is used.
-An empty object is returned if no project is found. Use |empty()| to check
-for that.
-
-On the bundler#project() object, versions() returns a dictionary mapping
-between gem names and their locked versions, paths() returns a dictionary
-mapping between gem names and their installation path (omitting gems which
-aren't installed), and has(gem) returns true if the given gem name is in the
-bundle (regardless of whether or not it is installed).
-
-The original data structures are returned for performance reasons. Do not
-mutate.
-
-ABOUT *bundler-about*
-
-Grab the latest version or report a bug on GitHub:
-
-http://github.com/tpope/vim-bundler
-
- vim:tw=78:et:ft=help:norl:
diff --git a/vim/bundle/vim-bundler/plugin/bundler.vim b/vim/bundle/vim-bundler/plugin/bundler.vim
deleted file mode 100644
index 6d8d703..0000000
--- a/vim/bundle/vim-bundler/plugin/bundler.vim
+++ /dev/null
@@ -1,581 +0,0 @@
-" bundler.vim - Support for Ruby's Bundler
-" Maintainer: Tim Pope
-" Version: 2.0
-
-if exists('g:loaded_bundler') || &cp || v:version < 700
- finish
-endif
-let g:loaded_bundler = 1
-
-" Utility {{{1
-
-function! s:function(name) abort
- return function(substitute(a:name,'^s:',matchstr(expand(''), '\d\+_'),''))
-endfunction
-
-function! s:sub(str,pat,rep) abort
- return substitute(a:str,'\v\C'.a:pat,a:rep,'')
-endfunction
-
-function! s:gsub(str,pat,rep) abort
- return substitute(a:str,'\v\C'.a:pat,a:rep,'g')
-endfunction
-
-function! s:shellesc(arg) abort
- if a:arg =~ '^[A-Za-z0-9_/.-]\+$'
- return a:arg
- else
- return shellescape(a:arg)
- endif
-endfunction
-
-function! s:fnameescape(file) abort
- if exists('*fnameescape')
- return fnameescape(a:file)
- else
- return escape(a:file," \t\n*?[{`$\\%#'\"|!<")
- endif
-endfunction
-
-function! s:shellslash(path)
- if exists('+shellslash') && !&shellslash
- return s:gsub(a:path,'\\','/')
- else
- return a:path
- endif
-endfunction
-
-function! s:completion_filter(results,A)
- let results = sort(copy(a:results))
- call filter(results,'v:val !~# "\\~$"')
- let filtered = filter(copy(results),'v:val[0:strlen(a:A)-1] ==# a:A')
- if !empty(filtered) | return filtered | endif
- let regex = s:gsub(a:A,'[^/:]','[&].*')
- let filtered = filter(copy(results),'v:val =~# "^".regex')
- if !empty(filtered) | return filtered | endif
- let filtered = filter(copy(results),'"/".v:val =~# "[/:]".regex')
- if !empty(filtered) | return filtered | endif
- let regex = s:gsub(a:A,'.','[&].*')
- let filtered = filter(copy(results),'"/".v:val =~# regex')
- return filtered
-endfunction
-
-function! s:throw(string) abort
- let v:errmsg = 'bundler: '.a:string
- throw v:errmsg
-endfunction
-
-function! s:warn(str)
- echohl WarningMsg
- echomsg a:str
- echohl None
- let v:warningmsg = a:str
-endfunction
-
-function! s:add_methods(namespace, method_names) abort
- for name in a:method_names
- let s:{a:namespace}_prototype[name] = s:function('s:'.a:namespace.'_'.name)
- endfor
-endfunction
-
-let s:commands = []
-function! s:command(definition) abort
- let s:commands += [a:definition]
-endfunction
-
-function! s:define_commands()
- for command in s:commands
- exe 'command! -buffer '.command
- endfor
-endfunction
-
-augroup bundler_utility
- autocmd!
- autocmd User Bundler call s:define_commands()
-augroup END
-
-let s:abstract_prototype = {}
-
-" }}}1
-" Syntax highlighting {{{1
-
-function! s:syntaxfile()
- syntax keyword rubyGemfileMethod gemspec gem source path git group platforms env ruby
- hi def link rubyGemfileMethod Function
-endfunction
-
-function! s:syntaxlock()
- setlocal iskeyword+=-,.
- syn match gemfilelockHeading '^[[:upper:]]\+$'
- syn match gemfilelockKey '^\s\+\zs\S\+:'he=e-1 skipwhite nextgroup=gemfilelockRevision
- syn match gemfilelockKey 'remote:'he=e-1 skipwhite nextgroup=gemfilelockRemote
- syn match gemfilelockRemote '\S\+' contained
- syn match gemfilelockRevision '[[:alnum:]._-]\+$' contained
- syn match gemfilelockGem '^\s\+\zs[[:alnum:]._-]\+\%([ !]\|$\)\@=' contains=gemfilelockFound,gemfilelockMissing skipwhite nextgroup=gemfilelockVersions,gemfilelockBang
- syn match gemfilelockVersions '([^()]*)' contained contains=gemfilelockVersion
- syn match gemfilelockVersion '[^,()]*' contained
- syn match gemfilelockBang '!' contained
- if !empty(bundler#project())
- exe 'syn match gemfilelockFound "\<\%(bundler\|' . join(keys(s:project().paths()), '\|') . '\)\>" contained'
- exe 'syn match gemfilelockMissing "\<\%(' . join(keys(filter(s:project().versions(), '!has_key(s:project().paths(), v:key)')), '\|') . '\)\>" contained'
- else
- exe 'syn match gemfilelockFound "\<\%(\S*\)\>" contained'
- endif
- syn match gemfilelockHeading '^PLATFORMS$' nextgroup=gemfilelockPlatform skipnl skipwhite
- syn match gemfilelockPlatform '^ \zs[[:alnum:]._-]\+$' contained nextgroup=gemfilelockPlatform skipnl skipwhite
-
- hi def link gemfilelockHeading PreProc
- hi def link gemfilelockPlatform Typedef
- hi def link gemfilelockKey Identifier
- hi def link gemfilelockRemote String
- hi def link gemfilelockRevision Number
- hi def link gemfilelockFound Statement
- hi def link gemfilelockMissing Error
- hi def link gemfilelockVersion Type
- hi def link gemfilelockBang Special
-endfunction
-
-function! s:setuplock()
- nnoremap gf :Bopen
- nnoremap f :Bsplit
- nnoremap :Bsplit
- nnoremap gf :Btabedit
-endfunction
-
-augroup bundler_syntax
- autocmd!
- autocmd BufNewFile,BufRead */.bundle/config set filetype=yaml
- autocmd BufNewFile,BufRead Gemfile set filetype=ruby
- autocmd Syntax ruby if expand(':t') ==? 'gemfile' | call s:syntaxfile() | endif
- autocmd BufNewFile,BufRead [Gg]emfile.lock setf gemfilelock
- autocmd FileType gemfilelock set suffixesadd=.rb
- autocmd Syntax gemfilelock call s:syntaxlock()
- autocmd FileType gemfilelock call s:setuplock()
- autocmd User Rails/Gemfile.lock call s:setuplock()
-augroup END
-
-" }}}1
-" Initialization {{{1
-
-function! s:FindBundlerRoot(path) abort
- let path = s:shellslash(a:path)
- let fn = fnamemodify(path,':s?[\/]$??')
- let ofn = ""
- let nfn = fn
- while fn != ofn
- if filereadable(fn.'/Gemfile')
- return s:sub(simplify(fnamemodify(fn,':p')),'[\\/]$','')
- endif
- let ofn = fn
- let fn = fnamemodify(ofn,':h')
- endwhile
- return ''
-endfunction
-
-function! s:Detect(path)
- if !exists('b:bundler_root')
- let dir = s:FindBundlerRoot(a:path)
- if dir != ''
- let b:bundler_root = dir
- endif
- endif
- if exists('b:bundler_root')
- silent doautocmd User Bundler
- endif
-endfunction
-
-augroup bundler
- autocmd!
- autocmd FileType * call s:Detect(expand(':p'))
- autocmd BufNewFile,BufReadPost *
- \ if empty(&filetype) |
- \ call s:Detect(expand(':p')) |
- \ endif
- autocmd VimEnter * if expand('')==''|call s:Detect(getcwd())|endif
-augroup END
-
-" }}}1
-" Project {{{1
-
-let s:project_prototype = {}
-let s:projects = {}
-
-function! bundler#project(...) abort
- let dir = a:0 ? a:1 : (exists('b:bundler_root') && b:bundler_root !=# '' ? b:bundler_root : s:FindBundlerRoot(expand('%:p')))
- if dir !=# ''
- if has_key(s:projects,dir)
- let project = get(s:projects,dir)
- else
- let project = {'root': dir}
- let s:projects[dir] = project
- endif
- return extend(extend(project,s:project_prototype,'keep'),s:abstract_prototype,'keep')
- endif
- return {}
-endfunction
-
-function! s:project(...) abort
- let project = a:0 ? bundler#project(a:1) : bundler#project()
- if empty(project)
- call s:throw('not a Bundler project: '.(a:0 ? a:1 : expand('%')))
- else
- return project
- endif
-endfunction
-
-function! s:project_path(...) dict abort
- return join([self.root]+a:000,'/')
-endfunction
-
-call s:add_methods('project',['path'])
-
-function! s:project_locked() dict abort
- let lock_file = self.path('Gemfile.lock')
- let time = getftime(lock_file)
- if time != -1 && time != get(self,'_lock_time',-1)
- let self._locked = {'git': [], 'gem': [], 'path': []}
- let self._versions = {}
-
- for line in readfile(lock_file)
- if line =~# '^\S'
- let properties = {'versions': {}}
- if has_key(self._locked, tolower(line))
- call extend(self._locked[tolower(line)], [properties])
- endif
- elseif line =~# '^ \w\+: '
- let properties[matchstr(line, '\w\+')] = matchstr(line, ': \zs.*')
- elseif line =~# '^ [a-zA-Z0-9._-]\+\s\+(\d\+'
- let name = split(line, ' ')[0]
- let ver = substitute(line, '.*(\|).*', '', 'g')
- let properties.versions[name] = ver
- let self._versions[name] = ver
- endif
- endfor
- let self._lock_time = time
- endif
- return get(self, '_locked', {})
-endfunction
-
-function! s:project_paths(...) dict abort
- call self.locked()
- let time = get(self, '_lock_time', -1)
- if a:0 && a:1 ==# 'refresh' || time != -1 && time != get(self, '_path_time', -1)
- let paths = {}
-
- let chdir = exists("*haslocaldir") && haslocaldir() ? "lchdir" : "chdir"
- let cwd = getcwd()
-
- " Explicitly setting $PATH means /etc/zshenv on OS X can't touch it.
- if executable('env')
- let prefix = 'env PATH='.s:shellesc($PATH).' '
- else
- let prefix = ''
- endif
-
- let gem_paths = []
- if exists('$GEM_PATH')
- let gem_paths = split($GEM_PATH, has('win32') ? ';' : ':')
- else
- try
- exe chdir s:fnameescape(self.path())
- let gem_paths = split(system(prefix.'ruby -rubygems -e "print Gem.path.join(%(;))"'), ';')
- finally
- exe chdir s:fnameescape(cwd)
- endtry
- endif
-
- let abi_version = matchstr(get(gem_paths, 0, '1.9.1'), '[0-9.]\+$')
- for config in [expand('~/.bundle/config'), self.path('.bundle/config')]
- if filereadable(config)
- let body = join(readfile(config), "\n")
- let bundle_path = matchstr(body, "\\C\\ 0
- call insert(self._sorted, remove(self._sorted,index))
- endif
- call self.alter_buffer_paths()
- return paths
- endif
- return get(self,'_paths',{})
-endfunction
-
-function! s:project_sorted() dict abort
- call self.paths()
- return get(self, '_sorted', [])
-endfunction
-
-function! s:project_gems() dict abort
- return self.paths()
-endfunction
-
-function! s:project_versions() dict abort
- call self.locked()
- return get(self, '_versions', {})
-endfunction
-
-function! s:project_has(gem) dict abort
- call self.locked()
- return has_key(self.versions(), a:gem)
-endfunction
-
-call s:add_methods('project', ['locked', 'gems', 'paths', 'sorted', 'versions', 'has'])
-
-" }}}1
-" Buffer {{{1
-
-let s:buffer_prototype = {}
-
-function! s:buffer(...) abort
- let buffer = {'#': bufnr(a:0 ? a:1 : '%')}
- let g:buffer = buffer
- call extend(extend(buffer,s:buffer_prototype,'keep'),s:abstract_prototype,'keep')
- if buffer.getvar('bundler_root') !=# ''
- return buffer
- endif
- call s:throw('not a Bundler project: '.(a:0 ? a:1 : expand('%')))
-endfunction
-
-function! bundler#buffer(...) abort
- return s:buffer(a:0 ? a:1 : '%')
-endfunction
-
-function! s:buffer_getvar(var) dict abort
- return getbufvar(self['#'],a:var)
-endfunction
-
-function! s:buffer_setvar(var,value) dict abort
- return setbufvar(self['#'],a:var,a:value)
-endfunction
-
-function! s:buffer_project() dict abort
- return s:project(self.getvar('bundler_root'))
-endfunction
-
-call s:add_methods('buffer',['getvar','setvar','project'])
-
-" }}}1
-" Bundle {{{1
-
-function! s:push_chdir()
- if !exists("s:command_stack") | let s:command_stack = [] | endif
- let chdir = exists("*haslocaldir") && haslocaldir() ? "lchdir " : "chdir "
- call add(s:command_stack,chdir.s:fnameescape(getcwd()))
- exe chdir.'`=s:project().path()`'
-endfunction
-
-function! s:pop_command()
- if exists("s:command_stack") && len(s:command_stack) > 0
- exe remove(s:command_stack,-1)
- endif
-endfunction
-
-function! s:Bundle(bang,arg)
- let old_makeprg = &l:makeprg
- let old_errorformat = &l:errorformat
- let old_compiler = get(b:, 'current_compiler', '')
- try
- compiler bundler
- execute 'make! '.a:arg
- if a:bang ==# ''
- return 'if !empty(getqflist()) | cfirst | endif'
- else
- return ''
- endif
- finally
- let &l:errorformat = old_errorformat
- let &l:makeprg = old_makeprg
- let b:current_compiler = old_compiler
- if empty(b:current_compiler)
- unlet b:current_compiler
- endif
- endtry
-endfunction
-
-function! s:BundleComplete(A,L,P)
- if a:L =~# '^\S\+\s\+\%(show\|update\) '
- return s:completion_filter(keys(s:project().paths()),a:A)
- endif
- return s:completion_filter(['install','update','exec','package','config','check','list','show','outdated','console','viz','benchmark'],a:A)
-endfunction
-
-function! s:SetupMake() abort
- compiler bundler
-endfunction
-
-call s:command("-bar -bang -nargs=? -complete=customlist,s:BundleComplete Bundle :execute s:Bundle('',)")
-
-augroup bundler_make
- autocmd FileType gemfilelock call s:SetupMake()
- autocmd FileType ruby
- \ if expand(':t') ==? 'gemfile' |
- \ call s:SetupMake() |
- \ endif
- autocmd QuickFixCmdPre make,lmake
- \ if &makeprg =~# '^bundle' && exists('b:bundler_root') |
- \ call s:push_chdir() |
- \ endif
- autocmd QuickFixCmdPost make,lmake
- \ if &makeprg =~# '^bundle' && exists('b:bundler_root') |
- \ call s:pop_command() |
- \ call s:project().paths("refresh") |
- \ endif
-augroup END
-
-" }}}1
-" Bopen {{{1
-
-function! s:Open(cmd,gem,lcd)
- if a:gem ==# '' && a:lcd
- return a:cmd.' `=bundler#buffer().project().path("Gemfile")`'
- elseif a:gem ==# ''
- return a:cmd.' `=bundler#buffer().project().path("Gemfile.lock")`'
- else
- if !has_key(s:project().paths(), a:gem)
- call s:project().paths('refresh')
- endif
- if !has_key(s:project().paths(), a:gem)
- if has_key(s:project().versions(), a:gem)
- let v:errmsg = "Gem \"".a:gem."\" is in bundle but not installed"
- else
- let v:errmsg = "Gem \"".a:gem."\" is not in bundle"
- endif
- return 'echoerr v:errmsg'
- endif
- let path = fnameescape(bundler#buffer().project().paths()[a:gem])
- let exec = a:cmd.' '.path
- if a:cmd =~# '^pedit' && a:lcd
- let exec .= '|wincmd P|lcd '.path.'|wincmd p'
- elseif a:lcd
- let exec .= '|lcd '.path
- endif
- return exec
- endif
-endfunction
-
-function! s:OpenComplete(A,L,P)
- return s:completion_filter(keys(s:project().paths()),a:A)
-endfunction
-
-call s:command("-bar -bang -nargs=? -complete=customlist,s:OpenComplete Bopen :execute s:Open('edit',,1)")
-call s:command("-bar -bang -nargs=? -complete=customlist,s:OpenComplete Bedit :execute s:Open('edit',,0)")
-call s:command("-bar -bang -nargs=? -complete=customlist,s:OpenComplete Bsplit :execute s:Open('split',,1)")
-call s:command("-bar -bang -nargs=? -complete=customlist,s:OpenComplete Bvsplit :execute s:Open('vsplit',,1)")
-call s:command("-bar -bang -nargs=? -complete=customlist,s:OpenComplete Btabedit :execute s:Open('tabedit',,1)")
-call s:command("-bar -bang -nargs=? -complete=customlist,s:OpenComplete Bpedit :execute s:Open('pedit',,1)")
-
-" }}}1
-" Paths {{{1
-
-function! s:build_path_option(paths,suffix) abort
- return join(map(copy(a:paths),'",".escape(s:shellslash(v:val."/".a:suffix),", ")'),'')
-endfunction
-
-function! s:buffer_alter_paths() dict abort
- if self.getvar('&suffixesadd') =~# '\.rb\>'
- let new = self.project().sorted()
- let old = type(self.getvar('bundler_paths')) == type([]) ? self.getvar('bundler_paths') : []
- for [option, suffix] in [['path', 'lib'], ['tags', 'tags']]
- let value = self.getvar('&'.option)
- if !empty(old)
- let drop = s:build_path_option(old,suffix)
- let index = stridx(value,drop)
- if index > 0
- let value = value[0:index-1] . value[index+strlen(drop):-1]
- endif
- endif
- call self.setvar('&'.option,value.s:build_path_option(new,suffix))
- endfor
- call self.setvar('bundler_paths',new)
- endif
-endfunction
-
-call s:add_methods('buffer',['alter_paths'])
-
-function! s:project_alter_buffer_paths() dict abort
- for bufnr in range(1,bufnr('$'))
- if getbufvar(bufnr,'bundler_root') ==# self.path()
- let vim_parsing_quirk = s:buffer(bufnr).alter_paths()
- endif
- if getbufvar(bufnr, '&syntax') ==# 'gemfilelock'
- call setbufvar(bufnr, '&syntax', 'gemfilelock')
- endif
- endfor
-endfunction
-
-call s:add_methods('project',['alter_buffer_paths'])
-
-augroup bundler_path
- autocmd!
- autocmd User Bundler call s:buffer().alter_paths()
-augroup END
-
-" }}}1
-
-" vim:set sw=2 sts=2:
diff --git a/vim/bundle/vim-classpath b/vim/bundle/vim-classpath
deleted file mode 160000
index 1ef18a1..0000000
--- a/vim/bundle/vim-classpath
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 1ef18a10512fe0f84bb2c412b38e613c331a7b55
diff --git a/vim/bundle/vim-clojure-highlight b/vim/bundle/vim-clojure-highlight
deleted file mode 160000
index aac76b4..0000000
--- a/vim/bundle/vim-clojure-highlight
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit aac76b431b1ed726a7f3e2608bdfc02cce76ec8e
diff --git a/vim/bundle/vim-clojure-static b/vim/bundle/vim-clojure-static
deleted file mode 160000
index bdf5757..0000000
--- a/vim/bundle/vim-clojure-static
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit bdf57577b8c1f3677da788f93490209688870e58
diff --git a/vim/bundle/vim-coffee-script b/vim/bundle/vim-coffee-script
deleted file mode 160000
index fd09aea..0000000
--- a/vim/bundle/vim-coffee-script
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit fd09aea1c0944eddd9dd6e5a22db4d52b7894490
diff --git a/vim/bundle/vim-colors-pencil b/vim/bundle/vim-colors-pencil
deleted file mode 160000
index b79c517..0000000
--- a/vim/bundle/vim-colors-pencil
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit b79c5177caac6810af07cb15e4f6db9324f1f42f
diff --git a/vim/bundle/vim-colors-solarized/README.mkd b/vim/bundle/vim-colors-solarized/README.mkd
deleted file mode 100644
index a163b02..0000000
--- a/vim/bundle/vim-colors-solarized/README.mkd
+++ /dev/null
@@ -1,267 +0,0 @@
----
-Title: Solarized Colorscheme for Vim
-Description: Precision colors for machines and people
-Author: Ethan Schoonover
-Colors: light yellow
-Created: 2011 Mar 15
-Modified: 2011 Apr 16
-
----
-
-Solarized Colorscheme for Vim
-=============================
-
-Developed by Ethan Schoonover
-
-Visit the [Solarized homepage]
-------------------------------
-
-See the [Solarized homepage] for screenshots,
-details and colorscheme versions for Vim, Mutt, popular terminal emulators and
-other applications.
-
-Screenshots
------------
-
-
-
-Downloads
----------
-
-If you have come across this colorscheme via the [Vim-only repository] on
-github, or the [vim.org script] page see the link above to the Solarized
-homepage or visit the main [Solarized repository].
-
-The [Vim-only repository] is kept in sync with the main [Solarized repository]
-and is for installation convenience only (with [Pathogen] or [Vundle], for
-instance). Issues, bug reports, changelogs are centralized at the main
-[Solarized repository].
-
-[Solarized homepage]: http://ethanschoonover.com/solarized
-[Solarized repository]: https://github.com/altercation/solarized
-[Vim-only repository]: https://github.com/altercation/vim-colors-solarized
-[vimorg-script]: http://vim.org/script
-[Pathogen]: https://github.com/tpope/vim-pathogen
-[Vundle]: https://github.com/gmarik/vundle
-
-Installation
-------------
-
-### Option 1: Manual installation
-
-1. Move `solarized.vim` to your `.vim/colors` directory. After downloading the
- vim script or package:
-
- $ cd vim-colors-solarized/colors
- $ mv solarized.vim ~/.vim/colors/
-
-### Option 2: Pathogen installation ***(recommended)***
-
-1. Download and install Tim Pope's [Pathogen].
-
-2. Next, move or clone the `vim-colors-solarized` directory so that it is
- a subdirectory of the `.vim/bundle` directory.
-
- a. **Clone:**
-
- $ cd ~/.vim/bundle
- $ git clone git://github.com/altercation/vim-colors-solarized.git
-
- b. **Move:**
-
- In the parent directory of vim-colors-solarized:
-
- $ mv vim-colors-solarized ~/.vim/bundle/
-
-### Modify .vimrc
-
-After either Option 1 or Option 2 above, put the following two lines in your
-.vimrc:
-
- syntax enable
- set background=dark
- colorscheme solarized
-
-or, for the light background mode of Solarized:
-
- syntax enable
- set background=light
- colorscheme solarized
-
-I like to have a different background in GUI and terminal modes, so I can use
-the following if-then. However, I find vim's background autodetection to be
-pretty good and, at least with MacVim, I can leave this background value
-assignment out entirely and get the same results.
-
- if has('gui_running')
- set background=light
- else
- set background=dark
- endif
-
-See the [Solarized homepage] for screenshots which will help you
-select either the light or dark background.
-
-### IMPORTANT NOTE FOR TERMINAL USERS:
-
-If you are going to use Solarized in Terminal mode (i.e. not in a GUI version
-like gvim or macvim), **please please please** consider setting your terminal
-emulator's colorscheme to used the Solarized palette. I've included palettes
-for some popular terminal emulator as well as Xdefaults in the official
-Solarized download available from [Solarized homepage]. If you use
-Solarized *without* these colors, Solarized will need to be told to degrade its
-colorscheme to a set compatible with the limited 256 terminal palette (whereas
-by using the terminal's 16 ansi color values, you can set the correct, specific
-values for the Solarized palette).
-
-If you do use the custom terminal colors, solarized.vim should work out of the
-box for you. If you are using a terminal emulator that supports 256 colors and
-don't want to use the custom Solarized terminal colors, you will need to use
-the degraded 256 colorscheme. To do so, simply add the following line *before*
-the `colorschem solarized` line:
-
- let g:solarized_termcolors=256
-
-Again, I recommend just changing your terminal colors to Solarized values
-either manually or via one of the many terminal schemes available for import.
-
-Advanced Configuration
-----------------------
-
-Solarized will work out of the box with just the two lines specified above but
-does include several other options that can be set in your .vimrc file.
-
-Set these in your vimrc file prior to calling the colorscheme.
-"
- option name default optional
- ------------------------------------------------
- g:solarized_termcolors= 16 | 256
- g:solarized_termtrans = 0 | 1
- g:solarized_degrade = 0 | 1
- g:solarized_bold = 1 | 0
- g:solarized_underline = 1 | 0
- g:solarized_italic = 1 | 0
- g:solarized_contrast = "normal"| "high" or "low"
- g:solarized_visibility= "normal"| "high" or "low"
- ------------------------------------------------
-
-### Option Details
-
-* g:solarized_termcolors
-
- This is set to *16* by default, meaning that Solarized will attempt to use
- the standard 16 colors of your terminal emulator. You will need to set
- those colors to the correct Solarized values either manually or by
- importing one of the many colorscheme available for popular terminal
- emulators and Xdefaults.
-
-* g:solarized_termtrans
-
- If you use a terminal emulator with a transparent background and Solarized
- isn't displaying the background color transparently, set this to 1 and
- Solarized will use the default (transparent) background of the terminal
- emulator. *urxvt* required this in my testing; iTerm2 did not.
-
- Note that on Mac OS X Terminal.app, solarized_termtrans is set to 1 by
- default as this is almost always the best option. The only exception to
- this is if the working terminfo file supports 256 colors (xterm-256color).
-
-* g:solarized_degrade
-
- For test purposes only; forces Solarized to use the 256 degraded color mode
- to test the approximate color values for accuracy.
-
-* g:solarized_bold | g:solarized_underline | g:solarized_italic
-
- If you wish to stop Solarized from displaying bold, underlined or
- italicized typefaces, simply assign a zero value to the appropriate
- variable, for example: `let g:solarized_italic=0`
-
-* g:solarized_contrast
-
- Stick with normal! It's been carefully tested. Setting this option to high
- or low does use the same Solarized palette but simply shifts some values up
- or down in order to expand or compress the tonal range displayed.
-
-* g:solarized_visibility
-
- Special characters such as trailing whitespace, tabs, newlines, when
- displayed using `:set list` can be set to one of three levels depending on
- your needs. Default value is `normal` with `high` and `low` options.
-
-Toggle Background Function
---------------------------
-
-Solarized comes with a Toggle Background plugin that by default will map to
- if that mapping is available. If it is not available you will need to
-either map the function manually or change your current mapping to
-something else.
-
-To set your own mapping in your .vimrc file, simply add the following line to
-support normal, insert and visual mode usage, changing the "" value to the
-key or key combination you wish to use:
-
- call togglebg#map("")
-
-Note that you'll want to use a single function key or equivalent if you want
-the plugin to work in all modes (normal, insert, visual).
-
-Code Notes
-----------
-
-Use folding to view the `solarized.vim` script with `foldmethod=marker` turned
-on.
-
-I have attempted to modularize the creation of Vim colorschemes in this script
-and, while it could be refactored further, it should be a good foundation for
-the creation of any color scheme. By simply changing the sixteen values in the
-GUI section and testing in gvim (or mvim) you can rapidly prototype new
-colorschemes without diving into the weeds of line-item editing each syntax
-highlight declaration.
-
-The Values
-----------
-
-L\*a\*b values are canonical (White D65, Reference D50), other values are
-matched in sRGB space.
-
- SOLARIZED HEX 16/8 TERMCOL XTERM/HEX L*A*B sRGB HSB
- --------- ------- ---- ------- ----------- ---------- ----------- -----------
- base03 #002b36 8/4 brblack 234 #1c1c1c 15 -12 -12 0 43 54 193 100 21
- base02 #073642 0/4 black 235 #262626 20 -12 -12 7 54 66 192 90 26
- base01 #586e75 10/7 brgreen 240 #4e4e4e 45 -07 -07 88 110 117 194 25 46
- base00 #657b83 11/7 bryellow 241 #585858 50 -07 -07 101 123 131 195 23 51
- base0 #839496 12/6 brblue 244 #808080 60 -06 -03 131 148 150 186 13 59
- base1 #93a1a1 14/4 brcyan 245 #8a8a8a 65 -05 -02 147 161 161 180 9 63
- base2 #eee8d5 7/7 white 254 #d7d7af 92 -00 10 238 232 213 44 11 93
- base3 #fdf6e3 15/7 brwhite 230 #ffffd7 97 00 10 253 246 227 44 10 99
- yellow #b58900 3/3 yellow 136 #af8700 60 10 65 181 137 0 45 100 71
- orange #cb4b16 9/3 brred 166 #d75f00 50 50 55 203 75 22 18 89 80
- red #dc322f 1/1 red 160 #d70000 50 65 45 220 50 47 1 79 86
- magenta #d33682 5/5 magenta 125 #af005f 50 65 -05 211 54 130 331 74 83
- violet #6c71c4 13/5 brmagenta 61 #5f5faf 50 15 -45 108 113 196 237 45 77
- blue #268bd2 4/4 blue 33 #0087ff 55 -10 -45 38 139 210 205 82 82
- cyan #2aa198 6/6 cyan 37 #00afaf 60 -35 -05 42 161 152 175 74 63
- green #859900 2/2 green 64 #5f8700 60 -20 65 133 153 0 68 100 60
-
-License
--------
-Copyright (c) 2011 Ethan Schoonover
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/vim/bundle/vim-colors-solarized/autoload/togglebg.vim b/vim/bundle/vim-colors-solarized/autoload/togglebg.vim
deleted file mode 100644
index 108511f..0000000
--- a/vim/bundle/vim-colors-solarized/autoload/togglebg.vim
+++ /dev/null
@@ -1,55 +0,0 @@
-" Toggle Background
-" Modified: 2011 Apr 29
-" Maintainer: Ethan Schoonover
-" License: OSI approved MIT license
-
-if exists("g:loaded_togglebg")
- finish
-endif
-let g:loaded_togglebg = 1
-
-" noremap is a bit misleading here if you are unused to vim mapping.
-" in fact, there is remapping, but only of script locally defined remaps, in
-" this case TogBG. The ")
-
-" post draft
-let id = atom#createEntry("http://d.hatena.ne.jp/".hatena_id."/atom/draft", hatena_id, password, entry)
-
-" modify it. publish it.
-call entry.setContent("")
-let id = atom#updateEntry(id, hatena_id, password, entry, {"X-HATENA-PUBLISH": 1})
-
-" get the entry.
-let entry = atom#getEntry(id, hatena_id, password)
-echo entry.getTitle()
-echo entry.getContent()
-
-" delete the entry.
-call atom#deleteEntry(id, hatena_id, password)
-
-" vim:set ft=vim:
diff --git a/vim/bundle/webapi-vim/example/jugem.vim b/vim/bundle/webapi-vim/example/jugem.vim
deleted file mode 100644
index 0fb7b63..0000000
--- a/vim/bundle/webapi-vim/example/jugem.vim
+++ /dev/null
@@ -1,24 +0,0 @@
-scriptencoding utf-8
-
-let jugem_id = 'your-jugem-id'
-let password = 'your-jugem-password'
-let imageName = "my-image.gif"
-let imagePath = "/path/to/images/my-image.gif"
-
-let api = metaWeblog#proxy("http://".jugem_id.".jugem.jp/admin/xmlrpc.php")
-
-let imgurl = api.newMediaObject(jugem_id, jugem_id, password, {
-\ "name": imageName,
-\ "path": imagePath,
-\})
-
-let text = "How about this?
"
-
-echo api.newPost(jugem_id, jugem_id, password, {
-\ "title": "post from webpi-vim",
-\ "description": text,
-\ "dateCreated": "",
-\ "categories": ["test"],
-\}, 1)
-
-" vim:set ft=vim:
diff --git a/vim/bundle/webapi-vim/example/livedoor.vim b/vim/bundle/webapi-vim/example/livedoor.vim
deleted file mode 100644
index ff99eef..0000000
--- a/vim/bundle/webapi-vim/example/livedoor.vim
+++ /dev/null
@@ -1,15 +0,0 @@
-scriptencoding utf-8
-
-let livedoor_id = 'your-livedoor-id'
-let password = 'your-livedoor-password'
-
-" write entry
-let entry = atom#newEntry()
-call entry.setTitle("title of entry")
-call entry.setContentType("text/html")
-call entry.setContent("")
-
-let postUrl = "http://cms.blog.livedoor.com/atom"
-echo atom#createEntry(postUrl, livedoor_id, password, entry)
-
-" vim:set ft=vim:
diff --git a/vim/bundle/webapi-vim/example/rss.vim b/vim/bundle/webapi-vim/example/rss.vim
deleted file mode 100644
index ae042d9..0000000
--- a/vim/bundle/webapi-vim/example/rss.vim
+++ /dev/null
@@ -1,4 +0,0 @@
-for item in webapi#feed#parseURL('http://rss.slashdot.org/Slashdot/slashdot')
- echo item.link
- echo " " item.title
-endfor
diff --git a/vim/bundle/webapi-vim/example/twitter.vim b/vim/bundle/webapi-vim/example/twitter.vim
deleted file mode 100644
index dfb174a..0000000
--- a/vim/bundle/webapi-vim/example/twitter.vim
+++ /dev/null
@@ -1,29 +0,0 @@
-set rtp+=webapi-vim
-
-let ctx = {}
-let configfile = expand('~/.twitter-vim')
-if filereadable(configfile)
- let ctx = eval(join(readfile(configfile), ""))
-else
- let ctx.consumer_key = input("consumer_key:")
- let ctx.consumer_secret = input("consumer_secret:")
-
- let request_token_url = "https://twitter.com/oauth/request_token"
- let auth_url = "https://twitter.com/oauth/authorize"
- let access_token_url = "https://api.twitter.com/oauth/access_token"
-
- let ctx = webapi#oauth#request_token(request_token_url, ctx)
- if has("win32") || has("win64")
- exe "!start rundll32 url.dll,FileProtocolHandler ".auth_url."?oauth_token=".ctx.request_token
- else
- call system("xdg-open '".auth_url."?oauth_token=".ctx.request_token."'")
- endif
- let pin = input("PIN:")
- let ctx = webapi#oauth#access_token(access_token_url, ctx, {"oauth_verifier": pin})
- call writefile([string(ctx)], configfile)
-endif
-
-let post_url = "https://api.twitter.com/1/statuses/update.xml"
-let status = "tweeeeeeeeeeeeeet"
-let ret = webapi#oauth#post(post_url, ctx, {}, {"status": status})
-echo ret
diff --git a/vim/bundle/webapi-vim/example/weather.vim b/vim/bundle/webapi-vim/example/weather.vim
deleted file mode 100644
index 7b9d3ff..0000000
--- a/vim/bundle/webapi-vim/example/weather.vim
+++ /dev/null
@@ -1,3 +0,0 @@
-let loc = 'Osaka'
-let dom = webapi#xml#parseURL(printf('http://www.google.com/ig/api?weather=%s', webapi#http#encodeURIComponent(loc)))
-echo loc.'''s current weather is '.dom.find('current_conditions').childNode('condition').attr['data']
diff --git a/vim/bundle/webapi-vim/webapi.vim.vimup b/vim/bundle/webapi-vim/webapi.vim.vimup
deleted file mode 100644
index 917d595..0000000
--- a/vim/bundle/webapi-vim/webapi.vim.vimup
+++ /dev/null
@@ -1,31 +0,0 @@
-script_name: WebAPI.vim
-script_id: '4019'
-script_type: utility
-script_package: webapi-vim.zip
-script_version: '0.2'
-required_vim_version: '7.0'
-summary: vimscript for gist
-
-detailed_description: |
- Interface to Web APIs
-
- webapi-vim include:
-
- * XML parser Library.
- * HTML parser Library.
- * JSON parser Library.
- * HTTP client.
-
- and some utility functions.
-
-install_details: |
- copy it to your plugin directory.
-
-versions:
-- '0.2': |
- Bug fixes.
-- '0.1': |
- First post.
-
-# __END__
-# vim: filetype=yaml
diff --git a/vimrc b/vimrc
index 481d099..3050598 100644
--- a/vimrc
+++ b/vimrc
@@ -11,9 +11,38 @@ filetype off
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
-" Let Vundle manage itself.
+" Plugins go here
+"
+" Let Vundle manage itself
Plugin 'gmarik/Vundle.vim'
+Plugin 'mattn/webapi-vim' " Required by gist-vim
+Plugin 'mattn/gist-vim'
+Plugin 'bling/vim-airline'
+Plugin 'tpope/vim-obsession'
+Plugin 'tpope/vim-fugitive'
+Plugin 'tpope/vim-classpath'
+Plugin 'rking/ag.vim'
+Plugin 'christoomey/vim-tmux-navigator'
+
+" Colors
+Plugin 'reedes/vim-colors-pencil'
+Plugin 'nanotech/jellybeans.vim'
+Plugin 'sickill/vim-monokai'
+Plugin 'elixir-lang/vim-elixir'
+Plugin 'chmllr/elrodeo-colorscheme'
+Plugin 'altercation/vim-colors-solarized'
+
+" CoffeeScript
+Plugin 'kchmck/vim-coffee-script'
+
+" Clojure
+Plugin 'kien/rainbow_parentheses.vim'
+Plugin 'guns/vim-clojure-highlight'
+Plugin 'guns/vim-clojure-static'
+Plugin 'tpope/vim-fireplace'
+
+
" Plugins
Plugin 'jpalardy/vim-slime'