ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 소스인사이트 매크로 - Comment Upper
    카테고리 없음 2007. 8. 23. 10:51

    소스인사이트 매크로 가운데 가장 많이 쓰는 매크로가 무엇이냐고 물으신다면

    CommentUpper 매크로라고 말씀드리죠.ㅎㅎ

    아무래도 소스 크기가 워낙 크고 작업 기간이 길다보니
    자기가 짠 소스도 가끔은 왜 이런 짓을 했지하고 기억이 가물가물하기 마련이죠^^;

    아래 매크로는 팝업창으로 comment를 입력받기 때문에 소스인사이트의 고질적인 문제인 한글/스패니쉬 입력도 문제 없이 사용할 수 있습니다.

    우선 소스 코드는 아래와 같습니다.

    macro CommentUpper()
    {
        sz = ask("Puts Comments *^^*"); // 팝업창을 보여준다.
        CommentUpperSZ(sz); // 실제로 수행할 함수
    }
    // CommentUpper를 실행하면 다음과 같은 주석이 생성된다.
    //                        /// alex [2007/8/23] 입력한 내용
    macro CommentUpperSZ(sz)
    {
        szMyName  = "alex"; // 주석 맨 앞에 넣을 이름 입력
        szComment = sz; // 팝업창을 통해 입력받은 텍스트
        stime = GetSysTime(true); // 현재 시간을 얻어온다.
    
        hbuf = GetCurrentBuf(); // 현재 사용되는 buff를 얻어온다.
        hwnd = GetCurrentWnd(); // 현재 사용되는 Window를 얻어온다.
        sel = GetWndSel(hwnd); // 현재 커서의 위치를 알기 위해 selection을 얻는다.
    
        iLine = sel.lnFirst; // 현재 커서가 위치한 라인을 얻는다.
        szTemp   = GetBufLine (hbuf, iLine); // 현재 커서가 위치한 라인의 정보를 임시로 저장
        iMaxChar = GetBufLineLength (hbuf, iLine); // 현재 커서가 위치한 라인의 길이를 얻는다.
    
        /*---  현재 커서가 위치한 라인 앞에 space나 tap의 갯수를 얻어온다.---*/
        i          = 0;
        nblank   = 0;
        nTab     = 0;
        while (iMaxChar >= i)
        {
            ch = szTemp[i];
            if (ch == " ")
                nblank = nblank + 1;
            else if (szTemp[i] == "\t")
                nTab = nTab + 1;
            else
                break;
            i = i + 1;
        }
        /*-- 현재 커서가 위치한 라인의 space, tap의 개수 얻어오기 끝--*/
        // 실제로 입력된 주석 string
        // /// + 위에서 설정한 이름 + [ + 년도 + / + 월 + / + 일 + ] + 팝업에서 입력한 내용
        szComment = cat("","/// " # szMyName # " [" # stime.year # "/" # stime.month # "/" # stime.day # "] " # szComment);
    
        // 커서가 위치한 라인앞에 붙은 space만큼 주석앞에 space를 붙인다.
        while (nblank > 0)
        {
            szComment = cat(" ", szComment);
            nblank = nblank - 1;
        }
        // 커서가 위치한 라인앞에 붙은 tap만큼 주석앞에 tap를 붙인다.
        while (nTab > 0)
        {
            szComment = cat("\t", szComment);
            nTab = nTab - 1 ;
        }
    
        // 커서가 위치한 곳에 주석을 붙인다.
        InsBufLine (hbuf, iLine, szComment);
        // 커서를 한줄 내려서 원래 위치로 변경한다.
        SetBufIns(hbuf, iLine+1, GetBufLineLength (hbuf, iLine+1));
    }


    주석달기가 더 힘들군요;

    코드는 정리릉 안해서 엉망입니다.;;;

    (돌아가기만 하면 프로그램이 아니잖아..-_-)

    어쨌든..동작은 하니까 넘어가죠....(퍽.)

    매크로를 실행하는 방법은 다음 글에 올리도록 하겠습니다.

Designed by Tistory.