← Back to team overview

sslug-teknik team mailing list archive

Re: Vim scripts: Hook hvis filen ikke findes

 

On Tue, 18 Mar 2008 10:30:04 +0000
Peter Makholm <peter@xxxxxxxxxxx> wrote:

> Peter Makholm <peter@xxxxxxxxxxx> writes:
> 
> > Er der nogle vim-eksperter der ved om det er muligt at få vim til at
> > kalde et stykke kode hvis man prøver at indlæse en ikke-eksisterende
> > fil?
> 
> Ja, det er muligt. Følgende proof of concept-kode vil førsøge at åbne
> lib/Foo/Bar.pm hvis ikke allerede Foo::Bar findes:
> 
> ---START---
> 
> function! s:LoadModule()
>     let buf = bufnr("%")
>     let file = bufname("%")
> 
>     if ! filereadable(file)
>         let realfile = substitute(file, "::", "/", "g")
>         exec ':r lib/' . realfile . '.pm'
>     endif
> endfunction
> 
> autocmd! BufNewFile *::* nested call s:LoadModule()
> 
> ---END---
> 
> //Makholm 
> 
> 


en anden ting du kunne gøre var at hooke ind i goto-file (gf i insert
mode) så hvis du bruger et modul i dit script og filen ikke eksisterer
som opretter den det. 

hvis der med andre ord står:
use Foo::Bar::Baz;
og du så står med cursoren på Foo::Bar::Baz og trykker gf, så forsøger
den at hoppe til filen Foo/Bar/Baz.pm og hvis denne ikke eksisterer, så
opretter den filen (evt. med en template). 
selv gf funktionaliteten til perl scripts burde være i perl syntax
filen som følger med i de fleste distributioner. Det med at oprette
filen kan klares ved at smide følgende i din vimrc:
:map gf :e <cfile><CR>


-- 
   Kim Schulz   | Need a Content Management System for your website? Go
 Geek by nature | get Fundanemt at : http://www.fundanemt.com      New 
   schulz.dk    | version out now!    


References