📄 scintillaeditview.cpp
字号:
execute(SCI_SETLEXER, SCLEX_PASCAL);
const char *pascalKeyWords = _pParameter->getWordList(LANG_PASCAL, LANG_INDEX_INSTR);
execute(SCI_SETKEYWORDS, 0, (LPARAM)(pascalKeyWords?pascalKeyWords:""));
makeStyle("pascal");
}
void ScintillaEditView::setPerlLexer()
{
execute(SCI_SETLEXER, SCLEX_PERL);
const char *perlKeyWords = _pParameter->getWordList(LANG_PERL, LANG_INDEX_INSTR);
execute(SCI_SETKEYWORDS, 0, (LPARAM)(perlKeyWords?perlKeyWords:""));
makeStyle("perl");
}
void ScintillaEditView::setPythonLexer()
{
execute(SCI_SETLEXER, SCLEX_PYTHON);
const char *pythonKeyWords = _pParameter->getWordList(LANG_PYTHON, LANG_INDEX_INSTR);
execute(SCI_SETKEYWORDS, 0, (LPARAM)(pythonKeyWords?pythonKeyWords:""));
makeStyle("python");
}
void ScintillaEditView::setCppLexer(LangType type)
{
const char *cppInstrs;
const char *cppTypes;
const char *doxygenKeyWords = _pParameter->getWordList(LANG_CPP, LANG_INDEX_TYPE2);
int lang;
switch (type)
{
case L_C:
{
lang = LANG_C;
break;
}
case L_H:
case L_CPP:
{
lang = LANG_CPP;
break;
}
case L_JAVA:
{
lang = LANG_JAVA;
break;
}
case L_JS:
{
lang = LANG_JS;
break;
}
case L_RC:
{
lang = LANG_RC;
break;
}
case L_CS:
{
lang = LANG_CS;
break;
}
default:
return;
}
cppInstrs = _pParameter->getWordList(lang, LANG_INDEX_INSTR);
cppTypes = _pParameter->getWordList(lang, LANG_INDEX_TYPE);
execute(SCI_SETLEXER, SCLEX_CPP);
if (isCJK())
{
int charSet = codepage2CharSet();
if (charSet)
execute(SCI_STYLESETCHARACTERSET, SCE_C_STRING, charSet);
}
execute(SCI_SETKEYWORDS, 0, (LPARAM)(cppInstrs?cppInstrs:""));
execute(SCI_SETKEYWORDS, 1, (LPARAM)(cppTypes?cppTypes:""));
if (type != L_RC)
{
if (doxygenKeyWords)
execute(SCI_SETKEYWORDS, 2, (LPARAM)doxygenKeyWords);
}
if (lang == LANG_JS)
{
LexerStyler *pStyler = (_pParameter->getLStylerArray()).getLexerStylerByName("javascript");
if (pStyler)
{
for (int i = 0 ; i < pStyler->getNbStyler() ; i++)
{
Style & style = pStyler->getStyler(i);
int cppID = style._styleID;
switch (style._styleID)
{
case SCE_HJ_DEFAULT : cppID = SCE_C_DEFAULT; break;
case SCE_HJ_WORD : cppID = SCE_C_IDENTIFIER; break;
case SCE_HJ_SYMBOLS : cppID = SCE_C_OPERATOR; break;
case SCE_HJ_COMMENT : cppID = SCE_C_COMMENT; break;
case SCE_HJ_COMMENTLINE : cppID = SCE_C_COMMENTLINE; break;
case SCE_HJ_COMMENTDOC : cppID = SCE_C_COMMENTDOC; break;
case SCE_HJ_NUMBER : cppID = SCE_C_NUMBER; break;
case SCE_HJ_KEYWORD : cppID = SCE_C_WORD; break;
case SCE_HJ_DOUBLESTRING : cppID = SCE_C_STRING; break;
case SCE_HJ_SINGLESTRING : cppID = SCE_C_CHARACTER; break;
case SCE_HJ_REGEX : cppID = SCE_C_REGEX; break;
}
setStyle(cppID, style._fgColor, style._bgColor, style._fontName, style._fontStyle, style._fontSize);
}
}
execute(SCI_STYLESETEOLFILLED, SCE_C_DEFAULT, true);
execute(SCI_STYLESETEOLFILLED, SCE_C_COMMENTLINE, true);
execute(SCI_STYLESETEOLFILLED, SCE_C_COMMENT, true);
execute(SCI_STYLESETEOLFILLED, SCE_C_COMMENTDOC, true);
}
else
makeStyle("cpp");
}
void ScintillaEditView::setObjCLexer()
{
execute(SCI_SETLEXER, SCLEX_CPP);
const char *objcInstrs = _pParameter->getWordList(LANG_OBJC, LANG_INDEX_INSTR);
const char *objcTypes = _pParameter->getWordList(LANG_OBJC, LANG_INDEX_TYPE);
const char *doxygenKeyWords = _pParameter->getWordList(LANG_CPP, LANG_INDEX_TYPE2);
const char *objCDirective = _pParameter->getWordList(LANG_OBJC, LANG_INDEX_INSTR2);
const char *objCQualifier = _pParameter->getWordList(LANG_OBJC, LANG_INDEX_TYPE2);
setStyle(SCE_OBJC_DIRECTIVE, blue, white);
execute(SCI_SETKEYWORDS, 0, (LPARAM)(objcInstrs?objcInstrs:""));
execute(SCI_SETKEYWORDS, 1, (LPARAM)(objcTypes?objcTypes:""));
execute(SCI_SETKEYWORDS, 2, (LPARAM)(doxygenKeyWords?doxygenKeyWords:""));
execute(SCI_SETKEYWORDS, 4, (LPARAM) (objCDirective?objCDirective:""));
execute(SCI_SETKEYWORDS, 5, (LPARAM) (objCQualifier?objCQualifier:""));
makeStyle("objc");
}
void ScintillaEditView::setMakefileLexer()
{
execute(SCI_SETLEXER, SCLEX_MAKEFILE);
makeStyle("makefile");
}
void ScintillaEditView::setLuaLexer()
{
execute(SCI_SETLEXER, SCLEX_LUA);
const char *luaKeywords = _pParameter->getWordList(LANG_LUA, LANG_INDEX_INSTR);
const char *luaKeywords2 = _pParameter->getWordList(LANG_LUA, LANG_INDEX_INSTR2);
const char *luaKeywords3 = _pParameter->getWordList(LANG_LUA, LANG_INDEX_TYPE);
const char *luaKeywords4 = _pParameter->getWordList(LANG_LUA, LANG_INDEX_TYPE2);
execute(SCI_SETKEYWORDS, 0, (LPARAM)(luaKeywords?luaKeywords:""));
execute(SCI_SETKEYWORDS, 1, (LPARAM)(luaKeywords2?luaKeywords2:""));
execute(SCI_SETKEYWORDS, 2, (LPARAM)(luaKeywords3?luaKeywords3:""));
execute(SCI_SETKEYWORDS, 3, (LPARAM)(luaKeywords4?luaKeywords4:""));
makeStyle("lua");
}
void ScintillaEditView::setCssLexer()
{
execute(SCI_SETLEXER, SCLEX_CSS);
const char *cssKeyWords = _pParameter->getWordList(LANG_CSS, LANG_INDEX_INSTR);
execute(SCI_SETKEYWORDS, 0, (LPARAM)(cssKeyWords?cssKeyWords:""));
makeStyle("css");
}
void ScintillaEditView::defineDocType(LangType typeDoc)
{
//setStyle(STYLE_DEFAULT, black, white, "Verdana", 0, 9);
StyleArray & stylers = _pParameter->getMiscStylerArray();
int iStyleDefault = stylers.getStylerIndexByID(STYLE_DEFAULT);
if (iStyleDefault != -1)
{
Style & styleDefault = stylers.getStyler(iStyleDefault);
setStyle(styleDefault._styleID, styleDefault._fgColor, styleDefault._bgColor, styleDefault._fontName, styleDefault._fontStyle, styleDefault._fontSize);
}
execute(SCI_STYLECLEARALL);
//StyleArray & stylers = _pParameter->getMiscStylerArray();
int iFind = stylers.getStylerIndexByID(SCE_UNIVERSAL_FOUND_STYLE);
if (iFind != -1)
{
Style & styleFind = stylers.getStyler(iFind);
setStyle(styleFind._styleID, styleFind._fgColor, styleFind._bgColor, styleFind._fontName, styleFind._fontStyle, styleFind._fontSize);
}
//execute(SCI_STYLESETFORE, SCE_UNIVERSAL_FOUND_STYLE, yellow);
//execute(SCI_STYLESETBACK, SCE_UNIVERSAL_FOUND_STYLE, red);
int caretWidth = 1;
// surtout, surtout ne pas faire SCI_SETCODEPAGE ici
// ca rame a mort!!!
if (isCJK())
{
execute(SCI_SETCODEPAGE, _codepage);
}
execute(SCI_SETSTYLEBITS, 5);
showMargin(_SC_MARGE_FOLDER, isNeededFolderMarge(typeDoc));
switch (typeDoc)
{
case L_H :
case L_C :
case L_CPP :
case L_JS:
case L_JAVA :
case L_RC :
case L_CS :
setCppLexer(typeDoc); break;
case L_OBJC :
setObjCLexer(); break;
case L_PHP :
case L_ASP :
case L_HTML :
case L_XML :
setXmlLexer(typeDoc); break;
case L_CSS :
setCssLexer(); break;
case L_LUA :
setLuaLexer(); break;
case L_MAKEFILE :
setMakefileLexer(); break;
case L_INI :
setIniLexer(); break;
case L_M30 :
setM30Lexer(); break;
//case L_PCOM :
//setPcomLexer(); break;
case L_USER :
if (_buffers[_currentIndex]._userLangExt[0])
setUserLexer(_buffers[_currentIndex]._userLangExt);
else
setUserLexer();
break;
case L_NFO :
if (!_MSLineDrawFont)
_MSLineDrawFont = ::AddFontResource(LINEDRAW_FONT);
if (_MSLineDrawFont)
{
LexerStyler *pStyler = (_pParameter->getLStylerArray()).getLexerStylerByName("nfo");
COLORREF bg = black;
COLORREF fg = liteGrey;
if (pStyler)
{
int i = pStyler->getStylerIndexByName("DEFAULT");
if (i != -1)
{
Style & style = pStyler->getStyler(i);
bg = style._bgColor;
fg = style._fgColor;
}
}
setStyle(STYLE_DEFAULT, fg, bg, "MS LineDraw");
execute(SCI_STYLECLEARALL);
}
break;
case L_SQL :
setSqlLexer(); break;
case L_VB :
setVBLexer(); break;
case L_PASCAL :
setPascalLexer(); break;
case L_PERL :
setPerlLexer(); break;
case L_PYTHON :
setPythonLexer(); break;
case L_BATCH :
setBatchLexer(); break;
case L_TXT :
default :
execute(SCI_SETLEXER, (_codepage == CP_CHINESE_TRADITIONAL)?SCLEX_MAKEFILE:SCLEX_NULL); break;
}
//All the global styles should put here
int index = stylers.getStylerIndexByID(STYLE_INDENTGUIDE);
if (index != -1)
{
Style & style = stylers.getStyler(index);
setStyle(style._styleID, style._fgColor, style._bgColor, style._fontName, style._fontStyle, style._fontSize);
}
index = stylers.getStylerIndexByID(STYLE_BRACELIGHT);
if (index != -1)
{
Style & style = stylers.getStyler(index);
setStyle(style._styleID, style._fgColor, style._bgColor, style._fontName, style._fontStyle, style._fontSize);
}
index = stylers.getStylerIndexByID(STYLE_BRACEBAD);
if (index != -1)
{
Style & style = stylers.getStyler(index);
setStyle(style._styleID, style._fgColor, style._bgColor, style._fontName, style._fontStyle, style._fontSize);
}
execute(SCI_SETTABWIDTH, ((NppParameters::getInstance())->getNppGUI())._tabSize);
execute(SCI_SETUSETABS, !((NppParameters::getInstance())->getNppGUI())._tabReplacedBySpace);
execute(SCI_COLOURISE, 0, -1);
}
char * ScintillaEditView::attatchDefaultDoc(int nb)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -