emacs - C / C ++ salta para o início do bloco que contém

10

Ao editar arquivos C ou C ++ no emacs, eu gostaria de poder ir para o início do bloco de código que o contém . Eu esperava encontrar uma função de início de bloco c, mas, infelizmente, essa função não existe (que eu saiba). Por exemplo, eu posso estar editando o seguinte código C feio:

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

Eu ficaria muito surpreso se isso ainda não faz parte do emacs, simplesmente não consigo encontrá-lo em qualquer lugar ...

o modo fortran fortran-beginning-of-block

modo promela tem promela-find-start-of-containing-block

mgalgs
fonte

Respostas:

14

Tente backward-up-list, vinculado por padrão a C-M-u.

scottfrazer
fonte
1
e CMN (forward-list) pula para o fim do bloco
François
Para continuar pulando dentro do bloco do começo ao fim, isso não resolve o objetivo, porque quando tento mover para o final do bloco, C-M-nleva-me ao final )de uma chamada de função.
dknight
1
Existem quatro comandos relacionados: CMn (próximo) e CMp (anterior), que levam você para trás e para frente sobre blocos de parênteses inteiros, e CMu (para cima) e CMd (para baixo), que levam um nível acima ou abaixo do aninhamento de parênteses. (ver docs ) Então, para ir até o fim do bloco atual, você precisa CMU CMN
rbennett485