emacs - C / C ++ salta al comienzo del bloque contenedor

10

Mientras edito archivos C o C ++ en emacs, me gustaría poder ir al principio del bloque de código que lo contiene . Esperaba encontrar una función c-principio-de-bloque, pero lamentablemente, tal función no existe (que yo sepa). Por ejemplo, podría estar editando el siguiente código C feo:

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

Me sorprendería mucho si esto no es parte de emacs, simplemente no puedo encontrarlo en ningún lado ...

fortran-mode tiene fortran-beginning-of-block

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

mgalgs
fuente

Respuestas:

14

Intenta backward-up-list, vinculado por defecto a C-M-u.

scottfrazer
fuente
1
y CMn (lista de avance) salta al final del bloque
Francois
Para seguir saltando dentro del bloque de principio a fin, esto no resuelve el propósito porque cuando intento moverme al final del bloque C-M-nme lleva al final )de una llamada de función.
dknight
1
Hay cuatro comandos relacionados: CMn (siguiente) y CMp (anterior), que lo llevan hacia atrás y hacia adelante sobre bloques de paréntesis completos, y CMu (arriba) y CMd (abajo) que lo llevan un nivel hacia arriba o hacia abajo al anidar los paréntesis. (ver documentos ) Entonces, para ir al final del bloque actual, necesita CMu CMn
rbennett485