tpapp / julia-repl

Run an inferior Julia REPL in a terminal inside Emacs
Other
169 stars 35 forks source link

Add integration with EmacsVterm.jl #112

Closed wentasah closed 1 year ago

wentasah commented 2 years ago

See https://github.com/wentasah/EmacsVterm.jl.

Specifically, this allows to show Julia documentation (@doc ... invocation or C-c C-d in julia-mode buffers) in a separate Emacs buffer via EWW.

This is my initial attempt at implementing this and it would be great to receive some feedback. It works by sending Markdown documents from Julia REPL (converted to HTML) via vterm escape sequences to Emacs. Emacs then shows this document in *julia-doc* EWW buffer.

I'm not sure this is the best way to implement it. The drawback is that all Markdown documents are shown in a separate buffer, not only the documentation (try executing md"Hello"). Currently, it's not a problem for my use cases, but I can imagine it being annoying when working with non-documentation Markdown data.

An alternative way of implementing this would be that EmacsVterm.jl informs Emacs in __init__ about it being active and then julia-repl would not send @doc to show the documentation but some EmacsVterm-specific function (e.g. EmacsVterm.doc).

If somebody has an opinion about this, I'd be happy to hear it.

tpapp commented 2 years ago

I am very open to including something like this but would wait for the implementation to mature a bit. I don't have very specific comments though, but I have tried to avoid loading an extra package by default since it can easily fail. But since this is not the default that should be fine.

wentasah commented 2 years ago

Yes, it's not the default and also eww is a part of Emacs so it should be available for everybody :-)

I'll be using this and remove the Draft status some time after resolving eventual feedback. I also plan to register EmacsVterm.jl in the package registry before doing that.

wentasah commented 2 years ago

I consider this version ready for merging. Compared to the initial version, it does not need an extra eww package and the interface between Julia and Emacs was extended to be (as I call it) future-proof. All the development can be seen in the commits above.

tpapp commented 2 years ago

(Sorry for not reviewing it yet, it is on my todo list.)

wentasah commented 1 year ago

@tpapp You asked about some customization above. I've added EmacsVterm.options. See https://github.com/wentasah/EmacsVterm.jl#features.

tpapp commented 1 year ago

@wentasah: this looks good, I will merge. Thanks for your patience and the nice work.