diff options
| author | Greg Ercolano <erco@seriss.com> | 2020-09-20 16:05:16 -0700 |
|---|---|---|
| committer | Greg Ercolano <erco@seriss.com> | 2020-11-01 12:16:23 -0800 |
| commit | d66e146a89cd92307cb404bb203a9ce46f890375 (patch) | |
| tree | e1d71466fcb75f772133e59e990db94f3e05fe45 /fluid | |
| parent | 4d503899a3dec9df8380b3981f1a7259e9d6cb8c (diff) | |
Handle single quotes
Diffstat (limited to 'fluid')
| -rw-r--r-- | fluid/CodeEditor.cxx | 10 | ||||
| -rw-r--r-- | fluid/StyleParse.cxx | 9 | ||||
| -rw-r--r-- | fluid/StyleParse.h | 3 |
3 files changed, 14 insertions, 8 deletions
diff --git a/fluid/CodeEditor.cxx b/fluid/CodeEditor.cxx index c0e91ddd4..3d7d47515 100644 --- a/fluid/CodeEditor.cxx +++ b/fluid/CodeEditor.cxx @@ -33,7 +33,8 @@ Fl_Text_Display::Style_Table_Entry CodeEditor:: { FL_BLUE, FL_COURIER, 11 }, // D - Strings { FL_DARK_RED, FL_COURIER, 11 }, // E - Directives { FL_DARK_RED, FL_COURIER_BOLD, 11 }, // F - Types - { FL_BLUE, FL_COURIER_BOLD, 11 } // G - Keywords + { FL_BLUE, FL_COURIER_BOLD, 11 }, // G - Keywords + { 220, /* med cyan */ FL_COURIER, 11 } // H - Single quote chars }; // attempt to make the fluid code editor widget honour textsize setting @@ -61,6 +62,7 @@ void CodeEditor::style_parse(const char *in_tbuff, // text buffer to par // 'E' - Directives #define, #include.. // 'F' - Types void, char.. // 'G' - Keywords if, while.. + // 'H' - Chars 'x' StyleParse sp; sp.tbuff = in_tbuff; @@ -83,8 +85,10 @@ void CodeEditor::style_parse(const char *in_tbuff, // text buffer to par if ( !sp.parse_escape() ) break; } else if ( strncmp(sp.tbuff, "//", 2)==0 ) { // Line comment? if ( !sp.parse_line_comment() ) break; - } else if ( c == '"' ) { // Start of quoted string? - if ( !sp.parse_quoted_string() ) break; + } else if ( c == '"' ) { // Start of double quoted string? + if ( !sp.parse_quoted_string('"', 'D') ) break; + } else if ( c == '\'' ) { // Start of single quoted string? + if ( !sp.parse_quoted_string('\'', 'H') ) break; } else if ( c == '#' && sp.lwhite ) { // Start of '#' directive? if ( !sp.parse_directive() ) break; } else if ( !sp.last && (islower(c) || c == '_') ) { // Possible C/C++ keyword? diff --git a/fluid/StyleParse.cxx b/fluid/StyleParse.cxx index 043f2c837..abbb33fcf 100644 --- a/fluid/StyleParse.cxx +++ b/fluid/StyleParse.cxx @@ -258,18 +258,19 @@ int StyleParse::parse_keyword() { return parse_over_key(key, style); } -// Style parse a quoted string. +// Style parse a quoted string, either "" or ''. // Returns 0 if hit end of buffer, 1 otherwise. // -int StyleParse::parse_quoted_string() { - style = 'D'; // start string style +int StyleParse::parse_quoted_string(char quote_char, // e.g. '"' or '\'' + char in_style) { // style for quoted text + style = in_style; // start string style if ( !parse_over_char() ) return 0; // parse over opening quote // Parse until closing quote reached char c; while ( len > 0 ) { c = tbuff[0]; - if ( c == '"' ) { // Closing quote? Parse and done + if ( c == quote_char ) { // Closing quote? Parse and done if ( !parse_over_char() ) return 0; // close quote break; } else if ( c == '\\' ) { // Escape sequence? Parse over, continue diff --git a/fluid/StyleParse.h b/fluid/StyleParse.h index 97755d637..2fcc4f4db 100644 --- a/fluid/StyleParse.h +++ b/fluid/StyleParse.h @@ -50,7 +50,8 @@ public: int parse_over_key(const char *key, char s); int parse_over_angles(char s); int parse_keyword(); // "switch" - int parse_quoted_string(); // "hello" + int parse_quoted_string(char quote_char, char in_style); + // "hello", 'x' int parse_directive(); // "#define" int parse_line_comment(); // "// text.." int parse_escape(); // "\'" |
