packages feed

yi 0.12.0 → 0.12.1

raw patch · 12 files changed

+98/−39 lines, 12 filesdep +text-icudep −regex-basedep −regex-tdfadep ~lensdep ~vtyPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependencies added: text-icu

Dependencies removed: regex-base, regex-tdfa

Dependency ranges changed: lens, vty

API changes (from Hackage documentation)

- Yi.Buffer.Misc: directoryContentA :: HasAttributes c_a1gYl => Lens' c_a1gYl Bool
+ Yi.Buffer.Misc: directoryContentA :: HasAttributes c_a1i9g => Lens' c_a1i9g Bool
- Yi.Buffer.Misc: encodingConverterNameA :: HasAttributes c_a1gYl => Lens' c_a1gYl (Maybe ConverterName)
+ Yi.Buffer.Misc: encodingConverterNameA :: HasAttributes c_a1i9g => Lens' c_a1i9g (Maybe ConverterName)
- Yi.Buffer.Misc: fontsizeVariationA :: HasAttributes c_a1gYl => Lens' c_a1gYl Int
+ Yi.Buffer.Misc: fontsizeVariationA :: HasAttributes c_a1i9g => Lens' c_a1i9g Int
- Yi.Buffer.Misc: identA :: HasAttributes c_a1gYl => Lens' c_a1gYl BufferId
+ Yi.Buffer.Misc: identA :: HasAttributes c_a1i9g => Lens' c_a1i9g BufferId
- Yi.Buffer.Misc: insertingA :: HasAttributes c_a1gYl => Lens' c_a1gYl Bool
+ Yi.Buffer.Misc: insertingA :: HasAttributes c_a1i9g => Lens' c_a1i9g Bool
- Yi.Buffer.Misc: keymapProcessA :: HasAttributes c_a1gYl => Lens' c_a1gYl KeymapProcess
+ Yi.Buffer.Misc: keymapProcessA :: HasAttributes c_a1i9g => Lens' c_a1i9g KeymapProcess
- Yi.Buffer.Misc: lastActiveWindowA :: HasAttributes c_a1gYl => Lens' c_a1gYl Window
+ Yi.Buffer.Misc: lastActiveWindowA :: HasAttributes c_a1i9g => Lens' c_a1i9g Window
- Yi.Buffer.Misc: lastSyncTimeA :: HasAttributes c_a1gYl => Lens' c_a1gYl UTCTime
+ Yi.Buffer.Misc: lastSyncTimeA :: HasAttributes c_a1i9g => Lens' c_a1i9g UTCTime
- Yi.Buffer.Misc: modeAdjustBlockA :: Lens' (Mode syntax_a1adX) (syntax_a1adX -> Int -> BufferM ())
+ Yi.Buffer.Misc: modeAdjustBlockA :: Lens' (Mode syntax_a1boS) (syntax_a1boS -> Int -> BufferM ())
- Yi.Buffer.Misc: modeAppliesA :: Lens' (Mode syntax_a1adX) (FilePath -> YiString -> Bool)
+ Yi.Buffer.Misc: modeAppliesA :: Lens' (Mode syntax_a1boS) (FilePath -> YiString -> Bool)
- Yi.Buffer.Misc: modeFollowA :: Lens' (Mode syntax_a1adX) (syntax_a1adX -> Action)
+ Yi.Buffer.Misc: modeFollowA :: Lens' (Mode syntax_a1boS) (syntax_a1boS -> Action)
- Yi.Buffer.Misc: modeGetStrokesA :: Lens' (Mode syntax_a1adX) (syntax_a1adX -> Point -> Point -> Point -> [Stroke])
+ Yi.Buffer.Misc: modeGetStrokesA :: Lens' (Mode syntax_a1boS) (syntax_a1boS -> Point -> Point -> Point -> [Stroke])
- Yi.Buffer.Misc: modeGotoDeclarationA :: Lens' (Mode syntax_a1adX) (BufferM ())
+ Yi.Buffer.Misc: modeGotoDeclarationA :: Lens' (Mode syntax_a1boS) (BufferM ())
- Yi.Buffer.Misc: modeHLA :: Lens' (Mode syntax_a1adX) (ExtHL syntax_a1adX)
+ Yi.Buffer.Misc: modeHLA :: Lens' (Mode syntax_a1boS) (ExtHL syntax_a1boS)
- Yi.Buffer.Misc: modeIndentA :: Lens' (Mode syntax_a1adX) (syntax_a1adX -> IndentBehaviour -> BufferM ())
+ Yi.Buffer.Misc: modeIndentA :: Lens' (Mode syntax_a1boS) (syntax_a1boS -> IndentBehaviour -> BufferM ())
- Yi.Buffer.Misc: modeIndentSettingsA :: Lens' (Mode syntax_a1adX) IndentSettings
+ Yi.Buffer.Misc: modeIndentSettingsA :: Lens' (Mode syntax_a1boS) IndentSettings
- Yi.Buffer.Misc: modeKeymapA :: Lens' (Mode syntax_a1adX) (KeymapSet -> KeymapSet)
+ Yi.Buffer.Misc: modeKeymapA :: Lens' (Mode syntax_a1boS) (KeymapSet -> KeymapSet)
- Yi.Buffer.Misc: modeModeLineA :: Lens' (Mode syntax_a1adX) ([Text] -> BufferM Text)
+ Yi.Buffer.Misc: modeModeLineA :: Lens' (Mode syntax_a1boS) ([Text] -> BufferM Text)
- Yi.Buffer.Misc: modeNameA :: Lens' (Mode syntax_a1adX) Text
+ Yi.Buffer.Misc: modeNameA :: Lens' (Mode syntax_a1boS) Text
- Yi.Buffer.Misc: modeOnLoadA :: Lens' (Mode syntax_a1adX) (BufferM ())
+ Yi.Buffer.Misc: modeOnLoadA :: Lens' (Mode syntax_a1boS) (BufferM ())
- Yi.Buffer.Misc: modePrettifyA :: Lens' (Mode syntax_a1adX) (syntax_a1adX -> BufferM ())
+ Yi.Buffer.Misc: modePrettifyA :: Lens' (Mode syntax_a1boS) (syntax_a1boS -> BufferM ())
- Yi.Buffer.Misc: modeToggleCommentSelectionA :: Lens' (Mode syntax_a1adX) (Maybe (BufferM ()))
+ Yi.Buffer.Misc: modeToggleCommentSelectionA :: Lens' (Mode syntax_a1boS) (Maybe (BufferM ()))
- Yi.Buffer.Misc: pendingUpdatesA :: HasAttributes c_a1gYl => Lens' c_a1gYl [UIUpdate]
+ Yi.Buffer.Misc: pendingUpdatesA :: HasAttributes c_a1i9g => Lens' c_a1i9g [UIUpdate]
- Yi.Buffer.Misc: pointFollowsWindowA :: HasAttributes c_a1gYl => Lens' c_a1gYl (WindowRef -> Bool)
+ Yi.Buffer.Misc: pointFollowsWindowA :: HasAttributes c_a1i9g => Lens' c_a1i9g (WindowRef -> Bool)
- Yi.Buffer.Misc: preferColA :: HasAttributes c_a1gYl => Lens' c_a1gYl (Maybe Int)
+ Yi.Buffer.Misc: preferColA :: HasAttributes c_a1i9g => Lens' c_a1i9g (Maybe Int)
- Yi.Buffer.Misc: readOnlyA :: HasAttributes c_a1gYl => Lens' c_a1gYl Bool
+ Yi.Buffer.Misc: readOnlyA :: HasAttributes c_a1i9g => Lens' c_a1i9g Bool
- Yi.Buffer.Misc: undosA :: HasAttributes c_a1gYl => Lens' c_a1gYl URList
+ Yi.Buffer.Misc: undosA :: HasAttributes c_a1i9g => Lens' c_a1i9g URList
- Yi.Modes: extensionOrContentsMatch :: [String] -> String -> FilePath -> YiString -> Bool
+ Yi.Modes: extensionOrContentsMatch :: [String] -> Text -> FilePath -> YiString -> Bool

