From 08db4d86352f05d8aafcefde3f5e196951c35616 Mon Sep 17 00:00:00 2001 From: Jad Altahan Date: Wed, 30 Jan 2019 11:35:01 +1100 Subject: Backport: Feature [feature-requests:#1261]. Enhance the styling of backticks in Nim Backport of changeset 7244:a5c65813871a. --- lexers/LexNim.cxx | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) (limited to 'lexers') diff --git a/lexers/LexNim.cxx b/lexers/LexNim.cxx index c85efd293..8506593f6 100644 --- a/lexers/LexNim.cxx +++ b/lexers/LexNim.cxx @@ -454,6 +454,18 @@ void SCI_METHOD LexerNim::Lex(Sci_PositionU startPos, Sci_Position length, sc.ForwardSetState(SCE_NIM_DEFAULT); } break; + case SCE_NIM_FUNCNAME: + if (sc.ch == '`') { + funcNameExists = false; + sc.ForwardSetState(SCE_NIM_DEFAULT); + } else if (sc.atLineEnd) { + // Prevent leaking the style to the next line if not closed + funcNameExists = false; + + sc.ChangeState(SCE_NIM_STRINGEOL); + sc.ForwardSetState(SCE_NIM_DEFAULT); + } + break; case SCE_NIM_COMMENT: if (sc.Match(']', '#')) { if (commentNestLevel > 0) { @@ -527,7 +539,10 @@ void SCI_METHOD LexerNim::Lex(Sci_PositionU startPos, Sci_Position length, } break; case SCE_NIM_BACKTICKS: - if (sc.ch == '`' || sc.atLineEnd) { + if (sc.ch == '`' ) { + sc.ForwardSetState(SCE_NIM_DEFAULT); + } else if (sc.atLineEnd) { + sc.ChangeState(SCE_NIM_STRINGEOL); sc.ForwardSetState(SCE_NIM_DEFAULT); } break; @@ -631,10 +646,10 @@ void SCI_METHOD LexerNim::Lex(Sci_PositionU startPos, Sci_Position length, } // Operator definition else if (sc.ch == '`') { - sc.SetState(SCE_NIM_BACKTICKS); - if (funcNameExists) { - funcNameExists = false; + sc.SetState(SCE_NIM_FUNCNAME); + } else { + sc.SetState(SCE_NIM_BACKTICKS); } } // Keyword -- cgit v1.2.3