Autorun

Обсуждение только плагинов и утилит для Total Commander.

Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер

Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

yozhik писал(а):Вы AkelPad пользуетесь? Я сделал для него подсветку синтаксиса autorun.cfg.
Пользуюсь эпизодически, как вторым редактором. Но интересно будет сравнить с моим вариантом :) Я ее в принципе и собирался выложить после релиза.
yozhik писал(а):Хорошо, но чем тогда CommandExec отличается от SendCommand?
Честно - не помню. Может на тот момент это было не так? В любом случае, сейчас тут уже поздно что-то менять, lеgacy и всё такое...
yozhik писал(а):В описаниях строчных ф-ций намёк на то, что вместо casesense требуется подставлять boolean есть только в StrReplace. Может в др., там где casesense используется, тоже стоит добавить?
Да, пожалуй.
yozhik писал(а):Не хватает запятой перед delim
Все косяки поправлю.
yozhik писал(а):Поэтому, без лишних слов, вот бы часть самых полезных избранных ф-ций из TWinKey реализовать в субплагинах Autorun.
Я Twinkey хоть сколько нибудь долго не пользовался, поэтому полезность этих функций мне не особо очевидна. По описанному алгоритму тоже очевидности не добавляется. Как минимум надо поставить и посмотреть, как это работает. Хотя не стану скрывать, переписывать то, что уже имеется не слишком интересно. И нет, пятью минутами тут не обойтись.

Проблема еще в том, что в данный момент не планируется больше ничего добавлять, может быть только то, что потенциально может повлиять на совместимость (синтаксис). Сейчас только исправления. Иначе релиз никогда не состоится.

В любом случае есть желание максимально уйти от узкоспециализированных функций и переложить это на возможности скриптинга встроенными средствами. Что-то мне подсказывает, что при определенном наборе универсальных функций (в Runtime) можно и эту хотелку будет реализовать. Но не сейчас.
Аватара пользователя
ZZZAlexZZZ
Сообщения: 68
Зарегистрирован: Сб мар 08, 2014 22:25

Сообщение ZZZAlexZZZ »

Loopback писал(а):Я ее в принципе и собирался выложить после релиза
yozhik , Loopback Просьба поделиться в двух вариантах подсветкой синтаксиса, очень не хватает.
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

yozhik писал(а):чем тогда CommandExec отличается от SendCommand? Только тем, что во 2й внутренние команды TC можно передавать числами?
Есть ещё различие: в SendCommand имеется ограничение для параметра - только число.
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

yozhik писал(а):Поэтому, без лишних слов, вот бы часть самых полезных избранных ф-ций из TWinKey реализовать в субплагинах Autorun.
Кстати, тут подсказывают, что есть скриптовый вариант запрашиваемого.

ZZZAlexZZZ
Он совсем сырой, я им практически не занимался. Ну если очень надо, то вот. Сделан на базе кодера от Autoit, так что могут остаться какие-то моменты от него.
Аватара пользователя
yozhik
Сообщения: 353
Зарегистрирован: Вс май 04, 2014 20:34
Откуда: Электросталь

Сообщение yozhik »

Loopback
Loopback писал(а):Пользуюсь эпизодически, как вторым редактором.
Очень приятно слышать. Там есть ещё один маленький инструмент, которым Вы, как я понял, не пользуетесь. Понял потому, что в справке к Autorun нет индекса, а он необходим для работы скрипта ChmKeyword.js. С ним если в коде выделить команду или ключевое слово и нажать хоткей (любой назначенный, например у меня это Shift+F1), то справка откроется аккурат на странице этой команды. Можно не выделять, а только поставить курсор на искомое слово. Для работоспособности всего этого нужно, чтобы в AkelPad были установлены плагины Scripts и Hotkeys (они есть в дистрибутиве по умолчанию), и чтобы в справке был создан индекс. Я создал индекс и пересобрал с ним справку. Всё вместе упаковал в один архив на пробу: файл индекса, перепакованная help_ru.chm, скрипт ChmKeyword.js, readme настройки хоткея на запуск скрипта с нужным параметром (не сочтите за ликбез) — всё разложено по нужным папкам, чтобы не путаться. Если интересно, попробуйте, может одобрите и внедрите индекс в справку. Вот ссылка на архив. В нём же дополненная подсветка синтаксиса.
Loopback писал(а):Он совсем сырой, я им практически не занимался. Ну если очень надо, то вот
А-я-яй, недокументированное расширение *.aucfg для файла конфигурации )) С индивидуальным то расширением ChmKeyword.js гораздо лучше работает, т.к. справка будет открываться только из нужного файла, а не из всех *.cfg подряд. Добавьте в справку, пожалуйста, это, пмсм, важная инфа.

