Syntax highlight
WARNING
This is documentation for legacy versions. For the most current version click here.
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](/Markwon/art/markwon-syntax-default.png)
![theme-darkula](/Markwon/art/markwon-syntax-darkula.png)
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