Что хотелось бы добавить в AkelPad (3)
- Author
- Message
-
Offline
- Posts: 348
- Joined: Mon Jun 03, 2019 2:33 am
1. Почему для вертикальной вставки отдельная команда и хоткей? Нельзя ли перед вставкой определить выделено ли несколько мест или одно, и соответственно использовать вертикальную вставку при вертикальном выделении.
2. При выделении столбиком и вводе текста удаляется выделенный текст и вставляется в первом выделении в верхней строке, нельзя ли ввод текста как то имитировать аналогично вертикальной вставкой, то есть ввод сразу во все строки.
Эти два пункта работают в Notepad++.
2. При выделении столбиком и вводе текста удаляется выделенный текст и вставляется в первом выделении в верхней строке, нельзя ли ввод текста как то имитировать аналогично вертикальной вставкой, то есть ввод сразу во все строки.
Эти два пункта работают в Notepad++.
-
Offline
- Posts: 513
- Joined: Sun Sep 15, 2013 8:25 am
- Location: 013 в Тентуре, семь по Спирали, налево от Большой Медведицы
-
Offline
- Posts: 348
- Joined: Mon Jun 03, 2019 2:33 am
Не понял в чём ответ? Это всё равно не метод вставки, с тем же успехом я могу скопировать текст и выполнить Alt+V, а суть ввода в строки позволяет пропустить несколько действий, таких как выделять+копировать+вставлять, так как ввод происходит минуя эти операции, просто вводишь и всё.YuS wrote:AZJIO
http://akelpad.sourceforge.net/forum/vi ... 8756#28756
Хотя 2 лишних клавиши удобней нажимать чем выделять+копировать+вставлять.
-
Offline
- Posts: 513
- Joined: Sun Sep 15, 2013 8:25 am
- Location: 013 в Тентуре, семь по Спирали, налево от Большой Медведицы
Там ответ на второй вопрос.AZJIO wrote:Не понял в чём ответ?YuS wrote:AZJIO
http://akelpad.sourceforge.net/forum/vi ... 8756#28756
Видно, что даже не было попытки попробовать... попробуй, а потом обсудим.AZJIO wrote: Это всё равно не метод вставки, с тем же успехом я могу скопировать текст и выполнить Alt+V, а суть ввода в строки позволяет пропустить несколько действий, таких как выделять+копировать+вставлять, так как ввод происходит минуя эти операции, просто вводишь и всё.
Скрипт делает, как раз, ровно это:
AZJIO wrote: 2. При выделении столбиком и вводе текста удаляется выделенный текст и вставляется в первом выделении в верхней строке, нельзя ли ввод текста как то имитировать аналогично вертикальной вставкой, то есть ввод сразу во все строки.
-
Offline
- Posts: 348
- Joined: Mon Jun 03, 2019 2:33 am
я не помню чтобы я что-то писал не попробовав. Предыдущий пост я сказал, что лучше чем ничего, но хотелось бы ... А скрипт от требует вызова, а тот идеальный вариант о котором я говорю он требует отлов сообщений (действий пользователя) при вводе. У скрипта такой штуки нет, если только она не предусмотрена заранее, тогда скрипт надо запустить при запуске AkelPad, чтобы он в фоне отлавливал события.YuS wrote:попробуй
За ссылку скрипт всё равно спасибо, я видел его но думал он делает замену внутри выделенных частей (одно другим), но оказалось он для удобства вставки столбиком.
Кстати, пробел работает. Если я выделяю столбиком пробел и начинаю вводить пробелы, то текст сдвигается во всех, вот нужно тоже самое только для любого символа.
-
Offline
- Posts: 513
- Joined: Sun Sep 15, 2013 8:25 am
- Location: 013 в Тентуре, семь по Спирали, налево от Большой Медведицы
Единственный недостаток - вызов скрипта (можно повесить на "горячие клавиши"). Одно дополнительное действие - имхо, это, всё же, не рыскание по меню, да и не сильно трудозатратно. А учитывая частоту подобной надобности (лично мне, за много лет, понадобилось, может быть, всего пару раз), реальная возможность реализации стремится к нулю...AZJIO wrote:А скрипт от требует вызова, а тот идеальный вариант о котором я говорю он требует отлов сообщений (действий пользователя) при вводе. У скрипта такой штуки нет, если только она не предусмотрена заранее, тогда скрипт надо запустить при запуске AkelPad, чтобы он в фоне отлавливал события.
Помимо самого скрипта, там ещё надо посмотреть на даты постов и на то, что пожелания на эту фичу поступают не впервые и неоднократно...AZJIO wrote: За ссылку скрипт всё равно спасибо, я видел его но думал он делает замену внутри выделенных частей (одно другим), но оказалось он для удобства вставки столбиком.
Сам-то я абсолютно не против, если вдруг так показалось и как сказал выше, пожелания такие существуют давно... но, пока увы.AZJIO wrote: Кстати, пробел работает. Если я выделяю столбиком пробел и начинаю вводить пробелы, то текст сдвигается во всех, вот нужно тоже самое только для любого символа.
Вижу три причины нереализации: либо сильно трудозатратно, либо реализация повлечет значительные переделки кода, которые могут повлиять на работу остальных плагинов, либо реальная необходимость реализации, для автора, слабо аргументирована... как-то так.
ЗЫ Кстати, по поводу notepad++, там есть в одном из постов:
Сам не пользуюсь NP++, но видимо, всё же, есть там какие-то проблемы, приводящие к тормозам при вводе на большое число строк...Воркфлоу как два пальца об... асфальт: выделяете столбец, жмёте кнопку/пункт меню/горячие клавиши и в появившемся окне InputBox вбиваете/вставляете текст и жмёте Enter - более чем изящно, учитывая, что иного решения пока нет и скорость работы скрипта: не вижу ощутимой разницы при столбце на 10 строк, 3 000 строк, 10 500 строк, зато в NotePad++ вижу. Привык быстро.
-
Offline
- Posts: 1873
- Joined: Mon Aug 06, 2007 1:07 pm
- Contact:
На первый взгляд, поможет что-то вроде такого:AZJIO wrote:1. Почему для вертикальной вставки отдельная команда и хоткей? Нельзя ли перед вставкой определить выделено ли несколько мест или одно, и соответственно использовать вертикальную вставку при вертикальном выделении.
smartPaste.js
Code: Select all
var hWndEdit = AkelPad.GetEditWnd();
var pasteMode = AkelPad.SendMessage(hWndEdit, 3127 /*AEM_GETCOLUMNSEL*/, 0, 0)
? 2 /*PASTE_COLUMN*/
: 0;
AkelPad.SendMessage(AkelPad.GetMainWnd(), 1194 /*AKD_PASTE*/, hWndEdit, pasteMode);
-
Offline
- Posts: 348
- Joined: Mon Jun 03, 2019 2:33 am
YuS
Не знаю насколько часто, но замечаю необходимость, вот примеры:
табличные данные всегда массив данных в программировании
справка HTML перечисление списка параметров, одним цветом параметр, другим описание, вдруг в CSS класс надо зарезервировать под что-то а текущему дать осмысленный. две строки это для примера, там может быть 20 строк, то есть реально мне приходится делать в строках в пределах экрана максимум двух, то есть если NPP и тормозит при 1000 у меня как раз таки реального не было с огромным списком. Но опять же не спорю, я нахожу удобным ещё и клавишу Alt+Shift я нажимаю чтобы выделить к ним ещё нажимаю Insert и вот оно окошко ввода.
Infocatcher
да, работает.
___________________
В NPP есть генератор чисел и у него кстати есть недостатки. Смысл следующий: есть массив, мне нужно прописать индексы В NPP делается до конца файла от курсора, поэтому надо копировать в отдельный временный новый документ, потом обратно. Допустим я выделил вертикально 10 строк, если разряд меняется (после 9 идёт 10 уже 2 разряда) то дополнительно выделяю, потом ставлю курсор в верхней строки и открываю окно генератора чтобы задать шаг увеличение +1 (инкремент) и он вставляет в каждой строке в 3-ей позиции номера. Хотелось бы поддержка многострочного курсора, чтобы не в весь программный код вставлял, а в заданные строки. Не исключаю вариант текущая позиция курсора (начало выделения) запоминается как отступ, в которой вставлять, а последняя строка для вставки возможно методом выделения нескольких строк и автоматически захватится в окно настройки? Если начало и конец можно определить выделением, а в большинстве инкремент +1, то в принципе можно легко написать скрипт.
Вроде оно NumberListGenerator.js
Добавил InputBox с пятью полями ввода параметров.
Не знаю насколько часто, но замечаю необходимость, вот примеры:
табличные данные всегда
Code: Select all
до
03.10.18 - какой то текст лог данных (дата ремонта)
13.08.18
29.07.18
после
03.10.2018
13.08.2018
29.07.2018
Code: Select all
до
aa[bb] = cc
aa[bb] = cc
после
dd[ee] = ff
dd[ee] = ff
Code: Select all
до
<font class="red">
<font class="red">
после
<font class="param">
<font class="param">
Infocatcher
да, работает.
___________________
В NPP есть генератор чисел и у него кстати есть недостатки. Смысл следующий: есть массив, мне нужно прописать индексы
Code: Select all
до
aa[bb] = cc
aa[bb] = cc
после
aa[1] = cc
aa[2] = cc
Вроде оно NumberListGenerator.js
Добавил InputBox с пятью полями ввода параметров.
Last edited by AZJIO on Tue Sep 03, 2019 3:50 pm, edited 1 time in total.
-
Offline
- Posts: 513
- Joined: Sun Sep 15, 2013 8:25 am
- Location: 013 в Тентуре, семь по Спирали, налево от Большой Медведицы
Возможно, она и есть у кого-то, но меня-то в этом убеждать бесполезно, обращаться надо к автору.AZJIO wrote:YuS
Не знаю насколько часто, но замечаю необходимость

