]> git.phdru.name Git - dotfiles.git/commitdiff
.vimrc: Improve SetExecutableBit
authorOleg Broytman <phd@phdru.name>
Fri, 25 Aug 2017 09:54:19 +0000 (12:54 +0300)
committerOleg Broytman <phd@phdru.name>
Fri, 25 Aug 2017 09:54:19 +0000 (12:54 +0300)
Do not set/clear the executable bit if it's already set/clear.

.vimrc

diff --git a/.vimrc b/.vimrc
index d743be717f83686b9ed92935f7260d87224116f9..f59293420e8c60039afd64bc21176a647a3920aa 100644 (file)
--- a/.vimrc
+++ b/.vimrc
@@ -592,11 +592,12 @@ function! SetExecutableBit(x)
    endif
    checktime
    let fname = expand("%:p")
+   let fx = executable(fname)
    execute "au FileChangedShell " . fname . " :echo"
-   if a:x
-      silent !chmod a+x %
-   else
-      silent !chmod a-x %
+   if a:x && !fx
+      !chmod a+x %
+   elseif !a:x && fx
+      !chmod a-x %
    endif
    if v:shell_error
       echoerr 'Error running chmod: ' . v:shell_error
@@ -606,6 +607,7 @@ function! SetExecutableBit(x)
 endfunction
 command! Xbit if executable(expand("%:p")) | call SetExecutableBit(0) | else | call SetExecutableBit(1) | endif
 
+
 " ----------
 " From http://slobin.pp.ru/vim/_vimrc.html