Open UnidayStudio opened 3 weeks ago
I needed Markdown code highlight to my Game Engine (Cave Engine), so I wrote this one and decided to share here in case anyone want to use it as well or to merge into master. Enjoy! 😃
const TextEditor::LanguageDefinition& TextEditor::LanguageDefinition::Markdown() { static bool inited = false; static LanguageDefinition langDef; if (!inited) { langDef.mName = "Markdown"; // Headers langDef.mTokenRegexStrings.push_back(std::make_pair("#+.*", TextEditor::PaletteIndex::Keyword)); // Emphasis langDef.mTokenRegexStrings.push_back(std::make_pair("\\*\\*[^\\*]+\\*\\*", TextEditor::PaletteIndex::Keyword)); // bold langDef.mTokenRegexStrings.push_back(std::make_pair("\\*[^\\*]+\\*", TextEditor::PaletteIndex::Keyword)); // italic langDef.mTokenRegexStrings.push_back(std::make_pair("~~[^~]+~~", TextEditor::PaletteIndex::Keyword)); // strikethrough // Links and Images langDef.mTokenRegexStrings.push_back(std::make_pair("\\!\\[.*\\]\\(.*\\)", TextEditor::PaletteIndex::String)); // image langDef.mTokenRegexStrings.push_back(std::make_pair("\\[.*\\]\\(.*\\)", TextEditor::PaletteIndex::String)); // link // Inline code langDef.mTokenRegexStrings.push_back(std::make_pair("`[^`]+`", TextEditor::PaletteIndex::Keyword)); // Code blocks langDef.mTokenRegexStrings.push_back(std::make_pair("```.*```", TextEditor::PaletteIndex::Keyword)); // Blockquotes langDef.mTokenRegexStrings.push_back(std::make_pair("^> .*", TextEditor::PaletteIndex::Comment)); // Lists langDef.mTokenRegexStrings.push_back(std::make_pair("^- .*", TextEditor::PaletteIndex::Keyword)); langDef.mTokenRegexStrings.push_back(std::make_pair("^\\* .*", TextEditor::PaletteIndex::Keyword)); langDef.mTokenRegexStrings.push_back(std::make_pair("^\\d+\\. .*", TextEditor::PaletteIndex::Keyword)); // Horizontal rules langDef.mTokenRegexStrings.push_back(std::make_pair("^(-{3,}|\\*{3,}|_{3,})$", TextEditor::PaletteIndex::Keyword)); // Escaped characters langDef.mTokenRegexStrings.push_back(std::make_pair("\\\\.", TextEditor::PaletteIndex::Default)); langDef.mCommentStart = "<!--"; langDef.mCommentEnd = "-->"; langDef.mSingleLineComment = ""; langDef.mCaseSensitive = true; langDef.mAutoIndentation = false; langDef.mName = "Markdown"; inited = true; } return langDef; }
I needed Markdown code highlight to my Game Engine (Cave Engine), so I wrote this one and decided to share here in case anyone want to use it as well or to merge into master. Enjoy! 😃