サクラエディタでずれた文字列判定をリセットしたい
◆ 片方だけの 「"」 などで文字列扱いされてずっと文字列の色になってしまうことがある
◆ 「/"/g」 こういう正規表現とか
◆ 2 行目以降に色を引き継がない設定があった
◆ 「/"/g」 こういう正規表現とか
◆ 2 行目以降に色を引き継がない設定があった
最近では使ってる人が減りつつあるようですが私はいまだにメインはサクラエディタです
atom や brackets とかも使いますがなんだかんだ軽くて便利機能が一通り揃っていて IDE 風な余計なお世話なことをしないので捨てられないんですよね
個人的に使いづらいと感じる数少ない部分なのですが 新しい構文の柔軟な対応ができていません
「``」 などは正規表現パターンの追加でできたのですが 「""」 の文字列判定は変えられなそうです
どういうことが起こるか ですが
例えばこれなど 「//」 や 「``」 など 文字列認識されない記号中で 「"」 や 「'」 があるとそこから文字列が始まったと解釈されてそれ以降がずっと変な色になります

これの対処のために行末コメントで文字列解除するような事する場合もあったのですが プログラムに必要ないもので エディタや外部ツールの都合のためだけのコメントはできれば書きたくないです
将来別のツールにうつったときやそのツールを使ってない人が見たときは邪魔でしかないですからね
特に JavaScript の 「//」 中の文字列は JavaScript 書き始めた頃からずっと困ってたものです
しかし いい方法もなくて長年放置してました
ですが 何処かに設定ないかと探してるといいのが見つかりました

タイプ別設定の「文字列エスケープ」というところの「行内のみ」チェックボックスにチェックします
これで次の行ではリセットされて↓のようになります

その行がおかしいのはそのままですが 1 行程度なら気にならないので おっけいです
サクラエディタは一番長くエディタですが設定がすごく多いので未だに全部を把握できてません
他にも便利になる設定が色々隠れてるかもしれませんね
atom や brackets とかも使いますがなんだかんだ軽くて便利機能が一通り揃っていて IDE 風な余計なお世話なことをしないので捨てられないんですよね
個人的に使いづらいと感じる数少ない部分なのですが 新しい構文の柔軟な対応ができていません
「``」 などは正規表現パターンの追加でできたのですが 「""」 の文字列判定は変えられなそうです
どういうことが起こるか ですが
let val = /"/
例えばこれなど 「//」 や 「``」 など 文字列認識されない記号中で 「"」 や 「'」 があるとそこから文字列が始まったと解釈されてそれ以降がずっと変な色になります

これの対処のために行末コメントで文字列解除するような事する場合もあったのですが プログラムに必要ないもので エディタや外部ツールの都合のためだけのコメントはできれば書きたくないです
将来別のツールにうつったときやそのツールを使ってない人が見たときは邪魔でしかないですからね
特に JavaScript の 「//」 中の文字列は JavaScript 書き始めた頃からずっと困ってたものです
しかし いい方法もなくて長年放置してました
ですが 何処かに設定ないかと探してるといいのが見つかりました

タイプ別設定の「文字列エスケープ」というところの「行内のみ」チェックボックスにチェックします
これで次の行ではリセットされて↓のようになります

その行がおかしいのはそのままですが 1 行程度なら気にならないので おっけいです
サクラエディタは一番長くエディタですが設定がすごく多いので未だに全部を把握できてません
他にも便利になる設定が色々隠れてるかもしれませんね
COMMENT
コメント一覧 (2)
-
- 2018/09/11 10:05
-
サクラエディタの色分け表示は正規表現キーワード使うと結構拡張できますね。
正規表現キーワードは行ごとの処理で複数行マッチが取れないため「``」は対応不能ですが、
正規表現リテラルに関してはそれなりに対応可能です。
タイプ別設定の色指定からシングルクォーテーション文字列とダブルクォーテーション文字列の色分けチェックをOFF
正規表現キーワードや強調キーワードの空いているところにそれぞれの色設定と正規表現の色設定を追加
正規表現キーワードを有効にして用意した色設定に対し次の正規表現を設定
・シングルクォーテーション文字列: /"(?>(?>[^"\\]+|\\.)*)"/k
・ダブルクォーテーション文字列: /'(?>(?>[^'\\]+|\\.)*)'/k
・正規表現リテラル: /(?<=^|^\s|[\[(,=:]|[\[(,=:\s]\s)\/(([^\/|(){}\[\]*+?\\]|\\.|(?>\[([^\[\]\\]|\\.)+?\])|\((\?.)?\g<1>*\))([+*?]\??|\{\d+\})?|[|])+\/[gikm]*/k
鬼車の部分式呼出しで()の対応関係をネストできるので不正な正規表現をある程度弾いてマッチ出来ます。
戻り読みで量指定子が使えないため、開始部分である/の前に複数の空白が有ると除算と正規表現を区別できない等の問題もありますが、概ね問題なくマッチできるかと思います。
// 完璧には出来ないから見直すたびに少しづつ手直ししてしまう…orz
-
- 2018/09/13 00:28
-
うわぁすごい正規表現ですね……
適当にいろいろ試してみましたが全然問題ありませんでした
ありがとうございます