¿Cerrando automáticamente los frenos en Emacs?
typing (4)
Sí, este modo se llama eléctrico . Puede combinar el comportamiento eléctrico con esta macro simple para el máximo confort:
(defun electric-pair ()
"If at end of line, insert character pair without surrounding spaces.
Otherwise, just insert the typed character."
(interactive)
(if (eolp) (let (parens-require-spaces) (insert-pair))
(self-insert-command 1)))
Luego habilítalo enlazando los caracteres apropiados en tus modos de programación favoritos. Por ejemplo, para PythonMode:
(add-hook ''python-mode-hook
(lambda ()
(define-key python-mode-map "/"" ''electric-pair)
(define-key python-mode-map "/'" ''electric-pair)
(define-key python-mode-map "(" ''electric-pair)
(define-key python-mode-map "[" ''electric-pair)
(define-key python-mode-map "{" ''electric-pair)))
El modo CPerl proporciona esto como una función:
;; from my .emacs
(add-hook ''cperl-mode-hook
(lambda ()
(setq cperl-hairy nil
abbrev-mode t ;; automatic keyword expansion
cperl-highlight-variables-indiscriminately t
cperl-auto-newline t
cperl-auto-newline-after-colon t
cperl-regexp-scan nil
cperl-electric-keywords t
cperl-electric-linefeed t
cperl-electric-parens nil) ;; <------ electric parens!
Otros modos podrían proporcionar algo similar.
He visto un complemento para Vim llamado AutoClose (descubierto en this publicación) que agrega automáticamente el corchete de cierre al escribir ''('', ''{'' etc.
Por ejemplo; cuando escribo lo siguiente ( |
es el cursor):
int main(|
Me gustaría que el cierre se inserte automáticamente para mí:
int main(|)
¿Alguien sabe de una característica similar para emacs? ¡Google me ha fallado esta vez!
También está ''paredit
. La hoja de trucos te muestra todos los comandos disponibles. resulta que me gusta más que el modo eléctrico sugerido en otra respuesta. Aunque el método de reducción de la carga solo se aplica a (), puede que no satisfaga sus necesidades.
Pero, para ser honesto, hay un montón de paquetes que rodean el paréntesis. La wiki los tiene todos listados aquí . Los modos que abordan tu pregunta son:
Voy a necro este hilo y daré otra alternativa. Hay un nuevo proyecto recientemente iniciado que trata sobre la inserción automática de pares, el ajuste de regiones, la navegación alrededor de expresiones equilibradas y mucho más. La lista de características es demasiado larga para dar aquí, así que solo voy a enlazar con el repositorio github de smartparens donde puedes leer el archivo Léame detallado.
Es un superconjunto del AutoPair mencionado anteriormente y proporciona la mayoría de las funciones principales de paredit (y se extiende a todo tipo de pares diferentes, no solo los reconocidos por las tablas de sintaxis de emacs).
cmarcelo ha escrito una maravillosa publicación sobre esto usando el modo esqueleto. También muestra cómo quitar el soporte equilibrado si elimina el soporte de apertura y cómo tratar el caso en el que accidentalmente escribe el soporte de cierre. (Incidentalmente ambos comportamientos copian TextMate).
Actualizar:
Desde que Autopair esta respuesta, descubrí Autopair que es un sistema bastante perfecto para este caso de uso. Lo he estado usando mucho y me ha encantado.