bool FunctionCallTip::updateCalltip(int ch, bool needShown) { if (!needShown && ch != _start && !isVisible()) //must be already visible return false; _curPos = _pEditView->execute(SCI_GETCURRENTPOS); //recalculate everything if (!getCursorFunction()) { //cannot display calltip (anymore) close(); return false; } showCalltip(); return true; }
/* TextEditor::openCalltip * Opens a calltip for the function name before [pos]. Returns false * if the word before [pos] was not a function name, true otherwise *******************************************************************/ bool TextEditor::openCalltip(int pos, int arg, bool dwell) { // Don't bother if no language if (!language) return false; // Get start of word before bracket int start = WordStartPosition(pos - 1, false); int end = WordEndPosition(pos - 1, true); // Get word before bracket string word = GetTextRange(WordStartPosition(start, true), WordEndPosition(start, true)); // Get matching language function (if any) TLFunction* func = language->getFunction(word); // Show calltip if it's a function if (func && func->nArgSets() > 0) { call_tip->enableArgSwitch(!dwell && func->nArgSets() > 1); call_tip->openFunction(func, arg); showCalltip(dwell ? pos : end + 1); ct_function = func; ct_start = pos; ct_dwell = dwell; // Highlight arg call_tip->setCurrentArg(arg); return true; } else { ct_function = nullptr; return false; } }
void FunctionCallTip::showPrevOverload() { if (!isVisible()) return; _currentOverload = _currentOverload > 0?(_currentOverload-1) : _currentNrOverloads-1; showCalltip(); }
void FunctionCallTip::showNextOverload() { if (!isVisible()) return; _currentOverload = (_currentOverload+1) % _currentNrOverloads; showCalltip(); }