【发布时间】:2014-03-28 10:21:57
【问题描述】:
我在 emacs 中使用 M-x align-regexp 来美化我的 Perl 代码,但默认情况下它使用制表符而不是空格,根据 Perl 评论家,这是不应该做的事情。
有没有办法改变align-regexp 的行为,使其填充适量的空格而不是制表符?
【问题讨论】:
-
试试
(setq indent-tabs-mode nil)。
我在 emacs 中使用 M-x align-regexp 来美化我的 Perl 代码,但默认情况下它使用制表符而不是空格,根据 Perl 评论家,这是不应该做的事情。
有没有办法改变align-regexp 的行为,使其填充适量的空格而不是制表符?
【问题讨论】:
(setq indent-tabs-mode nil)。
一般来说你应该避免使用advice,但是由于align.el直接读取indent-tabs-mode的值,这可能是最好的方法:
(defadvice align-regexp (around align-regexp-with-spaces activate)
(let ((indent-tabs-mode nil))
ad-do-it))
这是我的原始版本:
(defadvice align-regexp (around align-regexp-with-spaces activate)
(let ((old-indent-tabs-mode indent-tabs-mode))
(setq indent-tabs-mode nil)
ad-do-it
(setq indent-tabs-mode old-indent-tabs-mode)))
正如@Phils 所指出的那样,这不必要地复杂且不那么简单,因此请使用帖子顶部的代码。
【讨论】:
indent-tabs-mode就行了。像这样:stackoverflow.com/a/8129994/324105。您所做的几乎相同,但不必要地冗长,并且依赖(可能不安全)附加变量。