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

Здесь обсуждается всё, что касается макросов.
stefanenko
Posts: 126
Joined: Sun 20 Jun, 2010 12:37
Has thanked: 33 times
Been thanked: 4 times

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

Post by stefanenko »

Ребят помогите.
Нужен макрос дублирования строки в редакторе.

Спасибо.
Shmuel
Posts: 6210
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 342 times

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

Post by Shmuel »

Можно сделать разными способами. Вот один из вариантов.
  1. Macro {
  2.   description="Duplicate current line";
  3.   area="Editor"; key="CtrlD";
  4.   action=function()
  5.     local info,line = editor.GetInfo(),editor.GetString()
  6.     local eol = line.StringEOL ~= "" and line.StringEOL or nil
  7.     editor.UndoRedo(nil,"EUR_BEGIN")
  8.     editor.SetPosition(nil,nil,1)
  9.     editor.InsertString()
  10.     editor.SetPosition(nil,info)
  11.     editor.SetString(nil,nil,line.StringText,eol)
  12.     editor.UndoRedo(nil,"EUR_END")
  13.     -- Keys "Down"
  14.   end;
  15. }
stefanenko
Posts: 126
Joined: Sun 20 Jun, 2010 12:37
Has thanked: 33 times
Been thanked: 4 times

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

Post by stefanenko »

Просто супер! Огромное спасибо + коммент убрал :)
ObSerV
Posts: 53
Joined: Wed 29 Jul, 2009 06:26
Been thanked: 1 time

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

Post by ObSerV »

А еще проще - прочитать-таки помощь про простое создание макросов и сделать, например, так:
ctrl-. Home Shift-End Ctrl-ins Home СтрелкаВниз Shift-Ins Ctrl-. Ctrl-D Enter
и по Ctrl-D дублировать себе строку...
stefanenko
Posts: 126
Joined: Sun 20 Jun, 2010 12:37
Has thanked: 33 times
Been thanked: 4 times

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

Post by stefanenko »

Да проще чем то. Макросы я регулярно использую. Практически каждый день (работаю с php и разным текстом много).
Но как тут сохранить позицию в строке? Не понял с ходу.
Вообще сам бы и на луа написал, но с описанием четким у нас проблемы кажется. На форуме много противоречивой информации.
Shmuel
Posts: 6210
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 342 times

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

Post by Shmuel »

ObSerV wrote:А еще проще - прочитать-таки помощь про простое создание макросов и сделать, например, так:
ctrl-. Home Shift-End Ctrl-ins Home СтрелкаВниз Shift-Ins Ctrl-. Ctrl-D Enter
и по Ctrl-D дублировать себе строку...
Вы хоть бы проверили, прежде чем советовать.
stefanenko
Posts: 126
Joined: Sun 20 Jun, 2010 12:37
Has thanked: 33 times
Been thanked: 4 times

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

Post by stefanenko »

Ну он же написал - например. Суть понятна. Но позицию в строке не сохранишь
Shmuel
Posts: 6210
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 342 times

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

Post by Shmuel »

stefanenko wrote:Ну он же написал - например. Суть понятна. Но позицию в строке не сохранишь
Так напишите не "например", а так, чтобы работало - тогда и поговорим.
stefanenko
Posts: 126
Joined: Sun 20 Jun, 2010 12:37
Has thanked: 33 times
Been thanked: 4 times

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

Post by stefanenko »

Я так делал

Code: Select all

area="Editor"
key="CtrlD"
flags=""
description=""
code="Keys(\"Home ShiftDown RCtrlIns Down Up ShiftIns Up\")"
User avatar
DrKnS
Posts: 5802
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 10 times
Been thanked: 343 times

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

Post by DrKnS »

Дублировать через CtrlIns и ShiftIns - это фу-фу-фу. Буфер обмена теряется же.
Shmuel
Posts: 6210
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 342 times

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

Post by Shmuel »

stefanenko wrote:Я так делал

Code: Select all

area="Editor"
key="CtrlD"
flags=""
description=""
code="Keys(\"Home ShiftDown RCtrlIns Down Up ShiftIns Up\")"
- портит буфер обмена
- зависит от установок редактора (при постоянных блоках остаётся выделенная строка)
- не работает на последней строке, если в ней нет перевода строки
- не сохраняет позицию в строке

Зато сделать легче.
ObSerV
Posts: 53
Joined: Wed 29 Jul, 2009 06:26
Been thanked: 1 time

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

Post by ObSerV »

господи, однако, в помощь никто не смотрит...
Ну поставьте закладку в текущей позиции, затем верните на позицию закладки...
(вы-ж их совсем не используете - в помощь-то никто не смотрит)
При постоянных блоках сбросьте выделение...
(я ими не пользуюсь, а в помощь в этом случае и мне смотреть лень)
Последняя строка если надо - энд, энтер, шифт-инс вместо вниз шифт-инс.
(трудно модифицировать?)
В исходных данных этих пунктов не было - не вижу проблем подогнать...
Буфер, да, портит... Но и это при необходимости решить можно...
Основная мысль предыдущего поста - подумать чуть и помощью воспользоваться - тем более, что там Ф7 есть.
Shmuel
Posts: 6210
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 342 times

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

Post by Shmuel »

ObSerV wrote:господи, ну поставьте закладку в текущей позиции, затем верните на позицию закладки...
При постоянных блоках сбросьте выделение...
Последняя строка если надо - энд, энтер, шифт-инс вместо вниз шифт-инс.
В исходных данных этих пунктов не было - не вижу проблем подогнать...
Буфер, да, портит... Но и это при необходимости решить можно...
Слова, слова, слова... На словах всё просто.
stefanenko
Posts: 126
Joined: Sun 20 Jun, 2010 12:37
Has thanked: 33 times
Been thanked: 4 times

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

Post by stefanenko »

К чему все экзерсисы если уже во втором сообщении все написано?
Просто мы хотим пофлудить. :)
ObSerV
Posts: 53
Joined: Wed 29 Jul, 2009 06:26
Been thanked: 1 time

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

Post by ObSerV »

Эмм... То есть желание сделать так, чтоб люди смотрели помощь и хоть немного думали, прежде чем написать сообщение = считается желанием пофлудить...
И написать сообщение (2 мин), ждать, пока ответят (4 часа), уж не говорю про флуд... (х часов)...
Хотя-бы, как-нибудь, равно - почитать помощь (5 мин), подумать (30 сек), поправить то, что неправильно подумал (ну 1,5 минуты)?
Я уж не говорю про тех, кто в эту историю ввязался с уточнениями: "не работает, работает не так, работает не так как хотелось бы мне, этого нельзя сделать (хотя можно)... И т.д. и т.п.
И да, первое сообщение я совсем не проверял - написал то, что можно сделать, навскидку, совсем не думая...

А с другой стороны... Да, и пофлудить.
Last edited by ObSerV on Sat 14 Jun, 2014 12:13, edited 1 time in total.
Post Reply

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