2009-04-04 10 views

cevap

9

bu birkaç adet vardır:

  • istediğin her yeniden biçimlendirme yapmak EMACS fonksiyonları ile gelmeleri gerekir. indent-region bir başlangıçtır, ancak başka şeyler de tanımlamak isteyebilirsiniz.
  • Her dosyada bunları çağırmanız gerekir ve girinti işlevleri aralıklarla çalıştığından, tüm dosyayı kapsayacak şekilde işareti ayarlayan bir işleve ihtiyacınız vardır: mark-whole-buffer.
  • Her dosyada EMACS'yi çağırmanız gerekir: bu, --acch dosyasıyla emacs çağırmak anlamına gelir.

here ve here ile ilgili bir çok güzel blog yazısı var.

+0

Bu iyi görünüyor, teşekkürler! – Frank

+0

Maalesef, blog gönderilerinin bağlantıları artık öldü. – Paul

+0

Blog mesajları şimdi çalışıyor. –

2

Bu komut dosyasının yeniden biçimlendirilmediğini düşünüyorum. açıklandığı gibi Bunun yerine özel bir "tarz" inşa etmek için nasıl bir örnek: CC mode manual - Styles

CC-mod manuel de diyor ki: Eğer eski kod yeniden biçimlendirmek istiyorsanız

, kullandığınız muhtemelen daha çok işinize bunun yerine başka bir araç, örneğin CC Mode'dan daha güçlü yeniden biçimlendirme yeteneklerine sahip GNU girintisi.

CC mode manual - Limitations-and-Known-Bugs

+0

şey, evet, ama biçimlendirebilmek tarzını yüklenmiş bulunan. –

+0

Evet, bu yüzden stili yüklemek ve indent-buffer işlevini uygulamak istiyorum. Ve sonra tüm dosyaları ile yapın. – Frank

+0

Reindent, evet. Reformat, hayır. Örneğin parantezden önce/sonra yeni satırlar değişmez. –

3

Bunu daha önce klavye tanımlı bir makro kullanarak yaptım. Tüm dosyaları emacs (find . -name "*.cpp" | xargs emacs gibi bir şey) içine yükler ve sonra aşağıdaki anahtarları yazın. Her bir tuş kombinasyonunu ne yaptığıyla açıkladım.

C-x-(     'Begin recording macro 
M-<     'Go to start of file 
C-space    'Mark current location (now start of file) 
M->     'Go to end of file 
M-x indent-region  'Indent entire file according to coding style 
C-x C-s    'Save the current buffer 
C-x C-k    'Close the current buffer 
C-x-)     'End recording macro 

Şimdi C-x e yazarak bir tampon bu çalıştırabilirsiniz. Birkaç dosya yüklediyseniz, 100 dosya üzerinde çalıştırmak için C-u 100 C-x e gibi bir şey çalıştırabilirsiniz. Eğer bu sayı dosya sayısından fazlaysa, tüm işlem tamamlandığında bir kez "zil çalma" ya da görmezden gelebilecek bir hata alırsınız.

0

bir dired tampon içerisinde kaynak dosyaları işaretlemek ve sonra böyle bir şey yapabileceği her biçimlendirmek için bir işlev çalıştırmak isterseniz:

(defun clean-file(filename) 
    (your-function-goes-here)) 

(defun clean-each-dired-marked-file() 
    (interactive) 
    (for-each-dired-marked-file 'clean-file)) 

(defun for-each-dired-marked-file(fn) 
"Do stuff for each marked file, only works in dired window" 
(interactive) 
(if (eq major-mode 'dired-mode) 
    (let ((filenames (dired-get-marked-files))) 
     (mapcar fn filenames)) 
    (error (format "Not a Dired buffer \(%s\)" major-mode))))