// http://akelpad.sourceforge.net/forum/viewtopic.php?p=6064#6064
// Version: 1.1
// Author: Shengalts Aleksander aka Instructor
//
//
// Description(1033): First call sets selection start point, second call make selection.
// Description(1049): Первый вызов устанавливает начало выделения, второй вызов осуществляет выделение.

var oSet=AkelPad.ScriptSettings();
var nRegSelStart=-1;
var nCurSelStart=AkelPad.GetSelStart();

if (oSet.Begin("", 0x1 /*POB_READ*/))
{
  nRegSelStart=oSet.Read("StartPos", 1 /*PO_DWORD*/);
  oSet.End();
}

if (oSet.Begin("", 0x2 /*POB_SAVE*/))
{
  if (nRegSelStart != -1)
  {
    if (nRegSelStart != nCurSelStart)
    {
      AkelPad.SetSel(nRegSelStart, nCurSelStart);
      oSet.Write("StartPos", 1 /*PO_DWORD*/, -1);
    }
  }
  else oSet.Write("StartPos", 1 /*PO_DWORD*/, nCurSelStart);

  oSet.End();
}
