Skip to content

Commit d076de2

Browse files
committed
fix: clarify autcommand usage for setting keymaps
1 parent baff921 commit d076de2

File tree

2 files changed

+35
-32
lines changed

2 files changed

+35
-32
lines changed

ftplugin/quarto.lua

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,37 @@
11
vim.b.slime_cell_delimiter = "```"
22

3+
local quarto = require'quarto'
4+
5+
local function set_keymaps()
6+
local b = 0
7+
local function set(lhs, rhs)
8+
vim.api.nvim_buf_set_keymap(b, 'n', lhs, rhs, { silent = true, noremap = true })
9+
end
10+
set(quarto.config.keymap.definition, ":lua require'otter'.ask_definition()<cr>")
11+
set(quarto.config.keymap.type_definition, ":lua require'otter'.ask_type_definition()<cr>")
12+
set(quarto.config.keymap.hover, ":lua require'otter'.ask_hover()<cr>")
13+
set(quarto.config.keymap.rename, ":lua require'otter'.ask_rename()<cr>")
14+
set(quarto.config.keymap.references, ":lua require'otter'.ask_references()<cr>")
15+
set(quarto.config.keymap.document_symbols, ":lua require'otter'.ask_document_symbols()<cr>")
16+
end
17+
18+
if quarto.config.lspFeatures.enabled then
19+
quarto.activate()
20+
set_keymaps()
21+
-- set the keymap again if a language server attaches
22+
-- directly to this buffer
23+
-- because it probably overwrites these in `LspAttach`
24+
-- TODO: make this more robust
25+
-- This currently only works if 'LspAttach' is used
26+
-- directly, e.g. in LazyVim
27+
-- It does no work if the `on_attach` callback
28+
-- is used in the lspconfig setup
29+
-- because this gets executed after the `LspAttach` autocommand
30+
-- <https://github.com/neovim/neovim/blob/d0d132fbd055834cbecb3d4e3a123a6ea8f099ec/runtime/lua/vim/lsp.lua#L1702-L1711>
31+
vim.api.nvim_create_autocmd("LspAttach", {
32+
buffer = vim.api.nvim_get_current_buf(),
33+
group = vim.api.nvim_create_augroup('QuartoKeymapSetup', {}),
34+
callback = set_keymaps,
35+
})
36+
end
37+

lua/quarto/init.lua

Lines changed: 0 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -135,42 +135,10 @@ M.activate = function()
135135
end
136136

137137

138-
local function set_keymaps()
139-
vim.api.nvim_buf_set_keymap(0, 'n', M.config.keymap.definition, ":lua require'otter'.ask_definition()<cr>",
140-
{ silent = true })
141-
vim.api.nvim_buf_set_keymap(0, 'n', M.config.keymap.type_definition, ":lua require'otter'.ask_type_definition()<cr>",
142-
{ silent = true })
143-
vim.api.nvim_buf_set_keymap(0, 'n', M.config.keymap.hover, ":lua require'otter'.ask_hover()<cr>", { silent = true })
144-
vim.api.nvim_buf_set_keymap(0, 'n', M.config.keymap.rename, ":lua require'otter'.ask_rename()<cr>", { silent = true })
145-
vim.api.nvim_buf_set_keymap(0, 'n', M.config.keymap.references, ":lua require'otter'.ask_references()<cr>",
146-
{ silent = true })
147-
vim.api.nvim_buf_set_keymap(0, 'n', M.config.keymap.document_symbols,
148-
":lua require'otter'.ask_document_symbols()<cr>", { silent = true })
149-
end
150-
151138
-- setup
152139
M.setup = function(opt)
153140
M.config = vim.tbl_deep_extend('force', M.defaultConfig, opt or {})
154141

155-
vim.api.nvim_create_autocmd("BufEnter", {
156-
pattern = '*.qmd',
157-
group = vim.api.nvim_create_augroup('QuartoSetup', {}),
158-
desc = 'set up quarto-nvim keymaps and completion',
159-
callback = function ()
160-
if M.config.lspFeatures.enabled then
161-
M.activate()
162-
set_keymaps()
163-
-- set the keymap again if a language server attaches
164-
-- directly to this buffer
165-
-- because it probably overwrites these in `on_attach`
166-
vim.api.nvim_create_autocmd("LspAttach", {
167-
buffer = vim.api.nvim_get_current_buf(),
168-
callback = set_keymaps,
169-
})
170-
end
171-
end
172-
})
173-
174142
end
175143

176144
local function concat(ls)

0 commit comments

Comments
 (0)