# Eggdrive via Emacs Lisp

**URL:** <https://forums.eggplantsoftware.com/t/eggdrive-via-emacs-lisp/14836>\
**Category:** Eggplant Functional\
**Created:** [June 16, 2026, 4:19pm UTC](https://forums.eggplantsoftware.com/t/eggdrive-via-emacs-lisp/14836 "2026-06-16T16:19:54Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![chrisbryant](https://forums.eggplantsoftware.com/user_avatar/forums.eggplantsoftware.com/chrisbryant/32/627_2.png) [@chrisbryant](https://forums.eggplantsoftware.com/u/chrisbryant)\
**Post date:** [June 16, 2026, 4:19pm UTC](https://forums.eggplantsoftware.com/t/eggdrive-via-emacs-lisp/14836/1 "2026-06-16T16:19:54Z")

</div>

I keep coming back to Eggdrive because I love the idea of it and have wanted to leverage it for some time. Initially I tried a shell script and then a Python script, but neither of those felt right. I wanted more visibility. Since I use Emacs for code editing (and just about everything else) I started working on some Emacs Lisp so that I could leverage the buffer for logging. I think this is the path I want to tread with all the features and opportunities Emacs can leverage.

The first version includes:

- Connection settings for host, port, suite path, and optional `runscript` path.
- `StartSession` support.
- `Execute` support for one-line or multi-line SenseTalk code.
- `ExecuteWithTimeout` support for long-running commands.
- `Update` support for polling timed-out executions.
- `EndSession` support.
- Interactive commands for executing a command, region, or whole buffer.
- A simple `*Eggdrive*` response buffer.
- Optional local `runscript` launcher.
- Optional debug logging.

The key requirement currently is:

- `xml-rpc.el`

There’s a lot to do still. I have a `sensetalk-mode` I’ve been working on that I’d like to join with this at some point, so will be a future refinement.

If you’re curious, clone or copy this repository (after close code review, naturally) somewhere in your Emacs `load-path`:

```sh
git clone https://github.com/chrisbryant-ucla/eggdrive-el.git

```

```sh
 cp eggdrive.el ~/.emacs.d/lisp/eggdrive.el

```

## Some examples of the configuration:

**Configure the Eggdrive host and port:**

```elisp
(setq eggdrive-host "127.0.0.1")
(setq eggdrive-port 5400)

```

**Optionally configure a default suite path:**

```elisp
(setq eggdrive-suite-path "/Users/me/Eggplant/MySuite.suite")

```

**Optionally configure the local `runscript` executable if you want Emacs to launch Eggplant Functional in drive mode:**

```elisp
(setq eggdrive-runscript-program
      "/Applications/Eggplant.app/Contents/MacOS/runscript")

```

## Basic workflow

**Start Eggplant Functional in drive mode first. Then, in Emacs:**

```plaintext
M-x eggdrive-start

```

If `eggdrive-suite-path` is configured, `eggdrive-start` passes that suite path to `StartSession`. Eggplant Functional opens the suite and uses it as the context for subsequent commands. This matters because scripts and images inside that suite become available to your SenseTalk code.

**Execute a one-line command:**

```plaintext
M-x eggdrive-execute-command
SenseTalk command: put "Hello from Emacs"

```

**Execute selected SenseTalk code:**

```plaintext
M-x eggdrive-execute-region

```

**Execute the whole current buffer:**

```plaintext
M-x eggdrive-execute-buffer

```

**End the session:**

```plaintext
M-x eggdrive-end

```

---

<div class="post-metadata">

**Author:** ![wayanu777walter](https://forums.eggplantsoftware.com/letter_avatar_proxy/v4/letter/w/e36b37/32.png) [@wayanu777walter](https://forums.eggplantsoftware.com/u/wayanu777walter)\
**Post date:** [June 24, 2026, 8:53am UTC](https://forums.eggplantsoftware.com/t/eggdrive-via-emacs-lisp/14836/2 "2026-06-24T08:53:21Z")

</div>

Really interesting project! Using Emacs Lisp to interact with EggDrive seems like a great way to combine the flexibility of Emacs with Eggplant automation capabilities.

---

<div class="post-metadata">

**Author:** ![chrisbryant](https://forums.eggplantsoftware.com/user_avatar/forums.eggplantsoftware.com/chrisbryant/32/627_2.png) [@chrisbryant](https://forums.eggplantsoftware.com/u/chrisbryant)\
**Post date:** [June 24, 2026, 6:56pm UTC](https://forums.eggplantsoftware.com/t/eggdrive-via-emacs-lisp/14836/3 "2026-06-24T18:56:02Z")

</div>

This has since moved to [Codeberg](https://codeberg.org/archived-code/eggdrive-el) so the clone would actually be:

`git clone https://codeberg.org/archived-code/eggdrive-el.git`  
or  
`git clone ssh://git@codeberg.org:archived-code/eggdrive-el.git`

---

<div class="post-metadata">

**Author:** ![cochin78mark](https://forums.eggplantsoftware.com/letter_avatar_proxy/v4/letter/c/b3f665/32.png) [@cochin78mark](https://forums.eggplantsoftware.com/u/cochin78mark)\
**Post date:** [July 8, 2026, 12:41pm UTC](https://forums.eggplantsoftware.com/t/eggdrive-via-emacs-lisp/14836/4 "2026-07-08T12:41:53Z")

</div>

It sounds like you’ve found the perfect alignment of tools. Moving from a stateless shell or Python script to an Emacs-native solution makes total sense, especially when your goal is visibility. Emacs buffers are essentially real-time, interactive data streams, making them incredibly powerful for logging, state tracking, and controlling a process like Eggdrive.
