Custom Match
Implementation¶
Tip
You may check how built-in Match
es are implemented here.
You may create your own custom Match
implementation by following steps.
- Run
AutoSetSyntax: Create New Match
from the command palette1. -
It will create a template like
Example
from __future__ import annotations from AutoSetSyntax.plugin import AbstractMatch, MatchableRule, ViewSnapshot class MyOwnMatch(AbstractMatch): """Your custom `Match` must inherit `AbstractMatch` and implement the `test` method.""" def is_droppable(self, rules: tuple[MatchableRule, ...]) -> bool: # Optionally, you can implement `is_droppable` to indicate that this object # can be dropped under certain circumstances by the optimizer. return False def test(self, view_snapshot: ViewSnapshot, rules: tuple[MatchableRule, ...]) -> bool: # Your job is to implement this function, at least. # This function tests `rules` (mix of `ConstraintRule`s and `MatchRule`s). return False
-
Decide the match name of your
Match
.Say, if your class name is
MyOwnMatch
, the match name is decided by- Remove
Match
suffix from the class name. (MyOwnMatch
»MyOwn
) - Convert it into snake case. (
MyOwn
»my_own
)
That is, you can use it via
"match": "my_own"
in a match rule. - Remove
-
At least, implement the
test
method. -
Save your implementation in
Packages/AutoSetSyntax-Custom/matches/
. Conventionally, the file name used is the match name,my_own.py
. -
Restart ST and check whether your implementation is loaded via Debug Information.
-
Command palette: Ctrl+P for Windows/Linux. Cmd+P for macOS. ↩