rasa-ext-cursors 0.1.5 → 0.1.6
raw patch · 4 files changed
+20/−23 lines, 4 filesdep −rasa-ext-styledep ~rasaPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependencies removed: rasa-ext-style
Dependency ranges changed: rasa
API changes (from Hackage documentation)
- Rasa.Ext.Cursors.Internal.Base: displayRange :: BufAction ()
+ Rasa.Ext.Cursors.Internal.Base: setStyleProvider :: BufAction ()
Files
- rasa-ext-cursors.cabal +2/−3
- src/Rasa/Ext/Cursors.hs +2/−1
- src/Rasa/Ext/Cursors/Internal/Actions.hs +0/−1
- src/Rasa/Ext/Cursors/Internal/Base.hs +16/−18
rasa-ext-cursors.cabal view
@@ -1,5 +1,5 @@ name: rasa-ext-cursors-version: 0.1.5+version: 0.1.6 cabal-version: >=1.10 build-type: Simple license: GPL-3@@ -24,8 +24,7 @@ Rasa.Ext.Cursors.Internal.Base build-depends: base >=4.8 && <5,- rasa >=0.1.9 && <0.2,- rasa-ext-style >=0.1.4 && <0.2,+ rasa >=0.1.10 && <0.2, text-lens >=0.1.1 && <0.2, lens ==4.14.*, mtl >=2.2.1 && <2.3,
src/Rasa/Ext/Cursors.hs view
@@ -27,4 +27,5 @@ -- | Registers listeners for the extension. The user should add this to their config. cursors :: Action ()-cursors = beforeEveryRender_ $ buffersDo_ displayRange+cursors = onInit . onBufAdded $+ \(BufAdded bufRef) -> bufDo_ bufRef setStyleProvider
src/Rasa/Ext/Cursors/Internal/Actions.hs view
@@ -10,7 +10,6 @@ ) where import qualified Yi.Rope as Y-import qualified Data.Text as T import Control.Lens import Control.Lens.Text
src/Rasa/Ext/Cursors/Internal/Base.hs view
@@ -8,12 +8,11 @@ , setRanges , overEachRange , addRange- , displayRange+ , setStyleProvider ) where import Rasa.Ext-import Rasa.Ext.Style import Control.Monad.State import Control.Lens@@ -23,20 +22,17 @@ import qualified Yi.Rope as Y -- | Stores the cursor ranges in each buffer.-data Cursors = Cursors- { _cursors :: [CrdRange]- } deriving (Typeable, Show)-makeLenses ''Cursors+data Cursors =+ Cursors [CrdRange]+ deriving (Typeable, Show) instance Default Cursors where- def = Cursors {- _cursors=[Range (Coord 0 0) (Coord 0 1)]-}+ def = Cursors [Range (Coord 0 0) (Coord 0 1)] -- | Adjusts input ranges to contain at least one character. ensureSize :: CrdRange -> CrdRange ensureSize r@(Range start end)- | start == end = + | start == end = if start^.coordCol == 0 then r & rEnd %~ moveCursorByN 1 else r & rStart %~ moveCursorByN (-1) | otherwise = r@@ -46,14 +42,16 @@ cleanRanges :: Y.YiString -> [CrdRange] -> [CrdRange] cleanRanges txt = fmap (ensureSize . clampRange txt) . reverse . nub . sort --- | A lens over all the stored cursor ranges for a buffer+-- | Get the list of ranges getRanges :: BufAction [CrdRange]-getRanges = use (bufExt.cursors)+getRanges = do+ Cursors ranges <- getBufExt+ return ranges setRanges :: [CrdRange] -> BufAction () setRanges new = do txt <- getText- bufExt.cursors .= cleanRanges txt new+ setBufExt . Cursors $ cleanRanges txt new overRanges :: ([CrdRange] -> [CrdRange]) -> BufAction () overRanges f = getRanges >>= setRanges . f@@ -74,9 +72,9 @@ addRange :: CrdRange -> BufAction () addRange r = overRanges (++[r]) --- | Sets style attributes to show a given range.-displayRange :: BufAction ()-displayRange = rangeDo_ setStyle+-- | Adds cursor specific styles+setStyleProvider :: BufAction ()+setStyleProvider = void . addStyleProvider $ rangeDo setStyle where- setStyle :: CrdRange -> BufAction ()- setStyle r = addStyle r (flair ReverseVideo)+ setStyle :: CrdRange -> BufAction (Span CrdRange Style)+ setStyle r = return $ Span r (flair ReverseVideo)