aboutsummaryrefslogtreecommitdiffstats
path: root/src/modules/editor
diff options
context:
space:
mode:
Diffstat (limited to 'src/modules/editor')
-rw-r--r--src/modules/editor/scripteditor.cpp99
-rw-r--r--src/modules/editor/scripteditor.h3
2 files changed, 57 insertions, 45 deletions
diff --git a/src/modules/editor/scripteditor.cpp b/src/modules/editor/scripteditor.cpp
index e20c3e20b..f961baf10 100644
--- a/src/modules/editor/scripteditor.cpp
+++ b/src/modules/editor/scripteditor.cpp
@@ -75,8 +75,8 @@ static QColor g_clrFind(0,0,0);
static QFont g_fntNormal("Courier New",8);
-
-
+static bool bSemaphore=false;
+static bool bCompleterReady=false;
KviScriptEditorWidget::KviScriptEditorWidget(QWidget * pParent)
@@ -92,15 +92,26 @@ KviScriptEditorWidget::KviScriptEditorWidget(QWidget * pParent)
m_pCompleter = 0;
QStringList szListFunctionsCommands;
QString tmp("kvscompleter.idx");
-
+ iModulesCount=0;
+ iIndex=0;
QString szPath;
g_pApp->getLocalKvircDirectory(szPath,KviApp::ConfigPlugins,tmp);
+
if(!KviFileUtils::fileExists(szPath))
{
- m_pStartTimer = new QTimer();
- m_pStartTimer->setInterval(500);
- connect(m_pStartTimer,SIGNAL(timeout()),this,SLOT(asyncCompleterCreation()));
- m_pStartTimer->start(500);
+ if (!bSemaphore){
+ bSemaphore=true;
+ m_pStartTimer = new QTimer();
+ m_pStartTimer->setInterval(1000);
+ connect(m_pStartTimer,SIGNAL(timeout()),this,SLOT(asyncCompleterCreation()));
+ m_pStartTimer->start(500);
+ }
+ else{
+ m_pStartTimer = new QTimer();
+ m_pStartTimer->setInterval(2000);
+ connect(m_pStartTimer,SIGNAL(timeout()),this,SLOT(checkReadyCompleter()));
+ m_pStartTimer->start(1000);
+ }
} else loadCompleterFromFile();
}
@@ -109,12 +120,21 @@ KviScriptEditorWidget::~KviScriptEditorWidget()
if(m_pCompleter)
delete m_pCompleter;
}
-
+void KviScriptEditorWidget::checkReadyCompleter()
+{
+ if(bCompleterReady)
+ {
+ m_pStartTimer->stop();
+ delete m_pStartTimer;
+ m_pStartTimer=0;
+ loadCompleterFromFile();
+ }
+}
void KviScriptEditorWidget::asyncCompleterCreation()
{
- static int iIndex = 0;
- static int iModulesCount = 0;
+ //static int iIndex = 0;
+ //static int iModulesCount = 0;
if(!iIndex)
{
m_pListCompletition = new QStringList();
@@ -131,10 +151,6 @@ void KviScriptEditorWidget::asyncCompleterCreation()
m_pListModulesNames = new QStringList(d.entryList(QDir::Files | QDir::Readable));
iModulesCount = m_pListModulesNames->count();
}
- if (!m_pListModulesNames)
- {
- return;
- }
QString szModuleName = m_pListModulesNames->at(iIndex);
iIndex++;
@@ -172,6 +188,7 @@ void KviScriptEditorWidget::asyncCompleterCreation()
createCompleter(*m_pListCompletition);
iIndex = 0;
iModulesCount = 0;
+ bCompleterReady=true;
delete m_pListCompletition;
delete m_pListModulesNames;
}
@@ -545,7 +562,8 @@ KviScriptEditorSyntaxHighlighter::KviScriptEditorSyntaxHighlighter(KviScriptEdit
// FIX-ME: "function ..." - "function internal ..."
// FIX-ME: "@$"
- // FIX-ME: # comment
+ // FIX-ME: "\" escape char
+ // FIX-ME: comment multiline with empty line
updateSyntaxtTextFormat();
KviScriptHighlightingRule rule;
@@ -614,39 +632,28 @@ void KviScriptEditorSyntaxHighlighter::updateSyntaxtTextFormat()
void KviScriptEditorSyntaxHighlighter::highlightBlock(const QString & szText)
{
if(szText.isEmpty()) return;
- int start=0, lastsimplechar=-1;
+ int iIndexStart=0;
- // skip tabulations
- while(start < szText.size())
+ // skip tabulations and spaces
+ while(iIndexStart < szText.size())
{
- if(szText.at(start).unicode()=='\t')
+ if(szText.at(iIndexStart).unicode()=='\t' || szText.at(iIndexStart).unicode()==' ')
{
- start++;
+ iIndexStart++;
} else {
break;
}
}
-
+ if (iIndexStart == szText.size()) return;
// check 'commands'
-
- while(start < szText.size())
- {
- if( szText.at(start).unicode()=='$' ||
- szText.at(start).unicode()=='{' ||
- szText.at(start).unicode()=='}' )
+ int iCommandStart=iIndexStart;
+ if (szText.at(iIndexStart).unicode()!='$' && szText.at(iIndexStart).unicode()!='{' && szText.at(iIndexStart).unicode()!='}' && szText.at(iIndexStart).unicode()!='%')
+ {
+ while(iIndexStart<szText.size() && (szText.at(iIndexStart).isLetterOrNumber() || (szText.at(iIndexStart).unicode() == '.') || (szText.at(iIndexStart).unicode() == '_') || (szText.at(iIndexStart).unicode()== ':') ))
{
- if(lastsimplechar > -1)
- setFormat(0,lastsimplechar,keywordFormat);
- break;
- } else if( szText.at(start).unicode() &&
- ( szText.at(start).isLetterOrNumber() ||
- szText.at(start).unicode() == '.' ||
- szText.at(start).unicode() == '_' ||
- szText.at(start).unicode()== ':' ) )
- {
- lastsimplechar = start;
+ iIndexStart++;
}
- start++;
+ setFormat(iCommandStart,iIndexStart-iCommandStart,keywordFormat);
}
// code from QT4 example
@@ -656,13 +663,14 @@ void KviScriptEditorSyntaxHighlighter::highlightBlock(const QString & szText)
QRegExp expression(rule.pattern);
QString sz=expression.pattern();
- index = szText.indexOf(expression,start);
- while (index >= 0)
+ index = szText.indexOf(expression,iIndexStart);
+
+ while (index >= 0)
{
int length = expression.matchedLength();
- setFormat(index, length, rule.format);
+ setFormat(index, length, rule.format);
index = szText.indexOf(expression, index + length);
- }
+ }
}
setCurrentBlockState(0);
@@ -848,8 +856,8 @@ void KviScriptEditorImplementation::saveToFile()
QString szFileName;
if(KviFileDialog::askForSaveFileName(szFileName,
__tr2qs_ctx("Choose a Filename - KVIrc","editor"),
- QString(),
- QString(),false,true,true))
+ QString::null,
+ QString::null,false,true,true))
{
QString szBuffer = m_pEditor->toPlainText();
@@ -929,7 +937,7 @@ void KviScriptEditorImplementation::loadFromFile()
QString szFileName;
if(KviFileDialog::askForOpenFileName(szFileName,
__tr2qs_ctx("Load Script File - KVIrc","editor"),
- QString(),KVI_FILTER_SCRIPT,false,true))
+ QString::null,KVI_FILTER_SCRIPT,false,true))
{
QString szBuffer;
if(KviFileUtils::loadFile(szFileName,szBuffer))
@@ -1046,3 +1054,4 @@ void KviScriptEditorReplaceDialog::slotNextFind()
{
emit nextFind(m_pFindLineEdit->text());
}
+
diff --git a/src/modules/editor/scripteditor.h b/src/modules/editor/scripteditor.h
index 06739b1a9..bda21f108 100644
--- a/src/modules/editor/scripteditor.h
+++ b/src/modules/editor/scripteditor.h
@@ -61,10 +61,12 @@ protected:
QStringList * m_pListCompletition;
QTimer * m_pStartTimer;
QWidget * m_pParent;
+ int iIndex,iModulesCount;
QString m_szHelp;
public:
KviScriptEditorSyntaxHighlighter * syntaxHighlighter(){return m_pSyntaxHighlighter;};
void createCompleter(QStringList &list);
+
void loadCompleterFromFile();
QCompleter * completer() const { return m_pCompleter; };
QString textUnderCursor() const;
@@ -72,6 +74,7 @@ public:
//void find1();
bool contextSensitiveHelp() const;
public slots:
+ void checkReadyCompleter();
void insertCompletion(const QString & szCompletion);
void slotFind();
void slotHelp();