Safe Haskell | None |
---|---|
Language | Haskell2010 |
A normalized API to many buffer operations.
- data TextUnit
- outsideUnit :: TextUnit -> TextUnit
- leftBoundaryUnit :: TextUnit -> TextUnit
- unitWord :: TextUnit
- unitViWord :: TextUnit
- unitViWORD :: TextUnit
- unitViWordAnyBnd :: TextUnit
- unitViWORDAnyBnd :: TextUnit
- unitViWordOnLine :: TextUnit
- unitViWORDOnLine :: TextUnit
- unitDelimited :: Char -> Char -> Bool -> TextUnit
- unitSentence :: TextUnit
- unitEmacsParagraph :: TextUnit
- unitParagraph :: TextUnit
- isAnySep :: Char -> Bool
- unitSep :: TextUnit
- unitSepThisLine :: TextUnit
- isWordChar :: Char -> Bool
- moveB :: TextUnit -> Direction -> BufferM ()
- maybeMoveB :: TextUnit -> Direction -> BufferM ()
- transformB :: (YiString -> YiString) -> TextUnit -> Direction -> BufferM ()
- transposeB :: TextUnit -> Direction -> BufferM ()
- regionOfB :: TextUnit -> BufferM Region
- regionOfNonEmptyB :: TextUnit -> BufferM Region
- regionOfPartB :: TextUnit -> Direction -> BufferM Region
- regionOfPartNonEmptyB :: TextUnit -> Direction -> BufferM Region
- regionOfPartNonEmptyAtB :: TextUnit -> Direction -> Point -> BufferM Region
- readPrevUnitB :: TextUnit -> BufferM YiString
- readUnitB :: TextUnit -> BufferM YiString
- untilB :: BufferM Bool -> BufferM a -> BufferM [a]
- doUntilB_ :: BufferM Bool -> BufferM a -> BufferM ()
- untilB_ :: BufferM Bool -> BufferM a -> BufferM ()
- whileB :: BufferM Bool -> BufferM a -> BufferM [a]
- doIfCharB :: (Char -> Bool) -> BufferM a -> BufferM ()
- atBoundaryB :: TextUnit -> Direction -> BufferM Bool
- numberOfB :: TextUnit -> TextUnit -> BufferM Int
- deleteB :: TextUnit -> Direction -> BufferM ()
- genMaybeMoveB :: TextUnit -> (Direction, BoundarySide) -> Direction -> BufferM ()
- genMoveB :: TextUnit -> (Direction, BoundarySide) -> Direction -> BufferM ()
- data BoundarySide
- genAtBoundaryB :: TextUnit -> Direction -> BoundarySide -> BufferM Bool
- checkPeekB :: Int -> [Char -> Bool] -> Direction -> BufferM Bool
- data RegionStyle
- mkRegionOfStyleB :: Point -> Point -> RegionStyle -> BufferM Region
- convertRegionToStyleB :: Region -> RegionStyle -> BufferM Region
- unitWiseRegion :: TextUnit -> Region -> BufferM Region
- extendRegionToBoundaries :: TextUnit -> BoundarySide -> BoundarySide -> Region -> BufferM Region
- getRegionStyle :: BufferM RegionStyle
- putRegionStyle :: RegionStyle -> BufferM ()
Documentation
Designate a given "unit" of text.
outsideUnit :: TextUnit -> TextUnit Source
leftBoundaryUnit :: TextUnit -> TextUnit Source
Unit that have its left and right boundaries at the left boundary of the argument unit.
delimited on the left and right by given characters, boolean argument tells if whether those are included.
a word as in use in Emacs (fundamental mode)
unitEmacsParagraph :: TextUnit Source
Paragraph to implement emacs-like forward-paragraph/backward-paragraph
unitParagraph :: TextUnit Source
Paragraph that begins and ends in the paragraph, not the empty lines surrounding it.
isAnySep :: Char -> Bool Source
Separator characters (space, tab, unicode separators). Most of the units above attempt to identify "words" with various punctuation and symbols included or excluded. This set of units is a simple inverse: it is true for "whitespace" or "separators" and false for anything that is not (letters, numbers, symbols, punctuation, whatever).
unitSepThisLine :: TextUnit Source
unitSepThisLine is true for any kind of whitespace/separator on this line only
isWordChar :: Char -> Bool Source
maybeMoveB :: TextUnit -> Direction -> BufferM () Source
As moveB
, unless the point is at a unit boundary
transposeB :: TextUnit -> Direction -> BufferM () Source
regionOfB :: TextUnit -> BufferM Region Source
Region of the whole textunit where the current point is.
regionOfNonEmptyB :: TextUnit -> BufferM Region Source
Non empty region of the whole textunit where the current point is.
regionOfPartB :: TextUnit -> Direction -> BufferM Region Source
Region between the point and the next boundary. The region is empty if the point is at the boundary.
regionOfPartNonEmptyB :: TextUnit -> Direction -> BufferM Region Source
Non empty region between the point and the next boundary, In fact the region can be empty if we are at the end of file.
regionOfPartNonEmptyAtB :: TextUnit -> Direction -> Point -> BufferM Region Source
Non empty region at given point and the next boundary,
untilB :: BufferM Bool -> BufferM a -> BufferM [a] Source
Repeat an action until the condition is fulfilled or the cursor stops moving. The Action may be performed zero times.
doIfCharB :: (Char -> Bool) -> BufferM a -> BufferM () Source
Do an action if the current buffer character passes the predicate
deleteB :: TextUnit -> Direction -> BufferM () Source
Delete between point and next unit boundary, return the deleted region.
genMaybeMoveB :: TextUnit -> (Direction, BoundarySide) -> Direction -> BufferM () Source
Generic maybe move operation. As genMoveB, but don't move if we are at boundary already.
genMoveB :: TextUnit -> (Direction, BoundarySide) -> Direction -> BufferM () Source
Generic move operation
Warning: moving To the (OutsideBound, Backward) bound of Document is impossible (offset -1!)
genMoveB u b d
: move in direction d until encountering boundary b or unit u. See genAtBoundaryB
for boundary explanation.
genAtBoundaryB :: TextUnit -> Direction -> BoundarySide -> BufferM Bool Source
genAtBoundaryB u d s
returns whether the point is at a given boundary (d,s)
.
Boundary (d,s)
, taking Word as example, means:
Word
^^ ^^
12 34
1: (Backward,OutsideBound)
2: (Backward,InsideBound)
3: (Forward,InsideBound)
4: (Forward,OutsideBound)
rules: genAtBoundaryB u Backward InsideBound = atBoundaryB u Backward genAtBoundaryB u Forward OutsideBound = atBoundaryB u Forward
data RegionStyle Source
mkRegionOfStyleB :: Point -> Point -> RegionStyle -> BufferM Region Source
extendRegionToBoundaries :: TextUnit -> BoundarySide -> BoundarySide -> Region -> BufferM Region Source
Extend the given region to boundaries of the text unit. For instance one can extend the selection to complete lines, or paragraphs.
putRegionStyle :: RegionStyle -> BufferM () Source