В целом, по подсветке:
  1. Переключатели, как я понял, регистронезависимы, но в справке везде в примерах только в верхем регистре. Я у себя в подсветке сделал только в верхнем, так мне показалось лучше.
  2. Помимо блоков для условий и Func я сделал ещё блоки для MsgBox, Sleep и всех строчных ф-ций в обоих синтаксисах — ФЗ и КЗ (как в справке) — хотел и дальше делать, но пока остановился, поскольку не понятна политика предпочтений для остальных команд: их делать и КЗ, и ФЗ, или какие то предпочтительно только в одной форме (ну, за исключением таких случаев как Set). Вот, например, SetEnv можно в ФЗ записать (и работает), так включать эту запись в блоки или лучше SetEnv записывать всегда только в КЗ? В справке для некоторых команд приводятся обе формы, а для некоторых только одна, хотя вторая при этом также возможна. Ориентироваться в этом на справку?
  3. Обратите, пожалуйста, внимание, я сделал у себя ещё подсветку распространённых ошибок. Например:
    • Args подсвечивается только внутри Func;
    • если попытаться набрать комментарий после перевода строки _ то он «покраснеет»;
    • также «покраснеет» ФЗ запись для Set; и др.
    Думаю, это не лишнее, на скорость обработки сколь-либо заметно не влияет.
Loopback писал(а):В любом случае, сейчас тут уже поздно что-то менять, lеgacy и всё такое
Добро. Но я, собственно, более о внятности справки заботился. Просто в соответствующие описания внести уточнения.
Ещё по справке: внутри chm файл sysinfo_funcs.html — на него нет ссылки в оглавлении, видимо он старый и Вы его забыли удалить — это и по его содержанию видно.
Loopback писал(а):Хотя не стану скрывать, переписывать то, что уже имеется
Нет, ну тут всё же существенный момент. Оно раньше имелось, а сейчас уже так не получается уверенно сказать, потому что TWinkey — плагин заброшенный. После выхода TC 10.51 в нём ещё что-то перестало работать (что именно я не запомнил, Avada где-то писал). И то, что из-за него Гислер отрубил родную подсветку табов — это, пмсм, не маленький минус. Поэтому я, например, буду потихоньку от него избавляться, по мере того, как будут находиться способы реализовать другими средствами то, к чему уже привык. Хотя это просто к слову, поскольку:
Loopback писал(а):переложить это на возможности скриптинга встроенными средствами... при определенном наборе универсальных функций (в Runtime) можно и эту хотелку будет реализовать
Прекрасно, коли так. Только у меня ума может не хватить на такое, так что если что, буду тогда помощи просить :) Но, естественно, не сейчас. После релиза.
Loopback писал(а):есть скриптовый вариант запрашиваемого
Спасибо большое и за вариант, и за то, что помните. Меня в этом способе только одно смущает: получается много обработчиков висят в фоне, наблюдая за одним TC, и Autorun, и TWinkey, теперь ещё и AutoHotkey запускать только ради одной ф-ции. Уж лучше одним Autorun обходиться. Но я попробую вникнуть в скрипт, кто знает, вдруг и хватит ума что-нибудь самостоятельно сделать средствами Autorun.


