yi-keymap-vim 0.17.1 → 0.18.0
raw patch · 4 files changed
+68/−19 lines, 4 filesdep ~basedep ~yi-coredep ~yi-languagePVP ok
version bump matches the API change (PVP)
Dependency ranges changed: base, yi-core, yi-language
API changes (from Hackage documentation)
+ Yi.Keymap.Vim.Common: instance GHC.Base.Semigroup Yi.Keymap.Vim.Common.EventString
+ Yi.Keymap.Vim.Common: instance GHC.Base.Semigroup Yi.Keymap.Vim.Common.OperatorName
+ Yi.Keymap.Vim.Ex.Commands.Number: parse :: EventString -> Maybe ExCommand
- Yi.Keymap.Vim: VimConfig :: Keymap -> [VimBinding] -> [VimOperator] -> [EventString -> Maybe ExCommand] -> DigraphTbl -> (Char -> Char) -> VimConfig
+ Yi.Keymap.Vim: VimConfig :: Keymap -> [VimBinding] -> [VimOperator] -> [EventString -> Maybe ExCommand] -> DigraphTbl -> Char -> Char -> VimConfig
- Yi.Keymap.Vim: VimOperator :: !OperatorName -> (Int -> StyledRegion -> EditorM RepeatToken) -> VimOperator
+ Yi.Keymap.Vim: VimOperator :: !OperatorName -> Int -> StyledRegion -> EditorM RepeatToken -> VimOperator
- Yi.Keymap.Vim.Motion: Move :: !RegionStyle -> !Bool -> (Maybe Int -> BufferM ()) -> Move
+ Yi.Keymap.Vim.Motion: Move :: !RegionStyle -> !Bool -> Maybe Int -> BufferM () -> Move
- Yi.Keymap.Vim.Operator: VimOperator :: !OperatorName -> (Int -> StyledRegion -> EditorM RepeatToken) -> VimOperator
+ Yi.Keymap.Vim.Operator: VimOperator :: !OperatorName -> Int -> StyledRegion -> EditorM RepeatToken -> VimOperator
Files
- src/Yi/Keymap/Vim/Common.hs +8/−14
- src/Yi/Keymap/Vim/Ex.hs +2/−0
- src/Yi/Keymap/Vim/Ex/Commands/Number.hs +52/−0
- yi-keymap-vim.cabal +6/−5
src/Yi/Keymap/Vim/Common.hs view
@@ -1,7 +1,8 @@-{-# LANGUAGE CPP #-}-{-# LANGUAGE DeriveDataTypeable #-}-{-# LANGUAGE DeriveGeneric #-}-{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE CPP #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-} {-# OPTIONS_HADDOCK show-extensions #-} -- |@@ -38,6 +39,7 @@ import Data.Default (Default (..)) import qualified Data.HashMap.Strict as HM (HashMap) import Data.Monoid ((<>))+import Data.Semigroup (Semigroup) import Data.String (IsString (..)) import qualified Data.Text as T (Text, isPrefixOf, pack) import qualified Data.Text.Encoding as E (decodeUtf8, encodeUtf8)@@ -50,23 +52,15 @@ import Yi.Types (YiVariable) -newtype EventString = Ev { _unEv :: T.Text } deriving (Show, Eq, Ord)+newtype EventString = Ev { _unEv :: T.Text } deriving (Show, Eq, Ord, Semigroup, Monoid) instance IsString EventString where fromString = Ev . T.pack -newtype OperatorName = Op { _unOp :: T.Text } deriving (Show, Eq)+newtype OperatorName = Op { _unOp :: T.Text } deriving (Show, Eq, Semigroup, Monoid) instance IsString OperatorName where fromString = Op . T.pack--instance Monoid EventString where- mempty = Ev mempty- Ev t `mappend` Ev t' = Ev $ t <> t'--instance Monoid OperatorName where- mempty = Op mempty- Op t `mappend` Op t' = Op $ t <> t' instance Binary EventString where get = Ev . E.decodeUtf8 <$> get
src/Yi/Keymap/Vim/Ex.hs view
@@ -28,6 +28,7 @@ import qualified Yi.Keymap.Vim.Ex.Commands.Help as Help (parse) import qualified Yi.Keymap.Vim.Ex.Commands.Make as Make (parse) import qualified Yi.Keymap.Vim.Ex.Commands.Nohl as Nohl (parse)+import qualified Yi.Keymap.Vim.Ex.Commands.Number as Number (parse) import qualified Yi.Keymap.Vim.Ex.Commands.Paste as Paste (parse) import qualified Yi.Keymap.Vim.Ex.Commands.Quit as Quit (parse) import qualified Yi.Keymap.Vim.Ex.Commands.Read as Read (parse)@@ -58,6 +59,7 @@ , Help.parse , Make.parse , Nohl.parse+ , Number.parse , Paste.parse , Quit.parse , Read.parse
+ src/Yi/Keymap/Vim/Ex/Commands/Number.hs view
@@ -0,0 +1,52 @@+{-# LANGUAGE OverloadedStrings #-}+{-# OPTIONS_HADDOCK show-extensions #-}++-- |+-- Module : Yi.Keymap.Vim.Ex.Commands.Number+-- License : GPL-2+-- Maintainer : yi-devel@googlegroups.com+-- Stability : experimental+-- Portability : portable+--+-- Toggles line numbers.++module Yi.Keymap.Vim.Ex.Commands.Number (parse) where++import qualified Data.Attoparsec.Text as P (string)+import Data.Monoid ((<>))+import Yi.Editor (printMsg, withCurrentBuffer)+import Yi.Keymap (Action (BufferA, EditorA))+import Yi.Keymap.Vim.Common (EventString)+import Yi.Keymap.Vim.Ex.Commands.Common (BoolOptionAction (..), parseBoolOption, pureExCommand)+import qualified Yi.Keymap.Vim.Ex.Commands.Common as Ex (parse)+import Yi.Keymap.Vim.Ex.Types (ExCommand (..), evStringToExCommand)+import Yi.String (showT)+import Yi.UI.LineNumbers (getDisplayLineNumbersLocal, setDisplayLineNumbersLocal)++-- | Defines the following commands:+-- - :set [no]number (toggle buffer-local line numbers)+-- - :unset number (make the current buffer use the global setting)+parse :: EventString -> Maybe ExCommand+parse = evStringToExCommand+ [ parseBoolOption "number" actionSet+ , parseUnset+ ]++actionSet :: BoolOptionAction -> Action+actionSet BoolOptionAsk = EditorA $ do+ mb <- withCurrentBuffer getDisplayLineNumbersLocal+ printMsg $ "number = " <> case mb of+ Nothing -> "<unset>"+ Just b -> showT b+actionSet (BoolOptionSet b) = BufferA $ setDisplayLineNumbersLocal (Just b)+actionSet BoolOptionInvert = BufferA $ do+ b <- getDisplayLineNumbersLocal+ setDisplayLineNumbersLocal (fmap not b)++parseUnset :: EventString -> Maybe ExCommand+parseUnset = Ex.parse $ do+ _ <- P.string "unset number"+ return $ pureExCommand+ { cmdShow = "unset number"+ , cmdAction = BufferA $ setDisplayLineNumbersLocal Nothing+ }
yi-keymap-vim.cabal view
@@ -1,5 +1,5 @@ name: yi-keymap-vim-version: 0.17.1+version: 0.18.0 synopsis: Vim keymap for Yi editor category: Yi homepage: https://github.com/yi-editor/yi#readme@@ -65,8 +65,8 @@ , text , transformers-base , unordered-containers- , yi-core >= 0.17- , yi-language >= 0.17+ , yi-core >= 0.18+ , yi-language >= 0.18 , yi-rope >= 0.10 exposed-modules: Yi.Config.Default.Vim@@ -89,6 +89,7 @@ Yi.Keymap.Vim.Ex.Commands.Help Yi.Keymap.Vim.Ex.Commands.Make Yi.Keymap.Vim.Ex.Commands.Nohl+ Yi.Keymap.Vim.Ex.Commands.Number Yi.Keymap.Vim.Ex.Commands.Paste Yi.Keymap.Vim.Ex.Commands.Quit Yi.Keymap.Vim.Ex.Commands.Read@@ -149,8 +150,8 @@ , text , transformers-base , unordered-containers- , yi-core >= 0.17- , yi-language >= 0.17+ , yi-core >= 0.18+ , yi-language >= 0.18 , yi-rope >= 0.10 , tasty , tasty-hunit