diff options
-rw-r--r-- | doc/ScintillaHistory.html | 1 | ||||
-rw-r--r-- | include/SciLexer.h | 27 | ||||
-rw-r--r-- | include/Scintilla.iface | 29 | ||||
-rw-r--r-- | lexers/LexTxt2tags.cxx | 481 | ||||
-rw-r--r-- | src/Catalogue.cxx | 1 | ||||
-rw-r--r-- | win32/scintilla.mak | 3 | ||||
-rw-r--r-- | win32/scintilla_vc6.mak | 3 |
7 files changed, 545 insertions, 0 deletions
diff --git a/doc/ScintillaHistory.html b/doc/ScintillaHistory.html index 470f7f220..1c1775018 100644 --- a/doc/ScintillaHistory.html +++ b/doc/ScintillaHistory.html @@ -348,6 +348,7 @@ </tr><tr> <td>Xavi</td> <td>Toby Inkster</td> + <td>Eric Forgeot</td> </tr> </table> <p> diff --git a/include/SciLexer.h b/include/SciLexer.h index f3b3ef838..3aa2c3853 100644 --- a/include/SciLexer.h +++ b/include/SciLexer.h @@ -111,6 +111,7 @@ #define SCLEX_NIMROD 96 #define SCLEX_SML 97 #define SCLEX_MARKDOWN 98 +#define SCLEX_TXT2TAGS 99 #define SCLEX_AUTOMATIC 1000 #define SCE_P_DEFAULT 0 #define SCE_P_COMMENTLINE 1 @@ -1388,6 +1389,32 @@ #define SCE_MARKDOWN_CODE 19 #define SCE_MARKDOWN_CODE2 20 #define SCE_MARKDOWN_CODEBK 21 +#define SCE_TXT2TAGS_DEFAULT 0 +#define SCE_TXT2TAGS_LINE_BEGIN 1 +#define SCE_TXT2TAGS_STRONG1 2 +#define SCE_TXT2TAGS_STRONG2 3 +#define SCE_TXT2TAGS_EM1 4 +#define SCE_TXT2TAGS_EM2 5 +#define SCE_TXT2TAGS_HEADER1 6 +#define SCE_TXT2TAGS_HEADER2 7 +#define SCE_TXT2TAGS_HEADER3 8 +#define SCE_TXT2TAGS_HEADER4 9 +#define SCE_TXT2TAGS_HEADER5 10 +#define SCE_TXT2TAGS_HEADER6 11 +#define SCE_TXT2TAGS_PRECHAR 12 +#define SCE_TXT2TAGS_ULIST_ITEM 13 +#define SCE_TXT2TAGS_OLIST_ITEM 14 +#define SCE_TXT2TAGS_BLOCKQUOTE 15 +#define SCE_TXT2TAGS_STRIKEOUT 16 +#define SCE_TXT2TAGS_HRULE 17 +#define SCE_TXT2TAGS_LINK 18 +#define SCE_TXT2TAGS_CODE 19 +#define SCE_TXT2TAGS_CODE2 20 +#define SCE_TXT2TAGS_CODEBK 21 +#define SCE_TXT2TAGS_COMMENT 22 +#define SCE_TXT2TAGS_OPTION 23 +#define SCE_TXT2TAGS_PREPROC 24 +#define SCE_TXT2TAGS_POSTPROC 25 /* --Autogenerated -- end of section automatically generated from Scintilla.iface */ #endif diff --git a/include/Scintilla.iface b/include/Scintilla.iface index 418b29726..de24e552a 100644 --- a/include/Scintilla.iface +++ b/include/Scintilla.iface @@ -2329,6 +2329,7 @@ val SCLEX_POWERPRO=95 val SCLEX_NIMROD=96 val SCLEX_SML=97 val SCLEX_MARKDOWN=98 +val SCLEX_TXT2TAGS=99 # When a lexer specifies its language as SCLEX_AUTOMATIC it receives a # value assigned in sequence from SCLEX_AUTOMATIC+1. @@ -3785,6 +3786,34 @@ val SCE_MARKDOWN_LINK=18 val SCE_MARKDOWN_CODE=19 val SCE_MARKDOWN_CODE2=20 val SCE_MARKDOWN_CODEBK=21 +# Lexical state for SCLEX_TXT2TAGS +lex Txt2tags=SCLEX_TXT2TAGS SCE_TXT2TAGS_ +val SCE_TXT2TAGS_DEFAULT=0 +val SCE_TXT2TAGS_LINE_BEGIN=1 +val SCE_TXT2TAGS_STRONG1=2 +val SCE_TXT2TAGS_STRONG2=3 +val SCE_TXT2TAGS_EM1=4 +val SCE_TXT2TAGS_EM2=5 +val SCE_TXT2TAGS_HEADER1=6 +val SCE_TXT2TAGS_HEADER2=7 +val SCE_TXT2TAGS_HEADER3=8 +val SCE_TXT2TAGS_HEADER4=9 +val SCE_TXT2TAGS_HEADER5=10 +val SCE_TXT2TAGS_HEADER6=11 +val SCE_TXT2TAGS_PRECHAR=12 +val SCE_TXT2TAGS_ULIST_ITEM=13 +val SCE_TXT2TAGS_OLIST_ITEM=14 +val SCE_TXT2TAGS_BLOCKQUOTE=15 +val SCE_TXT2TAGS_STRIKEOUT=16 +val SCE_TXT2TAGS_HRULE=17 +val SCE_TXT2TAGS_LINK=18 +val SCE_TXT2TAGS_CODE=19 +val SCE_TXT2TAGS_CODE2=20 +val SCE_TXT2TAGS_CODEBK=21 +val SCE_TXT2TAGS_COMMENT=22 +val SCE_TXT2TAGS_OPTION=23 +val SCE_TXT2TAGS_PREPROC=24 +val SCE_TXT2TAGS_POSTPROC=25 # Events diff --git a/lexers/LexTxt2tags.cxx b/lexers/LexTxt2tags.cxx new file mode 100644 index 000000000..3bed55b1d --- /dev/null +++ b/lexers/LexTxt2tags.cxx @@ -0,0 +1,481 @@ +/****************************************************************** + * LexTxt2tags.cxx + * + * A simple Txt2tags lexer for scintilla. + * + * + * Adapted by Eric Forgeot + * Based on the LexMarkdown.cxx by Jon Strait - jstrait@moonloop.net + * + * What could be improved: + * - Verbatim lines could be like for raw lines : when there is no space between the ``` and the following text, the first letter should be colored so the user would understand there must be a space for a valid tag. + * - marks such as bold, italic, strikeout, underline should begin to be highlighted only when they are closed and valid. + * - verbatim and raw area should be highlighted too. + * + * The License.txt file describes the conditions under which this + * software may be distributed. + * + *****************************************************************/ + +#include <stdlib.h> +#include <string.h> +#include <stdio.h> +#include <stdarg.h> +#include <assert.h> + +#include "ILexer.h" +#include "Scintilla.h" +#include "SciLexer.h" + +#include "PropSetSimple.h" +#include "WordList.h" +#include "LexAccessor.h" +#include "Accessor.h" +#include "StyleContext.h" +#include "CharacterSet.h" +#include "LexerModule.h" + +#ifdef SCI_NAMESPACE +using namespace Scintilla; +#endif + + + +static inline bool IsNewline(const int ch) { + return (ch == '\n' || ch == '\r'); +} + +// True if can follow ch down to the end with possibly trailing whitespace +static bool FollowToLineEnd(const int ch, const int state, const unsigned int endPos, StyleContext &sc) { + unsigned int i = 0; + while (sc.GetRelative(++i) == ch) + ; + // Skip over whitespace + while (IsASpaceOrTab(sc.GetRelative(i)) && sc.currentPos + i < endPos) + ++i; + if (IsNewline(sc.GetRelative(i)) || sc.currentPos + i == endPos) { + sc.Forward(i); + sc.ChangeState(state); + sc.SetState(SCE_TXT2TAGS_LINE_BEGIN); + return true; + } + else return false; +} + +// Does the previous line have more than spaces and tabs? +static bool HasPrevLineContent(StyleContext &sc) { + int i = 0; + // Go back to the previous newline + while ((--i + sc.currentPos) && !IsNewline(sc.GetRelative(i))) + ; + while (--i + sc.currentPos) { + if (IsNewline(sc.GetRelative(i))) + break; + if (!IsASpaceOrTab(sc.GetRelative(i))) + return true; + } + return false; +} + +// Separator line +static bool IsValidHrule(const unsigned int endPos, StyleContext &sc) { + int c, count = 1; + unsigned int i = 0; + while (++i) { + c = sc.GetRelative(i); + if (c == sc.ch) + ++count; + // hit a terminating character + else if (!IsASpaceOrTab(c) || sc.currentPos + i == endPos) { + // Are we a valid HRULE + if ((IsNewline(c) || sc.currentPos + i == endPos) && + count >= 20 && !HasPrevLineContent(sc)) { + sc.SetState(SCE_TXT2TAGS_HRULE); + sc.Forward(i); + sc.SetState(SCE_TXT2TAGS_LINE_BEGIN); + return true; + } + else { + sc.SetState(SCE_TXT2TAGS_DEFAULT); + return false; + } + } + } + return false; +} + +static void ColorizeTxt2tagsDoc(unsigned int startPos, int length, int initStyle, + WordList **, Accessor &styler) { + unsigned int endPos = startPos + length; + int precharCount = 0; + // Don't advance on a new loop iteration and retry at the same position. + // Useful in the corner case of having to start at the beginning file position + // in the default state. + bool freezeCursor = false; + + StyleContext sc(startPos, length, initStyle, styler); + + while (sc.More()) { + // Skip past escaped characters + if (sc.ch == '\\') { + sc.Forward(); + continue; + } + + // A blockquotes resets the line semantics + if (sc.state == SCE_TXT2TAGS_BLOCKQUOTE){ + sc.Forward(2); + sc.SetState(SCE_TXT2TAGS_LINE_BEGIN); + } + // An option colors the whole line + if (sc.state == SCE_TXT2TAGS_OPTION){ + FollowToLineEnd('%', SCE_TXT2TAGS_OPTION, endPos, sc); + } + if (sc.state == SCE_TXT2TAGS_POSTPROC){ + FollowToLineEnd('%', SCE_TXT2TAGS_POSTPROC, endPos, sc); + } + if (sc.state == SCE_TXT2TAGS_PREPROC){ + FollowToLineEnd('%', SCE_TXT2TAGS_PREPROC, endPos, sc); + } + // A comment colors the whole line + if (sc.state == SCE_TXT2TAGS_COMMENT){ + FollowToLineEnd('%', SCE_TXT2TAGS_COMMENT, endPos, sc); + } + // Conditional state-based actions + if (sc.state == SCE_TXT2TAGS_CODE2) { + if (IsNewline(sc.ch)) + sc.SetState(SCE_TXT2TAGS_LINE_BEGIN); + if (sc.Match("``") && sc.GetRelative(-2) != ' ') { + sc.Forward(2); + sc.SetState(SCE_TXT2TAGS_DEFAULT); + } + } + // Table + else if (sc.state == SCE_TXT2TAGS_CODE) { + if (IsNewline(sc.ch)) + sc.SetState(SCE_TXT2TAGS_LINE_BEGIN); + if (sc.ch == '|' && sc.chPrev != ' ') + sc.ForwardSetState(SCE_TXT2TAGS_DEFAULT); + } + // Strong + else if (sc.state == SCE_TXT2TAGS_STRONG1) { + if (IsNewline(sc.ch)) + sc.SetState(SCE_TXT2TAGS_LINE_BEGIN); + if (sc.Match("**") && sc.chPrev != ' ') { + sc.Forward(2); + sc.SetState(SCE_TXT2TAGS_DEFAULT); + } + } + // Emphasis + else if (sc.state == SCE_TXT2TAGS_EM1) { + if (IsNewline(sc.ch)) + sc.SetState(SCE_TXT2TAGS_LINE_BEGIN); + if (sc.Match("//") && sc.chPrev != ' ') { + sc.Forward(2); + sc.ForwardSetState(SCE_TXT2TAGS_DEFAULT); + } + } + // Underline + else if (sc.state == SCE_TXT2TAGS_EM2) { + if (IsNewline(sc.ch)) + sc.SetState(SCE_TXT2TAGS_LINE_BEGIN); + if (sc.Match("__") && sc.chPrev != ' ') { + sc.Forward(2); + sc.ForwardSetState(SCE_TXT2TAGS_DEFAULT); + } + } + // codeblock + else if (sc.state == SCE_TXT2TAGS_CODEBK) { + if (IsNewline(sc.ch)) + sc.SetState(SCE_TXT2TAGS_LINE_BEGIN); + if (sc.atLineStart && sc.Match("```")) { + int i = 1; + while (!IsNewline(sc.GetRelative(i)) && sc.currentPos + i < endPos) + i++; + sc.Forward(i); + sc.SetState(SCE_TXT2TAGS_DEFAULT); + } + } + // strikeout + else if (sc.state == SCE_TXT2TAGS_STRIKEOUT) { + if (IsNewline(sc.ch)) + sc.SetState(SCE_TXT2TAGS_LINE_BEGIN); + if (sc.Match("--") && sc.chPrev != ' ') { + sc.Forward(2); + sc.SetState(SCE_TXT2TAGS_DEFAULT); + } + } + // Headers + else if (sc.state == SCE_TXT2TAGS_LINE_BEGIN) { + if (sc.Match("======")) + { + sc.SetState(SCE_TXT2TAGS_HEADER6); + sc.Forward(); + } + else if (sc.Match("=====")) + { + sc.SetState(SCE_TXT2TAGS_HEADER5); + sc.Forward(); + } + else if (sc.Match("====")) + { + sc.SetState(SCE_TXT2TAGS_HEADER4); + sc.Forward(); + } + else if (sc.Match("===")) + { + sc.SetState(SCE_TXT2TAGS_HEADER3); + sc.Forward(); + } + //SetStateAndZoom(SCE_TXT2TAGS_HEADER3, 3, '=', sc); + else if (sc.Match("==")) { + sc.SetState(SCE_TXT2TAGS_HEADER2); + sc.Forward(); + } + //SetStateAndZoom(SCE_TXT2TAGS_HEADER2, 2, '=', sc); + else if (sc.Match("=")) { + // Catch the special case of an unordered list + if (sc.chNext == '.' && IsASpaceOrTab(sc.GetRelative(2))) { + precharCount = 0; + sc.SetState(SCE_TXT2TAGS_PRECHAR); + } + else + { + sc.SetState(SCE_TXT2TAGS_HEADER1); + sc.Forward(); + } + //SetStateAndZoom(SCE_TXT2TAGS_HEADER1, 1, '=', sc); + } + + // Numbered title + else if (sc.Match("++++++")) + { + sc.SetState(SCE_TXT2TAGS_HEADER6); + sc.Forward(); + } + else if (sc.Match("+++++")) + { + sc.SetState(SCE_TXT2TAGS_HEADER5); + sc.Forward(); + } + else if (sc.Match("++++")) + { + sc.SetState(SCE_TXT2TAGS_HEADER4); + sc.Forward(); + } + else if (sc.Match("+++")) + { + sc.SetState(SCE_TXT2TAGS_HEADER3); + sc.Forward(); + } + //SetStateAndZoom(SCE_TXT2TAGS_HEADER3, 3, '+', sc); + else if (sc.Match("++")) { + sc.SetState(SCE_TXT2TAGS_HEADER2); + sc.Forward(); + } + //SetStateAndZoom(SCE_TXT2TAGS_HEADER2, 2, '+', sc); + else if (sc.Match("+")) { + // Catch the special case of an unordered list + if (sc.chNext == ' ' && IsASpaceOrTab(sc.GetRelative(1))) { + // if (IsNewline(sc.ch)) { + //precharCount = 0; + // sc.SetState(SCE_TXT2TAGS_LINE_BEGIN); + //sc.SetState(SCE_TXT2TAGS_PRECHAR); + // } + // else { + // precharCount = 0; + sc.SetState(SCE_TXT2TAGS_OLIST_ITEM); + sc.Forward(2); + sc.SetState(SCE_TXT2TAGS_DEFAULT); + // sc.SetState(SCE_TXT2TAGS_PRECHAR); + // } + } + else + { + sc.SetState(SCE_TXT2TAGS_HEADER1); + sc.Forward(); + } + } + + + // Codeblock + else if (sc.Match("```")) { + if (!HasPrevLineContent(sc)) + // if (!FollowToLineEnd(sc)) + sc.SetState(SCE_TXT2TAGS_CODEBK); + else + sc.SetState(SCE_TXT2TAGS_DEFAULT); + } + + // Preproc + else if (sc.Match("%!preproc")) { + sc.SetState(SCE_TXT2TAGS_PREPROC); + } + // Postproc + else if (sc.Match("%!postproc")) { + sc.SetState(SCE_TXT2TAGS_POSTPROC); + } + // Option + else if (sc.Match("%!")) { + sc.SetState(SCE_TXT2TAGS_OPTION); + } + + // Comment + else if (sc.ch == '%') { + sc.SetState(SCE_TXT2TAGS_COMMENT); + } + // list + else if (sc.ch == '-') { + precharCount = 0; + sc.SetState(SCE_TXT2TAGS_PRECHAR); + } + // def list + else if (sc.ch == ':') { + precharCount = 0; + sc.SetState(SCE_TXT2TAGS_OLIST_ITEM); + sc.Forward(1); + sc.SetState(SCE_TXT2TAGS_PRECHAR); + } + else if (IsNewline(sc.ch)) + sc.SetState(SCE_TXT2TAGS_LINE_BEGIN); + else { + precharCount = 0; + sc.SetState(SCE_TXT2TAGS_PRECHAR); + } + } + + // The header lasts until the newline + else if (sc.state == SCE_TXT2TAGS_HEADER1 || sc.state == SCE_TXT2TAGS_HEADER2 || + sc.state == SCE_TXT2TAGS_HEADER3 || sc.state == SCE_TXT2TAGS_HEADER4 || + sc.state == SCE_TXT2TAGS_HEADER5 || sc.state == SCE_TXT2TAGS_HEADER6) { + if (IsNewline(sc.ch)) + sc.SetState(SCE_TXT2TAGS_LINE_BEGIN); + } + + // New state only within the initial whitespace + if (sc.state == SCE_TXT2TAGS_PRECHAR) { + // Blockquote + if (sc.Match("\"\"\"") && precharCount < 5){ + + sc.SetState(SCE_TXT2TAGS_BLOCKQUOTE); + sc.Forward(1); + } + /* + // Begin of code block + else if (!HasPrevLineContent(sc) && (sc.chPrev == '\t' || precharCount >= 4)) + sc.SetState(SCE_TXT2TAGS_CODEBK); + */ + // HRule - Total of 20 or more hyphens, asterisks, or underscores + // on a line by themselves + else if ((sc.ch == '-' ) && IsValidHrule(endPos, sc)) + ; + // Unordered list + else if ((sc.ch == '-') && IsASpaceOrTab(sc.chNext)) { + sc.SetState(SCE_TXT2TAGS_ULIST_ITEM); + sc.ForwardSetState(SCE_TXT2TAGS_DEFAULT); + } + // Ordered list + else if (IsADigit(sc.ch)) { + int digitCount = 0; + while (IsADigit(sc.GetRelative(++digitCount))) + ; + if (sc.GetRelative(digitCount) == '.' && + IsASpaceOrTab(sc.GetRelative(digitCount + 1))) { + sc.SetState(SCE_TXT2TAGS_OLIST_ITEM); + sc.Forward(digitCount + 1); + sc.SetState(SCE_TXT2TAGS_DEFAULT); + } + } + // Alternate Ordered list + else if (sc.ch == '+' && sc.chNext == ' ' && IsASpaceOrTab(sc.GetRelative(2))) { + // sc.SetState(SCE_TXT2TAGS_OLIST_ITEM); + // sc.Forward(2); + // sc.SetState(SCE_TXT2TAGS_DEFAULT); + } + else if (sc.ch != ' ' || precharCount > 2) + sc.SetState(SCE_TXT2TAGS_DEFAULT); + else + ++precharCount; + } + + // New state anywhere in doc + if (sc.state == SCE_TXT2TAGS_DEFAULT) { + // if (sc.atLineStart && sc.ch == '#') { + // sc.SetState(SCE_TXT2TAGS_LINE_BEGIN); + // freezeCursor = true; + // } + // Links and Images + if (sc.Match("![") || sc.ch == '[') { + int i = 0, j = 0, k = 0; + int len = endPos - sc.currentPos; + while (i < len && (sc.GetRelative(++i) != ']' || sc.GetRelative(i - 1) == '\\')) + ; + if (sc.GetRelative(i) == ']') { + j = i; + if (sc.GetRelative(++i) == '(') { + while (i < len && (sc.GetRelative(++i) != '(' || sc.GetRelative(i - 1) == '\\')) + ; + if (sc.GetRelative(i) == '(') + k = i; + } + + else if (sc.GetRelative(i) == '[' || sc.GetRelative(++i) == '[') { + while (i < len && (sc.GetRelative(++i) != ']' || sc.GetRelative(i - 1) == '\\')) + ; + if (sc.GetRelative(i) == ']') + k = i; + } + } + // At least a link text + if (j) { + sc.SetState(SCE_TXT2TAGS_LINK); + sc.Forward(j); + // Also has a URL or reference portion + if (k) + sc.Forward(k - j); + sc.ForwardSetState(SCE_TXT2TAGS_DEFAULT); + } + } + // Code - also a special case for alternate inside spacing + if (sc.Match("``") && sc.GetRelative(3) != ' ') { + sc.SetState(SCE_TXT2TAGS_CODE2); + sc.Forward(); + } + else if (sc.ch == '|' && sc.GetRelative(3) != ' ') { + sc.SetState(SCE_TXT2TAGS_CODE); + } + // Strong + else if (sc.Match("**") && sc.GetRelative(2) != ' ') { + sc.SetState(SCE_TXT2TAGS_STRONG1); + sc.Forward(); + } + // Emphasis + else if (sc.Match("//") && sc.GetRelative(2) != ' ') { + sc.SetState(SCE_TXT2TAGS_EM1); + sc.Forward(); + } + else if (sc.Match("__") && sc.GetRelative(2) != ' ') { + sc.SetState(SCE_TXT2TAGS_EM2); + sc.Forward(); + } + // Strikeout + else if (sc.Match("--") && sc.GetRelative(2) != ' ') { + sc.SetState(SCE_TXT2TAGS_STRIKEOUT); + sc.Forward(); + } + + // Beginning of line + else if (IsNewline(sc.ch)) + sc.SetState(SCE_TXT2TAGS_LINE_BEGIN); + } + // Advance if not holding back the cursor for this iteration. + if (!freezeCursor) + sc.Forward(); + freezeCursor = false; + } + sc.Complete(); +} + +LexerModule lmTxt2tags(SCLEX_TXT2TAGS, ColorizeTxt2tagsDoc, "txt2tags"); + + diff --git a/src/Catalogue.cxx b/src/Catalogue.cxx index 86e93d323..70394aeb1 100644 --- a/src/Catalogue.cxx +++ b/src/Catalogue.cxx @@ -168,6 +168,7 @@ int Scintilla_LinkLexers() { LINK_LEXER(lmTAL); LINK_LEXER(lmTCL); LINK_LEXER(lmTeX); + LINK_LEXER(lmTxt2tags); LINK_LEXER(lmVB); LINK_LEXER(lmVBScript); LINK_LEXER(lmVerilog); diff --git a/win32/scintilla.mak b/win32/scintilla.mak index d92ab2a61..c7d0f7441 100644 --- a/win32/scintilla.mak +++ b/win32/scintilla.mak @@ -190,6 +190,7 @@ LEXOBJS=\ $(DIR_O)\LexTAL.obj \ $(DIR_O)\LexTCL.obj \ $(DIR_O)\LexTeX.obj \ + $(DIR_O)\LexTxt2tags.obj \ $(DIR_O)\LexVB.obj \ $(DIR_O)\LexVerilog.obj \ $(DIR_O)\LexVHDL.obj \ @@ -467,6 +468,8 @@ $(DIR_O)\LexTCL.obj: ..\lexers\LexTCL.cxx $(LEX_HEADERS) $(DIR_O)\LexTeX.obj: ..\lexers\LexTeX.cxx $(LEX_HEADERS) +$(DIR_O)\LexTxt2tags.obj: ..\lexers\LexTxt2tags.cxx $(LEX_HEADERS) + $(DIR_O)\LexVB.obj: ..\lexers\LexVB.cxx $(LEX_HEADERS) $(DIR_O)\LexVerilog.obj: ..\lexers\LexVerilog.cxx $(LEX_HEADERS) diff --git a/win32/scintilla_vc6.mak b/win32/scintilla_vc6.mak index 23675b2f2..68175ad0c 100644 --- a/win32/scintilla_vc6.mak +++ b/win32/scintilla_vc6.mak @@ -192,6 +192,7 @@ LEXOBJS=\ $(DIR_O)\LexTAL.obj \ $(DIR_O)\LexTCL.obj \ $(DIR_O)\LexTeX.obj \ + $(DIR_O)\LexTxt2tags.obj \ $(DIR_O)\LexVB.obj \ $(DIR_O)\LexVerilog.obj \ $(DIR_O)\LexVHDL.obj \ @@ -469,6 +470,8 @@ $(DIR_O)\LexTCL.obj: ..\lexers\LexTCL.cxx $(LEX_HEADERS) $(DIR_O)\LexTeX.obj: ..\lexers\LexTeX.cxx $(LEX_HEADERS) +$(DIR_O)\LexTxt2tags.obj: ..\lexers\LexTxt2tags.cxx $(LEX_HEADERS) + $(DIR_O)\LexVB.obj: ..\lexers\LexVB.cxx $(LEX_HEADERS) $(DIR_O)\LexVerilog.obj: ..\lexers\LexVerilog.cxx $(LEX_HEADERS) |