sa
в SendCommand имеется ограничение для параметра - только число
Вот попробовал: "SendCommand cm_Config" — работает. Может раньше было ограничение, а сейчас нет? Или Вы что-то другое имели в виду, а я опять туплю. :oops:


ZZZAlexZZZ
Да не вопрос. В этом сообщении выше ссылка на архив с исправленной моей версией. А предыдущую я на предыдущей странице выкладывал.
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

yozhik писал(а):что-то другое имели в виду
У меня не про команду, а про параметр:
help_ru.chm писал(а):параметр      Опциональный числовой параметр для поддерживающих параметры команд (cm_100Percent, cm_Select и т.д.) .
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

yozhik писал(а):Понял потому, что в справке к Autorun нет индекса, а он необходим для работы скрипта ChmKeyword.js. С ним если в коде выделить команду или ключевое слово и нажать хоткей (любой назначенный, например у меня это Shift+F1), то справка откроется аккурат на странице этой команды.
Да, я про эту фичу знаю, пользуюсь так справкой Autoit (правда, в другом редакторе). Скрипт, которым я конвертирую онлайн-справку в chm тоже умеет генерировать индекс, но в прошлой версии это было не особо нужно. Надо заполнить ключевые слова, тогда и индекс появится.
yozhik писал(а):А-я-яй, недокументированное расширение *.aucfg для файла конфигурации ))
Как же недокументированное, раздел "Файл конфигурации". Ну может недостаточно подробно. И в истории изменений упоминал, недавно совсем.
yozhik писал(а):поскольку не понятна политика предпочтений для остальных команд
Тут исключительно по своему вкусу. Любая команда может быть записана как функция и наоборот. Очевидно, что если возвращается значение и нет переключателей, удобнее функциональная запись. При этом, например, IniRead имеет переключатель /R, что уже не очень удобно в ФЗ. А ControlSetMouseAction в ФЗ даже и мысли не возникает записать. Надеюсь, к релизу все же появится некая единая логика и рекомендации по использованию.
yozhik писал(а):Обратите, пожалуйста, внимание, я сделал у себя ещё подсветку распространённых ошибок.
Да, я видел, у AkelPad весьма продвинутая система подсветки, хотя местами очень замороченная. Ближе к делу посмотрю, может и идею какую утащу :)
yozhik писал(а):также «покраснеет» ФЗ запись для Set
На самом деле это даже не ограничение, точно так же можно и в ФЗ ее записать, просто смысла ноль.
yozhik писал(а):внутри chm файл sysinfo_funcs.html
Да, спасибо, давний косяк конвертера, всё как-то руки не дойдут доработать его.
yozhik писал(а):наблюдая за одним TC, и Autorun, и TWinkey, теперь ещё и AutoHotkey запускать только ради одной ф-ции
Да, это я прекрасно понимаю. Хотя в принципе ничего ужасного в таких связках нет, какого-то существенного влияния на производительность это всё не окажет, поскольку обработчики срабатывают только при возникновении события (например, нажата кнопка).
yozhik писал(а):сделать средствами Autorun.
Я вчера прикидывал, не думаю, что имеющихся функций хватит на реализацию такого...
Аватара пользователя
yozhik
Сообщения: 353
Зарегистрирован: Вс май 04, 2014 20:34
Откуда: Электросталь

Сообщение yozhik »

Loopback
При запуске 64-битного TC не работает MsgBox! На 32-битном работает. У меня TC комбинированный (ну, и Win 10 21H2, на всякий случай). Я уж из aucfg всё удалил, оставил один только MsgBox (ну, и Pragma AutorunFinalizeSection). Не работает. Откатился на 2.2.4 — тоже не работает.
Loopback писал(а):в истории изменений упоминал
Да, точно, есть в истории, а я прозевал. А в справке нет.
Loopback писал(а):Надо заполнить ключевые слова, тогда и индекс появится.
А пока не появился, буду своим любоваться :)
Loopback писал(а):это даже не ограничение, точно так же можно и в ФЗ ее записать, просто смысла ноль
Да, что смысла ноль, это понятно. Но я ради интереса пробовал её в ФЗ по всякому записать — плагин то ругался, то игнорировал. Значит пусть остаётся красной в подсветке.
Loopback писал(а):какого-то существенного влияния на производительность это всё не окажет
Для меня ценен такой отзыв, потому что я сам не очень в этом разбираюсь. Спасибо.
Loopback писал(а):не думаю, что имеющихся функций хватит на реализацию такого...
А вот это очень жаль. Ах, как жаль. Но TWinkey всё равно буду отключать потихоньку.

