mirror of
1
0
Fork 0
ultimate-vim/sources_non_forked/tlib/autoload/tlib/vim.vim

153 lines
4.5 KiB
VimL

" @Author: Tom Link (micathom AT gmail com?subject=[vim])
" @Website: http://www.vim.org/account/profile.php?user_id=4037
" @GIT: http://github.com/tomtom/tlib_vim/
" @License: GPL (see http://www.gnu.org/licenses/gpl.txt)
" @Created: 2010-07-19.
" @Last Change: 2012-06-08.
" @Revision: 37
let s:restoreframecmd = ''
let s:fullscreen = 0
if has('win16') || has('win32') || has('win64')
if !exists('g:tlib#vim#simalt_maximize')
" The alt-key for maximizing the window.
" CAUTION: The value of this paramter depends on your locale and
" maybe the windows version you are running.
let g:tlib#vim#simalt_maximize = 'x' "{{{2
endif
if !exists('g:tlib#vim#simalt_restore')
" The alt-key for restoring the window.
" CAUTION: The value of this paramter depends on your locale and
" maybe the windows version you are running.
let g:tlib#vim#simalt_restore = 'r' "{{{2
endif
if !exists('g:tlib#vim#use_vimtweak')
" If true, use the vimtweak.dll for windows. This will enable
" tlib to remove the caption for fullscreen windows.
let g:tlib#vim#use_vimtweak = 0 "{{{2
endif
" Maximize the window.
" You might need to redefine |g:tlib#vim#simalt_maximize| if it doesn't
" work for you.
fun! tlib#vim#Maximize(fullscreen) "{{{3
if !has("gui_running")
return
endif
call s:SaveFrameParams()
let s:fullscreen = a:fullscreen
if g:tlib#vim#use_vimtweak && a:fullscreen
call libcallnr("vimtweak.dll", "EnableCaption", 0)
endif
exec 'simalt ~'. g:tlib#vim#simalt_maximize
endf
" Restore the original vimsize after having called |tlib#vim#Maximize()|.
function! tlib#vim#RestoreWindow() "{{{3
if !has("gui_running")
return
endif
if g:tlib#vim#use_vimtweak
call libcallnr("vimtweak.dll", "EnableCaption", 1)
endif
exec 'simalt ~'. g:tlib#vim#simalt_restore
call s:RestoreFrameParams()
endf
else
if !exists('g:tlib#vim#use_wmctrl')
" If true, use wmctrl for X windows to make a window
" maximized/fullscreen.
"
" This is the preferred method for maximizing windows under X
" windows. Some window managers have problem coping with the
" default method of setting 'lines' and 'columns' to a large
" value.
let g:tlib#vim#use_wmctrl = executable('wmctrl') "{{{2
endif
" :nodoc:
fun! tlib#vim#Maximize(fullscreen) "{{{3
if !has("gui_running")
return
endif
call s:SaveFrameParams()
let s:fullscreen = a:fullscreen
if g:tlib#vim#use_wmctrl
if a:fullscreen
silent !wmctrl -r :ACTIVE: -b add,fullscreen
else
silent !wmctrl -r :ACTIVE: -b add,maximized_vert,maximized_horz
endif
else
set lines=1000 columns=1000
endif
endf
" :nodoc:
function! tlib#vim#RestoreWindow() "{{{3
if !has("gui_running")
return
endif
if g:tlib#vim#use_wmctrl
if s:fullscreen
silent !wmctrl -r :ACTIVE: -b remove,fullscreen
else
silent !wmctrl -r :ACTIVE: -b remove,maximized_vert,maximized_horz
endif
endif
call s:RestoreFrameParams()
endf
endif
function! s:SaveFrameParams() "{{{3
let s:restoreframecmd = printf("set lines=%d columns=%d | winpos %d %d", &lines, &columns, getwinposx(), getwinposy())
endf
function! s:RestoreFrameParams() "{{{3
if !empty(s:restoreframecmd)
exec s:restoreframecmd
let s:restoreframecmd = ''
endif
endf
" :display: tlib#vim##CopyFunction(old, new, overwrite=0)
function! tlib#vim#CopyFunction(old, new, ...) "{{{3
let overwrite = a:0 >= 1 ? a:1 : 0
redir => oldfn
exec 'silent function' a:old
redir END
if exists('*'. a:new)
if overwrite > 0
exec 'delfunction' a:new
elseif overwrite < 0
throw 'tlib#vim##CopyFunction: Function already exists: '. a:old .' -> '. a:new
else
return
endif
endif
let fn = split(oldfn, '\n')
let fn = map(fn, 'substitute(v:val, ''^\d\+'', "", "")')
let fn[0] = substitute(fn[0], '\V\^\s\*fu\%[nction]!\?\s\+\zs'. a:old, a:new, '')
let t = @t
try
let @t = join(fn, "\n")
redir => out
@t
redir END
finally
let @t = t
endtry
endf