summaryrefslogtreecommitdiff
path: root/rc/filetype/perl.kak
diff options
context:
space:
mode:
authorJohannes Altmanninger <aclopte@gmail.com>2020-09-18 19:18:39 +0200
committerJohannes Altmanninger <aclopte@gmail.com>2020-09-18 20:55:12 +0200
commit19b54a8a6e2c16bda671cdefb5af1db464e60a86 (patch)
tree1b41e57c3b201522ac43fb5a272ba87c486dd904 /rc/filetype/perl.kak
parentdbd7e4da79ff59a63be03c580d3f396657199596 (diff)
Highlight more Perl quoting syntaxes
This adds highlighting for - quoting operators qw, qr, and qx, like `qw< some words >` - angle brackets after a quoting operator, like `q<string>` - punctuation as quoting delimiter, like `q|string|` - POD sections, which start with ^=\w and and with ^=cut - heredocs; the marker can be a bare word, or a quoted word, like print <<~ 'EOF' single quoted heredoc EOF Closes #3736 No attempt is made to use different highlighting for interpolated (qq or "") strings just yet. Recognizing quote boundaries is more important.
Diffstat (limited to 'rc/filetype/perl.kak')
-rw-r--r--rc/filetype/perl.kak34
1 files changed, 19 insertions, 15 deletions
diff --git a/rc/filetype/perl.kak b/rc/filetype/perl.kak
index 348b4cd3..a7dcaa2a 100644
--- a/rc/filetype/perl.kak
+++ b/rc/filetype/perl.kak
@@ -37,21 +37,25 @@ provide-module perl %ยง
add-highlighter shared/perl regions
add-highlighter shared/perl/code default-region group
-add-highlighter shared/perl/command region (?<!\$)(?<!\\)` (?<!\\)(\\\\)*` fill meta
-add-highlighter shared/perl/double_string region (?<!\$)(?<!\\)" (?<!\\)(\\\\)*" fill string
-add-highlighter shared/perl/single_string region (?<!\$)(?<!\\\\)' (?<!\\)(\\\\)*' fill string
-add-highlighter shared/perl/comment region (?<!\$)(?<!\\)# $ fill comment
-
-add-highlighter shared/perl/regex region m?(?<!/)/[^/\n]+(?=/) /\w? fill meta
-add-highlighter shared/perl/sregex region s/[^/\n]+/[^/\n]+(?=/) /\w? fill meta
-
-add-highlighter shared/perl/q1 region -recurse \{ q\{ \} fill string
-add-highlighter shared/perl/q2 region -recurse \( q\( \) fill string
-add-highlighter shared/perl/q3 region -recurse \[ q\[ \] fill string
-
-add-highlighter shared/perl/qq1 region -recurse \{ qq\{ \} fill string
-add-highlighter shared/perl/qq2 region -recurse \( qq\( \) fill string
-add-highlighter shared/perl/qq3 region -recurse \[ qq\[ \] fill string
+add-highlighter shared/perl/command region (?<!\$)(?<!\\)` (?<!\\)(\\\\)*` fill meta
+add-highlighter shared/perl/double_string region (?<!\$)(?<!\\)" (?<!\\)(\\\\)*" fill string
+add-highlighter shared/perl/single_string region (?<!\$)(?<!\\\\)' (?<!\\)(\\\\)*' fill string
+add-highlighter shared/perl/comment region (?<!\$)(?<!\\)# $ fill comment
+
+add-highlighter shared/perl/regex region m?(?<!/)(?<!qr)/[^/\n]+(?=/) /\w? fill meta
+add-highlighter shared/perl/sregex region s/[^/\n]+/[^/\n]+(?=/) /\w? fill meta
+
+add-highlighter shared/perl/quote_brace region -recurse \{ \bq[qrwx]?\{ \} fill string
+add-highlighter shared/perl/quote_paren region -recurse \( \bq[qrwx]?\( \) fill string
+add-highlighter shared/perl/quote_brack region -recurse \[ \bq[qrwx]?\[ \] fill string
+add-highlighter shared/perl/quote_angle region -recurse < \bq[qrwx]?< > fill string
+add-highlighter shared/perl/quote_punct region -match-capture '\bq[qwx]?([:;!@#$%^&*|,.?/~=+-])' '(.)' fill string
+add-highlighter shared/perl/quote_regex region -match-capture '\bqr([:;!@#$%^&*|,.?/~=+-])' '(.)' fill meta
+
+add-highlighter shared/perl/double_heredoc region -match-capture <<~?\h*'(\w+)' ^\t*(\w+)\b fill string
+add-highlighter shared/perl/single_heredoc region -match-capture <<~?\h*"(\w+)" ^\t*(\w+)\b fill string
+add-highlighter shared/perl/bare_heredoc region -match-capture <<~?(\w+) ^\t*(\w+)\b fill string
+add-highlighter shared/perl/pod region ^=\w+ ^=cut\b fill string
evaluate-commands %sh{
# Grammar