{-# 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 :: Mode syntax
abstract = Mode syntax
forall syntax. Mode syntax
fundamentalMode
{
modeApplies :: FilePath -> YiString -> Bool
modeApplies = [FilePath] -> FilePath -> YiString -> Bool
forall a. [FilePath] -> FilePath -> a -> Bool
anyExtension [FilePath
"tex", FilePath
"sty", FilePath
"ltx"],
modeToggleCommentSelection :: Maybe (BufferM ())
modeToggleCommentSelection = BufferM () -> Maybe (BufferM ())
forall a. a -> Maybe a
Just (YiString -> BufferM ()
toggleCommentB YiString
"%")
}
fastMode :: Mode (Tree Latex.TT)
fastMode :: Mode (Tree TT)
fastMode = Mode (Tree TT)
forall syntax. Mode syntax
abstract
{
modeName :: Text
modeName = Text
"fast latex",
modeHL :: ExtHL (Tree TT)
modeHL = Highlighter
(Cache (State (AlexState HlState) TT (Tree TT)) (Tree TT))
(Tree TT)
-> ExtHL (Tree TT)
forall syntax cache. Highlighter cache syntax -> ExtHL syntax
ExtHL (Highlighter
(Cache (State (AlexState HlState) TT (Tree TT)) (Tree TT))
(Tree TT)
-> ExtHL (Tree TT))
-> Highlighter
(Cache (State (AlexState HlState) TT (Tree TT)) (Tree TT))
(Tree TT)
-> ExtHL (Tree TT)
forall a b. (a -> b) -> a -> b
$ (Scanner Point Char
-> Scanner (State (AlexState HlState) TT (Tree TT)) (Tree TT))
-> Highlighter
(Cache (State (AlexState HlState) TT (Tree TT)) (Tree TT))
(Tree TT)
forall state result.
Show state =>
(Scanner Point Char -> Scanner state result)
-> Highlighter (Cache state result) result
mkHighlighter (Parser TT (Tree TT)
-> Scanner (AlexState HlState) TT
-> Scanner (State (AlexState HlState) TT (Tree TT)) (Tree TT)
forall st token result.
Parser token result
-> Scanner st token -> Scanner (State st token result) result
IncrParser.scanner Parser TT (Tree TT)
forall t. P (Tok t) (Tree (Tok t))
manyToks (Scanner (AlexState HlState) TT
-> Scanner (State (AlexState HlState) TT (Tree TT)) (Tree TT))
-> (Scanner Point Char -> Scanner (AlexState HlState) TT)
-> Scanner Point Char
-> Scanner (State (AlexState HlState) TT (Tree TT)) (Tree TT)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Scanner Point Char -> Scanner (AlexState HlState) TT
latexLexer),
modeGetStrokes :: Tree TT -> Point -> Point -> Point -> [Stroke]
modeGetStrokes = (TT -> Stroke) -> Tree TT -> Point -> Point -> Point -> [Stroke]
forall (t3 :: * -> *) a b t t2 t1.
Foldable t3 =>
(a -> b) -> t3 a -> t -> t2 -> t1 -> [b]
tokenBasedStrokes TT -> Stroke
Latex.tokenToStroke
}
latexMode2 :: Mode (Latex.Tree Latex.TT)
latexMode2 :: Mode (Tree TT)
latexMode2 = Mode (Tree TT)
forall syntax. Mode syntax
abstract
{
modeName :: Text
modeName = Text
"latex",
modeHL :: ExtHL (Tree TT)
modeHL = Highlighter
(Cache (State (AlexState HlState) TT (Tree TT)) (Tree TT))
(Tree TT)
-> ExtHL (Tree TT)
forall syntax cache. Highlighter cache syntax -> ExtHL syntax
ExtHL (Highlighter
(Cache (State (AlexState HlState) TT (Tree TT)) (Tree TT))
(Tree TT)
-> ExtHL (Tree TT))
-> Highlighter
(Cache (State (AlexState HlState) TT (Tree TT)) (Tree TT))
(Tree TT)
-> ExtHL (Tree TT)
forall a b. (a -> b) -> a -> b
$
(Scanner Point Char
-> Scanner (State (AlexState HlState) TT (Tree TT)) (Tree TT))
-> Highlighter
(Cache (State (AlexState HlState) TT (Tree TT)) (Tree TT))
(Tree TT)
forall state result.
Show state =>
(Scanner Point Char -> Scanner state result)
-> Highlighter (Cache state result) result
mkHighlighter (Parser TT (Tree TT)
-> Scanner (AlexState HlState) TT
-> Scanner (State (AlexState HlState) TT (Tree TT)) (Tree TT)
forall st token result.
Parser token result
-> Scanner st token -> Scanner (State st token result) result
IncrParser.scanner Parser TT (Tree TT)
Latex.parse (Scanner (AlexState HlState) TT
-> Scanner (State (AlexState HlState) TT (Tree TT)) (Tree TT))
-> (Scanner Point Char -> Scanner (AlexState HlState) TT)
-> Scanner Point Char
-> Scanner (State (AlexState HlState) TT (Tree TT)) (Tree TT)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Scanner Point Char -> Scanner (AlexState HlState) TT
latexLexer),
modeGetStrokes :: Tree TT -> Point -> Point -> Point -> [Stroke]
modeGetStrokes = \Tree TT
t Point
point Point
begin Point
end -> Point -> Point -> Point -> Tree TT -> [Stroke]
Latex.getStrokes Point
point Point
begin Point
end Tree TT
t
}
latexMode3 :: Mode (Latex.Tree Latex.TT)
latexMode3 :: Mode (Tree TT)
latexMode3 = Mode (Tree TT)
forall syntax. Mode syntax
abstract
{
modeName :: Text
modeName = Text
"latex",
modeHL :: ExtHL (Tree TT)
modeHL = Highlighter
(Cache (State (AlexState HlState) TT (Tree TT)) Tree Token)
(Tree TT)
-> ExtHL (Tree TT)
forall syntax cache. Highlighter cache syntax -> ExtHL syntax
ExtHL (Highlighter
(Cache (State (AlexState HlState) TT (Tree TT)) Tree Token)
(Tree TT)
-> ExtHL (Tree TT))
-> Highlighter
(Cache (State (AlexState HlState) TT (Tree TT)) Tree Token)
(Tree TT)
-> ExtHL (Tree TT)
forall a b. (a -> b) -> a -> b
$
(Scanner Point Char
-> Scanner (State (AlexState HlState) TT (Tree TT)) (Tree TT))
-> Highlighter
(Cache (State (AlexState HlState) TT (Tree TT)) Tree Token)
(Tree TT)
forall state (tree :: * -> *) tt.
(IsTree tree, Show state) =>
(Scanner Point Char -> Scanner state (tree (Tok tt)))
-> Highlighter (Cache state tree tt) (tree (Tok tt))
Driver.mkHighlighter (Parser TT (Tree TT)
-> Scanner (AlexState HlState) TT
-> Scanner (State (AlexState HlState) TT (Tree TT)) (Tree TT)
forall st token result.
Parser token result
-> Scanner st token -> Scanner (State st token result) result
IncrParser.scanner Parser TT (Tree TT)
Latex.parse (Scanner (AlexState HlState) TT
-> Scanner (State (AlexState HlState) TT (Tree TT)) (Tree TT))
-> (Scanner Point Char -> Scanner (AlexState HlState) TT)
-> Scanner Point Char
-> Scanner (State (AlexState HlState) TT (Tree TT)) (Tree TT)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Scanner Point Char -> Scanner (AlexState HlState) TT
latexLexer),
modeGetStrokes :: Tree TT -> Point -> Point -> Point -> [Stroke]
modeGetStrokes = \Tree TT
t Point
point Point
begin Point
end -> Point -> Point -> Point -> Tree TT -> [Stroke]
Latex.getStrokes Point
point Point
begin Point
end Tree TT
t
}
latexLexer :: CharScanner -> Scanner (AlexState Latex.HlState) (Tok Latex.Token)
latexLexer :: Scanner Point Char -> Scanner (AlexState HlState) TT
latexLexer = Lexer AlexState HlState TT AlexInput
-> Scanner Point Char -> Scanner (AlexState HlState) TT
forall (l :: * -> *) s t i.
Lexer l s t i -> Scanner Point Char -> Scanner (l s) t
lexScanner ((ASI HlState -> Maybe (TT, ASI HlState))
-> HlState -> Lexer AlexState HlState TT AlexInput
forall s t.
(ASI s -> Maybe (Tok t, ASI s))
-> s -> Lexer AlexState s (Tok t) AlexInput
commonLexer ASI HlState -> Maybe (TT, ASI HlState)
Latex.alexScanToken HlState
Latex.initState)