Надо учитывать то, что редактор не создавалась и не развивался по принципу: "а вот, в программе N, есть такой-то функционал, давайте его реализуем", это точно не сработает.AZJIO wrote: В NPP есть генератор чисел и у него кстати есть недостатки. Смысл следующий: есть массив, мне нужно прописать индексыВ NPP делается до конца файла от курсора, поэтому надо копировать в отдельный временный новый документ, потом обратно. Допустим я выделил вертикально 10 строк, если разряд меняется (после 9 идёт 10 уже 2 разряда) то дополнительно выделяю, потом ставлю курсор в верхней строки и открываю окно генератора чтобы задать шаг увеличение +1 (инкремент) и он вставляет в каждой строке в 3-ей позиции номера. Хотелось бы поддержка многострочного курсора, чтобы не в весь программный код вставлял, а в заданные строки. Не исключаю вариант текущая позиция курсора (начало выделения) запоминается как отступ, в которой вставлять, а последняя строка для вставки возможно методом выделения нескольких строк и автоматически захватится в окно настройки? Если начало и конец можно определить выделением, а в большинстве инкремент +1, то в принципе можно легко написать скрипт.Code: Select all
до aa[bb] = cc aa[bb] = cc после aa[1] = cc aa[2] = cc

Что касается инкрементной вертикальной вставки, можно глянуть тут и тут, возможно пригодится.
Про многострочный курсор уже говорилось и не раз, но... возможно, у тебя и получится убедить автора...

