{-# 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 :: 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 (Tok Token))
fastMode = Mode (Tree (Tok Token))
forall syntax. Mode syntax
abstract
{
modeName :: Text
modeName = Text
"fast latex",
modeHL :: ExtHL (Tree (Tok Token))
modeHL = Highlighter
(Cache
(State (AlexState HlState) (Tok Token) (Tree (Tok Token)))
(Tree (Tok Token)))
(Tree (Tok Token))
-> ExtHL (Tree (Tok Token))
forall syntax cache. Highlighter cache syntax -> ExtHL syntax
ExtHL (Highlighter
(Cache
(State (AlexState HlState) (Tok Token) (Tree (Tok Token)))
(Tree (Tok Token)))
(Tree (Tok Token))
-> ExtHL (Tree (Tok Token)))
-> Highlighter
(Cache
(State (AlexState HlState) (Tok Token) (Tree (Tok Token)))
(Tree (Tok Token)))
(Tree (Tok Token))
-> ExtHL (Tree (Tok Token))
forall a b. (a -> b) -> a -> b
$ (Scanner Point Char
-> Scanner
(State (AlexState HlState) (Tok Token) (Tree (Tok Token)))
(Tree (Tok Token)))
-> Highlighter
(Cache
(State (AlexState HlState) (Tok Token) (Tree (Tok Token)))
(Tree (Tok Token)))
(Tree (Tok Token))
forall state result.
Show state =>
(Scanner Point Char -> Scanner state result)
-> Highlighter (Cache state result) result
mkHighlighter (Parser (Tok Token) (Tree (Tok Token))
-> Scanner (AlexState HlState) (Tok Token)
-> Scanner
(State (AlexState HlState) (Tok Token) (Tree (Tok Token)))
(Tree (Tok Token))
forall st token result.
Parser token result
-> Scanner st token -> Scanner (State st token result) result
IncrParser.scanner Parser (Tok Token) (Tree (Tok Token))
forall t. P (Tok t) (Tree (Tok t))
manyToks (Scanner (AlexState HlState) (Tok Token)
-> Scanner
(State (AlexState HlState) (Tok Token) (Tree (Tok Token)))
(Tree (Tok Token)))
-> (Scanner Point Char -> Scanner (AlexState HlState) (Tok Token))
-> Scanner Point Char
-> Scanner
(State (AlexState HlState) (Tok Token) (Tree (Tok Token)))
(Tree (Tok Token))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Scanner Point Char -> Scanner (AlexState HlState) (Tok Token)
latexLexer),
modeGetStrokes :: Tree (Tok Token) -> Point -> Point -> Point -> [Stroke]
modeGetStrokes = (Tok Token -> Stroke)
-> Tree (Tok Token) -> Point -> Point -> Point -> [Stroke]
forall (t3 :: * -> *) a b t t2 t1.
Foldable t3 =>
(a -> b) -> t3 a -> t -> t2 -> t1 -> [b]
tokenBasedStrokes Tok Token -> Stroke
Latex.tokenToStroke
}
latexMode2 :: Mode (Latex.Tree Latex.TT)
latexMode2 :: Mode (Tree (Tok Token))
latexMode2 = Mode (Tree (Tok Token))
forall syntax. Mode syntax
abstract
{
modeName :: Text
modeName = Text
"latex",
modeHL :: ExtHL (Tree (Tok Token))
modeHL = Highlighter
(Cache
(State (AlexState HlState) (Tok Token) (Tree (Tok Token)))
(Tree (Tok Token)))
(Tree (Tok Token))
-> ExtHL (Tree (Tok Token))
forall syntax cache. Highlighter cache syntax -> ExtHL syntax
ExtHL (Highlighter
(Cache
(State (AlexState HlState) (Tok Token) (Tree (Tok Token)))
(Tree (Tok Token)))
(Tree (Tok Token))
-> ExtHL (Tree (Tok Token)))
-> Highlighter
(Cache
(State (AlexState HlState) (Tok Token) (Tree (Tok Token)))
(Tree (Tok Token)))
(Tree (Tok Token))
-> ExtHL (Tree (Tok Token))
forall a b. (a -> b) -> a -> b
$
(Scanner Point Char
-> Scanner
(State (AlexState HlState) (Tok Token) (Tree (Tok Token)))
(Tree (Tok Token)))
-> Highlighter
(Cache
(State (AlexState HlState) (Tok Token) (Tree (Tok Token)))
(Tree (Tok Token)))
(Tree (Tok Token))
forall state result.
Show state =>
(Scanner Point Char -> Scanner state result)
-> Highlighter (Cache state result) result
mkHighlighter (Parser (Tok Token) (Tree (Tok Token))
-> Scanner (AlexState HlState) (Tok Token)
-> Scanner
(State (AlexState HlState) (Tok Token) (Tree (Tok Token)))
(Tree (Tok Token))
forall st token result.
Parser token result
-> Scanner st token -> Scanner (State st token result) result
IncrParser.scanner Parser (Tok Token) (Tree (Tok Token))
Latex.parse (Scanner (AlexState HlState) (Tok Token)
-> Scanner
(State (AlexState HlState) (Tok Token) (Tree (Tok Token)))
(Tree (Tok Token)))
-> (Scanner Point Char -> Scanner (AlexState HlState) (Tok Token))
-> Scanner Point Char
-> Scanner
(State (AlexState HlState) (Tok Token) (Tree (Tok Token)))
(Tree (Tok Token))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Scanner Point Char -> Scanner (AlexState HlState) (Tok Token)
latexLexer),
modeGetStrokes :: Tree (Tok Token) -> Point -> Point -> Point -> [Stroke]
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 :: Text
modeName = Text
"latex",
modeHL :: ExtHL (Tree (Tok Token))
modeHL = Highlighter
(Cache
(State (AlexState HlState) (Tok Token) (Tree (Tok Token)))
Tree
Token)
(Tree (Tok Token))
-> ExtHL (Tree (Tok Token))
forall syntax cache. Highlighter cache syntax -> ExtHL syntax
ExtHL (Highlighter
(Cache
(State (AlexState HlState) (Tok Token) (Tree (Tok Token)))
Tree
Token)
(Tree (Tok Token))
-> ExtHL (Tree (Tok Token)))
-> Highlighter
(Cache
(State (AlexState HlState) (Tok Token) (Tree (Tok Token)))
Tree
Token)
(Tree (Tok Token))
-> ExtHL (Tree (Tok Token))
forall a b. (a -> b) -> a -> b
$
(Scanner Point Char
-> Scanner
(State (AlexState HlState) (Tok Token) (Tree (Tok Token)))
(Tree (Tok Token)))
-> Highlighter
(Cache
(State (AlexState HlState) (Tok Token) (Tree (Tok Token)))
Tree
Token)
(Tree (Tok Token))
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 (Tok Token) (Tree (Tok Token))
-> Scanner (AlexState HlState) (Tok Token)
-> Scanner
(State (AlexState HlState) (Tok Token) (Tree (Tok Token)))
(Tree (Tok Token))
forall st token result.
Parser token result
-> Scanner st token -> Scanner (State st token result) result
IncrParser.scanner Parser (Tok Token) (Tree (Tok Token))
Latex.parse (Scanner (AlexState HlState) (Tok Token)
-> Scanner
(State (AlexState HlState) (Tok Token) (Tree (Tok Token)))
(Tree (Tok Token)))
-> (Scanner Point Char -> Scanner (AlexState HlState) (Tok Token))
-> Scanner Point Char
-> Scanner
(State (AlexState HlState) (Tok Token) (Tree (Tok Token)))
(Tree (Tok Token))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Scanner Point Char -> Scanner (AlexState HlState) (Tok Token)
latexLexer),
modeGetStrokes :: Tree (Tok Token) -> Point -> Point -> Point -> [Stroke]
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)