Hatta bu lisp sözdizimi için uygun terminolojiyi bilmiyorum, o yüzden soru sormak için kullanıyorum kelimeler, mantıklı eğer bilmiyorum. Ama soru mantıklı, eminim. emacs: Bir makroda tanımlanan kod hakkında nasıl bir özellik kullanırım?
Yani bana sadece size göstereyim. cc-mode (cc-fonts.el) kod bölgesini nasıl font edeceğine karar vermek için çalışan kod parçaları olan "eşleştiriciler" adı verilen şeylere sahiptir. Bu yeterince basit geliyor ama eşleştirici kodu vb ters tırnakların ve virgül-ATSIGN ve sadece virgül ile, tamamen anlamıyorum bir formda olup, öte yandan kendisi bir c-lang-defcost, gömülüdür makro. Tüm bunlara ne diyeceğimi bilmiyorum, ama o koddaki yayıncıyı çalıştırmak istiyorum.Bak: Ben yorumunu şöyle kodu edebug çalıştırabilirsiniz nasıl Bundan bir kenara çağırır, ancak ne bu şeyler vardır ve ne olduğunu anlamaya lisp sözdizimi üzerinde okuyorum
(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.
okur?
edebug-defun
çağırmak ve ben gidiyorum. Cc-mode eşleştirici kod formlarımda yayınlamak için yapmam gereken bir şey var mı?
def-edebug-spec
ne yapar, ve ben burayı kullanırsınız? Öyleyse nasıl?
Bir süredir var, ama ben inanıyorum ki, backgrick makrosu (') ve onun özel yapısı (, ve, @) için uygun şekilde ele alır. Bir tanım içinde yalnızca bir alt ifadeyle ilgili olarak Bunun yerine, tüm defun veya üst düzey ifadeyi almanız gerekir. – dlaliberte