这是我的代码无效:
(define-key global-map [?\C- ] 'my-set-mark-command)
(defun my-set-mark-command()
(interactive)
(end-of-line)
(delete-char (* -1 (skip-chars-backward "\t\s")));;delete trailing spaces
(set-mark-command nil))
当没有尾随空格时,它正常工作:开始选择并突出显示该区域。 尾随空格:删除尾随空格,停在行尾,设置标记但不突出显示该区域。
如果我删除最后一个命令(set-mark-command
)并且我手动运行它 M-x set-mark-command
它可以工作。
请有人帮助我使这个功能正常工作??
答案 0 :(得分:5)
修改命令会导致变量deactivate-mark
重置,从而导致标记丢失。在save-excursion
的文档中,它通过将deactivate-mark
变量与let
绑定来说明如何禁用该行为。然后,您可以将代码更改为:
(defun my-set-mark-command ()
(interactive)
(end-of-line)
(let (deactivate-mark)
(delete-char (* -1 (skip-chars-backward "\t\s")))) ;;delete trailing spaces
(set-mark-command nil))
甚至可以将整个let
包含在save-excursion
内。
见手册:
答案 1 :(得分:2)