yi-contrib-0.8.0: src/Yi/Config/Users/Gwern.hs
module Yi.Config.Users.Gwern (config) where
import Control.Lens
import Yi
import Yi.Hoogle (hoogle)
import Yi.Keymap.Emacs (defKeymap, _eKeymap, mkKeymap)
import qualified Yi.Mode.Haskell as H
import qualified Yi.Mode.IReader as IReader (ireaderMode)
config :: Config
config = defaultEmacsConfig
{ modeTable = AnyMode bestHaskellMode : AnyMode IReader.ireaderMode : modeTable defaultConfig,
-- Keymap Configuration
defaultKm = myKeymap,
configUI = defaultUIConfig {configFontSize = Nothing, configWindowFill = ' '} }
where defaultUIConfig :: UIConfig
defaultUIConfig = configUI defaultConfig
-- bestHaskellMode :: Mode (Tree (Tok Token))
bestHaskellMode = -- Shim.minorMode $
H.cleverMode { modeKeymap =
topKeymapA %~ ((ctrlCh 'c' ?>> choice [ctrlCh 'l' ?>>! H.ghciLoadBuffer,
ctrl (char 'z') ?>>! H.ghciGet,
ctrl (char 'h') ?>>! hoogle,
ctrlCh 'r' ?>>! H.ghciSend ":r",
ctrlCh 't' ?>>! H.ghciInferType])
<||) }
myKeymap :: KeymapSet
myKeymap = mkKeymap $ override Yi.Keymap.Emacs.defKeymap $ \proto _self ->
proto { _eKeymap = _eKeymap proto ||>
-- Add a M-g binding for goto-line
(metaCh 'g' ?>>! gotoLn)
-- Use a more clever binding for Home
||> (spec KHome ?>>! moveNonspaceOrSol) }