[BUG_FIXED] Recover langs.xml while its length is zero.

[NEW] Add JSP.

git-svn-id: svn://svn.tuxfamily.org/svnroot/notepadplus/repository/trunk@601 f5eea248-9336-0410-98b8-ebc06183d4e3
remotes/x64
Don Ho 2010-01-23 18:07:32 +00:00
parent 1f1ce89572
commit 9c03f48263
10 changed files with 40 additions and 16 deletions

View File

@ -25,7 +25,7 @@ enum LangType {L_TXT, L_PHP , L_C, L_CPP, L_CS, L_OBJC, L_JAVA, L_RC,\
L_TEX, L_FORTRAN, L_BASH, L_FLASH, L_NSIS, L_TCL, L_LISP, L_SCHEME,\
L_ASM, L_DIFF, L_PROPS, L_PS, L_RUBY, L_SMALLTALK, L_VHDL, L_KIX, L_AU3,\
L_CAML, L_ADA, L_VERILOG, L_MATLAB, L_HASKELL, L_INNO, L_SEARCHRESULT,\
L_CMAKE, L_YAML, L_COBOL, L_GUI4CLI, L_D, L_POWERSHELL, L_R,\
L_CMAKE, L_YAML, L_COBOL, L_GUI4CLI, L_D, L_POWERSHELL, L_R, L_JSP,\
// The end of enumated language type, so it should be always at the end
L_EXTERNAL};
enum winVer{WV_UNKNOWN, WV_WIN32S, WV_95, WV_98, WV_ME, WV_NT, WV_W2K, WV_XP, WV_S2003, WV_XPX64, WV_VISTA, WV_WIN7};

View File

