diff --git a/elisp/hhp.el b/elisp/hhp.el
--- a/elisp/hhp.el
+++ b/elisp/hhp.el
@@ -63,7 +63,6 @@
 (defvar hhp-sort-key        "\es")
 (defvar hhp-type-key        "\C-c\C-t")
 (defvar hhp-info-key        "\C-c\C-i")
-(defvar hhp-check-key       "\C-x\C-s")
 (defvar hhp-toggle-key      "\C-c\C-c")
 (defvar hhp-jump-key        "\C-c\C-j")
 (defvar hhp-module-key      "\C-c\C-m")
@@ -96,7 +95,7 @@
     (define-key haskell-mode-map hhp-help-key        'hhp-display-errors)
     (define-key haskell-mode-map hhp-insert-key      'hhp-insert-template)
     (define-key haskell-mode-map hhp-sort-key        'hhp-sort-lines)
-    (define-key haskell-mode-map hhp-check-key       'hhp-save-buffer)
+    (define-key haskell-mode-map [remap save-buffer] 'hhp-save-buffer)
     (define-key haskell-mode-map hhp-toggle-key      'hhp-toggle-check-command)
     (define-key haskell-mode-map hhp-jump-key        'hhp-jump-file)
     (define-key haskell-mode-map hhp-module-key      'hhp-insert-module)
diff --git a/hhp.cabal b/hhp.cabal
--- a/hhp.cabal
+++ b/hhp.cabal
@@ -1,5 +1,5 @@
 Name:                   hhp
-Version:                0.0.0
+Version:                0.0.1
 Author:                 Kazu Yamamoto <kazu@iij.ad.jp>
 Maintainer:             Kazu Yamamoto <kazu@iij.ad.jp>
 License:                BSD3
@@ -77,11 +77,9 @@
                       , filepath
                       , ghc
                       , hlint >= 1.8.61
-                      , io-choice
                       , process
                       , syb
-  if impl(ghc < 8.2)
-    Build-Depends:      ghc-boot
+                      , ghc-boot
 
 Executable hhpc
   Default-Language:     Haskell2010
@@ -116,6 +114,8 @@
   Main-Is:              doctests.hs
   Build-Depends:        base
                       , doctest >= 0.9.3
+-- for MIN_VERSION_hlint
+                      , hlint
 
 Test-Suite spec
   Default-Language:     Haskell2010
@@ -164,12 +164,10 @@
                       , filepath
                       , ghc
                       , hspec >= 1.7.1
-                      , io-choice
                       , process
                       , syb
                       , hlint >= 1.7.1
-  if impl(ghc < 8.2)
-    Build-Depends:      ghc-boot
+                      , ghc-boot
 
 Source-Repository head
   Type:                 git
diff --git a/lib/Hhp/Check.hs b/lib/Hhp/Check.hs
--- a/lib/Hhp/Check.hs
+++ b/lib/Hhp/Check.hs
@@ -36,7 +36,7 @@
 check :: Options
       -> [FilePath]  -- ^ The target files.
       -> Ghc (Either String String)
-check opt fileNames = withLogger opt setAllWaringFlags $
+check opt fileNames = withLogger opt (setAllWaringFlags . setPartialSignatures . setDeferTypedHoles) $
     setTargetFiles fileNames
 
 ----------------------------------------------------------------
diff --git a/lib/Hhp/GHCApi.hs b/lib/Hhp/GHCApi.hs
--- a/lib/Hhp/GHCApi.hs
+++ b/lib/Hhp/GHCApi.hs
@@ -11,13 +11,21 @@
   , withCmdFlags
   , setNoWaringFlags
   , setAllWaringFlags
+  , setDeferTypedHoles
+  , setDeferTypeErrors
+  , setPartialSignatures
+  , setWarnTypedHoles
   ) where
 
 import CoreMonad (liftIO)
-import DynFlags (GeneralFlag(Opt_BuildingCabalPackage, Opt_HideAllPackages), gopt_set, ModRenaming(..), PackageFlag(ExposePackage), PackageArg(..))
+import DynFlags (GeneralFlag(Opt_BuildingCabalPackage, Opt_HideAllPackages)
+                ,WarningFlag(Opt_WarnTypedHoles)
+                ,gopt_set, xopt_set, wopt_set
+                ,ModRenaming(..), PackageFlag(ExposePackage), PackageArg(..))
 import Exception (ghandle, SomeException(..))
 import GHC (Ghc, DynFlags(..), GhcLink(..), HscTarget(..), LoadHowMuch(..))
 import qualified GHC as G
+import GHC.LanguageExtensions (Extension(..))
 
 import Control.Applicative ((<|>))
 import Control.Monad (forM, void)
@@ -185,6 +193,22 @@
     teardown = void . G.setSessionDynFlags
 
 ----------------------------------------------------------------
+
+-- | Set 'DynFlags' equivalent to "-fdefer-typed-holes"
+setDeferTypedHoles :: DynFlags -> DynFlags
+setDeferTypedHoles dflag = gopt_set dflag G.Opt_DeferTypedHoles
+
+-- | Set 'DynFlags' equivalent to "-fdefer-type-errors"
+setDeferTypeErrors :: DynFlags -> DynFlags
+setDeferTypeErrors dflag = gopt_set dflag G.Opt_DeferTypeErrors
+
+-- | Set 'DynFlags' equivalent to "-Wtyped-holes"
+setWarnTypedHoles :: DynFlags -> DynFlags
+setWarnTypedHoles dflag = wopt_set dflag Opt_WarnTypedHoles
+
+-- | Set 'DynFlags' equivalent to "-XPartialTypeSignatures"
+setPartialSignatures :: DynFlags -> DynFlags
+setPartialSignatures df = xopt_set (xopt_set df PartialTypeSignatures) NamedWildCards
 
 -- | Set 'DynFlags' equivalent to "-w:".
 setNoWaringFlags :: DynFlags -> DynFlags
diff --git a/lib/Hhp/Info.hs b/lib/Hhp/Info.hs
--- a/lib/Hhp/Info.hs
+++ b/lib/Hhp/Info.hs
@@ -10,7 +10,6 @@
 import CoreMonad (liftIO)
 import CoreUtils (exprType)
 import Desugar (deSugarExpr)
-import DynFlags (gopt_set, wopt_set, WarningFlag(Opt_WarnTypedHoles))
 import Exception (ghandle, SomeException(..))
 import GHC (Ghc, TypecheckedModule(..), DynFlags, SrcSpan, Type, GenLocated(L))
 import qualified GHC as G
@@ -124,12 +123,6 @@
         dflag <- G.getSessionDynFlags
         style <- getStyle dflag
         action dflag style
-
-setDeferTypeErrors :: DynFlags -> DynFlags
-setDeferTypeErrors dflag = gopt_set dflag G.Opt_DeferTypeErrors
-
-setWarnTypedHoles :: DynFlags -> DynFlags
-setWarnTypedHoles dflag = wopt_set dflag Opt_WarnTypedHoles
 
 ----------------------------------------------------------------
 
diff --git a/test/doctests.hs b/test/doctests.hs
--- a/test/doctests.hs
+++ b/test/doctests.hs
@@ -1,3 +1,5 @@
+{-# LANGUAGE CPP #-}
+
 module Main where
 
 import Test.DocTest
@@ -6,6 +8,10 @@
 main = doctest [
     "-package"
   , "ghc"
+#if MIN_VERSION_hlint(2,1,18)
+  , "-hide-package"
+  , "ghc-lib-parser"
+#endif
   , "-ilib/"
   , "-idist/build/autogen/"
   , "-optP-include"
