CommandPalette.js
Версия 0.4:
- новое поколение скрипта с существенно переработанной структурой файла "CommandPalette.lng";
- теперь "CommandPalette.lng" содержит секции [AkelPad], [Plugins], [Scripts] и [Exec], как было предложено AZJIO;
- в связи с чем скрипт и сам файл "CommandPalette.lng" стали похожи на справочник ;
- а также: теперь ширина окна Command Palette подстраивается под выбранный шрифт.
Posted: Fri Nov 29, 2019 9:14 pm
by AZJIO
Попробовал заменить табуляцию в начале строк, не получилось.
function Tab2SpaceBeginning() {
// var re = /^[\t ]*\K\t/gm;
// var re = /^([\t ]*?)\t/gm;
var re = new RegExp("^([\t ]*?)\t", "gm");
// var sSpace = " ";
var sSpace = " ";
if (flag==0x00280001) {
sSelText = AkelPad.GetTextRange(0, -1);
do {
sSelText = sSelText.replace(re, "$1" + sSpace);
} while (re.test(sSelText))
AkelPad.SetSel(0, -1);
AkelPad.ReplaceSel(sSelText);
} else {
do {
sSelText = sSelText.replace(re, "$1" + sSpace);
} while (re.test(sSelText))
AkelPad.ReplaceSel(sSelText);
}
}
так как у регвыра нет возврата назад, или есть но я не знаю как, но он находит одну партию и если запустить повторно, то опять находит, но уже второй уровень табов, поэтому я сделал цикл, если ещё не всё удалено и тест дает true, то опять сделать замены, что равносильно запустить повторно, до тех пор пока не удалит все. Но почему то тест даёт false и не делает повторных замен, причину не пойму.
получилось без "g" - глобального поиска
Разгадал проблему. При наличии флага "g" объект запоминает позицию, и когда выполнены замены позиция в конце текста и функция test ищет от конца и ничего не находит. Я добавил пересоздание объекта регвыра и всё заработало с "g". А причина того что я не мог отказаться от "g" в том что искать всегда от начала не экономично, в данном случае пересоздание объекта имеет меньше потерь.
opk44
Я как раз начал просматривать имеющиеся за минуту до вашего сообщения по критерию "пробел". Там есть что посмотреть, потому что я в комплексе хотел сделать несколько пунктов по работе с пробелами - вот
Ваши предложения не совсем подходящие, потому что заменяют табы не только в начале строки как я хочу, но и по тексту. То есть в программном коде могут быть явно указаны пробелы и табы, а те что в начале строки не могут быть ими и являются гарантированными отступами форматирования текста для удобства чтения.
И, кстати, тестируя функции я разгадываю их поведение, о чём я написал выше, не зря я мучил это регвыр пока не понял что он сохраняет позицию.
Posted: Sun Dec 01, 2019 7:11 pm
by DV
CommandPalette.js
Версия 0.5:
- Окно Command Palette использует (наследует) цветовую тему окна редактирования AkelPad.
Posted: Fri Dec 06, 2019 9:46 pm
by DV
CommandPalette.js
Версия 0.5.1:
- Исправлено: команда 4102 (File: New Window) не срабатывала.
var nSelStart = AkelPad.GetSelStart();
var nSelEnd = AkelPad.GetSelEnd();
if (nSelStart !== nSelEnd) {
WScript.Echo("не выделяйте текст.");
WScript.Quit();
}
var pClipboardText = AkelPad.GetClipboardText(true); // можно без true
if (/->\d+/g.test(pClipboardText)) {
// var re = new RegExp('^->(\d+)', 'm');
// num = re.exec(pClipboardText);
var num = pClipboardText.match(/^->(\d+)/m);
num = parseInt(num[1]);
// WScript.Echo(nSelStart + '\n' + num[1]);
// WScript.Echo(typeof(nSelStart) + '\n' + typeof(num));
AkelPad.SetSel(nSelStart, num, 0x008 /* AESELT_LOCKSCROLL */ );
AkelPad.SetClipboardText('');
} else {
AkelPad.SetClipboardText('->' + nSelStart);
}
- тестовый пример выделения текста в 2 шага. Перед тем как добавить его в коллекцию, есть идеи улучшения? Скрипт работает используя буфер обмена, хотелось бы без этого, в файл тоже не хотелось бы писать.
1. Ставим курсор и вызываем скрипт - запоминает позицию. Нельзя пользоваться буфером обмена до 2-го шага.
2. Ставим курсор в другую позицию и вызываем скрипт - происходит выделение. Удобно при выделение больших кусков текста с использованием прыжков по закладкам.
добавил "не прокручивать текст"
можно усложнить, добавив проверку выделенного с вопросом расширить или сузить выделение.
Нашёл аналог через сохранение в файл SelPoint.js
TranslateWithGoogleAPI.js
Posted: Sat Dec 21, 2019 3:02 am
by Krtec
Не работает скрипт TranslateWithGoogleAPI. Сообщает: «Unable to retrieve data (Unknown)!»
Проверил адрес запроса из скрипта
Тогда при использовании получаю уже другое сообщение: «There is no error output object, possibly changed API format»
Может кто-нибудь поможет в восстановлении работоспособности скрипта?
Авось автор ещё бывает на форуме...
Добавлено
*Ошибся в параметрах когда проверял адрес из скрипта — «auto|ru», а не «auto/ru».
На правильный запрос через браузер приходит текстовый файл с переводом.
Похоже проблема локальная, вопрос — как выявить?
в ней откорректированы строки 34,35,48.
2. Обновлять скрипты (из коллекций VladSh, KDJ, Instructor, Infocatcher) удобнее при помощи AkelUpdater
3. Не в силах понять, каким образом "монструозность" скрипта является препятствием для его использования.
+ работает с 3-мя сервисами вместо одного;
+ интерактивный выбор языка и направления перевода;
+ отдельное окно (с возможностью редактирования) для перевода вместо клипборда.
Ну а то что "слишком большой", так вам же его не кормить.
Posted: Sat Dec 21, 2019 1:42 pm
by YuS
opk44 wrote:
+ отдельное окно (с возможностью редактирования) для перевода вместо клипборда.
Добавлю ещё плюс к этому, возможность запуска без отображения родительского окна (то бишь без AP)
opk44 wrote:
3. Не в силах понять, каким образом "монструозность" скрипта является препятствием для его использования.
+ работает с 3-мя сервисами вместо одного;
+ интерактивный выбор языка и направления перевода;
+ отдельное окно (с возможностью редактирования) для перевода вместо клипборда.
Потому что куча кода незачем. Да и все эти окна неудобны. В моём скрипте можно вывести результат в MsgBox и выделенный английский текст при нажатии "Yes" заменится на переведённый, либо жёстко задать resType=0 и произойдёт то же самое без диалога.
Короче, на вкус и цвет... Я не люблю из пушки по воробьям, и где это можно оставляю воробьёв в покое.
Posted: Sat Dec 21, 2019 3:32 pm
by Krtec
opk44
Спасибо большое!
А я всегда проверял по ссылке в скрипте последнюю версию, оказывается последняя версия может быть не опубликована в профильной теме.
Монструозность как раз в массе не нужного мне функционала, нужно просто перевод выделенного текста в консоли и всё.
Posted: Sat Dec 21, 2019 5:47 pm
by opk44
VladSh
1. Но скрипт-то подновить в теме вы не забудете?
2. (оффтоп) к слову о воробьях. Давайте не забудем и о синичках. Камрады! На дворе холодно и голодно, так что не забываем регулярно проверять наличие семечек в кормушках!
TranslateWithGoogleAPI.js
Posted: Sun Dec 22, 2019 9:37 pm
by Krtec
Для себя слегка модифицировал скрипт TranslateWithGoogleAPI, чтобы показывались варианты перевода слова. Может кому-то пригодится.
Естественно при такой модификации проблематично будет использовать замену выделенного слова переводом (resType 0).
Posted: Mon Dec 23, 2019 3:41 am
by AZJIO
Krtec QTranslate удобная, у меня постоянно в автозагрузке. Там есть хоткей замены выделенного переводом. Хоть в браузере ещё есть "Mate Translate", всё равно пользуюсь "QTranslate". Плюсом как отсутствующую фичу можно было бы сделать перевод файлов в папке, мне приходилось писать это автоматизацией окна, а в остальном много удобств, чёрный стиль, настройки шрифта, отображаемых сервисов, обратный перевод и т.д.