Skip to content

Commit 3487e07

Browse files
committed
Update README to better cover the new indentation options
1 parent a41fa1b commit 3487e07

File tree

1 file changed

+59
-73
lines changed

1 file changed

+59
-73
lines changed

README.md

+59-73
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,26 @@
11
# Clojure.vim
22

3-
[Clojure][] syntax highlighting for Vim and Neovim, including:
3+
**Configurable [Clojure][] syntax highlighting, indentation (and more) for Vim and Neovim!**
44

5-
- [Augmentable](#syntax-options) syntax highlighting.
6-
- [Configurable](#indent-options) indentation.
5+
<!-- TODO
76
- Basic insert-mode completion of special forms and public vars in
87
`clojure.core`. (Invoke with `<C-x><C-o>` or `<C-x><C-u>`.)
8+
-->
99

10+
> [!TIP]
11+
> This plugin comes packaged with Vim and Neovim. However if you would like to
12+
> always use the latest version, you can install this plugin like you would any
13+
> other.
1014
11-
## Installation
12-
13-
These files are included in both Vim and Neovim. However if you would like the
14-
latest changes just install this repository like any other plugin.
15-
16-
Make sure that the following options are set in your vimrc so that all features
17-
are enabled:
15+
Make sure your vimrc contains the following options to enable all features:
1816

1917
```vim
2018
syntax on
2119
filetype plugin indent on
2220
```
2321

2422

25-
## Configuration
26-
27-
### Folding
28-
29-
Setting `g:clojure_fold` to `1` will enable the folding of Clojure code. Any
30-
list, vector or map that extends over more than one line can be folded using
31-
the standard Vim fold commands.
32-
33-
(Note that this option will not work with scripts that redefine the bracket
34-
regions, such as rainbow parenphesis plugins.)
35-
36-
37-
### Syntax options
23+
## Syntax highlighting
3824

3925
#### `g:clojure_syntax_keywords`
4026

@@ -69,34 +55,54 @@ stacked discard macros (e.g. `#_#_`). This inconsitency is why this option is
6955
disabled by default.
7056

7157

72-
### Indent options
58+
## Indentation
7359

74-
By default Clojure.vim will attempt to follow the indentation rules in the
75-
[Clojure Style Guide](https://guide.clojure.style), but various configuration
76-
options are provided to alter the indentation as you prefer.
60+
Clojure indentation differs somewhat from traditional Lisps, due in part to the
61+
use of square and curly brackets, and otherwise by community convention. As
62+
these conventions are not universally followed, the Clojure indent script
63+
offers ways to adjust the indentaion.
7764

78-
> **Warning**<br>
79-
> If your installation of Vim does not include `searchpairpos()`, the indent
80-
> script falls back to normal `'lisp'` and `'lispwords'` indenting, ignoring
81-
> the following indentation options.
65+
> [!WARNING]
66+
> The indentation code has recently been rebuilt which included the removal of
67+
> the following configuration options:
68+
>
69+
> - `clojure_fuzzy_indent`
70+
> - `clojure_fuzzy_indent_blacklist`
71+
> - `clojure_special_indent_words`
72+
> - `clojure_cljfmt_compat`
73+
> - `'lispwords'`
8274
8375

84-
#### `clojure_indent_rules`
76+
### Indentation style
8577

86-
> **Note**<br>
87-
> The indentation code was recently rebuilt, which included the removal of
88-
> several former configuration options (`clojure_fuzzy_indent`,
89-
> `clojure_fuzzy_indent_patterns`, `clojure_fuzzy_indent_blacklist`,
90-
> `clojure_special_indent_words`, `clojure_cljfmt_compat` and now ignores the
91-
> value of `'lispwords'`).
92-
>
93-
> All of those options were rolled into this new option.
78+
The `clojure_indent_style` config option controls the general indentation style
79+
to use. Choose from several common presets:
80+
81+
| Value | Default | Description |
82+
|-------|---------|-------------|
83+
| `standard` || Conventional Clojure indentation. ([_Clojure Style Guide_](https://guide.clojure.style/).) |
84+
| `traditional` | | Indent like traditional Lisps. (Earlier versions of Clojure.vim indented like this.) |
85+
| `uniform` | | Indent uniformly to 2 spaces with no alignment (a.k.a. [_Tonsky_ indentation](https://tonsky.me/blog/clojurefmt/)). |
86+
87+
```vim
88+
let g:clojure_indent_style = 'uniform' " Set the default indent style...
89+
let b:clojure_indent_style = 'traditional' " ...or override the default per-buffer.
90+
```
9491

9592

96-
#### `clojure_align_multiline_strings`
93+
### Indentation rules
9794

98-
Alter alignment of newly created lines within multi-line strings (and regular
99-
expressions).
95+
`clojure_indent_rules`
96+
97+
98+
### Multi-line strings
99+
100+
Control alignment of _new_ lines within Clojure multi-line strings and regular
101+
expressions with `clojure_align_multiline_strings`.
102+
103+
> [!NOTE]
104+
> Indenting with `=` will not alter the indentation within multi-line strings,
105+
> as this could break intentional formatting.
100106
101107
```clojure
102108
;; let g:clojure_align_multiline_strings = 0 " Default
@@ -117,32 +123,15 @@ eiusmod tempor incididunt ut labore et dolore magna aliqua.")
117123

118124
There is also a buffer-local (`b:`) version of this option.
119125

120-
> **Note**<br>
121-
> Indenting the string with `=` will not alter the indentation of existing
122-
> multi-line strings as that would break intentional formatting.
123-
124126

125-
#### `clojure_align_subforms`
126-
127-
By default, parenthesized compound forms that look like function calls and
128-
whose head subform is on its own line have subsequent subforms indented by
129-
two spaces relative to the opening paren:
130-
131-
```clojure
132-
(foo
133-
bar
134-
baz)
135-
```
127+
## Code folding
136128

137-
Setting this option to `1` changes this behaviour so that all subforms are
138-
aligned to the same column, emulating the default behaviour of
139-
[clojure-mode.el](https://github.com/clojure-emacs/clojure-mode):
129+
Setting `g:clojure_fold` to `1` will enable the folding of Clojure code. Any
130+
list, vector or map that extends over more than one line can be folded using
131+
the standard Vim fold commands.
140132

141-
```clojure
142-
(foo
143-
bar
144-
baz)
145-
```
133+
(Note that this option will not work with scripts that redefine the bracket
134+
regions, such as rainbow parenphesis plugins.)
146135

147136

148137
## Contribute
@@ -157,18 +146,15 @@ Pull requests are welcome! Make sure to read the
157146
_Vim-clojure-static_ was created by [Sung Pae](https://github.com/guns). The
158147
original copies of the packaged runtime files came from
159148
[Meikel Brandmeyer](http://kotka.de/)'s [VimClojure][] project with permission.
160-
161-
Thanks to [Tim Pope](https://github.com/tpope/) for advice in
162-
[#vim](https://www.vi-improved.org/).
149+
Thanks to [Tim Pope](https://github.com/tpope/) for advice in [#vim](https://www.vi-improved.org/).
163150

164151

165152
## License
166153

167-
Clojure.vim is licensed under the [Vim
168-
License](http://vimdoc.sourceforge.net/htmldoc/uganda.html#license) for
169-
distribution with Vim.
154+
Clojure.vim is licensed under the [Vim License](http://vimdoc.sourceforge.net/htmldoc/uganda.html#license)
155+
for distribution with Vim.
170156

171-
- Copyright © 2020–2021, The clojure-vim contributors.
157+
- Copyright © 2020–2024, The clojure-vim contributors.
172158
- Copyright © 2013–2018, Sung Pae.
173159
- Copyright © 2008–2012, Meikel Brandmeyer.
174160
- Copyright © 2007–2008, Toralf Wittner.

0 commit comments

Comments
 (0)