Selecionando o escopo mais interno em C/C ++

Eu gostaria de poder marcar o escopo do bloco atual. Em outras palavras, dado algum pedaço de código como:

...
if (1) {
  ...
}
...

Se meus cursores estivessem em algum lugar dentro do if-body, isso marcaria essa área de código. Eu acho que uma solução rápida e suja seria apenas ter um script de varredura para a chave anterior e selecionar tudo entre ele e sua correspondência.

Se não houver um comando existente para isso, alguém saberia como implementá-lo?

2

2 Respostas

A maneira que eu faço é: M-C-u M-C-SPC : o primeiro move up-list e o segundo seleciona o próximo sexp.

1
adicionado

O M-x mark-defun ou c-mark-function ( C-M-h na minha configuração) faz o que você quer?

Se não, expand-region é outra opção muito boa ( uma demonstração em vídeo pode ser encontrada aqui . Com esse pacote instalado (está disponível através do MELPA) você pode usar o comando er/expand-region para expandir a região selecionada por unidades semânticas. Pode não selecionar a área que você deseja na primeira chamada, mas invocações repetidas definitivamente lhe darão o que você deseja. Esse pacote é incrível e funcionará de maneira inteligente com muitos modos diferentes (ou seja, o que é considerado uma "unidade semântica" diferirá de modo para modo).

1
adicionado