2013-09-02 5 views
5

Come posso eseguire il debug delle parole chiave di blocco dei caratteri che scrivo? Per esempiocome eseguire il debug dei caratteri di blocco parole chiave errore

(progn 
    (font-lock-add-keywords 
    nil 
    '(
    ;; ("hi1" . 'success) 
    ("hi2" . (intern (concat "warn" "ing"))) 
    )) 
    (font-lock-fontify-buffer)) 

produrrà il seguente messaggio in Messaggi buffer:

Error during redisplay: (jit-lock-function 1) signaled (wrong-type-argument stringp 22) 

Per vedere lo stack di chiamate in caso di errore sbagliato-tipo-argomento, invoco toggle-debug-on-error e Emacs ancora non si entra debugger su errore di blocco font.

+0

Per quanto riguarda il motivo per cui viene visualizzato un errore per questo particolare esempio, http://stackoverflow.com/questions/18570224/how-does-a-progn-form-in-font-lock-keywords-work –

risposta

6

font-lock può essere applicato in diversi modi. Per impostazione predefinita viene applicato utilizzando la modalità jit-lock , che lo applica "pigramente" (ovvero "just-in-time"), che ha lo lo svantaggio che viene applicato in un momento in cui non è possibile visualizzare il messaggio (o inserisci il debugger) perché ciò ci renderebbe inf-loop. Quindi ci sono due modi per risolvere il problema:

  • Usa jit-lock-debug-mode (recentemente aggiunto al codice di sviluppo di Emacs).
  • Impostare font-lock-support-mode su zero, quindi disattivare il blocco caratteri e quindi su.

Entrambe le opzioni devono modificare il blocco font in modo che venga applicato alla volta dove è possibile utilizzare il debug.

Problemi correlati