Aggiungere queste espressioni per il vostro .emacs
, o valutare con M-:
.
Sizeof (che è il più semplice dei due casi)
La regex evidenzia una qualsiasi combinazione (indicato con l'espressione staffa [...]
; per quanto riguarda la sintassi, vedere la nota di seguito) di alfanumerico, spazi bianchi e l'asterisco tra parentesi e preceduto da sizeof
.
(font-lock-add-keywords 'c++-mode
'(("\\<sizeof[[:space:]]*(\\([[:alnum:][:space:]*]+\\))"
1 font-lock-type-face t)))
Il numero 1
dice emacs solo evidenziare il primo subespressione (contrassegnato da \\(...\\)
) utilizzando la faccia font-lock-type-face
; t
significa ignorare qualsiasi evidenziazione precedente.
È possibile visualizzare e modificare le facce disponibili con M-x customize group [RET] font-lock-faces [RET]
.
C++ stile getta
io non sono sicuro che typename si desidera essere messo in evidenza il – “ originale ” o quello di gettare nella. Il presente marchio evidenziatore entrambi:
(font-lock-add-keywords 'c++-mode
'(("\\<[[:alnum:]]+_cast[[:space:]]*<\\([[:alnum:][:space:]*]+\\)>[[:space:]]*(\\([[:alnum:][:space:]*]+\\))"
(1 font-lock-type-face t)
(2 font-lock-type-face t))))
Nuovamente, '1 and
2` selezionare le sottoespressioni corrispondenti.
Nota: Le espressioni regolari per i nomi di tipo non sono perfettamente conformi alla sintassi C++. Ad esempio, emacs metterà in evidenza le sciocchezze come sizeof(int * 32)
.
Inoltre, la mia soluzione non tiene in considerazione il problema Pavel menzionato nel commento alla tua domanda; che potresti anche usare sizeof
sulle variabili, che avrebbero bisogno di evidenziazioni diverse. Non penso sia possibile, a meno di implementare un parser C completo nel codice di blocco font.
fonte
2009-12-23 23:50:47
cosa intendi con "evidenziazione corretta"? Vuoi che il nome del tipo sia evidenziato allo stesso modo del nome del tip quando dichiari una variabile, o che ci sia qualche altro modo "corretto" che vorresti fosse evidenziato? – Andrew
Voglio che il nome del tipo sia evidenziato come quando dichiari una variabile, sì. –
Dato che, in 'sizeof (X)', dipende interamente dal contesto se X è un tipo o una variabile, quanto accurato vuoi che sia? –