{$ifdef nnn}begin end;{$endif} function TATSynEdit.DoCommand_SelectAll: TATCommandResults; begin DoSelect_All; Result:= [cResultCaretBottom]; end; function TATSynEdit.DoCommand_SelectInverted: TATCommandResults; begin DoSelect_Inverted; Result:= [cResultCaretBottom]; end; function TATSynEdit.DoCommand_SelectSplitToLines: TATCommandResults; begin DoSelect_SplitSelectionToLines; Result:= [cResultCaretBottom]; end; function TATSynEdit.DoCommand_SelectExtendByLine: TATCommandResults; begin DoSelect_ExtendSelectionByLine; Result:= [cResultCaretBottom]; end; function TATSynEdit.DoCommand_SelectColumn(ADir: TATSelectColumnDirection): TATCommandResults; var PntBegin, PntEnd: TPoint; N, NPageLines, i: integer; begin Result:= []; if Carets.Count=0 then Exit; if IsSelRectEmpty or (FSelRectBegin.X<0) then begin DoSelect_NormalSelToColumnSel(PntBegin, PntEnd); DoCaretSingleAsIs; DoSelect_None; FSelRectBegin:= PntBegin; FSelRectEnd:= PntEnd; end; if ADir in [cDirColumnPageUp, cDirColumnPageDown] then NPageLines:= GetPageLines else NPageLines:= 1; case ADir of cDirColumnLeft: begin N:= SColumnPosToCharPos(Strings.Lines[FSelRectEnd.Y], FSelRectEnd.X, OptTabSize); if N>0 then Dec(N); N:= SCharPosToColumnPos(Strings.Lines[FSelRectEnd.Y], N, OptTabSize); FSelRectEnd.X:= N; Result:= [cResultKeepColumnSel, cResultCaretLeft]; end; cDirColumnRight: begin N:= SColumnPosToCharPos(Strings.Lines[FSelRectEnd.Y], FSelRectEnd.X, OptTabSize); Inc(N); N:= SCharPosToColumnPos(Strings.Lines[FSelRectEnd.Y], N, OptTabSize); FSelRectEnd.X:= N; Result:= [cResultKeepColumnSel, cResultCaretRight]; end; cDirColumnUp, cDirColumnPageUp: begin for i:= 1 to NPageLines do if FSelRectEnd.Y>0 then begin Dec(FSelRectEnd.Y); FSelRectEnd.Y:= GetNextUnfoldedLineNumber(FSelRectEnd.Y, false); end; Result:= [cResultKeepColumnSel, cResultCaretTop]; end; cDirColumnDown, cDirColumnPageDown: begin for i:= 1 to NPageLines do if FSelRectEnd.Y=NLastLine then Exit; Str:= Strings.Lines[NTo+1]; Strings.LineDelete(NTo+1); Strings.LineInsert(NFrom, Str); Inc(Caret.PosY); if Caret.EndY>=0 then Inc(Caret.EndY); //correct caret if out of file if Caret.PosY>=Strings.Count then begin Pnt:= GetEndOfFilePos; Caret.PosX:= Pnt.X; Caret.PosY:= Pnt.Y; end; end else begin if NFrom<=0 then Exit; Str:= Strings.Lines[NFrom-1]; Strings.LineDelete(NFrom-1); Strings.LineInsert(NTo, Str); Dec(Caret.PosY); if Caret.EndY>=0 then Dec(Caret.EndY); end; Result:= [cResultText, cResultCaretTop]; end; function TATSynEdit.DoCommand_SelectWords: TATCommandResults; var Item: TATCaretItem; i, NOffset1, NOffset2: integer; Str: atString; begin for i:= FCarets.Count-1 downto 0 do begin Item:= FCarets[i]; if not Strings.IsIndexValid(Item.PosY) then Continue; Str:= Strings.Lines[Item.PosY]; SFindWordBounds(Str, Item.PosX, NOffset1, NOffset2, FOptWordChars); if NOffset1<>NOffset2 then begin Item.EndY:= Item.PosY; Item.EndX:= NOffset1; Item.PosX:= NOffset2; end; end; Result:= [cResultCaretAny]; end; function TATSynEdit.DoCommand_SelectLines: TATCommandResults; var Item: TATCaretItem; i: integer; Str: atString; begin for i:= FCarets.Count-1 downto 0 do begin Item:= FCarets[i]; if not Strings.IsIndexValid(Item.PosY) then Continue; Str:= Strings.Lines[Item.PosY]; Item.EndY:= Item.PosY; Item.EndX:= 0; Item.PosX:= Length(Str); end; Result:= [cResultCaretAny]; end;