使用空格而不是制表符进行Emacs align-regexp对齐操作

10

我在emacs中使用 M-x align-regexp 来美化我的Perl代码,但默认情况下它使用tab而不是空格,这是根据Perl评论家不应该做的事情。

有没有办法改变align-regexp的行为,使其填充正确数量的空格而不是tab?


8
尝试使用(setq indent-tabs-mode nil) - abo-abo
1个回答

10

一般情况下应避免使用建议,但由于 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指出的那样,这是不必要的复杂和不够完善,因此请使用帖子顶部的代码。

2
嗯,直接让indent-tabs-mode绑定即可。就像这样:https://dev59.com/KnNA5IYBdhLWcg3wjOpS#8129994。你所做的几乎是相同的,但是过于冗长,并且依赖于一个额外的变量(可能不安全)。 - phils

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接