He escrito un modo simple para manejar JSON. Utiliza la maquinaria derivada para reutilizar la mayor parte del código de json-mode. Sin embargo, una adición es que puede insertar elisp en el texto JSON que se evalúa en el momento de envío JSON. Por ejemplo, un extracto de json se ve así:
{
"parameters": {
"IRC_USER": "stsquad",
"PUB_KEY": `(format "\"%s\"" (s-trim (shell-command-to-string "cat ~/.ssh/id_rsa.pub")))`
}
}
Actualmente, el resaltado de sintaxis de este texto está roto cuando el elisp arroja el resaltador de sintaxis JSON. Me gustaría configurar una tabla de sintaxis anidada para que elisp se reconozca correctamente como elisp dentro de los caracteres de escape (he elegido `en este caso). Entiendo que puedes unir char-tables (a partir de las cuales se construyen las tablas de sintaxis) con algo como:
(defvar lava-mode-syntax-table
(let ((json-table (copy-syntax-table json-mode-syntax-table))
(elisp-table (copy-syntax-table lisp-mode-syntax-table)))
(set-char-table-parent elisp-table json-table)
(modify-syntax-entry ?` "(`" json-table)
(modify-syntax-entry ?` ")`" json-table)
json-table)
"LAVA Mode syntax table.
This is a combination of json-mode-syntax-table with an escape into
lisp-mode-syntax table for the embedded elisp.")
Pero no entiendo cómo puedo modificar la tabla de sintaxis para comenzar a usar la tabla de sintaxis secundaria (elisp) mientras estoy entre los caracteres de escape.