Меня раздражает, что flyspell, кажется, остается в середине слова, когда вы выполняете команду flyspell-auto-correct-word. Можно ли это изменить, чтобы заставить его перейти к концу слова после выполнения команды? Это может быть так же просто, как установить привязку клавиши к автозаполнению слова, а затем перейти к слову вперед, что я знаю, как это сделать. Но это не будет работать во всех случаях, потому что иногда курсор помещается за словом, если слово автозавершения было меньше, чем напечатанное слово. Любая помощь в этом была бы отличной.
Заставить flyspell переходить к концу слова при автокоррекции слова в Emacs
Ответы (2)
Попробуйте этот код:
(eval-after-load "flyspell"
'(defun flyspell-ajust-cursor-point (save cursor-location old-max)
(when (not (looking-at "\\b"))
(forward-word))))
Протестировано с версией flyspell 1.7k и с версией, поставляемой с Emacs 23.2.
person
Trey Jackson
schedule
08.09.2011
Я просмотрел (defun flyspell-auto-correct-word ...)
и не вижу там хороших хуков или других точек настройки, поэтому я думаю, что лучше всего использовать C-h f defadvice
:
(defadvice flyspell-auto-correct-word (after flyspell-forward-word activate) (flyspell-goto-next-error))
person
Ross Patterson
schedule
08.09.2011
Да, я знал, как это сделать, но проблема в том, что команда больше не работает должным образом, потому что она отменяет команду flyspell-auto-correct-word с помощью команды forward-word. Вы не можете многократно перебирать слова с помощью this. Приходится делать команду дважды каждый раз. Я думаю, если нет крючков или точек настройки, это единственный способ. Вот в чем я не был уверен. Это почти всегда первое слово, но я просто подумал, что может быть способ заставить его работать правильно. Я на самом деле просто использую путь, но спасибо за совет defadvice.
- person J Spen; 08.09.2011
Ах, да, ну нет никакого способа обойти это по определению. У вас есть
C-.
для попытки следующего исправления и C-,
для перехода к следующей опечатке, но нет C-<mind-read>
:-)
- person Ross Patterson; 08.09.2011
Да я тебя понял :). Я предполагаю, что это должно быть запрограммировано в пакете flyspell, который мне не по силам, так что я буду жить с этим. Почти всегда первое слово, когда я все равно хочу его использовать. Спасибо за помощь.
- person J Spen; 08.09.2011
Нет, как могло это быть запрограммировано где угодно. Если нужно сделать две разные вещи, и программа не может знать, что нужно сделать, то запрашивание пользовательского ввода (например, две разные команды, связанные с двумя разными клавишами) является единственным способом. можно сделать.
- person Ross Patterson; 08.09.2011
Не совсем уверен, что вы поняли, о чем я спрашивал, но проверьте ответ Трея Джексона, потому что он делает именно то, что я просил. Перемещает курсор в конец слова после замены слова. Вместо того, чтобы оставлять курсор на месте независимо от длины слова. Также сохраняет команду flyspell без изменений, так что вы можете повторять циклически.
- person J Spen; 09.09.2011