Skip to content

iqbalansari/restart-emacs

Repository files navigation

Restart Emacs

http://melpa.org/packages/restart-emacs-badge.svg http://stable.melpa.org/packages/restart-emacs-badge.svg https://travis-ci.org/iqbalansari/restart-emacs.svg?branch=master http://img.shields.io/:license-gpl3-blue.svg https://img.shields.io/badge/PRs-welcome-brightgreen.svg

Table of contents

What is this?

This is a simple package to restart Emacs for within Emacs. Inspired by this stackoverflow question.

Installation

ELPA

restart-emacs is available on MELPA and MELPA Stable. Please follow the instructions on MELPA website to enable it, if you haven’t already.

You can then install restart-emacs from the package menu. Alternatively install it by doing the following

Refresh the package index

M-x package-refresh-contents RET

And then install it by doing

M-x package-install RET restart-emacs

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

M-x el-get-install RET restart-emacs

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.

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

cask install

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

cask exec ert-runner

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 #11 for more details

The restarted daemon quits as soon as the all the visible frames are killed

See #10 (comment)