C#のコーディングについてNo.08545
VBASPCoder さん 01/05/01 10:27
 
こんにちは、いつも秀丸愛用させていただいています。

現在C#をやっています。例えば・・・

public string Email
{
get
{
txtEmail.Text;
}
}

のようにプロパティを記述していたときに・・・

public string Email{

とタイプした時点で、{の前で改行して、自動的にその次の次の行に
}を追加してくれればいいなあなんて思いました。これを秀丸で実現
するためにはどのようにしたらいいのでしょうか?

また、C#用の強調表示のファイルをお持ちの人がいらっしゃったら是非教えてほしい
のですが。(自分で作れ・・・)

[ ]
RE:08545 C#のコーディングについてNo.08546
TAKA さん 01/05/01 10:51
 
TAKA です。

>public string Email{
>
>とタイプした時点で、{の前で改行して、自動的にその次の次の行に
>}を追加してくれればいいなあなんて思いました。これを秀丸で実現
>するためにはどのようにしたらいいのでしょうか?

現在、秀丸には、キーボード入力を監視する機能がありませんので、
残念ながら実現することは出来ません。
少しでも入力数を減らす目的であれば、
「Email」の入力が完了した時点で、「Shift+Return」を押して、
「{」と改行と「}」を追加することが可能な位です。
以下のマクロを「Shift+Return」に割り当てれば、可能です。
#秀丸の設定によっては動きが変わるので、何らかの調整が必要か
 も。

// マクロ(ここから)
    insert "{";
    insertreturn;
    insertreturn;
    insert "}";
    left;
    up;
    endmacro;
// マクロ(ここまで)

[ ]
RE:08545 C#のコーディングについてNo.08547
Arimac さん 01/05/01 11:30
 
自分だったら
public string Email{get{txtEmail.Text;}}
と入力した後に
正規表現による置換で
検索:.\f[{}]
置換:\0\n\1\n
とする手も考えます(^^;
(タブは考慮してませんが)

[ ]
RE:08547 C#のコーディングについてNo.08556
VBASPCoder さん 01/05/02 01:28
 
TAKAさん、Arimacさんお返事ありがとうございました。
教えていただいた方法で試してみます。

[ ]
RE:08556 C#のコーディングについてNo.08557
VBASPCoder さん 01/05/02 01:42
 
>TAKAさん、Arimacさんお返事ありがとうございました。
>教えていただいた方法で試してみます。

マクロで試してみましたところ、満足いく結果が得られました。
完璧に自動的というわけではありませんが、目的を十分満たすもの
です。

ありがとうございました。

[ ]
RE:08557 C#のコーディングについてNo.08586
安久津 さん 01/05/03 09:18
 
こんにちは、安久津といいます。
ちゃんと読んでなかったので、すごい出遅れ。(^^;)

● brace.mac
// ------------------------------
##mode = 1;
disabledraw;
  if( selecting==1 || overwrite==1){ insertreturn; endmacro; }
  left;
  if( ! result ){ insertreturn; endmacro; }
  else if( code!='{' ){ right; insertreturn; endmacro; }
  if( ##mode ){
   delete;
   insertreturn;
   insert "}";
   insertline;
   insert "{";
   insertreturn;
  }else{
    right;
    insertreturn;
    insert "}";
    insertline;
  }
// tab;
endmacro;
// ------------------------------

●使い方。
(1)「その他」->「全般」-> 自動インデント ON。で、C言語インデントは OFF。
(2) brace.mac を Ctrl + M など改行関連のキーに割当てる。
(3) {| で、このマクロを実行する。

● ##mode = 1;
(a-1)
int main(){|

(a-2)
int main()
{
|
}

● ##mode = 0;
(a-1)
int main(){|

(a-2)
int main(){
|
}

(b-1)
int main()
{|

(b-2)
int main()
{
|
}

●備考。
(1) "{" の直後以外では、ただ改行するだけです。
(2) 最後の tab は好みによって有効にして下さい。
(3) ##mode = 0; の方が良いです。

では。
# 私の所では k_ctrl_m.mac という名前です。

[ ]