Pregunta

Cuando se utiliza paredit en los modos de programación como C, escribir (se inserte un espacio antes del paréntesis de cuando estoy tratando de llamar a una función, y me dejó con:

foo ()

¿Hay una manera de desactivar la inserción del espacio sin necesidad de cambiar la fuente de paredit?

¿Fue útil?

Solución

Bueno, la forma paredit parece funcionar es que comprueba las tablas de sintaxis para ver si está insertando un par de la derecha después de una palabra / símbolo / etc., En cuyo caso se obliga a un espacio que debe insertarse. Necesita anular esa funcionalidad - que puede hacerse de diversas maneras. Consejos, redefinir la función de determinar el espacio, cambiando la tabla de sintaxis, etc.

Me gustaría probar la recta hacia adelante:

(defun paredit-space-for-delimiter-p (endp delimiter)
  (and (not (if endp (eobp) (bobp)))
       (memq (char-syntax (if endp (char-after) (char-before)))
             (list ?\"  ;; REMOVED ?w ?_
                   (let ((matching (matching-paren delimiter)))
                     (and matching (char-syntax matching)))))))

Esto, obviamente, se aplican a todos los lugares en los que utilice paredit. Si quieres algo más modo específico, se puede añadir algunas condiciones para que la declaración and (por ejemplo (and ... (memq major-mode '(c-mode lisp-mode)))).

Así que ... supongo que lo hice cambiar la "fuente", pero se puede hacer lo mismo con un trozo de defadvice ... todo elisp, por lo que la diferencia es mínima. No parece ser una opción para controlar este tipo de comportamiento.

Otros consejos

Vea paredit-space-for-delimiter-predicates

Bueno, Paredit es ideal para idiomas de edición integradas de S-expresiones. Si al igual que cómo se inserta automáticamente los paréntesis de cierre, uso de características esqueleto de par .

(setq skeleton-pair t)
(global-set-key "(" 'skeleton-pair-insert-maybe)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top