Altruistic Programmer's Blog (KR)

이타주의 프로그래머의 블로그

Archive for the ‘비주얼스튜디오’ tag

Visual Studio에서 gvim 띄우는 스크립트

with 3 comments

[옛날 블로그 글입니다. 2009.07.19]

비주얼 스튜디오용 매크로입니다. 기능은

  • 현재 편집중인 파일을 gvim에서 띄워준다.
  • 현재 편집중인 파일과 짝 파일( .h 혹은 .cpp)을 vs(Vertical Split)로 gvim에서 띄워준다.
  • 현재 편집중인 파일의 짝 파일을 비주얼 스튜디오에서 열어준다.

요새 비주일 스튜디오를 여러 개 띄울일이 많아서 봤더니 Visual AssistReshaper같은 플러그인들이 메모리를 엄청 먹고 있었습니다. 이 참에 정리하자는 생각으로 플러그인을 모두 지워버렸더니, 비주얼 스튜디오가 정말 가볍네요. 5개씩 띄워도 무리가 없습니다.

하지만 역시나 Visual Assist가 없어서 제일 아쉬운 것은 코드 하이라이팅과 h/cpp 전환하기 기능. 코드 하이라이팅은 포기, h/cpp 전환 기능은 아래 매크로로 대체했습니다.

그리고 vim도 가끔 써주면 즐거워집니다. vim에서 편집하고나서 다시 비주얼 스튜디오에 반영해 주는 기능은 없습니다. -_-;; 비주얼 스튜디오가 알아서 바뀐 파일 로딩해주니 크게 문제는 없구요.

아래 함수 중에서 Public으로 된 녀석들에 단축키를 설정해서 쓰시면 좋습니다.

  • EditActiveDocumentWithGVIM
  • EditCoupleFilesWithGVIM
  • OpenMyCoupleFile

아, 안에 보시면 gvim 경로같은 거 하드코딩 되어 있으니 잘 고쳐서 쓰세요. 음. 그리고 설치하는 것은 비주얼 스튜디오에서 매크로 탐색기 여시고, 기본 모듈하나 더블클릭하시면 매크로 편집기(IDE)가 뜨는데요, 거기에 붙여 넣으시면 될 겁니다. -_-;; 뭐 어떻게든 될거에요 ㅎㅎ

소스코드

Imports System
Imports EnvDTE
Imports EnvDTE80
Imports EnvDTE90
Imports System.Diagnostics

Public Module muscly
    Private Function FindFileItem(ByVal fileName As String, ByVal collection As ProjectItems) As ProjectItem
        For Each item As ProjectItem In collection
            If item.ProjectItems.Count > 0 Then
                Dim projItem = FindFileItem(fileName, item.ProjectItems)
                If Not projItem Is Nothing Then
                    Return projItem
                End If
            ElseIf item.Name = fileName Then
                Return item
            End If
        Next

        Return Nothing
    End Function
    Private Function GetCoupleFileName(ByVal fileName As String) As String
        'If cpp
        If fileName.ToLower.EndsWith(“cpp”) Or fileName.ToLower.EndsWith(“inl”) Then
            Return fileName.Substring(0, fileName.Length – 3) + “h”
        ElseIf fileName.ToLower.EndsWith(“h”) Then
            ' Try with cpp
            Dim firstTarget = fileName.Substring(0, fileName.Length – 1) + “cpp”
            If Not FindFileItem(firstTarget, DTE.ActiveDocument.ProjectItem.ContainingProject.ProjectItems) Is Nothing Then
                Return firstTarget
            Else
                ' return inl
                Return fileName.Substring(0, fileName.Length – 1) + “inl”
            End If
        End If
    End Function
    Private Function GetFullPathFromFileName(ByVal fileName As String) As String
        Dim projItem As ProjectItem = FindFileItem(fileName, DTE.ActiveDocument.ProjectItem.ContainingProject.ProjectItems)
        Dim a = projItem.Properties.Item(“FullPath”)
        Return projItem.Properties.Item(“FullPath”).Value
    End Function
    Public Sub OpenMyCoupleFile()
        On Error Resume Next

        'Get File Name
        Dim Name As String = DTE.ActiveDocument().Name

        Dim coupleFileName = GetCoupleFileName(Name)
        DTE.ExecuteCommand(“File.OpenFile”, coupleFileName)
    End Sub

    Public Sub EditCoupleFilesWithGVIM()
        Dim curFilePath = DTE.ActiveDocument.FullName

        Dim coupleFileName = GetCoupleFileName(DTE.ActiveDocument().Name)
        Dim coupleFilePath = GetFullPathFromFileName(coupleFileName)

        Dim windowSizeCommand = “-c “”set columns=180″” -c “”set lines=60″”"
        Dim splitCommand = “-c “”vs ” + coupleFilePath + “”"”

        Dim proc = New System.Diagnostics.Process
        proc.StartInfo.FileName = “c:\\Program Files\\Vim\\vim71\\gvim.exe”
        proc.StartInfo.Arguments = curFilePath + ” ” + windowSizeCommand + ” ” + splitCommand
        proc.Start()

    End Sub
    Public Sub EditActiveDocumentWithGVIM()
        'Get File Name
        Dim fullName As String = DTE.ActiveDocument().FullName

        Dim proc = New System.Diagnostics.Process
        proc.StartInfo.FileName = “c:\\Program Files\\Vim\\vim71\\gvim.exe”
        proc.StartInfo.Arguments = fullName
        proc.Start()
    End Sub

End Module

광고 – blog.altprog.com

도메인 또 바꿨습니다. -_-;;
muscly.net 은 계약 기간 끝나면 서비스 종료됩니다~

Written by muscly

July 19th, 2009 at 3:15 pm

Visual Studio Guideline 표시

without comments

[옛날 블로그 글입니다. 2009.06.18]

C++ 코딩하다보면 인자가 많아서 줄을 넘어가버리는 경우가 있지요. 적당히 엔터를 집어넣어서 줄을 맞춰주다가 예전에 Visual Studio에서 컬럼에 가이드라인을 표시했던 기억이 나서 좀 찾아봤습니다.
http://blogs.msdn.com/saraford/archive/2004/11/15/257953.aspx

찾아보니 설정창은 따로 없지만 레지스트리를 수정해서 가이드라인을 표시할 수가 있네요. 줄의 색상과 컬럼 위치를 여러개 설정할 수 있는 것 같습니다. 위 링크에 가면  VS 2005 기준으로 설명하고 있구요, 댓글을 보니 VS 2003 도 된다네요. ( 심지어는 MSSQL의 SQL Manager도 된다는 -_-;; )

가이드라인이 있으니 일정한 기준으로 소스코드를 정리할 수 있어서 좋네요~

Written by muscly

July 18th, 2009 at 2:24 pm