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):
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:
g:hare_recommended_style
The following options are set by default, in accordance with Hare's official
style guide:
To disable this behavior, add the following to your vimrc:
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 vimrc:
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 vimrc:
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.
==============================================================================
vim:tw=78:ts=8:noet:ft=help:norl:
==============================================================================
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
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
setlocal shiftwidth=8
setlocal softtabstop=0
setlocal tabstop=8
setlocal textwidth=80
To disable this behavior, add the following to your vimrc:
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 vimrc:
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 vimrc:
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.
==============================================================================
vim:tw=78:ts=8:noet:ft=help:norl: