1

我将我的转发词自定义为 vim-like 'w' follow this,这工作正常,除了 MSf 不再选择文本。
所以,我写了这个函数:

(defun forward-to-word-with-selection (arg)
  (interactive "p")
  (if (not (eq last-command 'forward-to-word-with-selection))
      (progn (message "Mark Set")
             (set-mark-command))
    (forward-to-word arg)))

(global-set-key (kbd "M-F") 'forward-to-word-with-selection)

但是,我得到了一个混乱的错误:

在此处输入图像描述

然后我逐步运行这个函数(使用 Cc Ce,任何其他更好的调试方法都很好,因为我是 elisp 的新手),这个错误是由于(set-mark-command)。

4

2 回答 2

2

您不想自己操纵标记。只需指定“^”即可进行交互。我已经提交了一个带有补丁的错误以在 Emacs 中修复它,但您可以定义自己的包装器:

(defun forward-to-word-w (arg)
  "wrapper to work with shift-select-mode"
  (interactive "^p")
  (forward-to-word arg))
于 2012-08-19T01:45:29.723 回答
1

set-mark-command接受一个包含前缀参数的原始形式的参数。这就是C-@根据您给它的前缀参数的类型而不同的行为方式。

您可能不想在代码中调用此函数,您可能想使用push-mark.

于 2012-08-18T17:34:41.343 回答