Aklımda Kalası Kelimeler

* давайте работать вместе
* Zarf ve Mazruf, Zerafet(xHoyratlık) ile aynı kökten(za-ra-fe) gelir
* Bedesten
* Suç subuta ermiştir - Suç sabit olmuştur
Macro etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
Macro etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

9 Nisan 2010 Cuma

VS.NET içinde collapse yapan macro

Visual Studio 2008 de herhangi bir dosyanızı (değiştirdiğim için hepsinde deneyemedim ama, hepsini diyelim şimdilik) "//_" karakterleri ile başlayıp "//- " karakterleri ile biten yere kadar katlamaya (collapse için attım bu kelimeyi) yarayan macro aşağıdadır.

Emeği geçen herkese şimdiden teşekkür ederim.

Referans: stackOverFlow.com

Option Explicit On
Option Strict On

Imports System
Imports EnvDTE
Imports EnvDTE80
Imports EnvDTE90
Imports System.Diagnostics
Imports System.Collections.Generic

Public Module JsMacros


Sub OutlineRegions()
Dim selection As EnvDTE.TextSelection = CType(DTE.ActiveDocument.Selection, EnvDTE.TextSelection)

'//_ işaretini gördüğü yerden
Const REGION_START As String = "//_ "
'//- işaretine kadar
Const REGION_END As String = "//- "
' xxx karakterSonra başlayarak collapse edecek.
Const karakterSonra As Integer = 20

selection.SelectAll()
Dim text As String = selection.Text
selection.StartOfDocument(True)

Dim startIndex As Integer
Dim endIndex As Integer
Dim lastIndex As Integer = 0
Dim startRegions As New Stack(Of Integer)

Do
startIndex = text.IndexOf(REGION_START, lastIndex)
endIndex = text.IndexOf(REGION_END, lastIndex)

If startIndex = -1 AndAlso endIndex = -1 Then
Exit Do
End If

If startIndex <> -1 AndAlso startIndex < endIndex Then
startRegions.Push(startIndex + karakterSonra)
lastIndex = startIndex + 1
Else
' Outline region ...
Dim tempStartIndex As Integer = CInt(startRegions.Pop())
selection.MoveToLineAndOffset(CalcLineNumber(text, tempStartIndex), CalcLineOffset(text, tempStartIndex))
selection.MoveToLineAndOffset(CalcLineNumber(text, endIndex) + 1, 1, True)
selection.OutlineSection()

lastIndex = endIndex + 1
End If
Loop

selection.StartOfDocument()
End Sub

Private Function CalcLineNumber(ByVal text As String, ByVal index As Integer) As Integer
Dim lineNumber As Integer = 1
Dim i As Integer = 0

While i < index
If text.Chars(i) = vbLf Then
lineNumber += 1
i += 1
End If

If text.Chars(i) = vbCr Then
lineNumber += 1
i += 1
If text.Chars(i) = vbLf Then
i += 1 'Swallow the next vbLf
End If
End If

i += 1
End While

Return lineNumber
End Function

Private Function CalcLineOffset(ByVal text As String, ByVal index As Integer) As Integer
Dim offset As Integer = 1
Dim i As Integer = index - 1

'Count backwards from //#region to the previous line counting the white spaces
Dim whiteSpaces = 1
While i >= 0
Dim chr As Char = text.Chars(i)
If chr = vbCr Or chr = vbLf Then
whiteSpaces = offset
Exit While
End If
i -= 1
offset += 1
End While

'Count forwards from //#region to the end of the region line
i = index
offset = 0
Do
Dim chr As Char = text.Chars(i)
If chr = vbCr Or chr = vbLf Then
Return whiteSpaces + offset
End If
offset += 1
i += 1
Loop

Return whiteSpaces
End Function

End Module

15 Aralık 2008 Pazartesi

VS.NET içinden hızlıca google araması yapabilmek


ref:http://www.codinghorror.com/blog/archives/000429.html

    1 Imports System


    2 Imports EnvDTE


    3 Imports EnvDTE80


    4 Imports EnvDTE90


    5 Imports System.Diagnostics


    6 Imports System.Web


    7 


    8 


    9 Public Module Module1


   10 


   11     Public Sub SearchGoogleForSelectedText()


   12         Dim s As String = ActiveWindowSelection().Trim()


   13         If s.Length > 0 Then


   14             DTE.ItemOperations.Navigate("http://www.google.com/search?q=" & _


   15                 Web.HttpUtility.UrlEncode(s))


   16         End If


   17     End Sub


   18 


   19     Private Function ActiveWindowSelection() As String


   20         If DTE.ActiveWindow.ObjectKind = EnvDTE.Constants.vsWindowKindOutput Then


   21             Return OutputWindowSelection()


   22         End If


   23         If DTE.ActiveWindow.ObjectKind = "{57312C73-6202-49E9-B1E1-40EA1A6DC1F6}" Then


   24             Return HTMLEditorSelection()


   25         End If


   26         Return SelectionText(DTE.ActiveWindow.Selection)


   27     End Function


   28 


   29     Private Function HTMLEditorSelection() As String


   30         Dim hw As HTMLWindow = ActiveDocument.ActiveWindow.Object


   31         Dim tw As TextWindow = hw.CurrentTabObject


   32         Return SelectionText(tw.Selection)


   33     End Function


   34 


   35     Private Function OutputWindowSelection() As String


   36         Dim w As Window = DTE.Windows.Item(EnvDTE.Constants.vsWindowKindOutput)


   37         Dim ow As OutputWindow = w.Object


   38         Dim owp As OutputWindowPane = ow.OutputWindowPanes.Item(ow.ActivePane.Name)


   39         Return SelectionText(owp.TextDocument.Selection)


   40     End Function


   41 


   42     Private Function SelectionText(ByVal sel As EnvDTE.TextSelection) As String


   43         If sel Is Nothing Then


   44             Return ""


   45         End If


   46         If sel.Text.Length = 0 Then


   47             SelectWord(sel)


   48         End If


   49         If sel.Text.Length <= 2 Then


   50             Return ""


   51         End If


   52         Return sel.Text


   53     End Function


   54 


   55     Private Sub SelectWord(ByVal sel As EnvDTE.TextSelection)


   56         Dim leftPos As Integer


   57         Dim line As Integer


   58         Dim pt As EnvDTE.EditPoint = sel.ActivePoint.CreateEditPoint()


   59 


   60         sel.WordLeft(True, 1)


   61         line = sel.TextRanges.Item(1).StartPoint.Line


   62         leftPos = sel.TextRanges.Item(1).StartPoint.LineCharOffset


   63         pt.MoveToLineAndOffset(line, leftPos)


   64         sel.MoveToPoint(pt)


   65         sel.WordRight(True, 1)


   66     End Sub


   67 


   68 End Module


   69 




Şimdi nasıl yapacağız:
  1. "VS.NET -> Tools -> Macros -> New Macro Project" açılan ekranda herşeyi seçin ve, yukarıdaki kodu yapıştırın
  2. (Yeni modul oluştu ve adı Module1, siz keyfinize göre değiştirin)
  3. "Add References" ile "System.Drawing.dll" ve "System.Web.dll" eklenir ve kaydedilerek bu IDE den çıkılır.
  4. Google da aramalarınıza kısayol eklemek için "Tools -> Options -> Environment -> Keyboard" tıklarından geçip "Show command containing string" alanına "google" yazın gelsin macromuz.
  5. "Shortcut for selected command" altına tıklayıp dilediğiniz kısayol tuşunu oluşturun ve hayrını görün :)