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);