2010-02-18 15 views
9
#include<iostream> 
using namespace std; 
class Example 
{ 
    public: 
     Example(int a,int b,int c):m_a(a),m_b(b),m_c(c) 
    { // Wrong indentation here due to the colon in above line, { should be under E 
     printf("\nThe 3 argument constructor invoked\n"); 
    } // Wrong indentation again 
    private: 
     int m_a; 
     int m_b; 
     int m_c; 
}; 

Ciao a tutti,vim rientro in C++ lista di inizializzazione del costruttore

Ho un piccolo problema nella rientranza di gvim nella lista di inizializzazione del costruttore in C++. Sto usando cindent in .gvimrc e non sono in grado di risolvere questo problema anche dopo aver cambiato il mio file .gvimrc un certo numero di volte.

Può un'anima benevola darmi un metodo per sistemarlo. Ho provato a cambiare cinoptions e cin- cions ma nulla di veramente aiutato.

Ho evidenziato il problema di indentazione nello snippet di codice fornito sopra.

Grazie per la vostra pazienza

saluti Lali

+2

controllo questo fuori pure http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=493776 – ghayalcoder

+0

vedo lo stesso problema con Emacs. – vy32

risposta

1

Prova :set smartindent, ho dovuto disabilitare cindent primo a farlo funzionare.

+0

No, questo non risolve il problema. L'impostazione di smartindent dopo aver disabilitato cindent risolve solo questo problema, ma voglio anche cindent per il rientro futuro che non è disponibile se cindent è disabilitato. Ho già provato questa soluzione, grazie comunque, ma voglio qualcosa di meglio. – ghayalcoder

+1

Anche la pagina di aiuto 'smartindent' consiglia di usare' autoindent', magari provare a usare entrambi insieme invece di cindent. – Winder

1

Ho anche letto e ri-leggere il manuale di vim in

http://vimdoc.sourceforge.net/htmldoc/indent.html#cinoptions-values

Questo è un bel problema impegnativo. Il più vicino ho potuto ottenere era utilizzando

:set cino=g3,h3,i0

Cioè, le dichiarazioni scope trattino (privato, pubblico, ecc) da 3, trattino 3 spazi dopo la dichiarazione portata, e non il costruttore trattino ulteriormente.

che ha provocato

#include 
using namespace std; 
class Example 
{ 
    public: 
     Example(int a,int b,int c):m_a(a),m_b(b),m_c(c) 
     { // Wrong indentation here due to the colon in above line, { should be under E 
     printf("\nThe 3 argument constructor invoked\n"); 
     } // Wrong indentation again

 private: 
    int m_a; 
    int m_b; 
    int m_c; 

    }; 

Questo non è proprio quello che si voleva, ma la sperimentazione di g, h, posso ottenere abbastanza vicino.

Si prega di commentare se questo aiuta o se ho suscitato qualche idea. Forse il bug report è il modo migliore per risolvere questo problema. Sebbene una soluzione alternativa sia quella di ignorare il cindent mediante le modifiche manuali, per quanto inglorioso sia.

0

Non so se questa è un'opzione, ma si potrebbe dare un'occhiata a astyle. Usiamo TextMate al lavoro e lo schema di rientro (predefinito?) Non è quello che vogliamo un po 'di tempo. Ma principalmente segue il rientro della riga precedente dopo aver premuto enter o qualcosa del genere.

La soluzione che utilizziamo è semplicemente piping l'intera fonte del file tramite astyle (utilizzando le opzioni appropriate), e questo è associato a un tasto di scelta rapida. Questo è anche possibile con Vim.

Problemi correlati