본문 바로가기

소프트웨어/소스인사이트 응용

소스 인사이트 매크로를 이용한 자동 주석(comment) 만들기..

이 번은 소스 인사이트 설명의 거의 마지막 내용이 되겠습니다.


소스 인사이트에서 매크로 기능이 있습니다. 매크로라고 하면 반복적이고 기계적인 작업을 사람이 아닌 어떤 시퀀스를 만들어서 수행하게 하는 작업입니다. 여기에서는 소스 인사이트 매크로를 사용하는 방법 및 매크로와 단축키를 매칭시키는 방법에 대해 알아보도록 하겠습니다.

다만 매크로 명령어 자체에 대해서는 다루지 않을 예정입니다만, 여러분은 제공되는 예제들을 조합하고 잘 응용하면 다른 매크로들도 만들 수 있을 것입니다.


소스 인사이트와 관련해 작성했던 아래 내용도 참고 바랍니다.


2018/12/15 - [소프트웨어/소스인사이트 응용] - 소스인사이트 설명

2019/01/17 - [소프트웨어/소스인사이트 응용] - [tip]소스인사이트 프로젝트 내에서 불필요한 파일 제거하기..

2019/01/17 - [소프트웨어/소스인사이트 응용] - 소스 인사이트가 가지고 있는 검색 기능들..

2019/01/20 - [소프트웨어/소스인사이트 응용] - 소스 인사이트의 특별한 에디트 능력들..

2019/01/22 - [소프트웨어/소스인사이트 응용] - 소스 인사이트의 edit와 view 기능개선(a.k.a. trouble shoot..)


<여기서 소개할 매크로의 기능 미리보기>

여기에서 소개할 매크로의 대부분은 주석(comment) 삽입과 관련한 것입니다. 즉, 주석을 가령 Alt + 1과 같이 내가 할당한 단축키를 누르면 자동으로 주석이 뾰로롱 나오는 것입니다.

앞선 글에서 Option 메뉴에서 Key Assignments.. 에 대해 설명한 적이 있는데 단축키 할당은 Key Assignments.. 로 하시면 됩니다.


결과부터 말하면 이용할 매크로에서 제가 맵핑한 키 버튼을 누르면 소스코드에 아래와 같은 류의 자동 주석들이 만들어 집니다.

물론 사용자 이름 변경, 형태 변경을 통해서 여러분이 원하는 주석으로 변경하여 단축키 하나로 타이핑의 부담을 줄여줄 수 있겠습니다.



<한 줄 코맨트들 : one line comments들은 아래와 같은 형태로 많이 썼었습니다. ㅎ>

(물론 나중에는 Alt + 1, Alt + 2와 같은 코드 형태는 싸악 삭제를 하던지, 전체의 내용으로 주석을 변경하는 등의 작업을 거칩니다.)

(과거 핸드폰 만드는 외주회사 및 현드폰 만드는 회사를 다니면서 팀과 협업에서 사용되던 주석 형태입니다.)

(필요하시면 다양한 형태로 매크로 파일을 변경해서 사용하시면 좋겠습니다.)


<Alt + ` 에 맵핑한 한 줄 주석>: 

주로 그날 그날의 코딩에서 흔적을 남기기 위해 많이 사용하고, 덧붙여서 끝에 한글이나 영문으로 내용에 대한 추가 주석도 남기기도 했었죠..


<이 주석은 잘 사용하지 않음>

위 주석과 똑같은 형태이지만 // 형태가 아닌 /* */ 형태의 주석입니다.


<ALt + 1 에 맵핑한 한 줄 주석>

이 주석 형태는 아래 주석과 더불이 사용해서 한 블럭 단위로 코드를 추가할 때 블럭의 코드 추가 이유를 덧붙이기 좋은 주석이 되겠네요.

대괄호 앞에서 더블클릭하면 블럭의 영역이 어디까지인지 알 수 있겠습니다.


<Alt + 2에 맵핑한 한 줄 주석>




<새로운 파일을 만들 때 종종 사용하는 파일 헤더 주석 (주로 헤더파일에서 사용)>

새로운 파일을 만들어야 할 때, 형식은 모든 파일들이 따르되, 파일 이름, 등등 중복되는 형태를 단순히 Ctrl + C, Ctrl + V만으로는 부족함을 느끼던 분들에게 아래 매크로를 추천합니다.


<새로운 함수 앞에서 사용 가능한 헤더 파일 형태>

새로운 함수가 만들어지면 함수 위에 함수에 대한 내용 설명이 필요할 때 유용하게 쓰실 수 있을 겁니다.




<매크로 파일 공개 (두둥!)>

위에서 사용한 매크로 파일은 아래에 첨부합니다. 마음껏 사용하세요.



<간단한 사용 설명>

1. 소스 인사이트를 설치하면 Base 라는 프로젝트가 존재합니다. (아마 소스인사이트를 이미 사용하고 있는 사람들이라도 Base 프로젝트에 대해서는 잘 인지 못하고 계신 분들드 있을 듯 하네요.)

위 매크로를 내가 만든, 그리고 앞으로 만들 소스 인사이트 프로젝트에서 마음껏 쓸려면 이 Base 프로젝트 폴더 밑에 매크로를 저장해야 합니다.


Base 프로젝트의 위치는 보통 윈도우 창에서 문서 - Source Insight - Projects 밑에 있습니다. 

(절대경로(@@는 사용자명) : C:\Users\@@\Documents\Source Insight\Projects)



2. Option에 Key assignment..를 실행합니다.

이 창에서 command에 macro 나 SI를 누르면 매크로가 보입니다.

si35_auto.em 에 실행가능한 매크로는 이름을 모두 SI로 시작하게 해 놓았기 때문에 SI로 검색해 봅니다.

리스트 중에서 //를 이용한 한줄 코맨트 매크로(SICommentLineUsingSlashes)를 선택합니다.



여기에서 Assign New Key... 버튼을 누르면 아래와 같이 나옵니다. 여기에서 키 조합으로 Alt + ` 를 눌러 봅니다.

