Улучшения взаимодействия с пользователем в Flyspell Correct Word - PullRequest
2 голосов
/ 14 ноября 2011

Я думаю, что поведение flyspell-correct-word должно быть расширено до команды, которая исправляет все вхождения слова с ошибкой, представляющего интерес.Это, конечно, не относится к синтаксическим ошибкам в основной коррекции орфографии.Я не знаю, поддерживает ли aspell / ispell такие исправления.Он также хотел бы объединить эти два в команду, которая запрашивает у пользователя, хочет ли он исправить следующий вхождением query-replace (y, n, q, Y, N ,!).Кто-нибудь реализовал какие-либо из этих идей?

1 Ответ

3 голосов
/ 14 ноября 2011

Попробуйте добавить следующий код в ваш .emacs, похоже, он делает то, что вы запрашиваете (хотя и не запрашивает замены (это казалось немного громоздким)):

(setq flyspell-insert-function 'flyspell-insert-and-replace-all)
(defvar flyspell-last-replacements nil)
(defun flyspell-insert-and-replace-all (word)
  (unless (eq flyspell-auto-correct-pos pos) ; same check as done in flyspell-auto-correct-word
    (setq flyspell-last-replacements nil))
  (save-excursion
    (dolist (word-markers flyspell-last-replacements)
      (delete-region (car word-markers) (cdr word-markers))
      (goto-char (car word-markers))
      (insert word)))
  (insert word)
  (save-excursion
    (let ((do-replacement (not flyspell-last-replacements)))
      (while (re-search-forward (concat "\\<" flyspell-auto-correct-word "\\>") nil t)
        (replace-match word)
        ;; and, when doing first search/replace, record all the positions
        (when do-replacement
          (let ((end-marker (point-marker))
                (begin-marker (make-marker)))
            (set-marker begin-marker (- (point) (length word)))
            (set-marker-insertion-type end-marker t)
            (set-marker-insertion-type begin-marker nil)
            (add-to-list 'flyspell-last-replacements (cons begin-marker end-marker))))))))
...