временный Fix для ShiftHome в редакторе

Здесь обсуждается всё, что касается макросов.
Locked
User avatar
SUSim
Posts: 1637
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 9 times
Been thanked: 26 times

временный Fix для ShiftHome в редакторе

Post by SUSim »

Пока суть да дело, предлагаю временное исправление бага проявившегося в build 2355. Mantis 0001972

Code: Select all

<?xml version="1.0" encoding="UTF-8" ?>
<farconfig version="3.0.2381">
    <macros>
        <keymacros>
             <macro area="Editor" key="ShiftHome" flags="DisableOutput" description="Fix поведения выделения в редакторе при ShiftHome (актуален пока FAR не поправят). © SimSU">
                <text>
                    <![CDATA[
%comment="Fix поведения выделения в редакторе при ShiftHome (актуален пока FAR не поправят). © SimSU";
  $IF (editor.sel(0,4) == 1) %comment="Выделен обычный блок, возможен глюк.";
    %seY=editor.sel(0,2); %seX=editor.sel(0,3); %comment="Запомнили конец выделения.";
    %сY=editor.pos(0,1); %cX=editor.pos(0,2); %comment="Запомнили положение курсора.";
    $IF ((%seY==%сY)&&(%seX==%cX)) %comment="Курсор стоит в конце выделения и ShiftHome приведёт к глюку.";
      %sbY=editor.sel(0,0); %sbX=editor.sel(0,1); %comment="Запомнили начало выделения.";
      editor.pos(1,1,%sbY) editor.pos(1,2,%sbX) editor.sel(2,0) %comment="Возобновили отметку начала блока.";
      editor.pos(1,1,%seY) editor.pos(1,2,1) editor.sel(2,1) %comment="Пофиксили конец выделения!";
    $ELSE
      ShiftHome 
    $END
  $ELSE
    ShiftHome
  $END
]]>
</text>
            </macro>
        </keymacros>
    </macros>
</farconfig>
SimSU ··· ·· -- ··· ··-
User avatar
SUSim
Posts: 1637
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 9 times
Been thanked: 26 times

Re: временный Fix для ShiftHome в редакторе

Post by SUSim »

После 3.0 build 2397 x86 предложенный в первом посте макрос сохранил актуальность, только, для тех у кого есть макросы с использованием editor.sel(0,2):
Глюк проявляется, только, при выделении обычного блока из нескольких строк и если в конце выделения курсор не находится под первым символом и нажимается ShiftHome - тогда editor.sel(0,2) возвращает на 1 меньше :(
если выделение содержало 2 строки то после ShiftHome конец выделения получается, не только не правильным, а даже перед началом выделения (повторю из-за того, что editor.sel(0,2) возврашает на 1 меньше чем должен).
SimSU ··· ·· -- ··· ··-
Locked

Return to “Обсуждение макросов”