@ -157,12 +157,12 @@ int PluginsManager::loadPlugin(const TCHAR *pluginFilePath, vector<generic_strin
}
}
TiXmlDocument *_pXmlDoc = new TiXmlDocument(xmlPath);
TiXmlDocument *pXmlDoc = new TiXmlDocument(xmlPath);
if (!_pXmlDoc->LoadFile())
if (!pXmlDoc->LoadFile())
{
delete _pXmlDoc;
_pXmlDoc = NULL;
delete pXmlDoc;
pXmlDoc = NULL;
throw generic_string(generic_string(xmlPath) + TEXT(" failed to load."));
}
@ -170,8 +170,8 @@ int PluginsManager::loadPlugin(const TCHAR *pluginFilePath, vector<generic_strin
if (containers[x] != NULL)
nppParams->addExternalLangToEnd(containers[x]);
nppParams->getExternalLexerFromXmlTree(_pXmlDoc);
nppParams->getExternalLexerDoc()->push_back(_pXmlDoc);
nppParams->getExternalLexerFromXmlTree(pXmlDoc);
nppParams->getExternalLexerDoc()->push_back(pXmlDoc);
#ifdef UNICODE
const char *pDllName = wmc->wchar2char(pluginFilePath, CP_ACP);
#else

View File

@ -5199,6 +5199,7 @@ void Notepad_plus::command(int id)
case IDM_LANG_GUI4CLI :
case IDM_LANG_POWERSHELL :
case IDM_LANG_R :
case IDM_LANG_JSP :
case IDM_LANG_USER :
{
setLanguage(menuID2LangType(id));
@ -5539,6 +5540,8 @@ enum LangType Notepad_plus::menuID2LangType(int cmdID)
return L_PHP;
case IDM_LANG_ASP :
return L_ASP;
case IDM_LANG_JSP :
return L_JSP;
case IDM_LANG_CSS :
return L_CSS;
case IDM_LANG_LUA :

View File

@ -547,6 +547,7 @@ BEGIN
MENUITEM "INNO", IDM_LANG_INNO
MENUITEM "Java", IDM_LANG_JAVA
MENUITEM "Javascript", IDM_LANG_JS
MENUITEM "JSP", IDM_LANG_JSP
MENUITEM "KIXtart", IDM_LANG_KIX
MENUITEM "LISP", IDM_LANG_LISP
MENUITEM "Lua", IDM_LANG_LUA
@ -623,6 +624,7 @@ BEGIN
BEGIN
MENUITEM "Java", IDM_LANG_JAVA
MENUITEM "Javascript", IDM_LANG_JS
MENUITEM "JSP", IDM_LANG_JSP
END
MENUITEM "KIXtart", IDM_LANG_KIX
POPUP "L"

View File

@ -790,13 +790,25 @@ bool NppParameters::load()
// langs.xml : for every user statically //
//---------------------------------------//
generic_string langs_xml_path(_nppPath);
PathAppend(langs_xml_path, TEXT("langs.xml"));
if (!PathFileExists(langs_xml_path.c_str()))
BOOL doRecover = FALSE;
if (::PathFileExists(langs_xml_path.c_str()))
{
struct _stat buf;
if (generic_stat(langs_xml_path.c_str(), &buf)==0)
if (buf.st_size == 0)
doRecover = ::MessageBox(NULL, TEXT("Load langs.xml failed!\rDo you want to recover your langs.xml?"), TEXT("Configurator"),MB_YESNO);
}
else
doRecover = true;
if (doRecover)
{
generic_string srcLangsPath(_nppPath);
PathAppend(srcLangsPath, TEXT("langs.model.xml"));
::CopyFile(srcLangsPath.c_str(), langs_xml_path.c_str(), TRUE);
::CopyFile(srcLangsPath.c_str(), langs_xml_path.c_str(), FALSE);
}
_pXmlDoc = new TiXmlDocument(langs_xml_path);
@ -1116,7 +1128,8 @@ void NppParameters::setFontList(HWND hWnd)
void NppParameters::getLangKeywordsFromXmlTree()
{
TiXmlNode *root = _pXmlDoc->FirstChild(TEXT("NotepadPlus"));
TiXmlNode *root =
_pXmlDoc->FirstChild(TEXT("NotepadPlus"));
if (!root) return;
feedKeyWordsParameters(root);
}
@ -4577,6 +4590,8 @@ int NppParameters::langTypeToCommandID(LangType lt) const
id = IDM_LANG_PHP; break;
case L_ASP :
id = IDM_LANG_ASP; break;
case L_JSP :
id = IDM_LANG_JSP; break;
case L_CSS :
id = IDM_LANG_CSS; break;
case L_LUA :

View File

@ -109,6 +109,7 @@ LanguageName ScintillaEditView::langNames[L_EXTERNAL+1] = {
{TEXT("d"), TEXT("D"), TEXT("D programming language"), L_D, SCLEX_D},
{TEXT("powershell"), TEXT("PowerShell"), TEXT("Windows PowerShell"), L_POWERSHELL, SCLEX_POWERSHELL},
{TEXT("r"), TEXT("R"), TEXT("R programming language"), L_R, SCLEX_R},
{TEXT("jsp"), TEXT("JSP"), TEXT("Java Server Pages script file"), L_JSP, SCLEX_HTML},
{TEXT("ext"), TEXT("External"), TEXT("External"), L_EXTERNAL, SCLEX_NULL}
};
@ -497,7 +498,7 @@ void ScintillaEditView::setXmlLexer(LangType type)
makeStyle(type);
}
else if ((type == L_HTML) || (type == L_PHP) || (type == L_ASP))
else if ((type == L_HTML) || (type == L_PHP) || (type == L_ASP) || (type == L_JSP))
{
execute(SCI_SETLEXER, SCLEX_HTML);
const TCHAR *htmlKeyWords_generic =_pParameter->getWordList(L_HTML, LANG_INDEX_INSTR);
@ -512,7 +513,7 @@ void ScintillaEditView::setXmlLexer(LangType type)
makeStyle(L_HTML);
setEmbeddedJSLexer();
setPhpEmbeddedLexer();
setEmbeddedPhpLexer();
setEmbeddedAspLexer();
}
}
@ -539,7 +540,7 @@ void ScintillaEditView::setEmbeddedJSLexer()
execute(SCI_STYLESETEOLFILLED, SCE_HJ_COMMENTDOC, true);
}
void ScintillaEditView::setPhpEmbeddedLexer()
void ScintillaEditView::setEmbeddedPhpLexer()
{
const TCHAR *pKwArray[10] = {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL};
makeStyle(L_PHP, pKwArray);
@ -1115,6 +1116,7 @@ void ScintillaEditView::defineDocType(LangType typeDoc)
case L_PHP :
case L_ASP :
case L_JSP :
case L_HTML :
case L_XML :
setXmlLexer(typeDoc); break;

View File

@ -659,7 +659,7 @@ protected:
void setUserLexer(const TCHAR *userLangName = NULL);
void setExternalLexer(LangType typeDoc);
void setEmbeddedJSLexer();
void setPhpEmbeddedLexer();
void setEmbeddedPhpLexer();
void setEmbeddedAspLexer();
//Simple lexers
void setCssLexer() {

View File

@ -448,7 +448,7 @@ void XmlMatchedTagsHighlighter::tagMatch(bool doHiliteAttr)
// Detect the current lang type. It works only with html and xml
LangType lang = (_pEditView->getCurrentBuffer())->getLangType();
if (lang != L_XML && lang != L_HTML && lang != L_PHP && lang != L_ASP)
if (lang != L_XML && lang != L_HTML && lang != L_PHP && lang != L_ASP && lang != L_JSP)
return;
// Get the original targets and search options to restore after tag matching operation

View File

@ -110,6 +110,7 @@
<Language name="javascript" ext="js" commentLine="//" commentStart="/*" commentEnd="*/">
<Keywords name="instre1">abstract boolean break byte case catch char class const continue debugger default delete do double else enum export extends final finally float for function goto if implements import in instanceof int interface long native new package private protected public return short static super switch synchronized this throw throws transient try typeof var void volatile while with true false prototype</Keywords>
</Language>
<Language name="jsp" ext="jsp" commentLine="//" commentStart="/*" commentEnd="*/"/>
<Language name="kix" ext="kix" commentLine=";" commentStart="" commentEnd="">
<Keywords name="instre1">? and beep big break call cd cls color cookie1 copy debug del dim display do until exit flushkb for each next function endfunction get gets global go gosub goto if else endif md or password play quit rd redim return run select case endselect set setl setm settime shell sleep small use while loop</Keywords>
<Keywords name="instre2">abs addkey addprinterconnection addprogramgroup addprogramitem asc ascan at backupeventlog box cdbl chr cint cleareventlog close comparefiletimes createobject cstr dectohex delkey delprinterconnection delprogramgroup delprogramitem deltree delvalue dir enumgroup enumipinfo enumkey enumlocalgroup enumvalue execute exist existkey expandenvironmentvars fix formatnumber freefilehandle getdiskspace getfileattr getfilesize getfiletime getfileversion getobject iif ingroup instr instrrev int isdeclared join kbhit keyexist lcase left len loadhive loadkey logevent logoff ltrim memorysize messagebox open readline readprofilestring readtype readvalue redirectoutput right rnd round rtrim savekey sendkeys sendmessage setascii setconsole setdefaultprinter setfileattr setfocus setoption setsystemstate settitle setwallpaper showprogramgroup shutdown sidtoname split srnd substr trim ubound ucase unloadhive val vartype vartypename writeline writeprofilestring writevalue</Keywords>

View File

@ -353,6 +353,7 @@
#define IDM_LANG_GUI4CLI (IDM_LANG + 52)
#define IDM_LANG_POWERSHELL (IDM_LANG + 53)
#define IDM_LANG_R (IDM_LANG + 54)
#define IDM_LANG_JSP (IDM_LANG + 55)
#define IDM_LANG_EXTERNAL (IDM_LANG + 65)
#define IDM_LANG_EXTERNAL_LIMIT (IDM_LANG + 79)