Ho scritto una modalità semplice per la gestione di JSON. Utilizza i macchinari derivati per riutilizzare la maggior parte del codice della modalità json. Comunque un'aggiunta è che puoi inserire elisp nel testo JSON che viene valutato al momento dell'invio di JSON. Ad esempio un estratto di JSON è simile al seguente:
{
"parameters": {
"IRC_USER": "stsquad",
"PUB_KEY": `(format "\"%s\"" (s-trim (shell-command-to-string "cat ~/.ssh/id_rsa.pub")))`
}
}
Attualmente l'evidenziazione della sintassi di questo testo è interrotta quando l'illuminatore della sintassi JSON viene lanciato dall'elisp. Vorrei impostare una tabella di sintassi nidificata in modo che elisp sia correttamente riconosciuto come elisp all'interno dei caratteri di escape (ho scelto `in questo caso). Capisco che puoi unire i char-table (da cui sono basate le tabelle di sintassi) con qualcosa del tipo:
(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.")
Ma non capisco come posso modificare la tabella di sintassi per iniziare a usare la tabella di sintassi child (elisp) mentre si è tra i caratteri di escape?