이 리스프 구문의 적절한 용어조차 모르겠다. 그래서 나는 질문을하기 위해 사용하는 단어가 의미가 있는지 알지 못한다. 그러나 문제는 당연한 것입니다.emacs : 매크로에 정의 된 코드에 edebug를 사용하려면 어떻게해야합니까?
그럼 알려 드리겠습니다. cc-mode (cc-fonts.el)에는 "matchers"라는 것이 있습니다.이 코드는 코드 영역의 글꼴을 지정하는 방법을 결정하는 코드입니다. 그렇게 간단 하긴하지만, matcher 코드는 backticks와 comma-atsign 및 쉼표만으로는 완전히 이해할 수없는 형태이며, 또한 c-lang-defcost에 내장되어 있습니다. 매크로. 모든 것을 호출해야할지 모르겠지만 그 코드에서 edebug를 실행하고 싶습니다.
봐 : 나는 코멘트를 다음 코드에 edebug를 실행할 수있는 내가 그 제외하고 그들을 부르지 만, 무엇을 그 일이 무엇을 알아 내기 위해 LISP 구문에 독서하고
(c-lang-defconst c-basic-matchers-after
"Font lock matchers for various things that should be fontified after
generic casts and declarations are fontified. Used on level 2 and
higher."
t `(;; Fontify the identifiers inside enum lists. (The enum type
;; name is handled by `c-simple-decl-matchers' or
;; `c-complex-decl-matchers' below.
,@(when (c-lang-const c-brace-id-list-kwds)
`((,(c-make-font-lock-search-function
(concat
"\\<\\("
(c-make-keywords-re nil (c-lang-const c-brace-id-list-kwds))
"\\)\\>"
;; Disallow various common punctuation chars that can't come
;; before the '{' of the enum list, to avoid searching too far.
"[^\]\[{}();,/#=]*"
"{")
'((c-font-lock-declarators limit t nil)
(save-match-data
(goto-char (match-end 0))
(c-put-char-property (1- (point)) 'c-type
'c-decl-id-start)
(c-forward-syntactic-ws))
(goto-char (match-end 0)))))))
, 그게 ;; Fontify the identifiers inside enum lists.
입니까?
defun에서 edebug를 실행하는 방법을 알고 있습니다. 함수의 정의 내에서 edebug-defun
을 호출하면됩니다. cc-mode matcher 코드 형식을 편집하기 위해해야 할 일이 있습니까?
def-edebug-spec
의 기능은 무엇입니까? 여기에서 사용하겠습니다. 그렇다면 어떻게?
오랜 시간이 지났지 만, edebug가 백틱 매크로 (')와 인라이닝을위한 특수 구조 (,,)를 올바르게 처리한다고 생각합니다. 정의 내에서 부 표현식에 대해서만 edebug를 사용하는 방법은 없습니다. 대신, 당신은 defun 또는 top-level 표현 전체를 계측해야합니다. – dlaliberte