10

While editing C or C++ files in emacs, I'd like to be able to go to the beginning of the containing block of code. I was expecting to find a c-beginning-of-block function, but alas, no such function exists (to my knowledge). For example, I might be editing the following ugly C code:

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

I would be very surprised if this isn't already part of emacs, I just can't find it anywhere...

fortran-mode has fortran-beginning-of-block

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

13

Try backward-up-list, bound by default to C-M-u.

  • 1
    and C-M-n (forward-list) jumps to the end of block – Francois Jun 25 '12 at 16:13
  • To keep jumping within the block from beginning to end, this does not solve the purpose because when I try to move to end of block C-M-n takes me to end of ) of a function call. – dknight Feb 24 '15 at 6:07
  • 1
    There are four related commands: C-M-n (next) and C-M-p (previous), which take you backwards and forwards over whole parenthesis blocks, and C-M-u (up) and C-M-d (down) which take you one level up or down the nesting of parentheses. (see docs) So to go to the end of the current block, you need C-M-u C-M-n – rbennett485 May 19 '16 at 13:36

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.