I've been playing around more with Perl 6 and have started to configure vim for it. First, download Parrot. After you have built it, change into the languages/perl6 directory and type make perl6. This will create a ./perl6 executable for you (don't type make install, though. This causes problems with future versions, as I've discovered).
Next, create the file ~/.vim/syntax/perl6.vim. This should contain Luke Palmer's Perl 6 vim syntax file (if there's a more up-to-date one, please post a comment). Then, in your ~/.vim/filetype.vim file, add the following entry:
augroup filetypedetect autocmd! BufRead,BufNewFile *.p6 setfiletype perl6 augroup END
That will associate any file with a .p6 extension with the Perl 6 filetype. Opening those files in vim will automatically apply the Perl 6 syntax to it.
While you should probably create a Perl 6 plugin, I have a (bad) habit of just dumping extra stuff in my .vimrc file. In that, I have the following (you'll need to adjust your path to the path of the ./perl6 executable):
au! FileType perl6 :call Perl6Mappings() function! Perl6Mappings() mapr :!~/code/parrot/languages/perl6/perl6 % endfunction
I'll likely add more mappings in the future, but for now, this means that if you type ,r in vim while editing a Perl 6 file (assuming that you use the comma for your leader), you'll automatically run the program.
The tests are a bit more difficult. What I've done is this:
autocmd! BufRead,BufNewFile *.t call s:PerlTestSetup() function! s:PerlTestSetup() let n = 1 let perl5 = 1 if line("$") > 500 let nmax = 500 else let nmax = line("$") endif while n <= nmax if getline(n) =~ "use v6" setfiletype perl6 let perl5 = 0 break endif let n = n + 1 endwhile if perl5 == 1 setfiletype perl call PerlTestMappings() endif endfunc function! PerlTestMappings() noremap,r :!prove -vl % noremap ,t :!prove -vl % endfunction
It's a brute-force check to see if a .t file is Perl 6 or not. It uses a heuristic and can break. It also doesn't allow me to run my tests directly from the editor. It's a start, though.