buniak_a_h wrote: В статусной строке (сверху) отображать не номер сжатой строки, а исходный номер.
Есть апи для изменения статусной строки, но только левой части, где отображается имя файла.
Не исключаю, что можно "рисовать" что-то и в правой части вручную (far.Text), но мне кажется игра не стоит свеч.
buniak_a_h wrote: При включенном сжатом режиме отмечать цветом всю текущую строку
Есть апи раскраски, есть примеры несложных скриптов на форуме, см. например "Cross" в подфоруме полезных скриптов.
buniak_a_h wrote: Не устанавливать признак изменения файла
Вряд ли это возможно...
buniak_a_h wrote: Во всяком случае, возникает переполнение стэка.
Покажите код, посмотрим что не так.
Но для начала оформите первый пост темы.
P.S.
Находить ошибки в коде неплохо помогает luacheck.
John Doe wrote: Есть апи для изменения статусной строки, но только левой части, где отображается имя файла
Я это и имел в виду. Сейчас я вывожу вместо имени файла «<Имя_файла> Condenced». Туда же после двоеточия можно было бы писать номер исходной строки. Проблема в том, как отследить перемещение по файлу.
John Doe wrote: Есть апи раскраски
Это я тоже уже видел. Проблема та же: как обнаружить перемещение по файлу, чтобы отменить раскраску предыдущей строки и раскрасить нынешнюю.
John Doe wrote: buniak_a_h писал(а):
Источник цитаты Не устанавливать признак изменения файла
Вряд ли это возможно...
Возможно, есть способ не удалять строки, а просто делать их как-то невидимыми... Это решило бы многие проблемы.
John Doe wrote: Покажите код,
В тексте макроса закомментировано Event {...} и подписка. И главное
John Doe wrote: для начала оформите первый пост темы
Я никогда не имел дело с форумами. Что значить "оформить первый пост"? Закачать в него исходный текст макроса? Все почти 200 строк? "Добавить файл" - не пускают (неверно расширение). Где хоть прочитать, какие можно, какие нельзя?
buniak_a_h wrote: Проблема та же: как обнаружить перемещение по файлу, чтобы отменить раскраску предыдущей строки и раскрасить нынешнюю.
Где лежит пример рабочего кода я вроде написал
buniak_a_h wrote: не удалять строки, а просто делать их как-то невидимыми...
Этого к сожалению нету. Оформите пожелание на багтрекере.
buniak_a_h wrote: Что значить "оформит первый пост"
Во-первых исправить заголовок (но это уже сделал за вас кто-то из модераторов).
Во-вторых, оформить пост с тем расчётом, что он будет повторяться на каждой странице.
В-третьих, поддерживать там актуальную версию макроса.
(это на будущее)
buniak_a_h wrote: "Добавить файл" - не пускают (неверно расширение).
Да, есть такое ограничение, вероятно администраторам трудно добавить lua в список разрешённых расширений.
Упакуйте в архив.
buniak_a_h wrote: Тега [codebox] не знаю...Не нашёл
Если нажать большую кнопку Ответить, то в открывшейся форме вы его увидите (выпадающий список с надписью Select code).
(Вместо того, чтобы спрашивать, можно было поискать на форуме по слову codebox.)
Всем спасибо, макрос работает практически как задуман. Если кто знает, как выключить курсор - это был бы последний штрих. Но это уже эстетство.
Мои сотрудники по программистскому цеху уже вовсю используют его, явных ошибок не выявлено. Если кто знает, как это сделать - прошу закачать на Plug Ring.
Нсчёт шапки темы, отображаясь на каждой странице она сейчас смотрится странновато: я бы на вашем месте оставил бы из имеющегося там только первый абзац, но подробнее остановился на функциях макроса.
P.S.
Макрос на яндексе отличается, и неясно какой же новее.
Или приведите в соответствие, или удалите ссылку.
Ещё по багам: похоже макрос не учитывает, что
1) на момент его загрузки уже могут быть открытые редакторы
2) в момент его выгрузки редакторы могут быть ещё открыты (подозреваю в этом их надо "расконденсировать")
3) editor.GetInfo() может вернуться с ошибкой
4) Конденсированный файл можно сохранить, т.к. EE_SAVE не обрабатывается.
5) Отступы табуляциями не обрабатываются
Не баги, но
1) в Event condition не нужен, т.к. соответствующая проверка дублируется в ProcessEditorInput
2) в CondViewOff вместо EditorsCondView[EID].Ends = true; cтоит сделать EditorsCondView[EID] = nil
3) Там же: один раз получив EditorsCondView[EID] стоит записать в локальную переменную, это улучшит читаемость кода
4) ";" в конце строк не нужна
5) Поле .RO_Curr нигде не используется.
6) Вместо ProcessEditorInput не лучше ли привязаться к EE_REDRAW?
7) Вместо
if EditorsCondView[editor.GetInfo().EditorID] then
return true
end
а ещё короче и нагляднее return EditorsCondView[editor.GetInfo().EditorID].
8) OnProcess может быть не таблицей, а простой логической переменной, ведь одновременный ввод в разных редакторах не предполагается обрабатывать?
9) Что если вместо модификации активного редактора для Condenced View открывать новый?
Про luacheck: Вы уверены, что он правильно анализирует? Получаю ошибку mutating read-only global variable ... . На самом деле (а) я не понимаю, почему эта переменная read-only; (б) она в этом месте прекрасно инициализируется; если б этот оператор не работал, вообще ничего не работало бы.
Я извиняюсь за мой Lua=нский, никогда не сталкивался с этим языком. Не знаю таких основополагающих понятий, как "глобальная" переменная, область видимости и т.п. . Знаком с двумя подходами: (а) как в почти всех языках (область видимости - блок и вложенные); (б) переменная видна всем с момента создания и до момента уничтожения, если явно не указано, что она локальная (как в Clippere и некоторых скриптовых языках с общим пространством имён). Очень надеюсь, Вы не будете смеяться или ругаться.
John Doe wrote: похоже макрос не учитывает, что (...) на момент его загрузки уже могут быть открытые редакторы
На самом деле я думал, что тем, что я получаю editor.GetInfo().EditorID, и в дальнейшем использую полученный EID, тем самым я ограничиваю влияние макроса на один этот редактор (ограничиваю контекст). На всякий случай я проверил : если в момент запуска макроса было запущено несколько редакторов, то "сжатый режим" распространяется только на текущий. Или это - не то?
John Doe wrote: 2) в CondViewOff вместо EditorsCondView[EID].Ends = true; cтоит сделать EditorsCondView[EID] = nil
Так и сделано. Я не понял, почему после EditorsCondView[EID] = nil Event вызывается ещё раз, хотя в condition условие указано. В результате после окончания макроса последняя строка оставалась раскрашенной.
buniak_a_h wrote: Не знаю таких основополагающих понятий, как "глобальная" переменная, область видимости и т.п. .
Всё что вы описали далее в полной мере относится к lua, хотя реализация в фаре имеет и некоторые особенности
Каждый скрипт выполняется в отдельном окружении, и чтобы создать переменную видимую в других скриптах — надо явно адресовать её через _G
buniak_a_h wrote: На всякий случай я проверил : если в момент запуска макроса было запущено несколько редакторов, то "сжатый режим" распространяется только на текущий. Или это - не то?
Да, всё то, в вашем случае действительно не надо учитывать уже открытые редакторы.
buniak_a_h wrote: Я не понял, почему после EditorsCondView[EID] = nil Event вызывается ещё раз, хотя в condition условие указано.
Не знаю что там у вас за проблема, но condition можно убрать, он сейчас не нужен.
Вопросы по форматированию самого CondView.lua.
В некоторых случая в качестве отступа используется один пробел, в некоторых два. Это намеренно?
В декларациях Macro функция codition почему-то оформлена без отступов, т.е. как бы вынесена на самый верхний уровень. Для чего так?
Почему первые 5 строк функции CondViewOn идут без отступа?
Т.е. имеет ли это какой-то особый смысл в свёрнутом виде (т.е. после применения скрипта к собственному коду)?