Emacs

Emacs (1976) is an elderly [Li|U]nix editor written in, configurable with, and extensible through a wily variant of Lisp — now known, sensibly, as Emacs Lisp.

Shell Integration

Emacs, when run under X.Org, integrates un-cleanly with the command-line. The first execution of Emacs forks a new Emacs process and, thus, new Emacs window; but, subsequent executions also fork new Emacs processes and, thus, new Emacs windows. Each process, having allocated to it its self-contained segment of virtual memory, runs in isolation of every other process; and, being isolate, cannot communicate with any other process. In particular, files opened for editing in one Emacs process are not, similarly, opened for editing in other Emacs processes. Over attenuating time, Emacs processes begin diverging in files opened under those processes and in marks, positions, and searches for those files. This may be what you want. Or, it may not.

The solution is a bit abstruse. To share one Emacs ‘session’ — that is, the contexual environment of all open buffers, marks, and settings for one Emacs process — amongst all currently running Emacs processes, every such Emacs process must be run in client/server fashion. In this fashionable, robust way, the first such Emacs process is designated the server and all subsequent Emacs processes the clients of that server.

Emacs ships with several shell scripts for effecting this. They serve this basic purpose, but fail the bolder purposes of {a} stability and {b} configurability.

Raiazome corrects both purposes with the following shell script replacement for those scripts; named, convieniently: