fix #313 : Caret on '(' / ',' in string/comment/char may invoke function tips.
This commit is contained in:
parent
496cfd1337
commit
730bed9587
|
@ -4203,10 +4203,25 @@ 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);
|
QChar ch=lastNonSpaceChar(currentLine,currentChar);
|
||||||
if (ch!="(" && ch!=",")
|
if (ch!="(" && ch!=",")
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
QSynedit::PTokenAttribute attr;
|
||||||
|
QString token;
|
||||||
|
QSynedit::SyntaxState syntaxState;
|
||||||
|
QSynedit::BufferCoord pos = caretPos;
|
||||||
|
pos.ch--;
|
||||||
|
if (getTokenAttriAtRowCol(pos, token, attr, syntaxState)) {
|
||||||
|
if (syntaxer()->isStringNotFinished(syntaxState.state))
|
||||||
|
return;
|
||||||
|
if (syntaxer()->isCommentNotFinished(syntaxState.state))
|
||||||
|
return;
|
||||||
|
if (attr->tokenType() == QSynedit::TokenType::Character)
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
while (currentLine>=0) {
|
while (currentLine>=0) {
|
||||||
QString line = document()->getLine(currentLine);
|
QString line = document()->getLine(currentLine);
|
||||||
if (currentLine!=caretPos.line-1)
|
if (currentLine!=caretPos.line-1)
|
||||||
|
@ -4225,14 +4240,7 @@ void Editor::updateFunctionTip(bool showTip)
|
||||||
QSynedit::PTokenAttribute attr = syntaxer()->getTokenAttribute();
|
QSynedit::PTokenAttribute attr = syntaxer()->getTokenAttribute();
|
||||||
if (start>=currentChar)
|
if (start>=currentChar)
|
||||||
break;
|
break;
|
||||||
if (
|
|
||||||
(attr->tokenType() == QSynedit::TokenType::Comment
|
|
||||||
|| attr->tokenType() == QSynedit::TokenType::String
|
|
||||||
)
|
|
||||||
&& currentLine == caretPos.line-1 && start<caretPos.ch-1
|
|
||||||
&& start+token.length()>=caretPos.ch-1) {
|
|
||||||
return; // in comment/string, do nothing
|
|
||||||
}
|
|
||||||
if (attr->tokenType() != QSynedit::TokenType::Comment
|
if (attr->tokenType() != QSynedit::TokenType::Comment
|
||||||
&& attr->tokenType() != QSynedit::TokenType::Space) {
|
&& attr->tokenType() != QSynedit::TokenType::Space) {
|
||||||
if (attr->tokenType() == QSynedit::TokenType::String)
|
if (attr->tokenType() == QSynedit::TokenType::String)
|
||||||
|
|
Loading…
Reference in New Issue