hlint-1.6.16: data/hlint.ghci
-- -*- mode: haskell; -*-
-- Begin copied material.
-- <http://www.cs.kent.ac.uk/people/staff/cr3/toolbox/haskell/dot-squashed.ghci641>
:{
let redir varcmd = case break Data.Char.isSpace varcmd of
(var,_:cmd) -> return $ unlines [":set -fno-print-bind-result",
"tmp <- System.Directory.getTemporaryDirectory",
"(f,h) <- System.IO.openTempFile tmp \"ghci\"",
"sto <- GHC.Handle.hDuplicate System.IO.stdout",
"GHC.Handle.hDuplicateTo h System.IO.stdout",
"System.IO.hClose h",
cmd,
"GHC.Handle.hDuplicateTo sto System.IO.stdout",
"let readFileNow f = readFile f >>=
\\t->Data.List.length t `seq` return t",
var++" <- readFileNow f",
"System.Directory.removeFile f"]
_ -> return "putStrLn \"usage: :redir <var> <cmd>\""
:def redir cmdHelp redir ":redir <var> <cmd>\t-- execute <cmd>, redirecting stdout to <var>"
:}
--- Integration with the hlint code style tool
:{
:def hlint const $ return $ unlines [":unset +t +s",
":set -w",
":redir hlintvar1 :show modules",
":cmd return (\":! hlint \" ++ (concat $ Data.List.intersperse \" \"
(map (fst . break (==',') . Data.List.drop 2 . snd .
break (== '(')) $ lines hlintvar1)))",
":set +t +s -Wall"]
:}