diff --git a/lua/lazyvim/plugins/extras/lang/haskell.lua b/lua/lazyvim/plugins/extras/lang/haskell.lua index a599d310..f4eff081 100644 --- a/lua/lazyvim/plugins/extras/lang/haskell.lua +++ b/lua/lazyvim/plugins/extras/lang/haskell.lua @@ -14,11 +14,49 @@ return { { "mrcjkb/haskell-tools.nvim", - version = "^3", + version = false, ft = { "haskell", "lhaskell", "cabal", "cabalproject" }, dependencies = { { "nvim-telescope/telescope.nvim", optional = true }, }, + keys = { + { + "ce", + ft = "haskell", + "HlsEvalAll", + desc = "Haskell Evaluate All", + }, + { + "so", + ft = "haskell", + function() + require("haskell-tools").hoogle.hoogle_signature() + end, + desc = "Hoogle (Function Signature)", + }, + LazyVim.has("telescope.nvim") and { + "sO", + ft = "haskell", + "Telescope hoogle", + desc = "Hoogle (Global)", + } or nil, + { + "fl", + ft = "haskell", + function() + require("haskell-tools").repl.toggle() + end, + desc = "GHCi REPL (Package)", + }, + { + "fL", + ft = "haskell", + function() + require("haskell-tools").repl.toggle(vim.api.nvim_buf_get_name(0)) + end, + desc = "GHCi REPL (Current File)", + }, + }, config = function() local ok, telescope = pcall(require, "telescope") if ok then @@ -80,6 +118,27 @@ return { end, }, + { + "stevearc/conform.nvim", + optional = true, + opts = { + formatters_by_ft = { + haskell = { "fourmolu" }, + cabal = { "cabal_fmt" }, + }, + }, + }, + + { + "mfussenegger/nvim-lint", + optional = true, + opts = { + linters_by_ft = { + haskell = { "hlint" }, + }, + }, + }, + -- Make sure lspconfig doesn't start hls, -- as it conflicts with haskell-tools {