mirror of https://github.com/sgoudham/dotfiles.git
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
44 lines
966 B
Lua
44 lines
966 B
Lua
-- vim.api.nvim_create_autocmd("BufWritePost",
|
|
-- {
|
|
-- group = vim.api.nvim_create_augroup("haskell", { clear = true }),
|
|
-- pattern = "*.hs",
|
|
-- desc = "Automatically output "
|
|
-- callback = function()
|
|
-- }
|
|
-- )
|
|
|
|
local M = {}
|
|
|
|
M.haskell_buf = nil
|
|
|
|
local append_data = function(_, data)
|
|
if data then
|
|
vim.api.nvim_buf_set_lines(M.haskell_buf, -1, -1, false, data)
|
|
end
|
|
end
|
|
|
|
function M:run_haskell()
|
|
local path_to_file = vim.fn.expand("%:p")
|
|
|
|
if M.haskell_buf == nil then
|
|
vim.cmd [[vsplit]]
|
|
vim.cmd [[enew]]
|
|
M.haskell_buf = vim.api.nvim_get_current_buf()
|
|
|
|
vim.api.nvim_buf_attach(M.haskell_buf, false, {
|
|
on_detach = function()
|
|
M.haskell_buf = nil
|
|
end
|
|
})
|
|
end
|
|
|
|
vim.api.nvim_buf_set_lines(M.haskell_buf, 0, -1, false, { "---- RESULTS ----" })
|
|
vim.fn.jobstart("runhaskell " .. path_to_file, {
|
|
stdout_buffered = true,
|
|
on_stdout = append_data,
|
|
on_stderr = append_data
|
|
})
|
|
end
|
|
|
|
return M
|