hlint options can be specified from ghc-hlint-options.
This commit is contained in:
parent
da8975c03f
commit
f30eb343b0
@ -22,7 +22,7 @@ usage = "ghc-mod version 0.4.2\n"
|
|||||||
++ "\t ghc-mod lang\n"
|
++ "\t ghc-mod lang\n"
|
||||||
++ "\t ghc-mod browse <module> [<module> ...]\n"
|
++ "\t ghc-mod browse <module> [<module> ...]\n"
|
||||||
++ "\t ghc-mod check <HaskellFile>\n"
|
++ "\t ghc-mod check <HaskellFile>\n"
|
||||||
++ "\t ghc-mod lint <HaskellFile>\n"
|
++ "\t ghc-mod [-h opt] lint <HaskellFile>\n"
|
||||||
++ "\t ghc-mod boot\n"
|
++ "\t ghc-mod boot\n"
|
||||||
++ "\t ghc-mod help\n"
|
++ "\t ghc-mod help\n"
|
||||||
|
|
||||||
@ -31,12 +31,16 @@ usage = "ghc-mod version 0.4.2\n"
|
|||||||
defaultOptions :: Options
|
defaultOptions :: Options
|
||||||
defaultOptions = Options {
|
defaultOptions = Options {
|
||||||
convert = toPlain
|
convert = toPlain
|
||||||
|
, hlintOpts = []
|
||||||
}
|
}
|
||||||
|
|
||||||
argspec :: [OptDescr (Options -> Options)]
|
argspec :: [OptDescr (Options -> Options)]
|
||||||
argspec = [ Option "l" ["tolisp"]
|
argspec = [ Option "l" ["tolisp"]
|
||||||
(NoArg (\opts -> opts { convert = toLisp }))
|
(NoArg (\opts -> opts { convert = toLisp }))
|
||||||
"print as a list of Lisp"
|
"print as a list of Lisp"
|
||||||
|
, Option "h" ["hlintOpt"]
|
||||||
|
(ReqArg (\h opts -> opts { hlintOpts = h : hlintOpts opts }) "hlintOpt")
|
||||||
|
"hint to be ignored"
|
||||||
]
|
]
|
||||||
|
|
||||||
parseArgs :: [OptDescr (Options -> Options)] -> [String] -> (Options, [String])
|
parseArgs :: [OptDescr (Options -> Options)] -> [String] -> (Options, [String])
|
||||||
|
6
Lint.hs
6
Lint.hs
@ -6,9 +6,9 @@ import Language.Haskell.HLint
|
|||||||
import Types
|
import Types
|
||||||
|
|
||||||
lintSyntax :: Options -> String -> IO String
|
lintSyntax :: Options -> String -> IO String
|
||||||
lintSyntax _ file = pretty <$> lint file
|
lintSyntax opt file = pretty <$> lint opt file
|
||||||
where
|
where
|
||||||
pretty = unlines . map (concat . intersperse "\0" . lines)
|
pretty = unlines . map (concat . intersperse "\0" . lines)
|
||||||
|
|
||||||
lint :: String -> IO [String]
|
lint :: Options -> String -> IO [String]
|
||||||
lint file = map show <$> hlint [file, "--quiet", "--ignore=Use camelCase"]
|
lint opt file = map show <$> hlint ([file, "--quiet"] ++ hlintOpts opt)
|
||||||
|
3
Types.hs
3
Types.hs
@ -5,7 +5,8 @@ import GHC
|
|||||||
import GHC.Paths (libdir)
|
import GHC.Paths (libdir)
|
||||||
|
|
||||||
data Options = Options {
|
data Options = Options {
|
||||||
convert :: [String] -> String
|
convert :: [String] -> String
|
||||||
|
, hlintOpts :: [String]
|
||||||
}
|
}
|
||||||
|
|
||||||
withGHC :: Ghc [String] -> IO [String]
|
withGHC :: Ghc [String] -> IO [String]
|
||||||
|
@ -10,6 +10,12 @@
|
|||||||
|
|
||||||
(require 'flymake)
|
(require 'flymake)
|
||||||
|
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
|
||||||
|
(defvar ghc-hlint-options nil "*Hlint options")
|
||||||
|
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
|
||||||
(defvar ghc-error-buffer-name "*GHC Errors*")
|
(defvar ghc-error-buffer-name "*GHC Errors*")
|
||||||
|
|
||||||
(defvar ghc-flymake-allowed-file-name-masks
|
(defvar ghc-flymake-allowed-file-name-masks
|
||||||
@ -30,13 +36,14 @@
|
|||||||
(let ((after-save-hook nil))
|
(let ((after-save-hook nil))
|
||||||
(save-buffer))
|
(save-buffer))
|
||||||
(let ((file (file-name-nondirectory (buffer-file-name))))
|
(let ((file (file-name-nondirectory (buffer-file-name))))
|
||||||
(list ghc-module-command (ghc-flymake-command file))))
|
(list ghc-module-command (ghc-flymake-command file ghc-hlint-options))))
|
||||||
|
|
||||||
(defvar ghc-flymake-command nil) ;; nil: check, t: lint
|
(defvar ghc-flymake-command nil) ;; nil: check, t: lint
|
||||||
|
|
||||||
(defun ghc-flymake-command (file)
|
(defun ghc-flymake-command (file opts)
|
||||||
(if ghc-flymake-command
|
(if ghc-flymake-command
|
||||||
(list "lint" file)
|
(let ((hopts (ghc-mapconcat (lambda (x) (list "-h" x)) opts)))
|
||||||
|
`(,@hopts "lint" ,file))
|
||||||
(list "check" file)))
|
(list "check" file)))
|
||||||
|
|
||||||
(defun ghc-flymake-toggle-command ()
|
(defun ghc-flymake-toggle-command ()
|
||||||
|
@ -81,6 +81,11 @@
|
|||||||
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
|
||||||
|
(defun ghc-mapconcat (func list)
|
||||||
|
(apply 'append (mapcar func list)))
|
||||||
|
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
|
||||||
(defconst ghc-null 0)
|
(defconst ghc-null 0)
|
||||||
(defconst ghc-newline 10)
|
(defconst ghc-newline 10)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user