2017-01-19 111 views
6

C99 programı yazıyor ve çoğu zaman bileşik editörleri kullanıyorum. Ancak, Emacs onları doğru şekilde girintili görünmüyor.Emacs'in C99 bileşik yapılarını uygun bir şekilde girmesini nasıl sağlayabilirim?

Örneğin, burada elle girintili basit işlevi var:

SDL_Point 
random_point_within_rect(SDL_Rect r) 
{ 
    return (SDL_Point) { 
     .x = (r.x + (rand() % r.w)), 
      .y = (r.y + (rand() % r.h)), 
      }; 
} 

Varsayımım Emacs tanımıyor olmasıdır: Burada

SDL_Point 
random_point_within_rect(SDL_Rect r) 
{ 
    return (SDL_Point) { 
     .x = (r.x + (rand() % r.w)), 
     .y = (r.y + (rand() % r.h)), 
    }; 
} 

Ve M-x indent-region kullandığınızda bu böyle görünüyor ayraç tam olarak aynı içeriğe sahip olmasını bu yana type x = { ... } olduğu gibi aynı tür şeye, varlık olarak (type) { ... } parantezi, çalışıyor:

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; 
} 

Ben Emacs yapı değişmezleri, ya da burada girinti düzeltmek için başka bir yol gibi bileşik değişmez tedavisinde alabileceğiniz bir yolu var mı?

Teşekkürler.

+1

görünüyor '(setq-yerel c-eko-sözdizimsel-bilgi-p t)' Eğer girinti kurallarını görebilirsiniz – jenesaisquoi

cevap

0

Bu sorun için bir hata raporu gönderdim; Emacs'ın listenizi bir dizi ifade olarak ve virgülle virgül olarak değerlendiriyor.

Sen koyarak sorunu aşmak olabilir; senin hatlarının sonunda. Ayrıca isimsiz yapı başlatıcıları kullanabilirsiniz, yani

sen eval eğer hipotez doğru gibi
return (SDL_Point){r.x + rand()%r.w, r.y + rand()%r.h}