SynWrite (Syn2)
Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер
4. Есть идея про перемещения каретки.
Существует симметрия "начало слова"/"конец слова". Не знаю как реализован текущий механизм перемещений, но почти уверен, что в нем где-то делается выбор из двух вариантов: обнаруживать следующую позицию с помощью шаблона пробел-буква или с помощью шаблона буква-пробел (упрощаю, но надеюсь идея понятна). Предлагаю вместо группы похожих команд
- прыжок вправо с остановкой в конце слова
- прыжок влево с остановкой в конце слова
- прыжок вправо с остановкой в конце слова с выделением
- прыжок влево с остановкой в конце слова с выделением
- ... (остальные: вертикальное выделение и пр.)
добавить в Син режим с двумя состояниями
- перемещать по началам слов (текущая функциональность)
- перемещать по концам слов (недостающая функциональность)
Этот режим (по моим представлениям) будет переключать между упомянутыми выше внутренними шаблонами поиска.
Нужны две команды для переключения этого режима.
Вот как я представляю точное выделение слова с помощью такого режима.
- переключение (если нужно): режим="по началам"
- прыжок в начало слова
- переключение: режим="по концам"
- прыжок в конец с выделением
- переключение (если нужно): режим="по началам"
Такая последовательность команд может быть выполнена и руками (это еще не экономия нажатий), и в макросе (тогда вызов макроса - это реальная экономия).
Существует симметрия "начало слова"/"конец слова". Не знаю как реализован текущий механизм перемещений, но почти уверен, что в нем где-то делается выбор из двух вариантов: обнаруживать следующую позицию с помощью шаблона пробел-буква или с помощью шаблона буква-пробел (упрощаю, но надеюсь идея понятна). Предлагаю вместо группы похожих команд
- прыжок вправо с остановкой в конце слова
- прыжок влево с остановкой в конце слова
- прыжок вправо с остановкой в конце слова с выделением
- прыжок влево с остановкой в конце слова с выделением
- ... (остальные: вертикальное выделение и пр.)
добавить в Син режим с двумя состояниями
- перемещать по началам слов (текущая функциональность)
- перемещать по концам слов (недостающая функциональность)
Этот режим (по моим представлениям) будет переключать между упомянутыми выше внутренними шаблонами поиска.
Нужны две команды для переключения этого режима.
Вот как я представляю точное выделение слова с помощью такого режима.
- переключение (если нужно): режим="по началам"
- прыжок в начало слова
- переключение: режим="по концам"
- прыжок в конец с выделением
- переключение (если нужно): режим="по началам"
Такая последовательность команд может быть выполнена и руками (это еще не экономия нажатий), и в макросе (тогда вызов макроса - это реальная экономия).
Win7x64(1600x900), TC8.50x32, SynWrite 6.19, CudaText 1.3.14, UV 6.5.0.0
- Ciber SLasH
- Сообщения: 209
- Зарегистрирован: Сб авг 20, 2005 21:41
- Откуда: С.-Петербург
- Ciber SLasH
- Сообщения: 209
- Зарегистрирован: Сб авг 20, 2005 21:41
- Откуда: С.-Петербург
Смотрим:Alextp писал(а):Beta. много вещей done(смотрим History)
1. "Extend selection" - отлично! Это гораздо лучше моей идеи с "режимом для перемещений", так как убивает сразу толпу зайцев. По реализации есть вопрос: что ожидалось при поиске с включенным Extend, если ищется единственный фрагмент и он внутри уже выделенного текста? Сейчас не происходит ничего.
2. "mouse over tab caption -> filename shown in statusbar" - хорошо, что не в tooltip :). Можно ли там же отобразить дату последней модификации и размер?
3. "Activate right view tab #1..#10" - хорошо. Могут ли сочетания назначенные на эти команды (у меня это Shift+Alt+1,..) отображаться в меню Window?
Тут есть неоднозначность, например, если в левой панели три таба, то к первому табу в правой панели можно сейчас перейти и по Alt+4 и по Shift+Alt+1. В меню при этом отображается Alt+4. Желательно отображать в меню Window для "правых" табов (в меню они нижние) новые назначенные сочетания.
4. "Move views splitter to left/right" - спасибо.
5. About показывает сборку 3.5.1140. History - 3.5.1180. Что-то не обновилось?
Win7x64(1600x900), TC8.50x32, SynWrite 6.19, CudaText 1.3.14, UV 6.5.0.0
1.что ожидалось при поиске с включенным Extend...внутри уже выделенного текста
Для этого случая выделение не extend'ится
2.Можно ли там же отобразить дату последней модификации
думаю нет- и так места мало на экране 1024px. Даже путь не всегда влезет
3.сочетания назначенные на эти команды отображаться в меню Window?
думаю нет- и так сочетания отображаются из hotkeys "Activate tab 1..10"
Добавлено спустя 50 секунд:
5. поправлю
Для этого случая выделение не extend'ится
2.Можно ли там же отобразить дату последней модификации
думаю нет- и так места мало на экране 1024px. Даже путь не всегда влезет
3.сочетания назначенные на эти команды отображаться в меню Window?
думаю нет- и так сочетания отображаются из hotkeys "Activate tab 1..10"
Добавлено спустя 50 секунд:
5. поправлю
Что может мешать? Почему появляется выделенный случай?Alextp писал(а):1.что ожидалось при поиске с включенным Extend...внутри уже выделенного текста
Для этого случая выделение не extend'ится
В каждый момент известно место, где начинается выделение (до вызова Поиска) и (после поиска) где оно должно закончится - нужно выделять "от и до":
- если новый конец дальше предыдущего конца, то выделение расширяется,
- если - внутри, то выделение сужается,
- если перед началом выделения, то выделение "выворачивается", то есть направлено к началу файла.
Win7x64(1600x900), TC8.50x32, SynWrite 6.19, CudaText 1.3.14, UV 6.5.0.0
Описанная выше логика "от и до" более естественна для этой функции - она следует общей логике выделения: Extend это прямой аналог Shift, сам поиск - это прямой аналог перемещений каретки пользователем. СравнитеAlextp писал(а):Почему мешает, просто логика такая: расширение = слияние отрезков. новый A = min(a1,a2), новый B=max(b1,b2)
Shift+Right ~~ Extend+(Find_Forward) (работает сейчас)
Shift+Left ~~ Extend+(Find_Backward) (неработает сейчас)
Еще пожелание. Я в восторге от Extend (но не от логики слияния отрезков). Это опция диалога напомнила, что у меня есть очень давнее желание иметь такую же возможность без диалога. Можете реализовать? Потребность простая: к командам "изменить выделение на символ/слово/до конца/до начала" добавить команду "изменить выделение до следующего|предыдущего найденного фрагмента".
НормальноAlextp писал(а):Проверьте перехват вставки
Win7x64(1600x900), TC8.50x32, SynWrite 6.19, CudaText 1.3.14, UV 6.5.0.0
ПустьAlextp писал(а):можете написать "формулу" слияния? у меняkvichans писал(а):добавить команду "изменить выделение до следующего|предыдущего найденного фрагмента".
[a1,b1]+[a2,b2] -> [min(a1,a2), max(b1,b2)]
[Н,К1] - текущее выделение (К1 - позиция каретки, К1 может быть и больше и меньше и равно Н),
[Ф1,Ф2] - следующий найденный фрагмент.
тогда новое выделение будет
[Н,К2], где
К2 - это новая позиция каретки и К2 = IIF( Ф2<=Н, Ф1, Ф2 )
Пояснения
- Н всегда остается без изменений.
- Если найденный фрагмент левее Н, то выделение будет "вывернутое", и позиция каретки будет указывать на начало найденного фрагмента.
- Если найденный фрагмент правее Н, то будет "прямое" выделение, каретка укажет конец найденного фрагмента.
- Если фрагмент накрывает Н, то выделение будет меньше найденного фрагмента (в остальных случаях найденный фрагмент будет включен в выделение). По приведенной выше формуле будет всегда показываться хвост фрагмента.
- Можно добавить в формулу учет направления поиска, чтобы получалась полная аналогия с поиском с Shift (см выделение слова при исходной позиции внутри этого слова):
если поиск Forward, то (как выше)
К2 = IIF( Ф2<=Н, Ф1, Ф2 )
если поиск Backward, то
К2 = IIF( Ф1>=Н, Ф1, Ф2 )
При такой реализации изменится только выделение, когда фрагмент накрывает Н - будет выделять хвост при поисках вперед, и голова при поисках назад
Win7x64(1600x900), TC8.50x32, SynWrite 6.19, CudaText 1.3.14, UV 6.5.0.0