Syntax highlight

WARNING

This is documentation for legacy versions. For the most current version click here.

markwon-syntax-highlight

This is a simple module to add syntax highlight functionality to your markdown rendered with Markwon library. It is based on Prism4j so lead there to understand how to configure Prism4j instance.

theme-default theme-darkula

First, we need to obtain an instance of Prism4jSyntaxHighlight which implements Markwon's SyntaxHighlight:

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):

final SyntaxHighlight highlight = 
    Prism4jSyntaxHighlight.create(Prism4j, Prism4jTheme, String);

Generally obtaining a Prism4j instance is pretty easy:

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:

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
    );
}

TIP

You can extend Prism4jThemeBase which has some helper methods

Last Updated: 6/17/2019, 2:08:33 PM