QScintilla: рдЧрд╣рд░рд╛ рдФрд░ рдЧрд╣рд░рд╛

рд╢реБрдн рджреЛрдкрд╣рд░

рдореИрдВ рд▓рдЧрднрдЧ рднреВрд▓ рдЧрдпрд╛ рдерд╛ред рдЪрдХреНрд░ рдХрд╛ рдкрд╣рд▓рд╛ рдФрд░ рджреВрд╕рд░рд╛ рд▓реЗрдЦред

рдпрд╣ рдореИрдВ рдлрд┐рд░ рд╕реЗ рд╣реВрдВ, рдЕрдкрдиреЗ рдирдП рд▓реЗрдЦ рдХреЗ рд╕рд╛рдеред рдЖрдЬ рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рдХреНрдпреВрд╕реАрдВрдЯрд┐рд▓рд╛ рдХреЗ рд╕рд╛рде рд▓рдЧрднрдЧ рдкреВрд░реА рдХреНрд╖рдорддрд╛ рд╕реЗ рдХреИрд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛ рдЬрд╛рдПред рдЕрдзрд┐рдХ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ: рдореИрдВ рджрд┐рдЦрд╛рдКрдВрдЧрд╛ рдХрд┐ рдХреНрдпреВрд╕реАрд╕реЗрдВрдЯреАрд▓рд╛ рдХреЛ рдЖрдкрдХреА рдХрдХреНрд╖рд╛ рдХреЗ рд╕рд╛рде рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рд▓реЗрдирд╛ рдХреНрдпреЛрдВ рдЙрдкрдпреЛрдЧреА рд╣реИ, рдмрд▓реНрдХрд┐ рдЗрд╕рдХреА рдПрдХ рдкреНрд░рддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдФрд░ рдЖрдкрдХреЛ рдмрддрд╛рдПрдВ рдХрд┐ рдЕрдкрдиреЗ рд╕рдВрдкрд╛рджрдХ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╕реНрд╡рдд: рдкреВрд░реНрдг рдХреЛрдб рдХреИрд╕реЗ рд▓рд┐рдЦреЗрдВред

рдореИрдВ рдЕрднреА рдпрд╣ рдХрд╣рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ рдпрд╣ рд▓реЗрдЦ рдЫреЛрдЯрд╛ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдореИрдВ рдпрд╣ рджрд┐рдЦрд╛рдКрдВрдЧрд╛ рдХрд┐ рдореЗрд░реА рдЕрднреА рднреА рдЕрд╡рд┐рдХрд╕рд┐рдд рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╡реЗрдм рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдЖрдИрдбреАрдИ рдЧреИрд▓реЗрдХреНрдЯрд┐рдХрд╛ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдпрд╣ рд╕рдм рдХреИрд╕реЗ рдмрдХрд╡рд╛рд╕ рд╣реИред

рджреВрд╕рд░реЗ рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рд╣рдо рдХреНрдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ? рд╣рдо рдПрдХ рд╕рдВрдкрд╛рджрдХ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬреЛ рдкрд╛рда рдХреЛ рд╕реНрд╡рддрдГ рдкреВрд░реНрдг рдХрд░реЗрдЧрд╛ред рдФрд░ рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдк Ctrl + Space рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рдлрд╝рд╛рдЗрд▓ рд╣рдореЗрдВ рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд░рд╣реА рд╣реИ - рдкреНрд░рддрд┐рд╖реНрдард┐рдд рдмрд╛рдБрдз рдХреЗ рдмрд╛рдж, рд╕рдВрдкрд╛рджрдХ рдореЗрдВ NULL рдкреНрд░рддреАрдХ рдбрд╛рд▓рд╛ рдЧрдпрд╛ рд╣реИред рдореЗрд░реЗ рд▓рд┐рдП, рд╕реНрдкрд╖реНрдЯ рд╕рдорд╛рдзрд╛рди QsciScintilla рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИ рдФрд░ keyPressEvent () рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рддрд╛ рд╣реИред

