File: hlint.ghci

package info (click to toggle)
hlint 3.10-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 988 kB
  • sloc: haskell: 7,098; lisp: 86; makefile: 3
file content (32 lines) | stat: -rw-r--r-- 1,316 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
-- -*- mode: haskell; -*-
-- Begin copied material.
-- <http://www.cs.kent.ac.uk/people/staff/cr3/toolbox/haskell/dot-squashed.ghci641>
:{
:def redir \varcmd -> return $
        case break Data.Char.isSpace varcmd of
            (var,_:cmd) -> unlines
                [":set -fno-print-bind-result"
                ,"tmp <- System.Directory.getTemporaryDirectory"
                ,"(f,h) <- System.IO.openTempFile tmp \"ghci\""
                ,"sto <- GHC.IO.Handle.hDuplicate System.IO.stdout"
                ,"GHC.IO.Handle.hDuplicateTo h System.IO.stdout"
                ,"System.IO.hClose h"
                ,cmd
                ,"GHC.IO.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"
                ]
            _ -> "putStrLn \"usage: :redir <var> <cmd>\""
:}

--- Integration with the hlint code style tool
:{
:def hlint \extra -> return $ unlines
        [":unset +t +s"
        ,":set -w"
        ,":redir hlintvar1 :show modules"
        ,":cmd return $ \":! hlint \" ++ unwords (map (takeWhile (/=',') . drop 2 . dropWhile (/= '(')) $ lines hlintvar1) ++ \" \" ++ " ++ show extra
        ,":set +t +s -Wall"
        ]
:}