Page 2 of 2

Re: EditCase — Преобразование регистра выделенного текста

Posted: Thu 15 Sep, 2011 10:49
by John Doe

Latest post of the previous page:

Помнится эта проблема обсуждалась, и выяснилось что такова уж особенность/ограничение callplugin.
Тут можно либо научить плагины выполнять сразу нужные действия (по заданному параметру callplugin), либо дождаться наконец реализации макрофункций предоставляемых плагинами (ProcessMacroFuncW).

Какова политика партии по этому вопросу я не знаю, самому интересно.
?

Re: EditCase — Преобразование регистра выделенного текста

Posted: Thu 15 Sep, 2011 10:54
by Kerberos464
похоже, вы правы, и проблема не в плагинах, а в самом CallPlugin.

Re: EditCase — Преобразование регистра выделенного текста

Posted: Thu 15 Sep, 2011 11:07
by Max Rusov
Вызов CallPlugin (и у макрофункций так же будет, если я правильно понял) - синхронный, т.е. пока плагин не вернул управление следующие команды не отрабатываются. Наверное, иначе и быть не может. Хуже то, что во время этого синхронного вызова макродвижек вообще заблокирован (http://bugs.farmanager.com/view.php?id=1280). Можно ли обойти эту проблему, без серьезного переписывания макродвижка - не знаю, пока что не получилось.

Re: EditCase — Преобразование регистра выделенного текста

Posted: Thu 15 Sep, 2011 11:09
by Skirda
Штатная работа функции callplugin.
Многого отнее не ждите, т.к. функция временная и предназначена исключительно для вызова плагина и передачи каки-либо данных, не более.
Во время работы функции текущая последовательность замораживается (до тех пор, пока функция не отработает - т.е. плагин не выйдет из OpenW).
Вариант решения - как в .

Re: EditCase — Преобразование регистра выделенного текста

Posted: Thu 15 Sep, 2011 11:14
by John Doe
Skirda wrote:Многого отнее не ждите, т.к. функция временная [...]
Уже прижилась.
И что значит "временная", неужели после реализации ProcessMacroFuncW её планируется убрать?

Re: EditCase — Преобразование регистра выделенного текста

Posted: Thu 15 Sep, 2011 11:49
by Skirda
скорее всего превратится во что-то более ассинхронное.

Re: EditCase — Преобразование регистра выделенного текста

Posted: Thu 15 Sep, 2011 11:49
by Skirda
Kerberos464 wrote:
zg wrote:на мантис.
сделано: 1880 и 1881.
И что мы здесь хотим видеть?

Re: EditCase — Преобразование регистра выделенного текста

Posted: Thu 15 Sep, 2011 12:21
by Kerberos464
Skirda wrote: И что мы здесь хотим видеть?
это очевидно - продолжения работы макроса во время CallPlugin. но теперь понимаю, что это невозможно =(
вначале думал, что проблема в плагинах EditCase и Brackets, а не в реализации CallPlugin, поэтому и сделал такие тикеты.

Re: EditCase — Преобразование регистра выделенного текста

Posted: Thu 15 Sep, 2011 13:56
by Skirda
Писатель! facepalm2

Hint[1]: сейчас editcase и brackets никак не обрабатывают ситуацию, когда их вызывают из макросов посредством callplugin.
Hint[2]: callplugin может передавать вызываемому плагину число либо строку.
Hint[3]: drawline ждет от callplugin строку, которую интерпретирует как макрос, который нужно запостить ФАРу.
Hint[4]: если callplugin вызывал плагин и передал строку-макропоследовательность и отдал ФАРу, то макродвиг "пушит" текущую машину, создает новую и запускает макрос (после отработки "попит" пред. машину)

Еще раз (с учетом того, что я рассказал выше и ранее) - "И что мы здесь хотим видеть?" (что конкретно мы хотим получить от этих плагинов, когда они вызываются из callplugin?)

Re: EditCase — Преобразование регистра выделенного текста

Posted: Thu 15 Sep, 2011 14:05
by Kerberos464
а, ну так бы сразу и сказал =)
по поводу editcase - пусть плагин принимает через callplugin одно из пяти значений (1 - uppercase, 2 - lowercase и т.д.).
по brackets - аналогично, одно из двух значений (допустим, 1 - search bracket, 2 - search and select).

дописать это в тикеты 1880 и 1881?
Skirda wrote:Писатель! facepalm2
и это.. я ж хотел, как лучше, однако отсутствие программистской мысли сказывается =)

Re: EditCase — Преобразование регистра выделенного текста

Posted: Fri 16 Sep, 2011 19:29
by SUSim
Идеал, может быть, и не достижим, но к нему стоит стремиться...
По существу: пока работает макрос-плагин пользователь отдыхает... асинхронность в этом вопросе неприемлема, кроме прерывания работы конечно, Хотелось бы в это время вызвать другой плагин который ни как не зависит от работы фара типа: калькулятора, проигрывателя и ... но таких немого, и ради них городить глобальную асинхронность и огребать кучу глюков-коллизий ну нафик!!!

EditCase Hotkeys

Posted: Mon 24 Nov, 2014 06:15
by LanKing
Есть такой замечательный плагин: EditCase. Идёт в комплекте поставки FARа, умеет менять регистр слов в частности в редакторе.

Подумалось мне, что функционал смены регистра слова через вызов меню -> плагина как-то слишком сложен, настолько сложен, что никто не полезен в плагин а поменяет регистр руками. Поэтому, запилил макрос с хоткеями:

CtrlAlt+L: все строчные
CtrlAlt+T: Начинать С Прописных
CtrlAlt+U: ВСЕ ПРОПИСНЫЕ
CtrlAlt+G: иЗМЕНИТЬ рЕГИСТР
CtrlAlt+C: Циклическое изменение

EditCase — Преобразование регистра выделенного текста

Posted: Mon 24 Nov, 2014 06:21
by LanKing
Подумалось мне, что функционал смены регистра слова через вызов меню -> плагина как-то слишком сложен, настолько сложен, что никто не полезен в плагин а поменяет регистр руками. Поэтому, запилил макрос с хоткеями:

CtrlAlt+L: все строчные
CtrlAlt+T: Начинать С Прописных
CtrlAlt+U: ВСЕ ПРОПИСНЫЕ
CtrlAlt+G: иЗМЕНИТЬ рЕГИСТР
CtrlAlt+C: Циклическое изменение

http://forum.farmanager.com/viewtopic.php?f=60&t=9174

EditCase — Преобразование регистра выделенного текста

Posted: Mon 24 Nov, 2014 08:20
by John Doe
LanKing, у раздела, в котором вы пытались разместить две своих последние темы, есть правила.

EditCase — Преобразование регистра выделенного текста

Posted: Mon 24 Nov, 2014 08:24
by John Doe
По теме.
Действительно, есть смысл добавить в дистрибутив соответствующий макрос.

Вот так на мой взгляд аккуратнее:

Code: Select all

local shortcuts = {
  ["CtrlAltL"] = "Lower", 
  ["CtrlAltT"] = "Title", 
  ["CtrlAltU"] = "Upper", 
  ["CtrlAltG"] = "Toggle",
  ["CtrlAltC"] = "Cyclic",
}
for key,cmd in pairs(shortcuts) do
  Macro { description="Change case: "..cmd;
    area="Editor"; key=key;
    action = function()
      Plugin.Call("0E92FC81-4888-4297-A85D-31C79E0E0CEE", cmd);
    end
  }
end

EditCase — Преобразование регистра выделенного текста

Posted: Mon 24 Nov, 2014 21:34
by LanKing
Красиво.