3 ms·
I'm curious to understand your use-case, would be open to explaining more? Do you actually want to overlay the code directly into the parent method or would a
by vikiomega9 5y ago
I'm curious to understand your use-case, would be open to explaining more?
Do you actually want to overlay the code directly into the parent method or would a tooltip (similar to hyperlink previews) work? I wondering how expanding the real estate space would help with readability and how the userflow would work.
For example, code folding made a lot more sense because the window would have those little boxes to fold unfold (which is basically similar to the act of inline and un-inline).
- TeMPOraL 5y agoYes, I want to overlay the code directly into the parent method, preferably with appropriate syntax highlighting and whatever other goodies the IDE/editor provides normally. It would be read-only to indicate that it's just a transient overlay, and not an actual code change. So, if I have a code like: auto Foo(Bar b) { return b.knob(); } auto Frob(Frobbable f) { auto q = Foo(f.thing()); return q.quux(f.otherthing()); } auto DoSth(Frobbable frobbie) { auto a = Frob(frobbie); return a.magic(); } Then I want to mark the last function, and automatically turn it into: auto DoSth(Frobbable frobbie) { auto foo_1 = frobbie.thing(); auto q_1 = foo_1.knob(); auto frob_1 = frobbie.otherthing(); auto a = q_1.quux(frob_1); return a.magic(); } Or something equivalent, possibly with highlights/synthetic comments telling me which bits of code came from where. I want to be able to keep inlining function calls like this, until I hit a boundary layer like the standard library, or a third-party library. I might want to expand past that, but I don't think I'd do that much. I'd also like to be able to re-fold code I'm not interested in, to reduce noise. What such tool would do is automating the process I'm currently doing manually - jumping around the tiny functions calling other tiny functions, in order to reassemble the actual sequence of lower-level operations. I don't want this to be a tooltip, because I want to keep expanding past the first level, and have the overlay stay in place until I'm done with it. EDIT: languages in the Lisp family - like Common Lisp or Emacs Lisp - feature a tool called "macroexpander". Emacs/SLIME wraps it into an interactive "macrostepper" that behaves pretty much exactly like the tool I described in this discussion thread. EDIT2: See the excellent demo upthread by ' emilprogviz - https://news.ycombinator.com/item?id=27306118 https://news.ycombinator.com/item?id=27306118. That's the kind of tool I had in mind.
- vikiomega9 5y agoyes excellent mock, I see what you mean. How would you deal with multiple levels of nesting? :) Let's say you're at level 5 which is pretty reasonable. Oh and I also forgot about languages like Java that are heavy on interfaces and DI. That would be interesting to handle.