Skip to content

Commit 3768b8f

Browse files
author
Marc Jakobi
committed
feat: discover snippet: use lsp to get module name
1 parent bdc0a02 commit 3768b8f

File tree

3 files changed

+31
-8
lines changed

3 files changed

+31
-8
lines changed

lua/haskell-snippets/module.lua

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,9 @@ local has_treesitter, parsers = pcall(require, 'nvim-treesitter.parsers')
2727
local hs_lang = has_treesitter and parsers.ft_to_lang('haskell')
2828

2929
local function get_module_name_node()
30-
if #vim.lsp.get_active_clients { bufnr = 0 } > 0 then
31-
for _, lens in pairs(vim.lsp.codelens.get(0)) do
32-
local name = lens.command.title:match('module (.*) where')
33-
if name then
34-
return sn(nil, { text(name) })
35-
end
36-
end
30+
local module_name = util.lsp_get_module_name()
31+
if module_name then
32+
return sn(nil, { text(module_name) })
3733
end
3834
return sn(nil, { insert(1) })
3935
end

lua/haskell-snippets/pragmas.lua

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@ local sn = ls.snippet_node
2121
local text = ls.text_node
2222
local insert = ls.insert_node
2323
local choice = ls.choice_node
24+
local dynamic = ls.dynamic_node
25+
26+
local util = require('haskell-snippets.util')
2427

2528
pragmas.prag = s({
2629
trig = 'prag',
@@ -90,6 +93,18 @@ pragmas.lang = s({
9093
})
9194
table.insert(pragmas.all, pragmas.lang)
9295

96+
local function get_module_name()
97+
local module_name = util.lsp_get_module_name()
98+
if module_name then
99+
return sn(nil, {
100+
insert(1, module_name),
101+
})
102+
end
103+
return sn(nil, {
104+
insert(1, 'Spec'),
105+
})
106+
end
107+
93108
pragmas.discover = s({
94109
trig = 'discover',
95110
dscr = 'hspec/sydtest discover GHC option',
@@ -100,7 +115,7 @@ pragmas.discover = s({
100115
text('sydtest'),
101116
}),
102117
text('-discover -optF --module-name='),
103-
insert(2, 'Spec'),
118+
dynamic(2, get_module_name),
104119
text(' #-}'),
105120
})
106121
table.insert(pragmas.all, pragmas.discover)

lua/haskell-snippets/util.lua

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,4 +66,16 @@ function util.indent_newline_insert(txt, extra_indent)
6666
end
6767
end
6868

69+
---@return string|nil
70+
function util.lsp_get_module_name()
71+
if #vim.lsp.get_active_clients { bufnr = 0 } > 0 then
72+
for _, lens in pairs(vim.lsp.codelens.get(0)) do
73+
local name = lens.command.title:match('module (.*) where')
74+
if name then
75+
return name
76+
end
77+
end
78+
end
79+
end
80+
6981
return util

0 commit comments

Comments
 (0)