20 минут поковырялся, ещё проще решение.

Для развёрнутого маркера сворачивание по щелчку с модификатором (ctrl) заменено на показ пояснений по ошибке. Осталось только пояснения написать
## Код:
```
PROCEDURE ShowMsg (v: StdView);
   BEGIN
      IF v.msg = NIL THEN Load(v) END;
      Dialog.ShowStatus(v.msg^);
   END ShowMsg;

--->   PROCEDURE ShowDesc (v: StdView);
      VAR   no: ARRAY 16 OF CHAR; res: INTEGER;
   BEGIN
      Strings.IntToString(v.err, no);
      Dialog.Call("StdCmds.OpenDoc('Dev/Rsrc/ErrorsExt'); StdLinks.ShowTarget('" + no + "')", "", res)
   END ShowDesc;

   PROCEDURE Track (v: StdView; f: Views.Frame; x, y: INTEGER; buttons: SET);
      VAR c: Models.Context; t: TextModels.Model; u, w, h: INTEGER; isDown, in, in0: BOOLEAN; m: SET;
   BEGIN
      v.context.GetSize(w, h); u := f.dot; in0 := FALSE;
      in := (0 <= x) & (x < w) & (0 <= y) & (y < h);
      REPEAT
         IF in # in0 THEN
            f.MarkRect(u, 0, w - u, h, Ports.fill, Ports.invert, Ports.show); in0 := in
         END;
         f.Input(x, y, m, isDown);
         in := (0 <= x) & (x < w) & (0 <= y) & (y < h)
      UNTIL ~isDown;
      IF in0 THEN
         f.MarkRect(u, 0, w - u, h, Ports.fill, Ports.invert, Ports.hide);
         IF Dialog.showsStatus & ~(Controllers.modify IN buttons) & ~(Controllers.doubleClick IN buttons) THEN
            ShowMsg(v)
--->         ELSIF (Controllers.modify IN buttons) & (v.mode = message) THEN
--->            ShowDesc(v)
         ELSE
            ToggleMode(v)
         END;
         c := v.context;
         WITH c: TextModels.Context DO
            t := c.ThisModel();
            TextControllers.SetCaret(t, c.Pos() + 1)
         ELSE
         END
      END
   END Track;
```
