J'ai un tas de macros C dans des fichiers, des trucs comme NEXT(pL)
qui est étendu à ((pL) -> next)
groupes Emacs regexp dans regex-
Je veux enlever la plupart d'entre eux parce qu'ils sont inutiles.
Ce que je voudrais faire, c'est obtenir le texte entre parenthèses dans la macro, pL
. Je veux que l'expression regexp de remplacement utilise ce texte pour la réécriture. Par exemple, en Perl que je pouvais faire quelque chose comme /NEXT\(\s*(.+)\s*)
(peut-être un peu incorrect) et puis quelque chose de sortie comme $1->next
, qui devrait tourner une ligne
if (NEXT(pL) != NULL) {
dans
if (pL->next != NULL) {
Dans Emacs, je voudrais aime utiliser des groupes de correspondance dans un emacs replace-regexp sur une base fichier par fichier. Je ne suis pas entièrement sûr de savoir comment faire cela dans Emacs.
'M-x c-macro-expansion' ou' M-x c-macro-expand' pourrait être utilisé. Mais ce que vous demandez semble avoir besoin d'une nouvelle fonction autour du 'M-x c-macro-expansion' pour travailler sur un fichier entier ou un tampon. – vpit3833
c-macro-expand ne connaît pas les macros? Ils sont situés dans un fichier/tampon séparé. – Kizaru