VSCode拡張機能開発時のSyntaxの優先度問題
code:たとえばこんな定義があったとして.json
"repository": {
"indent1": {
"patterns": [{
"name": "indent.1.scb",
"match": "^( )"
}]
},
"indent2": {
"patterns": [{
"name": "indent.2.scb",
"match": "^( )"
}]
},
...
このとき、
code:これはどうハイライトされるか.scb
level0
level1
level2
こうなるんですわ
https://gyazo.com/1ee3eefebfdbf709fc50ae793eaa3a2b
まずindent1の方がマッチする
で、マッチした部分は除外される
のでindent2(2と書かれた行)はヒットしなくなる
謎すぎる
これどういう仕組みなんだろ?sta.icon*2
なぜindent1からマッチするかもよーわからん
最小マッチ?みたいな感じなの?
ちなみに秀丸エディタは全く問題ない
https://gyazo.com/813c9949b7066f709500199e8a442eed
これだけでちゃんとindent1-8まで全部正しく色がつく
これが普通じゃねーの?sta.icon*2
-.icon
で、どうするねん?
囲む系はbegin endも使えるみたいだな
https://gyazo.com/770f14e30021a4b441d883e7b9a35383
んー、マッチのアルゴリズム?を変える的な話はないなぁ
仕様です?
This is typically split into a patterns section that lists the top-level elements of the program and a repository that defines each of the elements
DeepL.iconこれは通常、プログラムのトップレベル要素をリストアップするパターンセクションと、各要素を定義するリポジトリに分かれています。
うん、その要素を正規表現で拾っていくわけよね
indent1から拾っちゃうのやめてほしいんすけどsta.icon
どうすればいいんだこれー