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`.
[Inspired by Dmitry's anwer](https://emacs.stackexchange.com/a/58779/2247), but searching through the entire project (not only the open buffers) and saving all the modified files in the end:

1. Run `M-x +ivy/project-search` type your regex, it will list all results (I tend to use this function a lot so I bound it to `C-x f`).
2. Now press `M-q` and it will ask you what you want to replace the matches with, type it and press enter.
3. It will now walk you through an interactive replace, you can use `y`/`n`/`!` on each, `y` to replace, `n` to skip, and `!` to replace all without asking.
4. To save all the modified buffers, run `C-x-s` and then `!` to save all of them.

Requires: [Ivy](https://github.com/abo-abo/swiper#ivy=).