我是一个C99程序的编写者,经常使用复合字面量。然而,Emacs似乎不能正确地缩进它们。
例如,这里有一个简单的函数,手动缩进:
我的假设是:Emacs不能识别
有没有一种方法可以让Emacs将复合字面量视为结构体字面量,或者其他方式来修复这里的缩进?谢谢。
例如,这里有一个简单的函数,手动缩进:
SDL_Point
random_point_within_rect(SDL_Rect r)
{
return (SDL_Point) {
.x = (r.x + (rand() % r.w)),
.y = (r.y + (rand() % r.h)),
};
}
当我使用M-x indent-region
时,它的效果如下:
SDL_Point
random_point_within_rect(SDL_Rect r)
{
return (SDL_Point) {
.x = (r.x + (rand() % r.w)),
.y = (r.y + (rand() % r.h)),
};
}
我的假设是:Emacs不能识别
(type) { ... }
中的大括号与type x = { ... }
中的大括号是同一类型,因为这个例子中大括号内的内容完全相同,但却能正常工作。SDL_Point
random_point_within_rect(SDL_Rect r)
{
SDL_Point p = {
.x = (r.x + (rand() % r.w)),
.y = (r.y + (rand() % r.h)),
};
return p;
}
有没有一种方法可以让Emacs将复合字面量视为结构体字面量,或者其他方式来修复这里的缩进?谢谢。
(setq-local c-echo-syntactic-information-p t)
,你可以看到缩进规则。 - Rorschach