emacs -- C/C++ jump to beginning of containing block

5,160

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

Share:
5,160

Related videos on Youtube

mgalgs
Author by

mgalgs

Updated on September 17, 2022

Comments

  • mgalgs
    mgalgs over 1 year

    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

  • dknight
    dknight about 9 years
    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.
  • rbennett485
    rbennett485 almost 8 years
    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