Perl 6 support for syntastic
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.

Perl 6 support for vim-syntastic

Build Status

Alt text

While the Vim syntax check plugin [syntastic] ( "Syntastic Vim plugin") offers Perl 5 support, it does not at the moment support Perl 6. This plugin implements Perl 6 support (until these changes are incorporated upstream).

Since the 2016.09 Rakudo release, Rakudo supports JSON error support. This is the minimal version required to use this plugin. This regex-based plugin, used before 2016.09 will be archived in the branch "regex" in case you have an older Rakudo version.

Installation & configuration

You need to install syntastic to use this plugin. Instructions for [pathogen plugin manager] ( "vim-pathogen"):

$ cd ~/.vim
$ git clone ~/.vim/bundle/synastic
$ git clone ~/.vim/bundle/synastic-perl6

Type ":Helptags" in Vim to generate Help Tags.

Syntastic and syntastic-perl6 vimrc configuration (comments start with "):

"syntastic syntax checking (see the syntastic documentation)
let g:syntastic_always_populate_loc_list = 1
let g:syntastic_auto_loc_list = 1
let g:syntastic_check_on_open = 1
let g:syntastic_check_on_wq = 0
set statusline+=%#warningmsg#
set statusline+=%{SyntasticStatuslineFlag()}
set statusline+=%*

"Perl 6 support
"Optional comma separated list of quoted paths to be included to -I
let g:syntastic_perl6lib = [ 'lib', '../lib' ]
"Optional perl6 binary (defaults to perl6 in your PATH)
"let g:syntastic_perl6_exec = '/opt/rakudo/bin/perl6'
"Register the checker provided by this plugin
let g:syntastic_perl6_checkers = ['jsonerror']
"Enable the perl6 checker (disabled out of the box because of security reasons:
"'perl6 -c' executes the BEGIN and CHECK block of code it parses. This should
"be fine for your own code. See:
let g:syntastic_enable_perl6_jsonerror_checker = 1

Also, you could check [this blogpost on how to configure Vim to as an Perl6 editor] (

Module path of your code

There are two ways of dealing with unknown lib path perl6 errors, you can populate the g:syntastic_perl6_lib_path, and/or more practically, you can set the PERL6LIB environment in your shell. E.g. for for sh/bash:

$ export PERL6LIB=~/Code/SomePerl6Module/lib:~/Code/SomeOtherPerl6Module/lib
$ vim my_perl6_program.p6

Contribute: make this plugin better

  • Send a PR to make the code (vimscript) better where needed.
  • Send a PR to add tests for error cases not yet tested (see the t directory).
  • Post an issue if you find a bug. In that case copy-paste the error (e.g. within vim: :!perl6 -c %) and post a sample of the erroneous Perl 6 code in question.
  • Fix bugs.


nxadm (El_Che @ #perl6 (freenode))

A big thanks to lcd047 (syntasic contributor) for the many pointers and corrections.