AngularJS와 관련된 프로젝트를 개발하는 AngularUI팀에 합류하고 나서는 AngularJS-Atom에 손을 거의 못 대고 있었다. 그동안 AngularUI팀에서 잘릴까 봐 걱정도 꽤 했지만, 다행히 그러진 않았다. AngularUI 하위에 프로젝트가 많다 보니 각 프로젝트는 그냥 프로젝트 담당자에게 맡기고 거의 건드리지 않는다. 나도 처음 합류하고 커밋했을 때만 거의 라인단위로 리뷰를 하고 이슈에만 댓글을 달아주고는 내가 릴리즈는 어떻게 해야 하나 고민하자 알아서 하면 된다고 한 뒤로는 거의 건드리지 않는다.
v0.1.0
스니펫과 자동완성 등을 주로 지원하다가 9월에 리포팅 받은 버그를 좀 수정하고 v0.0.5를 릴리즈 하고 나서는 거의 손을 못 대고 있었다. 그럼에도 그 사이에 15,000번이나 다운받는 패키지가 되어서 새 버전을 릴리즈 해야 한다는 압박감도 꽤 있었다.
그사이에 이슈로 올라온 내용 중에는 ng-*
같은 디렉티브에 신텍스 하이라이트를 해달라는 이슈가 제일 큰 요구사항이었지만 이걸 어떻게 해야 하는지 알 수가 없었다. Atom은 HTML을 사용하므로 에디터 내의 작성하는 코드도 HTML로 되어 있는데 특정 키워드에 신택스 하이라이트를 추가하려면 그 키워드에 새로운 class를 추가해야 하는데 이걸 어떻게 해야 하는지 몰랐다. 도움 요청도 해봤지만(forum에 물어볼 걸 그랬나..) <p>
태그에 CSS를 주라는 엉성한 대답만 돌아왔고 여러 번 시도했지만, 방법을 찾지 못했다.
비슷한 류의 패키지의 소스를 참고하다가 grammars를 사용해서 신택스 하이라이트를 추가할 수 있다는 것을 깨닫게 되었다. Atom은 TextMate의 규칙을 많이 따르고 있는데 그래머도 TextMate의 방식을 그대로 따르고 있었고 Atom 문서에도 TextMate의 그래머 문서를 보라고 안내가 되어 있어서 다 읽어봤다. Atom은 문서화가 아직 엄청나게 부실하다.
결국, 그래머로 어느 정도 해결은 했지만, 기존 HTML 문법을 오버라이딩하는 방법을 찾지 못해서 또 한참 고생하다가 TextMate쪽으로 뒤져서 겨우 방법을 찾아냈다. 아.. 문서화가 정말 너무 부족하다. 어쨌든 한참의 삽질을 거쳐서 원하는 형태로 신택스 하이라이트를 추가하는 방법을 찾아냈고 추가로 Angular Expressions에도 신택스 하이라이트를 추가했다.
그동안 Atom의 방식을 제대로 이해 못 해서 간단한 스니펫과 자동완성만 지원하고 있어서 테스트도 작성하지 않았는데 이번 업데이트로 구조도 꽤 많이 파악하고 테스트도 추가했다. 조금씩 모양이 갖춰져 가고 있다. 새로운 기능도 추가하고 했기에 이번에 마이너 버전을 올려서 v0.1.0으로 릴리즈를 했다.
Comments