En Verilog se encierran bloques de código entre las palabras 'begin' y 'final' como este:Definir paréntesis de varios caracteres en Emacs
if(foo) begin
x <= 1'b0;
y <= 1'b0;
end else begin
x <= x_d;
y <= y_d;
end
¿Hay alguna manera de establecer comienzan y terminan como paréntesis en Emacs, para que pueda usar check-parens o similar para encontrar cualquiera que no coincida?
He intentado añadir esta (y variaciones de) a mi archivo ~/.emacs, pero no le gusta ...
(modify-syntax-entry ?begin "(end")
(modify-syntax-entry ?end ")begin")
Gracias.
Este tipo de cosas normalmente se maneja con el motor de sangría. Puede usarlo para verificar la sintaxis, por ejemplo marcando todo el buffer y ejecutando 'indent-region'. Si el final del archivo está incorrectamente sangrado, tiene una discrepancia de inicio/finalización. – Lindydancer
@Lindydancer gracias, pero estoy trabajando en el código que está siendo editado por varias personas a la vez, todas usando diferentes editores, y por lo tanto a menudo diferentes secciones del código se sangran de diferentes maneras. Además, algunos de los archivos tienden a ser muy largos, y el seleccionar todo 'indent-region' puede tomar mucho tiempo ... – kiteflyingmonkey
En ese caso, escribiría simplemente un paquete personalizado encontrando pares de inicio/fin coincidentes. No es trivial, pero creo que sería un buen ejercicio en elisp, si eres nuevo en él. – Lindydancer