Skip to content

Commit 1e59a77

Browse files
author
Jose Alvarez
authored
refactor: use 0.7 command api methods (#1074)
1 parent 4b403d2 commit 1e59a77

File tree

6 files changed

+62
-50
lines changed

6 files changed

+62
-50
lines changed

lua/null-ls/client.lua

+20-15
Original file line numberDiff line numberDiff line change
@@ -92,13 +92,13 @@ M.start_client = function(fname)
9292
if bufnr == api.nvim_get_current_buf() then
9393
M.setup_buffer(bufnr)
9494
elseif api.nvim_buf_is_valid(bufnr) then
95-
vim.cmd(
96-
string.format(
97-
[[autocmd BufEnter <buffer=%d> ++once unsilent lua require("null-ls.client").setup_buffer(%d)]],
98-
bufnr,
99-
bufnr
100-
)
101-
)
95+
api.nvim_create_autocmd("BufEnter", {
96+
buffer = bufnr,
97+
once = true,
98+
callback = function()
99+
M.setup_buffer(bufnr)
100+
end,
101+
})
102102
end
103103
end),
104104
}
@@ -191,19 +191,24 @@ M.on_source_change = vim.schedule_wrap(function()
191191
s.register_conditional_sources()
192192
end
193193
else
194-
vim.cmd(
195-
string.format(
196-
[[autocmd BufEnter <buffer=%d> ++once unsilent lua require("null-ls.client").retry_add(%d)]],
197-
bufnr,
198-
bufnr
199-
)
200-
)
194+
api.nvim_create_autocmd("BufEnter", {
195+
buffer = bufnr,
196+
once = true,
197+
callback = function()
198+
M.retry_add(bufnr)
199+
end,
200+
})
201201
end
202202
end)
203203

204204
-- if conditional sources remain, check on next (named) buffer read event
205205
if s.has_conditional_sources() then
206-
vim.cmd([[autocmd BufRead * ++once unsilent lua require("null-ls.state").register_conditional_sources()]])
206+
api.nvim_create_autocmd("BufRead", {
207+
once = true,
208+
callback = function()
209+
s.register_conditional_sources()
210+
end,
211+
})
207212
end
208213
end)
209214

lua/null-ls/info.lua

+15-4
Original file line numberDiff line numberDiff line change
@@ -179,11 +179,22 @@ M.show_window = function()
179179
vim.fn.matchadd(hi[1], hi[2])
180180
end
181181

182-
api.nvim_buf_set_keymap(win_bufnr, "n", "<Esc>", "<cmd>bd<CR>", { noremap = true })
182+
local close = function()
183+
if api.nvim_buf_is_valid(win_bufnr) then
184+
api.nvim_buf_delete(win_bufnr, { force = true })
185+
end
186+
if api.nvim_win_is_valid(win_id) then
187+
api.nvim_win_close(win_id, true)
188+
end
189+
end
183190

184-
vim.cmd(
185-
string.format("autocmd BufHidden,BufLeave <buffer> ++once lua pcall(vim.api.nvim_win_close, %d, true)", win_id)
186-
)
191+
vim.keymap.set("n", "<ESC>", close, { buffer = win_bufnr, nowait = true })
192+
vim.keymap.set("n", "q", close, { buffer = win_bufnr, nowait = true })
193+
api.nvim_create_autocmd({ "BufHidden", "BufLeave", "BufDelete" }, {
194+
buffer = win_bufnr,
195+
once = true,
196+
callback = close,
197+
})
187198
end
188199

189200
return M

lua/null-ls/init.lua

+20-11
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ M.toggle = sources.toggle
1717

1818
M.builtins = require("null-ls.builtins")
1919
M.methods = require("null-ls.methods").internal
20-
M.null_ls_info = require("null-ls.info").show_window
2120

2221
M.formatter = helpers.formatter_factory
2322
M.generator = helpers.generator_factory
@@ -30,16 +29,26 @@ M.setup = function(user_config)
3029
user_config = user_config or {}
3130
c.setup(user_config)
3231

33-
vim.cmd("command! NullLsInfo lua require('null-ls').null_ls_info()")
34-
vim.cmd("command! NullLsLog lua vim.fn.execute('edit ' .. require('null-ls.logger').get_path())")
35-
36-
vim.cmd([[
37-
augroup NullLs
38-
autocmd!
39-
autocmd FileType * unsilent lua require("null-ls.client").try_add()
40-
autocmd InsertLeave * unsilent lua require("null-ls.rpc").flush()
41-
augroup end
42-
]])
32+
vim.api.nvim_create_user_command("NullLsInfo", function()
33+
require("null-ls.info").show_window()
34+
end, {})
35+
vim.api.nvim_create_user_command("NullLsLog", function()
36+
vim.cmd(string.format("edit %s", require("null-ls.logger"):get_path()))
37+
end, {})
38+
39+
local augroup = vim.api.nvim_create_augroup("NullLs", {})
40+
vim.api.nvim_create_autocmd("FileType", {
41+
group = augroup,
42+
callback = function()
43+
require("null-ls.client").try_add()
44+
end,
45+
})
46+
vim.api.nvim_create_autocmd("InsertLeave", {
47+
group = augroup,
48+
callback = function()
49+
require("null-ls.rpc").flush()
50+
end,
51+
})
4352
end
4453

4554
return M

test/spec/e2e_spec.lua

+6-18
Original file line numberDiff line numberDiff line change
@@ -309,31 +309,19 @@ describe("e2e", function()
309309
return
310310
end
311311

312+
local autocmd
312313
before_each(function()
313-
api.nvim_exec(
314-
[[
315-
augroup NullLsTesting
316-
autocmd!
317-
autocmd BufEnter *.tl set filetype=teal
318-
augroup END
319-
]],
320-
false
321-
)
314+
autocmd = vim.api.nvim_create_autocmd("BufEnter", {
315+
pattern = "*.tl",
316+
command = "set filetype=teal",
317+
})
322318
sources.register(builtins.diagnostics.teal)
323319

324320
tu.edit_test_file("test-file.tl")
325321
tu.wait_for_real_source()
326322
end)
327323
after_each(function()
328-
api.nvim_exec(
329-
[[
330-
augroup NullLsTesting
331-
autocmd!
332-
augroup END
333-
]],
334-
false
335-
)
336-
vim.cmd("augroup! NullLsTesting")
324+
vim.api.nvim_del_autocmd(autocmd)
337325
end)
338326

339327
it("should handle source that uses temp file", function()

test/spec/helpers/generator_factory_spec.lua

+1-1
Original file line numberDiff line numberDiff line change
@@ -298,7 +298,7 @@ describe("generator_factory", function()
298298
end)
299299

300300
it("should trigger deregistration if validation fails", function()
301-
vim.validate = function()
301+
vim.validate = function(_)
302302
error("validation failed")
303303
end
304304

test/spec/init_spec.lua

-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ describe("init", function()
1111
assert.equals(type(null_ls.register_name), "function")
1212
assert.equals(type(null_ls.methods), "table")
1313
assert.equals(type(null_ls.builtins), "table")
14-
assert.equals(type(null_ls.null_ls_info), "function")
1514
assert.equals(type(null_ls.generator), "function")
1615
assert.equals(type(null_ls.formatter), "function")
1716
end)

0 commit comments

Comments
 (0)