EMACS 24.1.我需要重新绑定Ctrl-space到一个自定义函数:
这是我的代码无效:
(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))
Run Code Online (Sandbox Code Playgroud)
当没有尾随空格时,它正常工作:开始选择并突出显示该区域.尾随空格:删除尾随空格,停在行尾,设置标记但不突出显示该区域.
如果我删除最后一个命令(set-mark-command
)并且我手动运行它可以M-xset-mark-command
工作.请有人帮助我使这个功能正常工作??
修改命令会导致变量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))
Run Code Online (Sandbox Code Playgroud)
甚至包括整个let
内部save-excursion
.
见手册:
归档时间: |
|
查看次数: |
527 次 |
最近记录: |