Sublime Text 3 に PackageDev を使用してオリジナルのシンタックスハイライト設定を作る試み

経緯

はてな記法を使ってテキストエディタで文章を書くことが多いので、はてな記法用のシンタックスハイライトを作りたい。

  • 2018-10-24 追記
    • .YAML-tmLanguageファイルの書き方がガラリとかわっていたので、この記事の内容は使えない。後日再チャレンジする。
  • 2020-07-08 追記
    • PackageDevの新規ファイル作成・コンバート手順・.YAML-tmLanguageファイルの書き方がちょっとわかったので使えるようになった。

手順

  1. Package Controlで「PackageDev」を検索してインストール
  2. Package Controlで「PackageDev: New TextMate Syntax Definition (YAML)」を検索して実行
  3. 生成されたファイルを保存
    • ファイル名:任意.YAML-tmLanguage
    • 保存場所(Mac):
      • ~/Library/Application Support/Sublime Text 3/Packages/User
    • 保存場所(Windows):
      • C:\Users\ユーザー名\AppData\Roaming\Sublime Text 3\Packages\User
  4. 中身を書き換えて上書き保存
  5. コンバートする
    • Build With を実行
      • Mac:cmd+shift+B
      • Windows:ctrl+shift+B
      • ツールバーから実行する場合は Tools > Build With…
    • 「Convert To… – Property List」を選んで実行
  6. 先程保存した場所に拡張子が.tmLanguageになった同名のXML形式ファイルが生成される
  7. 再起動して完了

記述内容

name

syntax difinition のドロップダウンリストに表示される名前

scopeName

  • 形式:source.lang_name または text.lang_name
  • プログラミング言語ならsource、マークアップなどそれ以外の場合はtext。
  • lang_nameには対応する拡張子を記述。

fileTypes

  • 利用するファイルの種類。記述した種類を開いたときに自動的に適用されるようになる。
  • 例:[txt](テキストファイル)

uuid

自動生成されるユニークID。編集不要。

pattern

本文にあたるところ。書き方調べ中。

複数行・複数条件での一致/適用させるのはできないっぽい。

ソース

hatena.YAML-tmLanguage(作成中)

# [PackageDev] target_format: plist, ext: tmLanguage
 ---
name: Hatena Notation
scopeName: text.txt
fileTypes: [txt]
uuid: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX

patterns:
- name: markup.heading
  match: '^\*(.*)'
  comment: 見出し

- name: comment.line.double-slash
  match: '^\={2,}'
  comment: readmore

- name: markup.underline.link
  match: '\[[^=]+\:{1,2}title\=[^\<br>+\]'
  comment: リンク記法

- name: markup.underline.link
  match: '^https?\:\/\/.+$'
  comment: リンク記法(個人で拡張したもの)

- name: markup.underline.link
  match: '\[https?:\/\/[^\<br>+\]'
  comment: リンク記法(個人で拡張したもの)

- name: markup.bold
  match: '>\|([a-z]+)?\|\n'
  comment: pre(開始)

- name: markup.bold
  match: '^\|\|<$'
  comment: pre(閉じ)

- name: comment.line
  match: '^>>$'
  comment: 引用(開始)

- name: comment.line
  match: '^<<$'
  comment: 引用(閉じ)

# - name: 
#   match: '^\-(.*)'
#   comment: 項目リスト

# - name: 
#   match: '^\+(.*)'
#   comment: 項目リスト
...

参考URL

ドキュメント

関連

Comments

  • スパム対策のため、コメント本文にURLが含まれている場合は「承認待ち」となり、すぐに投稿が反映されません。ご了承ください。
  • 公序良俗に反する内容、個人が特定できる情報、スパム投稿と思われるコメント等については、予告なく編集・削除する場合があります。