mirror of
https://github.com/preservim/nerdtree.git
synced 2025-02-20 05:24:00 +08:00
Respect user's &shellslash setting in CopyNode and RemoveNode functions (#1150)
* Replace s:Path.Slash() with nerdtree#slash(). * Check the value of &shell when determining the slash under Windows. * Leave &shellslash unchanged when forming copy/delete commands. * Fix fold marker. * Update version number in change log. * Add abort attribute to nerdtree#slash() to satisfy Vim style guide. Co-authored-by: Phil Runninger <prunninger@vhtcx.com>
This commit is contained in:
parent
2af10e3589
commit
96e247ba74
|
@ -7,6 +7,7 @@
|
||||||
#### 6.9
|
#### 6.9
|
||||||
- **.3**: Fix new NERDTrees' width when previous one was in the only window. (PhilRunninger) [#1153](https://github.com/preservim/nerdtree/pull/1153)
|
- **.3**: Fix new NERDTrees' width when previous one was in the only window. (PhilRunninger) [#1153](https://github.com/preservim/nerdtree/pull/1153)
|
||||||
- **.2**: Fix the scope of several key mappings (lifecrisis, PhilRunninger) [#1151](https://github.com/preservim/nerdtree/pull/1151)
|
- **.2**: Fix the scope of several key mappings (lifecrisis, PhilRunninger) [#1151](https://github.com/preservim/nerdtree/pull/1151)
|
||||||
|
- **.1**: Respect user's `&shellslash` setting in CopyNode and RemoveNode functions (PhilRunninger) [#1150](https://github.com/preservim/nerdtree/pull/1150)
|
||||||
- **.0**: Enable opening bookmarks in split windows. (PhilRunninger) [#1144](https://github.com/preservim/nerdtree/pull/1144)
|
- **.0**: Enable opening bookmarks in split windows. (PhilRunninger) [#1144](https://github.com/preservim/nerdtree/pull/1144)
|
||||||
#### 6.8
|
#### 6.8
|
||||||
- **.0**: Allow concealed characters to show another character. (PhilRunninger) [#1138](https://github.com/preservim/nerdtree/pull/1138)
|
- **.0**: Allow concealed characters to show another character. (PhilRunninger) [#1138](https://github.com/preservim/nerdtree/pull/1138)
|
||||||
|
|
|
@ -31,8 +31,10 @@ endfunction
|
||||||
"============================================================
|
"============================================================
|
||||||
|
|
||||||
" FUNCTION: nerdtree#slash() {{{2
|
" FUNCTION: nerdtree#slash() {{{2
|
||||||
|
" Return the path separator used by the underlying file system. Special
|
||||||
|
" consideration is taken for the use of the 'shellslash' option on Windows
|
||||||
|
" systems.
|
||||||
function! nerdtree#slash() abort
|
function! nerdtree#slash() abort
|
||||||
|
|
||||||
if nerdtree#runningWindows()
|
if nerdtree#runningWindows()
|
||||||
if exists('+shellslash') && &shellslash
|
if exists('+shellslash') && &shellslash
|
||||||
return '/'
|
return '/'
|
||||||
|
|
|
@ -247,7 +247,7 @@ function! s:Creator._pathForString(str)
|
||||||
|
|
||||||
"hack to get an absolute path if a relative path is given
|
"hack to get an absolute path if a relative path is given
|
||||||
if dir =~# '^\.'
|
if dir =~# '^\.'
|
||||||
let dir = getcwd() . g:NERDTreePath.Slash() . dir
|
let dir = getcwd() . nerdtree#slash() . dir
|
||||||
endif
|
endif
|
||||||
|
|
||||||
"hack to prevent removing slash if dir is the root of the file system.
|
"hack to prevent removing slash if dir is the root of the file system.
|
||||||
|
|
|
@ -25,10 +25,10 @@ function! s:Path.AbsolutePathFor(pathStr)
|
||||||
if l:prependWorkingDir
|
if l:prependWorkingDir
|
||||||
let l:result = getcwd()
|
let l:result = getcwd()
|
||||||
|
|
||||||
if l:result[-1:] ==# s:Path.Slash()
|
if l:result[-1:] == nerdtree#slash()
|
||||||
let l:result = l:result . a:pathStr
|
let l:result = l:result . a:pathStr
|
||||||
else
|
else
|
||||||
let l:result = l:result . s:Path.Slash() . a:pathStr
|
let l:result = l:result . nerdtree#slash() . a:pathStr
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
@ -614,23 +614,6 @@ function! s:Path.New(pathStr)
|
||||||
return l:newPath
|
return l:newPath
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
" FUNCTION: Path.Slash() {{{1
|
|
||||||
" Return the path separator used by the underlying file system. Special
|
|
||||||
" consideration is taken for the use of the 'shellslash' option on Windows
|
|
||||||
" systems.
|
|
||||||
function! s:Path.Slash()
|
|
||||||
|
|
||||||
if nerdtree#runningWindows()
|
|
||||||
if exists('+shellslash') && &shellslash
|
|
||||||
return '/'
|
|
||||||
endif
|
|
||||||
|
|
||||||
return '\'
|
|
||||||
endif
|
|
||||||
|
|
||||||
return '/'
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
" FUNCTION: Path.Resolve() {{{1
|
" FUNCTION: Path.Resolve() {{{1
|
||||||
" Invoke the vim resolve() function and return the result
|
" Invoke the vim resolve() function and return the result
|
||||||
" This is necessary because in some versions of vim resolve() removes trailing
|
" This is necessary because in some versions of vim resolve() removes trailing
|
||||||
|
@ -815,7 +798,7 @@ function! s:Path._strForEdit()
|
||||||
|
|
||||||
" On Windows, the drive letter may be removed by "fnamemodify()". Add it
|
" On Windows, the drive letter may be removed by "fnamemodify()". Add it
|
||||||
" back, if necessary.
|
" back, if necessary.
|
||||||
if nerdtree#runningWindows() && l:result[0] ==# s:Path.Slash()
|
if nerdtree#runningWindows() && l:result[0] == nerdtree#slash()
|
||||||
let l:result = self.drive . l:result
|
let l:result = self.drive . l:result
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
@ -830,14 +813,14 @@ endfunction
|
||||||
|
|
||||||
" FUNCTION: Path._strForGlob() {{{1
|
" FUNCTION: Path._strForGlob() {{{1
|
||||||
function! s:Path._strForGlob()
|
function! s:Path._strForGlob()
|
||||||
let lead = s:Path.Slash()
|
let lead = nerdtree#slash()
|
||||||
|
|
||||||
"if we are running windows then slap a drive letter on the front
|
"if we are running windows then slap a drive letter on the front
|
||||||
if nerdtree#runningWindows()
|
if nerdtree#runningWindows()
|
||||||
let lead = self.drive . '\'
|
let lead = self.drive . '\'
|
||||||
endif
|
endif
|
||||||
|
|
||||||
let toReturn = lead . join(self.pathSegments, s:Path.Slash())
|
let toReturn = lead . join(self.pathSegments, nerdtree#slash())
|
||||||
|
|
||||||
if !nerdtree#runningWindows()
|
if !nerdtree#runningWindows()
|
||||||
let toReturn = escape(toReturn, self._escChars())
|
let toReturn = escape(toReturn, self._escChars())
|
||||||
|
@ -849,7 +832,7 @@ endfunction
|
||||||
" Return the absolute pathname associated with this Path object. The pathname
|
" Return the absolute pathname associated with this Path object. The pathname
|
||||||
" returned is appropriate for the underlying file system.
|
" returned is appropriate for the underlying file system.
|
||||||
function! s:Path._str()
|
function! s:Path._str()
|
||||||
let l:separator = s:Path.Slash()
|
let l:separator = nerdtree#slash()
|
||||||
let l:leader = l:separator
|
let l:leader = l:separator
|
||||||
|
|
||||||
if nerdtree#runningWindows()
|
if nerdtree#runningWindows()
|
||||||
|
|
|
@ -278,8 +278,8 @@ function! s:TreeDirNode._glob(pattern, all)
|
||||||
else
|
else
|
||||||
let l:pathSpec = escape(fnamemodify(self.path.str({'format': 'Glob'}), ':.'), ',')
|
let l:pathSpec = escape(fnamemodify(self.path.str({'format': 'Glob'}), ':.'), ',')
|
||||||
|
|
||||||
" On Windows, the drive letter may be removed by fnamemodify().
|
" On Windows, the drive letter may be removed by "fnamemodify()".
|
||||||
if nerdtree#runningWindows() && l:pathSpec[0] ==# g:NERDTreePath.Slash()
|
if nerdtree#runningWindows() && l:pathSpec[0] == nerdtree#slash()
|
||||||
let l:pathSpec = self.path.drive . l:pathSpec
|
let l:pathSpec = self.path.drive . l:pathSpec
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
|
@ -165,7 +165,7 @@ endfunction
|
||||||
function! NERDTreeAddNode()
|
function! NERDTreeAddNode()
|
||||||
let curDirNode = g:NERDTreeDirNode.GetSelected()
|
let curDirNode = g:NERDTreeDirNode.GetSelected()
|
||||||
let prompt = s:inputPrompt('add')
|
let prompt = s:inputPrompt('add')
|
||||||
let newNodeName = input(prompt, curDirNode.path.str() . g:NERDTreePath.Slash(), 'file')
|
let newNodeName = input(prompt, curDirNode.path.str() . nerdtree#slash(), 'file')
|
||||||
|
|
||||||
if newNodeName ==# ''
|
if newNodeName ==# ''
|
||||||
call nerdtree#echo('Node Creation Aborted.')
|
call nerdtree#echo('Node Creation Aborted.')
|
||||||
|
@ -252,8 +252,6 @@ endfunction
|
||||||
|
|
||||||
" FUNCTION: NERDTreeDeleteNode() {{{1
|
" FUNCTION: NERDTreeDeleteNode() {{{1
|
||||||
function! NERDTreeDeleteNode()
|
function! NERDTreeDeleteNode()
|
||||||
let l:shellslash = &shellslash
|
|
||||||
let &shellslash = 0
|
|
||||||
let currentNode = g:NERDTreeFileNode.GetSelected()
|
let currentNode = g:NERDTreeFileNode.GetSelected()
|
||||||
let confirmed = 0
|
let confirmed = 0
|
||||||
|
|
||||||
|
@ -289,7 +287,6 @@ function! NERDTreeDeleteNode()
|
||||||
else
|
else
|
||||||
call nerdtree#echo('delete aborted')
|
call nerdtree#echo('delete aborted')
|
||||||
endif
|
endif
|
||||||
let &shellslash = l:shellslash
|
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
" FUNCTION: NERDTreeListNode() {{{1
|
" FUNCTION: NERDTreeListNode() {{{1
|
||||||
|
@ -334,8 +331,6 @@ endfunction
|
||||||
|
|
||||||
" FUNCTION: NERDTreeCopyNode() {{{1
|
" FUNCTION: NERDTreeCopyNode() {{{1
|
||||||
function! NERDTreeCopyNode()
|
function! NERDTreeCopyNode()
|
||||||
let l:shellslash = &shellslash
|
|
||||||
let &shellslash = 0
|
|
||||||
let currentNode = g:NERDTreeFileNode.GetSelected()
|
let currentNode = g:NERDTreeFileNode.GetSelected()
|
||||||
let prompt = s:inputPrompt('copy')
|
let prompt = s:inputPrompt('copy')
|
||||||
let newNodePath = input(prompt, currentNode.path.str(), 'file')
|
let newNodePath = input(prompt, currentNode.path.str(), 'file')
|
||||||
|
@ -371,7 +366,6 @@ function! NERDTreeCopyNode()
|
||||||
else
|
else
|
||||||
call nerdtree#echo('Copy aborted.')
|
call nerdtree#echo('Copy aborted.')
|
||||||
endif
|
endif
|
||||||
let &shellslash = l:shellslash
|
|
||||||
redraw!
|
redraw!
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user