概要
Atom で Common Workflow Language を書くためのシンタックスハイライタがほしかったのだが、みつからなかったので、とりあえず作り始めてみた。
単純な機能を作って、そこから、できることならば色々やってみたい。
- format で、EDAMが使われていたら、何形式なのかを表示するとか
- 入力と出力のアシストとか
- 使える index を保管するとか
準備
.atom/packages/
に language-cwl
というディレクトを作った。
atom を reload すると、よみこまれるようだ
開発版について
開発版のパッケージを入れるディレクトリも別に作ることができる。
これについては、あとで書く予定
atom -d
で、起動すると開発版のパッケージがつかわれるようになる
language-cwl を作るに当たって
まずは、雛形のディレクトリをつくった
.
├── CHANGELOG.md
├── grammars
│ └── cwl.cson
├── LICENSE
├── package.json
└── README.md
package.json
{
"name": "language-cwl",
"version": "0.1.0",
"description": "CWL support in Atom",
"keywords": [
],
"repository": {
"type": "git",
"url": "https://github.com/manabuishii/language-cwl"
},
"bugs": {
"url": "https://github.com/manabuishii/language-cwl/issues"
},
"license": "MIT",
"engines": {
"atom": ">=1.0.0 <2.0.0"
},
"dependencies": {
}
}
grammers/cwl.cson
まずは、コメントアウトにだけ対応。
ただし、クォートの中とかは考えていない。
'scopeName': 'source.cwl'
'name': 'CWL'
'fileTypes': ['cwl']
'patterns': [
{
# comment
'match': '#.*$'
'name': 'comment.line.number-sign.cwl'
}
]
結果
キーワードを、ハイライトしたい
まずは、以下のようなものを考えて cwlVersion
を、ハイライトしたい
# !/usr/bin/env cwl-runner
cwlVersion: v1.0
grammers/cwl.cson
cwl.json を作った
'scopeName': 'source.cwl'
'name': 'CWL'
'fileTypes': ['cwl']
'patterns': [
{
# keyword
'match': '\\b(cwlVersion)\\b'
'name': 'keyword.control.cwl'
},
{
# comment
'match': '#.*$'
'name': 'comment.line.number-sign.cwl'
}
]
結果
suppoert.type でいいのかは、また検討する必要があるが、
以下のものを、patternsに追加
{
# type
'match': '\\b(CommandLineTool|ExpressionTool|Workflow)\\b'
'name': 'support.type.cwl'
}
こうすると、別の色で表示してくれるようになった
結果
開発版自分メモ
Atom リロードは、コマンドパレットから、Window Reload
スコープを確認する
カーソル位置のスコープを確認する
コマンドとしては Editor: Log cursor scope
マックだと、デフォルトのキーバインドが、割り当てられているようだが、
Linuxや、Windows だと、割り当てられていないかもしれない。
以下、実行画面 Scopes at Cursor
のところが、現在のカーソル位置のスコープ