diff --git a/uppsrc/CodeEditor/CodeEditor.h b/uppsrc/CodeEditor/CodeEditor.h index 65e819108..aa2ba3d75 100644 --- a/uppsrc/CodeEditor/CodeEditor.h +++ b/uppsrc/CodeEditor/CodeEditor.h @@ -179,7 +179,7 @@ public: enum { HIGHLIGHT_NONE = -1, HIGHLIGHT_CPP = 0, HIGHLIGHT_USC, HIGHLIGHT_JAVA, HIGHLIGHT_T, - HIGHLIGHT_CALC, HIGHLIGHT_LAY, HIGHLIGHT_SCH, HIGHLIGHT_SQL, + HIGHLIGHT_CALC, HIGHLIGHT_LAY, HIGHLIGHT_SCH, HIGHLIGHT_SQL, HIGHLIGHT_JAVASCRIPT, HIGHLIGHT_COUNT }; diff --git a/uppsrc/CodeEditor/Highlight.cpp b/uppsrc/CodeEditor/Highlight.cpp index 2e63e5e78..7b322b8c4 100644 --- a/uppsrc/CodeEditor/Highlight.cpp +++ b/uppsrc/CodeEditor/Highlight.cpp @@ -320,6 +320,14 @@ void CodeEditor::InitKeywords() "true", "try", "void", "volatile", "while", NULL }; + static const char *javascript[] = { + "break", "continue", "do", "for", "import", "new", "this", "void", + "case", "default", "else", "function", "in", "return", "typeof", "while", + "comment", "delete", "export", "if", "label", "switch", "var", "with", + "catch", "enum", "throw", "class", "extends", "try", "const", "finally", + "debugger", "super", + NULL + }; static const char *upp_macros[] = { "CLASSNAME", "THISBACK", "THISBACK1", "THISBACK2", "THISBACK3", "THISBACK4", "PTEBACK", "PTEBACK1", "PTEBACK2", "PTEBACK3", "PTEBACK4", @@ -418,11 +426,39 @@ void CodeEditor::InitKeywords() static const char *javan[] = { NULL }; + static const char *javascriptn[] = { + "alert", "eval", "Link", "outerHeight", "scrollTo", + "Anchor", "FileUpload", "location", "outerWidth", "Select", + "Area", "find", "Location", "Packages", "self", + "arguments", "focus", "locationbar", "pageXoffset", "setInterval", + "Array", "Form", "Math", "pageYoffset", "setTimeout", + "assign", "Frame", "menubar", "parent", "status", + "blur", "frames", "MimeType", "parseFloat", "statusbar", + "Boolean", "Function", "moveBy", "parseInt", "stop", + "Button", "getClass", "moveTo", "Password", "String", + "callee", "Hidden", "name", "personalbar", "Submit", + "caller", "history", "NaN", "Plugin", "sun", + "captureEvents", "History", "navigate", "print", "taint", + "Checkbox", "home", "navigator", "prompt", "Text", + "clearInterval", "Image", "Navigator", "prototype", "Textarea", + "clearTimeout", "Infinity", "netscape", "Radio", "toolbar", + "close", "innerHeight", "Number", "ref", "top", + "closed", "innerWidth", "Object", "RegExp", "toString", + "confirm", "isFinite", "onBlur", "releaseEvents", "unescape", + "constructor", "isNan", "onError", "Reset", "untaint", + "Date", "java", "onFocus", "resizeBy", "unwatch", + "defaultStatus", "JavaArray", "onLoad", "resizeTo", "valueOf", + "document", "JavaClass", "onUnload", "routeEvent", "watch", + "Document", "JavaObject", "open", "scroll", "window", + "Element", "JavaPackage", "opener", "scrollbars", "Window", + "escape", "length", "Option", "scrollBy", + NULL + }; static const char **kw[HIGHLIGHT_COUNT] = { - cpp, usc, java, tfile, usc, lay, sch, sql + cpp, usc, java, tfile, usc, lay, sch, sql, javascript }; static const char **nm[HIGHLIGHT_COUNT] = { - upp, usclib, javan, tlng, usclib, javan, javan, javan + upp, usclib, javan, tlng, usclib, javan, javan, javan, javascriptn }; const char **q = NULL; for(int i = 0; i < HIGHLIGHT_COUNT; i++) { @@ -491,7 +527,7 @@ void CodeEditor::HighlightLine(int line, Vector& hl, int po p++; hls.Put(hl_style[INK_NORMAL]); } - if(*p == '#') { + if(*p == '#' && highlight != HIGHLIGHT_JAVASCRIPT) { static const char *pd[] = { "define", "error", "if", "elif", "else", "endif", "ifdef", "ifndef", "include", "line", "undef", "pragma", diff --git a/uppsrc/Core/srcdoc.tpp/i18n$en-us.tpp b/uppsrc/Core/srcdoc.tpp/i18n$en-us.tpp index 44ca7d7ab..a7ef2932d 100644 --- a/uppsrc/Core/srcdoc.tpp/i18n$en-us.tpp +++ b/uppsrc/Core/srcdoc.tpp/i18n$en-us.tpp @@ -172,4 +172,6 @@ add the following somewhere early in your application`'s execution:&] [s0; &] [s7; SetLanguage( GetSystemLNG() );&] [s0; &] -[s0; ] \ No newline at end of file +[s0; In multithreaded applications this setting works on per`-thread +basis (since release 5061); threads inherit the language setting +of main thread on startup.] \ No newline at end of file diff --git a/uppsrc/ide/idefile.cpp b/uppsrc/ide/idefile.cpp index 75cd6fa10..73f0b6b7e 100644 --- a/uppsrc/ide/idefile.cpp +++ b/uppsrc/ide/idefile.cpp @@ -10,44 +10,35 @@ void Ide::SetupEditor(int f, String hl, String fn) default: editor.SetFont(editorsplit.GetZoom() < 0 && editorsplit.IsHorz() ? veditorfont : ext == ".t" ? tfont : editorfont); break; } - if(IsNull(hl)) { - if(ext == ".c" || ext == ".cpp" || ext == ".cc" || ext == ".cxx" || - ext == ".h" || ext == ".hpp" || ext == ".hh" || ext == ".hxx" || - ext == ".m" || ext == ".mm" || ext == ".icpp") - editor.Highlight(CodeEditor::HIGHLIGHT_CPP); - else - if(ext == ".usc") - editor.Highlight(CodeEditor::HIGHLIGHT_USC); - else - if(ext == ".java") - editor.Highlight(CodeEditor::HIGHLIGHT_JAVA); - else - if(ext == ".t" || ext == ".jt") - editor.Highlight(CodeEditor::HIGHLIGHT_T); - else - if(ext == ".lay") - editor.Highlight(CodeEditor::HIGHLIGHT_LAY); - else - if(ext == ".sch") - editor.Highlight(CodeEditor::HIGHLIGHT_SCH); - else - if(ext == ".sql") - editor.Highlight(CodeEditor::HIGHLIGHT_SQL); - else - editor.Highlight(CodeEditor::HIGHLIGHT_NONE); - } - else { - if(hl == "cpp") - editor.Highlight(CodeEditor::HIGHLIGHT_CPP); - else - if(hl == "esc") - editor.Highlight(CodeEditor::HIGHLIGHT_USC); - else - if(hl == "java") - editor.Highlight(CodeEditor::HIGHLIGHT_JAVA); - else - editor.Highlight(CodeEditor::HIGHLIGHT_NONE); - } + if(IsNull(hl) && *ext == '.') + hl = ext.Mid(1); + if(hl == "c" || hl == "cpp" || hl == "cc" || hl == "cxx" || + hl == "h" || hl == "hpp" || hl == "hh" || hl == "hxx" || + hl == "m" || hl == "mm" || hl == "icpp") + editor.Highlight(CodeEditor::HIGHLIGHT_CPP); + else + if(hl == "usc") + editor.Highlight(CodeEditor::HIGHLIGHT_USC); + else + if(hl == "java") + editor.Highlight(CodeEditor::HIGHLIGHT_JAVA); + else + if(hl == "js") + editor.Highlight(CodeEditor::HIGHLIGHT_JAVASCRIPT); + else + if(hl == "t" || hl == "jt") + editor.Highlight(CodeEditor::HIGHLIGHT_T); + else + if(hl == "lay") + editor.Highlight(CodeEditor::HIGHLIGHT_LAY); + else + if(hl == "sch") + editor.Highlight(CodeEditor::HIGHLIGHT_SCH); + else + if(hl == "sql") + editor.Highlight(CodeEditor::HIGHLIGHT_SQL); + else + editor.Highlight(CodeEditor::HIGHLIGHT_NONE); } void Ide::SetupEditor() @@ -131,7 +122,11 @@ void Ide::FileProperties() d.highlight.Add(Null, "Default"); d.highlight.Add("cpp", "C++"); d.highlight.Add("java", "Java"); - d.highlight.Add("esc", "Esc"); + d.highlight.Add("js", "JavaScript"); + d.highlight.Add("sql", "SQL"); + d.highlight.Add("usc", "Esc"); + d.highlight.Add("sch", "DB schema"); + d.highlight.Add("lay", "Layout"); d.tabsize <<= f.tabsize > 0 ? f.tabsize : Null; d.tabsize <<= d.Breaker(111); d.tabsize.MinMax(1, 100);