Emacs 24.2 for Windows。预处理器宏Emacs C模式自动缩进失败
case TYPE_LONG:
{ <------- 65383
traceCodePath(20);
tempLongVal = iterator_long(it);
tempLongVal = 10;
if (isBigEndian())
{
swap_endian64(&tempLongValCon, &tempLongVal);
traceCodePath(25); <------- 65601
if (i > 0)
{ <------ get weird from here /* ((substatement-open 65601)) */
} <------ this line aligns with the { below "case" /* ((block-close 65383)) */
} <------ the code afterward all align with { below "case" /* ((block-close 65383)) */
C型压痕行之有效从一开始,直到我加入了一些预处理宏,#ifdef来,#else伪,#结束,在这之后,在代码中的一些点,随后全都压痕会导致混乱。 每一行的合成符号都是正确的,但是锚位置都是错误的,看起来他们不能识别{在他们的同一层次上,但是锚定到某个{在他们之前的上层。更奇怪的是,即使我再次删除那些预处理器宏,缩进也不会再次恢复。
更奇怪的是,有时后来,它无故恢复。我不知道什么操作触发了这一点,但最有可能的,我认为是“保存”,“恢复缓冲区”等。
希望有人可以找出原因,提前致谢。
我今天收到风滚草徽章。对我来说很讽刺...更新我自己:很容易重现这个错误,只需打开一个新缓冲区,然后切换到c模式,然后输入以下代码: 'code void main(void) { # ifdef MACRO_A int i = 1; #else int i = 2; #ENDIF 如果(I> 0){ \t/*((子语句开75))*/ }/*((defun定义闭17))*/ }' – Carthage 2013-03-07 09:53:42
在评论你的示例代码工作正常对我来说,但我没有在GNU模式下设置缩进,就像你一样。不过,我会在预处理宏组合中遇到奇怪的缩进问题。我相信我和打开大括号有关,如果预处理器宏被视为空行(他们是),我的语法确实是错误的。另一个恼人的效果是去功能的开始/结束的功能不起作用。 – Gauthier 2013-03-27 08:58:21
哦:对我来说很好,除了评论((子列表...),它出现在第0列。 – Gauthier 2013-03-27 09:00:53