yi-0.12.0: The Haskell-Scriptable Editor

Safe HaskellNone
  • OverloadedStrings
  • DeriveDataTypeable
  • GeneralizedNewtypeDeriving
  • NondecreasingIndentation
  • LambdaCase




Search/Replace functions



setRegexE :: SearchExp -> EditorM () Source

Put regex into regex register

resetRegexE :: EditorM () Source

Clear the regex register

getRegexE :: EditorM (Maybe SearchExp) Source

Return contents of regex register

type SearchMatch = Region Source

Global searching. Search for regex and move point to that position. Nothing means reuse the last regular expression. Just s means use s as the new regular expression. Direction of search can be specified as either Backward or Forward (forwards in the buffer). Arguments to modify the compiled regular expression can be supplied as well.

data SearchOption :: *



Compile for matching that ignores char case


Compile for newline-insensitive matching


Treat the input not as a regex but as a literal string to search for.


Eq SearchOption 
Generic SearchOption 
Binary SearchOption 
type Rep SearchOption = D1 D1SearchOption ((:+:) (C1 C1_0SearchOption U1) ((:+:) (C1 C1_1SearchOption U1) (C1 C1_2SearchOption U1))) 

doSearch Source


:: Maybe String

Nothing means used previous pattern, if any. Complain otherwise. Use getRegexE to check for previous patterns

-> [SearchOption]

Flags to modify the compiled regex

-> Direction

Backward or Forward

-> EditorM SearchResult 

continueSearch :: (SearchExp, Direction) -> BufferM SearchResult Source

Do a search, placing cursor at first char of pattern, if found. Keymaps may implement their own regex language. How do we provide for this? Also, what's happening with ^ not matching sol?

makeSimpleSearch :: YiString -> SearchExp Source

Create a SearchExp that matches exactly its argument

Batch search-replace

searchReplaceRegionB Source


:: YiString

The string to search for

-> YiString

The string to replace it with

-> Region

The region to perform this over

-> BufferM Int 

Search and Replace all within the current region. Note the region is the final argument since we might perform the same search and replace over multiple regions however we are unlikely to perform several search and replaces over the same region since the first such may change the bounds of the region.

searchReplaceSelectionB Source


:: YiString

text to search for

-> YiString

text to replace it with

-> BufferM Int 

Peform a search and replace on the selection

replaceString :: YiString -> YiString -> BufferM Int Source

Replace a string by another everywhere in the document

searchAndRepRegion0 :: SearchExp -> YiString -> Bool -> Region -> BufferM Int Source

Search and replace in the given region.

If the input boolean is True, then the replace is done globally, otherwise only the first match is replaced. Returns the number of replacements done.

searchAndRepUnit :: YiString -> YiString -> Bool -> TextUnit -> EditorM Bool Source

Search and replace in the region defined by the given unit. The rest is as in searchAndRepRegion.

Incremental Search

isearchCancelE :: EditorM () Source

Cancel a search. Also see isearchCancelWithE.

isearchFinishE :: EditorM () Source

Succesfully finish a search. Also see isearchFinishWithE.

isearchCancelWithE :: EditorM a -> EditorM () Source

Wrapper over isearchEndWith that passes through the action and marks the search as unsuccessful (i.e. when the user wants to jump back to where the search started).

isearchFinishWithE :: EditorM a -> EditorM () Source

Wrapper over isearchEndWith that passes through the action and accepts the search as successful (i.e. when the user wants to stay at the result).


qrNext :: Window -> BufferRef -> SearchExp -> EditorM () Source

Find the next match and select it. Point is end, mark is beginning.

qrReplaceAll :: Window -> BufferRef -> SearchExp -> YiString -> EditorM () Source

Replace all the remaining occurrences.

qrReplaceOne :: Window -> BufferRef -> SearchExp -> YiString -> EditorM () Source

We replace the currently selected match and then move to the next match.

qrFinish :: EditorM () Source

Exit from query/replace.