Vim documentation: ft_hare

main help file

*ft_hare.txt*	Support for the Hare programming language

==============================================================================

CONTENTS						*hare* *hare.vim*

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
|vimrc| 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.
~/.vim/after/ftplugin/hare.vim):

	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 |vimrc|.  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 YXXYvimrc|:

	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 YXXYvimrc|:

	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 YXXYvimrc|:

	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.

==============================================================================
top - main help file