You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+31-15Lines changed: 31 additions & 15 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -18,11 +18,15 @@ The goal of `nvim-paredit` is to provide a comparable s-expression editing exper
18
18
- Language extensibility
19
19
- Programmable API
20
20
21
+
---
22
+
23
+

24
+
21
25
## Project Status
22
26
23
-
This is currently **alpha software**.
27
+
This is currently **beta software**. It works well in the workflows of the current maintainers but has not been thoroughly tested with many users.
24
28
25
-
You will experience bugs and there are still several unimplemented operations. The fundamental operations are mostly complete and probably work as expected in 90% of cases. You can probably switch to using this full time if you can tolerate some oddities and don't need the unimplemented operations.
29
+
It currently only has first-class support for the `clojure` language and has a focus on supporting the fundamental paredit operations and motions.
26
30
27
31
## Installation
28
32
@@ -37,17 +41,6 @@ You will experience bugs and there are still several unimplemented operations. T
37
41
}
38
42
```
39
43
40
-
### Using [Packer](https://github.com/wbthomason/packer.nvim)
41
-
42
-
```lua
43
-
use {
44
-
"julienvincent/nvim-paredit",
45
-
config=function()
46
-
require('nvim-paredit').setup()
47
-
end,
48
-
}
49
-
```
50
-
51
44
## Configuration
52
45
53
46
```lua
@@ -95,7 +88,9 @@ require("nvim-paredit").setup({
95
88
96
89
As this is built using Treesitter it requires that you have the relevant Treesitter grammar installed for your language of choice. Additionally `nvim-paredit` will need explicit support for the treesitter grammar as the node names and metadata of nodes vary between languages.
97
90
98
-
Right now `nvim-paredit` only has built in support for `clojure` but exposes an extension API for adding support for other lisp dialects. Extensions can either be added as config when calling `setup`:
91
+
Right now `nvim-paredit` only has built in support for `clojure` but exposes an extension API for adding support for other lisp dialects. This API is considered **very alpha** and may change without warning to properly account for other languages when attempts are made to add support.
92
+
93
+
Extensions can either be added as config when calling `setup`:
99
94
100
95
```lua
101
96
require("nvim-paredit").setup({
@@ -140,9 +135,13 @@ Or by calling the `add_language_extension` API directly before the setup. This w
As no attempt has been made to add support for other grammars I have no idea if the language extension API's are actually sufficient for adding additional languages. They will evolve as attempts are made.
141
+
143
142
## API
144
143
145
-
The api is exposed as `paredit.api`:
144
+
The core API is exposed as `paredit.api`:
146
145
147
146
```lua
148
147
localparedit=require("nvim-paredit")
@@ -161,3 +160,20 @@ paredit.api.slurp_forwards()
161
160
-**`raise_form`**
162
161
-**`move_to_next_element`**
163
162
-**`move_to_prev_element`**
163
+
164
+
## Prior Art
165
+
166
+
### [vim-sexp](https://github.com/guns/vim-sexp)
167
+
168
+
Currently the de-facto s-expression editing plugin with the most extensive set of available editing operations. If you are looking for a more complete plugin with a wider range of supported languages then you might want to look into using this instead.
169
+
170
+
The main reasons you might want to consider `nvim-paredit` instead are:
171
+
172
+
+ Easier configuration and an exposed lua API
173
+
+ Control over how the cursor is moved during slurp/barf. (For example if you don't want the cursor to always be moved)
174
+
+ Recursive slurp/barf operations. If your cursor is in a nested form you can still slurp from the forms parent(s)
0 commit comments