aboutsummaryrefslogtreecommitdiff
path: root/vim/bundle/tlib_vim/autoload/tlib/dir.vim
diff options
context:
space:
mode:
Diffstat (limited to 'vim/bundle/tlib_vim/autoload/tlib/dir.vim')
-rwxr-xr-xvim/bundle/tlib_vim/autoload/tlib/dir.vim93
1 files changed, 93 insertions, 0 deletions
diff --git a/vim/bundle/tlib_vim/autoload/tlib/dir.vim b/vim/bundle/tlib_vim/autoload/tlib/dir.vim
new file mode 100755
index 0000000..0208107
--- /dev/null
+++ b/vim/bundle/tlib_vim/autoload/tlib/dir.vim
@@ -0,0 +1,93 @@
+" @Author: Tom Link (micathom AT gmail com?subject=[vim])
+" @Website: http://www.vim.org/account/profile.php?user_id=4037
+" @License: GPL (see http://www.gnu.org/licenses/gpl.txt)
+" @Revision: 43
+
+" TLet g:tlib#dir#sep = '/'
+TLet g:tlib#dir#sep = exists('+shellslash') && !&shellslash ? '\' : '/'
+
+
+let s:dir_stack = []
+
+" EXAMPLES: >
+" tlib#dir#CanonicName('foo/bar')
+" => 'foo/bar/'
+function! tlib#dir#CanonicName(dirname) "{{{3
+ let dirname = tlib#file#Canonic(a:dirname)
+ if dirname !~ '[/\\]$'
+ return dirname . g:tlib#dir#sep
+ endif
+ return dirname
+endf
+
+
+" EXAMPLES: >
+" tlib#dir#NativeName('foo/bar/')
+" On Windows:
+" => 'foo\bar\'
+" On Linux:
+" => 'foo/bar/'
+function! tlib#dir#NativeName(dirname) "{{{3
+ let sep = tlib#rx#EscapeReplace(g:tlib#dir#sep)
+ let dirname = substitute(a:dirname, '[\/]', sep, 'g')
+ return dirname
+endf
+
+
+" EXAMPLES: >
+" tlib#dir#PlainName('foo/bar/')
+" => 'foo/bar'
+function! tlib#dir#PlainName(dirname) "{{{3
+ let dirname = a:dirname
+ while index(['/', '\'], dirname[-1 : -1]) != -1
+ let dirname = dirname[0 : -2]
+ endwh
+ return dirname
+ " return substitute(a:dirname, tlib#rx#Escape(g:tlib#dir#sep).'\+$', '', '')
+endf
+
+
+" Create a directory if it doesn't already exist.
+function! tlib#dir#Ensure(dir) "{{{3
+ if !isdirectory(a:dir)
+ let dir = tlib#dir#PlainName(a:dir)
+ return mkdir(dir, 'p')
+ endif
+ return 1
+endf
+
+
+" Return the first directory in &rtp.
+function! tlib#dir#MyRuntime() "{{{3
+ return get(split(&rtp, ','), 0)
+endf
+
+
+" :def: function! tlib#dir#CD(dir, ?locally=0) => CWD
+function! tlib#dir#CD(dir, ...) "{{{3
+ TVarArg ['locally', haslocaldir()]
+ let cmd = locally ? 'lcd! ' : 'cd! '
+ " let cwd = getcwd()
+ let cmd .= tlib#arg#Ex(a:dir)
+ " TLogVAR a:dir, locally, cmd
+ exec 'silent' cmd
+ " return cwd
+ return getcwd()
+endf
+
+
+" :def: function! tlib#dir#Push(dir, ?locally=0) => CWD
+function! tlib#dir#Push(dir, ...) "{{{3
+ TVarArg ['locally', haslocaldir()]
+ call add(s:dir_stack, [getcwd(), locally])
+ return tlib#dir#CD(a:dir, locally)
+endf
+
+
+" :def: function! tlib#dir#Pop() => CWD
+function! tlib#dir#Pop() "{{{3
+ let [dir, locally] = remove(s:dir_stack, -1)
+ return tlib#dir#CD(dir, locally)
+endf
+
+