[要望] #ifdef等のカラー表示解釈行を明示No.10090
KOBAstudio さん 06/04/11 17:02
 
お世話になっております、機器組み込み型プログラマのKOBAstudioです。

なかなかバグも出てこないので、秀丸Ver5β時代の要望の再投稿です。
(元のフォーラムが見つからなかったのでGoogleのキャッシュより引用)


[要望] #ifdef等のカラー表示解釈行を明示的に表示。


>-------------------------------------------
>-"秀丸担当 さん 05/03/22 18:32 No.06875"-
>-------------------------------------------
>> 「#ifdef等のカラー表示」に定義され処理されている#ifdef行を
>> 知りたい。
>> →現在カラー設定の「#ifdef等での無効部分」で無効コードの
>> カラー表示は可能ですが、有効コードの場合「#ifdef等のカラー表示」
>> で解釈されているコードかが不明。
>>
>> 行番号カラーで#ifdef解釈行を視覚的に表示できないでしょうか?
>
>現在は、無効部分ではなく、有効部分は、普通のカラー表示が
>適用されているだけなので、有効部分を強調することはできま
>せん。ネタとして参考にしたいと思います。
>
との、ことでした。

機器組み込み型プログラムのソースコードには、たんまり#ifdefなど
のコンパイルSWが記述されています。

これを、秀丸Ver5β時代に、この#ifdefは秀丸上で解釈されているのか?
いないのか? を知りたかったのですが、なかなかいい方法はありませんでした。
(無効な部分は一発で判明できますが、有効な部分の場合、#ifdefを再度検索
しないと判明できない)


でも、秀丸Ver6βから「折りたたみ用の余白」が出来たので、この
部分が利用できないでしょうか?
例えば、解釈されている#ifdef行の場合「+,-」の色を変えるなどして。


こんなことして誰がうれしいの?って、私しか嬉しくないかもしれま
せんが、よろしくお願いいたします。


[ ]
RE:10090 [要望] #ifdef等のカラー表示解No.10091
Iranoan さん 06/04/11 17:14
 
 KOBAstudio さん今日は、Iranoan です。
> これを、秀丸Ver5β時代に、この#ifdefは秀丸上で解釈されているのか?
 基本的には変わりません。
 ただ
> (無効な部分は一発で判明できますが、有効な部分の場合、#ifdefを再度検索
> しないと判明できない)
ということなら、「複数行コメント」の定義を使って、#ifdef をを「スクリ
プト部分」等 C 言語では使われない文字列として定義してやれば出来るかも
しれません。ただ
・コメントも #ifdef の無効部分も新たに設定し直さなければいけない
・複数行コメント」は、入れ子の部分が無視される
  →http://hidemaruo.dip.jp:81/turukame/turukame_3/x09459.html#9521
に注意が必要です。

[ ]
RE:10091 [要望] #ifdef等のカラー表示解No.10093
秀丸担当 さん 06/04/11 18:32
 


>でも、秀丸Ver6βから「折りたたみ用の余白」が出来たので、この
>部分が利用できないでしょうか?
>例えば、解釈されている#ifdef行の場合「+,-」の色を変えるなどして。

+/-の色を有効/無効に使用するのは、難しいというのもありますが、仕様的にも
理解しがたいものになってしまいそうです。

+/-の色を例に出されているということは、その行について判断されているかど
うかを知ることができればいいということでしょうか。
それとも、有効部分と無効部分を同時に色分けされたほうがいいということでし
ょうか。

いつしかのバージョンから、無効にする内容のほうに「//all」と書いておくと、
全て無効にできるようになりました。
これで、「有効と判断されていること」がわかりますが、これではだめでしょう
か。
例えば、有効にする内容のほうに「HOGE」と書いておくと、

#ifdef HOGE
 xxxx
#endif

という記述が無効色でなければ、有効と判断されていると確認できます。
「//all」が無いバージョンでは、HOGEが有効と判断されているのか、それとも
無視されているのかの判別はできませんでした。


Iranoanさんもおっしゃるように、複数行コメントのユーザー定義である程度の
カスタマイズもできます。
しかし入れ子や#elseの後などを判断できないので、「#ifdef等のカラー表示」
の代替にはならないです。

[ ]
RE:10093 マクロでできそうですね。No.10099
KOBAstudio さん 06/04/12 14:11
 
お世話になっております。KOBAstudioです。

