Skip to content

Commit

Permalink
* lisp/textmodes/flyspell.el: Fix bug#49104
Browse files Browse the repository at this point in the history
(flyspell--prev-meta-tab-binding): Delete var.
(flyspell-prog-mode): Don't set it.
(flyspell-auto-correct-word): Lookup the "next" command dynamically.
  • Loading branch information
monnier committed Jun 27, 2021
1 parent b8f9e58 commit fe81c04
Showing 1 changed file with 8 additions and 15 deletions.
23 changes: 8 additions & 15 deletions lisp/textmodes/flyspell.el
Expand Up @@ -401,18 +401,12 @@ like <img alt=\"Some thing.\">."
(let ((f (get-text-property (1- (point)) 'face)))
(memq f flyspell-prog-text-faces))))

(defvar flyspell--prev-meta-tab-binding nil
"Records the binding of M-TAB in effect before flyspell was activated.")

;;;###autoload
(defun flyspell-prog-mode ()
"Turn on `flyspell-mode' for comments and strings."
(interactive)
(setq flyspell-generic-check-word-predicate
#'flyspell-generic-progmode-verify)
(setq-local flyspell--prev-meta-tab-binding
(or (local-key-binding "\M-\t" t)
(global-key-binding "\M-\t" t)))
(flyspell-mode 1)
(run-hooks 'flyspell-prog-mode-hook))

Expand Down Expand Up @@ -1990,15 +1984,14 @@ spell-check."
(interactive)
;; If we are not in the construct where flyspell should be active,
;; invoke the original binding of M-TAB, if that was recorded.
(if (and (local-variable-p 'flyspell--prev-meta-tab-binding)
(commandp flyspell--prev-meta-tab-binding t)
(functionp flyspell-generic-check-word-predicate)
(not (funcall flyspell-generic-check-word-predicate))
(equal (where-is-internal 'flyspell-auto-correct-word nil t)
[?\M-\t]))
(call-interactively flyspell--prev-meta-tab-binding)
(let ((pos (point))
(old-max (point-max)))
(let ((pos (point))
(old-max (point-max))
(next-cmd (and (functionp flyspell-generic-check-word-predicate)
(not (funcall flyspell-generic-check-word-predicate))
(let ((flyspell-mode nil))
(key-binding (this-command-keys))))))
(if next-cmd
(command-execute next-cmd)
;; Flush a possibly stale cache from previous invocations of
;; flyspell-auto-correct-word/flyspell-auto-correct-previous-word.
(if (not (memq last-command '(flyspell-auto-correct-word
Expand Down

0 comments on commit fe81c04

Please sign in to comment.