Refactor solidity highlights.scm further

- Instead of @keyword, use @conditional, @exception, @return, @function
  as appropriate
- Standardize to using @field (instead of @property)for struct members
This commit is contained in:
YongJieYongJie 2022-03-12 01:11:17 +08:00 committed by Stephan Seitz
parent 8f3991065d
commit fc0b881f93
2 changed files with 36 additions and 21 deletions

View file

@ -32,7 +32,7 @@
(primitive_type) @type
(contract_declaration name: (identifier) @type)
(struct_declaration struct_name: (identifier) @type)
; (struct_member name: (identifier) @field) ;; Technically correct, but makes highlight worst
(struct_member name: (identifier) @field)
(enum_declaration enum_type_name: (identifier) @type)
; Color payable in payable address conversion as type and not as keyword
(payable_conversion_expression "payable" @type)
@ -63,14 +63,15 @@
; Handles expressions like g();
(call_expression . (identifier) @function)
(function_definition
function_name: (identifier) @function)
; Handles the field in struct literals like MyStruct({MyField: MyVar * 2})
(call_expression (identifier) @field . ":")
; Function parameters
(event_paramater name: (identifier) @parameter)
(function_definition
function_name: (identifier) @parameter)
(parameter name: (identifier) @parameter)
; Yul functions
(yul_function_call function: (yul_identifier) @function)
@ -80,10 +81,10 @@
(meta_type_expression "type" @keyword)
(member_expression (property_identifier) @property)
(property_identifier) @property
(struct_expression ((identifier) @property . ":"))
(enum_value) @property
(member_expression (property_identifier) @field)
(property_identifier) @field
(struct_expression ((identifier) @field . ":"))
(enum_value) @constant
; Keywords
@ -98,16 +99,6 @@
"event"
"using"
"assembly"
"switch"
"case"
"default"
"break"
"continue"
"if"
"else"
"try"
"catch"
"return"
"emit"
"public"
"internal"
@ -117,11 +108,9 @@
"view"
"payable"
"modifier"
"returns"
"memory"
"storage"
"calldata"
"function"
"var"
(constant)
(virtual)
@ -135,6 +124,28 @@
"do"
] @repeat
[
"break"
"continue"
"if"
"else"
"switch"
"case"
"default"
] @conditional
[
"try"
"catch"
] @exception
[
"return"
"returns"
] @keyword.return
"function" @keyword.function
"import" @include
(import_directive "as" @include)
(import_directive "from" @include)

View file

@ -21,7 +21,7 @@ contract Ballot {
// ^ type
uint weight; // weight is accumulated by delegation
// ^ type
// ^ variable
// ^ field
bool voted; // if true, that person already voted
address delegate; // person delegated to
uint vote; // index of the voted proposal
@ -45,6 +45,9 @@ contract Ballot {
// A dynamically-sized array of `Proposal` structs.
Proposal[] public proposals;
enum ActionChoices { GoLeft, GoRight, GoStraight, SitStill }
// ^ constant
/// Create a new ballot to choose one of `proposalNames`.
constructor(bytes32[] memory proposalNames) {
// ^ constructor
@ -69,8 +72,9 @@ contract Ballot {
// Give `voter` the right to vote on this ballot.
// May only be called by `chairperson`.
function giveRightToVote(address voter) external {
// ^ keyword
// ^ keyword.function
// ^ function
// ^ parameter
// If the first argument of `require` evaluates
// to `false`, execution terminates and all
// changes to the state and to Ether balances