2009-04-07 16 views
21

In Emacs, come posso applicare una lunghezza massima della linea, ad esempio, 80 caratteri? Voglio che inserisca le interruzioni di riga appropriate nel mio codice, analogamente allo fill-paragraph per il testo, se possibile, con l'inserimento corretto della seconda parte della riga.Come applicare la lunghezza massima della linea in Emacs?

Ecco un piccolo esempio:

LongNameType<PrettyLong, AlsoLong> doSomethingWithLongFunctionName(int a, int b); 
foo(); 

Se io in realtà faccio fill-paragraph diventa:

LongNameType<PrettyLong, AlsoLong> 
doSomethingWithLongFunctionName(int a, int b); foo(); 

mentre io preferirei questo:

LongNameType<PrettyLong, AlsoLong> 
    doSomethingWithLongFunctionName(int a, int b); 
foo(); 
+0

Ottima idea! +1, cerco sempre di mantenere 100 caratteri/riga in VS in modo da poter vedere costantemente il mio codice con la stessa dimensione della finestra. Strumenti per automatizzare questo sarebbe bello. – AaronLS

risposta

0
Non

davvero un emacser, ma cosa succede se si accende auto-fill-mode mentre in c++-mode?

modalità C++ dovrebbe darvi auto-trattino e auto-fill-mode ti dà line-wrapping ....

+0

L'esempio che ho dato era già in C++ - modalità ... – Frank

1

io uso modeline-posn pacchetto. Evidenzia il numero di colonna nella modeline se è maggiore del valore specificato.

5

fill-paragraph e auto-fill-mode deliberatamente non eseguono il wrap code. Ci sono troppi modi per farlo e probabilmente sarebbe sbagliato. Inseriranno commenti, ma questo non ti aiuta qui.

L'unico modo in cui l'ho mai fatto per mettere esplicitamente dove voglio che il testo si spezzi. Quindi l'auto-indent dovrebbe mettere la linea spezzata nel posto giusto.

Stai cercando di ridimensionare un grande numero di codice esistente? Oppure stai cercando di eseguire il riempimento automatico del codice che stai scrivendo ora?

+0

Ma mi aspetto che la modalità C++ ridefinisca il paragrafo di riempimento in modo che faccia effettivamente la cosa giusta per C++. Non è più difficile rispetto al resto dell'implementazione in modalità C++. Sì, idealmente mi piacerebbe cambiare il mio codice completo. Ma anche, lo voglio per il nuovo codice che sto scrivendo in Emacs. – Frank

+0

Penso che sia più difficile, perché ci sono molti altri modi per spezzare una linea rispetto al rientro. Molte volte interrompere il marchio di 80 colonne (o dove mai) non è l'opzione migliore per la stesura del codice (si interrompe dopo ogni argomento, ad esempio, in un lungo elenco di argomenti). –

+0

Penso che tu abbia appena infranto l'ultima virgola prima del limite. Potrebbero esserci alcune eccezioni a questo, ma quella dovrebbe essere la regola principale. – Frank

5

Ci sono uno number of packages che avvisano dei limiti di lunghezza della linea. Personalmente, io uso wide-column, che cambia il colore del cursore a seconda della sua colonna attuale.

+0

Non ha risposto alla domanda.Pls fornisce una soluzione expilicit per forzare l'inserimento di newline (rompendo la linea) quando raggiunge x, altrimenti non confondere le persone. – iantonuk

+0

@bedbad Nessuno "ha risposto alla domanda", perché (apparentemente) la soluzione non esiste (ancora) in Emacs. Eppure ogni risposta ha cercato di dare a Frank qualcosa che potesse funzionare per aiutarlo. Per favore aggiungi un feedback costruttivo - siamo una comunità che costruisce le persone, invece di abbatterle. Dubito che qualcuno sia stato "confuso" dalla mia risposta (o dalle altre risposte) perché nessuno ha fornito una risposta che ha ingannato le persone. –

+0

Non credo che la tua risposta abbia qualcosa a che fare con una domanda. Si suppone che tu risponda a una domanda non a qualcosa che "potrebbe funzionare per qualcuno" nella domanda SO, perché esiste per molti che cercano la risposta. Anche se aiuti 1 confondi un sacco di persone – iantonuk

1

Si dovrebbe controllare una delle tante librerie "linea verticale" per Emacs. Alcuni mantengono una linea di evidenziazione verticale sull'intero buffer in ogni momento (non proprio ciò che si vuole) ma altre librerie mettono l'evidenziazione verticale su una colonna fissa in ogni momento, il che non è proprio quello che si vuole, ma si può vedere immediatamente quando dovresti avvolgere le linee.

0

Prova

'(c-max-one-liner-length 80) 

'(fill-column 80) 
'(c-ignore-auto-fill (quote (string cpp))) 

Speranza che aiuta.

Problemi correlati