물론 여러분이 어떤 키조합을 하든 그건 상관은 없겠죠? (다만 기존에 사용되고 있는 키조합은 다시 물어보는 화면이 나오니 참고하시고요)


네.. 키조합 완성~ OK 버튼을 누르고 화면에서 빠져나갑니다.



3. Alt + ` 키조합을 화면에서 눌러봅니다.

아래 그림처럼(저는 3군데에서 눌러보았는데요.) 앞으로 원하시는 곳에 코맨트 넣으시면 됩니다.ㅎㅎ


4. 다른 매크로 코멘트에 대해서도 원하는 단축키를 적용해서 등록해 주시면 됩니다.

    • SICommentLine : /* */ 를 이용한 한 줄 주석
    • SICommentLineStart : start ==[[ 형태의 주석
    • SICommentLineEnd : ]]== End 형태의 주석
    • SICommentHeaderFile : 헤더(.h)파일 첫머리에 놓는 주석
    • SICommentSourceFile : 소스(.c)파일 첫머리에 놓는 주석
    • SICommentFunction : 함수 위에 놓는 주석
    • SITabToIndentedSpace : 소스코드의 탭을 space로 변경하는 기능



<매크로 수정>

si35_auto.em 파일에서 Key Assignments로 단축키 눌러서 사용해 보시고 변경이 필요한 부분이 있으면 직접 수정하셔서 사용하시면 되겠습니다.

가장 처음에 바꾸어야 할 부분은, Comment에서 본인 이름이 되겠죠?


si35_auto.em 파일에서 "ErnestCho", 또는 "CYC" 로 검색(Ctrl+F, F3, F4) 해 보시면 몇 군데 문자열이 보일 것입니다. 이걸 본인 이름으로 변경하시면 됩니다.





<기타 매크로>


1. SITabToIndentedSpace()

SITabToIndentedSpace() 매크로의 경우 따로 언급 드리지는 않았습니다만, 이름에서도 알 수 있겠지만 Tab을 스페이스로 변경해 주는 매크로입니다.

소스코드를 분석하다 보면 제일 힘들고 가독성이 떨어지는 부분이, 인덴트가 맞지 않는 것입니다. 즉, 내가 원하는 길이의 탭이 들어가 있지 않거나 탭 수가 달라서 이상하게 보인다는 점입니다. 

가령, 다른 에디터에서는 탭이 8이라서 잘 보였는데 Source Insight에서는 탭을 4나 3으로 지정했다면? 그런데 소스코드 군데군데 스페이스와 탭이 같이 쓰여져 있다면? 인덴트가 무너져서 이상하게 보일 것입니다.

요즘은 모르겠습니다만, 과거에는 노트패드에서 조차도 소스코드는 인덴트가 무너지지 않은 채로 보여야 한다고 해서 탭 수를 3, 모든 탭은 스페이스로 쓰도록 하였었습니다.

어쨌든, 소프트웨어 팀에 합류하게 되면 가장 먼저 받는 지령이, 탭을 얼마로 하고 탭은 탭으로 또는 탭을 스페이스로 하라는 이야기를 들을 것입니다. 물론 개인이 혼자 한다면, 스스로 규정을 만드는 것도 중요할 것입니다.


썰이 길었습니다만,  SITabToIndentedSpace() 매크로는 따라서 영역을 지정한 공간에 존재하는 탭을 스페이스 3으로 바꾸어주는 매크로입니다. ^^

이를 잘 응용하면, 1. 반대의 경우, Space를 Tab으로 변경하는 것도 가능할 것이고, 2. 영역을 지정한 공간을 주석 // 으로 처리한다던지, 해제한다던지 하는 명령어도 만들 수 있을 것 같네요. 구현은 여러분의 몫으로.. ^^


2. Util.em 내부에 있는 매크로들..

기본적으로 util.em 이라는 파일이 base 프로젝트에 있습니다. 여기에도 몇 가지 매크로가 있어서 이를 직접 키조합으로 사용하거나 응용해서 다른 매크로를 만들 수 도 있습니다.


이 매크로에 대해서는 일일이 설명드리지는 않겠습니다. 직접 사용해 보시고 판단하시기 바랍니다.




이상으로 Source insight에서 재공하는 macro에 대해 알아보았습니다.



<끝>