[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Emacs-diffs] /srv/bzr/emacs/trunk r100117: Run kill-emacs when exit

From: Jan D.
Subject: Re: [Emacs-diffs] /srv/bzr/emacs/trunk r100117: Run kill-emacs when exiting for display closed or SIGTERM/HUP.
Date: Tue, 04 May 2010 14:51:24 +0200
User-agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv: Gecko/20100227 Thunderbird/3.0.3

On 2010-05-04 13:33, Stephen J. Turnbull wrote:

Specifically, I can't recall ever saving *scratch* or " *Message-Log*"
to wherever I started my session; I want to save it to a project-
specific directory, which in typical cases for me is many characters
of typing away from what getcwd would return.  (In fact, I often do
C-x h M-w C-x b RET C-x C-f log RET C-y C-x C-s or the like.)

I don't save *scratch*, but I rely on the fact that
  C-x b *sc<TAB><RETURN> C-x C-f
makes it easy to open files where Emacs was started.

Similarly, in my usage, it's very likely that the reason I have
multiple sessions to choose from is that I split a session, by simply
killing a bunch of buffers I don't need in the new session, and saving
a desktop file somewhere appropriate.  AFAICT that place is highly
unlikely to have anything to do with getcwd(), but I'm willing to
listen to your explanation.

The way to get Emacs to load a desktop file when starting Emacs is to start Emacs in the directory where it was saved. The --chdir emulated that. I'm not saying that setting a desktop file to another directory is handled well by this, but it wasn't handeled at all previously.

It is obvious that the arguments against --chdir comes without any long term usage of restoring Emacs sessions through the session manager. Otherwise, this would have been fixed by those affected by it. I'm not affected, as I start Emacs in the directory where I save my desktop (if I do save it that is).

What you are arguing for is an enhancement that works just as fine with or without --chdir. With Emacs today, you can't restart an Emacs and load a desktop file saved in another place different from where Emacs is started.

So my solution would be to (1) add `default-directory' to
`desktop-locals-to-save' (which handles the default directory settings
for *scratch* and " *Message-Log*", I think somebody already mentioned

This assumes you are using desktop. If you restart an Emacs without any desktop saved, the default directory is still wrong. But with --chdir it is not.

(2) write the desktop file to somewhere appropriate (probably
`desktop-dirname', maybe asking the user), (3) write a thunk library

     (cd (or DESKTOP-DIRNAME "~"))
     (load-user-init-file)          ; does Emacs have this?

to ~/.emacs.d/sessions/xsm-XSM-CLIENT-ID.el, and set SmRestartCommand to

emacs -q -l ~/.emacs.d/sessions/xsm-XSM-CLIENT-ID.el -clientId XSM-CLIENTID

There is no need to use -l or fiddle with SmRestartCommand, Emacs has had automatic save and restore of session data in a session file since 2002 (actually, it is called ~/emacs.d/session-CLIENT-ID), but nobody has taken advantage of this fact AFAIK.

desktop.el would have to add a function to the hook emacs-save-session-functions that stores whatever data it needs to recover. For example, the desktop file name in use.

        Jan D.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]