不具合?:空白をタブにできないことがあNo.01151
dszhm さん 07/06/20 23:12
 
環境は
OS:Win XP SP2 Home
秀丸エディタ:V7.00 Beta 12
です。

ダブルクォーテーションマーク(")の間に
タブに変換できる分の数の空白があっても
メニューの
「編集(E)」⇒「変換(V)」⇒「空白⇒TAB(&T)」
でタブに変換できません。
シングルクォート(アポストロフィ、')では
そのようなことは無いようです。

[ ]
RE:01151 不具合?:空白をタブにできないNo.01154
秀丸担当 さん 07/06/21 11:34
 

>ダブルクォーテーションマーク(")の間に
>タブに変換できる分の数の空白があっても
>メニューの
>「編集(E)」⇒「変換(V)」⇒「空白⇒TAB(&T)」
>でタブに変換できません。
>シングルクォート(アポストロフィ、')では
>そのようなことは無いようです。

文字列の中は、変換しないようにしてあります。
むしろシングルクォートの中で変換されてしまうことのほうが不具合かもしれな
いです。基本的にC言語の文法を基本としていて、C言語ではシングルクォートは
単一の文字なので、文字列が入ることは無いからではありますが。

他の言語のことも考えると、とりあえずシングルクォートの中も変換しないよう
にして汎用性を高めたほうがいいかもしれないです。
さらに厳密にすると、例えばperlの文字列の解釈は非常に複雑なので、カラー表
示と連動させることも考えないといけないですが。

文字列の中だけを範囲選択してから変換すると、文字列の中であっても変換でき
ます。

[ ]
RE:01154 不具合?:空白をタブにできないNo.01161
dszhm さん 07/06/21 22:26
 
>>ダブルクォーテーションマーク(")の間に
>>タブに変換できる分の数の空白があっても
>>メニューの
>>「編集(E)」⇒「変換(V)」⇒「空白⇒TAB(&T)」
>>でタブに変換できません。
>>シングルクォート(アポストロフィ、')では
>>そのようなことは無いようです。
>
>文字列の中は、変換しないようにしてあります。
>むしろシングルクォートの中で変換されてしまうことのほうが不具合かもしれな
>いです。基本的にC言語の文法を基本としていて、C言語ではシングルクォートは
>単一の文字なので、文字列が入ることは無いからではありますが。
>
>他の言語のことも考えると、とりあえずシングルクォートの中も変換しないよう
>にして汎用性を高めたほうがいいかもしれないです。
>さらに厳密にすると、例えばperlの文字列の解釈は非常に複雑なので、カラー表
>示と連動させることも考えないといけないですが。
>
>文字列の中だけを範囲選択してから変換すると、文字列の中であっても変換でき
>ます。

(1) 選択範囲を無条件で
  「タブ⇒空白」
  や
  「空白⇒タブ」
  する機能が欲しいのは、私だけなのでしょうか?
  できれば、マクロ文だけでもいいからほしいのですが。

(2) 新規に拡張子が、「.cpp」であるファイルを開き、
    int _tmain(int nArgc,const TCHAR** pszArgV,const TCHAR** pszEnvV)
    {
    <Tab>static TCHAR szTest1[]=
    <Tab>{
    <Tab><Tab>_T('"'),<Tab><Tab>_T('"'),
    <Tab><Tab>_T('A'),<Tab><Tab>_T('A'),
    <Tab><Tab>_T('"'),<Tab><Tab>_T('"'),
    <Tab><Tab>_T('B'),<Tab><Tab>_T('B'),
    <Tab><Tab>_T('"'),<Tab><Tab>_T('"'),
    <Tab><Tab>_T('C'),<Tab><Tab>_T('C'),
    <Tab><Tab>_T('"'),<Tab><Tab>_T('"'),
    <Tab><Tab>_T('D'),<Tab><Tab>_T('D'),
    <Tab>};
    }
  のように入力し、全体を選択して、
  「タブ⇒空白」して「空白⇒タブ」すると
  「_T('"'),」の間の空白がタブにならないのですが・・・

  ご確認ください。

[ ]
RE:01161 不具合?:空白をタブにできないNo.01162
アルビレオ さん 07/06/22 00:41
 
ユーザーのアルビレオです。

>(1) 選択範囲を無条件で
>  「タブ⇒空白」
>  や
>  「空白⇒タブ」
>  する機能が欲しいのは、私だけなのでしょうか?
>  できれば、マクロ文だけでもいいからほしいのですが。

一般的にタブと空白の変換なんかは、文字定数内まで変換されると困るケースの
方が多いと思います。
内部まで変換したい場合は、複数行コメントの言語モードを一時的に「なし」に
すれば文字定数判定自体がなくなるので、そういう逃げ方もあります。
でも、マクロで切り替えできたかな?

[ ]
RE:01162 不具合?:空白をタブにできないNo.01166
秀丸担当 さん 07/06/22 12:11
 

>(1) 選択範囲を無条件で
>  「タブ⇒空白」
>  や
>  「空白⇒タブ」
>  する機能が欲しいのは、私だけなのでしょうか?
>  できれば、マクロ文だけでもいいからほしいのですが。

変換モジュールで、""を無視したモジュールを作るというのではどうでしょうか。
空行を含んだインデントの要望に対して変換モジュールを作成して置いてあるよ
うに、タブ変換もそういうモジュールを作って置いておくのであればできます。

秀丸エディタの変換モジュールライブラリ
http://hide.maruo.co.jp/lib/hmconv/index.html



>(2) 新規に拡張子が、「.cpp」であるファイルを開き、
>  「_T('"'),」の間の空白がタブにならないのですが・・・

これは、シングルクォーテーションを考慮していないためでした。
ダブルクォーテーションを無視するのではなく、やはりシングルクォーテーショ
ンも考慮するように、標準の変換モジュールを修正してみようと思います。

そうすると ' 以降をコメントとして扱う場合にも影響が出るので少し互換性が
心配ではありますが。


>一般的にタブと空白の変換なんかは、文字定数内まで変換されると困るケースの
>方が多いと思います。
>内部まで変換したい場合は、複数行コメントの言語モードを一時的に「なし」に
>すれば文字定数判定自体がなくなるので、そういう逃げ方もあります。
>でも、マクロで切り替えできたかな?

複数行コメントの言語モードを切り替えても、空白タブ変換には影響は無いです。
それらをカラー表示の状態を影響させるとしたら、変換モジュールはやっぱりや
めて秀丸エディタ標準のコマンドとして処理していくことになり、V5.00でせっ
かく変換モジュールに追い出したものが意味がなくなってしまうことになってし
まうので、どうしたものやらという感じです。

[ ]
RE:01166 不具合?:空白をタブにできないNo.01172
dszhm さん 07/06/22 22:36
 
>>(1) 選択範囲を無条件で
>>  「タブ⇒空白」
>>  や
>>  「空白⇒タブ」
>>  する機能が欲しいのは、私だけなのでしょうか?
>>  できれば、マクロ文だけでもいいからほしいのですが。
>
>変換モジュールで、""を無視したモジュールを作るというのではどうでしょうか。
>空行を含んだインデントの要望に対して変換モジュールを作成して置いてあるよ
>うに、タブ変換もそういうモジュールを作って置いておくのであればできます。
>
>秀丸エディタの変換モジュールライブラリ
>http://hide.maruo.co.jp/lib/hmconv/index.html
  これは、作成して↑のライブラリに置いていただける、という
 ことでしょうか?
 それでしたら、ぜひ、お願いします。

>>(2) 新規に拡張子が、「.cpp」であるファイルを開き、
>>  「_T('"'),」の間の空白がタブにならないのですが・・・
>
>これは、シングルクォーテーションを考慮していないためでした。
>ダブルクォーテーションを無視するのではなく、やはりシングルクォーテーショ
>ンも考慮するように、標準の変換モジュールを修正してみようと思います。
>
>そうすると ' 以降をコメントとして扱う場合にも影響が出るので少し互換性が
>心配ではありますが。
 colorcode が「文字列」をあらわす場合は変換しない、
 という感じになるのでしょうか?
 コメント内にクォート文字が現れる場合を考えると、
 言語モードの意識は必要になってくると思います。

>>一般的にタブと空白の変換なんかは、文字定数内まで変換されると困るケースの
>>方が多いと思います。
 わたしは、文字列にタブを含んで、コードする場合、
 C/Java系なら「¥t」で、
 VB系なら「vbTab」とかにしているので
 タブ⇔空白変換はできないと困る、方でした。
 

[ ]
RE:01172 不具合?:空白をタブにできないNo.01173
アルビレオ さん 07/06/23 01:20
 
アルビレオです。

秀丸担当さん
>複数行コメントの言語モードを切り替えても、空白タブ変換には影響は無いです。

そうでしたか。
そうなるとやっぱり変換モジュールを言語モードごとに用意しないと根本的な解
決にはなりませんね。

dszhmさん
> わたしは、文字列にタブを含んで、コードする場合、
> C/Java系なら「¥t」で、
> VB系なら「vbTab」とかにしているので
> タブ⇔空白変換はできないと困る、方でした。

タブ→空白であればそれで問題ないですが、空白→タブの場合は文字定数内の空
白がタブになるのはやっぱり困るんじゃないでしょうか?

[ ]
RE:01173 不具合?:空白をタブにできないNo.01174
dszhm さん 07/06/23 17:11
 
>> わたしは、文字列にタブを含んで、コードする場合、
>> C/Java系なら「¥t」で、
>> VB系なら「vbTab」とかにしているので
>> タブ⇔空白変換はできないと困る、方でした。
>
>タブ→空白であればそれで問題ないですが、空白→タブの場合は文字定数内の空
>白がタブになるのはやっぱり困るんじゃないでしょうか?
  1個だけのスペースをタブにすることは無いようです。
 つまり、タブ幅が8のとき、行の先頭から、12456767 となって
 空白(0x20)が続いているとき「空白→タブ」の変換をしても
 空白のままのようです。

[ ]
RE:01174 不具合?:空白をタブにできないNo.01175
アルビレオ さん 07/06/23 18:44
 
アルビレオです。

>>タブ→空白であればそれで問題ないですが、空白→タブの場合は文字定数内の空
>>白がタブになるのはやっぱり困るんじゃないでしょうか?
>  1個だけのスペースをタブにすることは無いようです。
> つまり、タブ幅が8のとき、行の先頭から、12456767 となって
> 空白(0x20)が続いているとき「空白→タブ」の変換をしても
> 空白のままのようです。

「1個だけなら大丈夫」は大丈夫なうちに入らないのでは?
12456767の後ろに空白が10個続いていれば、タブに変換されてしまいますよ。
桁合わせのために文字列中に複数の連続した空白を入れていたりすると、一部が
タブに変換されて表示してみると大きく桁がずれてしまうことは十分に考えられ
ます。

[ ]
RE:01175 不具合?:空白をタブにできないNo.01177
秀丸担当 さん 07/06/25 11:17
 

>>http://hide.maruo.co.jp/lib/hmconv/index.html
>  これは、作成して↑のライブラリに置いていただける、という
> ことでしょうか?
> それでしたら、ぜひ、お願いします。

では作っておきます。
マクロの場合は、filter文で使えるようになります。

> colorcode が「文字列」をあらわす場合は変換しない、
> という感じになるのでしょうか?

さらに厳密にするとしたらcolorcodeの判断も必要ということで、現状では
colorcodeは無視して""の存在だけをチェックしています。
''の場合が問題だったということで、次のバージョンでは、標準のタブ変換でも
colorcodeは無視して''を考慮するように修正します。


クォーテーションマークの無視は使う場面によって必要、不必要があるとは思い
ますが、空白->タブ変換は基本的には無視しないままとしたいと思います。

[ ]
RE:01175 不具合?:空白をタブにできないNo.01179
dszhm さん 07/06/25 22:39
 
>>>タブ→空白であればそれで問題ないですが、空白→タブの場合は文字定数内の空
>>>白がタブになるのはやっぱり困るんじゃないでしょうか?
>>  1個だけのスペースをタブにすることは無いようです。
>> つまり、タブ幅が8のとき、行の先頭から、12456767 となって
>> 空白(0x20)が続いているとき「空白→タブ」の変換をしても
>> 空白のままのようです。
>
>「1個だけなら大丈夫」は大丈夫なうちに入らないのでは?
>12456767の後ろに空白が10個続いていれば、タブに変換されてしまいますよ。
>桁合わせのために文字列中に複数の連続した空白を入れていたりすると、一部が
>タブに変換されて表示してみると大きく桁がずれてしまうことは十分に考えられ
>ます。
  空白を何個も続けて文字列中にコードしない方法もあると
 思いますが、その内容はこの会議室の趣旨から外れてしまうので
 これまでにしましょう。

[ ]
RE:01177 不具合?:空白をタブにできないNo.01180
dszhm さん 07/06/25 23:10
 
>>>http://hide.maruo.co.jp/lib/hmconv/index.html
>>  これは、作成して↑のライブラリに置いていただける、という
>> ことでしょうか?
>> それでしたら、ぜひ、お願いします。
>
>では作っておきます。
>マクロの場合は、filter文で使えるようになります。
 「空白タブ変換(クォート無視) V1.00」ダウンロードして
 試用してみました。
 思ったとおりの動作でした。
 ありがとうございました。
 ところで、そのときに思ったのですが、
 こういった、カスタム用「変換ライブラリ」が増えてくると、
 複数のモジュール間でニモニックが競合してしまうことが
 あるので、
 ニモニックを自身の使用頻度に合ったものにカスタマイズできると
 良いと思ったのですが、よろしかたっらご検討願えないでしょうか?

>> colorcode が「文字列」をあらわす場合は変換しない、
>> という感じになるのでしょうか?
>
>さらに厳密にするとしたらcolorcodeの判断も必要ということで、現状では
>colorcodeは無視して""の存在だけをチェックしています。
>''の場合が問題だったということで、次のバージョンでは、標準のタブ変換でも
>colorcodeは無視して''を考慮するように修正します。
>
>
>クォーテーションマークの無視は使う場面によって必要、不必要があるとは思い
>ますが、空白->タブ変換は基本的には無視しないままとしたいと思います。
 VB系を主に使用するユーザの方々から「要望」が来そうで、
 大変ですね。

[ ]
RE:01179 不具合?:空白をタブにできないNo.01182
アルビレオ さん 07/06/26 01:09
 
アルビレオです。

>  空白を何個も続けて文字列中にコードしない方法もあると
> 思いますが、その内容はこの会議室の趣旨から外れてしまうので
> これまでにしましょう。

あくまでひとりごとなので返信は不要です。
連続した空白を回避するために別の書き方をすればぱっと見でわかりにくくなる
こともあるし、すでにあるコードを流用する場合もいちいち書き換えなきゃいけ
ない場合もあります。
たかだか空白→タブ変換のためにそういう手間が増えるのは本末転倒だというの
が私の考えです。
まあ、変換モジュールでは対象ががソースコードなのか普通のテキストなのか判
別できないのであれば、どちらにすればいいのか決めるのは難しいですけどね。

[ ]
RE:01180 不具合?:空白をタブにできないNo.01184
秀丸担当 さん 07/06/26 10:34
 

> ありがとうございました。
> ところで、そのときに思ったのですが、
> こういった、カスタム用「変換ライブラリ」が増えてくると、
> 複数のモジュール間でニモニックが競合してしまうことが
> あるので、
> ニモニックを自身の使用頻度に合ったものにカスタマイズできると
> 良いと思ったのですが、よろしかたっらご検討願えないでしょうか?

[その他]→[動作環境]→[編集]→[変換]で、変換モジュールの順番を変えると上
のほうにあるモジュールが優先的にニモニックが使われます。

今回の場合は、空白タブ変換が重複するので、順番はそのままにして標準の変換
モジュールの「空白->TAB」のチェックを外しておくと下のモジュールのニモニ
ックは有効になります。

または標準添付のHmFilter.hmfをさらに追加して、チェック状態をうまく変えれ
ば元々「空白->TAB」があった位置に挿入するような感じにすることもできると
思います。

[ ]
RE:01184 不具合?:空白をタブにできないNo.01186
dszhm さん 07/06/26 22:55
 
>
>> ありがとうございました。
>> ところで、そのときに思ったのですが、
>> こういった、カスタム用「変換ライブラリ」が増えてくると、
>> 複数のモジュール間でニモニックが競合してしまうことが
>> あるので、
>> ニモニックを自身の使用頻度に合ったものにカスタマイズできると
>> 良いと思ったのですが、よろしかたっらご検討願えないでしょうか?
>
>[その他]→[動作環境]→[編集]→[変換]で、変換モジュールの順番を変えると上
>のほうにあるモジュールが優先的にニモニックが使われます。
>
>今回の場合は、空白タブ変換が重複するので、順番はそのままにして標準の変換
>モジュールの「空白->TAB」のチェックを外しておくと下のモジュールのニモニ
>ックは有効になります。
>
>または標準添付のHmFilter.hmfをさらに追加して、チェック状態をうまく変えれ
>ば元々「空白->TAB」があった位置に挿入するような感じにすることもできると
>思います。
 「TAB->空白」または、「TAB->空白(クォート無視)」が
 上の方にあると
  「ソート...」と「JIS->SJIS」にニモニックをつけるには、
 マクロから起動するようにして、メニュー上でニモニックを
 指定することになってしまうわけですね。

[ ]