summaryrefslogtreecommitdiff
path: root/mnv/runtime/doc/ft_hare.txt
diff options
context:
space:
mode:
Diffstat (limited to 'mnv/runtime/doc/ft_hare.txt')
-rw-r--r--mnv/runtime/doc/ft_hare.txt130
1 files changed, 130 insertions, 0 deletions
diff --git a/mnv/runtime/doc/ft_hare.txt b/mnv/runtime/doc/ft_hare.txt
new file mode 100644
index 0000000000..5f5af6a4cf
--- /dev/null
+++ b/mnv/runtime/doc/ft_hare.txt
@@ -0,0 +1,130 @@
+*ft_hare.txt* Support for the Hare programming language
+
+==============================================================================
+CONTENTS *hare* *hare.mnv*
+
+1. Introduction |ft-hare-intro|
+2. Filetype plugin |ft-hare-plugin|
+3. Haredoc filetype |ft-haredoc-plugin|
+4. Indentation settings |ft-hare-indent|
+5. Compiler support |compiler-hare|
+
+==============================================================================
+INTRODUCTION *ft-hare-intro*
+
+This plugin provides syntax highlighting, indentation, and other supporting
+functionality for the Hare programming language.
+
+
+FILETYPE PLUGIN *ft-hare-plugin*
+
+This plugin has a few different variables that can be defined inside your
+|mnvrc| to adjust its behavior.
+
+ *hare-folding*
+This plugin supports folding `{ }` blocks. To enable folding, add the
+following to a file inside your |after-directory| (e.g.
+~/.mnv/after/ftplugin/hare.mnv): >
+
+ setlocal foldmethod=syntax
+
+Because syntax-based folding tends to create many small folds, consider
+setting a few related options, such as 'foldminlines' or 'foldnestmax'.
+
+ *hare-symbol-operators*
+Most symbolic operators do not receive any highlighting by default (with the
+exception of "?", "!", and "::"). If you prefer highlighting all operators,
+you can link them to your preferred highlight group inside your |mnvrc|. For
+example: >
+
+ hi def link hareCast hareSymbolOperator
+ hi def link hareSymbolOperator hareOperator
+<
+ *g:hare_recommended_style*
+The following options are set by default, in accordance with Hare's official
+style guide: >
+
+ setlocal noexpandtab
+ setlocal shiftwidth=8
+ setlocal softtabstop=0
+ setlocal tabstop=8
+ setlocal textwidth=80
+
+To disable this behavior, add the following to your |mnvrc|: >
+
+ let g:hare_recommended_style = 0
+<
+ *g:hare_space_error*
+By default, trailing whitespace and spaces followed by <Tab> characters are
+highlighted as errors. This is automatically disabled while in insert mode.
+To turn off this highlighting completely, add the following to your |mnvrc|: >
+
+ let g:hare_space_error = 0
+
+
+HAREDOC FILETYPE *ft-haredoc-plugin*
+
+This plugin will automatically detect README files inside Hare modules, using
+a recursive directory search, and give them the "haredoc" filetype. Because
+this is such a common filename, this plugin only searches for Hare source
+files within the same directory by default.
+
+ *g:filetype_haredoc*
+The `g:filetype_haredoc` variable can be used to tweak the depth of this
+search, or bypass the detection of Hare documentation files altogether:
+
+ Value Effect~
+ 0 Search disabled
+ 1 Search current directory only (this is the default)
+ 2 Search one level of subdirectories
+
+The search depth may be any positive integer, but values greater than 2 are
+very unlikely to provide any tangible benefit and can impact performance.
+
+
+INDENTATION SETTINGS *ft-hare-indent*
+
+Unlike other settings, indentation settings may be configured on a per-buffer
+basis, overriding any existing global configuration. To do so, simply prefix
+the variable with |b:| instead of |g:|.
+
+ *g:hare_indent_match_switch* *b:hare_indent_match_switch*
+By default, the continuation lines for "match" and "switch" conditions are
+only indented one level: >hare
+
+ const file = match (os::create(path, 0o644,
+ flag::WRONLY | flag::TRUNC)) {
+ case let file: io::file =>
+ yield file;
+ // ...
+
+If you prefer indenting them two levels, more closely resembling "if" and
+"for" conditions, add the following line to your |mnvrc|: >
+
+ let g:hare_indent_match_switch = 2
+<
+ *g:hare_indent_case* *b:hare_indent_case*
+By default, the continuation lines for "match" and "switch" cases are indented
+two levels, to visually distinguish them from the case body: >hare
+
+ case ltok::I8, ltok::I16, ltok::I32,
+ ltok::I64, ltok::INT =>
+ // ...
+
+If you prefer a different level of indentation, you can adjust it using
+`g:hare_indent_case`. The possible values are 0, 1, and 2.
+
+
+COMPILER SUPPORT *compiler-hare*
+
+If a Makefile is detected in the current directory, this plugin will assume
+you are using "make" for your build system, and will leave 'makeprg' as-is.
+Otherwise, "hare build" will be used.
+
+ *g:hare_makeprg_params*
+When using "hare build", additional compiler options may be appended to
+'makeprg' using `g:hare_makeprg_params`. The default is "-q", to suppress
+printing to stdout when building.
+
+==============================================================================
+ mnv:tw=78:ts=8:noet:ft=help:norl: