RSS

İkinci VS.NET 2005 makrosu

02 Aug

Gerçek programcı editörlerindeki (misal CodeWright, VIM, Emacs, SlickEdit) olmazsa olmaz özelliklerden biri dikdörtgen blok seçip “bunun başına filanca stringi ekle” demektir. Yani misal:


myCodeLine1;
  myCodeLine2;
  myCodeLine3;
myCodeLine4;

seçip, bir girdi kutusundan “YADA ” gibi bir şey girip


YADA  myCodeLine1;
 YADA myCodeLine2;
  YADA myCodeLine3;
YADA myCodeLine4;

sonucunu elde edebilmektir.

Visual Studio 2005 IDE’sindeki editör dikdörtgen blok seçmeye izin vermekle beraber (ALT + SolFare) blok başına şunu koy, bunu koy islevselliğini ya sunmuyor ya da ben aramaktan yoruldum, bezdim ve bulamadım. (Varsa ve biliyorsanız emres at bilgi nokta edu tr adresine yazıp beni aydınlatabilirsiniz 😉

Onun yerine simdilik kabaca is gören InsertBlock diye bir makro yazdım. Bunu kullanmak için normal metin seçme islemi yapmak yeterli, blok seçmek söz konusu değil (şimdilik).

Aşağıda kodunu verdiğim makroyu ana menüdeki Tools –> Macros –> Macro Explorer (yahut Macro IDE) açıp uygun bir paketin (misal My Macros) içindeki uygun bir modüle yerleştirebilirsiniz (ben TextUtilities diye bir modül yaratıp onun içine koydum).

Daha sonra InsertBlock makrosunu bir tuş kombinasyonuna nasıl bağlayabileceğinizi öğrenmek icin buradaki VS.NET 2005 makro örneğine bakabilirsiniz.

Bir sonraki aşama benzer işlevselligi blok seçim üzerinden de elde edebilmektir.


Imports System
Imports EnvDTE
Imports EnvDTE80
Imports System.Diagnostics

Public Module TextUtilities

    Public Sub InsertBlock()

        Dim i, j, tmpStr, tmpSpace
        Dim TS As TextSelection = DTE.ActiveDocument.Selection
        Dim txtArr(500)
        Dim stringToInsert = "StringToInsert"

        stringToInsert = InputBox("Please enter string to insert", "Block Insert")

        txtArr = Split(TS.Text, vbCrLf)

        For i = 0 To (txtArr.Length - 1)
            tmpSpace = ""
            j = 1
            While (Mid(txtArr(i), j, 1) = " " Or Mid(txtArr(i), j, 1) = vbTab)
                tmpSpace = tmpSpace & Mid(txtArr(i), j, 1)
                j = j + 1
            End While
            tmpStr = stringToInsert & Mid(txtArr(i), j)
            txtArr(i) = tmpStr
        Next

        TS.Text = Join(txtArr, vbCrLf)

    End Sub


End Module

Tabii yukarıdaki kod daha pek çok geliştirmeye ve performans artışına açık. Şimdilik benim işimi görüyor ve VS.NET ile C# kodlama, düzenleme işlemlerini genişletmek için bir zemin teşkil ediyor.

Advertisements
 
Leave a comment

Posted by on August 2, 2006 in .NET, General, Programlama

 

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

 
%d bloggers like this: