서브라임텍스트 특정 확장자에 Syntax 지정하기(PlantUML)

Mar 27, 2017

다이어그램을 그리기 위해 PlantUML을 사용하고 있다. PlantUML 파일을 수정할 때, 실시간으로 그려진 다이어그램을 볼 수 있다는 장점 때문에 평소에 Atom 에디터를 사용했었다. Atom을 사용하는 이유는 이것밖에 없었다. 그래서 가능하면 이 작업도 서브라임텍스트로 할 수 있었으면 좋겠다고 생각했다.

Atom을 사용하기 전에 서브라임에서 PlantUML 문법 지원을 위해 플러그인을 하나 사용한 적이 있다. 문법 하이라이트는 잘 지원하지만, 내부적으로 PlantUML java 프로세스가 실행하고, 저장할 때마다 새로운 이미지 파일을 계속 생성하는 방식이었다. 이런 점 때문에, Atom 에디터로 넘어가게 됐었다.

“Node.js 서버가 PlantUML 파일을 이미지 파일로 제공하는 건 어떨까?”와 같은 생각을 했고, 그렇다면 에디터에서 파일을 수정하고, 브라우저로 확인하면 되므로, 파일이 생성되지 않아도 됐다.

그런데 기본 확장자가 wsd로 되어 있다. Atom에서는 puml을 사용해서 서브라임에서 이 파일들을 열면 Plain text로 나타난다. 확장자를 바꾸면 되지만, wsd보다는 puml이 PlantUML이라는 것을 더 잘 표현하는 것 같아서 puml을 그대로 사용하고 싶었다.

방법은 플러그인의 설정 파일만 변경하면 된다. 경로는 다음과 같다. 다른 플러그인도 비슷한 형태일 것으로 보인다.

# OSX
~/Library/Application Support/Sublime Text 3/Packages/sublime_diagram_plugin/Syntaxes/diagram.tmLanguage.xml

# Windows
C:\Users\{Username}\AppData\Roaming\Sublime Text 3\Packages\sublime_diagram_plugin\Syntaxes\diagram.tmLanguage.xml

puml이라고 되어 있는 부분을 추가하면 된다.

diagram.tmLanguage.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>fileTypes</key>
    <array>
        <string>wsd</string>
        <string>puml</string> <!-- 추가!!! -->
    </array>
    <key>name</key>
    <string>Diagram</string>
    <key>patterns</key>
    <array>
        <dict>
            <key>begin</key>
            ...

그리고 에디터를 더 빠르게 사용하기 위해서 서브라임텍스트에서 기본적이고, 필수적인 기능(Lint, Syntax highlight)을 제외하고 플러그인 사용하는 부분을 최대한 안 쓰려 노력하고 있다.

See Also