Binnenste bereik selecteren in C/C ++

Ik zou graag de huidige block scope willen markeren. Met andere woorden, gezien een stukje code zoals:

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

Als mijn cursors ergens in het if-lichaam zouden zitten, zou het dat gedeelte van de code markeren. Ik denk dat een snelle en vuile oplossing zou zijn om alleen een scriptscan te maken voor de vorige accolade en alles daar tussen te selecteren en de bijbehorende te selecteren.

Als er geen bestaande opdracht voor is, zou iemand dan weten hoe het moet worden geïmplementeerd?

2

2 antwoord

De manier waarop ik het zou doen is: M-C-u M-C-SPC : de eerste verplaatst up-list en de tweede selecteert de volgende sexp.

1
toegevoegd

Doet M-x mark-defun of c-mark-function ( C-M-h in mijn opstelling) wat u wilt?

Als dat niet het geval is, is uitvouwregio een andere zeer goede optie ( een videodemo vindt u hier ). Als dat pakket is geïnstalleerd (het is beschikbaar via MELPA), kunt u de opdracht er/uitvouwgebied gebruiken om het geselecteerde gebied uit te breiden met semantische eenheden. Het is mogelijk dat je bij de eerste aanroep niet het gewenste gebied selecteert, maar herhaalde aanroepingen zullen je zeker krijgen wat je wilt. Dat pakket is verbazingwekkend en zal intelligent werken met veel verschillende modi (d.w.z. wat als een "semantische eenheid" wordt beschouwd, verschilt van modus tot modus).

1
toegevoegd