"============================================================================= " $Id: buffer.vim 520 2012-03-19 18:09:15Z luc.hermitte $ " File: autoload/lh/buffer.vim {{{1 " Author: Luc Hermitte " " Licence: GPLv3 " Version: 3.0.0 " Created: 23rd Jan 2007 " Last Update: $Date: 2012-03-19 19:09:15 +0100 (Mon, 19 Mar 2012) $ "------------------------------------------------------------------------ " Description: " Defines functions that help finding windows and handling buffers. " "------------------------------------------------------------------------ " Installation: " Drop it into {rtp}/autoload/lh/ " Vim 7+ required. " History: " v1.0.0 First Version " (*) Functions moved from searchInRuntimeTime " v2.2.0 " (*) new function: lh#buffer#list() " v3.0.0 GPLv3 " TODO: " }}}1 "============================================================================= "============================================================================= let s:cpo_save=&cpo set cpo&vim " ## Functions {{{1 "------------------------------------------------------------------------ " # Debug {{{2 function! lh#buffer#verbose(level) let s:verbose = a:level endfunction function! s:Verbose(expr) if exists('s:verbose') && s:verbose echomsg a:expr endif endfunction function! lh#buffer#debug(expr) return eval(a:expr) endfunction "------------------------------------------------------------------------ " # Public {{{2 " Function: lh#buffer#find({filename}) {{{3 " If {filename} is opened in a window, jump to this window, otherwise return -1 " Moved from searchInRuntimeTime.vim function! lh#buffer#find(filename) let b = bufwinnr(a:filename) if b == -1 | return b | endif exe b.'wincmd w' return b endfunction function! lh#buffer#Find(filename) return lh#buffer#find(a:filename) endfunction " Function: lh#buffer#jump({filename},{cmd}) {{{3 function! lh#buffer#jump(filename, cmd) if lh#buffer#find(a:filename) != -1 | return | endif exe a:cmd . ' ' . a:filename endfunction function! lh#buffer#Jump(filename, cmd) return lh#buffer#jump(a:filename, a:cmd) endfunction " Function: lh#buffer#scratch({bname},{where}) {{{3 function! lh#buffer#scratch(bname, where) try silent exe a:where.' sp '.a:bname catch /.*/ throw "Can't open a buffer named '".a:bname."'!" endtry setlocal bt=nofile bh=wipe nobl noswf ro endfunction function! lh#buffer#Scratch(bname, where) return lh#buffer#scratch(a:bname, a:where) endfunction " Function: lh#buffer#list() {{{3 function! lh#buffer#list() let all = range(0, bufnr('$')) " let res = lh#list#transform_if(all, [], 'v:1_', 'buflisted') let res = lh#list#copy_if(all, [], 'buflisted') return res endfunction " Ex: Names of the buffers listed " -> echo lh#list#transform(lh#buffer#list(), [], "bufname") " Ex: wipeout empty buffers listed " -> echo 'bw'.join(lh#list#copy_if(range(0, bufnr('$')), [], 'buflisted(v:1_) && empty(bufname(v:1_))'), ' ') "============================================================================= let &cpo=s:cpo_save "============================================================================= " vim600: set fdm=marker: