Virtual string wrap

Здесь обсуждается всё, что касается макросов.
IgorZ
Posts: 660
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 12 times
Been thanked: 52 times

Virtual string wrap

Post by IgorZ »

Скрипт заменяет (пытается, по крайней мере, на данный момент) плагин EditWrap. То есть, в редакторе разбивает длинные строки на виртуальные подстроки шириной в экран редактора.

Клавиша переключения режима: ShiftF3.

Версия 0.5 - Первая публичная. Тестовая. Исправлено (вроде бы, но присмотреться стоит):
  • перепозиционирование курсора не всегда корректно работает;
  • позиционирование строк на экране сбивается - текущая строка убегает вверх.
Версия 0.6 - Тестовая. Исправлено позиционирование экрана при свёртке/развёртке.
Версия 0.61 - Если курсор в самом верху или низу экрана, текст на экране по возможности сдвигается.

Известные проблемы:
  • после обработки события всё равно срабатывает стандартное действие (для сохранения сделал костыль, для отображения виртуальных переносов - увы...);
  • - после WrapOn текст получает признак модификации.
Attachments
EditWrap.lua.0.61.7z
(2.99 KiB) Downloaded 166 times
Last edited by IgorZ on Thu 16 Jan, 2014 09:59, edited 2 times in total.

IgorZ
Posts: 660
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 12 times
Been thanked: 52 times

Re: Virtual string wrap

Post by IgorZ »

В связи с вышеизложенным хочу задать три вопроса.
  1. По оформлению. Не смог указать, что первый пост должен повторяться на каждой странице. Как это сделать?
  2. Судя по документации, сейчас нельзя ни указать Far-у, что событие редактора уже не требует стандартной обработки, ни назначить на событие постобработчик. Если я всё правильно понял, насколько актуально и реализуемо сделать хотя бы один из вышеизложенных вариантов?
  3. Можно ли внести в Far возможность сбрасывать признак модификации, как в бис-версии от Maximus-а?

User avatar
DrKnS
Posts: 5482
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 6 times
Been thanked: 272 times

Re: Virtual string wrap

Post by DrKnS »

1. За это отвечает форумный мод, он мог отвалиться при обновлении. Напишите в обсуждение форума.
2. Напишите в раздел development.
3. В фар можно и нужно внести нормальный word wrap, а не подпорки для костыльных плагинов.

IgorZ
Posts: 660
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 12 times
Been thanked: 52 times

Re: Virtual string wrap

Post by IgorZ »

DrKnS wrote:1. За это отвечает форумный мод, он мог отвалиться при обновлении. Напишите в обсуждение форума.
2. Напишите в раздел development.
3. В фар можно и нужно внести нормальный word wrap, а не подпорки для костыльных плагинов.
1-2. Ок.
3. Нужно, не спорю (иначе не писал бы этот скрипт :) ). Но нет пока. Так что приходится костыли стругать. Ну и хотелость бы, раз без них пока никуда, чтоб хотя бы не натирали. А вообще, управление статусом "сохранено" может оказаться намного универсальнее моего частного случая.

User avatar
DrKnS
Posts: 5482
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 6 times
Been thanked: 272 times

Re: Virtual string wrap

Post by DrKnS »

Так проблема в том, что если выстругать нормальный костыль, который не будет натирать, то нормальной реализации можно уже не ждать. А так всё же мотивация.
А вообще, управление статусом "сохранено" может оказаться намного универсальнее моего частного случая.
Например?

User avatar
NightRoman
Posts: 5919
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 12 times
Been thanked: 14 times
Contact:

Re: Virtual string wrap

Post by NightRoman »

Может быть полезно для сценариев использования редактора не для редактирования файла, а для отображения информации. Есть и пример: в PowerShellFar есть скрипт Watch-Output-.ps1, он периодически запускает команду и показывает ее вывод в редакторе. Сохранять же это дело совершенно не нужно, хотелось бы просто выйти по Esc или F10, но всякий раз при выходе из редактора приходится еще закрывать диалог сохранения. А если был бы АПИ по сбросу флага изменений, то я бы сбрасывал.

(Для таких сценариев еще и этот виш был бы хорош - http://bugs.farmanager.com/view.php?id=465)
Last edited by NightRoman on Fri 25 Oct, 2013 11:19, edited 2 times in total.

User avatar
HaRT
Moderator
Posts: 9231
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 91 times
Been thanked: 195 times

Re: Virtual string wrap

Post by HaRT »

NightRoman wrote:полезено для сценариев использования редактора не для редактирования файла, а для отображения информации
Горячо поддерживаю!
А если ещё когда-нибудь кто-нибудь сделает в редакторе front-end для PuTTY (telnet/SSH), то вообще будет сказка.
Фар есть инструмент, а не нянька. © 2009 DrKnS

Docent1
Posts: 561
Joined: Thu 31 Mar, 2005 23:13
Been thanked: 1 time

Re: Virtual string wrap

Post by Docent1 »

DrKnS wrote:3. В фар можно и нужно внести нормальный word wrap, а не подпорки для костыльных плагинов.
Давно пора!
Last edited by Docent1 on Thu 01 Jan, 1970 01:00, edited 0 times in total.
Reason: Спрятан офтопик
Docent1

ccaid
Posts: 846
Joined: Fri 12 Jun, 2009 16:04
Has thanked: 17 times
Been thanked: 5 times

Re: Virtual string wrap

Post by ccaid »

DrKnS wrote:В фар можно и нужно внести нормальный word wrap, а не подпорки для костыльных плагинов.
времени было много, чтобы кто-то захотел и реализовал. однако, не случилось. значит, кто может — тому не очень-то и нужно, или выигрыш не покрывает вложения. проще же использовать готовый AkelPad (ну, к примеру).

кстати, на костыли возможен и другой взгляд: они могут служить демо-версией и постоянно напоминать — как хорошо было бы с нативной реализацией, если уж с костылями лучше, чем без них.
Фар делают добрые люди

AleXH
Posts: 1000
Joined: Sun 12 Apr, 2009 05:21
Been thanked: 1 time

Re: Virtual string wrap

Post by AleXH »

Так проблема в том, что если выстругать нормальный костыль, который не будет натирать, то нормальной реализации можно уже не ждать. А так всё же мотивация.
Этой мотивации уже лет 8, когда в 2005 эта тема была поднята в первый раз, и если бы не Максимус, написавший плаг-костыль для FAR2, то мотивировались бы и по сей день.

Но, безусловно, свёртка в редакторе нужна нативная, и что бы она касалась лишь отображения текста, без изменения его содержания. Скриптом буфер отката забивается, помимо этого есть и другие минусы такого решения.

IgorZ, спасибо - посимвольный перенос по ShiftF3 это то, что надо.

User avatar
John Doe
Бюрократ
Posts: 12598
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 34 times
Been thanked: 260 times

Re: Virtual string wrap

Post by John Doe »

IgorZ wrote:Известные проблемы:
  • после обработки события всё равно срабатывает стандартное действие (для сохранения сделал костыль, для отображения виртуальных переносов - увы...);
Скрипт вообще рабочий? Можно переносить в "Готовые макросы"?

AleXH
Posts: 1000
Joined: Sun 12 Apr, 2009 05:21
Been thanked: 1 time

Re: Virtual string wrap

Post by AleXH »

Имхо рано. К тому же много заремленного кода имеет.

Ситуация.
Курсор находится за правой границей экрана, например набирали текст в одну строку и экран "ушёл" вправо. Теперь нажимаем ShiftF3 - свёртка произошла, но экран остался на прежней позиции, а курсор находится у его левого края, т.е. весь текст остался "за кадром" слева. Теперь нажмём снова ShiftF3 - текст развернулся, но курсор стоит на \n, а должен на \r.

IgorZ
Posts: 660
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 12 times
Been thanked: 52 times

Re: Virtual string wrap

Post by IgorZ »

John Doe wrote:Скрипт вообще рабочий? Можно переносить в "Готовые макросы"?
Свою работу скрипт выполняет вроде бы корректно. Во всяком случае, ни сам не наблюдал ошибок, ни репортов здесь не было (в предыдущем сообщении первый). Но побочные эффекты, увы, пока неустранимы. Не хотелось бы настолько кривую вещь выкладывать в качестве готовой.

AleXH
Posts: 1000
Joined: Sun 12 Apr, 2009 05:21
Been thanked: 1 time

Re: Virtual string wrap

Post by AleXH »

IgorZ
Разве нельзя при свётке текущую позицию курсора разделить на ширину экрана, тогда целое покажет вертикальный сдвиг курсора для этой строки, а остаток горизонтальный. Затем сдвинуть экран влево до упора и выставить курсор? При разворачивании восстановить позицию курсора.

IgorZ
Posts: 660
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 12 times
Been thanked: 52 times

Re: Virtual string wrap

Post by IgorZ »

AleXH wrote:IgorZ
Разве нельзя при свётке текущую позицию курсора разделить на ширину экрана, тогда целое покажет вертикальный сдвиг курсора для этой строки, а остаток горизонтальный. Затем сдвинуть экран влево до упора и выставить курсор? При разворачивании восстановить позицию курсора.
Это всё делается, кроме сдвига экрана влево/вправо. Сдвиг добавлю.

Post Reply

Return to “Обсуждение макросов”