【发布时间】:2012-11-23 23:16:26
【问题描述】:
如果点在任何东西上(特别是行尾),我希望(在与 TeX 相关的模式下)波浪号键像往常一样插入自身,但如果点在空间上,我希望波浪号覆盖它。 (在将某些内容粘贴到 TeX 源文件后,这将是一个非常有用的功能。)我破解了这样的内容:
(defun electric-tie ()
"Inserts a tilde at point unless the point is at a space
character, in which case it deletes the space first."
(interactive)
(while (equal (char-after) 32) (delete-char 1))
(while (equal (char-before) 32) (delete-char -1))
(insert "~"))
(add-hook 'TeX-mode-hook (lambda () (local-set-key "~" 'electric-tie)))
我的问题很简单:它是否正确(似乎有效),是否可以做得更好? (我假设如果第一个问题的答案是肯定的,那么后者就是风格问题。)
【问题讨论】:
-
如果有效,那就太好了。真的。这是 Emacs 用户的信条。除非你正在编写一个新的通用包。
-
谢谢 - 但我不仅想让它工作,还想学习一些东西。也许有更好的方法来做到这一点?也许我应该使用一些高级的
(interactive)函数,而我应该使用一些低级的东西 - 或者反之亦然?也许我正在使用equal,但习惯上在类似的情况下使用eq?也许我应该(self-insert)而不是(insert "~")? -
哈哈!这个信条就是为什么这里有这么多关于 Emacs 的问题都是自己造成的枪伤。 @mbork 试图理解规范的解决方案应该受到赞扬。
-
(我已经注意到,如果我处理多个空格,以及在点之前和之后的空间——问题已编辑。)
-
@event_jr:谢谢;)。我浏览了您的一些答案,它证实了我的问题并非无稽之谈;例如,如果某些功能我使用推送标记或类似的东西怎么办? (我相信他们没有,这只是一个例子。)还有:我想在我的博客上写下这个小功能,我不想传播不良做法;)。
标签: emacs coding-style elisp