patat 0.5.1.2 → 0.5.2.0
raw patch · 7 files changed
+70/−57 lines, 7 filesdep +skylightingdep −highlighting-kate
Dependencies added: skylighting
Dependencies removed: highlighting-kate
Files
- CHANGELOG.md +5/−0
- README.md +2/−2
- patat.cabal +2/−2
- src/Main.hs +2/−2
- src/Patat/Presentation/Display/CodeBlock.hs +30/−26
- src/Patat/Presentation/Interactive.hs +4/−0
- src/Patat/Theme.hs +25/−25
CHANGELOG.md view
@@ -1,5 +1,10 @@ # Changelog +- 0.5.2.0 (2017-05-16)+ * Add navigation using `PageUp` and `PageDown`.+ * Use `skylighting` instead of deprecated `highlighting-kate` for syntax+ highlighting.+ - 0.5.1.2 (2017-04-26) * Make build reproducible even if timezone changes (patch by Félix Sipma)
README.md view
@@ -115,8 +115,8 @@ Controls -------- -- **Next slide**: `space`, `enter`, `l`, `→`-- **Previous slide**: `backspace`, `h`, `←`+- **Next slide**: `space`, `enter`, `l`, `→`, `PageDown`+- **Previous slide**: `backspace`, `h`, `←`, `PageUp` - **Go forward 10 slides**: `j`, `↓` - **Go backward 10 slides**: `k`, `↑` - **First slide**: `0`
patat.cabal view
@@ -1,5 +1,5 @@ Name: patat-Version: 0.5.1.2+Version: 0.5.2.0 Synopsis: Terminal-based presentations using Pandoc Description: Terminal-based presentations using Pandoc License: GPL-2@@ -35,10 +35,10 @@ containers >= 0.5 && < 0.6, directory >= 1.2 && < 1.4, filepath >= 1.4 && < 1.5,- highlighting-kate >= 0.6 && < 0.7, mtl >= 2.2 && < 2.3, optparse-applicative >= 0.12 && < 0.14, pandoc >= 1.16 && < 1.20,+ skylighting >= 0.1 && < 0.4, terminal-size >= 0.3 && < 0.4, text >= 1.2 && < 1.3, time >= 1.4 && < 1.8,
src/Main.hs view
@@ -75,8 +75,8 @@ [ "Terminal-based presentations using Pandoc" , "" , "Controls:"- , "- Next slide: space, enter, l, right"- , "- Previous slide: backspace, h, left"+ , "- Next slide: space, enter, l, right, pagedown"+ , "- Previous slide: backspace, h, left, pageup" , "- Go forward 10 slides: j, down" , "- Go backward 10 slides: k, up" , "- First slide: 0"
src/Patat/Presentation/Display/CodeBlock.hs view
@@ -8,41 +8,45 @@ ---------------------------------------------------------------------------------import Data.Char (toLower)-import Data.List (find)+import Data.Maybe (mapMaybe) import Data.Monoid (mconcat, (<>))-import qualified Data.Set as S+import qualified Data.Text as T import Patat.Presentation.Display.Table (themed) import qualified Patat.PrettyPrint as PP import Patat.Theme-import qualified Text.Highlighting.Kate as Kate import Prelude------------------------------------------------------------------------------------lower :: String -> String-lower = map toLower+import qualified Skylighting as Skylighting ---------------------------------------------------------------------------------supportedLanguages :: S.Set String-supportedLanguages = S.fromList (map lower Kate.languages)+highlight :: [String] -> String -> [Skylighting.SourceLine]+highlight classes rawCodeBlock = case mapMaybe getSyntax classes of+ [] -> zeroHighlight rawCodeBlock+ (syn : _) ->+ case Skylighting.tokenize config syn (T.pack rawCodeBlock) of+ Left _ -> zeroHighlight rawCodeBlock+ Right sl -> sl+ where+ getSyntax :: String -> Maybe Skylighting.Syntax+ getSyntax c = Skylighting.lookupSyntax (T.pack c) syntaxMap + config :: Skylighting.TokenizerConfig+ config = Skylighting.TokenizerConfig+ { Skylighting.syntaxMap = syntaxMap+ , Skylighting.traceOutput = False+ } ----------------------------------------------------------------------------------highlight :: [String] -> String -> [Kate.SourceLine]-highlight classes rawCodeBlock =- case find (\c -> lower c `S.member` supportedLanguages) classes of- Nothing -> zeroHighlight rawCodeBlock- Just lang -> Kate.highlightAs lang rawCodeBlock+ syntaxMap :: Skylighting.SyntaxMap+ syntaxMap = Skylighting.defaultSyntaxMap -------------------------------------------------------------------------------- -- | This does fake highlighting, everything becomes a normal token. That makes -- things a bit easier, since we only need to deal with one cases in the -- renderer.-zeroHighlight :: String -> [Kate.SourceLine]-zeroHighlight str = [[(Kate.NormalTok, line)] | line <- lines str]+zeroHighlight :: String -> [Skylighting.SourceLine]+zeroHighlight str =+ [[(Skylighting.NormalTok, T.pack line)] | line <- lines str] --------------------------------------------------------------------------------@@ -51,24 +55,24 @@ PP.vcat (map blockified sourceLines) <> PP.hardline where- sourceLines :: [Kate.SourceLine]+ sourceLines :: [Skylighting.SourceLine] sourceLines = [[]] ++ highlight classes rawCodeBlock ++ [[]] - prettySourceLine :: Kate.SourceLine -> PP.Doc+ prettySourceLine :: Skylighting.SourceLine -> PP.Doc prettySourceLine = mconcat . map prettyToken - prettyToken :: Kate.Token -> PP.Doc+ prettyToken :: Skylighting.Token -> PP.Doc prettyToken (tokenType, str) =- themed (syntaxHighlight theme tokenType) (PP.string str)+ themed (syntaxHighlight theme tokenType) (PP.string $ T.unpack str) - sourceLineLength :: Kate.SourceLine -> Int- sourceLineLength line = sum [length str | (_, str) <- line]+ sourceLineLength :: Skylighting.SourceLine -> Int+ sourceLineLength line = sum [T.length str | (_, str) <- line] blockWidth :: Int blockWidth = foldr max 0 (map sourceLineLength sourceLines) - blockified :: Kate.SourceLine -> PP.Doc+ blockified :: Skylighting.SourceLine -> PP.Doc blockified line = let len = sourceLineLength line indent = PP.NotTrimmable " " in
src/Patat/Presentation/Interactive.hs view
@@ -42,10 +42,14 @@ "j" -> return SkipForward "k" -> return SkipBackward "l" -> return Forward+ -- Arrow keys "\ESC[C" -> return Forward "\ESC[D" -> return Backward "\ESC[B" -> return SkipForward "\ESC[A" -> return SkipBackward+ -- PageUp and PageDown+ "\ESC[6" -> return Forward+ "\ESC[5" -> return Backward "0" -> return First "G" -> return Last "r" -> return Reload
src/Patat/Theme.hs view
@@ -24,10 +24,10 @@ import Data.Maybe (mapMaybe, maybeToList) import Data.Monoid (Monoid (..), (<>)) import qualified Data.Text as T+import Prelude+import qualified Skylighting as Skylighting import qualified System.Console.ANSI as Ansi-import qualified Text.Highlighting.Kate as Kate import Text.Read (readMaybe)-import Prelude --------------------------------------------------------------------------------@@ -218,30 +218,30 @@ -------------------------------------------------------------------------------- defaultSyntaxHighlighting :: SyntaxHighlighting defaultSyntaxHighlighting = mkSyntaxHighlighting- [ (Kate.KeywordTok, dull Ansi.Yellow)- , (Kate.ControlFlowTok, dull Ansi.Yellow)+ [ (Skylighting.KeywordTok, dull Ansi.Yellow)+ , (Skylighting.ControlFlowTok, dull Ansi.Yellow) - , (Kate.DataTypeTok, dull Ansi.Green)+ , (Skylighting.DataTypeTok, dull Ansi.Green) - , (Kate.DecValTok, dull Ansi.Red)- , (Kate.BaseNTok, dull Ansi.Red)- , (Kate.FloatTok, dull Ansi.Red)- , (Kate.ConstantTok, dull Ansi.Red)- , (Kate.CharTok, dull Ansi.Red)- , (Kate.SpecialCharTok, dull Ansi.Red)- , (Kate.StringTok, dull Ansi.Red)- , (Kate.VerbatimStringTok, dull Ansi.Red)- , (Kate.SpecialStringTok, dull Ansi.Red)+ , (Skylighting.DecValTok, dull Ansi.Red)+ , (Skylighting.BaseNTok, dull Ansi.Red)+ , (Skylighting.FloatTok, dull Ansi.Red)+ , (Skylighting.ConstantTok, dull Ansi.Red)+ , (Skylighting.CharTok, dull Ansi.Red)+ , (Skylighting.SpecialCharTok, dull Ansi.Red)+ , (Skylighting.StringTok, dull Ansi.Red)+ , (Skylighting.VerbatimStringTok, dull Ansi.Red)+ , (Skylighting.SpecialStringTok, dull Ansi.Red) - , (Kate.CommentTok, dull Ansi.Blue)- , (Kate.DocumentationTok, dull Ansi.Blue)- , (Kate.AnnotationTok, dull Ansi.Blue)- , (Kate.CommentVarTok, dull Ansi.Blue)+ , (Skylighting.CommentTok, dull Ansi.Blue)+ , (Skylighting.DocumentationTok, dull Ansi.Blue)+ , (Skylighting.AnnotationTok, dull Ansi.Blue)+ , (Skylighting.CommentVarTok, dull Ansi.Blue) - , (Kate.ImportTok, dull Ansi.Cyan)- , (Kate.OperatorTok, dull Ansi.Cyan)- , (Kate.FunctionTok, dull Ansi.Cyan)- , (Kate.PreprocessorTok, dull Ansi.Cyan)+ , (Skylighting.ImportTok, dull Ansi.Cyan)+ , (Skylighting.OperatorTok, dull Ansi.Cyan)+ , (Skylighting.FunctionTok, dull Ansi.Cyan)+ , (Skylighting.PreprocessorTok, dull Ansi.Cyan) ] where dull c = Style [Ansi.SetColor Ansi.Foreground Ansi.Dull c]@@ -251,7 +251,7 @@ ---------------------------------------------------------------------------------nameForTokenType :: Kate.TokenType -> String+nameForTokenType :: Skylighting.TokenType -> String nameForTokenType = unCapitalize . dropTok . show where@@ -265,7 +265,7 @@ ---------------------------------------------------------------------------------nameToTokenType :: String -> Maybe Kate.TokenType+nameToTokenType :: String -> Maybe Skylighting.TokenType nameToTokenType = readMaybe . capitalize . (++ "Tok") @@ -276,7 +276,7 @@ ---------------------------------------------------------------------------------syntaxHighlight :: Theme -> Kate.TokenType -> Maybe Style+syntaxHighlight :: Theme -> Skylighting.TokenType -> Maybe Style syntaxHighlight theme tokenType = do sh <- themeSyntaxHighlighting theme M.lookup (nameForTokenType tokenType) (unSyntaxHighlighting sh)