Я тут обратил внимание на то, как во встроенном редакторе Фара происходит расширение выделенного блока в поточном режиме при нажатии кнопок Ctrl+Shift+стрелка вправо/влево. Происходит это так: если блок расшряется вправо (т.е. мы жмем Ctrl+Shift+Right), то курсор прыгает так, что выделенным оказывается целое слово. При следующем нажатии Ctrl+Shift+Right блок расширяется так, что целиком выделенным оказывается следующее слово. Но если после этого нажать Ctrl+Shift+Left (например, я увидел, что выделил лишнее слово и хочу его выделение сбросить), то блок сужается, но выделенным при этом остается предыдущее слово и следующий за ним пробел.
Не было ли бы логично в этом случае уменьшать блок так, чтобы было ваделено только предыдущее слово (без следующего пробела)? Т.е. чтобы нажатие Ctrl+Shift+Left восстанавливало ситуацию, которая была до нажатия Ctrl+Shift+Right.
Те же самые рассуждения действительны и для ситуации расширения блока влево, а потом его сужения на одно слово.
Я посмотрел, как в этом смысле работают другие редакторы. Они работают по-разному. Notepad++ работает так же, как Фар. TextPad и Word работают по-другому: там при прыгании по словам (неважно, вправо или влево и расшряется при этом блок или сужается) курсор всегда прагает на начало слова. Т.е. при расширении блока вправо всегда выделяется и следующие за словом пробелы. Это немного менее удобно в смысле выделения слов (н-р, при расширении вправо выделяются не только слова, но и пробелы), но зато является более консистентным в смысле того, что Ctrl+Shift+Left и Ctrl+Shift+Right компенсируют друг друга.
Но иногда меня ни то, ни другое поведение не устраивает. Хотелось бы совместить два свойства: выделение точно по границе слов и взаимную компенсацию расширения/сужения блока. При этом появится другой недостаток: то, где остановится курсор при, например, нажатии Ctrl+Shift+Right, будет зависеть от того, расширяется при этом блок или сужается. Если расширяется, то курсор останавливается за последним символом слова (не перепрыгивает следующие за ним пробелы). А если сужается, то на первом символе слова, т.е. перепрыгивает следующие за словом пробелы.
Это когда-нибудь уже обсуждалось? Какой-либо опции для этого в редакторе я не нашел. Или этим поведением можно как-то управлять из макроса?
Выделение слов в редакторе по Ctrl+Shift+стрелка
- HaRT
- Moderator
- Posts: 10866
- Joined: Tue 30 Aug, 2005 17:21
- Has thanked: 221 times
- Been thanked: 358 times
Выделение слов в редакторе по Ctrl+Shift+стрелка
Обсуждалось, сейчас лень искать. Если кто найдёт, объединю.
На мой взгляд, совместить два поведения можно — в зависимости от того, был ли отпущен Shift. Правда, подозреваю, что это непросто и никто из разаботчиков не возьмётся. А вот сделать прототип макросом кто-нибудь, может, и сподобится.
На мой взгляд, совместить два поведения можно — в зависимости от того, был ли отпущен Shift. Правда, подозреваю, что это непросто и никто из разаботчиков не возьмётся. А вот сделать прототип макросом кто-нибудь, может, и сподобится.
Фар есть инструмент, а не нянька. © 2009 DrKnS
- zg
- zero-gravity
- Posts: 6035
- Joined: Tue 15 Mar, 2005 17:36
- Location: riga
- Been thanked: 185 times
- Contact:
Выделение слов в редакторе по Ctrl+Shift+стрелка
был даже билд, в котором работало, как в ворде. вроде. что-то я такое точно откатывал.
- NightRoman
- Posts: 6184
- Joined: Fri 18 Aug, 2006 13:52
- Location: Cambridge, UK
- Has thanked: 32 times
- Been thanked: 62 times
- Contact:
Выделение слов в редакторе по Ctrl+Shift+стрелка
FarNet модуль RightControl позволяет это настроить по своему вкусу наподобие других редакторов. Не только в редакторе Фара, но и в комстроке и диалогах. И не только выделение, но и хождение/удаление по словам. Есть примеры типа Word, Visual Studio.
Выделение слов в редакторе по Ctrl+Shift+стрелка
А насколько prosto/сложно было бы "выпилить" этот код из FarNet и реализовать эту функцию на Луа (т.е. использовать идею)? Или там все очень сильно завязано на инфраструктуру FarNet (которая в Луа, понятное дело, отсутствует)?
- NightRoman
- Posts: 6184
- Joined: Fri 18 Aug, 2006 13:52
- Location: Cambridge, UK
- Has thanked: 32 times
- Been thanked: 62 times
- Contact:
Выделение слов в редакторе по Ctrl+Shift+стрелка
На инфраструктуру Фарнет завязаны только настройки, которых там немного (одна регулярка для разбивки на слова), это можно и иначе организовать. Остальной код просто использует АПИ Фара, хоть и через Фарнет. То есть, по идее, сложно быть не должно. Весь код (кроме настройки) в одном файле RightControl/TheCommand.cs. Там еще две "лишние" команды реализованы, "go-to-smart-home" и "select-to-smart-home".