Emacs 中的 Ispell/Flyspell 使用鼠标中键激活拼写错误的单词的上下文菜单。问题是我的笔记本电脑没有中键。那么有没有办法告诉 Ispell 或 emacs 使用其他键/按钮(例如 Ctrl+右键单击)来实现此目的?(如果有必要,我会使用 Auctex。)
答案1
该库flyspell.el
通常安装在文件夹中.../lisp/textmodes/flyspell.el
。flyspell.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) ))
有几种变体可用于编写实际的键盘快捷键,但这超出了本答案的范围。