-
Offline
- Posts: 348
- Joined: Mon Jun 03, 2019 2:33 am
Знаёшь фразу "а что так можно было?", а вдруг в тот момент ты просто не знал о такой возможности.YuS wrote:Возможно, она и есть у кого-то, но меня-то в этом убеждать бесполезно, обращаться надо к автору.
и я знаю почему, если есть фотошоп, это не значит что я должен его для кого-то написать. Но тут срабатывает другая вещь, допустим проходит год-два и откладывается некоторые хотелки для реализации, идеально, это когда комплексно подойти, сразу учесть в план вещи, которые если ты уже сделаешь, а потом кто-то скажет добавь, а надо переписывать прогу, естественно это улетит ещё на год-два, а то и на десятилетие.YuS wrote:"а вот, в программе N, есть такой-то функционал, давайте его реализуем", это точно не сработает
Я написал сначала скрипт InsertNum.js, потом смотрю скрипты начале темы и вдруг там он уже есть от cnnnc, пробую, действительно создаёт список, но он просто вставляет последовательный список, не в колонку, а формирует его, потом вставляет, то есть это как бы не то, но что мне понравилось - окно параметров, вдруг я вижу скрипу нужна InputBox_function.js, думаю, а может там упрощено создание, смотрю автора, коллекцию, там оказывается пример есть KDJ\Examples\InputBox.js, конструкция очевидная, естественно я вставляю себе в скрипт, и то что я хотел задать параметры уже работает. Но у cnnnc работает и с дробным списком, там он как то их разделяет на до запятой и после и подстраивает ожидаемо, я конечно сделал попроще, частично выправляя результат, но догадался что дробную точку можно ведь поставить после вертикальной вставкой, так что это вопрос закрыт. Но ещё как и в NPP ранее был недостаток, допустим надо ввести числа в сто строк, но пока эти строки не создашь он их сам не создаёт, будет одна строка введёт 1 и всё, поэтому я сделал как у cnnnc, тупо вставить заданное количество чисел, добавив поле "Число строк", но этот вариант отменяет параметр "Колонка". Получается не всё очевидно и надо читать описание к скрипту, интуитивно пользователь задаст число строк и потеряет основное преимущество - вставка в колонку.YuS wrote:Что касается инкрементной вертикальной вставки
-
Offline
- Posts: 513
- Joined: Sun Sep 15, 2013 8:25 am
- Location: 013 в Тентуре, семь по Спирали, налево от Большой Медведицы
Ну, так, надеюсь, что Александр иногда читает нас... и возможно, при удачном сочетании желания и свободного времени, что-нибудь реализует.AZJIO wrote: Знаёшь фразу "а что так можно было?"

