*ft_context.txt*	For Vim バージョン 9.1.  Last change: 2024 Jan 01

これは ConTeXt ファイルタイププラグインのドキュメントである。

NOTE: このプラグインは +vim9script が必要である。

==============================================================================
☆内容						*context.vim* *ft-context*

1. 前書き				|ft-context-intro|
2. コマンド				|ft-context-commands|
3. 設定					|ft-context-settings|
4. マッピング				|ft-context-mappings|

==============================================================================
							*ft-context-intro*
前書き ~

ConTeXt は、LaTeX と同じで、TeX 上に構築されたマクロベースの組版システムである:
>
	https://wiki.contextgarden.net
	https://wiki.contextgarden.net/Vim
<
ConTeXt プラグインは構文ハイライト、組版した ConTeXt 文章の補完とサポートを提
供する。文章を組版するのに推奨する方法は |:ConTeXt| を使うことである。これは
`$PATH` 上で見付けた `mtxrun` スクリプトを動作させる。

コマンドとその環境でよりきめ細かな制御をするには、`context.Typeset()` を直接使
うことができる (または旧来の Vim script からは `context#Typeset()`)。例えば、
`~/context` 内にインストールされているバージョンの ConTeXt の場合、以下のよう
にそれを使用する関数を定義できる:
>
	import autoload 'context.vim'

	def MyConTeXt()
	    const env = {'PATH':
	      printf("%s/context/tex/texmf-<os>-<arch>/bin:%s", $HOME, $PATH)}
	    context.Typeset("%", env)
	enddef

このコードは `~/.vim/after/ftplugin/context.vim` に置かれるかもしれない。そし
て、カスタムコマンドを呼び出すためのマッピングを定義することができる:
>
	nnoremap <silent><buffer><leader>t <scriptcmd>MyConTeXt()<cr>
<
`context.Typeset()` は、カスタムの組版コマンドを指定するための 3 番目のオプショ
ナルな引数を受け入れる。これは、パスを受け取り、コマンドをリストとして返す関数
でなければならない。例えば:
>
	def ConTeXtCustomCommand(path: string): list<string>
	  return ['mtxrun', '--script', 'context', '--nonstopmode', path]
	enddef

	context.ConTeXtTypeset("%", v:none, ConTeXtCustomCommand)
<
大規模なプロジェクトでは、ルートドキュメントと様々な章ファイルで構成されること
がよくある。章ファイルを編集する場合、ルートファイルに切り替えることなく、章
ファイル上で直接 |:ConTeXt| を呼び出すと便利である。各章ファイルの先頭には、
ルートファイルへの相対パスを指定する "マジック行" を追加することができる。例え
ば:
>
	% !TEX root = ../MyRoot.tex
<
Vim は、カレントバッファの最初の 10 行内にマジック行を検索する: 見付かった場合
はカレントバッファの文書ではなく、その行で指定された文書が組版される。ルート文
書が Vim で開かれている必要はない。

補完と構文ハイライトを拡張するには、ConTeXt を使用して補助ファイル群を生成して
設定に追加する。設定が `~/.vim` にある場合は、これらのコマンドが使用できる:
>
	mkdir -p ~/.vim/syntax/shared
	cd ~/.vim/syntax/shared
	mtxrun --script interface --vim
<
最後のコマンドは以下の構文ファイルを生成する:

- `context-data-context.vim`;
- `context-data-interfaces.vim`;
- `context-data-metafun.vim`;
- `context-data-tex.vim`.

同じコマンドを使用して、これらの構文ファイルを更新できる。

							*ft-context-commands*
コマンド ~
					*:ConTeXt*
カレントバッファの文書を組版するバックグラウンド |job| を開始する。このコマン
ドは別バッファの文書を組版したい場合、オプションとしてバッファ名を受け入れる。

					*:ConTeXtLog*
カレントバッファの文章ソースに対応するログファイルを編集する。

					*:ConTeXtJobsStatus*
現在バックグラウンドで動作しているジョブ数を表示する。

					*:ConTeXtStopJobs*
現在バックグラウンドで動作している ConTeXt ジョブをすべて停止する。

							*ft-context-settings*
設定 ~
					*'b:context_ignore_makefile'*
					*'g:context_ignore_makefile'*
|:make| で(同期的な)文章の組版が行える。Makefile が存在し、このオプションが未
設定の場合、通常の `make` が使用される。このオプションが設定されている場合は、
Makefile が存在していても、代わりに `mtxrun` が呼び出される。
>
	g:context_ignore_makefile = 0
<
NOTE: |:make| を使用する前に、バッファの作業ディレクトリを組版するファイルの
ディレクトリに設定する。

					*'g:context_extra_options'*
`mtxrun` に渡す追加のオプションのリスト。
>
	g:context_extra_options = []
<
					*'b:context_include'*
					*'g:context_include'*
\startGROUP と \stopGROUP の間で有効になる構文ハイライトのファイルタイプ/GROUP
のペアの辞書。デフォルトでは `\startXML` と `\stopXML` の間がXMLでハイライトさ
れる。
>
	g:context_include = {'xml': 'XML'}

NOTE: Lua と MetaPost は個別のブロック内では常にハイライトされる。

					*'g:no_context_maps'*
設定時、マッピングは定義されない。
>
	g:no_context_maps = 0
<
							*ft-context-mappings*
マッピング ~

tp			"reflow TeX paragraph"、TeX での段落を整形する。

i$			"inside inline math block"、インラインの数式ブロック内
			部を選択する。

a$			"around inline math block"、インラインの数式ブロックを
			選択する。

]]			[count] セクションの開始に進む。

[[			[count] セクションの開始に戻る。

][			[count] セクションの終了に進む。

[]			[count] セクションの終了に戻る。

]}			[count] ブロックの終了 (\stop..., \setup...,
			\define...) に進む。

[{			[count] ブロックの開始 (\start..., \setup...,
			\define...) に戻る。

 vim:tw=78:sw=4:ts=8:noet:ft=help:norl:
