2011-11-01 21 views
27

voglio fare il metodo emacs trattino rubino chiamate come:Emacs Rubino parametro del metodo di indentazione

foo(
    :blah => 'bar', 
    :shibby => 'baz' 
) 

Il più vicino che può ottenere è:

foo(
    :blah => 'bar', 
    :shibby => 'baz' 
) 

Questo è utilizzando rubino profondo-trattino-parentesi , rubino-deep-indent-paren-style, ruby-deep-arglist tutto pronto a zero.

Trattino i trattini come mi piace ... se potessi solo fare chiamate di metodo come indentazione sarei felice. Qualche idea?

+1

+1, non ho ancora capito come correggere quell'allineamento di parentesi chiuso né. – d11wtq

risposta

12

Dmitry Gutov ha pubblicato this fix, utilizzando consiglio, che sembra funzionare:

(defadvice ruby-indent-line (after unindent-closing-paren activate) 
    (let ((column (current-column)) 
     indent offset) 
    (save-excursion 
     (back-to-indentation) 
     (let ((state (syntax-ppss))) 
     (setq offset (- column (current-column))) 
     (when (and (eq (char-after) ?\)) 
        (not (zerop (car state)))) 
      (goto-char (cadr state)) 
      (setq indent (current-indentation))))) 
    (when indent 
     (indent-line-to indent) 
     (when (> offset 0) (forward-char offset))))) 
0

Credo che ci sia una sequenza di tasti come C-c o, che è possibile premere con il cursore su quel paren di chiusura che mostrerebbe quale variabile è usata e ti consente di digitare un nuovo valore (come 0 o +). Prova questo!

5

Rubino rientro nel bagagliaio Emacs corrente (per essere rilasciato come 24,4) funziona come si sta chiedendo, senza modifiche aggiuntive.