Stefan Liebl e2ec08ef7c fix GetOsp...()
Change-Id: Ib88f893ca9ff75153f5baf07edcb15c3d57fbe41
2015-03-25 16:28:50 +01:00

193 lines
4.8 KiB
VimL

" ===========================================================================
" File: basics.vim
" Author: Stefan Liebl (S.Liebl@gmx.de)
" Description: some usefull standard functions
"
" Must be first file in this directory
" ===========================================================================
if (v:version < 700)
echo 'update your vim'
endif
" ----------------
" useful functions
" ----------------
function GetLine()
let line_nr = line('.')
let line = getline(line_nr)
return line
endfunction
function PrintLine(text)
let line_nr = line('.')
let line = GetLine()
echo a:text . line_nr . ' ' . line
endfunction
function ListToRegexp(list)
let groups = []
for item in a:list
let r = escape(item, '/*.')
call add(groups, '\('.r.'\)')
endfor
let re = join(groups, '\|')
return re
endfunction
command -nargs=1 EchoDebug call EchoDebug(<args>)
function EchoDebug(text)
if exists('g:debug')
if (g:debug > 0)
execute 'echo "' . a:text . '"'
endif
endif
endfunction
" Go back in jumplist to an older file
function! GotoLastFile()
let actfilename = expand('%')
let filename = actfilename
while filename == actfilename
execute "normal \<C-O>"
let filename = expand('%')
endwhile
endfunction
" inputdialog whitch updates Variable and returns result
function VariableUpdateDialog(prompt, varName, ...)
execute 'let l:var=' . a:varName
if a:0 > 0
let l:var = inputdialog(a:prompt, l:var, a:1)
else
let l:var = inputdialog(a:prompt, l:var)
endif
execute 'let ' . a:varName . '= l:var'
return l:var
endfunction
"command -nargs=1 PathNormpath call PathNormpath('<fargs>')
"function PathNormpath(string)
" if has('python')
" try
"python <<EOF
"import vim
"import os
"string = vim.eval('a:string')
"if string is '':
" path = ''
"else:
" path = os.path.normpath(string)
" path = os.path.normcase(path)
"vim.command("let result = '" + path + "'")
"EOF
" catch /^Vim\%((\a\+)\)\=:E370/ " python not available
" " normalize /
" let result = expand(a:string)
" " delete multiple \
" let result = substitute(result, '\([^\\]\)\\\+', '\1\\', 'g')
" endtry
" else
" " normalize /
" let result = expand(a:string)
" " delete multiple \
" let result = substitute(result, '\([^\\]\)\\\+', '\1\\', 'g')
" endif
" return result
"endfunction
function Single_quote(text)
let output = "'" . a:text . "'"
return output
endfunction
function Double_quote(text)
let output = '"' . a:text . '"'
return output
endfunction
function Eval(expression)
if has('python')
try
python <<EOF
import vim
result = str(eval(vim.eval('a:expression')))
#print 'result:', result
vim.command('let result = \"' + result + '\"')
EOF
catch /^Vim\%((\a\+)\)\=:E370/ " python not available
throw 'Eval needs python'
let result = a:expression
endtry
else
let result = eval(a:expression)
endif
return result
endfunction
function ToInt(expression)
if has('python')
try
let expression = substitute(a:expression, '\.\d\+', '', '')
python <<EOF
import vim
result = str(int(vim.eval('expression')))
#print 'result: ', result
vim.command('let result = \"' + result + '\"')
EOF
catch /^Vim\%((\a\+)\)\=:E370/ " python not available
throw 'ToInt needs python'
let result = a:expression
endtry
else
let result = float2nr(a:expression)
endif
return result
endfunction
function ToHex(expression, bits)
if has('python')
try
let expression = substitute(a:expression, 'L', '', '')
python <<EOF
import vim
result = hex(long(int(vim.eval('expression'))))
#print 'result: ', result
vim.command('let result = \"' + result + '\"')
EOF
catch /^Vim\%((\a\+)\)\=:E370/ " python not available
throw 'ToHex needs python'
let result = a:expression
endtry
else
let result = printf('%x', a:expression)
endif
if (a:bits != 0)
let digits = a:bits / 4
let result = substitute(result, '\(0x\)\x*\(\x\{' . digits . '}\>\)', '\1\2', '')
"echo 'result:'.result.':'. a:bits digits
endif
return result
endfunction
" get date
function GetDate()
let l:full_date = system('date /T')
let l:day = matchstr(l:full_date,'\a\+')
let l:date = matchstr(l:full_date,'[0-9.]\+')
return l:date
endfunction
"function Wait(seconds)
" let starttime = localtime()
" while ((localtime() - starttime) < a:seconds)
" endwhile
"endfunction
function ReversePatch()
silent execute '!patch -R -o' v:fname_out v:fname_in '<' v:fname_diff
endfunction
EchoDebug 'loaded _stefan.vim'