none
Visual Studio 2005で、コンマ(カンマ)のあとに、自動で半角スペースを入れたいのですが・・・ RRS feed

  • 質問

  • 改行を入れるタイミングなどで、コンマのあとにスペースがなければ、自動で追加したいです。

    Visual Studio 2005の、以下のオプションにチェックを入れました。

    ツール
    - オプション
     - テキストエディタ
      - C#
       - 書式設定
        - 行間
         - 区切り記号のスペースを設定する
          - コンマのあとにスペースを追加する

    しかし、自動ではスペースが入らないです。

    以下のコマンドを実行したら、スペースが入りました。

    編集
    - 詳細
     - 選択範囲のフォーマット

    このコマンドを実行せず、自動で半角スペースを入れる方法はないでしょうか。
    2017年6月30日 1:38

回答

すべての返信

    • 回答としてマーク たなっく 2017年6月30日 4:27
    2017年6月30日 2:23
  • マクロを使えるエディションならEnvironmentEventsに以下のコードでキーイベントを拾うとか

        Private Sub TextDocumentKeyPressEvents_BeforeKeyPress _
        (ByVal Keypress As String, ByVal Selection As EnvDTE.TextSelection _
        , ByVal InStatementCompletion As Boolean _
        , ByRef CancelKeypress As Boolean) Handles TextDocumentKeyPressEvents.BeforeKeyPress
    
    
            If (Selection.TextPane.Window.Project.Kind = VSLangProj.PrjKind.prjKindCSharpProject) Then
                If (Keypress = ",") Then
                    If (Selection.Text.Length = 0) Then
                        Selection.CharRight(True)
                        Dim after As String = Selection.Text
                        Selection.CharLeft(False)
                        If (after <> " ") Then
                            Selection.Insert(", ")
                            CancelKeypress = True
                        End If
                    End If
                ElseIf (Keypress = vbCr) Then
                    If (Selection.Text.Length = 0) Then
                        'Selection.SmartFormat()
                        Try
                            Selection.StartOfLine(vsStartOfLineOptions.vsStartOfLineOptionsFirstText, True)
                            Dim line As String = Selection.Text
                            line = System.Text.RegularExpressions.Regex.Replace(line, ",", ", ")
                            Selection.Text = line
                            Selection.MoveToPoint(Selection.BottomPoint, False)
                        Catch ex As Exception
    
                        End Try
                    End If
                End If
            End If
        End Sub


    個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)

    2017年6月30日 4:06
  • 佐祐理さん、gekkaさん、ありがとございます。
    ;を入力するタイミングで半角スペースが入ること確認しました。
    マクロ初めて使ってみました。すごいですね。大変勉強になります。

    ソースレビューのたびに半角スペースが入っていないソースを作る方がおり、質問させていただきました。
    その方にヒアリングしたところ、いちど
    (2, 4)
    のようなソースコードを作っても
    編集するタイミングで
    (2,3)
    のように半角スペースを削除してしまうそうです。

    整形ツールを導入できないかプロジェクトで検討します。
    ありがとうございました。

    2017年6月30日 4:36