Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Moved to pathogen, with addons -> bundle using git submodules.

  • Loading branch information...
commit afb507ada630f00660bd520767745037aae627fc 1 parent 632cd20
@jgm authored
Showing with 177 additions and 17,755 deletions.
  1. +12 −0 .gitmodules
  2. +16 −0 README
  3. +0 −1,222 addons/NERD_tree/doc/NERD_tree.txt
  4. +0 −85 addons/NERD_tree/doc/tags
  5. +0 −41 addons/NERD_tree/nerdtree_plugin/exec_menuitem.vim
  6. +0 −194 addons/NERD_tree/nerdtree_plugin/fs_menu.vim
  7. +0 −4,059 addons/NERD_tree/plugin/NERD_tree.vim
  8. +0 −1,155 addons/fuzzyfinder/autoload/fuf.vim
  9. +0 −211 addons/fuzzyfinder/autoload/fuf/bookmark.vim
  10. +0 −176 addons/fuzzyfinder/autoload/fuf/buffer.vim
  11. +0 −133 addons/fuzzyfinder/autoload/fuf/callbackfile.vim
  12. +0 −135 addons/fuzzyfinder/autoload/fuf/callbackitem.vim
  13. +0 −168 addons/fuzzyfinder/autoload/fuf/changelist.vim
  14. +0 −128 addons/fuzzyfinder/autoload/fuf/dir.vim
  15. +0 −137 addons/fuzzyfinder/autoload/fuf/file.vim
  16. +0 −119 addons/fuzzyfinder/autoload/fuf/givencmd.vim
  17. +0 −119 addons/fuzzyfinder/autoload/fuf/givendir.vim
  18. +0 −117 addons/fuzzyfinder/autoload/fuf/givenfile.vim
  19. +0 −202 addons/fuzzyfinder/autoload/fuf/help.vim
  20. +0 −178 addons/fuzzyfinder/autoload/fuf/jumplist.vim
  21. +0 −131 addons/fuzzyfinder/autoload/fuf/line.vim
  22. +0 −130 addons/fuzzyfinder/autoload/fuf/mrucmd.vim
  23. +0 −156 addons/fuzzyfinder/autoload/fuf/mrufile.vim
  24. +0 −150 addons/fuzzyfinder/autoload/fuf/quickfix.vim
  25. +0 −182 addons/fuzzyfinder/autoload/fuf/tag.vim
  26. +0 −162 addons/fuzzyfinder/autoload/fuf/taggedfile.vim
  27. +0 −1,149 addons/fuzzyfinder/doc/fuf.jax
  28. +0 −1,562 addons/fuzzyfinder/doc/fuf.txt
  29. +0 −144 addons/fuzzyfinder/doc/tags
  30. +0 −177 addons/fuzzyfinder/plugin/fuf.vim
  31. +0 −1  addons/haskellmode/.VimballRecord
  32. +0 −191 addons/haskellmode/autoload/haskellmode.vim
  33. +0 −536 addons/haskellmode/compiler/ghc.vim
  34. +0 −465 addons/haskellmode/doc/haskellmode.txt
  35. +0 −56 addons/haskellmode/doc/tags
  36. +0 −14 addons/haskellmode/ftplugin/haskell.vim
  37. +0 −816 addons/haskellmode/ftplugin/haskell_doc.vim
  38. +0 −79 addons/haskellmode/ftplugin/haskell_hpaste.vim
  39. +0 −35 addons/snipMate/after/plugin/snipMate.vim
  40. +0 −433 addons/snipMate/autoload/snipMate.vim
  41. +0 −286 addons/snipMate/doc/snipMate.txt
  42. +0 −33 addons/snipMate/doc/tags
  43. +0 −10 addons/snipMate/ftplugin/html_snip_helper.vim
  44. +0 −247 addons/snipMate/plugin/snipMate.vim
  45. +0 −7 addons/snipMate/snippets/_.snippets
  46. +0 −66 addons/snipMate/snippets/autoit.snippets
  47. +0 −110 addons/snipMate/snippets/c.snippets
  48. +0 −30 addons/snipMate/snippets/cpp.snippets
  49. +0 −190 addons/snipMate/snippets/html.snippets
  50. +0 −78 addons/snipMate/snippets/java.snippets
  51. +0 −74 addons/snipMate/snippets/javascript.snippets
  52. +0 −54 addons/snipMate/snippets/mako.snippets
  53. +0 −184 addons/snipMate/snippets/objc.snippets
  54. +0 −91 addons/snipMate/snippets/perl.snippets
  55. +0 −216 addons/snipMate/snippets/php.snippets
  56. +0 −86 addons/snipMate/snippets/python.snippets
  57. +0 −420 addons/snipMate/snippets/ruby.snippets
  58. +0 −28 addons/snipMate/snippets/sh.snippets
  59. +0 −7 addons/snipMate/snippets/snippet.snippets
  60. +0 −92 addons/snipMate/snippets/tcl.snippets
  61. +0 −134 addons/snipMate/snippets/tex.snippets
  62. +0 −32 addons/snipMate/snippets/vim.snippets
  63. +0 −58 addons/snipMate/snippets/zsh.snippets
  64. +0 −19 addons/snipMate/syntax/snippet.vim
  65. +139 −0 autoload/pathogen.vim
  66. 0  addons/vim-fugitive → bundle/fugitive
  67. +1 −0  bundle/fuzzyfinder
  68. +1 −0  bundle/nerdtree
  69. 0  {addons → bundle}/potwiki/doc/potwiki.txt
  70. 0  {addons → bundle}/potwiki/plugin/potwiki.vim
  71. 0  {addons → bundle}/potwiki/syntax/potwiki.vim
  72. +1 −0  bundle/snipmate
  73. 0  {addons → bundle}/utl/.VimballRecord
  74. 0  {addons → bundle}/utl/autoload/utl_lib.vim
  75. 0  {addons → bundle}/utl/doc/tags
  76. 0  {addons → bundle}/utl/doc/utl_usr.txt
  77. 0  {addons → bundle}/utl/plugin/utl.vim
  78. 0  {addons → bundle}/utl/plugin/utl_rc.vim
  79. 0  {addons → bundle}/utl/plugin/utl_scm.vim
  80. 0  {addons → bundle}/utl/plugin/utl_uri.vim
  81. +0 −28 doc/tags
  82. +7 −27 vimrc
