Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

87 lines (74 sloc) 3.842 kb
{-# LANGUAGE TemplateHaskell #-}
module Yi.Config where
import Data.Prototype
import Data.Accessor.Template
import Yi.Buffer
import Yi.Layout
import Yi.Config.Misc
import {-# source #-} Yi.Keymap
import {-# source #-} Yi.Editor
import Yi.Dynamic(ConfigVariables)
import Yi.Event
import Yi.Style
import Yi.Style.Library
import {-# source #-} Yi.UI.Common
import qualified Yi.Interact as I
data UIConfig = UIConfig {
configVtyEscDelay :: Int,
configFontName :: Maybe String, -- ^ Font name, for the UI that support it.
configFontSize :: Maybe Int, -- ^ Font size, for the UI that support it.
configScrollStyle ::Maybe ScrollStyle,
-- ^ Style of scroll
configScrollWheelAmount :: Int, -- ^ Amount to move the buffer when using the scroll wheel
configLeftSideScrollBar :: Bool, -- ^ Should the scrollbar be shown on the left side?
configAutoHideScrollBar :: Bool, -- ^ Hide scrollbar automatically if text fits on one page.
configAutoHideTabBar :: Bool, -- ^ Hide the tabbar automatically if only one tab is present
configLineWrap :: Bool, -- ^ Wrap lines at the edge of the window if too long to display.
configCursorStyle :: CursorStyle,
configWindowFill :: Char,
-- ^ The char with which to fill empty window space. Usually '~' for vi-like
-- editors, ' ' for everything else.
configTheme :: Theme -- ^ UI colours
}
-- | When should we use a \"fat\" cursor (i.e. 2 pixels wide, rather than 1)? Fat cursors have only been implemented for the Pango frontend.
data CursorStyle = AlwaysFat
| NeverFat
| FatWhenFocused
| FatWhenFocusedAndInserting
configStyle :: UIConfig -> UIStyle
configStyle = extractValue . configTheme
-- | Configuration record. All Yi hooks can be set here.
data Config = Config {startFrontEnd :: UIBoot,
-- ^ UI to use.
configUI :: UIConfig,
-- ^ UI-specific configuration.
startActions :: [Action],
-- ^ Actions to run when the editor is started.
initialActions :: [Action],
-- ^ Actions to run after startup (after startActions) or reload.
defaultKm :: KeymapSet,
-- ^ Default keymap to use.
configInputPreprocess :: I.P Event Event,
modeTable :: [AnyMode],
-- ^ List modes by order of preference.
debugMode :: Bool,
-- ^ Produce a .yi.dbg file with a lot of debug information.
configRegionStyle :: RegionStyle,
-- ^ Set to 'Exclusive' for an emacs-like behaviour.
configKillringAccumulate :: Bool,
-- ^ Set to 'True' for an emacs-like behaviour, where
-- all deleted text is accumulated in a killring.
configCheckExternalChangesObsessively :: Bool,
bufferUpdateHandler :: [([Update] -> BufferM ())],
layoutManagers :: [AnyLayoutManager],
-- ^ List of layout managers for 'cycleLayoutManagersNext'
configVars :: ConfigVariables
-- ^ Custom configuration, containing the 'YiConfigVariable's. Configure with 'configVariableA'.
}
configFundamentalMode :: Config -> AnyMode
configFundamentalMode = last . modeTable
configTopLevelKeymap :: Config -> Keymap
configTopLevelKeymap = extractTopKeymap . defaultKm
type UIBoot = Config -> (Event -> IO ()) -> ([Action] -> IO ()) -> Editor -> IO UI
$(nameDeriveAccessors ''Config (\n -> Just (n ++ "A")))
$(nameDeriveAccessors ''UIConfig (\n -> Just (n ++ "A")))
Jump to Line
Something went wrong with that request. Please try again.