2010-12-10 7 views
14
 
class Foo 
    attr_accessor :a, 
       :time, # ms since epoch 
       :b, 
       :c 
end 

, 'a' olarak yukarıda yazılı girinti, ama yakut modunda bunun yerine 'attr_accessor' ile aynı hizada olacak sonra listelenir değişkenler. Bu durumda metin modu gibi girinti yapmak için yakut modunu nasıl alabilirim? Tüm dosyayı seçebilmeyi ve tüm diğer ruby-mode.el girinti kurallarına ek olarak yukarıdaki girintiyi almak için c-m- \ tuşlarına basmayı tercih edeceğimi unutmayın.Emacs yakut modlu girinti davranış metin modunda

Remi itibaren (yorumlarda)
+2

Not (a, : Zaman, çağ beri # ms: b, : c) uç –

+0

"lisp" ekleyerek bu soruya – drdo

+0

için doğru etiket değil parens işleri, teşekkür ederim! – John

cevap

4

: Not olduğunu Emacs olacak doğru girinti sınıf Foo attr_accessor (a,: Zaman, dönemden beri # ms: b: c) uç - Rémi 11 Aralık '10 8:50

de

Parens ekleyebilir ve uygun şekilde girintiye sahip olabilirsiniz - Bunu buraya ekliyorum çünkü cevaplanmamış sorular arıyorum ve bu da (yanlış bir şekilde yorumlarda yanıtlandığından) ortaya çıkıyor.

+0

Vay, bu berbat. Bu durumda Ruby'nin doğru girintilemesini sağlamak için parantez eklemek istemiyorum. Bu işi yapmak için başka bir yol buldunuz mu? – slacy

12

Bu hack, çoğu durumda çalışmalıdır.

(defadvice ruby-indent-line (after line-up-args activate) 
    (let (indent prev-indent arg-indent) 
    (save-excursion 
     (back-to-indentation) 
     (when (zerop (car (syntax-ppss))) 
     (setq indent (current-column)) 
     (skip-chars-backward " \t\n") 
     (when (eq ?, (char-before)) 
      (ruby-backward-sexp) 
      (back-to-indentation) 
      (setq prev-indent (current-column)) 
      (skip-syntax-forward "w_.") 
      (skip-chars-forward " ") 
      (setq arg-indent (current-column))))) 
    (when prev-indent 
     (let ((offset (- (current-column) indent))) 
     (cond ((< indent prev-indent) 
       (indent-line-to prev-indent)) 
       ((= indent prev-indent) 
       (indent-line-to arg-indent))) 
     (when (> offset 0) (forward-char offset)))))) 

Örnek:

class Comment < ActiveRecord::Base 
    after_create :send_email_to_author, 
       :if => :author_wants_emails?, 
       :unless => Proc.new { |comment| comment.post.ignore_comments? } 
end 
+0

güzel! teşekkürler! – aL3xa

+0

Rica ederim! Bu tweak'i birkaç aydır kullanıyorum, büyük bir problem yaşamadan. – Dmitry

+0

Bu harika görünüyor. "Büyük problemler olmadan" derken, sadece mütevazı mıdır? Bilmem gereken bazı küçük sorunlar neler? –

2

Emacs 24.4 veya daha yeni kullanarak, örnek varsayılan olarak böyle girintili. Emacs girinti sınıf Foo attr_accessor correcly edeceğini