我正在编写C99程序并经常使用复合文字。但是,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处理复合文字,如结构文字,或者其他一些方法来修复缩进?
感谢。
答案 0 :(得分:0)
我为这个确切的问题提交了一份错误报告;我相信emacs会将您的列表视为一系列语句,将逗号视为逗号运算符。
你可以通过放置来解决问题;在你的行结束。您还可以使用未命名的struct初始化器,即
return (SDL_Point){r.x + rand()%r.w, r.y + rand()%r.h}