module Yi.Mode.Latex (latexMode3, latexMode2, fastMode) where
import Prelude ()
import Yi.Buffer
import Yi.Prelude
import Yi.Syntax
import Yi.Syntax.Tree
import qualified Yi.IncrementalParse as IncrParser
import qualified Yi.Lexer.Alex as Alex
import qualified Yi.Syntax.Latex as Latex
import Yi.Syntax.OnlineTree as OnlineTree
import qualified Yi.Lexer.Latex as Latex
import Yi.Modes (anyExtension, fundamentalMode)
import qualified Yi.Syntax.Driver as Driver
abstract :: forall syntax. Mode syntax
abstract = fundamentalMode
{
modeApplies = anyExtension ["tex", "sty", "ltx"],
modeToggleCommentSelection = toggleCommentSelectionB "% " "%"
}
fastMode :: Mode (OnlineTree.Tree Latex.TT)
fastMode = abstract
{
modeName = "fast latex",
modeHL = ExtHL $
mkHighlighter (IncrParser.scanner OnlineTree.manyToks . latexLexer),
modeGetStrokes = tokenBasedStrokes Latex.tokenToStroke,
modeGetAnnotations = tokenBasedAnnots Latex.tokenToAnnot
}
latexMode2 :: Mode (Latex.Tree Latex.TT)
latexMode2 = abstract
{
modeName = "latex",
modeHL = ExtHL $
mkHighlighter (IncrParser.scanner Latex.parse . latexLexer),
modeGetStrokes = \t point begin end -> Latex.getStrokes point begin end t,
modeGetAnnotations = tokenBasedAnnots Latex.tokenToAnnot
}
latexMode3 :: Mode (Latex.Tree Latex.TT)
latexMode3 = abstract
{
modeName = "latex",
modeHL = ExtHL $
Driver.mkHighlighter (IncrParser.scanner Latex.parse . latexLexer),
modeGetStrokes = \t point begin end -> Latex.getStrokes point begin end t,
modeGetAnnotations = tokenBasedAnnots Latex.tokenToAnnot
}
latexLexer :: Scanner Point Char -> Scanner (Alex.AlexState Latex.HlState) (Alex.Tok Latex.Token)
latexLexer = Alex.lexScanner Latex.alexScanToken Latex.initState