From fc96871ac5297d58a29d2ab9599f38fd322a255b Mon Sep 17 00:00:00 2001 From: Andrea Mistrali Date: Tue, 15 Sep 2015 15:27:21 +0200 Subject: [PATCH] Readded GuiTabLabel and fixed Tab completion --- plugin/myFunx.vim | 78 ++++++++++++++++++++++++++++++++++++++++++++--- vimrc | 8 +++-- 2 files changed, 80 insertions(+), 6 deletions(-) diff --git a/plugin/myFunx.vim b/plugin/myFunx.vim index d86e847..981abe3 100644 --- a/plugin/myFunx.vim +++ b/plugin/myFunx.vim @@ -1,10 +1,10 @@ " Append modeline after last line in buffer. " Use substitute() (not printf()) to handle '%%s' modeline in LaTeX files. function! AppendModeline() - let save_cursor = getpos('.') - let append = ' vim: set ts='.&tabstop.' sw='.&shiftwidth.' tw='.&textwidth.' ft='.&filetype.' :' - $put =substitute(&commentstring, '%s', append, '') - call setpos('.', save_cursor) + let save_cursor = getpos('.') + let append = ' vim: set ts='.&tabstop.' sw='.&shiftwidth.' tw='.&textwidth.' ft='.&filetype.' :' + $put =substitute(&commentstring, '%s', append, '') + call setpos('.', save_cursor) endfunction " Define as a command @@ -13,4 +13,74 @@ command! -nargs=0 -bar AppendModeline call AppendModeline() " Map to ml nnoremap ml :call AppendModeline() +function! GuiTabLabel() + let label = '' + let bufnrlist = tabpagebuflist(v:lnum) + + + " Append the tab number + let label .= tabpagenr().'. ' + + " Append the buffer name + let name = bufname(bufnrlist[tabpagewinnr(v:lnum) - 1]) + if name == '' + " give a name to no-name documents + if &buftype=='quickfix' + let name = '[Quickfix List]' + else + let name = '[No Name]' + endif + else + " get only the file name + let name = fnamemodify(name,":t") + endif + let label .= name + + for bufnr in bufnrlist + if getbufvar(bufnr, "&modified") + let label .= ' [+]' + break + endif + endfor + return label +endfunction + +" set up tab tooltips with every buffer name +function! GuiTabToolTip() + let tip = '' + let bufnrlist = tabpagebuflist(v:lnum) + + for bufnr in bufnrlist + " separate buffer entries + if tip!='' + let tip .= ' | ' + endif + + " Add name of buffer + let name=bufname(bufnr) + if name == '' + " give a name to no name documents + if getbufvar(bufnr,'&buftype')=='quickfix' + let name = '[Quickfix List]' + else + let name = '[No Name]' + endif + endif + let tip.=name + + " add modified/modifiable flags + if getbufvar(bufnr, "&modified") + let tip .= ' [+]' + endif + if getbufvar(bufnr, "&modifiable")==0 + let tip .= ' [-]' + endif + endfor + + return tip +endfunction + +set guitablabel=%!GuiTabLabel() +set guitabtooltip=%!GuiTabToolTip() + " vim: set ts=4 sw=4 tw=78 ft=vim : diff --git a/vimrc b/vimrc index f199011..fdd4933 100644 --- a/vimrc +++ b/vimrc @@ -133,8 +133,12 @@ function! CleverTab() return "\" endfunction " map the function to Tab -" inoremap =CleverTab() -" inoremap =CleverTab() +inoremap =CleverTab() +inoremap =CleverTab() +" map Shift-Tab to Snipmate +imap snipMateNextOrTrigger +smap snipMateNextOrTrigger + set completeopt=longest " Emacs like indenting. Pressing Tab indents line