IDE: check smart hint word: simplified

git-svn-id: trunk@49873 -
This commit is contained in:
mattias 2015-09-23 20:12:06 +00:00
parent d5bd14f7ac
commit df23bf086e

View File

@ -69,7 +69,7 @@ uses
// CodeTools // CodeTools
FileProcs, FindDeclarationTool, LinkScanner, BasicCodeTools, CodeToolsStructs, FileProcs, FindDeclarationTool, LinkScanner, BasicCodeTools, CodeToolsStructs,
CodeToolManager, CodeCache, DefineTemplates, KeywordFuncLists, CodeTree, CodeToolManager, CodeCache, DefineTemplates, KeywordFuncLists, CodeTree,
StdCodeTools, CodeAtom, StdCodeTools,
// LazUtils // LazUtils
// use lazutf8, lazfileutils and lazfilecache after FileProcs and FileUtil // use lazutf8, lazfileutils and lazfilecache after FileProcs and FileUtil
FileUtil, LazFileUtils, LazFileCache, LazUTF8, LazUTF8Classes, UTF8Process, FileUtil, LazFileUtils, LazFileCache, LazUTF8, LazUTF8Classes, UTF8Process,
@ -10361,7 +10361,7 @@ var
HasHint: Boolean; HasHint: Boolean;
p: SizeInt; p: SizeInt;
Opts: TDBGEvaluateFlags; Opts: TDBGEvaluateFlags;
AbsPos: integer; AtomStartPos, AtomEndPos: integer;
AtomRect: TRect; AtomRect: TRect;
begin begin
//DebugLn(['TMainIDE.OnSrcNotebookShowHintForSource START']); //DebugLn(['TMainIDE.OnSrcNotebookShowHintForSource START']);
@ -10448,31 +10448,10 @@ begin
begin begin
//Find start of identifier //Find start of identifier
AtomRect := Rect(-1,-1,-1,-1); AtomRect := Rect(-1,-1,-1,-1);
SrcEdit.CodeBuffer.LineColToPosition(CaretPos.y, CaretPos.x, AbsPos); SrcEdit.EditorComponent.GetWordBoundsAtRowCol(CaretPos, AtomStartPos, AtomEndPos);
if (AbsPos > 0) and (AbsPos <= SrcEdit.CodeBuffer.SourceLength) and AtomRect.TopLeft := SrcEdit.EditorComponent.RowColumnToPixels(Point(AtomStartPos, CaretPos.y));
CodeToolBoss.InitCurCodeTool(SrcEdit.CodeBuffer) AtomRect.BottomRight := SrcEdit.EditorComponent.RowColumnToPixels(Point(AtomEndPos, CaretPos.y));
then
begin
CodeToolBoss.CurCodeTool.BuildTree(lsrInit);
CodeToolBoss.CurCodeTool.MoveCursorToCleanPos(AbsPos);
CodeToolBoss.CurCodeTool.ReadPriorAtom;
CodeToolBoss.CurCodeTool.MoveCursorToCleanPos(CodeToolBoss.CurCodeTool.CurPos.StartPos);
repeat
CodeToolBoss.CurCodeTool.ReadNextAtom;
until CodeToolBoss.CurCodeTool.CurPos.Flag = cafWord;
SrcEdit.CodeBuffer.AbsoluteToLineCol(CodeToolBoss.CurCodeTool.CurPos.StartPos,
AtomRect.Top, AtomRect.Left);
SrcEdit.CodeBuffer.AbsoluteToLineCol(CodeToolBoss.CurCodeTool.CurPos.EndPos,
AtomRect.Bottom, AtomRect.Right);
AtomRect.TopLeft := SrcEdit.EditorComponent.RowColumnToPixels(AtomRect.TopLeft);
AtomRect.BottomRight := SrcEdit.EditorComponent.RowColumnToPixels(AtomRect.BottomRight);
Inc(AtomRect.Bottom, SrcEdit.EditorComponent.LineHeight); Inc(AtomRect.Bottom, SrcEdit.EditorComponent.LineHeight);
end;
if (AtomRect.Left = -1) then//something went wrong, use position of caret
begin
AtomRect.TopLeft:=SrcEdit.EditorComponent.RowColumnToPixels(CaretPos);
AtomRect.BottomRight:=AtomRect.TopLeft;
end;
SrcEdit.ActivateHint(AtomRect, BaseURL, SmartHintStr, AutoShown); SrcEdit.ActivateHint(AtomRect, BaseURL, SmartHintStr, AutoShown);
end; end;