About a month ago, I posted about an experiment to build a ChatGPT Emacs shell using comint mode. Since then, it's turned into a package of sorts, evolving with user feedback and pull requests.
While chatgpt-shell is a young package still, it seems useful enough to share more widely. As of today, chatgpt-shell
is available on MELPA. Many thanks to Chris Rayner for his MELPA guidance to get the package added.
I'll cover some of the goodies included in the latest chatgpt-shell
.
chatgpt-shell
now evaluates Markdown source blocks by delegating to org babel. I've had success with a handful of languages. In some instances, some babel headers may need overriding in chatgpt-shell-babel-headers
.
Here's a Swift execution via babel, showing standard output.
In addition to standard output, chatgpt-shell
can now render blocks generating images. Here's a rendered SwiftUI layout via ob-swiftui.
Can also do diagrams. Here's ditaa in action.
At times, ChatGPT may forget to label source blocks or maybe you just want to name it differently… You can now rename blocks at point.
There are a handful of commands to send prompts from other buffers, including the region. For example chatgpt-shell-explain-code
.
You can save your current session to a transcript and restore later.
Nicolas Martyanoff has a great post on making IELM More Comfortable. A couple of improvements that stood out for me were:
shell-maker-search-history
/ M-r
via completing-read
.shell-maker-search-history
, coupled with your completion framework of choice, can be pretty handy. I happen to use Oleh Krehel's ivy.
While ChatGPT is a popular service, there are many others sprouting. Some are cloud-based, others local, proprietary, open source… In any case, it'd be great be able to hook on to them without much overhead. shell-maker should help with that. The first shell-maker
clients are chatgpt-shell
and dall-e-shell
.
While I've built dall-e-shell
, it'd be great to see what others can do with shell-maker
. If you wire it up to anything, please get in touch (Mastodon / Twitter / Reddit / Email).
UPDATE: dall-e-shell, ob-chatgpt-shell, and ob-dall-e-shell are now available on MELPA also.
You've seen dall-e-shell
in the previous section. Here's what ob-chatgpt-shell
and ob-dall-e-shell
look like in an org mode document:
chatgpt-shell
?Whether you are an existing chatgpt-shell
user, or would like to give things a try, installing from MELPA should generally make things easier for ya. As I mentioned, chatgpt-shell
is a young package still. There are unexplored Emacs integrations out there. I'd love to hear about whatever you come up with (Mastodon / Twitter / Reddit / Email).