View
12 .gitmodules
@@ -1,3 +1,15 @@
[submodule "addons/vim-fugitive"]
path = addons/vim-fugitive
url = http://github.com/tpope/vim-fugitive.git
+[submodule "bundle/snipmate"]
+ path = bundle/snipmate
+ url = http://github.com/msanders/snipmate.vim.git
+[submodule "bundle/nerdtree"]
+ path = bundle/nerdtree
+ url = http://github.com/scrooloose/nerdtree.git
+[submodule "bundle/fuzzyfinder"]
+ path = bundle/fuzzyfinder
+ url = http://github.com/clones/vim-fuzzyfinder.git
+[submodule "bundle/fugitive"]
+ path = bundle/fugitive
+ url = git://github.com/tpope/vim-fugitive.git
View
16 README
@@ -6,4 +6,20 @@ My .vimrc looks like this:
" and then source the common configuration file
source ~/.vim/vimrc
+All addons go in the bundle directory and are managed by
+pathogen. When possible I install them as git submodules:
+
+git submodule add http://github.com/msanders/snipmate.vim.git bundle/snipmate
+git submodule init
+git submodule add http://github.com/scrooloose/nerdtree.git bundle/nerdtree
+git submodule init
+git submodule add http://github.com/clones/vim-fuzzyfinder.git bundle/fuzzyfinder
+git submodule init
+git submodule add git://github.com/tpope/vim-fugitive.git bundle/fugitive
+git submodule init
+
+Add 'tags' to bundle/snipmate/.git/info/exclude
+and bundle/fuzzyfinder/.git/info/exclude
+so that when tags are regenerated, git doesn't think
+you have a dirty submodule.
View
1,222 addons/NERD_tree/doc/NERD_tree.txt
@@ -1,1222 +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 (netw), so if
- you :edit a directory a (slighly 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 filesytem
- 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 [<start-directory> | <bookmark>] *: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 <bookmark> *:NERDTreeFromBookmark*
- Opens a fresh NERD tree with the root initialized to the dir for
- <bookmark>. This only reason to use this command over :NERDTree is for
- the completion (which is for bookmarks rather than directories).
-
-:NERDTreeToggle [<start-directory> | <bookmark>] *: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 no tree exists for the current tab,
- or the file is not under the current root, then initialize a new tree where
- the root is the directory of the current file.
-
-------------------------------------------------------------------------------
-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 <name>
- Bookmark the current node as <name>. If there is already a <name>
- bookmark, it is overwritten. <name> must not contain spaces.
-
-:BookmarkToRoot <bookmark>
- Make the directory corresponding to <bookmark> the new root. If a treenode
- corresponding to <bookmark> is already cached somewhere in the tree then
- the current tree will be used, otherwise a fresh tree will be opened.
- Note that if <bookmark> points to a file then its parent will be used
- instead.
-
-:RevealBookmark <bookmark>
- 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 <bookmark>
- <bookmark> 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 [<bookmarks>]
- 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:
-<bookmark name><space><full path to the bookmark location>
-
-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 dif.....................................|NERDTree-e|
-
-<CR>...............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|
-<C-J>...Jump down to the next sibling of the current directory...|NERDTree-C-J|
-<C-K>...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|
-
-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: <C-J>
-Map option: NERDTreeMapJumpNextSibling
-Applies to: files and directories.
-
-Jump to the next sibling of the selected node.
-
-------------------------------------------------------------------------------
- *NERDTree-C-K*
-Default key: <C-K>
-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-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.
-
-------------------------------------------------------------------------------
-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 <some directory>
-<
-will open up a "secondary" NERD tree instead of a netrw in the target window.
-
-Secondary NERD trees behaves slighly 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.
-
-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.
-
-==============================================================================
-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-?|)
-
- Example: >
- call NERDTreeAddKeyMap({
- \ 'key': 'b',
- \ 'callback': 'NERDTreeEchoCurrentNode',
- \ 'quickhelpText': 'echo full path of current node' })
-
- function! NERDTreeEchoCurrentNode()
- let n = g:NERDTreeFileNode.GetSelected()
- if n != {}
- echomsg 'Current node: ' . n.path.str()
- endif
- endfunction
-<
- This code should sit in a file like ~/.vim/nerdtree_plugin/mymapping.vim.
- It adds a (rather useless) mapping on 'b' which echos the full path to the
- current 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*
-
-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 <CR> 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
- <some dir>" (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 <path> would fail if <path> was relative and
- didnt start with a ./ or ../ Thanks to James Kanze.
- - make the q mapping work with secondary (:e <dir> 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 <directory> 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 '<tab>' 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
-
-==============================================================================
-8. License *NERDTreeLicense*
-
-The NERD tree is released under the wtfpl.
-See http://sam.zoy.org/wtfpl/COPYING.
View
85 addons/NERD_tree/doc/tags
@@ -1,85 +0,0 @@
-'NERDChristmasTree' NERD_tree.txt /*'NERDChristmasTree'*
-'NERDTreeAutoCenter' NERD_tree.txt /*'NERDTreeAutoCenter'*
-'NERDTreeAutoCenterThreshold' NERD_tree.txt /*'NERDTreeAutoCenterThreshold'*
-'NERDTreeBookmarksFile' NERD_tree.txt /*'NERDTreeBookmarksFile'*
-'NERDTreeCaseSensitiveSort' NERD_tree.txt /*'NERDTreeCaseSensitiveSort'*
-'NERDTreeChDirMode' NERD_tree.txt /*'NERDTreeChDirMode'*
-'NERDTreeHighlightCursorline' NERD_tree.txt /*'NERDTreeHighlightCursorline'*
-'NERDTreeHijackNetrw' NERD_tree.txt /*'NERDTreeHijackNetrw'*
-'NERDTreeIgnore' NERD_tree.txt /*'NERDTreeIgnore'*
-'NERDTreeMouseMode' NERD_tree.txt /*'NERDTreeMouseMode'*
-'NERDTreeQuitOnOpen' NERD_tree.txt /*'NERDTreeQuitOnOpen'*
-'NERDTreeShowBookmarks' NERD_tree.txt /*'NERDTreeShowBookmarks'*
-'NERDTreeShowFiles' NERD_tree.txt /*'NERDTreeShowFiles'*
-'NERDTreeShowHidden' NERD_tree.txt /*'NERDTreeShowHidden'*
-'NERDTreeShowLineNumbers' NERD_tree.txt /*'NERDTreeShowLineNumbers'*
-'NERDTreeSortOrder' NERD_tree.txt /*'NERDTreeSortOrder'*
-'NERDTreeStatusline' NERD_tree.txt /*'NERDTreeStatusline'*
-'NERDTreeWinPos' NERD_tree.txt /*'NERDTreeWinPos'*
-'NERDTreeWinSize' NERD_tree.txt /*'NERDTreeWinSize'*
-'loaded_nerd_tree' NERD_tree.txt /*'loaded_nerd_tree'*
-:NERDTree NERD_tree.txt /*:NERDTree*
-:NERDTreeClose NERD_tree.txt /*:NERDTreeClose*
-:NERDTreeFind NERD_tree.txt /*:NERDTreeFind*
-:NERDTreeFromBookmark NERD_tree.txt /*:NERDTreeFromBookmark*
-:NERDTreeMirror NERD_tree.txt /*:NERDTreeMirror*
-:NERDTreeToggle NERD_tree.txt /*:NERDTreeToggle*
-NERDTree NERD_tree.txt /*NERDTree*
-NERDTree-? NERD_tree.txt /*NERDTree-?*
-NERDTree-A NERD_tree.txt /*NERDTree-A*
-NERDTree-B NERD_tree.txt /*NERDTree-B*
-NERDTree-C NERD_tree.txt /*NERDTree-C*
-NERDTree-C-J NERD_tree.txt /*NERDTree-C-J*
-NERDTree-C-K NERD_tree.txt /*NERDTree-C-K*
-NERDTree-D NERD_tree.txt /*NERDTree-D*
-NERDTree-F NERD_tree.txt /*NERDTree-F*
-NERDTree-I NERD_tree.txt /*NERDTree-I*
-NERDTree-J NERD_tree.txt /*NERDTree-J*
-NERDTree-K NERD_tree.txt /*NERDTree-K*
-NERDTree-O NERD_tree.txt /*NERDTree-O*
-NERDTree-P NERD_tree.txt /*NERDTree-P*
-NERDTree-R NERD_tree.txt /*NERDTree-R*
-NERDTree-T NERD_tree.txt /*NERDTree-T*
-NERDTree-U NERD_tree.txt /*NERDTree-U*
-NERDTree-X NERD_tree.txt /*NERDTree-X*
-NERDTree-cd NERD_tree.txt /*NERDTree-cd*
-NERDTree-contents NERD_tree.txt /*NERDTree-contents*
-NERDTree-e NERD_tree.txt /*NERDTree-e*
-NERDTree-f NERD_tree.txt /*NERDTree-f*
-NERDTree-gi NERD_tree.txt /*NERDTree-gi*
-NERDTree-go NERD_tree.txt /*NERDTree-go*
-NERDTree-gs NERD_tree.txt /*NERDTree-gs*
-NERDTree-i NERD_tree.txt /*NERDTree-i*
-NERDTree-m NERD_tree.txt /*NERDTree-m*
-NERDTree-o NERD_tree.txt /*NERDTree-o*
-NERDTree-p NERD_tree.txt /*NERDTree-p*
-NERDTree-q NERD_tree.txt /*NERDTree-q*
-NERDTree-r NERD_tree.txt /*NERDTree-r*
-NERDTree-s NERD_tree.txt /*NERDTree-s*
-NERDTree-t NERD_tree.txt /*NERDTree-t*
-NERDTree-u NERD_tree.txt /*NERDTree-u*
-NERDTree-x NERD_tree.txt /*NERDTree-x*
-NERDTreeAPI NERD_tree.txt /*NERDTreeAPI*
-NERDTreeAbout NERD_tree.txt /*NERDTreeAbout*
-NERDTreeAddKeyMap() NERD_tree.txt /*NERDTreeAddKeyMap()*
-NERDTreeAddMenuItem() NERD_tree.txt /*NERDTreeAddMenuItem()*
-NERDTreeAddMenuSeparator() NERD_tree.txt /*NERDTreeAddMenuSeparator()*
-NERDTreeAddSubmenu() NERD_tree.txt /*NERDTreeAddSubmenu()*
-NERDTreeBookmarkCommands NERD_tree.txt /*NERDTreeBookmarkCommands*
-NERDTreeBookmarkTable NERD_tree.txt /*NERDTreeBookmarkTable*
-NERDTreeBookmarks NERD_tree.txt /*NERDTreeBookmarks*
-NERDTreeChangelog NERD_tree.txt /*NERDTreeChangelog*
-NERDTreeCredits NERD_tree.txt /*NERDTreeCredits*
-NERDTreeFunctionality NERD_tree.txt /*NERDTreeFunctionality*
-NERDTreeGlobalCommands NERD_tree.txt /*NERDTreeGlobalCommands*
-NERDTreeInvalidBookmarks NERD_tree.txt /*NERDTreeInvalidBookmarks*
-NERDTreeKeymapAPI NERD_tree.txt /*NERDTreeKeymapAPI*
-NERDTreeLicense NERD_tree.txt /*NERDTreeLicense*
-NERDTreeMappings NERD_tree.txt /*NERDTreeMappings*
-NERDTreeMenu NERD_tree.txt /*NERDTreeMenu*
-NERDTreeMenuAPI NERD_tree.txt /*NERDTreeMenuAPI*
-NERDTreeOptionDetails NERD_tree.txt /*NERDTreeOptionDetails*
-NERDTreeOptionSummary NERD_tree.txt /*NERDTreeOptionSummary*
-NERDTreeOptions NERD_tree.txt /*NERDTreeOptions*
-NERDTreeRender() NERD_tree.txt /*NERDTreeRender()*
-NERD_tree.txt NERD_tree.txt /*NERD_tree.txt*
View
41 addons/NERD_tree/nerdtree_plugin/exec_menuitem.vim
@@ -1,41 +0,0 @@
-" ============================================================================
-" File: exec_menuitem.vim
-" Description: plugin for NERD Tree that provides an execute file menu item
-" Maintainer: Martin Grenfell <martin.grenfell at gmail dot com>
-" 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
View
194 addons/NERD_tree/nerdtree_plugin/fs_menu.vim
@@ -1,194 +0,0 @@
-" ============================================================================
-" File: fs_menu.vim
-" Description: plugin for the NERD Tree that provides a file system menu
-" Maintainer: Martin Grenfell <martin.grenfell at gmail dot com>
-" 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
-
-call NERDTreeAddMenuItem({'text': '(a)dd a childnode', 'shortcut': 'a', 'callback': 'NERDTreeAddNode'})
-call NERDTreeAddMenuItem({'text': '(m)ove the curent node', 'shortcut': 'm', 'callback': 'NERDTreeMoveNode'})
-call NERDTreeAddMenuItem({'text': '(d)elete the curent node', 'shortcut': 'd', 'callback': 'NERDTreeDeleteNode'})
-if g:NERDTreePath.CopyingSupported()
- call NERDTreeAddMenuItem({'text': '(c)copy 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 nr2char(getchar()) ==# 'y'
- exec "silent bdelete! " . 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({'format': 'Glob'}) . g:NERDTreePath.Slash())
-
- 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())
-
- 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)" : "") .". Delete this buffer? (yN)"
- call s:promptToDelBuffer(bufnum, prompt)
- 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())
-
- 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)
- call NERDTreeRender()
- call newNode.putCursorHere(0, 0)
- catch /^NERDTree/
- call s:echoWarning("Could not copy node")
- endtry
- endif
- else
- call s:echo("Copy aborted.")
- endif
- redraw
-endfunction
-
-" vim: set sw=4 sts=4 et fdm=marker:
View
4,059 addons/NERD_tree/plugin/NERD_tree.vim
0 additions, 4,059 deletions not shown
View
1,155 addons/fuzzyfinder/autoload/fuf.vim
@@ -1,1155 +0,0 @@
-"=============================================================================
-" Copyright (c) 2007-2009 Takeshi NISHIDA
-"
-"=============================================================================
-" LOAD GUARD {{{1
-
-if exists('g:loaded_autoload_fuf') || v:version < 702
- finish
-endif
-let g:loaded_autoload_fuf = 1
-
-" }}}1
-"=============================================================================
-" GLOBAL FUNCTIONS {{{1
-
-
-
-function fuf#getPathSeparator()
- return (!&shellslash && (has('win32') || has('win64')) ? '\' : '/')
-endfunction
-
-" Removes duplicates
-" this function doesn't change list of argument.
-function fuf#unique(items)
- let sorted = sort(a:items)
- if len(sorted) < 2
- return sorted
- endif
- let last = remove(sorted, 0)
- let result = [last]
- for item in sorted
- if item != last
- call add(result, item)
- let last = item
- endif
- endfor
- return result
-endfunction
-
-" [ [0], [1,2], [3] ] -> [ 0, 1, 2, 3 ]
-" this function doesn't change list of argument.
-function fuf#concat(items)
- let result = []
- for l in a:items
- let result += l
- endfor
- return result
-endfunction
-
-" filter() with the maximum number of items
-" this function doesn't change list of argument.
-function fuf#filterWithLimit(items, expr, limit)
- if a:limit <= 0
- return filter(copy(a:items), a:expr)
- endif
- let result = []
- let stride = a:limit * 3 / 2 " x1.5
- for i in range(0, len(a:items) - 1, stride)
- let result += filter(a:items[i : i + stride - 1], a:expr)
- if len(result) >= a:limit
- return remove(result, 0, a:limit - 1)
- endif
- endfor
- return result
-endfunction
-
-"
-function fuf#countModifiedFiles(files, time)
- return len(filter(copy(a:files), 'getftime(v:val) > a:time'))
-endfunction
-
-"
-function fuf#getCurrentTagFiles()
- return sort(filter(map(tagfiles(), 'fnamemodify(v:val, '':p'')'), 'filereadable(v:val)'))
-endfunction
-
-"
-function fuf#mapToSetSerialIndex(in, offset)
- for i in range(len(a:in))
- let a:in[i].index = i + a:offset
- endfor
- return a:in
-endfunction
-
-"
-function fuf#updateMruList(mrulist, newItem, maxItem, exclude)
- let result = copy(a:mrulist)
- let result = filter(result,'v:val.word != a:newItem.word')
- let result = insert(result, a:newItem)
- let result = filter(result, 'v:val.word !~ a:exclude')
- return result[0 : a:maxItem - 1]
-endfunction
-
-" takes suffix number. if no digits, returns -1
-function fuf#suffixNumber(str)
- let s = matchstr(a:str, '\d\+$')
- return (len(s) ? str2nr(s) : -1)
-endfunction
-
-" "foo/bar/buz/hoge" -> { head: "foo/bar/buz/", tail: "hoge" }
-function fuf#splitPath(path)
- let head = matchstr(a:path, '^.*[/\\]')
- return {
- \ 'head' : head,
- \ 'tail' : a:path[strlen(head):]
- \ }
-endfunction
-
-" "foo/.../bar/...hoge" -> "foo/.../bar/../../hoge"
-function fuf#expandTailDotSequenceToParentDir(pattern)
- return substitute(a:pattern, '^\(.*[/\\]\)\?\zs\.\(\.\+\)\ze[^/\\]*$',
- \ '\=repeat(".." . fuf#getPathSeparator(), len(submatch(2)))', '')
-endfunction
-
-"
-function fuf#hash224(str)
- let a = 0x00000800 " shift 11 bit
- let b = 0x001fffff " extract 11 bit
- let nHash = 7
- let hashes = repeat([0], nHash)
- for i in range(len(a:str))
- let iHash = i % nHash
- let hashes[iHash] = hashes[iHash] * a + hashes[iHash] / b
- let hashes[iHash] += char2nr(a:str[i])
- endfor
- return join(map(hashes, 'printf("%08x", v:val)'), '')
-endfunction
-
-"
-function fuf#formatPrompt(prompt, partialMatching)
- let indicator = (a:partialMatching ? '!' : '')
- return substitute(a:prompt, '[]', indicator, 'g')
-endfunction
-
-"
-function fuf#getFileLines(file)
- let bufnr = (type(a:file) ==# type(0) ? a:file : bufnr('^' . a:file . '$'))
- let lines = getbufline(bufnr, 1, '$')
- if !empty(lines)
- return lines
- endif
- try
- return readfile(expand(a:file))
- catch /.*/
- endtry
- return []
-endfunction
-
-"
-function fuf#makePreviewLinesAround(lines, indices, page, maxHeight)
- let index = ((empty(a:indices) ? 0 : a:indices[0])
- \ + a:page * a:maxHeight) % len(a:lines)
- if empty(a:lines) || a:maxHeight <= 0
- return []
- endif
- let beg = max([0, index - a:maxHeight / 2])
- let end = min([beg + a:maxHeight, len(a:lines)])
- let beg = max([0, end - a:maxHeight])
- let lines = []
- for i in range(beg, end - 1)
- let mark = (count(a:indices, i) ? '>' : ' ')
- call add(lines, printf('%s%4d ', mark, i + 1) . a:lines[i])
- endfor
- return lines
-endfunction
-
-" a:file: a path string or a buffer number
-function fuf#makePreviewLinesForFile(file, count, maxHeight)
- let lines = fuf#getFileLines(a:file)
- if empty(lines)
- return []
- endif
- let bufnr = (type(a:file) ==# type(0) ? a:file : bufnr('^' . a:file . '$'))
- if exists('s:bufferCursorPosMap[bufnr]')
- let indices = [s:bufferCursorPosMap[bufnr][1] - 1]
- else
- let indices = []
- endif
- return fuf#makePreviewLinesAround(
- \ lines, indices, a:count, a:maxHeight)
-endfunction
-
-"
-function fuf#echoWithHl(msg, hl)
- execute "echohl " . a:hl
- echo a:msg
- echohl None
-endfunction
-
-"
-function fuf#inputHl(prompt, text, hl)
- execute "echohl " . a:hl
- let s = input(a:prompt, a:text)
- echohl None
- return s
-endfunction
-
-"
-function fuf#openBuffer(bufNr, mode, reuse)
- if a:reuse && ((a:mode == s:OPEN_TYPE_SPLIT &&
- \ s:moveToWindowOfBufferInCurrentTabPage(a:bufNr)) ||
- \ (a:mode == s:OPEN_TYPE_VSPLIT &&
- \ s:moveToWindowOfBufferInCurrentTabPage(a:bufNr)) ||
- \ (a:mode == s:OPEN_TYPE_TAB &&
- \ s:moveToWindowOfBufferInOtherTabPage(a:bufNr)))
- return
- endif
- execute printf({
- \ s:OPEN_TYPE_CURRENT : '%sbuffer' ,
- \ s:OPEN_TYPE_SPLIT : '%ssbuffer' ,
- \ s:OPEN_TYPE_VSPLIT : 'vertical %ssbuffer',
- \ s:OPEN_TYPE_TAB : 'tab %ssbuffer' ,
- \ }[a:mode], a:bufNr)
-endfunction
-
-"
-function fuf#openFile(path, mode, reuse)
- let bufNr = bufnr('^' . a:path . '$')
- if bufNr > -1
- call fuf#openBuffer(bufNr, a:mode, a:reuse)
- else
- execute {
- \ s:OPEN_TYPE_CURRENT : 'edit ' ,
- \ s:OPEN_TYPE_SPLIT : 'split ' ,
- \ s:OPEN_TYPE_VSPLIT : 'vsplit ' ,
- \ s:OPEN_TYPE_TAB : 'tabedit ',
- \ }[a:mode] . fnameescape(fnamemodify(a:path, ':~:.'))
- endif
-endfunction
-
-"
-function fuf#openTag(tag, mode)
- execute {
- \ s:OPEN_TYPE_CURRENT : 'tjump ' ,
- \ s:OPEN_TYPE_SPLIT : 'stjump ' ,
- \ s:OPEN_TYPE_VSPLIT : 'vertical stjump ',
- \ s:OPEN_TYPE_TAB : 'tab stjump ' ,
- \ }[a:mode] . a:tag
-endfunction
-
-"
-function fuf#openHelp(tag, mode)
- execute {
- \ s:OPEN_TYPE_CURRENT : 'help ' ,
- \ s:OPEN_TYPE_SPLIT : 'help ' ,
- \ s:OPEN_TYPE_VSPLIT : 'vertical help ',
- \ s:OPEN_TYPE_TAB : 'tab help ' ,
- \ }[a:mode] . a:tag
-endfunction
-
-"
-function fuf#prejump(mode)
- execute {
- \ s:OPEN_TYPE_CURRENT : '' ,
- \ s:OPEN_TYPE_SPLIT : 'split' ,
- \ s:OPEN_TYPE_VSPLIT : 'vsplit' ,
- \ s:OPEN_TYPE_TAB : 'tab split',
- \ }[a:mode]
-endfunction
-
-"
-function fuf#compareRanks(i1, i2)
- if exists('a:i1.ranks') && exists('a:i2.ranks')
- for i in range(min([len(a:i1.ranks), len(a:i2.ranks)]))
- if a:i1.ranks[i] > a:i2.ranks[i]
- return +1
- elseif a:i1.ranks[i] < a:i2.ranks[i]
- return -1
- endif
- endfor
- endif
- return 0
-endfunction
-
-"
-function fuf#makePathItem(fname, menu, appendsDirSuffix)
- let pathPair = fuf#splitPath(a:fname)
- let dirSuffix = (a:appendsDirSuffix && isdirectory(a:fname)
- \ ? fuf#getPathSeparator()
- \ : '')
- return {
- \ 'word' : a:fname . dirSuffix,
- \ 'wordForPrimaryHead': s:toLowerForIgnoringCase(pathPair.head),
- \ 'wordForPrimaryTail': s:toLowerForIgnoringCase(pathPair.tail),
- \ 'wordForBoundary' : s:toLowerForIgnoringCase(s:getWordBoundaries(pathPair.tail)),
- \ 'wordForRefining' : s:toLowerForIgnoringCase(a:fname . dirSuffix),
- \ 'wordForRank' : s:toLowerForIgnoringCase(pathPair.tail),
- \ 'menu' : a:menu,
- \ }
-endfunction
-
-"
-function fuf#makeNonPathItem(word, menu)
- let wordL = s:toLowerForIgnoringCase(a:word)
- return {
- \ 'word' : a:word,
- \ 'wordForPrimary' : wordL,
- \ 'wordForBoundary': s:toLowerForIgnoringCase(s:getWordBoundaries(a:word)),
- \ 'wordForRefining': wordL,
- \ 'wordForRank' : wordL,
- \ 'menu' : a:menu,
- \ }
-endfunction
-
-"
-function s:interpretPrimaryPatternForPathTail(pattern)
- let pattern = fuf#expandTailDotSequenceToParentDir(a:pattern)
- let pairL = fuf#splitPath(s:toLowerForIgnoringCase(pattern))
- return {
- \ 'primary' : pattern,
- \ 'primaryForRank': pairL.tail,
- \ 'matchingPairs' : [['v:val.wordForPrimaryTail', pairL.tail],],
- \ }
-endfunction
-
-"
-function s:interpretPrimaryPatternForPath(pattern)
- let pattern = fuf#expandTailDotSequenceToParentDir(a:pattern)
- let patternL = s:toLowerForIgnoringCase(pattern)
- let pairL = fuf#splitPath(patternL)
- if g:fuf_splitPathMatching
- let matches = [
- \ ['v:val.wordForPrimaryHead', pairL.head],
- \ ['v:val.wordForPrimaryTail', pairL.tail],
- \ ]
- else
- let matches = [
- \ ['v:val.wordForPrimaryHead . v:val.wordForPrimaryTail', patternL],
- \ ]
- endif
- return {
- \ 'primary' : pattern,
- \ 'primaryForRank': pairL.tail,
- \ 'matchingPairs' : matches,
- \ }
-endfunction
-
-"
-function s:interpretPrimaryPatternForNonPath(pattern)
- let patternL = s:toLowerForIgnoringCase(a:pattern)
- return {
- \ 'primary' : a:pattern,
- \ 'primaryForRank': patternL,
- \ 'matchingPairs' : [['v:val.wordForPrimary', patternL],],
- \ }
-endfunction
-
-"
-function fuf#makePatternSet(patternBase, interpreter, partialMatching)
- let MakeMatchingExpr = function(a:partialMatching
- \ ? 's:makePartialMatchingExpr'
- \ : 's:makeFuzzyMatchingExpr')
- let [primary; refinings] = split(a:patternBase, g:fuf_patternSeparator, 1)
- let elements = call(a:interpreter, [primary])
- let primaryExprs = map(elements.matchingPairs, 'MakeMatchingExpr(v:val[0], v:val[1])')
- let refiningExprs = map(refinings, 's:makeRefiningExpr(v:val)')
- return {
- \ 'primary' : elements.primary,
- \ 'primaryForRank': elements.primaryForRank,
- \ 'filteringExpr' : join(primaryExprs + refiningExprs, ' && '),
- \ }
-endfunction
-
-"
-function fuf#enumExpandedDirsEntries(dir, exclude)
- " Substitutes "\" because on Windows, "**\" doesn't include ".\",
- " but "**/" include "./". I don't know why.
- let dirNormalized = substitute(a:dir, '\', '/', 'g')
- let entries = split(glob(dirNormalized . "*" ), "\n") +
- \ split(glob(dirNormalized . ".*"), "\n")
- " removes "*/." and "*/.."
- call filter(entries, 'v:val !~ ''\v(^|[/\\])\.\.?$''')
- call map(entries, 'fuf#makePathItem(v:val, "", 1)')
- if len(a:exclude)
- call filter(entries, 'v:val.word !~ a:exclude')
- endif
- return entries
-endfunction
-
-"
-function fuf#mapToSetAbbrWithSnippedWordAsPath(items)
- let maxLenStats = {}
- call map(a:items, 's:makeFileAbbrInfo(v:val, maxLenStats)')
- let snippedHeads =
- \ map(maxLenStats, 's:getSnippedHead(v:key[: -2], v:val)')
- return map(a:items, 's:setAbbrWithFileAbbrData(v:val, snippedHeads)')
-endfunction
-
-"
-function fuf#setAbbrWithFormattedWord(item, abbrIndex)
- let lenMenu = (exists('a:item.menu') ? len(a:item.menu) + 2 : 0)
- let abbrPrefix = (exists('a:item.abbrPrefix') ? a:item.abbrPrefix : '')
- let a:item.abbr = abbrPrefix . a:item.word
- if a:abbrIndex
- let a:item.abbr = printf('%4d: ', a:item.index) . a:item.abbr
- endif
- let a:item.abbr = s:snipTail(a:item.abbr, g:fuf_maxMenuWidth - lenMenu, s:ABBR_SNIP_MASK)
- return a:item
-endfunction
-
-"
-function fuf#defineLaunchCommand(CmdName, modeName, prefixInitialPattern)
- execute printf('command! -bang -narg=? %s call fuf#launch(%s, %s . <q-args>, len(<q-bang>))',
- \ a:CmdName, string(a:modeName), a:prefixInitialPattern)
-endfunction
-
-"
-function fuf#defineKeyMappingInHandler(key, func)
- " hacks to be able to use feedkeys().
- execute printf(
- \ 'inoremap <buffer> <silent> %s <C-r>=fuf#getRunningHandler().%s ? "" : ""<CR>',
- \ a:key, a:func)
-endfunction
-
-"
-function fuf#launch(modeName, initialPattern, partialMatching)
- if exists('s:runningHandler')
- call fuf#echoWithHl('FuzzyFinder is running.', 'WarningMsg')
- endif
- if count(g:fuf_modes, a:modeName) == 0
- echoerr 'This mode is not available: ' . a:modeName
- return
- endif
- let s:runningHandler = fuf#{a:modeName}#createHandler(copy(s:handlerBase))
- let s:runningHandler.info = fuf#loadInfoFile(s:runningHandler.getModeName())
- let s:runningHandler.partialMatching = a:partialMatching
- let s:runningHandler.bufNrPrev = bufnr('%')
- let s:runningHandler.lastCol = -1
- call s:runningHandler.onModeEnterPre()
- call s:setTemporaryGlobalOption('completeopt', 'menuone')
- call s:setTemporaryGlobalOption('ignorecase', 0)
- if s:runningHandler.getPreviewHeight() > 0
- call s:setTemporaryGlobalOption(
- \ 'cmdheight', s:runningHandler.getPreviewHeight() + 1)
- endif
- call s:activateFufBuffer()
- augroup FufLocal
- autocmd!
- autocmd CursorMovedI <buffer> call s:runningHandler.onCursorMovedI()
- autocmd InsertLeave <buffer> nested call s:runningHandler.onInsertLeave()
- augroup END
- for [key, func] in [
- \ [ g:fuf_keyOpen , 'onCr(' . s:OPEN_TYPE_CURRENT . ', 0)' ],
- \ [ g:fuf_keyOpenSplit , 'onCr(' . s:OPEN_TYPE_SPLIT . ', 0)' ],
- \ [ g:fuf_keyOpenVsplit , 'onCr(' . s:OPEN_TYPE_VSPLIT . ', 0)' ],
- \ [ g:fuf_keyOpenTabpage , 'onCr(' . s:OPEN_TYPE_TAB . ', 0)' ],
- \ [ '<BS>' , 'onBs()' ],
- \ [ '<C-h>' , 'onBs()' ],
- \ [ g:fuf_keyPreview , 'onPreviewBase()' ],
- \ [ g:fuf_keyNextMode , 'onSwitchMode(+1)' ],
- \ [ g:fuf_keyPrevMode , 'onSwitchMode(-1)' ],
- \ [ g:fuf_keySwitchMatching, 'onSwitchMatching()' ],
- \ [ g:fuf_keyPrevPattern , 'onRecallPattern(+1)' ],
- \ [ g:fuf_keyNextPattern , 'onRecallPattern(-1)' ],
- \ ]
- call fuf#defineKeyMappingInHandler(key, func)
- endfor
- " Starts Insert mode and makes CursorMovedI event now. Command prompt is
- " needed to forces a completion menu to update every typing.
- call setline(1, s:runningHandler.getPrompt() . a:initialPattern)
- call s:runningHandler.onModeEnterPost()
- call feedkeys("A", 'n') " startinsert! does not work in InsertLeave event handler
- redraw
-endfunction
-
-"
-function fuf#loadInfoFile(modeName)
- try
- let lines = readfile(expand(g:fuf_infoFile))
- " compatibility check
- if count(lines, s:INFO_FILE_VERSION_LINE) == 0
- call s:warnOldInfoFile()
- let g:fuf_infoFile = ''
- throw 1
- endif
- catch /.*/
- let lines = []
- endtry
- let s:lastInfoMap = s:deserializeInfoMap(lines)
- if !exists('s:lastInfoMap[a:modeName]')
- let s:lastInfoMap[a:modeName] = {}
- endif
- return extend(s:lastInfoMap[a:modeName], { 'data': [], 'stats': [] }, 'keep')
-endfunction
-
-" if a:modeName is empty, a:info is treated as a map of information
-function fuf#saveInfoFile(modeName, info)
- if empty(a:modeName)
- let s:lastInfoMap = a:info
- else
- let s:lastInfoMap[a:modeName] = a:info
- endif
- let lines = [ s:INFO_FILE_VERSION_LINE ] + s:serializeInfoMap(s:lastInfoMap)
- try
- call writefile(lines, expand(g:fuf_infoFile))
- catch /.*/
- endtry
-endfunction
-
-"
-function fuf#editInfoFile()
- new
- silent file `='[fuf-info]'`
- let s:bufNrInfo = bufnr('%')
- setlocal filetype=vim
- setlocal bufhidden=delete
- setlocal buftype=acwrite
- setlocal noswapfile
- augroup FufInfo
- autocmd!
- autocmd BufWriteCmd <buffer> call s:onBufWriteCmdInfoFile()
- augroup END
- execute '0read ' . expand(g:fuf_infoFile)
- setlocal nomodified
-endfunction
-
-"
-function fuf#getRunningHandler()
- return s:runningHandler
-endfunction
-
-"
-function fuf#onComplete(findstart, base)
- return s:runningHandler.onComplete(a:findstart, a:base)
-endfunction
-
-" }}}1
-"=============================================================================
-" LOCAL FUNCTIONS/VARIABLES {{{1
-
-let s:INFO_FILE_VERSION_LINE = "VERSION\t300"
-let s:ABBR_SNIP_MASK = '...'
-let s:OPEN_TYPE_CURRENT = 1
-let s:OPEN_TYPE_SPLIT = 2
-let s:OPEN_TYPE_VSPLIT = 3
-let s:OPEN_TYPE_TAB = 4
-
-" wildcard -> regexp
-function s:convertWildcardToRegexp(expr)
- let re = escape(a:expr, '\')
- for [pat, sub] in [ [ '*', '\\.\\*' ], [ '?', '\\.' ], [ '[', '\\[' ], ]
- let re = substitute(re, pat, sub, 'g')
- endfor
- return '\V' . re
-endfunction
-
-" a:pattern: 'str' -> '\V\.\*s\.\*t\.\*r\.\*'
-function s:makeFuzzyMatchingExpr(target, pattern)
- let wi = ''
- for c in split(a:pattern, '\zs')
- if wi =~# '[^*?]$' && c !~ '[*?]'
- let wi .= '*'
- endif
- let wi .= c
- endfor
- return s:makePartialMatchingExpr(a:target, wi)
-endfunction
-
-" a:pattern: 'str' -> '\Vstr'
-" 'st*r' -> '\Vst\.\*r'
-function s:makePartialMatchingExpr(target, pattern)
- let patternMigemo = s:makeAdditionalMigemoPattern(a:pattern)
- if a:pattern !~ '[*?]' && empty(patternMigemo)
- " NOTE: stridx is faster than regexp matching
- return 'stridx(' . a:target . ', ' . string(a:pattern) . ') >= 0'
- endif
- return a:target . ' =~# ' .
- \ string(s:convertWildcardToRegexp(a:pattern)) . patternMigemo
-endfunction
-
-"
-function s:makeRefiningExpr(pattern)
- let expr = s:makePartialMatchingExpr('v:val.wordForRefining', a:pattern)
- if a:pattern =~# '\D'
- return expr
- else
- return '(' . expr . ' || v:val.index == ' . string(a:pattern) . ')'
- endif
-endfunction
-
-"
-function s:makeAdditionalMigemoPattern(pattern)
- if !g:fuf_useMigemo || a:pattern =~# '[^\x01-\x7e]'
- return ''
- endif
- return '\|\m' . substitute(migemo(a:pattern), '\\_s\*', '.*', 'g')
-endfunction
-
-" Snips a:str and add a:mask if the length of a:str is more than a:len
-function s:snipHead(str, len, mask)
- if a:len >= len(a:str)
- return a:str
- elseif a:len <= len(a:mask)
- return a:mask
- endif
- return a:mask . a:str[-a:len + len(a:mask):]
-endfunction
-
-" Snips a:str and add a:mask if the length of a:str is more than a:len
-function s:snipTail(str, len, mask)
- if a:len >= len(a:str)
- return a:str
- elseif a:len <= len(a:mask)
- return a:mask
- endif
- return a:str[:a:len - 1 - len(a:mask)] . a:mask
-endfunction
-
-" Snips a:str and add a:mask if the length of a:str is more than a:len
-function s:snipMid(str, len, mask)
- if a:len >= len(a:str)
- return a:str
- elseif a:len <= len(a:mask)
- return a:mask
- endif
- let len_head = (a:len - len(a:mask)) / 2
- let len_tail = a:len - len(a:mask) - len_head
- return (len_head > 0 ? a:str[: len_head - 1] : '') . a:mask .
- \ (len_tail > 0 ? a:str[-len_tail :] : '')
-endfunction
-
-"
-function s:getWordBoundaries(word)
- return substitute(a:word, '\a\zs\l\+\|\zs\A', '', 'g')
-endfunction
-
-"
-function s:toLowerForIgnoringCase(str)
- return (g:fuf_ignoreCase ? tolower(a:str) : a:str)
-endfunction
-
-"
-function s:setRanks(item, pattern, exprBoundary, stats)
- "let word2 = substitute(a:eval_word, '\a\zs\l\+\|\zs\A', '', 'g')
- let a:item.ranks = [
- \ s:evaluateLearningRank(a:item.word, a:stats),
- \ -s:scoreSequentialMatching(a:item.wordForRank, a:pattern),
- \ -s:scoreBoundaryMatching(a:item.wordForBoundary,
- \ a:pattern, a:exprBoundary),
- \ a:item.index,
- \ ]
- return a:item
-endfunction
-
-"
-function s:evaluateLearningRank(word, stats)
- for i in range(len(a:stats))
- if a:stats[i].word ==# a:word
- return i
- endif
- endfor
- return len(a:stats)
-endfunction
-
-let g:s = ""
-" range of return value is [0.0, 1.0]
-function s:scoreSequentialMatching(word, pattern)
- if empty(a:pattern)
- return 0.0
- endif
- let pos = stridx(a:word, a:pattern)
- if pos < 0
- return 0.0
- endif
- let lenRest = len(a:word) - len(a:pattern) - pos
- return (pos == 0 ? 0.5 : 0.0) + 0.5 / (lenRest + 1)
-endfunction
-
-" range of return value is [0.0, 1.0]
-function s:scoreBoundaryMatching(wordForBoundary, pattern, exprBoundary)
- if empty(a:pattern)
- return 0.0
- endif
- if !eval(a:exprBoundary)
- return 0
- endif
- return 0.5 + 0.5 * s:scoreSequentialMatching(a:wordForBoundary, a:pattern)
-endfunction
-
-"
-function s:highlightPrompt(prompt)
- syntax clear
- execute printf('syntax match %s /^\V%s/', g:fuf_promptHighlight, escape(a:prompt, '\'))
-endfunction
-
-"
-function s:highlightError()
- syntax clear
- syntax match Error /^.*$/
-endfunction
-
-" returns 0 if the buffer is not found.
-function s:moveToWindowOfBufferInCurrentTabPage(bufNr)
- if count(tabpagebuflist(), a:bufNr) == 0
- return 0
- endif
- execute bufwinnr(a:bufNr) . 'wincmd w'
- return 1
-endfunction
-
-" returns 0 if the buffer is not found.
-function s:moveToOtherTabPageOpeningBuffer(bufNr)
- for tabNr in range(1, tabpagenr('$'))
- if tabNr != tabpagenr() && count(tabpagebuflist(tabNr), a:bufNr) > 0
- execute 'tabnext ' . tabNr
- return 1
- endif
- endfor
- return 0
-endfunction
-
-" returns 0 if the buffer is not found.
-function s:moveToWindowOfBufferInOtherTabPage(bufNr)
- if !s:moveToOtherTabPageOpeningBuffer(a:bufNr)
- return 0
- endif
- return s:moveToWindowOfBufferInCurrentTabPage(a:bufNr)
-endfunction
-
-"
-function s:expandAbbrevMap(pattern, abbrevMap)
- let result = [a:pattern]
- for [pattern, subs] in items(a:abbrevMap)
- let exprs = result
- let result = []
- for expr in exprs
- let result += map(copy(subs), 'substitute(expr, pattern, escape(v:val, ''\''), "g")')
- endfor
- endfor
- return fuf#unique(result)
-endfunction
-
-"
-function s:makeFileAbbrInfo(item, maxLenStats)
- let head = matchstr(a:item.word, '^.*[/\\]\ze.')
- let a:item.abbr = { 'head' : head,
- \ 'tail' : a:item.word[strlen(head):],
- \ 'key' : head . '.',
- \ 'prefix' : printf('%4d: ', a:item.index), }
- if exists('a:item.abbrPrefix')
- let a:item.abbr.prefix .= a:item.abbrPrefix
- endif
- let len = len(a:item.abbr.prefix) + len(a:item.word) +
- \ (exists('a:item.menu') ? len(a:item.menu) + 2 : 0)
- if !exists('a:maxLenStats[a:item.abbr.key]') || len > a:maxLenStats[a:item.abbr.key]
- let a:maxLenStats[a:item.abbr.key] = len
- endif
- return a:item
-endfunction
-
-"
-function s:getSnippedHead(head, baseLen)
- return s:snipMid(a:head, len(a:head) + g:fuf_maxMenuWidth - a:baseLen, s:ABBR_SNIP_MASK)
-endfunction
-
-"
-function s:setAbbrWithFileAbbrData(item, snippedHeads)
- let lenMenu = (exists('a:item.menu') ? len(a:item.menu) + 2 : 0)
- let abbr = a:item.abbr.prefix . a:snippedHeads[a:item.abbr.key] . a:item.abbr.tail
- let a:item.abbr = s:snipTail(abbr, g:fuf_maxMenuWidth - lenMenu, s:ABBR_SNIP_MASK)
- return a:item
-endfunction
-
-let s:bufNrFuf = -1
-
-"
-function s:openFufBuffer()
- if !bufexists(s:bufNrFuf)
- topleft 1new
- silent file `='[fuf]'`
- let s:bufNrFuf = bufnr('%')
- elseif bufwinnr(s:bufNrFuf) == -1
- topleft 1split
- execute 'silent ' . s:bufNrFuf . 'buffer'
- delete _
- elseif bufwinnr(s:bufNrFuf) != bufwinnr('%')
- execute bufwinnr(s:bufNrFuf) . 'wincmd w'
- endif
-endfunction
-
-function s:setLocalOptionsForFufBuffer()
- setlocal filetype=fuf
- setlocal bufhidden=delete
- setlocal buftype=nofile
- setlocal noswapfile
- setlocal nobuflisted
- setlocal modifiable
- setlocal nocursorline " for highlighting
- setlocal nocursorcolumn " for highlighting
- setlocal omnifunc=fuf#onComplete
-endfunction
-
-"
-function s:activateFufBuffer()
- " lcd . : To avoid the strange behavior that unnamed buffer changes its cwd
- " if 'autochdir' was set on.
- lcd .
- let cwd = getcwd()
- call s:openFufBuffer()
- " lcd ... : countermeasure against auto-cd script
- lcd `=cwd`
- call s:setLocalOptionsForFufBuffer()
- redraw " for 'lazyredraw'
- if exists(':AcpLock')
- AcpLock
- elseif exists(':AutoComplPopLock')
- AutoComplPopLock
- endif
-endfunction
-
-"
-function s:deactivateFufBuffer()
- if exists(':AcpUnlock')
- AcpUnlock
- elseif exists(':AutoComplPopUnlock')
- AutoComplPopUnlock
- endif
- " must close after returning to previous window
- wincmd p
- execute s:bufNrFuf . 'bdelete'
-endfunction
-
-let s:originalGlobalOptions = {}
-
-"
-function s:setTemporaryGlobalOption(name, value)
- call extend(s:originalGlobalOptions, { a:name : eval('&' . a:name) }, 'keep')
- execute printf('let &%s = a:value', a:name)
-endfunction
-
-"
-function s:restoreTemporaryGlobalOptions()
- for [name, value] in items(s:originalGlobalOptions)
- execute printf('let &%s = value', name)