From: Juanma Barranquero <lekktu@gmail.com>
To: martin rudalics <rudalics@gmx.at>
Cc: chad <yandros@mit.edu>, Drew Adams <drew.adams@oracle.com>,
Emacs developers <emacs-devel@gnu.org>
Subject: Re: How to restore the layout?
Date: Thu, 27 Jun 2013 01:05:53 +0200 [thread overview]
Message-ID: <CAAeL0STPPW9q5uVNDTcm_efPMkA1xdpMQMAtEs_dL=f1ynBTMg@mail.gmail.com> (raw)
In-Reply-To: <51CB3299.50004@gmx.at>
[-- Attachment #1: Type: text/plain, Size: 6086 bytes --]
On Wed, Jun 26, 2013 at 8:27 PM, martin rudalics <rudalics@gmx.at> wrote:
> The main application is to _restore_ the layout at the _beginning_ of a
> session. This means that the one initial frame would get reused.
I've implemented reusing all frames according to their displays (that
is, if desktop wants to restore a frame, it will first look on the
list of yet-unused frames for one on the right display; if found, it
will reuse it and delete it from the list; otherwise it will create a
new frame).
It's a pity that, AFAIK, there's no way to delay creating the initial
frame; initial-frame-alist is set after running .emacs, so you cannot
really avoid the resizing / flickering. Other than setting X resources
/ Win32 registry settings just right for the initial frame (which will
backfire as soon as you exit & save the initial frame at another
position / size), the only way to make it more palatable is starting
emacs with --iconic (or perhaps --daemon on POSIX systems?).
> Let's ignore the next issues for the moment.
Well, some of them are hardly ignorable, at least for users with many
frames, minibuffer-only frames, etc. Also the maximized/fullscreen
issue will bother people who usually works with maximized Emacs
windows (assuming such people does exist).
Another issue is at which point in the restore sequence should
windows/frames be restored. Currently I'm doing it between
desktop-delay-hook (which runs when all buffers are loaded) and
desktop-after-read-hook (which happens after a "successful
`desktop-read'"). That would allow the user to intercept the
restoring, though desktop-delay-hook is for internal use. I can of
course add hooks at some points in the save & restore sequences, but
perhaps that's better left until the need arises.
> Please do that.
Let's hear from Stefan & Glenn. Meanwhile, here's the new patch.
J
=== modified file 'lisp/desktop.el'
--- lisp/desktop.el 2013-05-02 17:47:39 +0000
+++ lisp/desktop.el 2013-06-26 23:03:43 +0000
@@ -371,6 +371,12 @@
:type '(repeat symbol)
:group 'desktop)
+(defcustom desktop-save-windows t
+ "When non-nil, save window/frame configuration to desktop file."
+ :type 'boolean
+ :group 'desktop
+ :version "24.4")
+
(defcustom desktop-file-name-format 'absolute
"Format in which desktop file names should be saved.
Possible values are:
@@ -556,6 +562,9 @@
"Checksum of the last auto-saved contents of the desktop file.
Used to avoid writing contents unchanged between auto-saves.")
+(defvar desktop--saved-states nil
+ "Internal use only.")
+
;; ----------------------------------------------------------------------------
;; Desktop file conflict detection
(defvar desktop-file-modtime nil
@@ -858,6 +867,42 @@
;; ----------------------------------------------------------------------------
+(defconst desktop--excluded-frame-parameters
+ '(buffer-list
+ buffer-predicate
+ buried-buffer-list
+ explicit-name
+ font-backend
+ minibuffer
+ name
+ outer-window-id
+ parent-id
+ window-id
+ window-system)
+ "Frame parameters not saved or restored.")
+
+(defun desktop--filter-frame-parms (frame)
+ "Return frame parameters of FRAME.
+Parameters in `desktop--excluded-frame-parameters' are excluded.
+Internal use only."
+ (let (params)
+ (dolist (param (frame-parameters frame))
+ (unless (memq (car param) desktop--excluded-frame-parameters)
+ (push param params)))
+ params))
+
+(defun desktop--save-windows ()
+ "Save window/frame state, as a global variable.
+Intended to be called from `desktop-save'.
+Internal use only."
+ (setq desktop--saved-states
+ (and desktop-save-windows
+ (mapcar (lambda (frame)
+ (cons (desktop--filter-frame-parms frame)
+ (window-state-get (frame-root-window frame) t)))
+ (frame-list))))
+ (desktop-outvar 'desktop--saved-states))
+
;;;###autoload
(defun desktop-save (dirname &optional release auto-save)
"Save the desktop in a desktop file.
@@ -896,6 +941,9 @@
(save-excursion (run-hooks 'desktop-save-hook))
(goto-char (point-max))
(insert "\n;; Global section:\n")
+ ;; Called here because we save the window/frame state as a global
+ ;; variable for compatibility with previous Emacsen.
+ (desktop--save-windows)
(mapc (function desktop-outvar) desktop-globals-to-save)
(when (memq 'kill-ring desktop-globals-to-save)
(insert
@@ -954,6 +1002,37 @@
(defvar desktop-lazy-timer nil)
;; ----------------------------------------------------------------------------
+(defun desktop--find-frame-in-display (frames display)
+ (let (result)
+ (while (and frames (not result))
+ (if (equal display (frame-parameter (car frames) 'display))
+ (setq result (car frames))
+ (setq frames (cdr frames))))
+ result))
+
+(defun desktop--restore-windows ()
+ "Restore window/frame configuration.
+Internal use only."
+ (when (and desktop-save-windows desktop--saved-states)
+ (condition-case nil
+ (let ((frames (frame-list)))
+ (dolist (state desktop--saved-states)
+ (let* ((fconfig (car state))
+ (display (cdr (assq 'display fconfig)))
+ (frame (desktop--find-frame-in-display frames display)))
+ (if (not frame)
+ ;; no frames in the display -- make a new one
+ (setq frame (make-frame-on-display display fconfig))
+ ;; found one -- reuse and remove from list
+ (setq frames (delq frame frames))
+ (modify-frame-parameters frame fconfig))
+ ;; restore windows
+ (window-state-put (cdr state) (frame-root-window frame) 'safe)))
+ ;; delete any remaining frames
+ (mapc #'delete-frame frames))
+ (error
+ (message "Error loading window configuration from desktop file")))))
+
;;;###autoload
(defun desktop-read (&optional dirname)
"Read and process the desktop file in directory DIRNAME.
@@ -1022,6 +1101,7 @@
(switch-to-buffer (car (buffer-list)))
(run-hooks 'desktop-delay-hook)
(setq desktop-delay-hook nil)
+ (desktop--restore-windows)
(run-hooks 'desktop-after-read-hook)
(message "Desktop: %d buffer%s restored%s%s."
desktop-buffer-ok-count
[-- Attachment #2: desktop.patch --]
[-- Type: application/octet-stream, Size: 4399 bytes --]
=== modified file 'lisp/desktop.el'
--- lisp/desktop.el 2013-05-02 17:47:39 +0000
+++ lisp/desktop.el 2013-06-26 23:03:43 +0000
@@ -371,6 +371,12 @@
:type '(repeat symbol)
:group 'desktop)
+(defcustom desktop-save-windows t
+ "When non-nil, save window/frame configuration to desktop file."
+ :type 'boolean
+ :group 'desktop
+ :version "24.4")
+
(defcustom desktop-file-name-format 'absolute
"Format in which desktop file names should be saved.
Possible values are:
@@ -556,6 +562,9 @@
"Checksum of the last auto-saved contents of the desktop file.
Used to avoid writing contents unchanged between auto-saves.")
+(defvar desktop--saved-states nil
+ "Internal use only.")
+
;; ----------------------------------------------------------------------------
;; Desktop file conflict detection
(defvar desktop-file-modtime nil
@@ -858,6 +867,42 @@
;; ----------------------------------------------------------------------------
+(defconst desktop--excluded-frame-parameters
+ '(buffer-list
+ buffer-predicate
+ buried-buffer-list
+ explicit-name
+ font-backend
+ minibuffer
+ name
+ outer-window-id
+ parent-id
+ window-id
+ window-system)
+ "Frame parameters not saved or restored.")
+
+(defun desktop--filter-frame-parms (frame)
+ "Return frame parameters of FRAME.
+Parameters in `desktop--excluded-frame-parameters' are excluded.
+Internal use only."
+ (let (params)
+ (dolist (param (frame-parameters frame))
+ (unless (memq (car param) desktop--excluded-frame-parameters)
+ (push param params)))
+ params))
+
+(defun desktop--save-windows ()
+ "Save window/frame state, as a global variable.
+Intended to be called from `desktop-save'.
+Internal use only."
+ (setq desktop--saved-states
+ (and desktop-save-windows
+ (mapcar (lambda (frame)
+ (cons (desktop--filter-frame-parms frame)
+ (window-state-get (frame-root-window frame) t)))
+ (frame-list))))
+ (desktop-outvar 'desktop--saved-states))
+
;;;###autoload
(defun desktop-save (dirname &optional release auto-save)
"Save the desktop in a desktop file.
@@ -896,6 +941,9 @@
(save-excursion (run-hooks 'desktop-save-hook))
(goto-char (point-max))
(insert "\n;; Global section:\n")
+ ;; Called here because we save the window/frame state as a global
+ ;; variable for compatibility with previous Emacsen.
+ (desktop--save-windows)
(mapc (function desktop-outvar) desktop-globals-to-save)
(when (memq 'kill-ring desktop-globals-to-save)
(insert
@@ -954,6 +1002,37 @@
(defvar desktop-lazy-timer nil)
;; ----------------------------------------------------------------------------
+(defun desktop--find-frame-in-display (frames display)
+ (let (result)
+ (while (and frames (not result))
+ (if (equal display (frame-parameter (car frames) 'display))
+ (setq result (car frames))
+ (setq frames (cdr frames))))
+ result))
+
+(defun desktop--restore-windows ()
+ "Restore window/frame configuration.
+Internal use only."
+ (when (and desktop-save-windows desktop--saved-states)
+ (condition-case nil
+ (let ((frames (frame-list)))
+ (dolist (state desktop--saved-states)
+ (let* ((fconfig (car state))
+ (display (cdr (assq 'display fconfig)))
+ (frame (desktop--find-frame-in-display frames display)))
+ (if (not frame)
+ ;; no frames in the display -- make a new one
+ (setq frame (make-frame-on-display display fconfig))
+ ;; found one -- reuse and remove from list
+ (setq frames (delq frame frames))
+ (modify-frame-parameters frame fconfig))
+ ;; restore windows
+ (window-state-put (cdr state) (frame-root-window frame) 'safe)))
+ ;; delete any remaining frames
+ (mapc #'delete-frame frames))
+ (error
+ (message "Error loading window configuration from desktop file")))))
+
;;;###autoload
(defun desktop-read (&optional dirname)
"Read and process the desktop file in directory DIRNAME.
@@ -1022,6 +1101,7 @@
(switch-to-buffer (car (buffer-list)))
(run-hooks 'desktop-delay-hook)
(setq desktop-delay-hook nil)
+ (desktop--restore-windows)
(run-hooks 'desktop-after-read-hook)
(message "Desktop: %d buffer%s restored%s%s."
desktop-buffer-ok-count
next prev parent reply other threads:[~2013-06-26 23:05 UTC|newest]
Thread overview: 264+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-06-22 13:45 How to restore the layout? Angelo Graziosi
2013-06-22 23:01 ` Xue Fuqiao
2013-06-23 10:24 ` Angelo Graziosi
2013-06-23 8:26 ` martin rudalics
2013-06-23 10:35 ` Angelo Graziosi
2013-06-24 17:05 ` martin rudalics
2013-06-24 17:23 ` Juanma Barranquero
2013-06-24 17:30 ` Eli Zaretskii
2013-06-24 17:52 ` Juanma Barranquero
2013-06-24 18:18 ` Eli Zaretskii
2013-06-24 18:33 ` Stephen Berman
2013-06-24 18:33 ` Stephen Berman
2013-06-24 20:10 ` Juanma Barranquero
2013-06-24 20:11 ` Juanma Barranquero
2013-06-24 20:22 ` Jambunathan K
2013-06-24 20:28 ` Juanma Barranquero
2013-06-24 20:57 ` martin rudalics
2013-06-24 22:47 ` Juanma Barranquero
2013-06-24 23:38 ` Juri Linkov
2013-06-24 23:43 ` Juanma Barranquero
2013-06-25 6:03 ` Juri Linkov
2013-06-25 16:05 ` Juanma Barranquero
2013-06-25 6:46 ` martin rudalics
2013-06-25 15:32 ` Juanma Barranquero
2013-06-25 16:32 ` Stefan Monnier
2013-06-25 16:38 ` martin rudalics
2013-06-25 17:21 ` Juanma Barranquero
2013-06-25 21:36 ` Angelo Graziosi
2013-06-25 21:40 ` Juanma Barranquero
2013-06-26 0:52 ` chad
2013-06-26 14:03 ` chad
2013-06-26 17:21 ` Juanma Barranquero
2013-06-26 18:27 ` martin rudalics
2013-06-26 23:05 ` Juanma Barranquero [this message]
2013-06-27 2:35 ` Stefan Monnier
2013-06-27 2:57 ` Juanma Barranquero
2013-06-27 4:30 ` Stefan Monnier
2013-06-27 8:55 ` Juanma Barranquero
2013-06-27 15:20 ` Stefan Monnier
2013-06-27 15:23 ` Juanma Barranquero
2013-06-27 8:05 ` martin rudalics
2013-06-27 9:00 ` Juanma Barranquero
2013-06-27 9:38 ` martin rudalics
2013-06-27 21:02 ` Juanma Barranquero
2013-06-28 6:34 ` martin rudalics
2013-06-28 11:53 ` Juanma Barranquero
2013-06-28 14:02 ` martin rudalics
2013-06-27 13:29 ` Angelo Graziosi
2013-06-27 14:05 ` Juanma Barranquero
2013-06-27 14:31 ` Angelo Graziosi
2013-06-27 14:45 ` Juanma Barranquero
2013-06-27 18:27 ` martin rudalics
2013-06-27 20:30 ` Juanma Barranquero
2013-06-27 20:49 ` martin rudalics
2013-06-27 20:52 ` Juanma Barranquero
2013-06-27 21:00 ` martin rudalics
2013-06-27 21:03 ` Juanma Barranquero
2013-06-27 23:33 ` Juanma Barranquero
2013-06-28 6:07 ` Eli Zaretskii
2013-06-28 8:17 ` Jan Djärv
2013-06-28 11:54 ` Juanma Barranquero
2013-06-28 11:48 ` Juanma Barranquero
2013-06-28 17:55 ` Eli Zaretskii
2013-06-28 18:15 ` Stefan Monnier
2013-06-28 17:22 ` Stefan Monnier
2013-06-28 17:51 ` Juanma Barranquero
2013-06-28 19:36 ` Stefan Monnier
2013-06-29 0:54 ` Juanma Barranquero
2013-06-29 8:29 ` martin rudalics
2013-06-29 22:06 ` Juanma Barranquero
2013-06-30 9:35 ` martin rudalics
2013-06-30 10:32 ` Juanma Barranquero
2013-06-30 12:55 ` martin rudalics
2013-06-30 17:55 ` Juanma Barranquero
2013-07-01 6:48 ` martin rudalics
2013-07-04 20:41 ` Angelo Graziosi
2013-07-04 21:34 ` Juanma Barranquero
2013-07-04 23:10 ` Angelo Graziosi
2013-07-04 23:19 ` Juanma Barranquero
2013-07-05 7:45 ` martin rudalics
2013-07-05 9:37 ` Juanma Barranquero
2013-07-05 14:02 ` Angelo Graziosi
2013-07-05 14:55 ` Juanma Barranquero
2013-07-05 15:02 ` Angelo Graziosi
2013-07-05 15:10 ` Juanma Barranquero
2013-07-05 15:30 ` martin rudalics
2013-07-05 15:39 ` Juanma Barranquero
2013-07-05 15:54 ` martin rudalics
2013-07-05 16:02 ` Juanma Barranquero
2013-07-05 17:03 ` martin rudalics
2013-07-05 17:06 ` Juanma Barranquero
2013-07-05 17:37 ` martin rudalics
2013-07-06 14:32 ` Juanma Barranquero
2013-07-07 10:57 ` martin rudalics
2013-07-05 15:21 ` martin rudalics
2013-07-05 15:26 ` Juanma Barranquero
2013-07-05 15:39 ` martin rudalics
2013-07-05 15:40 ` Juanma Barranquero
2013-07-05 15:55 ` martin rudalics
2013-07-05 17:04 ` Angelo Graziosi
2013-07-05 17:09 ` Juanma Barranquero
2013-07-05 7:45 ` martin rudalics
2013-07-05 10:07 ` Angelo Graziosi
2013-07-05 12:58 ` martin rudalics
2013-07-05 13:13 ` Jan Djärv
2013-07-05 13:41 ` Angelo Graziosi
2013-07-05 14:42 ` martin rudalics
2013-07-05 18:22 ` Eli Zaretskii
2013-07-05 20:30 ` Angelo Graziosi
2013-07-06 8:47 ` martin rudalics
2013-07-06 9:10 ` Angelo Graziosi
2013-07-06 10:44 ` martin rudalics
2013-07-06 11:04 ` Angelo Graziosi
2013-07-06 13:06 ` martin rudalics
2013-07-06 13:18 ` Eli Zaretskii
2013-07-06 13:43 ` martin rudalics
2013-07-06 13:53 ` Eli Zaretskii
2013-07-07 10:56 ` martin rudalics
2013-07-06 14:27 ` Angelo Graziosi
2013-07-06 18:57 ` Drew Adams
2013-07-07 10:57 ` martin rudalics
2013-07-07 11:32 ` Juanma Barranquero
2013-07-07 12:46 ` martin rudalics
2013-07-07 15:53 ` Drew Adams
2013-07-08 6:47 ` martin rudalics
2013-07-08 13:56 ` Drew Adams
2013-07-08 17:29 ` Juanma Barranquero
2013-07-09 9:08 ` martin rudalics
2013-07-09 9:07 ` martin rudalics
2013-07-09 15:32 ` Drew Adams
2013-07-10 7:20 ` martin rudalics
2013-07-10 13:50 ` Drew Adams
2013-07-06 9:13 ` Juanma Barranquero
2013-07-06 10:44 ` martin rudalics
2013-07-06 14:39 ` Juanma Barranquero
2013-07-05 7:44 ` martin rudalics
2013-06-29 8:51 ` Stephen Leake
2013-06-29 18:00 ` chad
2013-06-29 18:12 ` Eli Zaretskii
2013-06-29 22:36 ` Juanma Barranquero
2013-06-30 15:27 ` Stephen Leake
2013-06-30 18:12 ` Juanma Barranquero
2013-06-28 8:13 ` Jan Djärv
2013-06-28 8:31 ` martin rudalics
2013-06-28 8:46 ` Jan Djärv
[not found] ` <51CD5489.10902@g>
2013-06-28 9:16 ` martin rudalics
2013-06-28 10:01 ` Jan Djärv
2013-06-28 10:19 ` martin rudalics
2013-06-28 10:26 ` Jan Djärv
2013-06-28 11:50 ` martin rudalics
2013-06-29 8:47 ` Stephen Leake
2013-06-29 22:26 ` Juanma Barranquero
2013-06-30 15:25 ` Stephen Leake
2013-06-30 18:09 ` Juanma Barranquero
2013-06-28 12:46 ` Eli Zaretskii
2013-06-28 14:03 ` martin rudalics
2013-06-28 14:58 ` Eli Zaretskii
2013-06-28 15:06 ` Juanma Barranquero
2013-06-28 17:53 ` Eli Zaretskii
2013-06-29 0:49 ` Juanma Barranquero
2013-06-28 15:22 ` Jan Djärv
2013-06-28 15:32 ` Juanma Barranquero
2013-06-28 15:53 ` Jan Djärv
2013-06-28 12:05 ` Juanma Barranquero
2013-06-28 13:06 ` Eli Zaretskii
2013-06-28 13:22 ` Juanma Barranquero
2013-06-28 14:51 ` Eli Zaretskii
2013-06-28 15:22 ` Juanma Barranquero
2013-06-28 17:52 ` Eli Zaretskii
2013-06-29 0:47 ` Juanma Barranquero
2013-06-29 8:39 ` Stephen Leake
2013-06-29 22:18 ` Juanma Barranquero
2013-06-29 23:48 ` Drew Adams
2013-06-30 10:16 ` Juanma Barranquero
2013-06-30 16:30 ` Drew Adams
2013-06-30 18:15 ` Juanma Barranquero
2013-06-30 7:51 ` Jan Djärv
2013-06-30 9:35 ` martin rudalics
2013-06-30 10:01 ` Jan Djärv
2013-06-30 10:11 ` martin rudalics
2013-06-30 10:34 ` Juanma Barranquero
2013-06-30 10:29 ` Juanma Barranquero
2013-06-30 12:55 ` martin rudalics
2013-06-30 18:03 ` Juanma Barranquero
2013-06-30 21:32 ` Jan Djärv
2013-07-01 0:28 ` Juanma Barranquero
2013-07-01 3:31 ` Juanma Barranquero
2013-07-01 6:50 ` martin rudalics
2013-07-01 10:38 ` Juanma Barranquero
2013-07-02 10:38 ` martin rudalics
2013-07-02 16:32 ` Juanma Barranquero
2013-07-03 9:27 ` martin rudalics
2013-07-03 10:36 ` Juanma Barranquero
2013-07-03 12:42 ` martin rudalics
2013-07-03 14:20 ` Juanma Barranquero
2013-07-03 14:32 ` Juanma Barranquero
2013-07-04 9:35 ` martin rudalics
2013-07-03 14:08 ` Drew Adams
2013-07-08 2:50 ` Juanma Barranquero
2013-07-08 6:47 ` martin rudalics
2013-07-08 12:13 ` Juanma Barranquero
2013-07-01 14:11 ` Drew Adams
2013-07-01 14:40 ` Juanma Barranquero
2013-07-01 16:03 ` Drew Adams
2013-07-01 16:37 ` Juanma Barranquero
2013-07-01 18:03 ` Drew Adams
2013-07-02 0:25 ` Juanma Barranquero
2013-07-02 3:46 ` Drew Adams
2013-07-02 17:32 ` Juanma Barranquero
2013-07-02 19:40 ` Drew Adams
2013-07-03 9:03 ` Juanma Barranquero
2013-07-03 9:34 ` martin rudalics
2013-07-03 10:38 ` Juanma Barranquero
2013-07-03 12:42 ` martin rudalics
2013-07-03 14:35 ` Juanma Barranquero
2013-07-04 9:35 ` martin rudalics
2013-07-04 14:17 ` Juanma Barranquero
2013-07-05 7:43 ` martin rudalics
2013-07-05 9:35 ` Juanma Barranquero
2013-07-03 14:08 ` Drew Adams
2013-07-03 14:54 ` Juanma Barranquero
2013-07-03 9:27 ` martin rudalics
2013-07-03 14:08 ` Drew Adams
2013-07-03 9:27 ` martin rudalics
2013-07-03 10:37 ` Juanma Barranquero
2013-07-03 14:08 ` Drew Adams
2013-07-03 15:16 ` Juanma Barranquero
2013-07-03 17:01 ` Drew Adams
2013-06-30 15:23 ` Stephen Leake
2013-06-30 15:34 ` Eli Zaretskii
2013-06-28 14:03 ` martin rudalics
2013-06-28 15:12 ` Juanma Barranquero
2013-06-28 10:22 ` Eli Zaretskii
2013-06-28 11:50 ` martin rudalics
2013-06-28 12:11 ` Juanma Barranquero
2013-06-28 12:24 ` Angelo Graziosi
2013-06-28 13:02 ` Eli Zaretskii
2013-06-28 14:07 ` martin rudalics
2013-06-28 14:59 ` Eli Zaretskii
2013-06-28 12:08 ` Juanma Barranquero
2013-06-28 13:07 ` Eli Zaretskii
2013-06-28 13:29 ` Juanma Barranquero
2013-06-28 14:53 ` Eli Zaretskii
2013-06-28 15:24 ` Juanma Barranquero
2013-06-29 8:03 ` Stephen Leake
2013-06-29 8:11 ` Eli Zaretskii
2013-06-30 15:29 ` Stephen Leake
2013-06-30 15:39 ` Eli Zaretskii
2013-06-28 12:00 ` Juanma Barranquero
2013-06-28 12:31 ` Jan Djärv
2013-06-28 13:18 ` Juanma Barranquero
2013-06-28 14:26 ` Jan Djärv
2013-06-28 15:19 ` Juanma Barranquero
2013-06-28 14:03 ` martin rudalics
2013-06-28 15:13 ` Jan Djärv
2013-06-28 15:14 ` Juanma Barranquero
2013-06-28 14:02 ` martin rudalics
2013-06-28 15:10 ` Juanma Barranquero
2013-06-28 16:17 ` martin rudalics
2013-06-29 8:41 ` Stephen Leake
2013-06-28 13:29 ` Drew Adams
2013-06-25 3:22 ` Stephen J. Turnbull
2013-06-24 17:38 ` martin rudalics
2013-06-23 12:28 ` Juanma Barranquero
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='CAAeL0STPPW9q5uVNDTcm_efPMkA1xdpMQMAtEs_dL=f1ynBTMg@mail.gmail.com' \
--to=lekktu@gmail.com \
--cc=drew.adams@oracle.com \
--cc=emacs-devel@gnu.org \
--cc=rudalics@gmx.at \
--cc=yandros@mit.edu \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.