Question: I want to rewrite parts of an opensource project. This includes renaming methods. How can I do that efficiently in emacs across the whole project?

I would rather not use hacks such as search and replace in every buffer.

Answer: 
Since you didn't specify the language, it's hard to give better answers than “Search and Replace”.

Using wgrep
-----------

If you just want to (interactively) replace all instances of a symbol
with another, wgrep is your best bet. It let's you interactively edit
the grep results buffer.

1. Do `M-x package-install RET wgrep`.
2. Run `M-x rgrep`. It will ask you a few easy questions and then do a recursive search for the search-term inside the directory you speficied.
3. Switch to the results buffer and do `M-x wgrep-change-to-wgrep-mode`. This buffer is now editable. Any changes you make here will be reflected in the files themselves.
4. Run a [`replace-regexp`](http://doc.endlessparentheses.com/Fun/replace-regexp) or a [`query-replace-regexp`](http://doc.endlessparentheses.com/Fun/query-replace-regexp) in this buffer, to do the refactoring.
5. Finish your edits with `M-x wgrep-save-all-buffers` and `M-x wgrep-finish-edit`.
For some generic approaches, look under the "**Replace Across Files**" heading on the Emacs Wiki search & replace page: <http://www.emacswiki.org/emacs/CategorySearchAndReplace>

Also see the answers to: [Using Emacs to recursively find and replace in text files not already open](https://stackoverflow.com/questions/270930/using-emacs-to-recursively-find-and-replace-in-text-files-not-already-open).