Changeset 6831

Show
Ignore:
Timestamp:
09/08/05 03:37:15 (3 years ago)
Author:
renormalist
Message:

* cperl6-mode.el:

  • more blocks with non-parenthesized conditions
  • highlighting / indenting for new block types and keywords
  • Now only @' and %' make an array or hash, not the bracket or brace after it
  • `Pugs' style added that defines the style from pugs::hack

* pugs::hack:

  • mention cperl6-mode and config for code conventions
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • lib/pugs/hack.pod

    r6829 r6831  
    279279=head2 Editing 
    280280 
    281 There is a F<util/perl6.vim> Vim syntax file.  There is no Emacs mode yet, 
    282 but perl-mode works better than cperl-mode. 
     281There is a F<util/perl6.vim> Vim syntax file.  There is an 
     282F<util/cperl6-mode.el> Emacs mode. If you don't use it, then perl-mode 
     283works better than cperl-mode. 
    283284 
    284285Where applicable, conventions documented in Damian Conway's "Perl Best 
     
    298299    indent-tabs-mode: nil 
    299300 
     301If you use Emacs with cperl6-mode, you can set these code conventions 
     302in your config file with: 
     303 
     304     (add-hook 'cperl6-mode-hook 
     305               '(lambda () (cperl6-set-style "Pugs"))) 
     306 
    300307If you use BBEdit, you can configure it to auto-expand tabs like this: 
    301308 
  • util/cperl6-mode.el

    r6801 r6831  
    1414;;;           (append '(("\\.[pP]6$" . cperl6-mode)) 
    1515;;;             auto-mode-alist )) 
     16;;;     (add-hook 'cperl6-mode-hook 
     17;;;               '(lambda () (cperl6-set-style "Pugs"))) 
    1618;;; 
    1719;;; BUGS: 
    1820;;; 
    19 ;;;   - Doesn't work, when activated manually after old cperl-mode was 
    20 ;;;     already activated, which mostly happens per default for .pm/.pl 
     21;;;   - Highlighting doesn't work, once original cperl-mode was 
     22;;;     activated, which mostly happens per default for .pm/.pl 
    2123;;;     files. 
    2224;;; 
    2325;;;     Workaround: activate this mode automatically as soon as possible: 
    2426;;; 
    25 ;;;      * Autoload according to file suffix, use this in your emacs config file: 
     27;;;      * Either, autoload according to file suffix, use this in your emacs config file: 
    2628;;; 
    2729;;;          (setq auto-mode-alist 
    2830;;;             (append '(("\\.[pP]6$" . cperl6-mode))  auto-mode-alist )) 
    2931;;; 
    30 ;;;      * Set local variables at the end of your files: 
     32;;;      * Or set local variables at the end of your files: 
    3133;;; 
    3234;;;          ### Local Variables: 
     
    3436;;;          ### End: 
    3537;;; 
    36 ;;;      * Set local variables at first line your files: 
     38;;;      * Or set local variables at first line your files: 
    3739;;; 
    3840;;;          ### -*- mode: cperl6; -*- 
    3941;;; 
    40 ;;; - This mode is not complete yet. I could need help. 
     42;;;  - Parenthesized rx// modifiers don't work: like rx:nth(3) or rx:perl5<i> 
    4143;;; 
    4244;;; 
     
    5456;;;   handled Perl6 syntax annoys you mostly. 
    5557;;; 
     58;;; - There are open problems, please help if you have Emacs Lisp skills. 
     59;;; 
    5660;;; ------------------------------------------------------------------------------- 
    5761 
     
    113117;;; Commentary: 
    114118 
    115 ;; $Id: cperl6-mode.el,v 1.6 2005/09/06 07:30:50 ss5 Exp $ 
     119;; $Id: cperl6-mode.el,v 1.8 2005/09/08 00:59:43 ss5 Exp $ 
    116120 
    117121;;; If your Emacs does not default to `cperl6-mode' on Perl files: 
     
    11471151;;;;  Forked as "cperl6-mode" 
    11481152;;;; 
    1149 ;;;;  New font-lock keywords/syntax: 
     1153;;;;  Highlighting new keywords/builtins: 
    11501154;;;;    class 
    11511155;;;;    has 
    11521156;;;;    say 
    11531157;;;;    returns 
    1154 ;;;;    multi sub 
    1155 ;;;;    multi submethod 
    1156 ;;;;    gather 
    1157 ;;;;    take 
     1158;;;;    multi sub, multi submethod 
     1159;;;;    given, when, default 
     1160;;;;    gather, take 
    11581161;;;;    try 
     1162;;;;    err 
     1163;;;;    zip, uniq, reduce, sum, max, min, kv, pairs, type, pick 
     1164;;;;    Int, Num, Real, Str, Bit, Ref, Scalar, Array, Hash, Rule, Code 
    11591165;;;; 
    1160 ;;;;  Indentation recognizes sub traits (returns Type, is rw, etc.) 
     1166;;;;  Indentation: 
     1167;;;;    recognize sub traits (returns Type, is rw, etc.) 
     1168;;;;    recognize more special blocks: 
     1169;;;;      FIRST, ENTER, LEAVE, KEEP, UNDO, NEXT, LAST, PRE, POST, CATCH, CONTROL, 
     1170;;;;      given, when, default, gather 
     1171;;;; 
     1172;;;;  Recognize if/elsif/unless/while/until/given/when/for/loop-conditions without parens. 
     1173;;;;   (currently rather trivial heuristic) 
    11611174;;;; 
    11621175;;;;  New rx// quote operator for regular expressions,  
    1163 ;;;;  (todo: currently parenthesized modifiers don't work: nth(3) or perl5<i>) 
    11641176;;;; 
    11651177;;;;  m// and s/// similar to new rx// 
    11661178;;;; 
    1167 ;;;;  Recognize if/elsif/unless-conditions without parens. 
    1168 ;;;;   (currently rather trivial heuristic) 
     1179;;;;  `Pugs' style added. 
     1180;;;; 
     1181;;;;  Now only the @ and % sigils match arrays and hashes, 
     1182;;;;  not the bracket or brace after it.  
    11691183;;;; 
    11701184 
     
    23802394          ["CPerl" (cperl6-set-style "CPerl") t] 
    23812395          ["PerlStyle" (cperl6-set-style "PerlStyle") t] 
     2396          ["Pugs" (cperl6-set-style "Pugs") t] 
    23822397          ["GNU" (cperl6-set-style "GNU") t] 
    23832398          ["C++" (cperl6-set-style "C++") t] 
     
    36303645                           (looking-at 
    36313646                            "sub[ \t]+[a-zA-Z0-9_:]+[ \t\n\f]*\\(([^()]*)[ \t\n\f]*\\)?[#{]"))))))) 
    3632       (progn ; ss5 ; todo: why "No save-excursion!"?, see above 
     3647      (progn ; ss5 ; todo: why "No save-excursion!"? 
    36333648        (beginning-of-line) 
    3634         ;; if ... {...} ; "if/elsif/unless" without parens; just look at beginning of line 
    3635         (looking-at "\\s *}?\\s *\\(\\(els\\(e\\s +\\|\\)\\)?if\\|unless\\)\\>")) 
     3649        ;; "if/elsif/unless/while/until/given/when/for/loop" without parens; just look at beginning of line 
     3650        (looking-at "\\s *}?\\s *\\(\\(els\\(e\\s +\\|\\)\\)?if\\|un\\(less\\|til\\)\\|given\\|wh\\(ile\\|en\\)\\|for\\|loop\\)\\>")) 
    36363651      )) 
    36373652 
     
    44564471                ;; 1+6+2+1+1+2+1+1+1+1=17 extra () before this: 
    44574472                "\\|" 
    4458                 "\\<\\(\\(rx\\|[ms]\\)\\s *\\(:\\([igcpw]\\|ignorecase\\|global\\|continue\\|pos\\|once\\|words\\|bytes\\|codes\\|graphs\\|langs\\|\\|[0-9]+\\(st\\|nd\\|rd\\|th\\|x\\)\\|ov\\|overlap\\|ex\\|exhaustive\\|rw\\|perl5\\(<i>\\)?\\)\\s *\\)*\\)\\>:?"            ; ss5: rx 
     4473                "\\<\\(\\(rx\\|[ms]\\)\\s *\\(:\\([igcpw]\\|ignorecase\\|global\\|continue\\|pos\\|once\\|words\\|bytes\\|codes\\|graphs\\|langs\\|\\|[0-9]+\\(st\\|nd\\|rd\\|th\\|x\\)\\|ov\\|overlap\\|ex\\|exhaustive\\|rw\\|P5\\|perl5\\(<i>\\)?\\)\\s *\\)*\\)\\>:?"            ; ss5: rx 
    44594474                ;; 1+6+2+1+1+2+1+1+1+1+5=22 extra () before this:                   ; ss5 
    44604475 
     
    47404755                                                           '(?$ ?@ ?& ?%))) 
    47414756                                                (looking-at 
    4742                                                  "\\(while\\|if\\|unless\\|until\\|and\\|or\\|not\\|xor\\|split\\|grep\\|map\\|print\\)\\>"))))) 
     4757                                                 "\\(while\\|if\\|unless\\|when\\|until\\|and\\|or\\|not\\|xor\\|split\\|grep\\|map\\|print\\)\\>"))))) 
    47434758                                      (and (eq (preceding-char) ?.) 
    47444759                                           (eq (char-after (- (point) 2)) ?.)) 
     
    48654880                                 (or 
    48664881                                  ;;(string-match "^\\(m\\|qr\\|rx\\)$" argument)     ; ss5 
    4867                                   (string-match "^\\(\\(qr\\|rx\\|[ms]\\)\\s *\\(:\\([igcpw]\\|ignorecase\\|global\\|continue\\|pos\\|once\\|words\\|bytes\\|codes\\|graphs\\|langs\\|\\|[0-9]+\\(st\\|nd\\|rd\\|th\\|x\\)\\|ov\\|overlap\\|ex\\|exhaustive\\|rw\\|perl5\\(<i>\\)?\\)\\s *\\)*\\)$" argument)           ; ss5: rx 
     4882                                  (string-match "^\\(\\(qr\\|rx\\|[ms]\\)\\s *\\(:\\([igcpw]\\|ignorecase\\|global\\|continue\\|pos\\|once\\|words\\|bytes\\|codes\\|graphs\\|langs\\|\\|[0-9]+\\(st\\|nd\\|rd\\|th\\|x\\)\\|ov\\|overlap\\|ex\\|exhaustive\\|rw\\|P5\\|perl5\\(<i>\\)?\\)\\s *\\)*\\)$" argument)           ; ss5: rx 
    48684883                                  (and (eq 0 (length argument)) 
    48694884                                       (not (eq ?\< (char-after b))))))) 
     
    49324947                      (setq tmpend tb)))) 
    49334948               ((match-beginning 13)    ; sub with prototypes 
     4949                ;; ss5: todo: 1. rausnehmen; 2. durch $%@-highlighting ersetzen HIER WEITER 
    49344950                (setq b (match-beginning 0)) 
    49354951                (if (memq (char-after (1- b)) 
     
    49434959                    ;; Mark as string 
    49444960                    (cperl6-commentify (match-beginning 13) (match-end 13) t)) 
    4945                   (goto-char (match-end 0)))) 
     4961                  (goto-char (match-end 0))) 
     4962                ) 
    49464963               ;; 1+6+2+1+1+2=13 extra () before this: 
    49474964               ;;    "\\$\\(['{]\\)" 
     
    51405157                                 (or 
    51415158                                  ;;(string-match "^\\(m\\|qr\\|rx\\)$" argument)           ; ss5: rx 
    5142                                   (string-match "^\\(\\(rx\\|[ms]\\)\\s *\\(:\\([igcpw]\\|ignorecase\\|global\\|continue\\|pos\\|once\\|words\\|bytes\\|codes\\|graphs\\|langs\\|\\|[0-9]+\\(st\\|nd\\|rd\\|th\\|x\\)\\|ov\\|overlap\\|ex\\|exhaustive\\|rw\\|perl5\\(<i>\\)?\\)\\s *\\)*\\)$" argument)           ; ss5 
     5159                                  (string-match "^\\(\\(rx\\|[ms]\\)\\s *\\(:\\([igcpw]\\|ignorecase\\|global\\|continue\\|pos\\|once\\|words\\|bytes\\|codes\\|graphs\\|langs\\|\\|[0-9]+\\(st\\|nd\\|rd\\|th\\|x\\)\\|ov\\|overlap\\|ex\\|exhaustive\\|rw\\|P5\\|perl5\\(<i>\\)?\\)\\s *\\)*\\)$" argument)           ; ss5 
    51435160                                  (and (eq 0 (length argument)) 
    51445161                                       (not (eq ?\< (char-after b))))))) 
     
    52585275                   (save-excursion 
    52595276                    (forward-sexp -1) 
    5260                     (or (looking-at "\\(else\\|grep\\|map\\|BEGIN\\|END\\|CHECK\\|INIT\\)\\>") 
     5277                    (or (looking-at "\\(else\\|grep\\|map\\|given\\|when\\|default\\|loop\\|for\\|BEGIN\\|END\\|CHECK\\|INIT\\|FIRST\\|ENTER\\|LEAVE\\|KEEP\\|UNDO\\|NEXT\\|LAST\\|PRE\\|POST\\|CATCH\\|CONTROL\\)\\>") 
    52615278                        ;; sub f {} 
    52625279                        (progn 
     
    52695286                    (forward-sexp -2) 
    52705287                    ;; return Type {} / is rw {} / is cached {} / ... 
    5271                     (looking-at "\\(returns\\|of\\|is[ \t]\\(rw\\|cached\\|signature\\|parsed\\|inline\\|tighter\\|looser\\|equiv\\)\\|will[ \t]do\\)\\>")) 
     5288                    (looking-at "\\(returns\\|of\\|is[ \t]\\(rw\\|cached\\|signature\\|parsed\\|inline\\|tighter\\|looser\\|equiv\\|export\\)\\|will[ \t]do\\)\\>")) 
    52725289                   ) 
    52735290                (cperl6-after-expr-p lim)) 
    52745291              (save-excursion                                              ; ss5 
    52755292                (beginning-of-line) 
    5276                 ;; if ... {...} ; "if/elsif/unless" without parens; just look at beginning of line 
    5277                 (looking-at "\\s *}?\\s *\\(\\(els\\(e\\s +\\|\\)\\)?if\\|unless\\)\\>")) 
     5293                ;; "if/elsif/unless/while/until/given/when/for/loop" without parens; just look at beginning of line 
     5294                (looking-at "\\s *}?\\s *\\(\\(els\\(e\\s +\\|\\)\\)?if\\|un\\(less\\|til\\)\\|given\\|wh\\(ile\\|en\\)\\|loop\\|for\\)\\>")) 
    52785295              )) 
    52795296      (error nil)))) 
     
    60116028              (mapconcat 
    60126029               'identity 
    6013                '("if" "until" "while" "elsif" "else" "unless" "for" 
    6014                  "foreach" "continue" "exit" "die" "last" "goto" "has" "next" 
     6030               '("if" "until" "while" "elsif" "else" "unless" "for" "loop" 
     6031                 "foreach" "continue" "exit" "die" "last" "goto" "given" "when" "default" "has" "next" 
    60156032                 "redo" "return" "returns" "local" "exec" 
    60166033                 "\\(multi[ \t]+\\)?sub\\(method\\)?" "do" "dump" "use" 
    60176034                 "require" "package" "class" "eval" "try" "my" 
    6018                  "BEGIN" "END" "CHECK" "INIT") 
     6035                 "BEGIN" "END" "CHECK" "INIT" "FIRST" "ENTER" "LEAVE" "KEEP" 
     6036                 "UNDO" "NEXT" "LAST" "PRE" "POST" "CATCH" "CONTROL") 
    60196037               "\\|")                   ; Flow control 
    60206038              "\\)\\>") 2)              ; was "\\)[ \n\t;():,\|&]" 
     
    60246042             (concat 
    60256043              "\\(^\\|[^$@%&\\]\\)\\<\\(" 
    6026               ;; "CORE" "__FILE__" "__LINE__" "abs" "accept" "alarm" 
     6044              ;; "CORE" "__FILE__" "__LINE__" "abs" "accept" "alarm" "as" 
    60276045              ;; "and" "atan2" "bind" "binmode" "bless" "caller" 
    60286046              ;; "chdir" "chmod" "chown" "chr" "chroot" "close" 
     
    60436061              ;; "link" "listen" "localtime" "lock" "log" "lstat" "lt" 
    60446062              ;; "mkdir" "msgctl" "msgget" "msgrcv" "msgsnd" "ne" 
    6045               ;; "not" "oct" "open" "opendir" "or" "ord" "pack" "pipe" 
     6063              ;; "not" "oct" "open" "opendir" "or" "ord" "pack" "perl" "pipe" 
    60466064              ;; "quotemeta" "rand" "read" "readdir" "readline" 
    60476065              ;; "readlink" "readpipe" "recv" "ref" "rename" "require" 
     
    60576075              ;; "umask" "unlink" "unpack" "utime" "values" "vec" 
    60586076              ;; "wait" "waitpid" "wantarray" "warn" "write" "x" "xor" 
    6059               "a\\(bs\\|ccept\\|tan2\\|larm\\|nd\\)\\|" 
     6077              "a\\(bs\\|ccept\\|tan2\\|larm\\|nd\\|s\\)\\|" 
    60606078              "b\\(in\\(d\\|mode\\)\\|less\\)\\|" 
    60616079              "c\\(h\\(r\\(\\|oot\\)\\|dir\\|mod\\|own\\)\\|aller\\|rypt\\|" 
    60626080              "lose\\(\\|dir\\)\\|mp\\|o\\(s\\|n\\(tinue\\|nect\\)\\)\\)\\|" 
    60636081              "CORE\\|d\\(ie\\|bm\\(close\\|open\\)\\|ump\\)\\|" 
    6064               "e\\(x\\(p\\|it\\|ec\\)\\|q\\|nd\\(p\\(rotoent\\|went\\)\\|" 
     6082              "e\\(rr\\|x\\(p\\|it\\|ec\\)\\|q\\|nd\\(p\\(rotoent\\|went\\)\\|" 
    60656083              "hostent\\|servent\\|netent\\|grent\\)\\|of\\)\\|" 
    60666084              "f\\(ileno\\|cntl\\|lock\\|or\\(k\\|mline\\)\\)\\|" 
     
    60756093              "\\(\\|ngth\\)\\|o\\(c\\(altime\\|k\\)\\|g\\)\\)\\|m\\(sg\\(rcv\\|snd\\|" 
    60766094              "ctl\\|get\\)\\|kdir\\)\\|n\\(e\\|ot\\)\\|o\\(pen\\(\\|dir\\)\\|" 
    6077               "r\\(\\|d\\)\\|ct\\)\\|p\\(ipe\\|ack\\)\\|quotemeta\\|" 
     6095              "r\\(\\|d\\)\\|ct\\)\\|p\\(ipe\\|ack\\|erl\\)\\|quotemeta\\|" 
    60786096              "r\\(index\\|and\\|mdir\\|e\\(quire\\|ad\\(pipe\\|\\|lin" 
    60796097              "\\(k\\|e\\)\\|dir\\)\\|set\\|cv\\|verse\\|f\\|winddir\\|name" 
     
    60896107              "x\\(\\|or\\)\\|__\\(FILE__\\|LINE__\\|PACKAGE__\\)" 
    60906108              "\\)\\>") 2 'font-lock-type-face) 
     6109            (list 
     6110             (concat 
     6111              "\\(^\\|[^$@%&\\]\\)\\<\\(" 
     6112              ;; the builtin types 
     6113              ;; Int, Num, Real, Str, Bit, Ref, Scalar, Array, Hash, Rule, Code 
     6114              "Int\\|Num\\|Real\\|Str\\|Bit\\|Ref\\|Scalar\\|Array\\|Hash\\|Rule\\|Code" 
     6115              "\\)\\>") 2 'font-lock-type-face) 
    60916116            ;; In what follows we use `other' style 
    60926117            ;; for nonoverwritable builtins 
     
    60986123              ;; "chop" "class" "defined" "delete" "do" "each" "else" "elsif" 
    60996124              ;; "eval" "exists" "for" "foreach" "format" "gather" "goto" 
    6100               ;; "grep" "has" "if" "keys" "last" "local" "map" "my" "next" 
    6101               ;; "no" "package" "pop" "pos" "print" "printf" "push" 
    6102               ;; "q" "qq" "qw" "qx" "redo" "return" "say" "scalar" "shift" 
    6103               ;; "sort" "splice" "split" "study" "sub" "take" "tie" "tr" 
    6104               ;; "undef" "unless" "unshift" "untie" "until" "use" 
    6105               ;; "while" "y" 
     6125              ;; "grep" "has" "if" "keys" "kv" "last" "local" "map" "my" "next" 
     6126              ;; "no" "pairs" "package" "pop" "pos" "pick" "print" "printf" "push" 
     6127              ;; "q" "qq" "qw" "qx" "redo" "reduce" "return" "say" "scalar" "shift" 
     6128              ;; "sort" "splice" "split" "study" "sub" "sum" "take" "tie" "tr" 
     6129              ;; "undef" "uniq" "unless" "unshift" "untie" "until" "use" 
     6130              ;; "while" "y" "zip" 
    61066131              "AUTOLOAD\\|BEGIN\\|CHECK\\|c\\(lass\\|ho\\(p\\|mp\\)\\)\\|d\\(e\\(fined\\|lete\\)\\|" 
    61076132              "o\\)\\|DESTROY\\|e\\(ach\\|val\\|xists\\|ls\\(e\\|if\\)\\)\\|" 
    6108               "END\\|for\\(\\|each\\|mat\\)\\|g\\(ather\\|rep\\|oto\\)\\|has\\|INIT\\|if\\|keys\\|" 
    6109               "l\\(ast\\|ocal\\)\\|m\\(ap\\|y\\)\\|n\\(ext\\|o\\)\\|our\\|" 
    6110               "p\\(ackage\\|rint\\(\\|f\\)\\|ush\\|o\\(p\\|s\\)\\)\\|" 
    6111               "q\\(\\|q\\|w\\|x\\|r\\)\\|re\\(turn\\|do\\)\\|s\\(ay\\|pli\\(ce\\|t\\)\\|" 
    6112               "calar\\|tudy\\|ub\\|hift\\|ort\\)\\|t\\(ake\\|r\\|ie\\|ry\\)\\|" 
    6113               "u\\(se\\|n\\(shift\\|ti\\(l\\|e\\)\\|def\\|less\\)\\)\\|" 
    6114               "while\\|y\\|__\\(END\\|DATA\\)__" ;__DATA__ added manually 
     6133              "END\\|for\\(\\|each\\|mat\\)\\|g\\(ather\\|rep\\|oto\\)\\|has\\|INIT\\|if\\|k\\(eys\\|v\\)\\|" 
     6134              "l\\(ast\\|ocal\\)\\|m\\(a\\(p\\|x\\)\\|in\\|y\\)\\|n\\(ext\\|o\\)\\|our\\|" 
     6135              "p\\(a\\(ckage\\|irs\\)\\|ick\\|rint\\(\\|f\\)\\|ush\\|o\\(p\\|s\\)\\)\\|" 
     6136              "q\\(\\|q\\|w\\|x\\|r\\)\\|re\\(turn\\|d\\(o\\|uce\\)\\)\\|s\\(ay\\|pli\\(ce\\|t\\)\\|" 
     6137              "calar\\|tudy\\|u\\(b\\|m\\)\\|hift\\|ort\\)\\|t\\(ake\\|r\\|ie\\|ry\\|ype\\)\\|" 
     6138              "u\\(se\\|n\\(iq\\|shift\\|ti\\(l\\|e\\)\\|def\\|less\\)\\)\\|" 
     6139              "while\\|y\\|zip\\|__\\(END\\|DATA\\)__" ;__DATA__ added manually 
    61156140              "\\|[sm]"                 ; Added manually 
    61166141              "\\)\\>") 2 'cperl6-nonoverridable-face) 
     
    61786203                     cperl6-array-face) 
    61796204                   t)                   ; arrays and hashes 
    6180                   ("\\(\\([$@]+\\)[a-zA-Z_:][a-zA-Z0-9_:]*\\)[ \t]*\\([[{]\\)" 
    6181                    1 
    6182                    (if (= (- (match-end 2) (match-beginning 2)) 1) 
    6183                        (if (eq (char-after (match-beginning 3)) ?{) 
    6184                            cperl6-hash-face 
    6185                          cperl6-array-face) ; arrays and hashes 
    6186                      font-lock-variable-name-face) ; Just to put something 
    6187                    t) 
     6205                  ;; ss5: no more whitespace before subscripts allowed in Perl6 
     6206;                 ("\\(\\([$@]+\\)[a-zA-Z_:][a-zA-Z0-9_:]*\\)[ \t]*\\([[{]\\)" 
     6207;                  1 
     6208;                  (if (= (- (match-end 2) (match-beginning 2)) 1) 
     6209;                      (if (eq (char-after (match-beginning 3)) ?{) 
     6210;                          cperl6-hash-face 
     6211;                        cperl6-array-face) ; arrays and hashes 
     6212;                    font-lock-variable-name-face) ; Just to put something 
     6213;                  t) 
    61886214                  ;;("\\([smy]\\|tr\\)\\([^a-z_A-Z0-9]\\)\\(\\([^\n\\]*||\\)\\)\\2") 
    61896215                       ;;; Too much noise from \s* @s[ and friends 
     
    65396565     (cperl6-brace-offset               .  0) 
    65406566     (cperl6-continued-brace-offset     .  0) 
     6567     (cperl6-label-offset               . -4) 
     6568     (cperl6-extra-newline-before-brace .  nil) 
     6569     (cperl6-merge-trailing-else               .  t) 
     6570     (cperl6-continued-statement-offset .  4)) 
     6571    ("Pugs" 
     6572     (indent-tabs-mode                  .  nil) 
     6573     (cperl6-indent-level               .  4) 
     6574     (cperl6-brace-offset               .  0) 
     6575     (cperl6-continued-brace-offset     . -4) 
    65416576     (cperl6-label-offset               . -4) 
    65426577     (cperl6-extra-newline-before-brace .  nil) 
     
    86508685 
    86518686;;(defvar cperl6-version 
    8652 ;;  (let ((v  "$Revision: 1.6 $")) 
     8687;;  (let ((v  "$Revision: 1.8 $")) 
    86538688;;    (string-match ":\\s *\\([0-9.]+\\)" v) 
    86548689;;    (substring v (match-beginning 1) (match-end 1)))