aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authornyamatongwe <unknown>2001-01-18 11:04:33 +0000
committernyamatongwe <unknown>2001-01-18 11:04:33 +0000
commitc9e16e4c1635bf87b774babcec00c6e66ecb0ec5 (patch)
treed9f8a350d17f569656a6efb8805aa92dd27e399a
parent55ebbc8553e3abe46dcfad610630905fbbd9df90 (diff)
downloadscintilla-mirror-c9e16e4c1635bf87b774babcec00c6e66ecb0ec5.tar.gz
Patch from Steffen to simplify handling of quoted strings by reusing the
code developed for the complex strings.
-rw-r--r--src/LexPerl.cxx53
1 files changed, 17 insertions, 36 deletions
diff --git a/src/LexPerl.cxx b/src/LexPerl.cxx
index 82e2e2345..443aad8f5 100644
--- a/src/LexPerl.cxx
+++ b/src/LexPerl.cxx
@@ -258,6 +258,8 @@ static void ColourisePerlDoc(unsigned int startPos, int length, int initStyle,
} else if (ch == '\"') {
styler.ColourTo(i - 1, state);
state = SCE_PL_STRING;
+ Quote.New(1);
+ Quote.Open(ch);
} else if (ch == '\'') {
if (chPrev == '&') {
// Archaic call
@@ -265,10 +267,14 @@ static void ColourisePerlDoc(unsigned int startPos, int length, int initStyle,
} else {
styler.ColourTo(i - 1, state);
state = SCE_PL_CHARACTER;
+ Quote.New(1);
+ Quote.Open(ch);
}
} else if (ch == '`') {
styler.ColourTo(i - 1, state);
state = SCE_PL_BACKTICKS;
+ Quote.New(1);
+ Quote.Open(ch);
} else if (ch == '$') {
preferRE = false;
styler.ColourTo(i - 1, state);
@@ -360,8 +366,12 @@ static void ColourisePerlDoc(unsigned int startPos, int length, int initStyle,
state = SCE_PL_COMMENTLINE;
} else if (ch == '\"') {
state = SCE_PL_STRING;
+ Quote.New(1);
+ Quote.Open(ch);
} else if (ch == '\'') {
state = SCE_PL_CHARACTER;
+ Quote.New(1);
+ Quote.Open(ch);
} else if (ch == '<' && chNext == '<') {
state = SCE_PL_HERE_DELIM;
HereDoc.State = 0;
@@ -467,42 +477,6 @@ static void ColourisePerlDoc(unsigned int startPos, int length, int initStyle,
ch = chNext;
chNext = styler.SafeGetCharAt(i + 1);
}
- } else if (state == SCE_PL_STRING) {
- if (ch == '\\') {
- if (chNext == '\"' || chNext == '\'' || chNext == '\\') {
- i++;
- ch = chNext;
- chNext = styler.SafeGetCharAt(i + 1);
- }
- } else if (ch == '\"') {
- styler.ColourTo(i, state);
- state = SCE_PL_DEFAULT;
- i++;
- ch = chNext;
- chNext = styler.SafeGetCharAt(i + 1);
- }
- } else if (state == SCE_PL_CHARACTER) {
- if (ch == '\\') {
- if (chNext == '\"' || chNext == '\'' || chNext == '\\') {
- i++;
- ch = chNext;
- chNext = styler.SafeGetCharAt(i + 1);
- }
- } else if (ch == '\'') {
- styler.ColourTo(i, state);
- state = SCE_PL_DEFAULT;
- i++;
- ch = chNext;
- chNext = styler.SafeGetCharAt(i + 1);
- }
- } else if (state == SCE_PL_BACKTICKS) {
- if (ch == '`') {
- styler.ColourTo(i, state);
- state = SCE_PL_DEFAULT;
- i++;
- ch = chNext;
- chNext = styler.SafeGetCharAt(i + 1);
- }
} else if (state == SCE_PL_POD) {
if (ch == '=' && isEOLChar(chPrev)) {
if (isMatch(styler, lengthDoc, i, "=cut")) {
@@ -631,6 +605,9 @@ static void ColourisePerlDoc(unsigned int startPos, int length, int initStyle,
|| state == SCE_PL_STRING_QQ
|| state == SCE_PL_STRING_QX
|| state == SCE_PL_STRING_QW
+ || state == SCE_PL_STRING
+ || state == SCE_PL_CHARACTER
+ || state == SCE_PL_BACKTICKS
) {
if (!Quote.Down && !isspace(ch)) {
Quote.Open(ch);
@@ -661,8 +638,12 @@ static void ColourisePerlDoc(unsigned int startPos, int length, int initStyle,
state = SCE_PL_COMMENTLINE;
} else if (ch == '\"') {
state = SCE_PL_STRING;
+ Quote.New(1);
+ Quote.Open(ch);
} else if (ch == '\'') {
state = SCE_PL_CHARACTER;
+ Quote.New(1);
+ Quote.Open(ch);
} else if (iswordstart(ch)) {
state = SCE_PL_WORD;
preferRE = false;