Files

src/library/Yi/Buffer/HighLevel.hs view
@@ -923,11 +923,9 @@     (l0, _) <- getLineAndColOfPoint $ regionStart reg     (l1, _) <- getLineAndColOfPoint $ regionEnd reg     moveTo $ 1 + regionEnd reg-    fmap (reverse . catMaybes) $ forM [0 .. abs (l0 - l1)] $ \i -> savingPointB $ do+    fmap reverse $ forM [0 .. abs (l0 - l1)] $ \i -> savingPointB $ do         void $ lineMoveRel $ -i-        p <- pointB-        eol <- atEol-        return (if not eol then Just p else Nothing)+        pointB rightEdgesOfRegionB LineWise reg = savingPointB $ do     lastEol <- do         moveTo $ regionEnd reg
src/library/Yi/Dired.hs view
@@ -62,6 +62,7 @@ import           Data.Maybe               (fromMaybe) import           Data.Monoid              (mempty, (<>)) import qualified Data.Text                as T (Text, pack, unpack)+import qualified Data.Text.ICU            as ICU (regex, find, unfold, group, MatchOption(..)) import           Data.Time.Clock.POSIX    (posixSecondsToUTCTime) import           Data.Typeable            (Typeable) import           System.CanonicalizePath  (canonicalizePath)@@ -103,7 +104,6 @@ import           Yi.MiniBuffer            (noHint, spawnMinibufferE, withMinibuffer, withMinibufferFree) import           Yi.Misc                  (getFolder, promptFile) import           Yi.Monad                 (gets)-import           Yi.Regex                 (AllTextSubmatches (..), (=~)) import qualified Yi.Rope                  as R import           Yi.String                (showT) import           Yi.Style@@ -258,10 +258,12 @@       content <- withGivenBuffer b elemsB        let header = R.take 1024 content-          rx = "\\-\\*\\- *([^ ]*) *\\-\\*\\-" :: String-          hmode = case R.toString header =~ rx of-              AllTextSubmatches [_,m] -> T.pack m-              _ -> ""+          rx = ICU.regex [] "\\-\\*\\- *([^ ]*) *\\-\\*\\-"+          hmode = case ICU.find rx (R.toText header) of+              Nothing -> ""+              Just m  -> case (ICU.group 1 m) of+                           Just n  -> n+                           Nothing -> ""           Just mode = find (\(AnyMode m) -> modeName m == hmode) tbl <|>                       find (\(AnyMode m) -> modeApplies m f header) tbl <|>                       Just (AnyMode emptyMode)
src/library/Yi/Eval.hs view
@@ -4,6 +4,9 @@ {-# LANGUAGE LambdaCase                 #-} {-# LANGUAGE OverloadedStrings          #-} {-# LANGUAGE TemplateHaskell            #-}+#ifdef HINT+{-# LANGUAGE FlexibleContexts #-}+#endif {-# OPTIONS_HADDOCK show-extensions #-}  -- |@@ -159,8 +162,6 @@ evaluator :: Field Evaluator evaluator = customVariable -instance YiConfigVariable Evaluator- -- * Evaluator based on GHCi -- | Cached variable for getAllNamesInScopeImpl newtype NamesCache = NamesCache [String] deriving (Typeable, Binary)@@ -401,3 +402,5 @@ #else     def = publishedActionsEvaluator #endif++instance YiConfigVariable Evaluator
src/library/Yi/Keymap/Vim/VisualMap.hs view
@@ -142,6 +142,9 @@ operatorBindings operators = fmap mkOperatorBinding $ operators ++ visualOperators     where visualOperators = fmap synonymOp                                   [ ("x", "d")+                                  , ("s", "c")+                                  , ("S", "c")+                                  , ("C", "c")                                   , ("~", "g~")                                   , ("Y", "y")                                   , ("u", "gu")@@ -242,7 +245,8 @@                       "I" -> leftEdgesOfRegionB style region                       "A" -> rightEdgesOfRegionB style region                       _ -> error "Just silencing ghc's false positive warning."-                  withCurrentBuffer $ moveTo $ head cursors+                  case cursors of+                      (mainCursor : _) -> withCurrentBuffer (moveTo mainCursor)                   modifyStateE $ \s -> s { vsSecondaryCursors = drop 1 cursors }                   switchModeE $ Insert (head evs)                   return Continue
src/library/Yi/Modes.hs view
@@ -21,13 +21,14 @@                  gitCommitMode, rubyMode, styleMode                 ) where -import "regex-tdfa" Text.Regex.TDFA  ((=~))- import           Control.Applicative ((<$>)) import           Control.Lens        ((%~), (&), (.~), (^.)) import           Data.List           (isPrefixOf)-import           Data.Maybe          (fromMaybe)+import           Data.Maybe          (fromMaybe, isJust) import           System.FilePath     (takeDirectory, takeExtension, takeFileName)+import qualified Data.Text           as T (Text)+import qualified Data.Text.ICU       as ICU (regex, find, MatchOption(..))+ import           Yi.Buffer import qualified Yi.IncrementalParse  as IncrParser (scanner) import           Yi.Keymap            (YiM)@@ -50,7 +51,7 @@ import qualified Yi.Lexer.SVNCommit   as SVNCommit (lexer) import qualified Yi.Lexer.Whitespace  as Whitespace (lexer) import           Yi.MiniBuffer        (anyModeByNameM)-import qualified Yi.Rope              as R (YiString, toString)+import qualified Yi.Rope              as R (YiString, toText) import           Yi.Search            (makeSimpleSearch) import           Yi.Style             (StyleName) import           Yi.Syntax            (ExtHL (ExtHL))@@ -233,10 +234,12 @@  -- | When applied to an extensions list and regular expression pattern, creates -- a 'Mode.modeApplies' function.-extensionOrContentsMatch :: [String] -> String -> FilePath -> R.YiString -> Bool+extensionOrContentsMatch :: [String] -> T.Text -> FilePath -> R.YiString -> Bool extensionOrContentsMatch extensions pattern fileName contents-    = extensionMatches extensions fileName || contentsMatch-    where contentsMatch = R.toString contents =~ pattern :: Bool+    = extensionMatches extensions fileName || isJust m+    where+        r = ICU.regex [] pattern+        m = ICU.find r $ R.toText contents  -- | Adds a hook to all matching hooks in a list hookModes :: (AnyMode -> Bool) -> BufferM () -> [AnyMode] -> [AnyMode]
src/library/Yi/Rectangle.hs view
@@ -13,13 +13,12 @@  module Yi.Rectangle where -import "regex-tdfa" Text.Regex.TDFA ( (=~), AllTextSubmatches(..) )- import           Control.Applicative ((<$>)) import           Control.Monad       (forM_) import           Data.List           (sort, transpose) import           Data.Monoid         ((<>)) import qualified Data.Text           as T (Text, concat, justifyLeft, length, pack, unpack)+import qualified Data.Text.ICU       as ICU (regex, find, unfold, group) import           Yi.Buffer import           Yi.Editor           (EditorM, getRegE, setRegE, withCurrentBuffer) import qualified Yi.Rope             as R@@ -30,17 +29,17 @@   s <- getSelectRegionB >>= unitWiseRegion Line   modifyRegionB (R.fromText . alignText str . R.toText) s   where-    regexSplit :: String -> String -> [T.Text]-    regexSplit regex l = case l =~ regex of-        AllTextSubmatches (_:matches) -> T.pack <$> matches-        _ -> error "regexSplit: text does not match"+    regexSplit :: T.Text -> T.Text -> [T.Text]+    regexSplit pattern l = case ICU.find (ICU.regex [] pattern) l of+        Nothing -> error "regexSplit: text does not match"+        Just m  -> drop 1 $ ICU.unfold ICU.group m      alignText :: T.Text -> T.Text -> T.Text     alignText regex text = unlines' ls'       where ls, ls' :: [T.Text]             ls = lines' text             columns :: [[T.Text]]-            columns = regexSplit (T.unpack regex) <$> (T.unpack <$> ls)+            columns = regexSplit regex <$> ls              columnsWidth :: [Int]             columnsWidth = fmap (maximum . fmap T.length) $ transpose columns
src/library/Yi/Types.hs view
@@ -27,7 +27,7 @@ module Yi.Types where  #ifdef FRONTEND_VTY-import qualified Graphics.Vty as Vty ()+import qualified Graphics.Vty as Vty (Config) #endif  import           Control.Applicative            (Applicative, pure, (<$>), (<*>))@@ -53,7 +53,6 @@ import           Data.Traversable               (Traversable) import           Data.Typeable                  (Typeable) import           Data.Word                      (Word8)-import qualified Graphics.Vty                   as Vty (Config) import           Yi.Buffer.Basic                (BufferRef, WindowRef) import           Yi.Buffer.Implementation import           Yi.Buffer.Undo                 (URList)
src/library/Yi/UI/Pango.hs view
@@ -23,7 +23,7 @@ import           Control.Applicative import           Control.Concurrent import           Control.Exception (catch, SomeException)-import           Control.Lens hiding (set, Action, from)+import           Control.Lens hiding (set, from) import           Control.Monad hiding (forM_, mapM_, forM, mapM) import           Data.Foldable import           Data.IORef
+ src/tests/vimtests/repeat/O1.test view
@@ -0,0 +1,17 @@+-- Input+(2,1)+123+456+789+-- Output+(7,3)+123+456+abc+abc+abc+abc+abc+789+-- Events+2oabc<Esc>3.
+ src/tests/vimtests/visual/A_3.test view
@@ -0,0 +1,8 @@+-- Input+(1,1)+123+-- Output+(1,7)+123text+-- Events+<C-v>$Atext<Esc>
+ src/tests/vimtests/visual/CSs.test view
@@ -0,0 +1,30 @@+-- Input+(1,1)+0; nil       20; binil     40; quadnil+1; un        21; biun      41; quadun+2; bi        22; bibi      42; quadbi+3; tri       23; bitri     43; quadtri+4; quad      24; biquad    44; quadquad+5; pent      25; bipent    45; quadpent+6; hex       26; bihex     46; quadhex+7; sept      27; bisept    47; quadsept+8; oct       28; bioct     48; quadoct+9; enn       29; bienn     49; quadenn+X; dec       2X; bidec     4X; quaddec+E; lev       2E; bilev     4E; quadlev+-- Output+(11,7)+0; nil       20; binil     40; quadnil+1; un        21; biun      41; quadun+2; two       22; bibi      42; quadbi+3; tri       23; bitri     43; quadtri+4; quad      24; biquad    44; quadquad+5; pent      25; bipent    45; quadpent+6; six       26; bihex     46; quadhex+7; sept      27; bisept    47; quadsept+8; oct       28; bioct     48; quadoct+9; nine      29; bienn     49; quadenn+X; ten       2X; bidec     4X; quaddec+E; lev       2E; bilev     4E; quadlev+-- Events+2j3lv3lstwo <Esc>4j03lvelcsix <Esc>3j03lv4lCnine <Esc>j03lvelSten <Esc>
yi.cabal view
@@ -1,5 +1,5 @@ name:           yi-version:        0.12.0+version:        0.12.1 category:       Development, Editor synopsis:       The Haskell-Scriptable Editor description:@@ -104,10 +104,7 @@   Description: bake-in the self-checks  flag hint-  Default: False-  -- TODO: figure out how to write this-  -- if impl(ghc < 7.10.1)-  --   Default: True+  Default: True   Description: Include hint (haskell interpreter) in yi  library@@ -276,7 +273,7 @@     bytestring >= 0.9.1 && < 0.11,     dynamic-state >= 0.1.0.5,     data-default,-    lens >= 4.4.0.1,+    lens >= 4.7,     dlist >=0.4.1,     dyre >=0.8.11,     filepath >= 1.1,@@ -284,8 +281,7 @@     mtl >= 0.1.0.1,     parsec >= 3.0,     pointedlist >= 0.5,-    regex-base ==0.93.*,-    regex-tdfa >= 1.1 && <1.3,+    text-icu >= 0.7,     safe >= 0.3.4 && < 0.4,     split >= 0.1 && < 0.3,     template-haskell >= 2.4,@@ -348,7 +344,7 @@       Yi.UI.Vty.Conversions     build-depends:       unix-compat >=0.1 && <0.5,-      vty >= 5.2.4 && < 6+      vty >= 5.2.4 && < 5.4     cpp-options: -DFRONTEND_VTY    other-modules:@@ -394,7 +390,7 @@     Vim.TestPureEditorManipulations   build-depends:     base,-    lens >= 4.4.0.1,+    lens >= 4.7,     semigroups,     tasty,     tasty-hunit,