emacs - C / C ++ saute au début du bloc conteneur

10

Lors de l'édition de fichiers C ou C ++ dans emacs, j'aimerais pouvoir aller au début du bloc de code contenant . Je m'attendais à trouver une fonction de début de bloc c, mais hélas, aucune fonction de ce type n'existe (à ma connaissance). Par exemple, je suis peut-être en train de modifier le vilain code C suivant:

void myFunction()
{
  if (something) { //<--- I want to jump to this brace!
    // do lots of stuff
    if (stuff) {
      // stuff
    }
    // more stuff
    // ...

    // I want to put my cursor somewhere on this line <---
    // (anywhere just outside the following if) and call c-beginning-of-block
    // and jump to the brace marked above (skipping "sibling" statements)
    if (pizza_is_good) {
      // do something
      // wait, where am I?
    }
    // way more stuff
    // ...
    if (i_love_pizza) {
      // eat pizza
    }
  }
}

Je serais très surpris si cela ne fait pas déjà partie d'emacs, je ne le trouve nulle part ...

le mode fortran a fortran-beginning-of-block

promela-mode a promela-find-start-of-containing-block

mgalgs
la source

Réponses:

14

Essayez backward-up-list, lié par défaut à C-M-u.

scottfrazer
la source
1
et CMn (liste avant) saute à la fin du bloc
Francois
Pour continuer à sauter dans le bloc du début à la fin, cela ne résout pas le but parce que lorsque j'essaie de passer à la fin du bloc C-M-nme mène à la fin )d'un appel de fonction.
dknight
1
Il existe quatre commandes associées: CMn (suivant) et CMp (précédent), qui vous emmènent en arrière et en avant sur des blocs de parenthèses entiers, et CMu (haut) et CMd (bas) qui vous font monter ou descendre d'un niveau dans l'imbrication des parenthèses. (voir la documentation ) Donc, pour aller à la fin du bloc actuel, vous avez besoin de CMu CMn
rbennett485