diff --git a/NEWS.md b/NEWS.md index 33530898..90a09e4e 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,6 +1,9 @@ Version 0.8.4 For Dev-C++ 7 Beta - enhancement: auto save/load the default open folder in the configuration file - fix: shouldn't auto add '()' when char succeeding the completed function name is '(' + - fix: can't show code completion popup if symbol is proceed with an operator '~' ( and it's not a destructor) + - fix: can't show code completion popup when define MACRO + - fix: can't debug files with chinese characters in the path Version 0.8.3 For Dev-C++ 7 Beta - enhancement: View menu diff --git a/RedPandaIDE/debugger.cpp b/RedPandaIDE/debugger.cpp index 5458682e..b2b23d05 100644 --- a/RedPandaIDE/debugger.cpp +++ b/RedPandaIDE/debugger.cpp @@ -1580,9 +1580,9 @@ void DebugReader::runNextCmd() emit cmdStarted(); QByteArray s; - s=pCmd->command.toUtf8(); + s=pCmd->command.toLocal8Bit(); if (!pCmd->params.isEmpty()) { - s+=' '+pCmd->params.toUtf8(); + s+= ' '+pCmd->params.toLocal8Bit(); } s+= "\n"; if (mProcess->write(s)<0) { @@ -1817,6 +1817,7 @@ void DebugReader::run() readed = mProcess->readAll(); buffer += readed; + if ( readed.endsWith("\r\n")&& outputTerminated(buffer)) { processDebugOutput(QString::fromUtf8(buffer)); buffer.clear(); diff --git a/RedPandaIDE/editor.cpp b/RedPandaIDE/editor.cpp index fb34914f..33866062 100644 --- a/RedPandaIDE/editor.cpp +++ b/RedPandaIDE/editor.cpp @@ -2279,8 +2279,7 @@ void Editor::showCompletion(bool autoComplete) if (tokenType == SynHighlighterTokenType::PreprocessDirective) {//Preprocessor word = getWordAtPosition(this,caretXY(),pBeginPos,pEndPos, WordPurpose::wpDirective); if (!word.startsWith('#')) { - //showTabnineCompletion(); - return; + word = ""; } } else if (tokenType == SynHighlighterTokenType::Comment) { //Comment, javadoc tag word = getWordAtPosition(this,caretXY(),pBeginPos,pEndPos, WordPurpose::wpJavadoc); diff --git a/RedPandaIDE/mainwindow.cpp b/RedPandaIDE/mainwindow.cpp index 36672c4c..09e10683 100644 --- a/RedPandaIDE/mainwindow.cpp +++ b/RedPandaIDE/mainwindow.cpp @@ -1296,7 +1296,6 @@ void MainWindow::debug() if (!mDebugger->start()) return; filePath.replace('\\','/'); - mDebugger->sendCommand("-gdb-set","host-charset UTF-8"); mDebugger->sendCommand("-file-exec-and-symbols", '"' + filePath + '"'); if (mProject->options().type == ProjectType::DynamicLib) { @@ -1375,7 +1374,6 @@ void MainWindow::debug() mDebugger->setUseUTF8(e->fileEncoding() == ENCODING_UTF8 || e->fileEncoding() == ENCODING_UTF8_BOM); if (!mDebugger->start()) return; - mDebugger->sendCommand("-gdb-set","host-charset UTF-8"); mDebugger->sendCommand("-file-exec-and-symbols", QString("\"%1\"").arg(debugFile.filePath().replace('\\','/'))); } } diff --git a/RedPandaIDE/mainwindow.ui b/RedPandaIDE/mainwindow.ui index 4a8c0f8a..507115f3 100644 --- a/RedPandaIDE/mainwindow.ui +++ b/RedPandaIDE/mainwindow.ui @@ -85,7 +85,7 @@ QTabWidget::West - 0 + 1 true @@ -171,10 +171,10 @@ Qt::ElideNone - true - - false + + + 50 diff --git a/RedPandaIDE/widgets/codecompletionpopup.cpp b/RedPandaIDE/widgets/codecompletionpopup.cpp index b5587591..9bc19456 100644 --- a/RedPandaIDE/widgets/codecompletionpopup.cpp +++ b/RedPandaIDE/widgets/codecompletionpopup.cpp @@ -72,6 +72,11 @@ void CodeCompletionPopup::prepareSearch(const QString &phrase, const QString &fi mIncludedFiles = mParser->getFileIncludes(filename); getCompletionFor(filename,phrase,line); + if (mFullCompletionStatementList.isEmpty() && phrase.startsWith('~')) { + mPhrase = phrase.mid(1); + getCompletionFor(filename,mPhrase,line); + } + //todo: notify model //CodeComplForm.lbCompletion.Font.Size := FontSize; //CodeComplForm.lbCompletion.ItemHeight := CodeComplForm.lbCompletion.Canvas.TextHeight('F')+6; @@ -110,6 +115,13 @@ bool CodeCompletionPopup::search(const QString &phrase, bool autoHideOnSingleRes QString symbol = phrase.mid(i); // filter fFullCompletionStatementList to fCompletionStatementList filterList(symbol); + + //if can't find a destructor, maybe '~' is only an operator + if (mCompletionStatementList.isEmpty() && phrase.startsWith('~')) { + symbol = phrase.mid(1); + filterList(symbol); + } + mModel->notifyUpdated(); setCursor(oldCursor);