- enhancement: add project templates for tcp server / tcp client
- enhancement: only show function tips when cursor is after ',' or '('. - enhancement: when auto complete function names, only append '(' if before identifier or "/'
This commit is contained in:
parent
331365b0c7
commit
a64bbd0d4b
4
NEWS.md
4
NEWS.md
|
@ -6,6 +6,10 @@ Red Panda C++ Version 1.0.5
|
||||||
- enhancement: add project template for libmysqlclient(libmariadbclient)
|
- enhancement: add project template for libmysqlclient(libmariadbclient)
|
||||||
- enhancement: add libmysqlclient to the x86-64 version gcc in distribution
|
- enhancement: add libmysqlclient to the x86-64 version gcc in distribution
|
||||||
- enhancement: select and delete multiple watches
|
- enhancement: select and delete multiple watches
|
||||||
|
- enhancement: add project templates for tcp server / tcp client
|
||||||
|
- enhancement: only show function tips when cursor is after ',' or '('.
|
||||||
|
- enhancement: when auto complete function names, only append '(' if before identifier or "/'
|
||||||
|
- update highconstrast icon set
|
||||||
|
|
||||||
Red Panda C++ Version 1.0.4
|
Red Panda C++ Version 1.0.4
|
||||||
- fix: hide function tips, when move or resize the main window
|
- fix: hide function tips, when move or resize the main window
|
||||||
|
|
|
@ -809,8 +809,9 @@ void Editor::keyPressEvent(QKeyEvent *event)
|
||||||
handled = handleSymbolCompletion(ch);
|
handled = handleSymbolCompletion(ch);
|
||||||
return;
|
return;
|
||||||
case '(': {
|
case '(': {
|
||||||
QChar nextCh = nextNotspaceChar(caretY()-1,caretX()-1);
|
QChar nextCh = nextNonSpaceChar(caretY()-1,caretX()-1);
|
||||||
if (!isIdentChar(nextCh) && nextCh!='(' ){
|
if (!isIdentChar(nextCh) && nextCh!='('
|
||||||
|
&& nextCh!='"' && nextCh!='\'' ){
|
||||||
handled = handleSymbolCompletion(ch);
|
handled = handleSymbolCompletion(ch);
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
|
@ -3080,10 +3081,14 @@ void Editor::completionInsert(bool appendFunc)
|
||||||
||
|
||
|
||||||
(statement->kind == StatementKind::skPreprocessor
|
(statement->kind == StatementKind::skPreprocessor
|
||||||
&& !statement->args.isEmpty())) {
|
&& !statement->args.isEmpty())) {
|
||||||
if ((p.Char >= lineText().length()) // it's the last char on line
|
QChar nextCh = nextNonSpaceChar(caretY()-1,p.Char-1);
|
||||||
|| (lineText().at(p.Char-1) != '(')) { // it don't have '(' after it
|
if (nextCh=='(') {
|
||||||
if (statement->fullName!="std::endl")
|
funcAddOn = "";
|
||||||
funcAddOn = "()";
|
} else if (isIdentChar(nextCh) || nextCh == '"'
|
||||||
|
|| nextCh == '\'') {
|
||||||
|
funcAddOn = '(';
|
||||||
|
} else {
|
||||||
|
funcAddOn = "()";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3476,6 +3481,11 @@ void Editor::updateFunctionTip(bool showTip)
|
||||||
int currentParamPos = 1;
|
int currentParamPos = 1;
|
||||||
if (currentLine>=document()->count())
|
if (currentLine>=document()->count())
|
||||||
return;
|
return;
|
||||||
|
QChar ch=lastNonSpaceChar(currentLine,currentChar);
|
||||||
|
qDebug()<<ch;
|
||||||
|
if (ch!="(" && ch!=",")
|
||||||
|
return;
|
||||||
|
|
||||||
while (currentLine>=0) {
|
while (currentLine>=0) {
|
||||||
QString line = document()->getString(currentLine);
|
QString line = document()->getString(currentLine);
|
||||||
if (currentLine!=caretPos.Line-1)
|
if (currentLine!=caretPos.Line-1)
|
||||||
|
|
|
@ -1093,7 +1093,7 @@ QChar SynEdit::charAt(const BufferCoord &pos)
|
||||||
return QChar(0);
|
return QChar(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
QChar SynEdit::nextNotspaceChar(int line, int ch)
|
QChar SynEdit::nextNonSpaceChar(int line, int ch)
|
||||||
{
|
{
|
||||||
if (ch<0)
|
if (ch<0)
|
||||||
return QChar();
|
return QChar();
|
||||||
|
@ -1110,6 +1110,28 @@ QChar SynEdit::nextNotspaceChar(int line, int ch)
|
||||||
return QChar();
|
return QChar();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QChar SynEdit::lastNonSpaceChar(int line, int ch)
|
||||||
|
{
|
||||||
|
if (line>=mDocument->count())
|
||||||
|
return QChar();
|
||||||
|
QString s = mDocument->getString(line);
|
||||||
|
int x = std::min(ch-1,s.length()-1);
|
||||||
|
while (line>=0) {
|
||||||
|
while (x>=0) {
|
||||||
|
QChar c = s[x];
|
||||||
|
if (!c.isSpace())
|
||||||
|
return c;
|
||||||
|
x--;
|
||||||
|
}
|
||||||
|
line--;
|
||||||
|
if (line>=0) {
|
||||||
|
s = mDocument->getString(line);
|
||||||
|
x = s.length()-1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return QChar();
|
||||||
|
}
|
||||||
|
|
||||||
void SynEdit::setCaretAndSelection(const BufferCoord &ptCaret, const BufferCoord &ptBefore, const BufferCoord &ptAfter)
|
void SynEdit::setCaretAndSelection(const BufferCoord &ptCaret, const BufferCoord &ptBefore, const BufferCoord &ptAfter)
|
||||||
{
|
{
|
||||||
SynSelectionMode vOldMode = mActiveSelectionMode;
|
SynSelectionMode vOldMode = mActiveSelectionMode;
|
||||||
|
|
|
@ -215,7 +215,8 @@ public:
|
||||||
QString wordAtRowCol(const BufferCoord& XY);
|
QString wordAtRowCol(const BufferCoord& XY);
|
||||||
|
|
||||||
QChar charAt(const BufferCoord& pos);
|
QChar charAt(const BufferCoord& pos);
|
||||||
QChar nextNotspaceChar(int line, int ch);
|
QChar nextNonSpaceChar(int line, int ch);
|
||||||
|
QChar lastNonSpaceChar(int line, int ch);
|
||||||
int charColumns(QChar ch) const;
|
int charColumns(QChar ch) const;
|
||||||
|
|
||||||
bool isPointInSelection(const BufferCoord& Value) const;
|
bool isPointInSelection(const BufferCoord& Value) const;
|
||||||
|
|
Loading…
Reference in New Issue