Scripts discussion (3)
- Author
- Message
-
Offline
- Posts: 1862
- Joined: Mon Aug 06, 2007 1:07 pm
- Contact:
-
Offline
- Posts: 1161
- Joined: Sun Oct 20, 2013 11:44 am
Instructor
Возможно ли добавить в OpenSaveMask.js диалог выбора файла и диалог выбора каталога для сохранения? Или хотя бы открытие. Например с ключами -OpenList=1 и -SaveDir=1. Хотел воткнуть FileDialog из InsertFile.js, только что-то не соображу, как нужно обработать параметры.
Возможно ли добавить в OpenSaveMask.js диалог выбора файла и диалог выбора каталога для сохранения? Или хотя бы открытие. Например с ключами -OpenList=1 и -SaveDir=1. Хотел воткнуть FileDialog из InsertFile.js, только что-то не соображу, как нужно обработать параметры.
-
Offline
- Site Admin
- Posts: 6311
- Joined: Thu Jul 06, 2006 7:20 am
Corrected.KDJ wrote:It seems to me, that if _X64, offsetof(AEMARKTEXTITEMW, pMarkText) is equal to 24, not 20.
Is there any function to check the correctness of a regular expression?
Skif_off
Возможно будет удобнее так:
Пример кнопки Total Commander'а для конвертирования выделенных файлов в UTF-8
-
Offline
- Posts: 1161
- Joined: Sun Oct 20, 2013 11:44 am
Instructor
Нет, это не то, по сути получается, что мне нужна часть функционала плагина Sessions, создать список файлов проще и быстрее, чем ту же пачку файлов сначала открыть (да и плагин включаю только при необходимости).
В общем, беру просьбу взад, есть пара идей, к тому же, сразу не вспомнил: самый простой - %a и OpenFile() из ContextMenu, будет просто два пункта меню, а не один (у меня так прикручен переименованный и немного модифицированный replaceDiacriticLetters.js от Infocatcher, существенно ускоряет поиск/замену, правда, не запустишь для всех вкладок сразу, как в случае с 4161, но пока и не требовалось)
Нет, это не то, по сути получается, что мне нужна часть функционала плагина Sessions, создать список файлов проще и быстрее, чем ту же пачку файлов сначала открыть (да и плагин включаю только при необходимости).
В общем, беру просьбу взад, есть пара идей, к тому же, сразу не вспомнил: самый простой - %a и OpenFile() из ContextMenu, будет просто два пункта меню, а не один (у меня так прикручен переименованный и немного модифицированный replaceDiacriticLetters.js от Infocatcher, существенно ускоряет поиск/замену, правда, не запустишь для всех вкладок сразу, как в случае с 4161, но пока и не требовалось)
-
Offline
- Posts: 1161
- Joined: Sun Oct 20, 2013 11:44 am
Infocatcher
Подскажите, пожалуйста, в какое место нужно добавить вызов скриптов после вставки текста (выделенное или весь файл)?
Получается как-то , хотелось бы упростить Правильно понимаю, что это происходит в операторе if в строках 5899-5971 (в разрабатываемой версии)?
Подскажите, пожалуйста, в какое место нужно добавить вызов скриптов после вставки текста (выделенное или весь файл)?
Получается как-то , хотелось бы упростить Правильно понимаю, что это происходит в операторе if в строках 5899-5971 (в разрабатываемой версии)?
-
Offline
- Posts: 1862
- Joined: Mon Aug 06, 2007 1:07 pm
- Contact:
Skif_off
Там в двух местах вызов insertNoScroll() для вставки.
Я немного доработал, теперь можно сделать вот такой вспомогательный скрипт:
Только если изменения будут касаться не только пробельных символов, то сломается восстановления позиции каретки (если отсутствовало выделение и -onlySelected=false или не передается).
Там в двух местах вызов insertNoScroll() для вставки.
Я немного доработал, теперь можно сделать вот такой вспомогательный скрипт:
Code: Select all
if(!AkelPad.Include("..\\jsBeautifier.js"))
WScript.Quit();
var _beautifyOrig = beautify;
beautify = function(source, syntax) {
return _beautifyOrig.apply(this, arguments)
.replace(/<(p|subtitle)>\n[ \t]*/ig, "<$1>")
.replace(/\n[ \t]*<\/(p|subtitle)>/ig, "</$1>");
};
handleArgs();
-
Offline
- Posts: 1161
- Joined: Sun Oct 20, 2013 11:44 am
Infocatcher
Спасибо, как-то даже неловко Эта доработка не вылезет боком? Выглядит интересно.
С AkelPad.CallW после insertNoScroll() (точнее - setSyntax(syntax.value)) вроде срабатывает, только заменил "`" на "'".
Так понятнее пока: не силен в JS, в случае вспомогательного скрипта придется разбираться с .replace, ну и со строками замены ($) у меня пока пробелы.
Про ограничение: пока не могу оценить, обычно если есть <binary></binary>, то безусловно выделение до предыдущего закрывающего тэга, а в чем еще всплывет необходимость не могу предположить.
Спасибо, как-то даже неловко Эта доработка не вылезет боком? Выглядит интересно.
С AkelPad.CallW после insertNoScroll() (точнее - setSyntax(syntax.value)) вроде срабатывает, только заменил "`" на "'".
Так понятнее пока: не силен в JS, в случае вспомогательного скрипта придется разбираться с .replace, ну и со строками замены ($) у меня пока пробелы.
Про ограничение: пока не могу оценить, обычно если есть <binary></binary>, то безусловно выделение до предыдущего закрывающего тэга, а в чем еще всплывет необходимость не могу предположить.
-
Offline
- Posts: 1862
- Joined: Mon Aug 06, 2007 1:07 pm
- Contact:
Вряд ли, подключать скрипт через AkelPad.Include() можно было уже давно, я только завернул стандартную обработку в функцию.Skif_off wrote:Спасибо, как-то даже неловко Эта доработка не вылезет боком? Выглядит интересно.
Да, про AkelPad.CallW/Call. Я так понимаю, все-таки лучше AkelPad.Call(), а AkelPad уже сам будет использовать юникодные строки, если система их поддерживает. Другое дело, что я сомневаюсь, что скрипт вообще запустится на Win 98 (какая там версия JScript?).
Ну, если после вставки вызываются сторонние скрипты, то положение выделения уже на их совести.Skif_off wrote:Про ограничение: пока не могу оценить, обычно если есть <binary></binary>, то безусловно выделение до предыдущего закрывающего тэга, а в чем еще всплывет необходимость не могу предположить.
И потом, наверное, лучше вот так (у меня иногда падало, если выставить синтаксическую тему до вставки):
Code: Select all
insertNoScroll(...);
postProcess();
setSyntax(...);
Code: Select all
function postProcess() {
AkelPad.Call(...);
...
}
Code: Select all
if(!AkelPad.Include("..\\jsBeautifier.js"))
WScript.Quit();
var _insertNoScrollOrig = insertNoScroll;
insertNoScroll = function(str, selectAll, caretPos) {
var ret = _insertNoScrollOrig.apply(this, arguments);
AkelPad.Call("Scripts::Main", 1, "Multi_SR.js", ...);
...
return ret;
};
handleArgs();
-
Offline
- Posts: 269
- Joined: Mon Jun 20, 2011 8:33 am
- Location: Электросталь
Infocatcher
Не могли бы прикрутить хотелку к скрипту winMergeTabs.js?
Возможность прервать работу скрипта, если случайно нажал кнопку. То есть пока мигает Select Tab! в строке состояния, чтобы можно было нажать Esc (например) и остановить выполнение скрипта. Сейчас в этот момент по Esc закрывается окно Akel' я.
Добавлено:
Ааа, кажется разобрался. Повторное нажатие на кнопку останавливает скрипт...
Не могли бы прикрутить хотелку к скрипту winMergeTabs.js?
Возможность прервать работу скрипта, если случайно нажал кнопку. То есть пока мигает Select Tab! в строке состояния, чтобы можно было нажать Esc (например) и остановить выполнение скрипта. Сейчас в этот момент по Esc закрывается окно Akel' я.
Добавлено:
Ааа, кажется разобрался. Повторное нажатие на кнопку останавливает скрипт...
-
Offline
- Posts: 1862
- Joined: Mon Aug 06, 2007 1:07 pm
- Contact:
Угу.yozhic wrote:winMergeTabs.js
[...]
Повторное нажатие на кнопку останавливает скрипт...
И я не уверен, что можно <del>малой кровью</del> малым кодом перехватить Esc.
И можно сделать индикацию нажатости у кнопки:
Code: Select all
// Arguments:
...
// -item="toolbar:%m:%i" - check toolbar button
// ="menu:%m:%i" - check menu item
-
Offline
- Site Admin
- Posts: 6311
- Joined: Thu Jul 06, 2006 7:20 am
Infocatcher
Подсмотрено у KDJ - использовать IsMenu:
ActiveColumnSwitch.js
Подсмотрено у KDJ - использовать IsMenu:
ActiveColumnSwitch.js
Code: Select all
if (nHandle && nItemID)
{
if (oSys.Call("User32::IsMenu", nHandle))
oSys.Call("User32::CheckMenuItem", nHandle, nItemID, bCheckButton?0x8 /*MF_BYCOMMAND|MF_CHECKED*/:0x0 /*MF_BYCOMMAND|MF_UNCHECKED*/);
else
AkelPad.SendMessage(nHandle, 1026 /*TB_CHECKBUTTON*/, nItemID, bCheckButton);
}
-
Offline
- Posts: 1862
- Joined: Mon Aug 06, 2007 1:07 pm
- Contact:
Да, так лучше, спасибо.Instructor wrote:Подсмотрено у KDJ - использовать IsMenu
https://github.com/Infocatcher/AkelPad_ ... 8e710290aa
yozhic
Я тоже забыл, что -item умеют только разрабатываемые версии.