This is really odd.
The caret is just a paint operation (paint xor).
So I assumed that if it is not painted, then something in the IDE gets corrupted. But that would be fixed by a restart.
If it persists, then it is likely that none of my suggestion will help at all. (They were mostly to track memory corruption)
Something must be allocating a resource from the OS. Or otherwise affecting the OS.
Unfortunately not my area of expertise.
Are you using gtk or qt?
You can try this.
Open the file components\synedit\syneditpointclasses.pas
go to line 2885
procedure TSynEditScreenCaretPainterInternal.Init;
begin
{$IFDEF LCLCarbon}
FForcePaintEvents := True;
{$ELSE}
{$IF DEFINED(LCLQt) OR DEFINED(LCLQt5)}
FForcePaintEvents := True;
{$ELSE}
FForcePaintEvents := False;
{$ENDIF}
{$ENDIF}
FForcePaintEvents := True; // insert this line, always TRUE
FSavePen := TPen.Create;
FColor := clBlack;
FOldY := -1;
FCanPaint := True;
inherited Init;
end;
Save the file with the added line.
Recompile the IDE
And hope for the best.
------------
Or try this / not recommended. ( it disables the multi caret mode)
open ide\sourcesyneditor.pas
line 1660...
constructor TIDESynEditor.Create(AOwner: TComponent);
var
MarkupFoldColors: TSynEditMarkupFoldColors;
begin
inherited Create(AOwner);
FUserWordsList := TFPList.Create;
FTemplateEdit:=TSynPluginTemplateEdit.Create(Self);
FSyncroEdit := TSynPluginSyncroEdit.Create(Self);
FMultiCaret := TSynPluginMultiCaret.Create(Self);
FMultiCaret.MouseActions.Clear; // will be added to SynEdit
FMultiCaret.KeyStrokes.Clear;
replace "Self" with "nil" / this will leak some memory....
(or edit the entire file, and remove all stuff to do with FMultiCaret)
Not sure, not tested.