sa
sa писал(а):У меня не про команду, а про параметр
Ну, вот, второй фэйспалм у меня за неделю :) Прошу пардону и спасибо.

Добавлено спустя 2 часа 1 минуту:

Loopback
Взялся я в DIALOG_COPYMOVE поправить надпись у чекбокса MD5 (она у меня обрезалась по правому краю, видимо из-за шрифта Segoe UI) и выяснилось, что в 64-бит работа с контролами происходит не так, как ожидалось (при том, что в 32-бит всё чётко). Если при помощи инспектора окон посмотреть instance необходимых контролов, то должен работать такой код:

Код: Выделить всё

If StrPos(%CRNTLNG%, "RUS") > 0 Then
  If %AUTORUN_TCARCH% = 32 Then
    AddDialog DIALOG_COPYMOVE
    AddControl /W:-10     "TMyCheckBox" 3
    AddControl /X:-4 /W:5 "TMyCheckBox" 1
  Else
    AddDialog DIALOG_COPYMOVE
    AddControl /W:-10     "Button" 9
    AddControl /X:-4 /W:5 "Button" 6
  EndIf
EndIf
но он не работает. А работает вот этот:

Код: Выделить всё

If StrPos(%CRNTLNG%, "RUS") > 0 Then
  If %AUTORUN_TCARCH% = 32 Then
    AddDialog DIALOG_COPYMOVE
    AddControl /W:-10     "TMyCheckBox" 3
    AddControl /X:-4 /W:5 "TMyCheckBox" 1
  Else
    AddDialog DIALOG_COPYMOVE
    AddControl /W:-10     "Button" 4
    AddControl /X:-4 /W:5 "Button" 1
  EndIf
EndIf
Т.е. в 64-бит контролы определяются не по их instance, как по идее должно было быть, а по счёту в дереве (не знаю, насколько внятно получилось описать). Это нормальная ситуация?
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

yozhik писал(а):При запуске 64-битного TC не работает MsgBox!
Да, об этом даже в справке написано, что может не работать. Причина до конца не ясна. Может надо бы вернуться к этому вопросу, но время.
yozhik писал(а):А в справке нет.
Есть, только я ошибся с разделом, в "Установке". Добавлю подробнее.
yozhik писал(а):Т.е. в 64-бит контролы определяются не по их instance, как по идее должно было быть, а по счёту в дереве (не знаю, насколько внятно получилось описать). Это нормальная ситуация?
А что такое instance? Это и есть порядковый номер в дереве. С этим лазарусом, смотрю, постоянно какой-то бардак, то комбобоксы не растягиваются, теперь почему-то номера не совпадают. У меня, например, 4 и 1 другие контролы изменяют. Но и 9 с 6 тоже не работают. В 10.51. Не знаю в общем. Меньше всего на свете хочется тратить время на все эти диалоги.
Аватара пользователя
yozhik
Сообщения: 353
Зарегистрирован: Вс май 04, 2014 20:34
Откуда: Электросталь

Сообщение yozhik »

Loopback писал(а):С этим лазарусом, смотрю, постоянно какой-то бардак
Эх, вот ведь. Да я то теперь немного разобрался, но только потому, что было ночью время. Если бы не было, то так бы и бросил «несолоно хлебавши». Инспекторы окон, которые у меня есть, включая Au3Info, показывали Button Instance 6. Хорошо, додумался посмотреть дерево в Spy++ и тупо пальцем сверху посчитать: вижу, да, по порядку 6й button, но первые пять отображаются серым цветом, значит возможно они не учитываются. Написал Button 1 — заработало. Много ли пользователей будут этот путь проходить? Обычно же как: справку прочёл, сделал как написано, если не работает, то прости-прощай.
Loopback писал(а):В 10.51.
Да, я тоже в нём.
Loopback писал(а):Меньше всего на свете хочется тратить время на все эти диалоги.
Хорошо.

