Выделение слов в редакторе по Ctrl+Shift+стрелка

Вам не хватает чего-то в Far? Вы считаете, что вашу идею стоит услышать? Пишите сюда.
Post Reply
fml2
Posts: 534
Joined: Mon 09 Jul, 2012 22:10
Has thanked: 2 times
Been thanked: 8 times

Выделение слов в редакторе по Ctrl+Shift+стрелка

Post by fml2 »

Я тут обратил внимание на то, как во встроенном редакторе Фара происходит расширение выделенного блока в поточном режиме при нажатии кнопок 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, будет зависеть от того, расширяется при этом блок или сужается. Если расширяется, то курсор останавливается за последним символом слова (не перепрыгивает следующие за ним пробелы). А если сужается, то на первом символе слова, т.е. перепрыгивает следующие за словом пробелы.

Это когда-нибудь уже обсуждалось? Какой-либо опции для этого в редакторе я не нашел. Или этим поведением можно как-то управлять из макроса?
User avatar
HaRT
Moderator
Posts: 10866
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Выделение слов в редакторе по Ctrl+Shift+стрелка

Post by HaRT »

Обсуждалось, сейчас лень искать. Если кто найдёт, объединю.
На мой взгляд, совместить два поведения можно — в зависимости от того, был ли отпущен Shift. Правда, подозреваю, что это непросто и никто из разаботчиков не возьмётся. А вот сделать прототип макросом кто-нибудь, может, и сподобится.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
zg
zero-gravity
Posts: 6035
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Выделение слов в редакторе по Ctrl+Shift+стрелка

Post by zg »

был даже билд, в котором работало, как в ворде. вроде. что-то я такое точно откатывал.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Выделение слов в редакторе по Ctrl+Shift+стрелка

Post by NightRoman »

FarNet модуль RightControl позволяет это настроить по своему вкусу наподобие других редакторов. Не только в редакторе Фара, но и в комстроке и диалогах. И не только выделение, но и хождение/удаление по словам. Есть примеры типа Word, Visual Studio.
fml2
Posts: 534
Joined: Mon 09 Jul, 2012 22:10
Has thanked: 2 times
Been thanked: 8 times

Выделение слов в редакторе по Ctrl+Shift+стрелка

Post by fml2 »

А насколько prosto/сложно было бы "выпилить" этот код из FarNet и реализовать эту функцию на Луа (т.е. использовать идею)? Или там все очень сильно завязано на инфраструктуру FarNet (которая в Луа, понятное дело, отсутствует)?
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Выделение слов в редакторе по Ctrl+Shift+стрелка

Post by NightRoman »

На инфраструктуру Фарнет завязаны только настройки, которых там немного (одна регулярка для разбивки на слова), это можно и иначе организовать. Остальной код просто использует АПИ Фара, хоть и через Фарнет. То есть, по идее, сложно быть не должно. Весь код (кроме настройки) в одном файле RightControl/TheCommand.cs. Там еще две "лишние" команды реализованы, "go-to-smart-home" и "select-to-smart-home".
Post Reply

Return to “Предложения и идеи”