emacs - C / C ++ passa all'inizio del blocco contenente


10

Durante la modifica dei file C o C ++ in emacs, mi piacerebbe poter andare all'inizio del blocco di codice contenente . Mi aspettavo di trovare una funzione c-inizio-blocco, ma purtroppo tale funzione non esiste (per quanto ne sappia). Ad esempio, potrei modificare il seguente brutto codice C:

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

Sarei molto sorpreso se questo non fa già parte di Emacs, non riesco a trovarlo da nessuna parte ...

fortran-mode ha fortran-beginning-of-block

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

Risposte:


14

Prova backward-up-list, associato per impostazione predefinita a C-M-u.


1
e CMn (forward-list) salta alla fine del blocco
Francois,

Continuare a saltare all'interno del blocco dall'inizio alla fine, questo non risolve lo scopo perché quando provo a spostarmi alla fine del blocco C-M-nmi porta alla fine )di una chiamata di funzione.
dknight

1
Esistono quattro comandi correlati: CMn (successivo) e CMp (precedente), che ti portano avanti e indietro su interi blocchi di parentesi, e CMu (su) e CMd (giù) che ti portano di un livello in alto o in basso nella nidificazione delle parentesi. (vedi documenti ) Quindi, per arrivare alla fine del blocco corrente, hai bisogno di CMu CMn
rbennett485
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.