From 3a5b9cf9410292b397ad28559bbc8e589dd5df84 Mon Sep 17 00:00:00 2001 From: Basile Burg Date: Tue, 17 Mar 2015 01:34:12 +0100 Subject: [PATCH] more accurate caret position after DCD find location --- src/ce_editor.pas | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/ce_editor.pas b/src/ce_editor.pas index 04e231e7..3d01d58a 100644 --- a/src/ce_editor.pas +++ b/src/ce_editor.pas @@ -364,7 +364,7 @@ end; procedure TCEEditorWidget.getSymbolLoc; var - srcpos, i, sum: Integer; + srcpos, i, sum, linelen: Integer; fname: string; len: byte; begin @@ -381,14 +381,16 @@ begin len := getLineEndingLength(fDoc.fileName); for i := 0 to fDoc.Lines.Count-1 do begin - sum += length(fDoc.Lines.Strings[i]); - sum += len; - //TODO-cenhancement: find declaration, determine column accurately. - if sum >= srcpos then + linelen := length(fDoc.Lines.Strings[i]); + if sum + linelen + len > srcpos then begin - fDoc.CaretY := i+1; + fDoc.CaretY := i + 1; + fDoc.CaretX := srcpos - sum + len; + fDoc.SelectWord; break; end; + sum += linelen; + sum += len; end; end; end;