Search code examples
c++emacsrefactoring

How can I refactor C++ source code using emacs?


I'm interested mostly in C++ and method/class name/signature automatic changes.


Solution

  • I do this a lot, so I'm axiously awaiting other replies too.

    The only tricks I know are really basic. Here are my best friends in Emacs when refactoring code:

    M-x query-replace
    

    This allows you to do a global search and replace. You'll be doing this a ton when you move methods and commonly-accessed data to other classes or namespaces.

    C-x 3
    

    This gives you a display with two buffers side-by side. You can then proceed to load different files in them, and move your cursor from one to the other with C-x o. This is pretty basic stuff, but I mention it because of how powerful it makes the next one...

    C-x (
    (type any amount of stuff and/or emacs commands here)
    C-x )
    

    This is how you define a macro in emacs. Any time you find yourself needing to do the same thing over and over to a bunch of code (and it is too complex for query-replace), this is a lifesaver. If you mess up, you can hit C-g to stop the macro definition, and then undo (C-_) until you are back to where you started. The keys to invoke the macro are C-x e. If you want to do it a bunch of times, you can hit Esc and type in a number first. Eg: Esc 100 C-x e will try to invoke your macro 100 times.

    (Note: On Windows you can get "Meta" by hitting the Esc key, or holding down Alt).