mirror of
https://github.com/preservim/nerdtree.git
synced 2025-11-08 11:23:48 -05:00
Expand functionality of <CR> mapping (#1011)
* Define default values for new variables governing new "Default Open". "Default Open" means to open a file with the Enter key (which of course can be changed.) The key can be changed in the vimrc, and there is a variable for specifying the Opener parameters for opening the node. This lets the user decide whether Enter (or another key) will open a file in the current tab or a new one, and whether or not to open the file again in the tab or jump to a window where the file is already open. * Remove the old mapping for <CR>, a duplicate of 'o'. <CR> will be defined like all the other keys, in plugin/NERD_tree.vim * Assign functions to the new <CR> key mapping. Three separate functions handle directories, files, and bookmarks. * Rename variables: NERDTreeCustomOpen and NERDTreeCustomOpenArgs * Add documentation for NERDTreeCustomOpenArgs and NERDTree-<CR>. * Make key mapping variables be indexed in the Vim help * Remove angle brackets from <CR> to see if help navigation improves. * Rename functions from defaultOpen... to customOpen... * Use separate options for file and directory nodes. * Update documentation for separate file/directory options. * Update version number and change log. * Change CR to <CR> in help tags. * Fix missing backtick in patch number. * Update the quickhelp text. * Update Pull Request template. * Update change log with simpler formatting of patch number. * Get NERDTree version number directly from CHANGELOG.md * Reformat the lists of contributors in the Change Log. * Initialize the version text, just in case the while loop finds nothing.
This commit is contained in:
@@ -3,8 +3,19 @@ if exists("g:loaded_nerdtree_autoload")
|
||||
endif
|
||||
let g:loaded_nerdtree_autoload = 1
|
||||
|
||||
function! nerdtree#version()
|
||||
return '5.1.3'
|
||||
function! nerdtree#version(...)
|
||||
let l:changelog = readfile(expand("<sfile>:p:h")."/CHANGELOG.md")
|
||||
let l:text = 'Unknown'
|
||||
let l:line = 0
|
||||
while l:line <= len(l:changelog)
|
||||
if l:changelog[l:line] =~ '\d\+\.\d\+'
|
||||
let l:text = substitute(l:changelog[l:line], '.*\(\d\+.\d\+\).*', '\1', '')
|
||||
let l:text .= substitute(l:changelog[l:line+1], '^.\{-}\(\.\d\+\).\{-}:\(.*\)', a:0>0 ? '\1:\2' : '\1', '')
|
||||
break
|
||||
endif
|
||||
let l:line += 1
|
||||
endwhile
|
||||
return l:text
|
||||
endfunction
|
||||
|
||||
" SECTION: General Functions {{{1
|
||||
|
||||
@@ -14,6 +14,9 @@ function! nerdtree#ui_glue#createDefaultBindings()
|
||||
call NERDTreeAddKeyMap({ 'key': '<2-LeftMouse>', 'scope': "Bookmark", 'callback': s."activateBookmark" })
|
||||
call NERDTreeAddKeyMap({ 'key': '<2-LeftMouse>', 'scope': "all", 'callback': s."activateAll" })
|
||||
|
||||
call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapCustomOpen, 'scope':'FileNode', 'callback': s."customOpenFile"})
|
||||
call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapCustomOpen, 'scope':'DirNode', 'callback': s."customOpenDir"})
|
||||
call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapCustomOpen, 'scope':'Bookmark', 'callback': s."customOpenBookmark"})
|
||||
|
||||
call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapActivateNode, 'scope': "DirNode", 'callback': s."activateDirNode" })
|
||||
call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapActivateNode, 'scope': "FileNode", 'callback': s."activateFileNode" })
|
||||
@@ -76,6 +79,35 @@ endfunction
|
||||
"SECTION: Interface bindings {{{1
|
||||
"============================================================
|
||||
|
||||
"FUNCTION: s:customOpenFile() {{{1
|
||||
" Open file node with the "custom" key, initially <CR>.
|
||||
function! s:customOpenFile(node)
|
||||
call a:node.activate(s:initCustomOpenArgs().file)
|
||||
endfunction
|
||||
|
||||
"FUNCTION: s:customOpenDir() {{{1
|
||||
" Open directory node with the "custom" key, initially <CR>.
|
||||
function! s:customOpenDir(node)
|
||||
call s:activateDirNode(a:node, s:initCustomOpenArgs().dir)
|
||||
endfunction
|
||||
|
||||
"FUNCTION: s:customOpenBookmark() {{{1
|
||||
" Open bookmark node with the "custom" key, initially <CR>.
|
||||
function! s:customOpenBookmark(node)
|
||||
if node.isDirectory
|
||||
call a:node.activate(b:NERDTree, s:initCustomOpenArgs().dir)
|
||||
else
|
||||
call a:node.activate(b:NERDTree, s:initCustomOpenArgs().file)
|
||||
endif
|
||||
endfunction
|
||||
|
||||
"FUNCTION: s:initCustomOpenArgs() {{{1
|
||||
" Make sure NERDTreeCustomOpenArgs has needed keys
|
||||
function! s:initCustomOpenArgs()
|
||||
let g:NERDTreeCustomOpenArgs = get(g:, 'NERDTreeCustomOpenArgs', {})
|
||||
return extend(g:NERDTreeCustomOpenArgs, {'file':{'reuse': 'all', 'where': 'p'}, 'dir':{}}, 'keep')
|
||||
endfunction
|
||||
|
||||
"FUNCTION: s:activateAll() {{{1
|
||||
"handle the user activating the updir line
|
||||
function! s:activateAll()
|
||||
@@ -84,15 +116,16 @@ function! s:activateAll()
|
||||
endif
|
||||
endfunction
|
||||
|
||||
" FUNCTION: s:activateDirNode(directoryNode) {{{1
|
||||
function! s:activateDirNode(directoryNode)
|
||||
" FUNCTION: s:activateDirNode(directoryNode, options) {{{1
|
||||
" Open a directory with optional options
|
||||
function! s:activateDirNode(directoryNode, ...)
|
||||
|
||||
if a:directoryNode.isRoot() && a:directoryNode.isOpen
|
||||
call nerdtree#echo('cannot close tree root')
|
||||
return
|
||||
endif
|
||||
|
||||
call a:directoryNode.activate()
|
||||
call a:directoryNode.activate((a:0 > 0) ? a:1 : {})
|
||||
endfunction
|
||||
|
||||
"FUNCTION: s:activateFileNode() {{{1
|
||||
|
||||
Reference in New Issue
Block a user