emacs - C / C ++ springt zum Anfang des enthaltenen Blocks

10

Beim Bearbeiten von C- oder C ++ - Dateien in Emacs möchte ich zum Anfang des enthaltenen Codeblocks gehen können. Ich hatte erwartet, eine C-Anfang-Block-Funktion zu finden, aber leider gibt es keine solche Funktion (meines Wissens). Zum Beispiel könnte ich den folgenden hässlichen C-Code bearbeiten:

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
    }
  }
}

Ich wäre sehr überrascht, wenn dies nicht bereits Teil von Emacs ist, ich kann es einfach nirgendwo finden ...

fortran-mode hat fortran-beginning-of-block

Promela-Modus hat promela-find-start-of-containing-block

mgalgs
quelle

Antworten:

14

Versuchen Sie es backward-up-list, standardmäßig gebunden an C-M-u.

Scottfrazer
quelle
1
und CMn (Vorwärtsliste) springt zum Ende des Blocks
Francois
Um von Anfang bis Ende innerhalb des Blocks zu springen, löst dies nicht den Zweck, da ich beim Versuch, zum Ende des Blocks zu gelangen C-M-n, zum Ende )eines Funktionsaufrufs komme.
Ritter
1
Es gibt vier verwandte Befehle: CMn (weiter) und CMp (vorher), die Sie über ganze Klammerblöcke hin und her führen, und CMu (aufwärts) und CMd (abwärts), mit denen Sie die Verschachtelung von Klammern um eine Ebene nach oben oder unten führen. (siehe Dokumentation ) Um zum Ende des aktuellen Blocks zu gelangen, benötigen Sie CMu CMn
rbennett485