【VSCode】作成 6【開発記】

今回の概略

スニペットの prefix に記号は やっぱ無理ぽ😞
エスケープじゃない引用符で開始終了は (?>!\\)'

#VSCode #拡張機能
#TextMate #正規表現 #後読み #戻り読み

【AiScript/原典】
aiscript/src/parser/
https://github.com/syuilo/aiscript/tree/master/src/parser

【VSCode/拡張/本家】
Your First Extension
https://code.visualstudio.com/api/get-started/your-first-extension

【TextMate/本家】
Language Grammars
https://macromates.com/manual/ja/language_grammars

【VSCode/拡張/正規表現での注意】
VSCodeのシンタックスハイライトの作り方
https://techblog.kayac.com/vscode-extension-syntax-highlight

【VSCode/拡張/txLaungage/name 付けるのに欲しい情報】
TextMate における文字色一覧
https://qiita.com/GET/items/a077f059da5e1a675107

----備忘録
スニペットの記号登録、エスケープで再び❎
文字列中のカスタム絵文字
文字列中の MFM


前回の粗筋

名前の不一致で動かない、あるある😞



スニペット

備忘録処理をするぽ🤤

こちら、前回文字列にしたら動いてそのままの状態のスニペット😑
軽く調べても prefix に使える文字について語っている記事はほぼほぼ見当たらない😭
公式ですら語っていない…(見つからない

で、これ。前回試してたハイライトでエスケープの仕方が少し違うので調べていると body に使う $ は特殊なエスケープが必要だと出てくるのよね🤔
もしかしてアスタリスクもそうなの?的な話🤤

まずはベタ打ち😑
勿論出ない😞

次は \ が1つのエスケープ😑
本来文字列中の二重引用符のエスケープ方法なんだけど、エラーを無視して試行🤪
勿論出ない😞

そして今回の本命🙄
まぁ、勿論出ない😞
多分記憶に薄いだけで前回試したと思う🤔

そして次なる試験がこちら😑
「もしやスラッシュは危ない記号なのでは?」編🤪
見ての通り \ ひとつでもエスケープできているので怪しさまんてん🙄
まぁこれもダメなんだけど😞

最後まで足掻く🙄

結論
prefix にスラッシュやアスタリスクは無理😞覆らなかった


文字列

まぁ、気は済んだかな😑
文字列色分けを開始するぽ🤤

この記述、エスケープを無視してそこで色分けが止まると予想されるんだけど…😑

正解🤤
ええと JS だと `(?!\)'` だと思うけど鬼車だと…?🤔

20 正規表現
20.3 シンタックス
https://macromates.com/manual/ja/regular_expressions#syntax_oniguruma

7. 拡張式集合
(?=式) 先読み
(?!式) 否定先読み

同じっぽい🤤

note圧縮jpgだと判別困難だが2つめの \ が白い

😞
実は先読み系、まだあんまり理解できてないのよね🙄
`(?!\)` という表記は「 \ が続かない」だから先にあると使い方が違うって事なのかな?😑

正規表現:文字列を「含まない」否定の表現まとめ
特定のパターンで開始しない文字列
https://www-creators.com/archives/1827#a-2

// PATTERN で開始しない文字列の表現 
^(?!PATTERN).*$

そう間違った解釈でもなかったっぽい😑

正規表現の先読み・後読み
https://zenn.dev/usamik26/articles/regex-lookahead

これや他の記事を読むとどうやら後ろに来る物を取得captureせずに検査するのが先読みで手前に有る物を検査するのには後読みを使う…という認識っぽい😑
駄目じゃん…前者の記事…😞
でも後者も `(?!2022)\d{4}` という例を出してるから検知される筈なんだけど…?🙄
読み込んでいるとやっぱり手前に取り込まないで検査する場合は後読みで書かれてる😞
こういう紛らわしい記事は辞めてほしい🙄

実例で学ぶ正規表現の「否定先読み」「肯定先読み」「否定後読み」「肯定後読み」
https://qiita.com/shotets/items/98f3828b6e5f08d42498

この記事はもうバスっと「直前」「直後」って書いて分類してくれてる🤔
そうそう、これよこういうのよ欲しかったのは🤤

悪化すた😞
まぁ変な拘りとか無いし TypeScript 辺りの実装見てみようね🤤

本家 TypeScript.tmLanguage.json

………🤔❓❓❓
名前付け見る限りだと不本意な改行が有った場合は文字列としての色分けを打ち切ってる…のかな?🙄
あ、でもこれ、行末表記、 `\n` だと思うけど `\\\\\\n` になってるね🤔
もしかしてエスケープとしての \ と記号として表示するための \ で `\\\\` ?🙄

やった勝った!🤤
一先ず文字列とテンプレートリテラルは適用しとこうかな🤔


次回は

やっと予約語とかのキーワードを指定できそう🤤

この記事が気に入ったらサポートをしてみませんか?