Дублирование строки

Здесь обсуждается всё, что касается макросов.
ladserg
Posts: 229
Joined: Thu 19 Feb, 2009 14:51
Has thanked: 5 times
Been thanked: 3 times

Дублирование строки

Post by ladserg »

Latest post of the previous page:

John Doe wrote:Вы считаете, что установка позиции тоже должна попадать в Undo?
Именно этот вопрос я и задал ccaid:-)
User avatar
John Doe
Бюрократ
Posts: 13064
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 42 times
Been thanked: 319 times

Дублирование строки

Post by John Doe »

Вовсе нет, и ответы на них отличаются.
Да, при отмене операций редактирования позиция курсора должна возвращаться.
Нет, само по себе позиционирование курсора не меняет текст, и в буфер отмены попадать не должно.
Sikambr
Posts: 16
Joined: Fri 11 Apr, 2014 11:04

Дублирование строки

Post by Sikambr »

Подскажите, как решить такую проблему.
В настройках редактора стоит "Преобразовывать новые символы табуляции в пробелы".
Как продублировать строку, чтобы сохранилась табуляция, имеющаяся в строке?
С такой настройкой она преобразовывается в пробелы.
Shmuel
Posts: 6217
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 348 times

Дублирование строки

Post by Shmuel »

ladserg
Posts: 229
Joined: Thu 19 Feb, 2009 14:51
Has thanked: 5 times
Been thanked: 3 times

Дублирование строки

Post by ladserg »

Sikambr wrote: Fri 08 Feb, 2019 11:43 Подскажите, как решить такую проблему.
В настройках редактора стоит "Преобразовывать новые символы табуляции в пробелы".
Как продублировать строку, чтобы сохранилась табуляция, имеющаяся в строке?
С такой настройкой она преобразовывается в пробелы.
Я в таких случаях просто отключаю преобразование в пробелы на время.
Еще у меня такой макрос не преобразовывает новые табы в пробелы:

Code: Select all

Macro {
    description="Duplicate current line";
    area="Editor"; key="CtrlP";
    condition = function() return not Object.Selected end;
    action=function()
        local Info = editor.GetInfo ()
        local Line=editor.GetString(Info.EditorID, 0, 2)

        -- Начало блочной операции
        editor.UndoRedo(nil, far.Flags.EUR_BEGIN)

        -- Дублирование строки
        editor.SetPosition(Info.EditorID, Info.CurLine, 1)
        editor.InsertString(Info.EditorID)
        editor.SetPosition(Info.EditorID, Info.CurLine, 1)
        editor.InsertText(Info.EditorID, Line)
        editor.SetPosition(Info.EditorID, Info)

        -- Конец блочной операции
        editor.UndoRedo(nil, far.Flags.EUR_END)
    end;
}
П.С. Сейчас глянул, Ctr+C и Ctr+V вроде тоже не преобразовывают табы.
Last edited by ladserg on Fri 08 Feb, 2019 12:05, edited 2 times in total.
Post Reply

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