Saturday, June 5, 2010

snippet의 실행을 간단하게. (부제:shebang의 확장으로 xml까지)

이 블로그는 도저히 길어져서 언어로 쓰기 어렵군요.
1시간짜리 경험의 이야기 일 듯 싶어서,
간단히 코드로 보여주고 줄거리는 상상에 맞기는 것이 좋겠습니다.

결론은 shebang의 방식을 xml로 까지 확장해서 사용하고 있으며,
이는 어느 언어든 적용할 수 있는 유연한 방식이었다. 라는 것입니다.

구현은 jscript로(emeditor에서 WSH를 사용할 수 있는 이유로) 되어 있으며
현재 매우 지저분해서 공개할 수 없지만,
이 아이디어는 약 4년전부터 구현하기 시작해 지금도 계속 확장중입니다.

snippet에 해당되는 파일은 물론 지금도 계속 늘려가는 중입니다만, 현재는 8만9천여개의 파일이 모아져 있는데, 꽤 유용하게 사용되고 있습니다.
비슷한 고민을 하신적이 있으시면, 자료와 아이디어를 공유하고 싶습니다. 트위터 @crowdy까지 연락 주시면 언제든 환영합니다.

우선 shebang의 사용


#!/usr/bin/env perl
print "hello";


그리고 제가 중간정도에 사용하던 shebang의 확장

/*
#run:cscript c:\crowdy\emmacro\data\bin\runcrowdy.js {fullname}
//SourceGUID:2877F00B-0CC4-4063-B5A6-D22D127DA319
//ExecuteStart
IF not exist c:\temp\2877F00B-0CC4-4063-B5A6-D22D127DA319 mkdir c:\temp\2877F00B-0CC4-4063-B5A6-D22D127DA319
cd c:\temp\2877F00B-0CC4-4063-B5A6-D22D127DA319
copy {fullname} .
g++ -W -Wall -Werror {fullname} -o {filename.name}_gcc.exe
strip {filename.name}_gcc.exe
{filename.name}_gcc.exe
//ExecuteEnd
*/

#include

int main()
{
std::cout << "This is a native C++ program." << std::endl;
return 0;
}



그리고 이것은 제가 지금 사용하고 있는 snippet 파일



Schema="1.8" FileName="AddBeanFactoryPostProcessorToXmlBeanFactory.psf"
CommandLine=""
Generated="2010-05-31T01:46:35+10:00" xmlns="C:\Program Files\crowdy Script\psf.xsd">

script



context.xml

"http://www.springframework.org/dtd/spring-beans.dtd">




]]>



references
.
e:\ineedcodesample\Language\Jar\STUVWXYZ\spring.jar
e:\ineedcodesample\Language\Jar\JKL\jakarta-commons\commons-logging.jar





그리고 다음은 에디터(emeditor)에서 단축키를 눌러 매크로로 실행한 화면