>>でも、秀丸Ver6βから「折りたたみ用の余白」が出来たので、この
>>部分が利用できないでしょうか?
>>例えば、解釈されている#ifdef行の場合「+,-」の色を変えるなどして。
>
>+/-の色を有効/無効に使用するのは、難しいというのもありますが、仕様的にも
>理解しがたいものになってしまいそうです。
>
>+/-の色を例に出されているということは、その行について判断されているかど
>うかを知ることができればいいということでしょうか。
>それとも、有効部分と無効部分を同時に色分けされたほうがいいということでし
>ょうか。
>
前者の「その行について判断されているか?」を知りたいのです。
つまり、その行に記述されている#ifdef文は
「#ifdef等のカラー表示ダイアログに設定されているか?」
を知りたいのです。


>いつしかのバージョンから、無効にする内容のほうに「//all」と書いておくと、
>全て無効にできるようになりました。
>これで、「有効と判断されていること」がわかりますが、これではだめでしょう
>か。
あっ。確かに"〜無効にする式の内容"に"//all"を入れてあげれば確認できますね
これを、マクロで、#ifdef等のカラー表示設定を一時的に"//all"入れて更新して
あげれば出来そうですね。

ただ、その都度マクロ動かす必要がありますね。

[ ]
RE:10099 マクロでできそうですね。No.10100
秀丸担当 さん 06/04/12 18:02
 

>あっ。確かに"〜無効にする式の内容"に"//all"を入れてあげれば確認できますね
>これを、マクロで、#ifdef等のカラー表示設定を一時的に"//all"入れて更新して
>あげれば出来そうですね。
>
>ただ、その都度マクロ動かす必要がありますね。

有効の内容しか必要でないのであれば、"//all"と書く方式に移行していただく
ことでスッキリできるかと思ったのですが、普段、有効と無効に両方ばらばらの
内容を書いているのであれば、あまりスッキリではないですね。

強調表示に「#ifdef等のカラー表示」に記述されている内容と同等のものを書け
ば、わかるようにもできると思いますが、これもやはり面倒ですね。

「#ifdef等のカラー表示」の詳細で、「ヒットした文字を強調表示」みたいなオ
プションを付けて、強調1〜8,特に強調1〜4から選べるような形だと、C言語を使
っている自分にも個人的にはよくて、簡単にできそうでもあります。
という感じでネタとしておきたいと思います。

[ ]
RE:10100 マクロでできそうですね。No.10103
KOBAstudio さん 06/04/12 20:14
 
どうも、C言語使いのKOBAstudioです。

>有効の内容しか必要でないのであれば、"//all"と書く方式に移行していただく
>ことでスッキリできるかと思ったのですが、普段、有効と無効に両方ばらばらの
>内容を書いているのであれば、あまりスッキリではないですね。
>
当方、#ifdef有効=10個、#ifdef無効=35個、#if有効=64個、#if無効=118個あるの
で、その行がヒットしているかを調べるのが結構手間なのです。


例えば下記のような#ifdefがあったとして、これがヒットしているのか?
ヒットしていないのか?

#if (CPU==SH3)
    bHoge = TRUE;
#endif

#else文があれば、即判断できますが、上記の場合、見た目では判断できません。
前に述べた"//all"マクロを利用すれば、その時は判断できますが、また時間が
経てば同じことの繰り返しになるでしょう。


>強調表示に「#ifdef等のカラー表示」に記述されている内容と同等のものを書け
>ば、わかるようにもできると思いますが、これもやはり面倒ですね。
>
これも、やろうと思いましたが、数量が多くて断念しました。

>「#ifdef等のカラー表示」の詳細で、「ヒットした文字を強調表示」みたいなオ
>プションを付けて、強調1〜8,特に強調1〜4から選べるような形だと、C言語を使
>っている自分にも個人的にはよくて、簡単にできそうでもあります。
>という感じでネタとしておきたいと思います。
>
これが、実現するとありがたいです。m(_ _)m
よろしくお願いいたします。

[ ]
RE:10103 秀丸 V6.00β15から実装No.10179
KOBAstudio さん 06/04/18 10:44
 
KOBAstudioです。

>>「#ifdef等のカラー表示」の詳細で、「ヒットした文字を強調表示」みたいなオ
>>プションを付けて、強調1〜8,特に強調1〜4から選べるような形だと、C言語を使
>>っている自分にも個人的にはよくて、簡単にできそうでもあります。
>>という感じでネタとしておきたいと思います。
>>
>これが、実現するとありがたいです。m(_ _)m
>よろしくお願いいたします。
>
実装有難うございます。
秀丸 V6.00β15で、確認いたしました。

#・「#ifdef等のカラー表示」で、「//color:1」とか先頭に書くことでヒットし
#た文字そのものを強調表示できるようにする。
#
これでコーディングの効率も上がることでしょう。

[ ]