2013-09-02 54 views
5

Làm cách nào để tôi có thể gỡ lỗi từ khóa khóa chữ mà tôi viết? Ví dụcách gỡ lỗi lỗi từ khóa khóa phông chữ

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

sẽ sản xuất được thông báo sau trong Messages đệm:

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

Để xem các cuộc gọi stack khi lỗi sai kiểu đối số, tôi gọi toggle-debug-on-error và Emacs vẫn không nhập trình gỡ rối khi lỗi khóa phông chữ.

+0

Tại sao chúng tôi gặp lỗi cho ví dụ cụ thể đó, http://stackoverflow.com/questions/18570224/how-does-a-progn-form-in-font-lock-keywords-work –

Trả lời

6

phông chữ khóa có thể được áp dụng theo nhiều cách khác nhau. Theo mặc định, nó được áp dụng bằng cách sử dụng chế độ khóa jit-lock, áp dụng nó "lazily" (có nghĩa là "just-in-time"), có bất lợi là nó được áp dụng tại thời điểm chúng tôi không thể hiển thị thông báo (hoặc nhập trình gỡ lỗi) bởi vì điều đó sẽ làm cho chúng tôi inf-loop. Vì vậy, có hai cách để làm việc xung quanh vấn đề này:

  • Sử dụng jit-lock-debug-mode (gần đây thêm vào mã phát triển Emacs của).
  • Đặt font-lock-support-mode thành không, sau đó tắt khóa phông chữ và sau đó bật lại .

Cả hai tùy chọn nên thay đổi kiểu chữ để nó được áp dụng tại một thời điểm nơi có thể sử dụng gỡ lỗi.

Các vấn đề liên quan