Код: Выделить всё

SetHotkeyAction /K:C /K:S /H:N SendCommand cm_Config
В 32-бит работает до N раза. Нажимаю — открывает окно Конфигурация, как и должен. И так до 5 раз. На 6й раз открывает диалог Соединение ftp (т.е. тот, который в TC на Ctrl+Shift+N по умолчанию) и после этого Конфигурацию уже не открывает ни разу. И так до перезагрузки TC. Иной раз на 5й раз слетает, иной раз на 6й, иной — на 10й. В 64-бит всё работает чётко. И ещё, из справки:
Внутренняя команда Autorun. Если не задана, то никакого действия выполняться не будет, а имеющееся действие данного сочетания будет заблокировано.
Т.е. при записи «SetHotkeyAction /K:C /K:S /H:N» ничего не должно происходить, в том числе и «имеющееся действие», т.е. умолчательное в TC — открытие диалога ftp. Так? Но у меня ftp открывается.
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

yozhik писал(а):Много ли пользователей будут этот путь проходить? Обычно же как: справку прочёл, сделал как написано, если не работает, то прости-прощай.
Да, поведение разумеется ненормальное, но у меня пока нет идей, почему так может быть, и нет времени, чтобы с этим разбираться.
yozhik писал(а):В 32-бит работает до N раза.
В своей текущей версии не смог повторить, много раз тыкал. Так что возможно уже исправлено. Если в следующей бете сохранится проблема, тогда будем смотреть.
yozhik писал(а):Т.е. при записи «SetHotkeyAction /K:C /K:S /H:N» ничего не должно происходить
Знаю про этот баг, уже исправлено.
Аватара пользователя
jentoso
Сообщения: 443
Зарегистрирован: Чт дек 20, 2007 01:36

Сообщение jentoso »

yozhik писал(а):скрипт ChmKeyword.js
В самом скрипте зашито место размещения справки?
TC 11.58 combo, Windows 11 x64
Аватара пользователя
yozhik
Сообщения: 353
Зарегистрирован: Вс май 04, 2014 20:34
Откуда: Электросталь

Сообщение yozhik »

jentoso
Нет, параметром -File= передаётся вместе с расширением. В архиве выше я запаковал пример. Вот ещё другой вариант/пример, с подгрузкой из внешнего файла. Если об этом продолжать, то давайте, пожалуйста, лучше в тему Akel'я на руборде переедем или в ПМ, а то влетит обоим за офтоп)).

Loopback
Loopback писал(а):нет времени, чтобы с этим разбираться
Добро, добро. Я то в целом всем доволен. Ждём новую бету.
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

Версия 2.2.8 beta

+ прописаны ключевые слова для индекса в справке
* дополнены и документированы неявные преобразования типов в условиях
- исправлено падение ТК при установке плагина через интерфейс в опциях
+ Tweaks: дополнительные опции выравнивания меню для ShowPopupMenu
- Tweaks: пустая команда в SetHotkeyAction не блокировала заданную комбинацию клавиш
- Tweaks: исправлена работа модификатора Alt в SetHotkeyAction
- исправлено падение ТК x64 при попытке чтения файлов (например, в LngRead), если переданное имя было каталогом
- определение факта отсутствия закрывающих блоков (EndIf, EndFunc и т.д.)
Аватара пользователя
imig73
Сообщения: 285
Зарегистрирован: Вт июн 18, 2013 13:21
Откуда: г. Иркутск

Сообщение imig73 »

Loopback
Всё по делу, всё клёво и очень впечатляет что плагин развивается. Просто респект и уважуха. Тока ссылка на закачку в полном игноре у программы Dounload Manager, качаем браузером.
Ответить