2009-12-29 19 views
6

Getting Emacs fill-paragraph to play nice with javadoc-like comments'a çok benzeyen bir sorum var, ancak bir yıllık bir iş parçacığında birçok yanıt alabileceğinden emin değildim.Emacs c-mode dolgu paragrafı Doxygen Yorumlar

/** 
* Description 
* 
* @param[in,out] var1 : <Long description that needs 
*      to be wrapped.> 
* @param[in,out] var2 : <Description2> 
*/ 

Ama: Ben emacs'taki MQ kullandığınızda, aşağıdaki istiyorum, Şimdi

/** 
* Description 
* 
* @param[in,out] var1 : <Long description that needs to be wrapped.> 
* @param[in,out] var2 : <Description2> 
*/ 

:

neyse, aşağıdaki gibi görünecektir bazı Doxygen yorum yapılmamış C kodu var Şu anda aşağıdakileri edinin:

/** 
* Description 
* 
* @param[in,out] var1 : <Long description that needs 
* to be wrapped.> @param[in,out] var2 : <Description2> 
*/ 

Bazı araştırmalar yapmak, paragayı ayarlamam gerektiği gibi görünüyordu "@param" tanımak için emacs cinsinden raph-start değişkeni. Örnek düzenli ifade olan yığın taşması (Getting Emacs fill-paragraph to play nice with javadoc-like comments) hakkında başka bir soru buldum. Gereksinimlerime uyması için biraz değiştirdim ve Search -> Regex Forward'un içinde test ettim ve her bir @param cümlesini doğru bir şekilde vurguladı.

benim .emacs dosya (katma \ 'ın elisp sözdizimi için gerekli olan) benim paragraf başlangıcı olarak verilen normal ifadeyi ayarı çalıştı, "^\s-*\*\s-*\(@param\).*$"

Yani şu normal ifadeyi kullandı. Yeni bir emacs penceresi açıp M-q'u denediğimde aynı hata oluştu. Kaybettiğim bir şey mi var? M-q, c modunda farklı şekilde kullanılır mı? .emacs dosyasını burada bir hataya neden olabilecek bir şey olup olmadığını kontrol etmeli miyim? Herhangi bir yardım takdir edilecektir.

sayesinde sorunuzu ilgili Ryan

cevap

3

, describe-key (-c-u k bağlı) senin arkadaşın, "c-mode? Farklı kullanılan M-q mı". C dosyası ile arabelleğe giderken, C-h k M-q yazın ve size M-q'nin hangi işleve bağlı olduğunu tam olarak söyleyecektir. Bu durumda, diğer soruda bulduğunuz değişken olan paragraph-start'u kullanan c-fill-paragraph. istediğiniz kadar

"^[ ]*\\(//+\\|\\**\\)[ ]*\\([ ]*$\\|@param\\)\\|^\f"

Ancak wrappedlines girinti olmaz:

ben paragraph-start olarak kullanılan bu normal ifade çizgilerini sarın ve yeni bir paragraf olarak her @param muamele edeceğini bulundu. Örneğiniz şöyle görünür:

/** 
* Description 
* 
* @param[in,out] var1 : <Long description that needs 
* to be wrapped.> 
* @param[in,out] var2 : <Description2> 
*/ 

Umarım hala sizin için daha iyi çalışır. Girintiyi anlarsan bana haber ver.

+0

.emacs dosyasında belirttiğiniz düzenli ifadeyi eklemeyi denedim, ancak yine de ikinci bir paragraf olarak tanınmadığınız ikinci @ param ile aynı sorunu yaşıyorum. Paragraf durumunun düzeltilmesinin girinti sorunumu çözmeyeceğinin farkındayım, ancak bu başlangıç ​​için çok yararlı bir yer olacaktır =). İlk yazıyı yazdıktan sonra, bunun gerçekten iki bölümden oluşan bir soru olduğunu belirtmeliydim: 1) @param'ı yeni bir paragraf olarak tanımlayın. 2) Açıklamaları doğru şekilde girintile. – DuneBug

+0

Bu dosyada arabelleğe girdiğinizde, "C-h v paragraph-start" ne geri döner? Yukarıdaki regexp değilse, o zaman küresel olarak ayarlamış olabilirsiniz ve c-mode ile üzerine yazılıyor olabilir. Eğer durum buysa, bunu bir c-mode kancası olarak ayarlayabilirsiniz. – Neil