我将前向词定义为vim-like'w'跟随this,除了M-S-f不再选择文字外,此功能正常。
所以,我写了这个函数:
(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)。 / p>
答案 0 :(得分:1)
set-mark-command
接受包含prefix参数的原始形式的参数。这就是C-@
的行为方式,具体取决于您提供的前缀参数的类型。
您可能不希望在代码中调用此函数,您可能希望使用push-mark
。
答案 1 :(得分:1)
您不想自己操纵标记。只需将“^”指定为交互式。我已经提交了一个修补程序的错误来修复它在Emacs中,但你可以定义自己的包装器:
(defun forward-to-word-w (arg)
"wrapper to work with shift-select-mode"
(interactive "^p")
(forward-to-word arg))