summaryrefslogtreecommitdiffstats
path: root/runtime/doc/ft_context.txt
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/doc/ft_context.txt')
-rw-r--r--runtime/doc/ft_context.txt158
1 files changed, 158 insertions, 0 deletions
diff --git a/runtime/doc/ft_context.txt b/runtime/doc/ft_context.txt
new file mode 100644
index 0000000..fa83164
--- /dev/null
+++ b/runtime/doc/ft_context.txt
@@ -0,0 +1,158 @@
+*ft_context.txt* For Vim version 9.1. Last change: 2024 Jan 01
+
+This is the documentation for the ConTeXt filetype plugin.
+
+NOTE: the plugin requires +vim9script.
+
+==============================================================================
+CONTENTS *context.vim* *ft-context*
+
+1. Introduction |ft-context-intro|
+2. Commands |ft-context-commands|
+3. Settings |ft-context-settings|
+4. Mappings |ft-context-mappings|
+
+==============================================================================
+ *ft-context-intro*
+Introduction ~
+
+ConTeXt, similarly to LaTeX, is a macro-based typesetting system built on TeX:
+>
+ https://wiki.contextgarden.net
+ https://wiki.contextgarden.net/Vim
+<
+The ConTeXt plugin provides syntax highlighting, completion and support for
+typesetting ConTeXt documents. The recommended way to typeset a document is to
+use |:ConTeXt|. This will invoke the `mtxrun` script that is found in `$PATH`.
+
+For more fine grained control over the command and its environment,
+`context.Typeset()` can be used directly (or `context#Typeset()` from legacy
+Vim script). For instance, if a version of ConTeXt is installed in
+`~/context`, you may define a function to use it similar to the following:
+>
+ import autoload 'context.vim'
+
+ def MyConTeXt()
+ const env = {'PATH':
+ printf("%s/context/tex/texmf-<os>-<arch>/bin:%s", $HOME, $PATH)}
+ context.Typeset("%", env)
+ enddef
+
+This code may go in `~/.vim/after/ftplugin/context.vim`. A mapping can then be
+defined to invoke the custom command:
+>
+ nnoremap <silent><buffer><leader>t <scriptcmd>MyConTeXt()<cr>
+<
+`context.Typeset()` accepts a third optional argument to specify a custom
+typesetting command. That must be a function that takes a path and returns the
+command as a List. For example:
+>
+ def ConTeXtCustomCommand(path: string): list<string>
+ return ['mtxrun', '--script', 'context', '--nonstopmode', path]
+ enddef
+
+ context.ConTeXtTypeset("%", v:none, ConTeXtCustomCommand)
+<
+Large projects are often organized as a root document and various chapter
+files. When editing a chapter file, it is convenient to invoke |:ConTeXt|
+directly on it, rather than having to switch to the root file. A "magic line"
+can be added at the beginning of each chapter file, which specifies the
+relative path to the root file. For instance:
+>
+ % !TEX root = ../MyRoot.tex
+<
+Vim searches for the magic line in the first ten lines of the current buffer:
+if it is found, the document specified by that line is typeset rather than the
+one in the current buffer. The root document does not have to be opened in
+Vim.
+
+To extend completion and syntax highlighting, you may generate supporting
+files using ConTeXt and add them to your configuration. If you configuration
+resides in `~/.vim`, you may use these commands:
+>
+ mkdir -p ~/.vim/syntax/shared
+ cd ~/.vim/syntax/shared
+ mtxrun --script interface --vim
+<
+The last command will create the following syntax files:
+
+- `context-data-context.vim`;
+- `context-data-interfaces.vim`;
+- `context-data-metafun.vim`;
+- `context-data-tex.vim`.
+
+The same command can be used to update those syntax files.
+
+ *ft-context-commands*
+Commands ~
+ *:ConTeXt*
+Start a background |job| to typeset the document in the current buffer. The
+command accepts an optional buffer's name, if you want to typeset a document
+that is in a different buffer.
+
+ *:ConTeXtLog*
+Edit the log file corresponding to the source in the current buffer.
+
+ *:ConTeXtJobsStatus*
+Echo the number of jobs currently running in the background.
+
+ *:ConTeXtStopJobs*
+Stop all the ConTeXt jobs currently running in the background.
+
+ *ft-context-settings*
+Settings ~
+ *'b:context_ignore_makefile'*
+ *'g:context_ignore_makefile'*
+|:make| can be used to (synchronously) typeset a document. If a Makefile exists
+and this option is not set, standard `make` is used. If this option is set,
+`mtxrun` is invoked instead, even if a Makefile exists.
+>
+ g:context_ignore_makefile = 0
+<
+NOTE: before using |:make|, set the working directory of the buffer to the
+directory of the file to be typeset.
+
+ *'g:context_extra_options'*
+A list of additional options to pass to `mtxrun`.
+>
+ g:context_extra_options = []
+<
+ *'b:context_include'*
+ *'g:context_include'*
+Dictionary of filetype/GROUP pairs for which syntax highlighting should be
+activated between \startGROUP and \stopGROUP. The default is to highlight XML
+between `\startXML` and `\stopXML`.
+>
+ g:context_include = {'xml': 'XML'}
+
+NOTE: Lua and MetaPost are always highlighted within the respective blocks.
+
+ *'g:no_context_maps'*
+When set, do not define any mappings.
+>
+ g:no_context_maps = 0
+<
+ *ft-context-mappings*
+Mappings ~
+
+tp "reflow TeX paragraph".
+
+i$ "inside inline math block".
+
+a$ "around inline math block".
+
+]] [count] start of sections forward.
+
+[[ [count] start of sections backward.
+
+][ [count] end sections forward.
+
+[] [count] end of sections backward.
+
+]} [count] end of blocks (\stop..., \setup...,
+ \define...) forward.
+
+[{ [count] begin of blocks (\start..., \setup...,
+ \define...) backward.
+
+ vim:tw=78:sw=4:ts=8:noet:ft=help:norl: