This commit is contained in:
2025-10-08 10:12:22 +02:00
parent a28447db2f
commit 98c86a57f0
3 changed files with 45 additions and 37 deletions

View File

@@ -1,40 +1,32 @@
return {
"mrcjkb/haskell-tools.nvim",
ft = { "haskell", "lhaskell", "cabal" },
dependencies = { "L3MON4D3/LuaSnip", "nvim-treesitter/nvim-treesitter" },
opts = {
{
"mrcjkb/haskell-tools.nvim",
-- WICHTIG: expliziter Modulname; Lazy soll NICHT raten
main = "haskell-tools",
ft = { "haskell", "lhaskell", "cabal", "cabalproject" },
hls = {
cmd = { "haskell-language-server-wrapper", "--lsp" },
settings = {
haskell = {
formattingProvider = "fourmolu",
-- wir nutzen das interne Plugin, kein externes Binary nötig:
plugin = { fourmolu = { config = { external = false } } },
-- Gib Lazy NICHT die Chance, sein Auto-setup zu machen:
-- Wir liefern EINE eigene config-Funktion und rufen setup() selbst.
config = function(_, _)
local ok, ht = pcall(require, "haskell-tools")
if not ok or type(ht.setup) ~= "function" then
vim.notify("[haskell-tools] setup() nicht gefunden wird übersprungen", vim.log.levels.ERROR)
return
end
-- .cabal-Formatting komplett deaktivieren (sonst verlangt HLS cabal-fmt)
cabalFormattingProvider = "none",
ht.setup({
hls = {
-- Dein Nix-HLS, damit Mason außen vor bleibt
cmd = { "haskell-language-server-wrapper", "--lsp" },
settings = {
haskell = {
formattingProvider = "fourmolu",
cabalFormattingProvider = "none",
plugin = { fourmolu = { config = { external = false } } },
},
},
},
},
},
-- optional: Safety im on_attach
on_attach = function(client, bufnr)
if vim.bo[bufnr].filetype == "cabal" then
client.server_capabilities.documentFormattingProvider = false
end
end,
-- falls Lazy mal falsch cached: lade LuaSnip aktiv vorher
init = function()
if not package.loaded["luasnip"] then
local ok, lazy = pcall(require, "lazy")
if ok then
lazy.load({ plugins = { "LuaSnip" } })
end
end
end,
-- lade nur, wenn require("luasnip") wirklich klappt
cond = function()
return package.loaded["luasnip"] or pcall(require, "luasnip")
})
end,
},
}