首页 > 解决方案 > 为什么emacs缩进包含'%'符号的字符串?

问题描述

我在为我的工作定制的文件类型上使用 Emacs 的 VHDL 主要模式。代码看起来很像普通的 VHDL,但使用一些后处理来简化重复的块并清理端口映射和 IO 列表。我使用这个内置的循环函数,看起来像这样

%foreach a(0,1,2)
    signal%(a) <= %(a);
%end

这会生成 3 行,其中 %(a) 被替换为许多其他语言中 for 循环所期望的数字。

当我使用这种样式时,我希望某些给定的多行函数的缩进看起来像这样

my_signal <= (unit%(a) and some_signal) OR
             (unit%(a) and not some_other_signal);

但是“智能标签”让它看起来像这样

my_signal <= (unit%(a) and some_signal) OR
                       (unit%(a) and not some_other_signal);

然后,此行为将复合其他行。普通 VHDL 模式允许这样做,但是当添加“%”字符时,它不会与分配后的第一个字符对齐。我已经尝试设置自定义制表位,而所有其他设置 shtat 可能会影响这一切都没有运气。在这一点上,我会满足于能够可靠地缩进上一行中任何单词的开头,但是这个功能似乎被 VHDL 主要模式覆盖了。

有谁知道我怎样才能让它工作?

标签: emacsvhdlindentation

解决方案


推荐阅读