#+TITLE: Raku layer

#+TAGS: general|layer|multi-paradigm|programming

* Table of Contents                     :TOC_5_gh:noexport:
- [[#description][Description]]
  - [[#features][Features:]]
- [[#install][Install]]
  - [[#layer][Layer]]
  - [[#jump-to-definition][Jump to definition]]
- [[#key-bindings][Key bindings]]

* Description
This layer provides an environment for the [[https://www.raku.org/][Raku Programming Language]] that was previously known as Perl 6.

** Features:
- Jump to definition & Code completion via [[https://github.com/universal-ctags/ctags][ctags-universal]]
- Syntax checking via [[https://github.com/Raku/flycheck-raku][flycheck-raku]] and =raku -c=
- Syntax highlighting & Syntax indentation via [[https://github.com/Raku/raku-mode][raku-mode]]
- =META6.json= highlighting via [[https://github.com/joshwnj/json-mode][json-mode]]
- Provides Evil text objects for:
  - double-angle-brackets
  - corner-brackets
  - single-quotation-marks
  - double-quotation-marks

* Install
** Layer
To use this configuration layer, add it to your =~/.spacemacs=. You will need to
add =raku= to the existing =dotspacemacs-configuration-layers= list in this
file.

** Jump to definition
Jump to definition requires [[https://github.com/universal-ctags/ctags][ctags-universal]] to be be installed.
Then you can generate the =TAGS= file for your projects like this:

#+BEGIN_SRC shell
  ctags -e -Ra lib t/
  ctags -e -Ra --language-force=Perl6 bin/ $YOUR_PERL_PATH/share/perl6/site/sources/
#+END_SRC

* Key bindings

| Key binding | Description                                    |
|-------------+------------------------------------------------|
| ~SPC m g g~ | Jump to definition (requires =ctags-universal= |
