{-# LANGUAGE OverloadedStrings #-}
{-# OPTIONS_HADDOCK show-extensions #-}
module Yi.Mode.Latex (latexMode3, latexMode2, fastMode) where
import Data.Text ()
import Yi.Buffer
import qualified Yi.IncrementalParse as IncrParser (scanner)
import Yi.Lexer.Alex (AlexState, CharScanner, Tok, commonLexer, lexScanner)
import qualified Yi.Lexer.Latex as Latex (HlState, Token, alexScanToken, initState)
import Yi.Mode.Common (anyExtension, fundamentalMode)
import Yi.Syntax (ExtHL (ExtHL), Scanner, mkHighlighter)
import qualified Yi.Syntax.Driver as Driver (mkHighlighter)
import qualified Yi.Syntax.Latex as Latex (TT, Tree, getStrokes, parse, tokenToStroke)
import Yi.Syntax.OnlineTree (Tree, manyToks)
import Yi.Syntax.Tree (tokenBasedStrokes)
abstract :: Mode syntax
abstract :: forall syntax. Mode syntax
abstract = Mode syntax
forall syntax. Mode syntax
fundamentalMode
{
modeApplies = anyExtension ["tex", "sty", "ltx"],
modeToggleCommentSelection = Just (toggleCommentB "%")
}
fastMode :: Mode (Tree Latex.TT)
fastMode :: Mode (Tree (Tok Token))
fastMode = Mode (Tree (Tok Token))
forall syntax. Mode syntax
abstract
{
modeName = "fast latex",
modeHL = ExtHL $ mkHighlighter (IncrParser.scanner manyToks . latexLexer),
modeGetStrokes = tokenBasedStrokes Latex.tokenToStroke
}
latexMode2 :: Mode (Latex.Tree Latex.TT)
latexMode2 :: Mode (Tree (Tok Token))
latexMode2 = Mode (Tree (Tok Token))
forall syntax. Mode syntax
abstract
{
modeName = "latex",
modeHL = ExtHL $
mkHighlighter (IncrParser.scanner Latex.parse . latexLexer),
modeGetStrokes = \Tree (Tok Token)
t Point
point Point
begin Point
end -> Point -> Point -> Point -> Tree (Tok Token) -> [Stroke]
Latex.getStrokes Point
point Point
begin Point
end Tree (Tok Token)
t
}
latexMode3 :: Mode (Latex.Tree Latex.TT)
latexMode3 :: Mode (Tree (Tok Token))
latexMode3 = Mode (Tree (Tok Token))
forall syntax. Mode syntax
abstract
{
modeName = "latex",
modeHL = ExtHL $
Driver.mkHighlighter (IncrParser.scanner Latex.parse . latexLexer),
modeGetStrokes = \Tree (Tok Token)
t Point
point Point
begin Point
end -> Point -> Point -> Point -> Tree (Tok Token) -> [Stroke]
Latex.getStrokes Point
point Point
begin Point
end Tree (Tok Token)
t
}
latexLexer :: CharScanner -> Scanner (AlexState Latex.HlState) (Tok Latex.Token)
latexLexer :: Scanner Point Char -> Scanner (AlexState HlState) (Tok Token)
latexLexer = Lexer AlexState HlState (Tok Token) AlexInput
-> Scanner Point Char -> Scanner (AlexState HlState) (Tok Token)
forall (l :: * -> *) s t i.
Lexer l s t i -> Scanner Point Char -> Scanner (l s) t
lexScanner ((ASI HlState -> Maybe (Tok Token, ASI HlState))
-> HlState -> Lexer AlexState HlState (Tok Token) AlexInput
forall s t.
(ASI s -> Maybe (Tok t, ASI s))
-> s -> Lexer AlexState s (Tok t) AlexInput
commonLexer ASI HlState -> Maybe (Tok Token, ASI HlState)
Latex.alexScanToken HlState
Latex.initState)