Перемещение курсора по словам (CtrlLeft, CtrlRight)

Вам не хватает чего-то в Far? Вы считаете, что вашу идею стоит услышать? Пишите сюда.
User avatar
Toxa
Posts: 275
Joined: Wed 27 Jul, 2005 14:35
Location: Москва
Contact:

Перемещение курсора по словам (CtrlLeft, CtrlRight)

Post by Toxa »

Предлагаю задуматься об алгоритме перемещения курсора по словам (CtrlLeft, CtrlRight, CtrlShiftLeft, CtrlShiftRight, CtrlAltLeft, CtrlAltRight). Нынешнее поведение нелогично. Как минимум оно отличается в редакторе и в диалогах, а это уже баг. А ещё в редакторе при выделении через CtrlShiftLeft/CtrlShiftRight курсор не переходит на другую строку (где-то на Мантисе был незакрытый баг).

Вообще аспектов тут много. Должно ли отличаться поведение CtrlRight и CtrlShiftRight? Перемещать ли курсор на конец слова или на начало следующего? Как быть, если начало выделения правее текущей позиции курсора? Считать ли частью слова группу символов из WordDiv (TechInfo #1), если перед ней стоит пробел? А если она окружена пробелами с двух сторон?

http://bugs.farmanager.com/view.php?id=1082
Может кому пригодится.

dolzenko
Posts: 452
Joined: Wed 19 Apr, 2006 14:42
Location: Ростов-на-Дону

Re: Перемещение курсора по словам (CtrlLeft, CtrlRight)

Post by dolzenko »

Подниму тему, ведь хороший вопрос.
И спорный как было замечено, т.к. сам искал как избавится от различий между CtrlLeft, CtrlRight и CtrlShiftLeft, CtrlShiftRight (всмысле что бы и так и так прыгало к началу и концу слов).

User avatar
Toxa
Posts: 275
Joined: Wed 27 Jul, 2005 14:35
Location: Москва
Contact:

Re: Перемещение курсора по словам (CtrlLeft, CtrlRight)

Post by Toxa »

Вопрос по-прежнему открыт. Я тут редактировал своё сообщение и мне понравилось поведение курсора в поле <textarea> в последнем Файрфоксе.

ИМХО, вот простой и удобный алгоритм. Вне зависимости от того, идёт ли выделение блока (Shift) или нет, перемещаемся всегда по началам слов. В любою сторону. Символы из WordDiv (TechInfo #1) считать разделителями слов только тогда, когда нет пробелов. Если один или несколько символов из WordDiv соседствуют с пробелом (с любой стороны), следует считать их буквами, т. е. частью слова или отдельным словом.

Ключевой момент тут в простоте алгоритма. Чем он проще, тем быстрее подсознание к нему привыкнет.
Может кому пригодится.

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

Re: Перемещение курсора по словам (CtrlLeft, CtrlRight)

Post by HaRT »

Toxa wrote:перемещаемся всегда по началам слов. В любою сторону
В Огнелисе всё тоже не так просто, как Вы описываете.
Приглядитесь, как выделение по словам проходит влево-вправо через соседство пробела и, например, скобки: (слово1) (слово2).

Вообще, если предлагается менять поведение, которое годами не вызывало нареканий, то надо обязательно оставлять возможность включить традиционный вариант.

А вот в чём я полностью согласен, так это в том, что в полях ввода перемещение и выделение по словам должно вести себя в точности так же, как в редакторе.
Фар есть инструмент, а не нянька. © 2009 DrKnS

User avatar
Toxa
Posts: 275
Joined: Wed 27 Jul, 2005 14:35
Location: Москва
Contact:

Re: Перемещение курсора по словам (CtrlLeft, CtrlRight)

Post by Toxa »

Я специально описал ещё проще. Подозреваю, что в этом истина. В случае со скобками (слово1) (слово2) логика не вполне ясна. При движении вправо курсор останавливается перед открывающимися скобками, а при движении влево — непосредственно перед словами и ещё зачем-то перед пробелом. Даже если найти объяснение такой логике, довести работу с ней до автоматизма не получится. Я пользуюсь Фаром с незапамятных времён, но до сих пор так и не привык к его поведению. Многое делаю на автомате, а с курсором и по сей день промахиваюсь.

Таким образом, нарекание есть, пусть я и один такой. Хороша не та программа, по которой нет багрепортов, а та, в которой нет багов. По поводу возможности включить традиционный вариант согласен.
Может кому пригодится.

User avatar
Toxa
Posts: 275
Joined: Wed 27 Jul, 2005 14:35
Location: Москва
Contact:

Re: Перемещение курсора по словам (CtrlLeft, CtrlRight)

Post by Toxa »

Пересмотрел своё мнение. Очень неплоха логика в редакторе Word из пакета Microsoft Office Professional 2007. К сожалению, ничего не знаю про другие версии, но вполне возможно, что в них логика та же.

Нравится, что курсор перемещается по одим и тем же позициям вне зависимости от того, CtrlLeft это, CtrlShiftLeft или CtrlBS.

Допустим, все символы делятся на Пробелы (пробел и \t), WordDiv (символы из TechInfo #1) и Буквы (любые символы кроме пробелов, \t и WordDiv). Позиции, где останавливается курсор, очень легко описать:
1. Слева от курсора: Пробел, под курсором: WordDiv.
2. Слева от курсора: Пробел, под курсором: Буква.
3. Слева от курсора: WordDiv, под курсором: Буква.
4. Слева от курсора: Буква, под курсором: WordDiv.

Поскольку одно другое исключает, можно упростить, добавив отрицание:
1. Слева от курсора: !WordDiv, под курсором: WordDiv.
2. Слева от курсора: !Буква, под курсором: Буква.

Единственный недостаток (если недостаток) этой логики по сравнению с действующей в том, что при выделении слева направо (CtrlShiftRight) слов, разделённых пробелами, слова выделяются вместе с пробел(ом/ами) справа от слова. Мне кажется, это скорее фича. Все редакторы так делают, включая Фар (случай со строкой в диалоге). Главное, что слова внутри скобок и кавычек выделяются как надо.
Может кому пригодится.

User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 4 times

Re: Перемещение курсора по словам (CtrlLeft, CtrlRight)

Post by Skirda »

Toxa, если на мантисе что-то есть по этому поводу - допиши в существующий, если нет - создай инц.
We are the Borg. You will be assimilated.
So Say We All!

User avatar
Toxa
Posts: 275
Joined: Wed 27 Jul, 2005 14:35
Location: Москва
Contact:

Re: Перемещение курсора по словам (CtrlLeft, CtrlRight)

Post by Toxa »

Дописал в существующий.
Может кому пригодится.

User avatar
Centaur
Posts: 1083
Joined: Tue 05 Apr, 2005 20:09
Location: Novosibirsk, Russia
Been thanked: 2 times

Re: Перемещение курсора по словам (CtrlLeft, CtrlRight)

Post by Centaur »

Как по мне — поведение FAR’овского редактора чуть ли не единственно вменяемое под Windows. И очень неудобно, что в других редакторах Ctrl+Shift+Right выделяет кроме слова ещё и пробел за ним. И неудобно, когда Ctrl+Right прыгает сразу через несколько символов пунктуации.

Так что если что-то менять — оставьте возможность оставить классическое поведение.

Игорь Юдинцев
Posts: 725
Joined: Sun 03 Apr, 2005 22:00
Location: Казань
Been thanked: 1 time

Re: Перемещение курсора по словам (CtrlLeft, CtrlRight)

Post by Игорь Юдинцев »

+1 за классическое. Выделение идентификаторов вместе с пробелами, скобками и прочими запятыми — зло.

User avatar
Toxa
Posts: 275
Joined: Wed 27 Jul, 2005 14:35
Location: Москва
Contact:

Re: Перемещение курсора по словам (CtrlLeft, CtrlRight)

Post by Toxa »

Centaur, Игорь Юдинцев
Вы не поняли. Сначала я предлагал одно, а сейчас другое ) Так вот, никакого выделения скобок, кавычек и запятых — только пробелы и только если нет других WordDiv-символов.

С классическим поведением можно жить, только если его причесать:
1. Сделать так, чтобы CtrlLeft/CtrlRight работали так же, как и CtrlShiftLeft/CtrlShiftRight (последние взять за основу).
2. Если есть выделение слева направо, а мы движемся влево (CtrlShiftLeft, выделение уменьшается), то надо останавливаться не на началах слов, а на концах, как и при движении вправо. То же самое и для выделения справа налево, только наоборот.
3. Применить всё вышесказанное (речь шла о редакторе) к диалогам и пр.
Может кому пригодится.

tstr
Posts: 534
Joined: Thu 16 Apr, 2009 16:15
Has thanked: 9 times
Been thanked: 9 times

Re: Перемещение курсора по словам (CtrlLeft, CtrlRight)

Post by tstr »

Есть, есть в этом причёсывании смысл. И особенно заметна необходимость при выделении.

Кстати, а где можно указать "WordDiv" для строк редактирования диалогов, например?

User avatar
Toxa
Posts: 275
Joined: Wed 27 Jul, 2005 14:35
Location: Москва
Contact:

Re: Перемещение курсора по словам (CtrlLeft, CtrlRight)

Post by Toxa »

tstr wrote:Кстати, а где можно указать "WordDiv" для строк редактирования диалогов, например?
Если не ошибаюсь, оно в одном месте и указывается для всего сразу.
Кстати, странно получается. Параметр WordDiv находится в ветке Editor, а работает для всего (и хорошо, что работает).
Может кому пригодится.

tstr
Posts: 534
Joined: Thu 16 Apr, 2009 16:15
Has thanked: 9 times
Been thanked: 9 times

Re: Перемещение курсора по словам (CtrlLeft, CtrlRight)

Post by tstr »

Да я заметил что для всего сразу, а вот отдельно...
Есть специфические имена файлов, на них было бы убрать пару символов из всех WordDiv-ов ой как удобно. Но то ладно. Поважнее проблемы есть. Ато захочется какой интерфейс к макросам...

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

Re: Перемещение курсора по словам (CtrlLeft, CtrlRight)

Post by NightRoman »

Что-нибудь планируется в этом направлении? Начинаю подумывать о соответствующем плагине, но само-собой он нафиг не нужен, если в Фаре это будет причесано и так...

Post Reply

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