2012-11-26 18 views
10

non so molto di Emacs, ma dopo un po 'googling, ho modificato il mio file .emacs di essere la seguente:Come posso ottenere Emacs per indentare il mio // commenti con il mio codice?

(setq c-default-style "bsd" c-basic-offset 4) 

Il mio obiettivo era quello di ottenere in stile Allman rientro con le schede 4-distanziati. Funziona come previsto, ma ora i miei commenti su // non rientrano nel mio codice. Prima che lo cambiassi, quando scrivevo //, si otterrebbe il rientro automatico per essere in linea con il resto del codice nella funzione. Come posso ottenere Emacs per il rientro automatico dei commenti //?

Ho provato ad aggiungere c-indent-comments-syntactically-p 1 al file sopra .emacs, ma che non ha cambiarlo ...

Ad esempio:

int main() 
{ 
    // I'd like this line to be auto-indented to match the block 
    for (int i = 0; i < 10; ++i) 
    { 
     // And this line to be auto-indented to match the block 
     doStuff(); 
    } 
} 

Attualmente, TAB non trattino il mio // commento, e non lo fa neanche automaticamente.

risposta

8

È possibile ispezionare e modificare il valore del rientro corrente posizionando il punto sulla linea in questione e premendo C-c C-o. Regola i simboli pertinenti a tuo piacimento.

Questo non sarà permanente. Utilizzare l'invocazione diretta della funzione c-set-offset nel proprio .emacs per apportare le modifiche a livello globale.

semplice esempio:

int main() { 
    // 
} 

Questo è il mio rientro predefinita. Dopo aver spostato il cursore sulla riga 2, vedo che il relativo simbolo è comment-intro.

Usando:

(c-set-offset 'comment-intro 6) 

ottengo:

int main() { 
     // 
} 

Offset accumula attraverso simboli:

int main() { 
     // 
    { 
      // 
    } 
} 
+0

Ma cosa succede se si tratta di un blocco nidificato? – Cornstalks

+1

L'offset @Cornstalks è relativo all'offset circostante. Ho aggiunto un esempio. – pmr

+0

Fantastico. Dato il mio piccolo file '.emacs' dall'alto, quale sarebbe il modo corretto di aggiungere questo? Mettendo '(setq c-default-style" bsd "c-basic-offset 4 (c-set-offset 'comment-intro 4))' nel mio '.il file emacs' restituisce Emacs barf con l'errore: 'Argomento di tipo errato: symbolp, (c-set-offset (citazione commento-intro) 4)' – Cornstalks

1

Colpire TAB fa rientrare ancora la vostra riga di commento, giusto? Quindi quello che ti manca è il riconoscimento automatico della doppia barra che attiva l'autoindentazione. Questo è implementato da (c-electric-slash). Per prima cosa assicurati che la barra sia ancora legata a quel comando: C-h k / (aiuto sulla barra dei tasti). Quindi, supponendo che la documentazione di c-electric-slash si presenti, leggerla per capire in quali condizioni è inibita.

+0

No. Il TAB non fa più rientrare il commento. Modificherò la mia domanda per dirlo. – Cornstalks

0

Se volete mettere il vostro commento sullo stesso allineamento della vostra portata codice, basta aggiungere la riga folllowing al vostro file ~/.emacs:

(c-set-offset 'comment-intro 0) 
Problemi correlati