рдореИрдВ рдореБрдЦреНрдп рд╕реВрдЪреА рд╕реВрдЪреАрдмрджреНрдз рдХрд░реВрдБрдЧрд╛ ():
void MainEditor::keyPressEvent(QKeyEvent *e) { if((e->modifiers() == Qt::CTRL) && (e->key() == Qt::Key_Space)) { // Ctrl+<Space> autoCompleteFromAll(); return; //    NULL } //... QsciScintilla::keyPressEvent(e); } 


рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛ред рдЕрдм рдЬрдм рд╣рдо Ctrl + Space рджрдмрд╛рддреЗ рд╣реИрдВ - рд╣рдо рдкрд╛рда рдХреЛ рд╕реНрд╡рдд: рдкреВрд░реНрдг рдХрд╣рддреЗ рд╣реИрдВ, рдФрд░ рдпрд╣ рдмрд╛рдд рд╣реИред рдФрд░ рдЕрдм рдореИрдВ рдирд┐рд░реНрдорд╛рдг рд╕реВрдЪреА рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░реВрдВрдЧрд╛:
 MainEditor::MainEditor(QWidget *parent) : QsciScintilla(parent), lexerHTML(new QsciLexerHTML) { //! To accept cyrillics setUtf8(true); setLexer(lexerHTML); //    HTML, PHP //... //! Autocompleting setAutoCompletionSource(QsciScintilla::AcsAll); //     setAutoCompletionCaseSensitivity(true); //     setAutoCompletionReplaceWord(true); //     ( ) setAutoCompletionUseSingle(AcusExplicit); //     ,    setAutoCompletionThreshold(1); //   1   //... } 


рдпрд╣ рд╣рдореЗрдВ HTML рдФрд░ PHP рдХреЗ рд╕реНрд╡рддрдГ рдкреВрд░реНрдгрддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдареАрдХ рд╣реИ рд╣рд╛рдБ? рд╕рдм рдХреБрдЫ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрддрдирд╛ рдЖрд╕рд╛рди рд╣реИред рд▓реЗрдХрд┐рди рджрд┐рд▓рдЪрд╕реНрдк рдирд╣реАрдВред рдЕрдм, рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ рд▓реАрдХрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрд╡рдд: рдкреВрд░реНрдг рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ... рд▓реЗрдХрд┐рди рдпрд╣ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИ:
 MyLexer::MyLexer(QObject *parent) : QsciLexerCustom(parent) { //... //   QsciAPIs *api = new QsciAPIs(this); //     foreach(const QString &word, listWithKeywords) { //     api->add(word); //    } api->prepare(); //  setAPIs(api); } 


рдФрд░ рдпрд╣рд╛рдБ, рдореИрдВ рд╡рд┐рд░рд╛рдо рджреЗрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред рдпрд╣рд╛рдВ рд╣рдо рд╡рд░реНрддрдорд╛рди рдПрдкреАрдЖрдИ рд╕реЗ рдПрдХ рдПрдкреАрдЖрдИ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рд╣рдорд╛рд░реА рд╕реВрдЪреА рдХреЗ рд╢рдмреНрджреЛрдВ рдХреЗ рд╕рд╛рде рдкреВрд░рдХ рдХрд░рддреЗ рд╣реИрдВред рдореИрдВ рд╕реВрдЪреА рдХреЗ рд▓рд┐рдП рдХреЛрдб рд╕реВрдЪреАрдмрджреНрдз рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реВрдВред рдлрд┐рд░ рд╣рдо рдмрд╕ рдПрдХ рдирдпрд╛ рдПрдкреАрдЖрдИ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВред

рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдпрд╣ рд╕рдм рдмрд╣реБрдд рджреГрдврд╝рддрд╛ рд╕реЗ рдкреВрд░рдХ рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреЛрдб рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдФрд░ рдЗрд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдкреВрд░рдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдирдП рдЪрд░ рдХреЗ рд╕рд╛рде рдкреВрд░рдХред рдпрд╛рдиреА AST (Abstract рд╕рд┐рдВрдЯреИрдХреНрд╕ рдЯреНрд░реА) рд╕реЗ рдЪрд░ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реВрдЪреА рдЬреЛрдбрд╝реЗрдВред рд▓реЗрдХрд┐рди рдпрд╣ рдХреЗрд╡рд▓ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рд╣реИ)ред

рдпрд╣рд╛рдБ рдореЗрд░рд╛ рдЖрдИрдбреАрдИ рд╕рдВрдкрд╛рджрдХ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:



рдФрд░ рд╡реИрд╕реЗ, рдпрд╣рд╛рдБ рдЙрд╕рдХрд╛ рднрдВрдбрд╛рд░ рд╣реИ ред

рдпрд╣ QScintilla рд▓реЗрдЦ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХрд╛ рд╕рдорд╛рдкрди рдХрд░рддрд╛ рд╣реИред рдЕрдЧрд░ рд▓реЗрдЦ рдХрдордЬреЛрд░ рд╣реИ рддреЛ рдореИрдВ рдкрд╣рд▓реЗ рд╕реЗ рдорд╛рдлреА рдорд╛рдВрдЧрддрд╛ рд╣реВрдВред рдпрд╣ рд╕рд┐рд░реНрдл рд╡рд╣ рд╣реИ рдЬреЛ рдореИрдВ рдЪрд╛рд╣рддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рдкрд╛рд╕ рдмрддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рдирд╣реАрдВ рдерд╛ред

рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

Source: https://habr.com/ru/post/In144855/


All Articles