Find the code editing and custom function documentation capabilities in the Mathematica Desktop "package editor" for m and .wl files completely awful (especially compared with the brilliantly context-aware Notebook editor)? Try the Wolfram Workbench.
Pro: The Workbench editing is far superior to the Mathematica
.m code editor (only, it's mostly not better than the Notebook editor).
Pro: The Wolfram Workbench editor perspective for Eclipse does give a good overview of packages and files.
Con: Despite a valiant attempt to improve the completely awful MMA function and package documentation system, the Workbench documentation support is limited, amongst other things, by the mind-numbing lack of per-argument documentation support in the Wolfram Language itself.
Con: The editing is in most respects not even close to as good as the highly context aware and symbolically aware Notebook editor! So much so that some MMA users admit that they try to edit functions in Notebooks first (where MMA thrives) then transfer them to
Con: The Workbench indenting and code formatting, while customisable, is not nearly as good as the Notebook editor.
Con: Refactoring of variables names, probably the single most used feature of any IDE, and supported in Eclipse for most languages, does not seem to work in the Wolfram Workbench. Yuck!
Con: The hierarchical "Outline" view that works so nicely for OO languages in Eclipse (Java, C++ etc.) can quickly become a mess because of the lack of vendor-supported OO encapsulation. You can reduce the clutter somewhat by using the user-contributed MTools.
The Workbench docs are in places out of date, and inconsistent. In particular, the info on how to install it is in a separate support posting. And that does not tell you how to run it and start a new project! But if you know Eclipse a bit it's obvious: Run Eclipse, choose New Project, then choose under Wolfram an Application Project, a Basic Project, or a JLink Project.
.nbNotebook (in run mode or debug mode) launched from the Wolfram Workbench but you may find there is a slight reload delay.