Вот что значит "утро вечера мудренее", сейчас за пять минут нашел, в чем проблема. Надо было спрашивать каретку отложенно, где она стоит.

## Код:
```
PROCEDURE (a: Action) Do;
      VAR
         c: TextControllers.Controller;
         carPos: INTEGER;
         loc: TextViews.Location;
   BEGIN
      c := TextControllers.Focus();
      IF (c # NIL) & ~c.HasSelection() THEN
         carPos := c.CaretPos(); (* Запоминаем положение каретки *)
         IF carPos # - 1 THEN
            a.v.GetThisLocation(a.f, c.CaretPos(), loc);
            a.v.x := loc.x;      
            a.v.y := loc.y;
            Views.Update(a.v, Views.rebuildFrames);
         END
      END
   END Do;

   PROCEDURE (v: View) HandleCtrlMsg2 (f: Views.Frame;
      VAR msg: Controllers.Message; VAR focus: Views.View);
      VAR
         c: TextControllers.Controller;
         carPos: INTEGER;
         a: Action;
   BEGIN
      WITH msg: Controllers.EditMsg DO
         NEW(a);
         a.v := v;
         a.f := f;
         Services.DoLater(a, Services.now)
```
