*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 tweak its behavior. Additionally, support is provided for 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 block-based folding tends to create many small folds, consider setting a few related options, such as 'foldminlines' and 'foldnestmax'. *g:hare_recommended_style* The following options are set by default, in accordance with Hare's official style guide: > setlocal noexpandtab setlocal shiftwidth=0 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_symbol_operators* By default, symbolic operators do not receive any special highlighting (with `!`, `?`, and `::` being the only exceptions). To enable syntax highlighting for most other operators, add the following to your |vimrc|: > let g:hare_symbol_operators = 1 < *g:hare_space_error* By default, trailing whitespace and spaces followed by characters will be highlighted as errors. This is automatically disabled 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 No automatic detection 1 Search current directory only (this is the default) 2 Search one level of subdirectories 3 Search two levels of subdirectories The search depth may be any positive integer, but values higher than `2` are unlikely to provide a tangible benefit in most situations. INDENTATION SETTINGS *ft-hare-indent* Unlike most other settings for this plugin, the indentation settings may also be set per-buffer, overriding any global configuration that exists. To do this, simply prefix the variable with |b:| instead of |g:|. *g:hare_indent_match_switch* By default, continuation lines for "match" and "switch" conditions are indented only one level: >hare const file = match (os::create(path, 0o644, flag::WRONLY | flag::TRUNC)) { case let file: io::file => yield file; // ... If you instead prefer indenting them two levels, to more closely resemble "if" and "for" conditions, add the following line to your |vimrc|: > let g:hare_indent_match_switch = 2 < *g:hare_indent_case* By default, continuation lines for cases in "match" and "switch" expressions are indented two levels, to visually distinguish them from the body of the case: >hare case ltok::I8, ltok::I16, ltok::I32, ltok::I64, ltok::INT => // ... If you prefer a different amount of indentation, you can adjust it using |g:hare_indent_case|. Valid values include `0`, `1`, and `2`. COMPILER SUPPORT *compiler-hare* If this plugin detects a Makefile in the current directory, it will assume you wish to use `make` for your build system, and will leave 'makeprg' untouched. Otherwise, `hare build` will be used. *g:hare_makeprg_params* When `hare build` is used, additional compiler options may be appended to 'makeprg' with the |g:hare_makeprg_params| variable. It may also be set on a per-buffer basis (using |b:| instead of |g:|), overriding any global configuration that exists. For example: > let b:hare_makeprg_params = '-lc -t o' The global default is "-q", to suppress writing to stdout while building. ============================================================================== vim:tw=78:ts=8:noet:ft=help:norl: