mirror of
				https://github.com/ohmyzsh/ohmyzsh.git
				synced 2024-05-11 05:55:17 +00:00 
			
		
		
		
	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
		
	
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 |