mirror of
https://github.com/amix/vimrc
synced 2024-12-25 19:33:08 +00:00
152 lines
4.5 KiB
VimL
152 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
|
|
|