Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/iqbalansari/restart-emacs

A simple emacs package to restart emacs from within emacs
https://github.com/iqbalansari/restart-emacs

elisp emacs

Last synced: 2 months ago
JSON representation

A simple emacs package to restart emacs from within emacs

Awesome Lists containing this project

README

        

* Restart Emacs

[[http://melpa.org/#/restart-emacs][file:http://melpa.org/packages/restart-emacs-badge.svg]] [[http://stable.melpa.org/#/restart-emacs][file:http://stable.melpa.org/packages/restart-emacs-badge.svg]] [[https://travis-ci.org/iqbalansari/restart-emacs][https://travis-ci.org/iqbalansari/restart-emacs.svg?branch=master]] [[http://www.gnu.org/licenses/gpl-3.0.html][http://img.shields.io/:license-gpl3-blue.svg]] [[http://makeapullrequest.com][file:https://img.shields.io/badge/PRs-welcome-brightgreen.svg]]

** Table of contents :TOC_3_gh:
- [[#restart-emacs][Restart Emacs]]
- [[#what-is-this][What is this?]]
- [[#installation][Installation]]
- [[#elpa][ELPA]]
- [[#el-get][El-get]]
- [[#usage][Usage]]
- [[#compatibility][Compatibility]]
- [[#restarting-gui-emacs][Restarting GUI Emacs]]
- [[#restarting-emacs-running-in-a-terminal][Restarting Emacs running in a terminal]]
- [[#restarting-emacs-daemons][Restarting Emacs daemons]]
- [[#contributing][Contributing]]
- [[#known-issues][Known Issues]]
- [[#command-line-arguments-are-not-preserved][Command line arguments are not preserved]]
- [[#the-restarted-daemon-quits-as-soon-as-the-all-the-visible-frames-are-killed][The restarted daemon quits as soon as the all the visible frames are killed]]

** What is this?
This is a simple package to restart Emacs for within Emacs. Inspired by [[http://emacs.stackexchange.com/questions/5428/restart-emacs-from-within-emacs][this]]
stackoverflow question.

** Installation
*** ELPA
~restart-emacs~ is available on [[http://melpa.org/#/restart-emacs][MELPA]] and [[http://stable.melpa.org/#/restart-emacs][MELPA Stable]]. Please follow the instructions on
MELPA [[http://melpa.org/#/getting-started][website]] to enable it, if you haven't already.

You can then install ~restart-emacs~ from the [[https://www.gnu.org/software/emacs/manual/html_node/emacs/Package-Menu.html][package menu]]. Alternatively install it by doing the following

Refresh the package index
#+BEGIN_QUOTE
M-x package-refresh-contents RET
#+END_QUOTE

And then install it by doing
#+BEGIN_QUOTE
M-x package-install RET restart-emacs
#+END_QUOTE

*** El-get
~restart-emacs~ can also be installed using ~el-get~. Assuming you have latest version of el-get installing it by doing something similar to
#+BEGIN_QUOTE
M-x el-get-install RET restart-emacs
#+END_QUOTE

** Usage
It offers a command ~restart-emacs~ which kills current Emacs session
and starts a new session.

Additional arguments to be passed to the new instance can be specified using
prefix arguments

- with a single ~universal-argument~ (=C-u=) Emacs is restarted with ~--debug-init~ flag
- with two ~universal-argument~ (=C-u= =C-u=) Emacs is restarted with ~-Q~ flag
- with three ~universal-argument~ (=C-u= =C-u= =C-u=) the user is prompted for the arguments

~restart-emacs~ can restore frames on restart, right this is experimental and
disabled by default to enable it set ~restart-emacs-restore-frames~ to ~t~.

There is also a second command ~restart-emacs-start-new-emacs~ which starts a
new session of Emacs without killing the current one. It takes the same arguments
as ~restart-emacs~.

** Compatibility
*** Restarting GUI Emacs
Restarting graphical Emacs should work on any UNIXy system with ~sh~ and on
Windows.

*** Restarting Emacs running in a terminal
This requires that the shell from which Emacs was launched supports job
control. This has been tested to work on ~sh~, ~bash~, ~zsh~, ~fish~, ~csh~
and ~tcsh~, however this does not work on Windows.

*** Restarting Emacs daemons
The latest version of ~restart-emacs~ can now restart Emacs daemons. The the
frames are restored once the daemon restarts using ~desktop-mode~. However
since ~desktop-mode~ learned to restore frames only Emacs version 24.4
onwards the daemons can be restarted only on Emacs versions 24.4 and later.

Another issue with restarting Emacs daemons is that the frames open in a
terminal cannot be recreated on restart, instead the ~restart-emacs~ would
write a notification on the terminal with the instructions to reconnect, any
suggestions to improve this are welcome.

** Contributing
Code as well as documentation contributions are welcome.

[[https://github.com/cask/cask][Cask]] is used to manage project dependencies so make sure you have it
installed. To run the tests you need to install the dependencies by running
the following

#+BEGIN_SRC sh
cask install
#+END_SRC

After the installation completes you can run the tests by running the
following command

#+BEGIN_SRC sh
cask exec ert-runner
#+END_SRC

** Known Issues
*** Command line arguments are not preserved
The new Emacs instance does not use the same command line arguments as the
running instance. See [[https://github.com/iqbalansari/restart-emacs/issues/11][#11]] for more details
*** The restarted daemon quits as soon as the all the visible frames are killed
See https://github.com/iqbalansari/restart-emacs/issues/10#issuecomment-307565719