When I’m coding Python, I have a shortcut setup CapsLock+r, which allows me to rename the symbol under my cursor. It’s a huge time saver when I’ve named something imprecisely.
Having the same for Elixir would be fantastic, but unfortunately ElixirLS isn’t there yet.
It’s one of those things you really miss when you’ve experienced it once and then don’t have access to it. Sure, I could use find/replace, but at least with a refactor tool I can be more confident I didn’t miss anything.
With things such as modules this is not really possible with strong guarrantees. Module names in elixir are just atoms. I could do the following:
my_module = fetch_module_name_from_db()
# As long as this is an atom, you can try to call functions from it
my_module.test_function()
This kind of pattern is widely used in declarative programming and since the actual values are only determined at runtime, there is no way any LSP or other refactoring tooling can determine how to refactor module/function names at project-level.
This dynamic nature opens a lot of possibilities, but at the same time makes creation of tooling around it extremely difficult or impossible.