Renk bildirimi değişkenleri


11

Emacs C / C ++ tek bir işlev bildirilen değişken hatırlıyorum yapmak için basit bir yol arıyorum. "Basit" ile, herhangi bir harici paket olmadan, yapılandırma dosyalarındaki bazı elisp satırlarıyla kastediyorum.

Varsayılan Emacs yapılandırmam, değişkenlerin adlarını bildirimde sarı renkte gösteriyor, ancak kullanımda beyaz olmasına izin veriyor.

char toto; // 'char' is green, 'toto' is yellow

toto = 42; // 'toto' is white

Aynı işlevin / kapsamın her "toto" sunu da sarı renkte yapmak istiyorum.

Bu soruya çoktan baktım ama daha basit bir şey istiyorum. Ayrıca yazı tipi kilit modu ile bir şey yapmaya çalıştım , ancak değişken isimlere uyarlanabilir bir şey yapmayı başaramadım.

Zaten C ++ sınıf üye adları (bir ad desen kullanarak) için bir fikrim var, bu yüzden sadece burada yerel bir değişken eşleşmesini istiyorum.


3
Bu muhtemelen göründüğünden daha zor. nobugs.org/developer/parsingcpp
wasamasa

8
Neden hiçbir paket kullanmak istemiyorsun? Bu özelliği sağlayan bir paket varsa, onu yüklemek, yapılandırmanızda özelliği sıfırdan yeniden oluşturmaktan neredeyse daha az elisp gerektirir.
Tyler

11
Bu color-identifiers-modepakete çok benziyor . (Bunu harici paketler üzerinde düşünmek istemediğinizi söylediğiniz için yorum olarak
Aaron Harris

7
Her "harici paket" aynı zamanda "yapılandırma dosyalarındaki bazı elisp satırları" olarak da tanımlanabilir. Önceden var olan koddan birinin paket formunda sağladığından kaçınmak saçmadır.
phils

Hangi Emacs sürümüne sahipsiniz?
DA Vincent

Yanıtlar:


1

Sen, değişken düzeni için bir şey regexpi toplayabilecek verebilecek maçlar (sözde regexp kodu) [char|other|types] [a-z];ve [a-z] =*;ve modu için yazı tipi kilit anahtar kelime listesine eklemek; Özelleştirme-Anahtar Kelimeler sayfasındaki kılavuzdan :

Örneğin, aşağıdaki kod C modu için iki yazı tipi örüntüsü ekler: biri yorumlarda bile 'FIXME' kelimesini fondanlamak için, diğeri de anahtar kelimeler olarak 've', 'veya' ve 'değil' kelimelerini fondanlamak için.

 (font-lock-add-keywords 'c-mode
  '(("\\<\\(FIXME\\):" 1 font-lock-warning-face prepend)
    ("\\<\\(and\\|or\\|not\\)\\>" . font-lock-keyword-face)))

Bu örnek yalnızca uygun C modunu etkiler. Aynı modelleri C moduna ve bundan türetilen tüm modlara eklemek için, bunun yerine bunu yapın:

 (add-hook 'c-mode-hook
  (lambda ()
   (font-lock-add-keywords nil
    '(("\\<\\(FIXME\\):" 1 font-lock-warning-face prepend)
      ("\\<\\(and\\|or\\|not\\)\\>" .
       font-lock-keyword-face)))))
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.