nerdtree

A tree explorer plugin for vim.
Index Commits Files Refs
commit 9de3e950fc52ed09dfe9e9ed31287a8cf4ef2d33
parent fc85a6f07c2cd694be93496ffad75be126240068
Author: mjkloeckner <martin.cachari@gmail.com>
Date:   Sun,  5 Feb 2023 02:17:13 -0300

New menu command: Change selected node permissions

Diffstat:
Mnerdtree_plugin/fs_menu.vim | 24++++++++++++++++++++++++
1 file changed, 24 insertions(+), 0 deletions(-)
diff --git a/nerdtree_plugin/fs_menu.vim b/nerdtree_plugin/fs_menu.vim
@@ -45,6 +45,7 @@ call NERDTreeAddMenuItem({'text': (has('clipboard')?'copy (p)ath to clipboard':'
 
 if has('unix') || has('osx')
     call NERDTreeAddMenuItem({'text': '(l)ist the current node', 'shortcut': 'l', 'callback': 'NERDTreeListNode'})
+    call NERDTreeAddMenuItem({'text': '(C)hange node permissions', 'shortcut':'C', 'callback': 'NERDTreeChangePermissions'})
 else
     call NERDTreeAddMenuItem({'text': '(l)ist the current node', 'shortcut': 'l', 'callback': 'NERDTreeListNodeWin32'})
 endif
@@ -333,6 +334,29 @@ function! NERDTreeListNodeWin32()
     call nerdtree#echo('node not recognized')
 endfunction
 
+" FUNCTION: NERDTreeChangePermissions() {{{1
+function! NERDTreeChangePermissions()
+    let l:node = g:NERDTreeFileNode.GetSelected()
+    let l:prompt = "change node permissions: "
+    let l:newNodePerm = input(l:prompt)
+
+    if !empty(l:node)
+        let l:path = l:node.path.str()
+        let l:cmd = 'chmod ' .. newNodePerm .. ' ' .. path
+        let l:error = split(system(l:cmd), '\n')
+
+        if !empty(l:error)
+            call nerdtree#echo(l:error[0])
+        endif
+
+        call b:NERDTree.root.refresh()
+        call b:NERDTree.render()
+        return
+    endif
+
+    call nerdtree#echo('node not recognized')
+endfunction
+
 " FUNCTION: NERDTreeCopyNode() {{{1
 function! NERDTreeCopyNode()
     let currentNode = g:NERDTreeFileNode.GetSelected()