Редакторное событие сохранения файла?
Редакторное событие сохранения файла?
Как насчет добавить редакторное событие сохранения файла?
в котором сохранение файла "как обычно" редактором может быть замещено пользовательским кодом/операцией.
Сделать это по аналогии с другими евентами, например,
как мне кажется что ConsoleInput event довольно близок по задаче и функционалу.
Use case.
Мы сидим в редакторе, делаем там например всякие кустарные фолдинги и враппинги,
и строки в результате представляют собой не то что должно сохранится в файл.
Если бы был такой евент сохранение, то можно было бы восстановить нужный порядок.
Перехватывать F2 не получится, потому что, например, есть еще и неперехватываемый editor.SaveFile().
Если будет интерес, то приведу более подробно желаемый функционал в Луа-коде.
в котором сохранение файла "как обычно" редактором может быть замещено пользовательским кодом/операцией.
Сделать это по аналогии с другими евентами, например,
как мне кажется что ConsoleInput event довольно близок по задаче и функционалу.
Use case.
Мы сидим в редакторе, делаем там например всякие кустарные фолдинги и враппинги,
и строки в результате представляют собой не то что должно сохранится в файл.
Если бы был такой евент сохранение, то можно было бы восстановить нужный порядок.
Перехватывать F2 не получится, потому что, например, есть еще и неперехватываемый editor.SaveFile().
Если будет интерес, то приведу более подробно желаемый функционал в Луа-коде.
- buniak_a_h
- Posts: 4262
- Joined: Sat 20 Apr, 2013 00:17
- Location: Санкт-Петробад
- Has thanked: 222 times
- Been thanked: 644 times
- Contact:
Редакторное событие сохранения файла?
Если Вы пользуетесь моими скриптами "в помощь макрописцам" в комплекте с Active Help, то найдите far.Flags.EE_SAVE и нажмите Ctrl+F1. Это - событие (из энциклопедии): Отредактированный файл собираются сохранять. Увы, передаётся таблица EditorSaveFile, в которой есть кодовая страница, но нет флажка BOM. Забыли, видимо…
В описании флага почему-то написано:
В описании флага почему-то написано:
Я ещё не пробовал, но по логике там должно быть нечто типа "можно/низзя сохранять"Функция ProcessEditorEventW должна вернуть 0.
- NightRoman
- Posts: 6184
- Joined: Fri 18 Aug, 2006 13:52
- Location: Cambridge, UK
- Has thanked: 32 times
- Been thanked: 62 times
- Contact:
Редакторное событие сохранения файла?
Из энц., хотя и неявно, следует, что нельзя отменить сохранить файла. Хорошо, если это не так, тогда энц. должна бы это явно отметить.
- NightRoman
- Posts: 6184
- Joined: Fri 18 Aug, 2006 13:52
- Location: Cambridge, UK
- Has thanked: 32 times
- Been thanked: 62 times
- Contact:
Редакторное событие сохранения файла?
Есть похожий тикет -- https://bugs.farmanager.com/view.php?id=465
- buniak_a_h
- Posts: 4262
- Joined: Sat 20 Apr, 2013 00:17
- Location: Санкт-Петробад
- Has thanked: 222 times
- Been thanked: 644 times
- Contact:
Редакторное событие сохранения файла?
NightRoman, citRiks!
Проверил. Отменить, увы, нельзя. В описании export.ProcessEditorEvent написано:
Но, короче, событие такое есть.
Проверил. Отменить, увы, нельзя. В описании export.ProcessEditorEvent написано:
Увы. по-моему, от result ничего не зависит.Returns:
result: integer
Но, короче, событие такое есть.
- buniak_a_h
- Posts: 4262
- Joined: Sat 20 Apr, 2013 00:17
- Location: Санкт-Петробад
- Has thanked: 222 times
- Been thanked: 644 times
- Contact:
Редакторное событие сохранения файла?
Тикет, вроде, о другом, но там упомянута некая зависимость от результата обработки события EE_SAVE. Хотя весь тикет относится только к редактирования не-файла (а массива строк), и в зависимости от результата обработки события EE_SAVE только очищается или нет флаг Changed.NightRoman wrote: ↑Fri 18 Sep, 2020 07:31 Есть похожий тикет -- https://bugs.farmanager.com/view.php?id=465
- NightRoman
- Posts: 6184
- Joined: Fri 18 Aug, 2006 13:52
- Location: Cambridge, UK
- Has thanked: 32 times
- Been thanked: 62 times
- Contact:
Редакторное событие сохранения файла?
Тикет похожий. В случае со сверткой свернутое представление не нуждается в физическом файле на диске, так ведь?
Редакторное событие сохранения файла?
Да, основный смысл не получить событие от обработки которого ничего не зависит, а отменить сохранение, и сделать свое сохранение.NightRoman wrote: ↑Fri 18 Sep, 2020 07:46 Тикет похожий. В случае со сверткой свернутое представление не нуждается в физическом файле на диске, так ведь?
что же касается "не нуждается в сохранении", то на мой взгляд, еще как нуждается,
но сохранятся должно с обратными преобразованиями целиком конечно.
Наиболее примитивно предполагаемый сценарий такой:
1.) Фар шлет евент сохранения SAVE_INTENT если есть существующий обработчик, ждет ответа от обработчика не сохраняя файл
2.) Обработчик вернул на место спрятанные строки, и дал сигнал "добро" (вернул ноль, или ниль, не помню как принято)
3.) Фар сохраняет восстановленное, ему пофиг, тут логика не меняется
Упс, а вот тут кажется нужен еще один евент, "SAVE_DONE"
4.) Обработчик получает SAVE_DONE, прячет обратно то что должно быть спрятанно, восстанвливает позицию курсора.
Редакторное событие сохранения файла?
я не есть супер-хороший искальщик тикетов к сожалению, но именно этот тикет я видел,NightRoman wrote: ↑Fri 18 Sep, 2020 07:31 Есть похожий тикет -- https://bugs.farmanager.com/view.php?id=465
и этот тикет совсем не то что я предлагаю, идеологически и практически, и думаю что сложнее в реализации.
А мне надо просто добавить тонкий "pre-save processing" что ли.
Проще говоря, мне не надо чтобы редактор начал считаться вдруг "безфайловым" на моем обычном текстовом файле,
в котором сделан обычный простой враппинг.
Хотя в других сценариях вами предложенное может быть безусловно полезным, и по вторoй мысли,
ваше предложение тоже не выглядит особо сложным
- buniak_a_h
- Posts: 4262
- Joined: Sat 20 Apr, 2013 00:17
- Location: Санкт-Петробад
- Has thanked: 222 times
- Been thanked: 644 times
- Contact:
Редакторное событие сохранения файла?
Начать редактирование без файла легко. Введите имя несуществующего файла - и вплоть до сохранения он так и будет только в памяти.NightRoman wrote: ↑Fri 18 Sep, 2020 07:46 свернутое представление не нуждается в физическом файле на диске, так ведь?
Конкретно о свёртке. Тут главное - не сохранить вместо исходного. Иначе можно случайно остаться с половиной файла. Я перехватываю клавиши сохранения, но, как правильно было указано, сохранить файл можно и без клавиатуры. Поэтому, конечно, лучше бы, чтоб возврат из обработчика события учитывался именно как разрешение/запрет сохранения. Так делается во многих других местах (например, в событиях диалога DN_CLOSE, DN_BTNCLICK).