То, что скриптами реализовать невозможно, естественно.
Тем и хорош AP, что для облегчения собственного труда, многое можно реализовать скриптами и даже ими поделиться. Сам-то я как-то пытался написать что-то, но как правило, по мере изучения готовых скриптов, оказывалось, что моя хотелка уже существует и работает... так что, так и не получилось наваять что-то более-менее законченное, а не парустрочие.AZJIO wrote:Получается не всё очевидно и надо читать описание к скрипту, интуитивно пользователь задаст число строк и потеряет основное преимущество - вставка в колонку.

А описание надо читать всегда (хорошо, когда оно есть), ибо интуитивно - не всегда можно определить наличие той или иной функции в скрипте...
-
Offline
- Posts: 348
- Joined: Mon Jun 03, 2019 2:33 am
Нехватает подсветки в консоли скриптом или я не понимаю как сделать!
В примере AkelPad.GetTextRange работает с окном консоли, после подмены с помощью AkelPad.SetEditWnd, но AkelPad.Call("Coder::HighLight" не подсвечивает в консоли, я попытался в Scripts-Rus.txt и Coder-Rus.txt найти команды, но не нашёл. Если только сгенерировать Coder файл на лету и применить его с Call("Log::Output", 4, "TEXT", TEXTLEN, APPEND, CODEPAGE, "ALIAS")
Сделал - чтобы подсветить нужно sss.coder, в раздел QuotesRE: добавить строку
Смысл в следующем: в файле шаблоне sss1.tmp строка "%#$&@" заменяется выделенным или буфером обмена при вызове скрипта LogHighLight.js он заменяет текст сохраняя в ss1.coder, который прописан в кэше, далее вызывается перерисовка и текст в консоли подкрашен.
Как это использовать: допустим выполнен поиска какого либо слова в консоль целыми строками. Так как обычно диалог поиска вызывается с предварительно выделенным текстом, то остаётся ещё вызвать хоткей подкраски лога и текст будет подсвечен.
Можно ещё добавить подсветку взависимости от расширения файла, тогда это будет более адекватно.
В примере AkelPad.GetTextRange работает с окном консоли, после подмены с помощью AkelPad.SetEditWnd, но AkelPad.Call("Coder::HighLight" не подсвечивает в консоли, я попытался в Scripts-Rus.txt и Coder-Rus.txt найти команды, но не нашёл. Если только сгенерировать Coder файл на лету и применить его с Call("Log::Output", 4, "TEXT", TEXTLEN, APPEND, CODEPAGE, "ALIAS")
Сделал - чтобы подсветить нужно sss.coder, в раздел QuotesRE: добавить строку
, переименовать файл в sss1.tmp, создать ещё файл ss1.coder (копия предыдущего) и обновить кэш, чтобы там появилась строка типа ss1.coder=3990EFF801D56808:"*.ss1"; для поиска
1 "%#$&@" "\0=(0,#FFFFFF,#F54E52)"
Смысл в следующем: в файле шаблоне sss1.tmp строка "%#$&@" заменяется выделенным или буфером обмена при вызове скрипта LogHighLight.js он заменяет текст сохраняя в ss1.coder, который прописан в кэше, далее вызывается перерисовка и текст в консоли подкрашен.
Как это использовать: допустим выполнен поиска какого либо слова в консоль целыми строками. Так как обычно диалог поиска вызывается с предварительно выделенным текстом, то остаётся ещё вызвать хоткей подкраски лога и текст будет подсвечен.
Можно ещё добавить подсветку взависимости от расширения файла, тогда это будет более адекватно.
Last edited by AZJIO on Fri Sep 20, 2019 2:41 pm, edited 1 time in total.
-
Offline
- Posts: 348
- Joined: Mon Jun 03, 2019 2:33 am
Выше постом я сделал LogHighLight.js. Что если вставить его вызов в скрипт поиска FindReplaceEx.js? В строке 1779 есть код вставки результатов
надо сделать так
в результате сразу подсветка

Обновил: в скрипт LogHighLight.js добавил передачу параметров из скрипта FindReplaceEx.js
Code: Select all
if (nCmd <= 2)
AkelPad.Call("Log::Output", 4, bContinue ? sTxtTotalFound + nCountAll : "...", -1);
else if (bContinue)
Code: Select all
if (nCmd <= 2)
{
AkelPad.Call("Log::Output", 4, bContinue ? sTxtTotalFound + nCountAll : "...", -1);
// AkelPad.Call("Scripts::Main", 1, "LogHighLight.js", "");
AkelPad.Call("Scripts::Main", 1, "LogHighLight.js", '-sSelText="' + sWhatText + '" -bNotRegExp=' + (SendDlgItemMessage(hDlg, IDC_SEARCH_REGEXP, 240 /*BM_GETCHECK*/, 0, 0)?0:1)); // sWhatText - искомый
}
else if (bContinue)

Обновил: в скрипт LogHighLight.js добавил передачу параметров из скрипта FindReplaceEx.js
-
Offline
- Posts: 348
- Joined: Mon Jun 03, 2019 2:33 am
Очень трудно ставить курсор в начале строки, особенно если в начале строки буква i. В левой части есть отступ 4 пиксела, в этой области курсор меняет стрелку вправо, как и на поле с номерами строк. При клике в этой области выделяется строка, как и на поле с цифрами. Нельзя ли, чтобы клик на этом поле ставил курсор в начале строки, а на поле с цифрами было бы также как и раньше выделение строки. Для тех кто не использует эти поля понятно что пропадёт возможность такого выделения, но обычно те кто знает об этой фичи у них скорее всего будет поле фолдинга и номера строк. Хотя кнопка home помогает даже при выделении столбиком.
-
Offline
- Posts: 24
- Joined: Sat Jul 30, 2016 9:39 am
Вот сам себе и ответил.AZJIO wrote:Очень трудно ставить курсор в начале строки, особенно если в начале строки буква i. ...кнопка home помогает даже при выделении столбиком.
Есть еще настройка:
Настройки -> Параметры -> Отступ текста.
Но она не то делает, и да, не помешала бы настройка под увеличение свободного места под вставку курсора в начало строки, полностью подписываюсь.
Хотя всю дорогу сам кнопку Home и юзал, но никто же не откажется от удобства?

Off-top: Ещё бы кто под мои леворукие клешни клаву забацал с функционально-цифровым блоком слева, в пределах адекватной цены, ехх..