aboutsummaryrefslogtreecommitdiff
path: root/modules/vim/vim.dot.link/plugin/Rename.vim
diff options
context:
space:
mode:
Diffstat (limited to 'modules/vim/vim.dot.link/plugin/Rename.vim')
-rw-r--r--modules/vim/vim.dot.link/plugin/Rename.vim27
1 files changed, 27 insertions, 0 deletions
diff --git a/modules/vim/vim.dot.link/plugin/Rename.vim b/modules/vim/vim.dot.link/plugin/Rename.vim
new file mode 100644
index 0000000..b56c516
--- /dev/null
+++ b/modules/vim/vim.dot.link/plugin/Rename.vim
@@ -0,0 +1,27 @@
+" Rename.vim - Rename a buffer within Vim and on the disk
+"
+" Copyright June 2007 by Christian J. Robinson <infynity@onewest.net>
+"
+" Distributed under the terms of the Vim license. See ":help license".
+"
+" Usage:
+"
+" :Rename[!] {newname}
+
+command! -nargs=* -complete=file -bang Rename :call Rename("<args>", "<bang>")
+
+function! Rename(name, bang)
+ let l:curfile = expand("%:p")
+ let v:errmsg = ""
+ silent! exe "saveas" . a:bang . " " . a:name
+ if v:errmsg =~# '^$\|^E329'
+ if expand("%:p") !=# l:curfile && filewritable(expand("%:p"))
+ silent exe "bwipe! " . l:curfile
+ if delete(l:curfile)
+ echoerr "Could not delete " . l:curfile
+ endif
+ endif
+ else
+ echoerr v:errmsg
+ endif
+endfunction