vdoc: highlight `..`, `...` as punctuation & postfix ops as operators (#13924)

pull/13930/head
Nick Treleaven 2022-04-04 07:21:54 +01:00 committed by GitHub
parent 1211b2e941
commit 91b40304b7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 11 additions and 4 deletions

View File

@ -348,14 +348,15 @@ fn html_highlight(code string, tb &ast.Table) string {
.key_true, .key_false { .key_true, .key_false {
tok_typ = .boolean tok_typ = .boolean
} }
.lpar, .lcbr, .rpar, .rcbr, .lsbr, .rsbr, .semicolon, .colon, .comma, .dot { .lpar, .lcbr, .rpar, .rcbr, .lsbr, .rsbr, .semicolon, .colon, .comma, .dot,
.dotdot, .ellipsis {
tok_typ = .punctuation tok_typ = .punctuation
} }
else { else {
if token.is_key(tok.lit) || token.is_decl(tok.kind) { if token.is_key(tok.lit) || token.is_decl(tok.kind) {
tok_typ = .keyword tok_typ = .keyword
} else if tok.kind == .decl_assign || tok.kind.is_assign() || tok.is_unary() } else if tok.kind == .decl_assign || tok.kind.is_assign() || tok.is_unary()
|| tok.kind.is_relational() || tok.kind.is_infix() { || tok.kind.is_relational() || tok.kind.is_infix() || tok.kind.is_postfix() {
tok_typ = .operator tok_typ = .operator
} }
} }

View File

@ -241,7 +241,8 @@ fn color_highlight(code string, tb &ast.Table) string {
.key_true, .key_false { .key_true, .key_false {
tok_typ = .boolean tok_typ = .boolean
} }
.lpar, .lcbr, .rpar, .rcbr, .lsbr, .rsbr, .semicolon, .colon, .comma, .dot { .lpar, .lcbr, .rpar, .rcbr, .lsbr, .rsbr, .semicolon, .colon, .comma, .dot,
.dotdot, .ellipsis {
tok_typ = .punctuation tok_typ = .punctuation
} }
.key_none { .key_none {
@ -251,7 +252,7 @@ fn color_highlight(code string, tb &ast.Table) string {
if token.is_key(tok.lit) || token.is_decl(tok.kind) { if token.is_key(tok.lit) || token.is_decl(tok.kind) {
tok_typ = .keyword tok_typ = .keyword
} else if tok.kind == .decl_assign || tok.kind.is_assign() || tok.is_unary() } else if tok.kind == .decl_assign || tok.kind.is_assign() || tok.is_unary()
|| tok.kind.is_relational() || tok.kind.is_infix() { || tok.kind.is_relational() || tok.kind.is_infix() || tok.kind.is_postfix() {
tok_typ = .operator tok_typ = .operator
} }
} }

View File

@ -494,6 +494,11 @@ pub fn (kind Kind) is_infix() bool {
.right_shift, .unsigned_right_shift, .arrow] .right_shift, .unsigned_right_shift, .arrow]
} }
[inline]
pub fn (kind Kind) is_postfix() bool {
return kind in [.inc, .dec, .question]
}
pub fn kind_to_string(k Kind) string { pub fn kind_to_string(k Kind) string {
return match k { return match k {
.unknown { 'unknown' } .unknown { 'unknown' }