Merge branch 'master' of github.com:royqh1979/RedPanda-CPP
This commit is contained in:
commit
a485dac4cd
6
NEWS.md
6
NEWS.md
|
@ -138,6 +138,12 @@ Red Panda C++ Version 2.27
|
||||||
- enhancement: Auto hide Project menu if no project openning.
|
- enhancement: Auto hide Project menu if no project openning.
|
||||||
- fix: Toggle breakpoint by shortcut may use wrong line.
|
- fix: Toggle breakpoint by shortcut may use wrong line.
|
||||||
- fix: Size of the icons in problem and problem set panel are not correct.
|
- fix: Size of the icons in problem and problem set panel are not correct.
|
||||||
|
- fix: Shouldn't consider preceeding '&'/'*' when popping completion suggest list for variable members.
|
||||||
|
- fix: Positions of current matching parenthesis not correctly updated.
|
||||||
|
- fix: Can't show correct completion info for vars declared with template parameters ending with ">>".
|
||||||
|
- enhancement: Auto type induction for "std::make_shared"/"std::make_unique".
|
||||||
|
- enhancement: sdcc project compiler: compile source file in subfolders.
|
||||||
|
- fix: project options -> compiler set -> static link & auto convert charset options not correctly loaded.
|
||||||
|
|
||||||
Red Panda C++ Version 2.26
|
Red Panda C++ Version 2.26
|
||||||
- enhancement: Code suggestion for embedded std::vectors.
|
- enhancement: Code suggestion for embedded std::vectors.
|
||||||
|
|
|
@ -173,10 +173,11 @@ void CompilerInfo::prepareCompilerOptions()
|
||||||
addOption(CC_CMD_OPT_WARNING_AS_ERROR, QObject::tr("Make all warnings into errors (-Werror)"), groupName, true, true, false, "-Werror");
|
addOption(CC_CMD_OPT_WARNING_AS_ERROR, QObject::tr("Make all warnings into errors (-Werror)"), groupName, true, true, false, "-Werror");
|
||||||
addOption(CC_CMD_OPT_ABORT_ON_ERROR , QObject::tr("Abort compilation on first error (-Wfatal-errors)"), groupName, true, true, false, "-Wfatal-errors");
|
addOption(CC_CMD_OPT_ABORT_ON_ERROR , QObject::tr("Abort compilation on first error (-Wfatal-errors)"), groupName, true, true, false, "-Wfatal-errors");
|
||||||
sl.clear();
|
sl.clear();
|
||||||
sl.append(QPair<QString,QString>("Normal",""));
|
sl.append(QPair<QString,QString>("Normal","protector"));
|
||||||
sl.append(QPair<QString,QString>("Strong","-strong"));
|
sl.append(QPair<QString,QString>("Explicit","protector-explicit"));
|
||||||
sl.append(QPair<QString,QString>("All","-all"));
|
sl.append(QPair<QString,QString>("Strong","protector-strong"));
|
||||||
addOption(CC_CMD_OPT_STACK_PROTECTOR , QObject::tr("Check for stack smashing attacks (-fstack-protector)"), groupName, false, false, true, "-fstack-protector", CompilerOptionType::Choice, sl);
|
sl.append(QPair<QString,QString>("All","protector-all"));
|
||||||
|
addOption(CC_CMD_OPT_STACK_PROTECTOR , QObject::tr("Check for stack smashing attacks (-fstack-protector)"), groupName, false, false, true, "-fstack-", CompilerOptionType::Choice, sl);
|
||||||
sl.clear();
|
sl.clear();
|
||||||
sl.append(QPair<QString,QString>("Address","address"));
|
sl.append(QPair<QString,QString>("Address","address"));
|
||||||
sl.append(QPair<QString,QString>("Hwaddress","hwaddress"));
|
sl.append(QPair<QString,QString>("Hwaddress","hwaddress"));
|
||||||
|
|
|
@ -265,6 +265,7 @@ void ProjectCompiler::writeMakeDefines(QFile &file, bool &genModuleDef)
|
||||||
writeln(file, "WINDRES = " + escapeArgumentForMakefileVariableValue(windres, true));
|
writeln(file, "WINDRES = " + escapeArgumentForMakefileVariableValue(windres, true));
|
||||||
#endif
|
#endif
|
||||||
writeln(file, "RM = " CLEAN_PROGRAM);
|
writeln(file, "RM = " CLEAN_PROGRAM);
|
||||||
|
writeln(file, "CD = " CD_PROGRAM);
|
||||||
|
|
||||||
// compiler flags
|
// compiler flags
|
||||||
writeln(file, "LIBS = " + escapeArgumentsForMakefileVariableValue(libraryArguments));
|
writeln(file, "LIBS = " + escapeArgumentsForMakefileVariableValue(libraryArguments));
|
||||||
|
@ -361,7 +362,7 @@ void ProjectCompiler::writeMakeClean(QFile &file)
|
||||||
if (mProject->options().type == ProjectType::DynamicLib) {
|
if (mProject->options().type == ProjectType::DynamicLib) {
|
||||||
target +=" $(STATIC)";
|
target +=" $(STATIC)";
|
||||||
}
|
}
|
||||||
writeln(file, QString("\t-$(RM) %1 > %2 2>&1").arg(target,NULL_FILE));
|
writeln(file, QString("\t-$(RM) %1 >%2 2>&1").arg(target,NULL_FILE));
|
||||||
writeln(file);
|
writeln(file);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -169,6 +169,7 @@ void SDCCProjectCompiler::writeMakeDefines(QFile &file)
|
||||||
writeln(file, "BIN_ARG = " + escapeArgumentForMakefileVariableValue(executable, false));
|
writeln(file, "BIN_ARG = " + escapeArgumentForMakefileVariableValue(executable, false));
|
||||||
writeln(file, "CFLAGS = $(INCS) " + escapeArgumentsForMakefileVariableValue(cCompileArguments));
|
writeln(file, "CFLAGS = $(INCS) " + escapeArgumentsForMakefileVariableValue(cCompileArguments));
|
||||||
writeln(file, "RM = " CLEAN_PROGRAM);
|
writeln(file, "RM = " CLEAN_PROGRAM);
|
||||||
|
writeln(file, "CD = " CD_PROGRAM);
|
||||||
|
|
||||||
writeln(file);
|
writeln(file);
|
||||||
}
|
}
|
||||||
|
@ -195,7 +196,7 @@ void SDCCProjectCompiler::writeMakeIncludes(QFile &file)
|
||||||
void SDCCProjectCompiler::writeMakeClean(QFile &file)
|
void SDCCProjectCompiler::writeMakeClean(QFile &file)
|
||||||
{
|
{
|
||||||
writeln(file, "clean: clean-custom");
|
writeln(file, "clean: clean-custom");
|
||||||
writeln(file, QString("\t-$(RM) $(CLEANOBJ) > %1 2>&1").arg(NULL_FILE));
|
writeln(file, QString("\t-$(RM) $(CLEANOBJ) >%1 2>&1||:").arg(NULL_FILE));
|
||||||
writeln(file);
|
writeln(file);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -256,6 +257,7 @@ void SDCCProjectCompiler::writeMakeObjFilesRules(QFile &file)
|
||||||
writeln(file, objStr);
|
writeln(file, objStr);
|
||||||
|
|
||||||
// Write custom build command
|
// Write custom build command
|
||||||
|
|
||||||
if (unit->overrideBuildCmd() && !unit->buildCmd().isEmpty()) {
|
if (unit->overrideBuildCmd() && !unit->buildCmd().isEmpty()) {
|
||||||
QString BuildCmd = unit->buildCmd();
|
QString BuildCmd = unit->buildCmd();
|
||||||
BuildCmd.replace("<CRTAB>", "\n\t");
|
BuildCmd.replace("<CRTAB>", "\n\t");
|
||||||
|
@ -263,7 +265,15 @@ void SDCCProjectCompiler::writeMakeObjFilesRules(QFile &file)
|
||||||
// Or roll our own
|
// Or roll our own
|
||||||
} else {
|
} else {
|
||||||
if (fileType==FileType::CSource) {
|
if (fileType==FileType::CSource) {
|
||||||
|
if(mProject->options().folderForObjFiles.isEmpty()) {
|
||||||
writeln(file, "\t$(CC) $(CFLAGS) -c " + escapeArgumentForMakefileRecipe(shortFileName, false));
|
writeln(file, "\t$(CC) $(CFLAGS) -c " + escapeArgumentForMakefileRecipe(shortFileName, false));
|
||||||
|
}else{
|
||||||
|
QString fullObjDir = includeTrailingPathDelimiter(mProject->options().folderForObjFiles);
|
||||||
|
QString relativeObjDir = extractRelativePath(mProject->directory(),fullObjDir);
|
||||||
|
QString objfile=extractRelativePath(generateAbsolutePath(mProject->directory(),relativeObjDir),unit->fileName());
|
||||||
|
writeln(file, "\t$(CD) "+ localizePath(relativeObjDir)+" && $(CC) $(CFLAGS) -c " + localizePath(objfile));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1859,6 +1859,12 @@ void Editor::onStatusChanged(QSynedit::StatusChanges changes)
|
||||||
|
|
||||||
if (changes.testFlag(QSynedit::StatusChange::CaretX)
|
if (changes.testFlag(QSynedit::StatusChange::CaretX)
|
||||||
|| changes.testFlag(QSynedit::StatusChange::CaretY)) {
|
|| changes.testFlag(QSynedit::StatusChange::CaretY)) {
|
||||||
|
if (pSettings->editor().highlightMathingBraces()) {
|
||||||
|
invalidateLine(mHighlightCharPos1.line);
|
||||||
|
invalidateLine(mHighlightCharPos2.line);
|
||||||
|
}
|
||||||
|
mHighlightCharPos1 = QSynedit::BufferCoord{0,0};
|
||||||
|
mHighlightCharPos2 = QSynedit::BufferCoord{0,0};
|
||||||
if (mTabStopBegin >=0) {
|
if (mTabStopBegin >=0) {
|
||||||
if (mTabStopY==caretY()) {
|
if (mTabStopY==caretY()) {
|
||||||
if (mLineAfterTabStop.isEmpty()) {
|
if (mLineAfterTabStop.isEmpty()) {
|
||||||
|
@ -1885,10 +1891,6 @@ void Editor::onStatusChanged(QSynedit::StatusChanges changes)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (!selAvail() && pSettings->editor().highlightMathingBraces()){
|
} else if (!selAvail() && pSettings->editor().highlightMathingBraces()){
|
||||||
invalidateLine(mHighlightCharPos1.line);
|
|
||||||
invalidateLine(mHighlightCharPos2.line);
|
|
||||||
mHighlightCharPos1 = QSynedit::BufferCoord{0,0};
|
|
||||||
mHighlightCharPos2 = QSynedit::BufferCoord{0,0};
|
|
||||||
// Is there a bracket char before us?
|
// Is there a bracket char before us?
|
||||||
int lineLength = lineText().length();
|
int lineLength = lineText().length();
|
||||||
int ch = caretX() - 2;
|
int ch = caretX() - 2;
|
||||||
|
@ -2341,6 +2343,10 @@ QStringList Editor::getOwnerExpressionAndMemberAtPositionForCompletion(
|
||||||
QStringList &memberExpression)
|
QStringList &memberExpression)
|
||||||
{
|
{
|
||||||
QStringList expression = getExpressionAtPosition(pos);
|
QStringList expression = getExpressionAtPosition(pos);
|
||||||
|
// *(Deference) and &(Address-of) has low precedence than '.'/'->',
|
||||||
|
// so don't includes them in the owner expression in comletion calculation
|
||||||
|
while (!expression.isEmpty() && (expression.front()=='*' || expression.front()=='&'))
|
||||||
|
expression.pop_front();
|
||||||
return getOwnerExpressionAndMember(expression,memberOperator,memberExpression);
|
return getOwnerExpressionAndMember(expression,memberOperator,memberExpression);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -4108,8 +4108,18 @@ void CppParser::handleVar(const QString& typePrefix,bool isExtern,bool isStatic,
|
||||||
if(aliasStatement) {
|
if(aliasStatement) {
|
||||||
if (aliasStatement->typeStatement) {
|
if (aliasStatement->typeStatement) {
|
||||||
addedVar->type = aliasStatement->typeStatement->fullName;
|
addedVar->type = aliasStatement->typeStatement->fullName;
|
||||||
if (!addedVar->type.endsWith(">"))
|
if (!aliasStatement->templateParams.isEmpty()) {
|
||||||
|
if (!addedVar->type.endsWith(">")) {
|
||||||
addedVar->type += aliasStatement->templateParams;
|
addedVar->type += aliasStatement->templateParams;
|
||||||
|
} else {
|
||||||
|
QString type = addedVar->type;
|
||||||
|
int pos = type.indexOf('<');
|
||||||
|
if (pos>=0) {
|
||||||
|
type = type.left(pos);
|
||||||
|
addedVar->type = type + aliasStatement->templateParams;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
if (aliasStatement->typeStatement
|
if (aliasStatement->typeStatement
|
||||||
&& STLIterators.contains(aliasStatement->typeStatement->command)
|
&& STLIterators.contains(aliasStatement->typeStatement->command)
|
||||||
&& !aliasStatement->templateParams.isEmpty()) {
|
&& !aliasStatement->templateParams.isEmpty()) {
|
||||||
|
@ -4686,7 +4696,7 @@ PEvalStatement CppParser::doEvalExpression(const QString& fileName,
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
} else
|
} else
|
||||||
return doEvalPointerArithmetic(
|
return doEvalArithmeticOperation(
|
||||||
fileName,
|
fileName,
|
||||||
phraseExpression,
|
phraseExpression,
|
||||||
pos,
|
pos,
|
||||||
|
@ -4695,7 +4705,7 @@ PEvalStatement CppParser::doEvalExpression(const QString& fileName,
|
||||||
freeScoped);
|
freeScoped);
|
||||||
}
|
}
|
||||||
|
|
||||||
PEvalStatement CppParser::doEvalPointerArithmetic(const QString &fileName, const QStringList &phraseExpression, int &pos, const PStatement &scope, const PEvalStatement &previousResult, bool freeScoped) const
|
PEvalStatement CppParser::doEvalArithmeticOperation(const QString &fileName, const QStringList &phraseExpression, int &pos, const PStatement &scope, const PEvalStatement &previousResult, bool freeScoped) const
|
||||||
{
|
{
|
||||||
if (pos>=phraseExpression.length())
|
if (pos>=phraseExpression.length())
|
||||||
return PEvalStatement();
|
return PEvalStatement();
|
||||||
|
@ -4755,7 +4765,7 @@ PEvalStatement CppParser::doEvalPointerToMembers(
|
||||||
if (pos>=phraseExpression.length())
|
if (pos>=phraseExpression.length())
|
||||||
return PEvalStatement();
|
return PEvalStatement();
|
||||||
//find the start scope statement
|
//find the start scope statement
|
||||||
PEvalStatement currentResult = doEvalCCast(
|
PEvalStatement currentResult = doEvalTypeCast(
|
||||||
fileName,
|
fileName,
|
||||||
phraseExpression,
|
phraseExpression,
|
||||||
pos,
|
pos,
|
||||||
|
@ -4771,7 +4781,7 @@ PEvalStatement CppParser::doEvalPointerToMembers(
|
||||||
|| phraseExpression[pos]=="->*")) {
|
|| phraseExpression[pos]=="->*")) {
|
||||||
pos++;
|
pos++;
|
||||||
currentResult =
|
currentResult =
|
||||||
doEvalCCast(
|
doEvalTypeCast(
|
||||||
fileName,
|
fileName,
|
||||||
phraseExpression,
|
phraseExpression,
|
||||||
pos,
|
pos,
|
||||||
|
@ -4788,7 +4798,7 @@ PEvalStatement CppParser::doEvalPointerToMembers(
|
||||||
return currentResult;
|
return currentResult;
|
||||||
}
|
}
|
||||||
|
|
||||||
PEvalStatement CppParser::doEvalCCast(const QString &fileName,
|
PEvalStatement CppParser::doEvalTypeCast(const QString &fileName,
|
||||||
const QStringList &phraseExpression,
|
const QStringList &phraseExpression,
|
||||||
int &pos,
|
int &pos,
|
||||||
const PStatement& scope,
|
const PStatement& scope,
|
||||||
|
@ -4799,8 +4809,9 @@ PEvalStatement CppParser::doEvalCCast(const QString &fileName,
|
||||||
return PEvalStatement();
|
return PEvalStatement();
|
||||||
PEvalStatement result;
|
PEvalStatement result;
|
||||||
if (phraseExpression[pos]=="*") {
|
if (phraseExpression[pos]=="*") {
|
||||||
|
//deference
|
||||||
pos++; //skip "*"
|
pos++; //skip "*"
|
||||||
result = doEvalCCast(
|
result = doEvalTypeCast(
|
||||||
fileName,
|
fileName,
|
||||||
phraseExpression,
|
phraseExpression,
|
||||||
pos,
|
pos,
|
||||||
|
@ -4862,8 +4873,9 @@ PEvalStatement CppParser::doEvalCCast(const QString &fileName,
|
||||||
result->pointerLevel--;
|
result->pointerLevel--;
|
||||||
}
|
}
|
||||||
} else if (phraseExpression[pos]=="&") {
|
} else if (phraseExpression[pos]=="&") {
|
||||||
|
//Address-of
|
||||||
pos++; //skip "&"
|
pos++; //skip "&"
|
||||||
result = doEvalCCast(
|
result = doEvalTypeCast(
|
||||||
fileName,
|
fileName,
|
||||||
phraseExpression,
|
phraseExpression,
|
||||||
pos,
|
pos,
|
||||||
|
@ -4875,8 +4887,9 @@ PEvalStatement CppParser::doEvalCCast(const QString &fileName,
|
||||||
}
|
}
|
||||||
} else if (phraseExpression[pos]=="++"
|
} else if (phraseExpression[pos]=="++"
|
||||||
|| phraseExpression[pos]=="--") {
|
|| phraseExpression[pos]=="--") {
|
||||||
|
// Prefix increment and decrement
|
||||||
pos++; //skip "++" or "--"
|
pos++; //skip "++" or "--"
|
||||||
result = doEvalCCast(
|
result = doEvalTypeCast(
|
||||||
fileName,
|
fileName,
|
||||||
phraseExpression,
|
phraseExpression,
|
||||||
pos,
|
pos,
|
||||||
|
@ -4884,6 +4897,7 @@ PEvalStatement CppParser::doEvalCCast(const QString &fileName,
|
||||||
previousResult,
|
previousResult,
|
||||||
freeScoped);
|
freeScoped);
|
||||||
} else if (phraseExpression[pos]=="(") {
|
} else if (phraseExpression[pos]=="(") {
|
||||||
|
//Type Cast
|
||||||
//parse
|
//parse
|
||||||
int startPos = pos;
|
int startPos = pos;
|
||||||
pos++;
|
pos++;
|
||||||
|
@ -4904,7 +4918,7 @@ PEvalStatement CppParser::doEvalCCast(const QString &fileName,
|
||||||
pos++; // skip ")"
|
pos++; // skip ")"
|
||||||
// qDebug()<<"parse type cast exp";
|
// qDebug()<<"parse type cast exp";
|
||||||
//it's a type cast
|
//it's a type cast
|
||||||
result = doEvalCCast(fileName,
|
result = doEvalTypeCast(fileName,
|
||||||
phraseExpression,
|
phraseExpression,
|
||||||
pos,
|
pos,
|
||||||
scope,
|
scope,
|
||||||
|
@ -4930,11 +4944,6 @@ PEvalStatement CppParser::doEvalCCast(const QString &fileName,
|
||||||
scope,
|
scope,
|
||||||
previousResult,
|
previousResult,
|
||||||
freeScoped);
|
freeScoped);
|
||||||
// if (result) {
|
|
||||||
// qDebug()<<pos<<(int)result->kind<<result->baseType;
|
|
||||||
// } else {
|
|
||||||
// qDebug()<<"!!!!!!!!!!!not found";
|
|
||||||
// }
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4963,8 +4972,10 @@ PEvalStatement CppParser::doEvalMemberAccess(const QString &fileName,
|
||||||
if (!result)
|
if (!result)
|
||||||
break;
|
break;
|
||||||
if (phraseExpression[pos]=="++" || phraseExpression[pos]=="--") {
|
if (phraseExpression[pos]=="++" || phraseExpression[pos]=="--") {
|
||||||
|
//Suffix/postfix increment and decrement
|
||||||
pos++; //just skip it
|
pos++; //just skip it
|
||||||
} else if (phraseExpression[pos] == "(") {
|
} else if (phraseExpression[pos] == "(") {
|
||||||
|
// Function call
|
||||||
if (result->kind == EvalStatementKind::Type) {
|
if (result->kind == EvalStatementKind::Type) {
|
||||||
doSkipInExpression(phraseExpression,pos,"(",")");
|
doSkipInExpression(phraseExpression,pos,"(",")");
|
||||||
result->kind = EvalStatementKind::Variable;
|
result->kind = EvalStatementKind::Variable;
|
||||||
|
@ -5025,11 +5036,13 @@ PEvalStatement CppParser::doEvalMemberAccess(const QString &fileName,
|
||||||
result = PEvalStatement();
|
result = PEvalStatement();
|
||||||
}
|
}
|
||||||
} else if (phraseExpression[pos] == "{") {
|
} else if (phraseExpression[pos] == "{") {
|
||||||
|
// Varaible Initialization
|
||||||
if (result->kind == EvalStatementKind::Type) {
|
if (result->kind == EvalStatementKind::Type) {
|
||||||
doSkipInExpression(phraseExpression,pos,"{","}");
|
doSkipInExpression(phraseExpression,pos,"{","}");
|
||||||
result->kind = EvalStatementKind::Variable;
|
result->kind = EvalStatementKind::Variable;
|
||||||
}
|
}
|
||||||
} else if (phraseExpression[pos] == "[") {
|
} else if (phraseExpression[pos] == "[") {
|
||||||
|
//Array subscripting
|
||||||
//skip to "]"
|
//skip to "]"
|
||||||
doSkipInExpression(phraseExpression,pos,"[","]");
|
doSkipInExpression(phraseExpression,pos,"[","]");
|
||||||
if (result->kind == EvalStatementKind::Type) {
|
if (result->kind == EvalStatementKind::Type) {
|
||||||
|
@ -5079,6 +5092,7 @@ PEvalStatement CppParser::doEvalMemberAccess(const QString &fileName,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (phraseExpression[pos] == ".") {
|
} else if (phraseExpression[pos] == ".") {
|
||||||
|
//Structure and union member access
|
||||||
pos++;
|
pos++;
|
||||||
lastResult = result;
|
lastResult = result;
|
||||||
result = doEvalScopeResolution(
|
result = doEvalScopeResolution(
|
||||||
|
@ -5089,6 +5103,7 @@ PEvalStatement CppParser::doEvalMemberAccess(const QString &fileName,
|
||||||
result,
|
result,
|
||||||
false);
|
false);
|
||||||
} else if (phraseExpression[pos] == "->") {
|
} else if (phraseExpression[pos] == "->") {
|
||||||
|
// Structure and union member access through pointer
|
||||||
pos++;
|
pos++;
|
||||||
if (result->pointerLevel==0) {
|
if (result->pointerLevel==0) {
|
||||||
// iterator
|
// iterator
|
||||||
|
@ -5374,13 +5389,17 @@ PEvalStatement CppParser::doEvalTerm(const QString &fileName,
|
||||||
pos++;
|
pos++;
|
||||||
}
|
}
|
||||||
result->pointerLevel = pointerLevel;
|
result->pointerLevel = pointerLevel;
|
||||||
|
} else if (result && result->kind == EvalStatementKind::Function
|
||||||
|
&& pos<phraseExpression.length()
|
||||||
|
&& phraseExpression[pos]=='<') {
|
||||||
|
result->templateParams = "";
|
||||||
|
int oldPos = pos;
|
||||||
|
doSkipInExpression(phraseExpression,pos,"<",">");
|
||||||
|
for(int i=oldPos;i<pos;i++) {
|
||||||
|
result->templateParams+=phraseExpression[i];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// qDebug()<<pos<<" term end";
|
|
||||||
// if (!result) {
|
|
||||||
// qDebug()<<"not found !!!!";
|
|
||||||
// }
|
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5693,10 +5712,13 @@ PEvalStatement CppParser::doCreateEvalFunction(
|
||||||
int pointerLevel=0;
|
int pointerLevel=0;
|
||||||
QString templateParams;
|
QString templateParams;
|
||||||
PStatement typeStatement;
|
PStatement typeStatement;
|
||||||
|
QString type = funcStatement->type;
|
||||||
|
if (funcStatement->fullName == "std::make_unique")
|
||||||
|
type = "unique_ptr";
|
||||||
PStatement effetiveTypeStatement = doParseEvalTypeInfo(
|
PStatement effetiveTypeStatement = doParseEvalTypeInfo(
|
||||||
fileName,
|
fileName,
|
||||||
funcStatement->parentScope.lock(),
|
funcStatement->parentScope.lock(),
|
||||||
funcStatement->type,
|
type,
|
||||||
baseType,
|
baseType,
|
||||||
typeStatement,
|
typeStatement,
|
||||||
pointerLevel,
|
pointerLevel,
|
||||||
|
@ -5799,6 +5821,8 @@ PStatement CppParser::doParseEvalTypeInfo(
|
||||||
templateLevel++;
|
templateLevel++;
|
||||||
} else if (token == ">") {
|
} else if (token == ">") {
|
||||||
templateLevel--;
|
templateLevel--;
|
||||||
|
} else if (token == ">>") {
|
||||||
|
templateLevel-=2;
|
||||||
}
|
}
|
||||||
templateParams += token;
|
templateParams += token;
|
||||||
}
|
}
|
||||||
|
@ -6587,9 +6611,18 @@ QStringList CppParser::splitExpression(const QString &expr)
|
||||||
for(int i=0;i<lines.length();i++) {
|
for(int i=0;i<lines.length();i++) {
|
||||||
syntaxer.setLine(lines[i],i+1);
|
syntaxer.setLine(lines[i],i+1);
|
||||||
while(!syntaxer.eol()) {
|
while(!syntaxer.eol()) {
|
||||||
if (syntaxer.getTokenAttribute()->tokenType()!=QSynedit::TokenType::Comment
|
QSynedit::TokenType tokenType = syntaxer.getTokenAttribute()->tokenType();
|
||||||
&& syntaxer.getTokenAttribute()->tokenType()!=QSynedit::TokenType::Space)
|
QString token = syntaxer.getToken();
|
||||||
result.append(syntaxer.getToken());
|
if (tokenType == QSynedit::TokenType::Operator) {
|
||||||
|
if ( token == ">>" ) {
|
||||||
|
result.append(">");
|
||||||
|
result.append(">");
|
||||||
|
} else {
|
||||||
|
result.append(token);
|
||||||
|
}
|
||||||
|
} else if (tokenType!=QSynedit::TokenType::Comment
|
||||||
|
&& tokenType!=QSynedit::TokenType::Space)
|
||||||
|
result.append(token);
|
||||||
syntaxer.next();
|
syntaxer.next();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -325,13 +325,15 @@ private:
|
||||||
bool freeScoped,
|
bool freeScoped,
|
||||||
bool expandMacros) const;
|
bool expandMacros) const;
|
||||||
|
|
||||||
PEvalStatement doEvalPointerArithmetic(
|
/* add + / minus - */
|
||||||
|
PEvalStatement doEvalArithmeticOperation(
|
||||||
const QString& fileName,
|
const QString& fileName,
|
||||||
const QStringList& phraseExpression,
|
const QStringList& phraseExpression,
|
||||||
int &pos,
|
int &pos,
|
||||||
const PStatement& scope,
|
const PStatement& scope,
|
||||||
const PEvalStatement& previousResult,
|
const PEvalStatement& previousResult,
|
||||||
bool freeScoped) const;
|
bool freeScoped) const;
|
||||||
|
/* Pointer to members .* / ->* */
|
||||||
PEvalStatement doEvalPointerToMembers(
|
PEvalStatement doEvalPointerToMembers(
|
||||||
const QString& fileName,
|
const QString& fileName,
|
||||||
const QStringList& phraseExpression,
|
const QStringList& phraseExpression,
|
||||||
|
@ -339,13 +341,19 @@ private:
|
||||||
const PStatement& scope,
|
const PStatement& scope,
|
||||||
const PEvalStatement& previousResult,
|
const PEvalStatement& previousResult,
|
||||||
bool freeScoped) const;
|
bool freeScoped) const;
|
||||||
PEvalStatement doEvalCCast(
|
|
||||||
|
/*
|
||||||
|
* Dereference * / Address-of & / Type Cast / Prefix increment and decrement
|
||||||
|
* */
|
||||||
|
PEvalStatement doEvalTypeCast(
|
||||||
const QString& fileName,
|
const QString& fileName,
|
||||||
const QStringList& phraseExpression,
|
const QStringList& phraseExpression,
|
||||||
int &pos,
|
int &pos,
|
||||||
const PStatement& scope,
|
const PStatement& scope,
|
||||||
const PEvalStatement& previousResult,
|
const PEvalStatement& previousResult,
|
||||||
bool freeScoped) const;
|
bool freeScoped) const;
|
||||||
|
|
||||||
|
|
||||||
PEvalStatement doEvalMemberAccess(
|
PEvalStatement doEvalMemberAccess(
|
||||||
const QString& fileName,
|
const QString& fileName,
|
||||||
const QStringList& phraseExpression,
|
const QStringList& phraseExpression,
|
||||||
|
|
|
@ -45,7 +45,7 @@ function main()
|
||||||
PaletteButtonDisabled = "#efefef",
|
PaletteButtonDisabled = "#efefef",
|
||||||
PaletteButtonTextDisabled = "#bebebe",
|
PaletteButtonTextDisabled = "#bebebe",
|
||||||
PaletteHighlight = "#688DB2",
|
PaletteHighlight = "#688DB2",
|
||||||
PaletteHighlightedText = "#000000",
|
PaletteHighlightedText = "#ffffff",
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
|
@ -44,10 +44,10 @@ void ProjectCompilerWidget::refreshOptions()
|
||||||
|
|
||||||
ui->tabOptions->resetUI(pSet,mOptions);
|
ui->tabOptions->resetUI(pSet,mOptions);
|
||||||
|
|
||||||
ui->chkStaticLink->setChecked(pSet->staticLink());
|
ui->chkStaticLink->setChecked(mStaticLink);
|
||||||
ui->chkAddCharset->setChecked(pSet->autoAddCharsetParams());
|
ui->chkAddCharset->setChecked(mAddCharset);
|
||||||
|
|
||||||
QByteArray execEncoding = pMainWindow->project()->options().execEncoding;
|
QByteArray execEncoding = mExecCharset;
|
||||||
if (execEncoding == ENCODING_AUTO_DETECT
|
if (execEncoding == ENCODING_AUTO_DETECT
|
||||||
|| execEncoding == ENCODING_SYSTEM_DEFAULT
|
|| execEncoding == ENCODING_SYSTEM_DEFAULT
|
||||||
|| execEncoding == ENCODING_UTF8) {
|
|| execEncoding == ENCODING_UTF8) {
|
||||||
|
@ -75,11 +75,12 @@ void ProjectCompilerWidget::doLoad()
|
||||||
Settings::PCompilerSet pSet = pSettings->compilerSets().getSet(ui->cbCompilerSet->currentIndex());
|
Settings::PCompilerSet pSet = pSettings->compilerSets().getSet(ui->cbCompilerSet->currentIndex());
|
||||||
if (mOptions.isEmpty() && pSet)
|
if (mOptions.isEmpty() && pSet)
|
||||||
mOptions = pSet->compileOptions();
|
mOptions = pSet->compileOptions();
|
||||||
|
mStaticLink = pMainWindow->project()->options().staticLink;
|
||||||
|
mAddCharset = pMainWindow->project()->options().addCharset;
|
||||||
|
mExecCharset = pMainWindow->project()->options().execEncoding;
|
||||||
ui->cbCompilerSet->blockSignals(true);
|
ui->cbCompilerSet->blockSignals(true);
|
||||||
ui->cbCompilerSet->setCurrentIndex(pMainWindow->project()->options().compilerSet);
|
ui->cbCompilerSet->setCurrentIndex(pMainWindow->project()->options().compilerSet);
|
||||||
ui->cbCompilerSet->blockSignals(false);
|
ui->cbCompilerSet->blockSignals(false);
|
||||||
ui->chkAddCharset->setChecked(pMainWindow->project()->options().addCharset);
|
|
||||||
ui->chkStaticLink->setChecked(pMainWindow->project()->options().staticLink);
|
|
||||||
refreshOptions();
|
refreshOptions();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -99,6 +100,10 @@ void ProjectCompilerWidget::doSave()
|
||||||
} else {
|
} else {
|
||||||
pMainWindow->project()->options().execEncoding = ui->cbEncoding->currentData().toString().toLocal8Bit();
|
pMainWindow->project()->options().execEncoding = ui->cbEncoding->currentData().toString().toLocal8Bit();
|
||||||
}
|
}
|
||||||
|
mOptions = pMainWindow->project()->options().compilerOptions;
|
||||||
|
mStaticLink = pMainWindow->project()->options().staticLink;
|
||||||
|
mAddCharset = pMainWindow->project()->options().addCharset;
|
||||||
|
mExecCharset = pMainWindow->project()->options().execEncoding;
|
||||||
pMainWindow->project()->saveOptions();
|
pMainWindow->project()->saveOptions();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -169,6 +174,10 @@ void ProjectCompilerWidget::on_cbCompilerSet_currentIndexChanged(int index)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
mOptions = pSet->compileOptions();
|
mOptions = pSet->compileOptions();
|
||||||
|
mStaticLink = pSet->staticLink();
|
||||||
|
mAddCharset = pSet->autoAddCharsetParams();
|
||||||
|
mExecCharset = pSet->execCharset().toUtf8();
|
||||||
|
|
||||||
setSettingsChanged();
|
setSettingsChanged();
|
||||||
//project->saveOptions();
|
//project->saveOptions();
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,6 +37,9 @@ private:
|
||||||
private:
|
private:
|
||||||
Ui::ProjectCompilerWidget *ui;
|
Ui::ProjectCompilerWidget *ui;
|
||||||
QMap<QString,QString> mOptions;
|
QMap<QString,QString> mOptions;
|
||||||
|
bool mStaticLink;
|
||||||
|
bool mAddCharset;
|
||||||
|
QByteArray mExecCharset;
|
||||||
|
|
||||||
// SettingsWidget interface
|
// SettingsWidget interface
|
||||||
protected:
|
protected:
|
||||||
|
|
|
@ -30,6 +30,7 @@
|
||||||
#define MAKE_PROGRAM "mingw32-make.exe"
|
#define MAKE_PROGRAM "mingw32-make.exe"
|
||||||
#define WINDRES_PROGRAM "windres.exe"
|
#define WINDRES_PROGRAM "windres.exe"
|
||||||
#define CLEAN_PROGRAM "del /q /f"
|
#define CLEAN_PROGRAM "del /q /f"
|
||||||
|
#define CD_PROGRAM "cd /d"
|
||||||
#define CPP_PROGRAM "cpp.exe"
|
#define CPP_PROGRAM "cpp.exe"
|
||||||
#define GIT_PROGRAM "git.exe"
|
#define GIT_PROGRAM "git.exe"
|
||||||
#define CLANG_PROGRAM "clang.exe"
|
#define CLANG_PROGRAM "clang.exe"
|
||||||
|
@ -50,6 +51,7 @@
|
||||||
#define WINDRES_PROGRAM ""
|
#define WINDRES_PROGRAM ""
|
||||||
#define GPROF_PROGRAM "gprof"
|
#define GPROF_PROGRAM "gprof"
|
||||||
#define CLEAN_PROGRAM "rm -rf"
|
#define CLEAN_PROGRAM "rm -rf"
|
||||||
|
#define CD_PROGRAM "cd"
|
||||||
#define CPP_PROGRAM "cpp"
|
#define CPP_PROGRAM "cpp"
|
||||||
#define GIT_PROGRAM "git"
|
#define GIT_PROGRAM "git"
|
||||||
#define CLANG_PROGRAM "clang"
|
#define CLANG_PROGRAM "clang"
|
||||||
|
|
|
@ -1125,7 +1125,6 @@ void QSynEditPainter::paintLines()
|
||||||
if (mIsCurrentLine && mEdit->mInputPreeditString.length()>0) {
|
if (mIsCurrentLine && mEdit->mInputPreeditString.length()>0) {
|
||||||
int startPos = mEdit->mSyntaxer->getTokenPos()+1;
|
int startPos = mEdit->mSyntaxer->getTokenPos()+1;
|
||||||
int endPos = mEdit->mSyntaxer->getTokenPos() + sToken.length();
|
int endPos = mEdit->mSyntaxer->getTokenPos() + sToken.length();
|
||||||
//qDebug()<<startPos<<":"<<endPos<<" - "+sToken+" - "<<edit->mCaretX<<":"<<edit->mCaretX+edit->mInputPreeditString.length();
|
|
||||||
if (!(endPos < mEdit->mCaretX
|
if (!(endPos < mEdit->mCaretX
|
||||||
|| startPos >= mEdit->mCaretX+mEdit->mInputPreeditString.length())) {
|
|| startPos >= mEdit->mCaretX+mEdit->mInputPreeditString.length())) {
|
||||||
if (!preeditAttr) {
|
if (!preeditAttr) {
|
||||||
|
@ -1200,7 +1199,7 @@ void QSynEditPainter::paintLines()
|
||||||
glyphStartCharList,
|
glyphStartCharList,
|
||||||
oldLen,
|
oldLen,
|
||||||
sLine.length(),
|
sLine.length(),
|
||||||
calculateGlyphPositions,
|
true,
|
||||||
glyphStartPositionsList,
|
glyphStartPositionsList,
|
||||||
tokenWidth);
|
tokenWidth);
|
||||||
tokenLeft += tokenWidth;
|
tokenLeft += tokenWidth;
|
||||||
|
|
|
@ -5380,11 +5380,6 @@ int QSynEdit::doInsertTextByNormalMode(const BufferCoord& pos, const QStringList
|
||||||
sLeftSide += QString(pos.ch - 1 - sLeftSide.length(),' ');
|
sLeftSide += QString(pos.ch - 1 - sLeftSide.length(),' ');
|
||||||
}
|
}
|
||||||
sRightSide = line.mid(pos.ch - 1);
|
sRightSide = line.mid(pos.ch - 1);
|
||||||
// if (mUndoing) {
|
|
||||||
// SpaceCount = 0;
|
|
||||||
// } else {
|
|
||||||
// SpaceCount = leftSpaces(sLeftSide);
|
|
||||||
// }
|
|
||||||
int caretY=pos.line;
|
int caretY=pos.line;
|
||||||
// step1: insert the first line of Value into current line
|
// step1: insert the first line of Value into current line
|
||||||
if (text.length()>1) {
|
if (text.length()>1) {
|
||||||
|
@ -5406,14 +5401,7 @@ int QSynEdit::doInsertTextByNormalMode(const BufferCoord& pos, const QStringList
|
||||||
// step2: insert remaining lines of Value
|
// step2: insert remaining lines of Value
|
||||||
for (int i=1;i<text.length();i++) {
|
for (int i=1;i<text.length();i++) {
|
||||||
bool notInComment = true;
|
bool notInComment = true;
|
||||||
// if (mHighlighter) {
|
|
||||||
// notInComment = !mHighlighter->isCommentNotFinished(
|
|
||||||
// mHighlighter->getRangeState().state)
|
|
||||||
// && !mHighlighter->isStringNotFinished(
|
|
||||||
// mHighlighter->getRangeState().state);
|
|
||||||
// }
|
|
||||||
caretY=pos.line+i;
|
caretY=pos.line+i;
|
||||||
// mStatusChanges.setFlag(SynStatusChange::scCaretY);
|
|
||||||
if (text[i].isEmpty()) {
|
if (text[i].isEmpty()) {
|
||||||
if (i==text.length()-1) {
|
if (i==text.length()-1) {
|
||||||
str = sRightSide;
|
str = sRightSide;
|
||||||
|
|
|
@ -449,30 +449,26 @@ public:
|
||||||
void setBackgroundColor(const QColor &newBackgroundColor);
|
void setBackgroundColor(const QColor &newBackgroundColor);
|
||||||
|
|
||||||
bool isEmpty();
|
bool isEmpty();
|
||||||
|
|
||||||
|
int mouseSelectionScrollSpeed() const;
|
||||||
|
void setMouseSelectionScrollSpeed(int newMouseSelectionScrollSpeed);
|
||||||
|
|
||||||
|
ScrollStyle scrollBars() const;
|
||||||
|
void setScrollBars(ScrollStyle newScrollBars);
|
||||||
|
|
||||||
|
double lineSpacingFactor() const;
|
||||||
|
void setLineSpacingFactor(double newLineSpacingFactor);
|
||||||
|
|
||||||
|
const QDateTime &lastModifyTime() const;
|
||||||
|
|
||||||
|
const PFormatter &formatter() const;
|
||||||
|
void setFormatter(const PFormatter &newFormatter);
|
||||||
signals:
|
signals:
|
||||||
void linesDeleted(int FirstLine, int Count);
|
void linesDeleted(int FirstLine, int Count);
|
||||||
void linesInserted(int FirstLine, int Count);
|
void linesInserted(int FirstLine, int Count);
|
||||||
|
|
||||||
void changed();
|
void changed();
|
||||||
|
|
||||||
// void chainUndoAdded();
|
|
||||||
// void chainRedoAdded();
|
|
||||||
// void chainLinesChanging();
|
|
||||||
// void chainLinesChanged();
|
|
||||||
// void chainListCleared();
|
|
||||||
|
|
||||||
// void chainListDeleted(int Index, int Count);
|
|
||||||
// void chainListInserted(int Index, int Count);
|
|
||||||
// void chainListPutted(int Index, int Count);
|
|
||||||
|
|
||||||
// void filesDropped(int X,int Y, const QStringList& AFiles);
|
|
||||||
void gutterClicked(Qt::MouseButton button, int x, int y, int line);
|
void gutterClicked(Qt::MouseButton button, int x, int y, int line);
|
||||||
// void imeInputed(const QString& s);
|
|
||||||
|
|
||||||
// void contextHelp(const QString& word);
|
|
||||||
|
|
||||||
void statusChanged(StatusChanges changes);
|
void statusChanged(StatusChanges changes);
|
||||||
|
|
||||||
void fontChanged();
|
void fontChanged();
|
||||||
void tabSizeChanged();
|
void tabSizeChanged();
|
||||||
protected:
|
protected:
|
||||||
|
@ -727,11 +723,6 @@ private:
|
||||||
StatusChanges mStatusChanges;
|
StatusChanges mStatusChanges;
|
||||||
int mLastKey;
|
int mLastKey;
|
||||||
Qt::KeyboardModifiers mLastKeyModifiers;
|
Qt::KeyboardModifiers mLastKeyModifiers;
|
||||||
//fSearchEngine: TSynEditSearchCustom;
|
|
||||||
//fHookedCommandHandlers: TList;
|
|
||||||
//fKbdHandler: TSynEditKbdHandler;
|
|
||||||
// fFocusList: TList;
|
|
||||||
// fPlugins: TList;
|
|
||||||
QTimer* mScrollTimer;
|
QTimer* mScrollTimer;
|
||||||
|
|
||||||
PSynEdit fChainedEditor;
|
PSynEdit fChainedEditor;
|
||||||
|
@ -740,20 +731,7 @@ private:
|
||||||
bool mIsScrolling;
|
bool mIsScrolling;
|
||||||
int mOptionLock; // lock counter to prevent recalculate glyph widths while change settings;
|
int mOptionLock; // lock counter to prevent recalculate glyph widths while change settings;
|
||||||
bool mUndoing;
|
bool mUndoing;
|
||||||
// event handlers
|
|
||||||
// ProcessCommandProc mOnCommandProcessed;
|
|
||||||
// MouseCursorProc mOnMouseCursor;
|
|
||||||
// PaintProc mOnPaint;
|
|
||||||
// SynPreparePaintHighlightTokenProc mOnPaintHighlightToken;
|
|
||||||
// ProcessCommandProc mOnProcessingCommand;
|
|
||||||
// ProcessCommandProc mOnProcessingUserCommand;
|
|
||||||
|
|
||||||
// SynSpecialLineColorsProc mOnSpecialLineColors;
|
|
||||||
// SynEditingAreasProc mOnEditingAreas;
|
|
||||||
// SynGutterGetTextProc mOnGutterGetText;
|
|
||||||
// SynTGutterPaintProc mOnGutterPaint;
|
|
||||||
int mGutterWidth;
|
int mGutterWidth;
|
||||||
|
|
||||||
//caret blink related
|
//caret blink related
|
||||||
int m_blinkTimerId;
|
int m_blinkTimerId;
|
||||||
int m_blinkStatus;
|
int m_blinkStatus;
|
||||||
|
@ -799,23 +777,9 @@ protected:
|
||||||
bool viewportEvent(QEvent * event) override;
|
bool viewportEvent(QEvent * event) override;
|
||||||
|
|
||||||
// QWidget interface
|
// QWidget interface
|
||||||
public:
|
public:
|
||||||
QVariant inputMethodQuery(Qt::InputMethodQuery property) const override;
|
QVariant inputMethodQuery(Qt::InputMethodQuery property) const override;
|
||||||
|
|
||||||
int mouseSelectionScrollSpeed() const;
|
|
||||||
void setMouseSelectionScrollSpeed(int newMouseSelectionScrollSpeed);
|
|
||||||
|
|
||||||
ScrollStyle scrollBars() const;
|
|
||||||
void setScrollBars(ScrollStyle newScrollBars);
|
|
||||||
|
|
||||||
double lineSpacingFactor() const;
|
|
||||||
void setLineSpacingFactor(double newLineSpacingFactor);
|
|
||||||
|
|
||||||
const QDateTime &lastModifyTime() const;
|
|
||||||
|
|
||||||
const PFormatter &formatter() const;
|
|
||||||
void setFormatter(const PFormatter &newFormatter);
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void dragEnterEvent(QDragEnterEvent *event) override;
|
void dragEnterEvent(QDragEnterEvent *event) override;
|
||||||
void dropEvent(QDropEvent *event) override;
|
void dropEvent(QDropEvent *event) override;
|
||||||
|
|
|
@ -7,7 +7,7 @@ arch=('i686' 'pentium4' 'x86_64' 'arm' 'armv6h' 'armv7h' 'aarch64' 'riscv64')
|
||||||
url="https://github.com/royqh1979/$_pkgname"
|
url="https://github.com/royqh1979/$_pkgname"
|
||||||
license=('GPL3')
|
license=('GPL3')
|
||||||
depends=(qt5-base qt5-svg gcc gdb)
|
depends=(qt5-base qt5-svg gcc gdb)
|
||||||
makedepends=(qt5-tools)
|
makedepends=(qt5-tools imagemagick librsvg)
|
||||||
optdepends=(
|
optdepends=(
|
||||||
'clang: C/C++ compiler (alternative)'
|
'clang: C/C++ compiler (alternative)'
|
||||||
)
|
)
|
||||||
|
@ -42,4 +42,13 @@ package() {
|
||||||
|
|
||||||
cd redpanda-build
|
cd redpanda-build
|
||||||
make INSTALL_ROOT="$pkgdir" install
|
make INSTALL_ROOT="$pkgdir" install
|
||||||
|
|
||||||
|
for size in 16 22 24 32 36 48 64 72 96 128 192 256 512; do
|
||||||
|
mkdir -p "$pkgdir/usr/share/icons/hicolor/${size}x${size}/apps"
|
||||||
|
magick convert \
|
||||||
|
-background none \
|
||||||
|
"$pkgdir/usr/share/icons/hicolor/scalable/apps/redpandaide.svg" \
|
||||||
|
-resize ${size}x${size} \
|
||||||
|
"$pkgdir/usr/share/icons/hicolor/${size}x${size}/apps/redpandaide.png"
|
||||||
|
done
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,9 +12,11 @@ cd $DEBIAN_DIR
|
||||||
pwd
|
pwd
|
||||||
oldver=`head changelog -n 1 | sed -r 's/^redpanda-cpp\s\((.*)-(.*)\)\s.*$/\1/g'`
|
oldver=`head changelog -n 1 | sed -r 's/^redpanda-cpp\s\((.*)-(.*)\)\s.*$/\1/g'`
|
||||||
count=`head changelog -n 1 | sed -r 's/^redpanda-cpp\s\((.*)-(.*)\)\s.*$/\2/g'`
|
count=`head changelog -n 1 | sed -r 's/^redpanda-cpp\s\((.*)-(.*)\)\s.*$/\2/g'`
|
||||||
echo $oldver
|
echo "Old version: $oldver"
|
||||||
|
|
||||||
|
|
||||||
if [ "$oldver" != "$ver" ]; then
|
if [ "$oldver" != "$ver" ]; then
|
||||||
|
echo "Upgrade to $ver"
|
||||||
tmpfile=$(mktemp)
|
tmpfile=$(mktemp)
|
||||||
now=`date -R`
|
now=`date -R`
|
||||||
echo "redpanda-cpp ($ver-1) unstable; urgency=medium" >> $tmpfile
|
echo "redpanda-cpp ($ver-1) unstable; urgency=medium" >> $tmpfile
|
||||||
|
|
|
@ -131,8 +131,8 @@ Section "$(SectionMainName)" SectionMain
|
||||||
!endif
|
!endif
|
||||||
|
|
||||||
; Write required paths
|
; Write required paths
|
||||||
SetOutPath $INSTDIR\Templates
|
SetOutPath $INSTDIR\templates
|
||||||
File /nonfatal /r "Templates\*"
|
File /nonfatal /r "templates\*"
|
||||||
|
|
||||||
SectionEnd
|
SectionEnd
|
||||||
|
|
||||||
|
@ -440,8 +440,7 @@ Section "Uninstall"
|
||||||
Delete "$INSTDIR\OpenConsole.exe"
|
Delete "$INSTDIR\OpenConsole.exe"
|
||||||
Delete "$INSTDIR\compiler_hint.lua"
|
Delete "$INSTDIR\compiler_hint.lua"
|
||||||
|
|
||||||
RMDir /r "$INSTDIR\Lang"
|
RMDir /r "$INSTDIR\templates"
|
||||||
RMDir /r "$INSTDIR\Templates"
|
|
||||||
RMDir /r "$INSTDIR\mingw32"
|
RMDir /r "$INSTDIR\mingw32"
|
||||||
RMDir /r "$INSTDIR\mingw64"
|
RMDir /r "$INSTDIR\mingw64"
|
||||||
RMDir /r "$INSTDIR\llvm-mingw"
|
RMDir /r "$INSTDIR\llvm-mingw"
|
||||||
|
|
Loading…
Reference in New Issue