+return {
+
+ -- Add Haskell to treesitter
+ {
+ "nvim-treesitter/nvim-treesitter",
+ opts = { ensure_installed = { "haskell" } },
+ },
+
+ {
+ "mrcjkb/haskell-tools.nvim",
+ version = "^3",
+ ft = { "haskell", "lhaskell", "cabal", "cabalproject" },
+ dependencies = {
+ { "nvim-telescope/telescope.nvim", optional = true },
+ },
+ config = function()
+ local ok, telescope = pcall(require, "telescope")
+ if ok then
+ telescope.load_extension("ht")
+ end
+ end,
+ },
+
+ {
+ "williamboman/mason.nvim",
+ opts = { ensure_installed = { "haskell-language-server" } },
+ },
+
+ {
+ "mfussenegger/nvim-dap",
+ optional = true,
+ dependencies = {
+ {
+ "williamboman/mason.nvim",
+ opts = { ensure_installed = { "haskell-debug-adapter" } },
+ },
+ },
+ },
+
+ {
+ "nvim-neotest/neotest",
+ optional = true,
+ dependencies = {
+ { "mrcjkb/neotest-haskell" },
+ },
+ opts = {
+ adapters = {
+ ["neotest-haskell"] = {},
+ },
+ },
+ },
+
+ {
+ "mrcjkb/haskell-snippets.nvim",
+ dependencies = { "l3mon4d3/luasnip" },
+ ft = { "haskell", "lhaskell", "cabal", "cabalproject" },
+ config = function()
+ local haskell_snippets = require("haskell-snippets").all
+ require("luasnip").add_snippets("haskell", haskell_snippets, { key = "haskell" })
+ end,
+ },
+
+ {
+ "luc-tielen/telescope_hoogle",
+ ft = { "haskell", "lhaskell", "cabal", "cabalproject" },
+ dependencies = {
+ { "nvim-telescope/telescope.nvim" },
+ },
+ config = function()
+ local ok, telescope = pcall(require, "telescope")
+ if ok then
+ telescope.load_extension("hoogle")
+ end
+ end,
+ },
+
+ -- Make sure lspconfig doesn't start hls,
+ -- as it conflicts with haskell-tools
+ {
+ "neovim/nvim-lspconfig",
+ opts = {
+ setup = {
+ hls = function()
+ return true
+ end,
+ },
+ },
+ },
+}