コンテンツにスキップ

インストール

Timeline DSL はCLIツールとして利用します。お使いの環境に応じて、以下から導入方法を選んでください。

Homebrew で導入します。

Terminal window
brew tap keroway/tap
brew install tdsl

Homebrew を使わない場合は、ワンラインインストールも使えます。

Terminal window
curl -sSfL https://raw.githubusercontent.com/keroway/timeline-dsl/main/install.sh | sh

PowerShell でワンラインインストールします。

Terminal window
irm https://raw.githubusercontent.com/keroway/timeline-dsl/main/install.ps1 | iex

インストール後、CLIが実行できることを確認します。

Terminal window
tdsl --help
  • macOS または Linux(Homebrew / ワンラインインストール)
  • Windows(PowerShell ワンラインインストール / バイナリ手動インストール)
  • Git

cargo-binstall、cargo からの導入や、Windows バイナリの手動インストールなど、その他の導入方法は Homebrewとその他の導入方法 を参照してください。

v1.0.0 以降、構文ハイライトを提供する VS Code 拡張機能があります。v1.2.0 から Marketplace で公開されており、v1.4.0 以降はスニペットも利用できます。

VS Code の拡張機能パネル(Ctrl+Shift+X / Cmd+Shift+X)で Timeline DSL を検索してインストールします。または以下のコマンドを実行します。

Terminal window
code --install-extension keroway.timeline-dsl
プレフィックス 展開内容
timeline timeline ブロックのテンプレート(titleunitrangecalendar 込み)
lane lane 定義のテンプレート(kindorder 込み)
span span イベントのテンプレート(開始・終了日時付き)

スニペットはファイル拡張子が .tdsl のファイルで有効です。

VS Code 拡張は構文ハイライトとスニペットに加え、tdsl CLI が見つかる環境では組み込み LSP クライアントとして tdsl lsp を自動起動します。診断・補完・ホバー・定義ジャンプなどの対話的な機能は、次の言語サーバ(LSP)が担当します。

v1.11.0 以降、tdsl lsp で Timeline DSL の言語サーバ(LSP)を起動できます。LSP は標準入出力(stdio)で通信するため、LSP クライアントを持つエディタ(VS Code・Neovim・Helix・Emacs など)から接続して、.tdsl 編集中に対話的な支援を受けられます。VS Code 拡張は v1.19.0 以降で tdsl lsp を自動起動する LSP クライアントを内蔵しています。

機能 内容 バージョン
診断(Diagnostics) 構文・意味エラーを編集中にリアルタイム表示する v1.11.0〜
補完(Completion) DSL キーワードを補完する v1.12.0〜
ホバー(Hover) lane ID / QID のホバー情報を表示する。時刻リテラルには精度・offset 情報を表示する v1.12.0〜(時刻リテラルは v1.27.0〜)
定義ジャンプ(Goto Definition) lane 参照から lane 宣言へジャンプする v1.12.0〜
参照検索(References) lane ID の宣言・全参照位置を返す v1.13.0〜
リネーム(Rename) lane ID を宣言・全参照まとめて一括置換する v1.13.0〜
コードアクション(Code Action) lint の自動修正を quick fix として提供する v1.13.0〜
ドキュメントシンボル(Document Symbol) timeline > lane > 項目の階層シンボルを返す v1.13.0〜
ドキュメント整形(Formatting) 全文を正準スタイルに整形する v1.14.0〜

起動コマンドは引数を取りません。

Terminal window
tdsl lsp

各エディタからは、コマンド tdsl lsp.tdsl(言語 ID: tdsl)に紐づく言語サーバとして登録します。Neovim(0.10 以降のコア LSP、プラグイン不要)の例:

vim.filetype.add({ extension = { tdsl = "tdsl" } })
vim.api.nvim_create_autocmd("FileType", {
pattern = "tdsl",
callback = function()
vim.lsp.start({
name = "tdsl-lsp",
cmd = { "tdsl", "lsp" },
root_dir = vim.fs.root(0, { ".git" }),
})
end,
})

Helix の場合は languages.toml に登録します。

~/.config/helix/languages.toml
[language-server.tdsl-lsp]
command = "tdsl"
args = ["lsp"]
[[language]]
name = "tdsl"
scope = "source.tdsl"
file-types = ["tdsl"]
language-servers = ["tdsl-lsp"]

VS Code では Timeline DSL 拡張tdsl バイナリを PATH から解決し、tdsl lsp を自動起動します。必要に応じて拡張設定 timelineDsl.serverPathtdsl の絶対パスを指定できます。Neovim / Helix などでは上記のように手動登録します。

  • 診断 / 補完 / ホバー / 定義ジャンプ: 編集中に構文・意味エラーがリアルタイム表示され、DSL キーワードの補完、lane ID / QID のホバー、lane 参照から宣言へのジャンプが使えます。
  • 参照検索(References): lane の宣言または参照箇所にカーソルを置くと、その lane ID の全参照(lane 宣言・span / event / event_rangelane 指定・maplane プロパティ)が一覧されます。
  • リネーム(Rename): lane ID 上でリネームすると宣言と全参照が一括置換されます。lane ID 以外(キーワードや文字列リテラル)の上ではリネームできません。
  • ドキュメントシンボル(Document Symbol): timeline > lane > 項目(span / event / event_range)の階層でアウトラインを返します。
  • ドキュメント整形(Formatting): エディタの整形コマンドで全文を正準スタイルに整形します(v1.14.0〜)。CLI の tdsl fmt と同一の整形エンジンを使います。コメントは tdsl fmt と同様に保持されますが、ブロック内コメントは正準位置へ移動する場合があります。

すべての機能はソーステキストの静的解析で動き、ネットワーク I/O は不要(offline)です。

コードアクションと fixable / non-fixable lint

Section titled “コードアクションと fixable / non-fixable lint”

コードアクションは tdsl lint --fix 相当の自動修正を quick fix として提示します。lint には自動修正できるものとできないものがあります。

種別 対象 lint コードアクション
fixable start_gt_end / invalid_tags / missing_id quick fix「自動修正可能な lint をすべて修正」を提示
non-fixable unknown_lane / duplicate_id / empty_label quick fix は出ない(手で修正する)

fixable な issue が 1 件も無い場合、quick fix は表示されません。適用すると tdsl lint --fix同一の emitter でドキュメント全文が整形・置換されます。コメントは可能な限り保持されますが、ブロック内コメントは正準位置へ移動する場合があります。出力は tdsl lint --fix と一致します。

tdsl lsp の概要は Commands も参照してください。