-
Notifications
You must be signed in to change notification settings - Fork 4
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- tlib#vcs#FindVCS(filename): Wrong parameters to fnamemodifiy if filename is a directory- Some system-related functions (e.g. facilitate use of cygwin tools)- tlib#arg#StringAsKeyArgsEqual(), tlib#arg#StringAsKeyArgs(): Support "key=val" type argument lists- tlib#vcs#Executable()- scripts/create_crc_table.rb- tlib#var#Get(): For namespaces other than global, replace "#" with "_"MD5 checksum: 4a33f2f23e1fc6600b32e7f8323e001e
- Loading branch information
1 parent
530bac3
commit 51fce93
Showing
6 changed files
with
237 additions
and
37 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,127 @@ | ||
" @Author: Tom Link (mailto:micathom AT gmail com?subject=[vim]) | ||
" @License: GPL (see http://www.gnu.org/licenses/gpl.txt) | ||
" @Last Change: 2014-06-30. | ||
" @Revision: 25 | ||
|
||
|
||
if !exists('g:tlib#sys#windows') | ||
let g:tlib#sys#windows = &shell !~ 'sh' && (has('win16') || has('win32') || has('win64')) "{{{2 | ||
endif | ||
|
||
|
||
if !exists('g:tlib#sys#null') | ||
let g:tlib#sys#null = g:tlib#sys#windows ? 'NUL' : (filereadable('/dev/null') ? '/dev/null' : '') "{{{2 | ||
endif | ||
|
||
|
||
let s:executables = {} | ||
|
||
function! tlib#sys#IsExecutable(cmd, ...) "{{{3 | ||
" TLogVAR a:cmd | ||
" echom "DBG has_key(s:executables, a:cmd)" has_key(s:executables, a:cmd) | ||
if !has_key(s:executables, a:cmd) | ||
let executable = executable(a:cmd) | ||
" TLogVAR 1, executable | ||
let ignore_cyg = a:0 >= 1 ? a:1 : !g:tlib#sys#windows | ||
if !executable && !ignore_cyg | ||
let executable = tlib#sys#IsCygwinBin(a:cmd) | ||
" TLogVAR 2, executable | ||
endif | ||
let s:executables[a:cmd] = executable | ||
endif | ||
" echom "DBG s:executables[a:cmd]" s:executables[a:cmd] | ||
return s:executables[a:cmd] | ||
endf | ||
|
||
|
||
if !exists('g:tlib#sys#check_cygpath') | ||
" If true, check whether we have to convert a path via cyppath -- | ||
" see |tlib#sys#MaybeUseCygpath| | ||
let g:tlib#sys#check_cygpath = g:tlib#sys#windows && tlib#sys#IsExecutable('cygpath') "{{{2 | ||
endif | ||
|
||
|
||
if !exists('g:tlib#sys#cygwin_path_rx') | ||
" If a full windows filename (with slashes instead of backslashes) | ||
" matches this |regexp|, it is assumed to be a cygwin executable. | ||
let g:tlib#sys#cygwin_path_rx = '/cygwin/' "{{{2 | ||
endif | ||
|
||
|
||
if !exists('g:tlib#sys#cygwin_expr') | ||
" For cygwin binaries, convert command calls using this vim | ||
" expression. | ||
let g:tlib#sys#cygwin_expr = '"bash -c ''". escape(%s, "''\\") ."''"' "{{{2 | ||
endif | ||
|
||
|
||
let s:cygwin = {} | ||
|
||
function! tlib#sys#IsCygwinBin(cmd) "{{{3 | ||
" TLogVAR a:cmd | ||
if !g:tlib#sys#windows | ||
return 0 | ||
elseif has_key(s:cygwin, a:cmd) | ||
let rv = s:cygwin[a:cmd] | ||
else | ||
if !tlib#sys#IsExecutable('cygpath', 1) || !tlib#sys#IsExecutable('which', 1) | ||
let rv = 0 | ||
else | ||
let which = substitute(system('which '. shellescape(a:cmd)), '\n$', '', '') | ||
" echom "DBG which:" which | ||
if which =~ '^/' | ||
let filename = system('cygpath -ma '. shellescape(which)) | ||
" echom "DBG filename:" filename | ||
let rv = filename =~ g:tlib#sys#cygwin_path_rx | ||
else | ||
let rv = 0 | ||
endif | ||
endif | ||
let s:cygwin[a:cmd] = rv | ||
endif | ||
" TLogVAR rv | ||
return rv | ||
endf | ||
|
||
|
||
function! tlib#sys#GetCmd(cmd) "{{{3 | ||
if !empty(g:tlib#sys#cygwin_expr) && tlib#sys#IsCygwinBin(matchstr(a:cmd, '^\S\+')) | ||
let cmd = eval(printf(g:tlib#sys#cygwin_expr, string(a:cmd))) | ||
" TLogVAR cmd | ||
return cmd | ||
else | ||
return a:cmd | ||
endif | ||
endf | ||
|
||
|
||
" If cmd seems to be a cygwin executable, use cygpath to convert | ||
" filenames. This assumes that cygwin's which command returns full | ||
" filenames for non-cygwin executables. | ||
function! tlib#sys#MaybeUseCygpath(cmd) "{{{3 | ||
" echom "DBG" a:cmd | ||
if g:tlib#sys#check_cygpath && tlib#sys#IsCygwinBin(a:cmd) | ||
return 'cygpath -u "%s"' | ||
endif | ||
return '' | ||
endf | ||
|
||
|
||
function! tlib#sys#ConvertPath(converter, filename) "{{{3 | ||
return tlib#string#Chomp(system(printf(a:converter, shellescape(a:filename)))) | ||
endf | ||
|
||
|
||
let s:native_filenames = {} | ||
|
||
function! tlib#sys#FileArgs(cmd, files) "{{{3 | ||
let cygpath = tlib#sys#MaybeUseCygpath(a:cmd) | ||
" TLogVAR cygpath | ||
if empty(cygpath) | ||
return a:files | ||
else | ||
let files = map(copy(a:files), 'has_key(s:native_filenames, v:val) ? s:native_filenames[v:val] : tlib#sys#CygPath(v:val)') | ||
return files | ||
endif | ||
endf | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters