# Markwon-syntax This is a simple module to add **syntax-highlight** functionality to your markdown rendered with Markwon library. It is based on [Prism4j](https://github.com/noties/Prism4j) so lead there to understand how to configure `Prism4j` instance. ![theme-default](../art/markwon-syntax-default.png) ![theme-darkula](../art/markwon-syntax-darkula.png) --- First, we need to obtain an instance of `Prism4jSyntaxHighlight` which implements Markwon's `SyntaxHighlight`: ```java final SyntaxHighlight highlight = Prism4jSyntaxHighlight.create(Prism4j, Prism4jTheme); ``` we also can obtain an instance of `Prism4jSyntaxHighlight` that has a _fallback_ option (if a language is not defined in `Prism4j` instance, fallback language can be used): ```java final SyntaxHighlight highlight = Prism4jSyntaxHighlight.create(Prism4j, Prism4jTheme, String); ``` Generally obtaining a `Prism4j` instance is pretty easy: ```java final Prism4j prism4j = new Prism4j(new GrammarLocatorDef()); ``` Where `GrammarLocatorDef` is a generated grammar locator (if you use `prism4j-bundler` annotation processor) `Prism4jTheme` is a specific type that is defined in this module (`prism4j` doesn't know anything about rendering). It has 2 implementations: * `Prism4jThemeDefault` * `Prism4jThemeDarkula` Both of them can be obtained via factory method `create`: * `Prism4jThemeDefault.create()` * `Prism4jThemeDarkula.create()` But of cause nothing is stopping you from defining your own theme: ```java public interface Prism4jTheme { @ColorInt int background(); @ColorInt int textColor(); void apply( @NonNull String language, @NonNull Prism4j.Syntax syntax, @NonNull SpannableStringBuilder builder, int start, int end ); } ``` > You can extend `Prism4jThemeBase` which has some helper methods