不使用鼠标中键在 Emacs 中拼写

不使用鼠标中键在 Emacs 中拼写

Emacs 中的 Ispell/Flyspell 使用鼠标中键激活拼写错误的单词的上下文菜单。问题是我的笔记本电脑没有中键。那么有没有办法告诉 Ispell 或 emacs 使用其他键/按钮(例如 Ctrl+右键单击)来实现此目的?(如果有必要,我会使用 Auctex。)

答案1

该库flyspell.el通常安装在文件夹中.../lisp/textmodes/flyspell.elflyspell.el库内有一个名为的变量flyspell-mouse-map。默认情况下,它写成如下:

(defvar flyspell-mouse-map
  (let ((map (make-sparse-keymap)))
    (if (featurep 'xemacs)
  (define-key map [button2] #'flyspell-correct-word)
      (define-key map [down-mouse-2] #'flyspell-correct-word)
      (define-key map [mouse-2] 'undefined))
    map)
  "Keymap for Flyspell to put on erroneous words.")

原始发帖者试图实现flyspell-correct-word按下控制键时单击鼠标右键的功能。为了避免在库flyspell.el尚未加载时生成错误消息,我们使用了一条eval-after-load语句。另一种方法是(require 'flyspell)在尝试将任何新内容分配给变量之前使用flyspell-mouse-map。换句话说,变量必须存在,然后我们才能开始使用它。以下代码不会删除先前的键分配,而只是添加了两个新的键分配以满足原始发帖者的要求:

(eval-after-load "flyspell" '(progn
  (define-key flyspell-mouse-map (kbd "<C-down-mouse-3>") #'flyspell-correct-word)
  (define-key flyspell-mouse-map (kbd "<C-mouse-3>") 'undefined) ))

有几种变体可用于编写实际的键盘快捷键,但这超出了本答案的范围。

相关内容