1
0
mirror of https://github.com/ohmyzsh/ohmyzsh.git synced 2024-11-23 15:40:56 +08:00
ohmyzsh/plugins/emacs
akinnane 08da19e3fd emacs: revert cab1ac6e68 (#7765)
Revert cab1ac6e68

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
2019-04-14 12:31:52 +02:00
..
emacs.plugin.zsh Revert "Fix emacs client terminal" (#7597) 2019-02-25 14:37:41 +01:00
emacsclient.sh emacs: revert cab1ac6e68 (#7765) 2019-04-14 12:31:52 +02:00
README.md emacs: add README (#7235) 2018-10-05 20:43:04 +02:00

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