Skip to content

Commit

Permalink
[Ruby] Highlight #@, #@@ and #$ style interpolation.
Browse files Browse the repository at this point in the history
  • Loading branch information
zufuliu committed Feb 18, 2023
1 parent 3303ff0 commit d02f136
Show file tree
Hide file tree
Showing 3 changed files with 111 additions and 66 deletions.
21 changes: 9 additions & 12 deletions scintilla/lexers/LexHTML.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -34,11 +34,11 @@ namespace {
enum script_type { eScriptNone = 0, eScriptJS, eScriptVBS, eScriptXML, eScriptSGML, eScriptSGMLblock, eScriptComment };
enum script_mode { eHtml = 0, eNonHtmlScript, eNonHtmlPreProc, eNonHtmlScriptPreProc };

inline void GetTextSegment(Accessor &styler, Sci_PositionU start, Sci_PositionU end, char *s, size_t len) noexcept {
inline void GetTextSegment(LexAccessor &styler, Sci_PositionU start, Sci_PositionU end, char *s, size_t len) noexcept {
styler.GetRangeLowered(start, end, s, len);
}

script_type segIsScriptingIndicator(Accessor &styler, Sci_PositionU start, Sci_PositionU end, script_type prevValue) {
script_type segIsScriptingIndicator(LexAccessor &styler, Sci_PositionU start, Sci_PositionU end, script_type prevValue) {
char s[128];
GetTextSegment(styler, start, end, s, sizeof(s));
//Platform::DebugPrintf("Scripting indicator [%s]\n", s);
Expand Down Expand Up @@ -140,7 +140,7 @@ constexpr bool isCommentASPState(int state) noexcept {
|| state == SCE_HB_COMMENTLINE;
}

bool classifyAttribHTML(script_mode inScriptType, Sci_PositionU start, Sci_PositionU end, const WordList &keywords, const WordList &keywordsEvent, Accessor &styler) {
bool classifyAttribHTML(script_mode inScriptType, Sci_PositionU start, Sci_PositionU end, const WordList &keywords, const WordList &keywordsEvent, LexAccessor &styler) {
char chAttr = SCE_H_ATTRIBUTEUNKNOWN;
bool isLanguageType = false;
if (IsNumberChar(styler[start])) {
Expand Down Expand Up @@ -177,8 +177,7 @@ bool isHTMLCustomElement(const char *tag, size_t length) noexcept {
return true;
}

int classifyTagHTML(Sci_PositionU start, Sci_PositionU end,
const WordList &keywords, Accessor &styler, bool &tagDontFold,
int classifyTagHTML(Sci_PositionU start, Sci_PositionU end, const WordList &keywords, LexAccessor &styler, bool &tagDontFold,
bool caseSensitive, bool isXml, bool allowScripts) {
char withSpace[126 + 2] = " ";
const char *tag = withSpace + 1;
Expand Down Expand Up @@ -246,8 +245,7 @@ int classifyTagHTML(Sci_PositionU start, Sci_PositionU end,
return chAttr;
}

void classifyWordHTJS(Sci_PositionU start, Sci_PositionU end,
const WordList &keywords, Accessor &styler, script_mode inScriptType) {
void classifyWordHTJS(Sci_PositionU start, Sci_PositionU end, const WordList &keywords, LexAccessor &styler, script_mode inScriptType) {
char s[127 + 1];
styler.GetRange(start, end, s, sizeof(s));
char chAttr = SCE_HJ_WORD;
Expand All @@ -257,7 +255,7 @@ void classifyWordHTJS(Sci_PositionU start, Sci_PositionU end,
styler.ColorTo(end, statePrintForState(chAttr, inScriptType));
}

int classifyWordHTVB(Sci_PositionU start, Sci_PositionU end, const WordList &keywords, Accessor &styler, script_mode inScriptType) {
int classifyWordHTVB(Sci_PositionU start, Sci_PositionU end, const WordList &keywords, LexAccessor &styler, script_mode inScriptType) {
char chAttr = SCE_HB_IDENTIFIER;
char s[128];
GetTextSegment(styler, start, end, s, sizeof(s));
Expand All @@ -273,13 +271,13 @@ int classifyWordHTVB(Sci_PositionU start, Sci_PositionU end, const WordList &key
return SCE_HB_DEFAULT;
}

bool isWordHSGML(Sci_PositionU start, Sci_PositionU end, const WordList &keywords, Accessor &styler) noexcept {
bool isWordHSGML(Sci_PositionU start, Sci_PositionU end, const WordList &keywords, LexAccessor &styler) noexcept {
char s[63 + 1];
styler.GetRange(start, end + 1, s, sizeof(s));
return keywords.InList(s);
}

inline bool isWordCdata(Sci_PositionU start, Accessor &styler) noexcept {
inline bool isWordCdata(Sci_PositionU start, LexAccessor &styler) noexcept {
return styler.Match(start, "[CDATA[");
}

Expand Down Expand Up @@ -342,8 +340,7 @@ constexpr bool IsOKBeforeJSRE(int ch) noexcept {
return AnyOf(ch, '(', '[', '{', '=', ',', ':', ';', '!', '%', '^', '&', '*', '|', '?', '~', '>');
}

void ColouriseHyperTextDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, LexerWordList keywordLists,
Accessor &styler, bool isXml) {
void ColouriseHyperTextDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, LexerWordList keywordLists, Accessor &styler, bool isXml) {
const WordList &keywordsTag = keywordLists[0];
const WordList &keywordsJS = keywordLists[1];
const WordList &keywordsVBS = keywordLists[2];
Expand Down
5 changes: 2 additions & 3 deletions scintilla/lexers/LexPascal.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -255,8 +255,7 @@ void SetFoldInPreprocessorLevelFlag(int &lineFoldStateCurrent, unsigned int nest
lineFoldStateCurrent |= nestLevel & stateFoldInPreprocessorLevelMask;
}

void ClassifyPascalPreprocessorFoldPoint(int &levelCurrent, int &lineFoldStateCurrent,
Sci_PositionU startPos, Accessor &styler) noexcept {
void ClassifyPascalPreprocessorFoldPoint(int &levelCurrent, int &lineFoldStateCurrent, Sci_PositionU startPos, LexAccessor &styler) noexcept {
const CharacterSet setWord(CharacterSet::setAlpha);

char s[16]; // Size of the longest possible keyword + one additional character + null
Expand Down Expand Up @@ -284,7 +283,7 @@ void ClassifyPascalPreprocessorFoldPoint(int &levelCurrent, int &lineFoldStateCu

void ClassifyPascalWordFoldPoint(const CharacterSet &setWord, int &levelCurrent, int &lineFoldStateCurrent,
Sci_Position startPos, Sci_PositionU endPos,
Sci_PositionU lastStart, Sci_PositionU currentPos, Accessor &styler) noexcept {
Sci_PositionU lastStart, Sci_PositionU currentPos, LexAccessor &styler) noexcept {
char s[128];

styler.GetRangeLowered(lastStart, currentPos + 1, s, sizeof(s));
Expand Down
Loading

0 comments on commit d02f136

Please sign in to comment.