[質問] 強調表示の優先順位 他

  1. メニューバーの表示 > 編集モード > 編集モードの設定 > 編集モードを選択してプロパティ で設定できる文字列の強調表示について確認させていただきます。

    [強調文字列]欄に登録してある文字列どうしは、並び順に関係なく、処理が重くならないように内部的に索引付けや並べ替えを行っている(https://www.haijin-boys.com/discussions/3655#discussion-3791)とのことですが、コメントなどの設定との関係を調べてみました。

    結果、下記のようでした。
    コメント > 引用符に囲まれた文字列 > 強調文字列 > スクリプト > タグ
    この認識でよろしいでしょうか? (特に意識されていないようであればそれで構いません。)

    また、試しているときに思ったようになっていない箇所がありましたので、質問させていただきます。
    実際に使う上ではありえない設定や本文を含んでいるかもしれませんが、そういうものは「仕様」ということで構いません。

    ●設定
    編集モード:HTML
    デフォルトの設定からの変更点
    行コメント://
    スクリプト:「HTML埋め込み」にして、開始:%% 終了:&&
          スクリプトの使い方を分かっていないので、この設定自体が不適切かもしれません。
    強調文字列として、gray を追加して、それのフラグ(オプション)はチェックを全てはずす。

    ●本文
    A. <font color="gray" color=gray>gray</font> gray abcdefg
    B. // <font color="gray" color=gray>gray</font> gray abcdefg
    C. // <!-- <font color="gray" color=gray>gray</font> gray abcdefg -->
    D. <!-- <font color="gray" color=gray>gray</font> gray abcdefg -->
    E. <!-- // <font color="gray" color=gray>gray</font> gray abcdefg -->

    F. gray "gray" <gray> <"gray"> %%gray&& %%"gray"&& gray
    G. // gray "gray" <gray> <"gray"> %%gray&& %%"gray"&& gray
    H. <!-- gray "gray" <gray> <"gray"> %%gray&& %%"gray"&& gray -->

    I. %% <font color="gray" color=gray>gray</font> gray abcdefg &&

    J. "<font color="gray" color=gray>gray</font> gray abcdefg"
    K. <"<font color="gray" color=gray>gray</font> gray abcdefg">

    L. <//gray abcdefg> abcdefg
    M. %%//gray abcdefg&& abcdefg

    ●質問事項
    1. コメント内でなく、引用符に囲まれていない gray について、[タグの内側のみ]にチェックをしていないのに強調表示されないものがある
    実際に使う上では、タグの外側にある文字列を強調表示することは無意味かな?
    2. F. で、タグ(< ~ >)の外側にある引用符に囲まれた文字列("gray")が強調表示されない
    これはなんとなく仕様っぽいですね
    3. I. で、強調文字列として設定されている文字列で、強調表示されるもの(gray)とされないもの(font color)がある
    通常こんなことはしないだろうから、これは仕様ってことかな?
    4. L. で、タグ(< ~ >)の内側にある行コメント(//)が行コメントにならない
    通常こんなことはしないだろうから、これも仕様ってことかな?
    5. M. で、スクリプト(%% ~ &&)の内側にある行コメント(//)がスクリプトの終了(&&)で解除される
    通常こんなことはしないだろうから、これも仕様ってことかな?

    上記 1. はちょっとだけ気になりますが、それ以外は特に問題ではありません。
    お忙しいであろうところ、つまらないことで失礼しました。

     |  774  |  返信
  2. こんばんは、書き込みありがとうございます。

    > メニューバーの表示 > 編集モード > 編集モードの設定 > 編集モードを選択してプロパティ で設定できる文字列の強調表示について確認させていただきます。
    先輩!長いッス!

    > コメント > 引用符に囲まれた文字列 > 強調文字列 > スクリプト > タグこの認識でよろしいでしょうか?
    特にそういった基準があるわけではないですが、あえて順位付けするならそれで合っていると思います。プログラミング言語のソースコードでも同様、コメント中は [引用符に囲まれた文字列] や [強調文字列] はコメントの色になりますからね。

    > 1. コメント内でなく、引用符に囲まれていない gray について、[タグの内側のみ]にチェックをしていないのに強調表示されないものがある
    私もずいぶん昔にこのロジックを作ったもので記憶が定かではない部分はありますから、間違っていたらスミマセン。と初めに謝罪しておきます。

    「HTML 埋め込み」の場合は強調表示されるのは HTML 構文の部分とスクリプトの部分 (今回の例でいうと、%% と && で囲まれている部分) だけで、それ以外の部分は色分けされません。

    恐らく、タグの外側で強調表示されない単語は、スクリプトの中にない (今回の例でいうと、%% と && で囲まれていないもの) だと思います。

    > 2. F. で、タグ(< ~ >)の外側にある引用符に囲まれた文字列("gray")が強調表示されない
    > これはなんとなく仕様っぽいですね
    はい、仕様ですね。一般的に引用符で囲まれた文字列の中ではキーワードは強調されないです。

    > 3. I. で、強調文字列として設定されている文字列で、強調表示されるもの(gray)とされないもの(font color)がある
    これは、そもそも「HTML埋め込み」の記述方法が間違っていますが、仕様的には合ってます。

    タグ内の gray が強調されていますし、スクリプト内 (%% と && に囲まれた領域) の gray も強調されているはずです。

    引用符に囲まれた文字列の gray は強調されませんが、これは上で述べました通りそういう仕様です。

    > 4. L. で、タグ(< ~ >)の内側にある行コメント(//)が行コメントにならない
    > 通常こんなことはしないだろうから、これも仕様ってことかな?
    そうですね、HTML 埋め込みというのはそういう仕様の言語が多いと思います。基本的に言語独自のコメント構文 (// とか /* とか) をタグの中に書いても反映されないはずです。

    > 5. M. で、スクリプト(%% ~ &&)の内側にある行コメント(//)がスクリプトの終了(&&)で解除される

    はい、行コメントなどはスクリプト内でのみ有効です。「HTML埋め込み」の場合、タグの内部またはスクリプトの内部以外は色分けされません。

    こんな感じの仕様ですが、「HTML埋め込み」の用途としましては、PHP や JSP、ASP や ColdFusion など HTML 構文中に特定の言語を埋め込んで使用するサーバサイドアプリケーション向けの構文解析となっております。

     |  Kuro  |  返信
  3. ご回答、ありがとうございます。
    長文、失礼しました。

    [スクリプト]の[特別な構文]欄を間違って使っていました。
    オプションの表示でスクリプトに設定した文字色を試してみたくて、[特別な構文]欄での設定値の意味を考えずに「HTML埋め込み」を選んでしまいました。

    [特別な構文]欄の設定値は、
     無し:HTML 構文に関係なく文書全体の文字列が強調表示の対象
     HTML:HTML 構文部分にある文字列が強調表示の対象
     HTML埋め込み:HTML 構文部分にある文字列と、[開始]欄の設定値と[終了]欄の設定値に囲まれている部分にある文字列が強調表示の対象
    ということだったのですね。

    ご回答いただいた内容で、すべて納得しました。
    認識不足による的外れな質問で、余計なお手数をおかけして申し訳ありませんでした。

    うーん、フォーラムへの発言が多いとき、ページ右の[最近のフォーラム]から古いものが消えていってしまい、ディスカッションが追っていけない。
    今進んでいるディスカッションがそんなにあるわけではないので、まだかろうじて大丈夫ですが。

     |  774  |  返信
  4. ご返信ありがとうございます。

    > [特別な構文]欄の設定値は、
    >  無し:HTML 構文に関係なく文書全体の文字列が強調表示の対象
    >  HTML:HTML 構文部分にある文字列が強調表示の対象
    >  HTML埋め込み:HTML 構文部分にある文字列と、[開始]欄の設定値と[終了]欄の設定値に囲まれている部分にある文字列が強調表示の対象
    > ということだったのですね。

    はい、それで合っています。それにプラスして [HTML] と [HTML 埋め込み] の場合は「編集モード」の CSS、JavaScript、VBScript で設定している色分けも同時に適用されます。

    > うーん、フォーラムへの発言が多いとき、ページ右の[最近のフォーラム]から古いものが消えていってしまい、ディスカッションが追っていけない。
    > 今進んでいるディスカッションがそんなにあるわけではないので、まだかろうじて大丈夫ですが。

    そうですね ^^;
    普段は来訪者も書き込みも非常に少ないサイトなのですが、最近ちょっと書き込みが増えててビックリしています。ページ右の新着表示の件数をもう少し増やしてみようかなー。

     |  Kuro  |  返信
  5. ご返信、ありがとうございます。

    > はい、それで合っています。それにプラスして [HTML] と [HTML 埋め込み] の場合は「編集モード」の CSS、JavaScript、VBScript で設定している色分けも同時に適用されます。
    了解しました。
    上記の件について、すでにどこかで記述されている内容でしたら、改めて申し訳ありませんでした。

    > ページ右の新着表示の件数をもう少し増やしてみようかなー。
    私のようにページ右の新着表示を拠り所にしている者にとって、
    ブログへのコメントはほぼ最新の記事に対してですので、[最近のコメント]欄は現状のままでも特に問題ないように思います。
    フォーラムへの投稿は表題毎に入り混じっていますので、[最近のフォーラム]欄は件数を増やしていただけるとありがたいですが、なんとなくですがどのディスカッションも一段落したような感じなので、今のところはまだ大丈夫です。

     |  774  |  返信
  6. ご返信ありがとうございます。

    > 上記の件について、すでにどこかで記述されている内容でしたら、改めて申し訳ありませんでした。
    どこにも記載していませんし、MeryWiki のヘルプもずいぶん更新していませんからね…。ご不明な点などございましたらフォーラムのほうへご投稿いただけるとサポートさせていただきます。(開発は趣味でやっていますが、マニュアル作成は仕事以外ではやりたくないッス…)

    > フォーラムへの投稿は表題毎に入り混じっていますので、[最近のフォーラム]欄は件数を増やしていただけるとありがたいですが、なんとなくですがどのディスカッションも一段落したような感じなので、今のところはまだ大丈夫です。
    そうですね。以前からなかなかフォーラムを利用してもらえなかったので、最近はなるべくフォーラムへ誘導していたこともあって件数が増えてますねー。

    表示件数を 5 件ぐらい増やしてみます。

     |  Kuro  |  返信
  7. ご返信、ありがとうございます。

    > 表示件数を 5 件ぐらい増やしてみます。
    ありがとうございました。
    でも、増やしたとたんに投稿がパタッと止まってしまった(笑)。

    どうでもいいことですが、優先順位をちょっと訂正。
    コメント > 引用符に囲まれた文字列 > 強調文字列 > スクリプト = タグ

    実際にはありえないでしょうが、タグ内にスクリプトが記述されたりスクリプト内にタグが記述されたりした場合、先に記述されたほうが優先されているようでした。

     |  774  |  返信
  8. 編集モードの強調文字列とちょっとズレますが。

    オプションダイアログの表示タブの[選択範囲]の[背景色]について、
    色の設定ダイアログの[色の作成]ボタンで表示される色サンプルと
    オプションダイアログの[サンプル]欄の背景とで、表示される色が異なるのは、
    この[背景色]には100%でない不透明度が適用されている(?)などにより、
    オプションダイアログの[サンプル]欄では
    それを加味した実際にエディタウィンドウで表示される色が表示されているのですよね?

    でも、[カーソルのある行]の[背景色]について、
    これも同じように不透明度が適用されている(?)ような気がしますが、
    色の設定ダイアログとオプションダイアログで同じ色が表示され、
    実際にはそれとは別の色で表示されます。

    言い換えると、[選択範囲]と[カーソルのある行]に同じ色を設定した場合、
    オプションダイアログの[サンプル]欄ではその2つで異なる色が表示され、
    エディタウィンドウ上では同じ色で表示されます。
    エディタを使う上では全く問題ありませんが、ちょっと気になったもので。
    ちなみに、テーマは「Base16 3024」です。

    また、仕様なのかもしれませんが、
    [マーカー (1)~(8)]の[文字色]に、
    [通常]の[背景色]に近い色(この場合「黒」)を設定すると、文字が見えなくなります。
    そもそもは、テーマ「Base16 3024」で、
    テキスト:abc に対して検索文字列:bc とマーカー文字列:ab とが重なったときに
    テキスト:abc の bc が見えなくなったのがきっかけですが。
    検索文字列:ab、マーカー文字列:bc なら問題ありません

    既出の事項でしたら、申し訳ありません。

     |  774  |  返信
  9. ご報告ありがとうございます。

    > この[背景色]には100%でない不透明度が適用されている(?)などにより、オプションダイアログの[サンプル]欄ではそれを加味した実際にエディタウィンドウで表示される色が表示されているのですよね?
    はい、その通りです。

    > でも、[カーソルのある行]の[背景色]について、これも同じように不透明度が適用されている(?)ような気がしますが
    はい、[カーソルのある行] の [背景色] も [選択範囲] の半透明描画とほぼ同じですが、描画の順番に差があります。

    [選択範囲] の背景色は、文字の描画がすべて終わったあとに半透明で上から描画されますが、[カーソルのある行] の背景色は、一番最初に背景色が半透明で描画されたのち、その上に文字が描画されます。

    > 言い換えると、[選択範囲]と[カーソルのある行]に同じ色を設定した場合、オプションダイアログの[サンプル]欄ではその2つで異なる色が表示
    他にも、[カーソルのある行] の項目ですと、[文字色] は行番号の文字色ですから、[サンプル] とエディタ部の表示が異なりますね。

    [サンプル] の部分はなるべくエディタ部分に似せようと努力はしているのですが、完全に同じものを開発するのは結構大変で、まだ対応できておりません。

    このような項目はいくつかございますが、実用にそれほど支障がない部分かと思い、開発の優先度は低めに設定させていただいております。

    今回ご指摘いただいた [カーソルのある行] の背景色は、なるべくエディタ部に似せるように改善してみようと思います。(背景と文字の描画の順番による色の差までを再現するのはちょっと大変なのでご容赦ください)

    > また、仕様なのかもしれませんが、
    > [マーカー (1)~(8)]の[文字色]に、
    > [通常]の[背景色]に近い色(この場合「黒」)を設定すると、文字が見えなくなります。
    これはマーカーっぽい色付けを再現するための演出 (仕様) です。

    通常の強調文字列の色分けは、先に背景を描画して、その上に文字を描画しますが、マーカー機能は、文字を先に描画して、その上から背景色を半透明で上塗りすることで、本物のマーカーみたいな感じを演出しています。

    つまり、マーカーの文字色を [背景色] (黒) に近い色にしてしまうと、黒背景に黒文字で描画されて、その上からマーカーの背景色が半透明で上塗りされます。

    ご不便をおかけして申し訳ございませんが、マーカーの文字色はお使いのテーマに合わせて見やすい色を選択することでご対応いただけませんでしょうか?

    > テキスト:abc に対して検索文字列:bc とマーカー文字列:ab とが重なったときに
    こちらの問題は、上記のマーカーの仕様も若干は関係しているものの、根本的な原因は別にあります。

    以前に、検索文字列とマーカー文字列の属性をひとつの文字に重ねて適用できるようにしたことが原因で、このような状態を引き起こしているのだと思います。

    これに対応するためには検索文字列とマーカー文字列を同時に適用させない (つまり以前の仕様に戻す) しか方法がなさそうです。

    機能としては退化になってしまいますが、文字が見えなくなってしまうよりは良いと思いますので、次のバージョンでは色の重ね合わせを廃止し、検索文字列を優先するように仕様変更することで対応させていただきますね。

     |  Kuro  |  返信
  10. ご回答、ありがとうございます。

    [カーソルのある行] と [選択範囲] は描画の順序による仕様だったのですね。
    了解しました。

    > [サンプル] の部分はなるべくエディタ部分に似せようと努力はしているのですが、完全に同じものを開発するのは結構大変で、まだ対応できておりません。
    > このような項目はいくつかございますが、実用にそれほど支障がない部分かと思い、開発の優先度は低めに設定させていただいております。
    ご指摘の通り実用にそれほど支障がない部分ですし、ちょっと疑問に思っただけで理由が分かれば十分ですので、対応なしでも構いません。

    > 今回ご指摘いただいた [カーソルのある行] の背景色は、なるべくエディタ部に似せるように改善してみようと思います。(背景と文字の描画の順番による色の差までを再現するのはちょっと大変なのでご容赦ください)
    これも対応なしでも構いません。他の人からも指摘があったらという感じでも良いと思います。

    [マーカー (1)~(8)] も演出 (仕様) だったのですね。

    > ご不便をおかけして申し訳ございませんが、マーカーの文字色はお使いのテーマに合わせて見やすい色を選択することでご対応いただけませんでしょうか?
    了解しました。

    > 以前に、検索文字列とマーカー文字列の属性をひとつの文字に重ねて適用できるようにしたことが原因で、このような状態を引き起こしているのだと思います。
    > これに対応するためには検索文字列とマーカー文字列を同時に適用させない (つまり以前の仕様に戻す) しか方法がなさそうです。
    > 機能としては退化になってしまいますが、文字が見えなくなってしまうよりは良いと思いますので、次のバージョンでは色の重ね合わせを廃止し、検索文字列を優先するように仕様変更することで対応させていただきますね。
    うーん、ちょっと変なところに触ってしまったかな。
    他の人がどういう使い方をしているか分かりませんが、今のほうが良いという人もいそうですし、私も今のままで良いと思います。
    この質問はなかったことにしてもらえませんかー?^^;

     |  774  |  返信
  11. ご返信ありがとうございます。

    > ご指摘の通り実用にそれほど支障がない部分ですし、ちょっと疑問に思っただけで理由が分かれば十分ですので、対応なしでも構いません。
    今、作ってみているところですが、そう言っていただけると気持ちが楽になります ^^

    > うーん、ちょっと変なところに触ってしまったかな。
    > 他の人がどういう使い方をしているか分かりませんが、今のほうが良いという人もいそうですし、私も今のままで良いと思います。
    > この質問はなかったことにしてもらえませんかー?^^;

    いいえー、これは大丈夫だと思います。色分け属性の重ね合わせは、実験的な仕様変更だったので、不都合が発生する場合は元に戻す前提でした。

    ご指摘いただいた内容は想定の範囲外で、現状の仕様では改善が難しい部分なので、やはりマーカーと検索文字列の同時着色については廃止したほうが仕様的にも奇麗ですし、視認性・実用性も高まると思います。

     |  Kuro  |  返信
スポンサーリンク