Skip to content

Commit e37eb1d

Browse files
committed
Merge remote-tracking branch 'origin/master' into auto-indentation
2 parents e023c79 + b03534c commit e37eb1d

File tree

4 files changed

+67
-1
lines changed

4 files changed

+67
-1
lines changed

README.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,18 @@ require("nvim-paredit").setup({
114114
repeatable = false,
115115
mode = { "o", "v" }
116116
},
117+
["ae"] = {
118+
api.select_element,
119+
"Around element",
120+
repeatable = false,
121+
mode = { "o", "v" },
122+
},
123+
["ie"] = {
124+
api.select_element,
125+
"Element",
126+
repeatable = false,
127+
mode = { "o", "v" },
128+
},
117129
}
118130
})
119131
```

lua/nvim-paredit/api/selections.lua

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ function M.select_element()
9999
M.ensure_visual_mode()
100100
vim.api.nvim_win_set_cursor(0, { range[1] + 1, range[2] })
101101
vim.api.nvim_command("normal! o")
102-
vim.api.nvim_win_set_cursor(0, { range[3] + 1, range[4] })
102+
vim.api.nvim_win_set_cursor(0, { range[3] + 1, range[4] - 1 })
103103
end
104104

105105
return M

lua/nvim-paredit/defaults.lua

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,19 @@ M.default_keys = {
4343
repeatable = false,
4444
mode = { "o", "v" },
4545
},
46+
47+
["ae"] = {
48+
api.select_element,
49+
"Around element",
50+
repeatable = false,
51+
mode = { "o", "v" },
52+
},
53+
["ie"] = {
54+
api.select_element,
55+
"Element",
56+
repeatable = false,
57+
mode = { "o", "v" },
58+
},
4659
}
4760

4861
M.defaults = {

tests/nvim-paredit/text_object_selections_spec.lua

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,3 +103,44 @@ describe("form selections", function()
103103
assert.are.same("a a", utils.get_selected_text())
104104
end)
105105
end)
106+
107+
describe("element deletions", function()
108+
vim.api.nvim_buf_set_option(0, "filetype", "clojure")
109+
110+
before_each(function()
111+
keybindings.setup_keybindings({
112+
keys = defaults.default_keys,
113+
})
114+
end)
115+
116+
it("should delete the element", function()
117+
prepare_buffer({
118+
content = "(a :a/b)",
119+
cursor = { 1, 5 },
120+
})
121+
feedkeys("die")
122+
expect({
123+
content = "(a )",
124+
cursor = { 1, 3 },
125+
})
126+
end)
127+
end)
128+
129+
describe("element selections", function()
130+
vim.api.nvim_buf_set_option(0, "filetype", "clojure")
131+
132+
before_each(function()
133+
keybindings.setup_keybindings({
134+
keys = defaults.default_keys,
135+
})
136+
end)
137+
138+
it("should select the element", function()
139+
prepare_buffer({
140+
content = "(a :a/b)",
141+
cursor = { 1, 5 },
142+
})
143+
feedkeys("vie")
144+
assert.are.same(":a/b", utils.get_selected_text())
145+
end)
146+
end)

0 commit comments

Comments
 (0)