mirror of
https://codeberg.org/gitnex/GitNex.git
synced 2024-12-16 15:48:13 +08:00
Fall back to plain text if syntax highlighting fails. (#854)
[HotFix] Fall back to plain text if syntax highlighting fails. upstream issue: https://github.com/noties/Prism4j/issues/8 Reviewed-on: https://codeberg.org/gitnex/GitNex/pulls/854 Reviewed-by: 6543 <6543@noreply.codeberg.org> Co-Authored-By: opyale <opyale@noreply.codeberg.org> Co-Committed-By: opyale <opyale@noreply.codeberg.org>
This commit is contained in:
parent
a848cabcda
commit
3e5fca4f52
@ -93,22 +93,30 @@ public class SyntaxHighlightedArea extends LinearLayout {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void setContent(@NonNull String source, @NonNull String extension) {
|
public void setContent(@NonNull String source, @NonNull String extension) {
|
||||||
if(source.length() > 0) {
|
|
||||||
|
|
||||||
|
if(source.length() > 0) {
|
||||||
linesView.setLineCount(AppUtil.getLineCount(source));
|
linesView.setLineCount(AppUtil.getLineCount(source));
|
||||||
|
|
||||||
MainGrammarLocator mainGrammarLocator = MainGrammarLocator.getInstance();
|
try {
|
||||||
Prism4jSyntaxHighlight prism4jSyntaxHighlight = Prism4jSyntaxHighlight.create(new Prism4j(mainGrammarLocator), prism4jTheme, MainGrammarLocator.DEFAULT_FALLBACK_LANGUAGE);
|
|
||||||
|
|
||||||
CharSequence highlightedSource = prism4jSyntaxHighlight.highlight(mainGrammarLocator.fromExtension(extension), source);
|
MainGrammarLocator mainGrammarLocator = MainGrammarLocator.getInstance();
|
||||||
|
Prism4j prism4j = new Prism4j(mainGrammarLocator);
|
||||||
|
|
||||||
if(highlightedSource.charAt(highlightedSource.length() - 1) == '\n') {
|
CharSequence highlightedSource = Prism4jSyntaxHighlight.create(prism4j, prism4jTheme, MainGrammarLocator.DEFAULT_FALLBACK_LANGUAGE)
|
||||||
// Removes a line break which is probably added by Prism4j but not actually present in the source.
|
.highlight(mainGrammarLocator.fromExtension(extension), source);
|
||||||
// This line should be altered in case this gets fixed.
|
|
||||||
sourceView.setText(highlightedSource.subSequence(0, highlightedSource.length() - 1));
|
if(highlightedSource.charAt(highlightedSource.length() - 1) == '\n') {
|
||||||
}
|
// Removes a line break which is probably added by Prism4j but not actually present in the source.
|
||||||
else {
|
// This line should be altered in case this gets fixed.
|
||||||
sourceView.setText(highlightedSource);
|
sourceView.setText(highlightedSource.subSequence(0, highlightedSource.length() - 1));
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
sourceView.setText(highlightedSource);
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch(Throwable ignored) {
|
||||||
|
// Fall back to plaintext if something fails
|
||||||
|
sourceView.setText(source);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user