⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 scintillaeditview.cpp

📁 一个类似于写字板的程序
💻 CPP
📖 第 1 页 / 共 3 页
字号:
    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 + -