mirror of
https://github.com/ohmyzsh/ohmyzsh.git
synced 2025-02-21 09:01:56 +08:00

Revert cab1ac6e682038b2ceca9d16f8c458c0e79149ca The change from the above commit breaks opening a new emacs frame if there isn't a existing frame open. When emacs is running in daemon mode, there will always be a frame associated with the daemon, even if there are no visible frames. The lisp function `frame-list`, will always return 1 frame. ``` emacsclient --eval '(frame-list)' (#<frame F1 0xa3c680>) ``` When an real frame is open, two frames are reported by the `frame-list` function. ``` emacsclient --eval '(frame-list)' (#<frame F1 0xa3c680> #<frame emacs Prelude - ~/oh-my-zsh/plugins/emacs/emacsclient.sh 0xf50e10>) ``` See: https://emacs.stackexchange.com/questions/44537/extra-frame-in-visible-frame-list-when-started-in-daemon-mode-is-causing-prob https://emacs.stackexchange.com/questions/18859/dont-let-the-daemon-frame-make-a-file-visible
Emacs plugin
This plugin utilizes the Emacs daemon capability, allowing the user to quickly open frames, whether they are opened in a terminal via a ssh connection, or X frames opened on the same host. The plugin also provides some aliases for such operations.
- You don't have the cost of starting Emacs all the time anymore
- Opening a file is as fast as Emacs does not have anything else to do.
- You can share opened buffered across opened frames.
- Configuration changes made at runtime are applied to all frames.
NOTE: requires Emacs 24 and newer.
To use it, add emacs to the plugins array in your zshrc file:
plugins=(... emacs)
Aliases
The plugin uses a custom launcher (which we'll call here $EMACS_LAUNCHER
) that is just a wrapper around emacsclient
.
Alias | Command | Description |
---|---|---|
emacs | $EMACS_LAUNCHER --no-wait |
Opens a temporary emacsclient frame |
e | emacs |
Same as emacs alias |
te | $EMACS_LAUNCHER -nw |
Open terminal emacsclient |
eeval | $EMACS_LAUNCHER --eval |
Same as M-x eval but from outside Emacs |
eframe | emacsclient --alternate-editor "" --create-frame |
Create new X frame |
efile | - | Print the path to the file open in the current buffer |
ecd | - | Print the directory of the file open in the the current buffer |