ATOM
bioinformatics
syntax-highlight
cwl

Atom の language に CWL を追加する

概要

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'
  }
]

結果

Screenshot from 2017-09-29 13-27-30.png

キーワードを、ハイライトしたい

まずは、以下のようなものを考えて cwlVersion を、ハイライトしたい

#!/usr/bin/env cwl-runner
cwlVersion: v1.0

Screenshot from 2017-09-29 15-01-58.png

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'
  }
]

結果

Screenshot from 2017-09-29 13-28-58.png
type(CommandLineTool) などを追加

suppoert.type でいいのかは、また検討する必要があるが、
以下のものを、patternsに追加

  {
    # type
    'match': '\\b(CommandLineTool|ExpressionTool|Workflow)\\b'
    'name': 'support.type.cwl'
  }

こうすると、別の色で表示してくれるようになった

結果

Screenshot from 2017-09-29 15-01-58.png

開発版自分メモ

Atom リロードは、コマンドパレットから、Window Reload

スコープを確認する

カーソル位置のスコープを確認する
コマンドとしては Editor: Log cursor scope

マックだと、デフォルトのキーバインドが、割り当てられているようだが、
Linuxや、Windows だと、割り当てられていないかもしれない。

以下、実行画面 Scopes at Cursor のところが、現在のカーソル位置のスコープ

Screenshot from 2018-01-16 16-40-13.png