Variabili dichiarate a colori


11

Sto cercando un modo semplice per far ricordare a emacs la variabile dichiarata in una singola funzione in C / C ++. Con "semplice" intendo senza alcun pacchetto esterno, solo con alcune righe elisp nei file di configurazione.

La mia configurazione predefinita di Emacs colora i nomi delle variabili in giallo al momento della dichiarazione, ma li consento in bianco.

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

toto = 42; // 'toto' is white

Vorrei anche rendere ogni "toto" della stessa funzione / ambito colorato di giallo.

Ho già esaminato questa domanda, ma vorrei qualcosa di più semplice. Ho anche provato a fare qualcosa con la modalità blocco caratteri , ma non sono riuscito a rendere qualcosa adattabile ai nomi delle variabili.

Ho già un'idea per i nomi dei membri della classe C ++ (usando un modello di nome), quindi voglio solo una corrispondenza della variabile locale qui.


3
Questo è probabilmente più difficile di quanto sembri. nobugs.org/developer/parsingcpp
wasamasa,

8
Perché non vuoi usare nessun pacchetto? Se esiste un pacchetto che fornisce questa funzione, installarla richiederà quasi sicuramente meno elisp nella configurazione che ricreare la funzione da zero.
Tyler,

11
Sembra molto simile al color-identifiers-modepacchetto . (Pubblicando questo come commento perché hai detto che non volevi prendere in considerazione pacchetti esterni.)
Aaron Harris,

7
Ogni "pacchetto esterno" può anche essere descritto come "alcune righe elisp nei file di configurazione". Evitare il codice preesistente sulla base del fatto che qualcuno lo abbia fornito in forma di pacchetto è assurdo.
phils,

Quale versione di Emacs hai?
DA Vincent,

Risposte:


1

Si potrebbe mettere insieme un'espressione regolare per il vostro schema variabile, qualcosa che le partite (pseudo codice regexp) [char|other|types] [a-z];ed [a-z] =*;e aggiungerlo alla lista di parole chiave font-lock per la modalità; Dal manuale alla pagina Personalizzazione delle parole chiave :

Ad esempio, il codice seguente aggiunge due schemi di fontificazione per la modalità C: uno per fontificare la parola "FIXME", anche nei commenti, e un altro per fontificare le parole "e", "o" e "non" come parole chiave.

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

Questo esempio riguarda solo la modalità C corretta. Per aggiungere gli stessi schemi alla modalità C e tutte le modalità derivate da essa, procedere come segue:

 (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)))))
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.