actionscript 3 - Cómo controlar la indentación después de un paréntesis abierto en Emacs
actionscript-3 indentation (3)
Cuando uso emacs python-mode, si el último carácter de una línea es un paréntesis abierto, inserta la siguiente línea a un paso de la sangría de la línea anterior.
call_some_function(
some_very_long_argument_that_I_want_to_put_on_its_own_line)
Me gusta eso. Ahora en modo ecmascript (que estoy usando para actionscript 3), siempre se sangra al nivel del paréntesis anterior.
call_some_function(
this_is_not_really_saving_me_any_horizontal_space);
¿Cómo puedo hacer una sangría de modo ecmascript como el modo python a este respecto?
Como el modo ecmascript se basa en el modo cc, puede usar c-set-offset
que le permite personalizar el desplazamiento de cualquier símbolo sintáctico con el valor preferido.
En su caso, vaya al punto que está sangrado en el nivel incorrecto, presione Cc Co
(o escriba Mx c-set-offset
), acepte el símbolo sugerido ( arglist-intro
) y establezca un nuevo valor (por ejemplo, +
, el desplazamiento predeterminado).
También puede hacerlo programáticamente en sus dotemacs, por ejemplo, con:
(add-hook ''ecmascript-mode-hook
(lambda ()
(c-set-offset ''arglist-intro ''+)
(c-set-offset ''arglist-close 0)))
Gracias Török Gábor, en mi caso prefiero establecer
(add-hook ''XXX-mode-hook
(lambda ()
(c-set-offset ''arglist-cont-nonempty ''+)))
Estaba buscando algo como esto :
veryLongFunctionName (bar, bar, bar)
Para obtener una lista más exhaustiva de variables, lea la documentación de emacs
ecmascript-mode parece estar basado en cc-mode . Si configura el estilo de sangría para cc-mode , también funcionará para el modo ecmascript . Tengo el siguiente código en mis .emacs . Cuando uso ecmascript-mode , sangra como lo desee:
;;{{{ c/c++ indent style variables
(require ''cc-mode)
(defconst my-c-style
''(
(c-electric-pound-behavior . ''alignleft)
(c-tab-always-indent . t)
(c-hanging-braces-alist . ((block-open)
(brace-list-open)
(substatement-open)
(defun-open before after)
(defun-close before after)
))
(c-hanging-colons-alist . ((member-init-intro before)
(inher-intro)
(case-label)
(access-label after)
(label after)
(access-key after)))
(c-cleanup-list . (scope-operator
empty-defun-braces
defun-close-semi))
(c-offsets-alist . ((arglist-close . c-lineup-arglist)
(case-label . 4)
(statement-case-intro . 4)
(access-label . -4)
(label . -)
(substatement-open . 0)
(block-open . 0)
(knr-argdecl-intro . -)))
)
"My C++/C Programming Style")
; Customizations for both c-mode and c++-mode
(defun my-c-mode-common-hook ()
; set up for my perferred indentation style, but only do it once
(c-add-style "My" my-c-style ''set-this-style)
; we like auto-newline and hungry-delete
(c-toggle-auto-hungry-state 1)
; keybindings for both C and C++. We can put these in c-mode-map
; because c++-mode-map inherits it
(define-key c-mode-map "/C-m" ''newline-and-indent)
; insert 8 tabs
(setq tab-width 8)
)
;;}}}