mirror of
https://github.com/vim/vim.git
synced 2025-11-14 23:04:02 -05:00
runtime(netrw): NetrwChgPerm for files not in cwd
Problem: Changing permissions fail when using `gp` if the file under
the cursor is not in the current working directory.
Solution: Use the already available `a:curdir` argument and prepend it
to the `<cfile>`, so that the path of the file is correct.
This commit also refactors some leftover `netrw#ErrorMsg` to
`netrw#msg#Notify` (the main refactoring was done in
f5e3b5c04f).
closes: #18674
Signed-off-by: Mohammad Reza Karimi <m.r.karimi.j@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
committed by
Christian Brabandt
parent
28f7582c16
commit
fe71c56d8f
@@ -12,6 +12,7 @@
|
|||||||
" 2025 Oct 01 by Vim Project fix navigate to parent folder #18464
|
" 2025 Oct 01 by Vim Project fix navigate to parent folder #18464
|
||||||
" 2025 Oct 26 by Vim Project fix parsing of remote user names #18611
|
" 2025 Oct 26 by Vim Project fix parsing of remote user names #18611
|
||||||
" 2025 Oct 27 by Vim Project align comment after #18611
|
" 2025 Oct 27 by Vim Project align comment after #18611
|
||||||
|
" 2025 Nov 01 by Vim Project fix NetrwChgPerm #18674
|
||||||
" Copyright: Copyright (C) 2016 Charles E. Campbell {{{1
|
" Copyright: Copyright (C) 2016 Charles E. Campbell {{{1
|
||||||
" Permission is hereby granted to use and distribute this code,
|
" Permission is hereby granted to use and distribute this code,
|
||||||
" with or without modifications, provided that this copyright
|
" with or without modifications, provided that this copyright
|
||||||
@@ -4211,11 +4212,12 @@ function s:NetrwChgPerm(islocal,curdir)
|
|||||||
call inputsave()
|
call inputsave()
|
||||||
let newperm= input("Enter new permission: ")
|
let newperm= input("Enter new permission: ")
|
||||||
call inputrestore()
|
call inputrestore()
|
||||||
let chgperm= substitute(g:netrw_chgperm,'\<FILENAME\>',netrw#os#Escape(expand("<cfile>")),'')
|
let fullpath = fnamemodify(netrw#fs#PathJoin(a:curdir, expand("<cfile>")), ':p')
|
||||||
|
let chgperm= substitute(g:netrw_chgperm,'\<FILENAME\>',netrw#os#Escape(fullpath),'')
|
||||||
let chgperm= substitute(chgperm,'\<PERM\>',netrw#os#Escape(newperm),'')
|
let chgperm= substitute(chgperm,'\<PERM\>',netrw#os#Escape(newperm),'')
|
||||||
call system(chgperm)
|
call system(chgperm)
|
||||||
if v:shell_error != 0
|
if v:shell_error != 0
|
||||||
NetrwKeepj call netrw#ErrorMsg(1,"changing permission on file<".expand("<cfile>")."> seems to have failed",75)
|
NetrwKeepj call netrw#msg#Notify('WARNING', printf('changing permission on file<%s> seems to have failed', fullpath))
|
||||||
endif
|
endif
|
||||||
if a:islocal
|
if a:islocal
|
||||||
NetrwKeepj call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./',0))
|
NetrwKeepj call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./',0))
|
||||||
@@ -4591,7 +4593,7 @@ function s:NetrwServerEdit(islocal,fname)
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
else
|
else
|
||||||
call netrw#ErrorMsg(s:ERROR,"you need a gui-capable vim and client-server to use <ctrl-r>",98)
|
call netrw#msg#Notify('ERROR', 'you need a gui-capable vim and client-server to use <ctrl-r>')
|
||||||
endif
|
endif
|
||||||
|
|
||||||
endfunction
|
endfunction
|
||||||
|
|||||||
Reference in New Issue
Block a user