From: Leon <sdl.web@gmail.com>
Subject: Re: Icon update
Date: Wed, 29 Mar 2006 20:03:39 +0100 [thread overview]
Message-ID: <m28xqtkr90.fsf@sl392.st-edmunds.cam.ac.uk> (raw)
In-Reply-To: 442A5D49.1000302@swipnet.se
Can someone show me how to use this patch? I did a patch -p4 <
emacs-stokc.diff in emacs CVS dir, and it asked me for `file to
patch'. Thank you.
"Jan D." <jan.h.d@swipnet.se> writes:
> Leon wrote:
>> "Jan D." <jan.h.d@swipnet.se> writes:
>>
>>> David Kastrup wrote:
>>>> Bill Wohler <wohler@newt.com> writes:
>>>>
>>>>> By the way, if anyone has GTK experience, the Emacs code should be using
>>>>> the GTK libraries to render the icons and only using our built-in icons
>>>>> as a fall-back. That way, Emacs icons will pick up theme changes.
>>> I have a patch that does just that, but I decided to wait with it
>>> until after the release. It will only work for Emacs compiled with
>>> GTK, but I guess that is obvious.
>>>
>>> Jan D.
>> Sounds interesting. May I have a copy of the patch? Thanks.
>
> Attached. But some icons don't have stock items, so the effect may be
> strange for some themes.
>
> Jan D.
> Index: lisp/info.el
> ===================================================================
> RCS file: /cvsroot/emacs/emacs/lisp/info.el,v
> retrieving revision 1.481
> diff -u -c -r1.481 info.el
> *** lisp/info.el 11 Mar 2006 22:35:18 -0000 1.481
> --- lisp/info.el 29 Mar 2006 10:05:16 -0000
> ***************
> *** 3209,3224 ****
> (defvar info-tool-bar-map
> (if (display-graphic-p)
> (let ((map (make-sparse-keymap)))
> ! (tool-bar-local-item-from-menu 'Info-exit "close" map Info-mode-map)
> ! (tool-bar-local-item-from-menu 'Info-history-back "left-arrow" map Info-mode-map)
> ! (tool-bar-local-item-from-menu 'Info-history-forward "right-arrow" map Info-mode-map)
> (tool-bar-local-item-from-menu 'Info-prev "prev-node" map Info-mode-map)
> (tool-bar-local-item-from-menu 'Info-next "next-node" map Info-mode-map)
> (tool-bar-local-item-from-menu 'Info-up "up-node" map Info-mode-map)
> ! (tool-bar-local-item-from-menu 'Info-top-node "home" map Info-mode-map)
> ! (tool-bar-local-item-from-menu 'Info-goto-node "jump-to" map Info-mode-map)
> ! (tool-bar-local-item-from-menu 'Info-index "index" map Info-mode-map)
> ! (tool-bar-local-item-from-menu 'Info-search "search" map Info-mode-map)
> map)))
>
> (defvar Info-menu-last-node nil)
> --- 3209,3231 ----
> (defvar info-tool-bar-map
> (if (display-graphic-p)
> (let ((map (make-sparse-keymap)))
> ! (tool-bar-local-item-from-menu 'Info-exit "close" map Info-mode-map
> ! :stock "gtk-close")
> ! (tool-bar-local-item-from-menu 'Info-history-back "left-arrow" map Info-mode-map
> ! :stock "gtk-go-back")
> ! (tool-bar-local-item-from-menu 'Info-history-forward "right-arrow" map Info-mode-map
> ! :stock "gtk-go-forward")
> (tool-bar-local-item-from-menu 'Info-prev "prev-node" map Info-mode-map)
> (tool-bar-local-item-from-menu 'Info-next "next-node" map Info-mode-map)
> (tool-bar-local-item-from-menu 'Info-up "up-node" map Info-mode-map)
> ! (tool-bar-local-item-from-menu 'Info-top-node "home" map Info-mode-map
> ! :stock "gtk-home")
> ! (tool-bar-local-item-from-menu 'Info-goto-node "jump-to" map Info-mode-map
> ! :stock "gtk-jump-to")
> ! (tool-bar-local-item-from-menu 'Info-index "index" map Info-mode-map
> ! :stock "gtk-index")
> ! (tool-bar-local-item-from-menu 'Info-search "search" map Info-mode-map
> ! :stock "gtk-find")
> map)))
>
> (defvar Info-menu-last-node nil)
> Index: lisp/tool-bar.el
> ===================================================================
> RCS file: /cvsroot/emacs/emacs/lisp/tool-bar.el,v
> retrieving revision 1.5
> diff -u -c -r1.5 tool-bar.el
> *** lisp/tool-bar.el 6 Feb 2006 14:33:35 -0000 1.5
> --- lisp/tool-bar.el 29 Mar 2006 10:05:16 -0000
> ***************
> *** 232,279 ****
> ;; People say it's bad to have EXIT on the tool bar, since users
> ;; might inadvertently click that button.
> ;;(tool-bar-add-item-from-menu 'save-buffers-kill-emacs "exit")
> ! (tool-bar-add-item-from-menu 'find-file "new")
> ! (tool-bar-add-item-from-menu 'menu-find-file-existing "open")
> ! (tool-bar-add-item-from-menu 'dired "diropen")
> ! (tool-bar-add-item-from-menu 'kill-this-buffer "close")
> (tool-bar-add-item-from-menu 'save-buffer "save" nil
> :visible '(or buffer-file-name
> (not (eq 'special
> (get major-mode
> 'mode-class)))))
> (tool-bar-add-item-from-menu 'write-file "saveas" nil
> :visible '(or buffer-file-name
> (not (eq 'special
> (get major-mode
> 'mode-class)))))
> (tool-bar-add-item-from-menu 'undo "undo" nil
> :visible '(not (eq 'special (get major-mode
> 'mode-class))))
> (tool-bar-add-item-from-menu (lookup-key menu-bar-edit-menu [cut])
> "cut" nil
> :visible '(not (eq 'special (get major-mode
> 'mode-class))))
> (tool-bar-add-item-from-menu (lookup-key menu-bar-edit-menu [copy])
> ! "copy")
> (tool-bar-add-item-from-menu (lookup-key menu-bar-edit-menu [paste])
> "paste" nil
> :visible '(not (eq 'special (get major-mode
> 'mode-class))))
> ! (tool-bar-add-item-from-menu 'nonincremental-search-forward "search")
> ;;(tool-bar-add-item-from-menu 'ispell-buffer "spell")
>
> ;; There's no icon appropriate for News and we need a command rather
> ;; than a lambda for Read Mail.
> ;;(tool-bar-add-item-from-menu 'compose-mail "mail/compose")
>
> ! (tool-bar-add-item-from-menu 'print-buffer "print")
> (tool-bar-add-item "preferences" 'customize 'customize
> :help "Edit preferences (customize)")
>
> (tool-bar-add-item "help" (lambda ()
> (interactive)
> (popup-menu menu-bar-help-menu))
> 'help
> :help "Pop up the Help menu")
> )
>
> --- 232,291 ----
> ;; People say it's bad to have EXIT on the tool bar, since users
> ;; might inadvertently click that button.
> ;;(tool-bar-add-item-from-menu 'save-buffers-kill-emacs "exit")
> ! (tool-bar-add-item-from-menu 'find-file "new" nil :stock "gtk-new")
> ! (tool-bar-add-item-from-menu 'menu-find-file-existing "open"
> ! nil :stock "gtk-open")
> ! (tool-bar-add-item-from-menu 'dired "diropen"
> ! nil :stock "gtk-directory")
> ! (tool-bar-add-item-from-menu 'kill-this-buffer "close"
> ! nil :stock "gtk-close")
> (tool-bar-add-item-from-menu 'save-buffer "save" nil
> + :stock "gtk-save"
> :visible '(or buffer-file-name
> (not (eq 'special
> (get major-mode
> 'mode-class)))))
> (tool-bar-add-item-from-menu 'write-file "saveas" nil
> + :stock "gtk-save-as"
> :visible '(or buffer-file-name
> (not (eq 'special
> (get major-mode
> 'mode-class)))))
> (tool-bar-add-item-from-menu 'undo "undo" nil
> + :stock "gtk-undo"
> :visible '(not (eq 'special (get major-mode
> 'mode-class))))
> (tool-bar-add-item-from-menu (lookup-key menu-bar-edit-menu [cut])
> "cut" nil
> + :stock "gtk-cut"
> :visible '(not (eq 'special (get major-mode
> 'mode-class))))
> (tool-bar-add-item-from-menu (lookup-key menu-bar-edit-menu [copy])
> ! "copy" nil :stock "gtk-copy")
> (tool-bar-add-item-from-menu (lookup-key menu-bar-edit-menu [paste])
> "paste" nil
> + :stock "gtk-paste"
> :visible '(not (eq 'special (get major-mode
> 'mode-class))))
> ! (tool-bar-add-item-from-menu 'nonincremental-search-forward "search"
> ! nil :stock "gtk-find")
> ;;(tool-bar-add-item-from-menu 'ispell-buffer "spell")
>
> ;; There's no icon appropriate for News and we need a command rather
> ;; than a lambda for Read Mail.
> ;;(tool-bar-add-item-from-menu 'compose-mail "mail/compose")
>
> ! (tool-bar-add-item-from-menu 'print-buffer "print"
> ! nil :stock "gtk-print")
> (tool-bar-add-item "preferences" 'customize 'customize
> + :stock "gtk-preferences"
> :help "Edit preferences (customize)")
>
> (tool-bar-add-item "help" (lambda ()
> (interactive)
> (popup-menu menu-bar-help-menu))
> 'help
> + :stock "gtk-help"
> :help "Pop up the Help menu")
> )
>
> Index: src/dispextern.h
> ===================================================================
> RCS file: /cvsroot/emacs/emacs/src/dispextern.h,v
> retrieving revision 1.215
> diff -u -c -r1.215 dispextern.h
> *** src/dispextern.h 15 Mar 2006 07:55:36 -0000 1.215
> --- src/dispextern.h 29 Mar 2006 10:05:17 -0000
> ***************
> *** 2539,2544 ****
> --- 2539,2547 ----
> /* Help string. */
> TOOL_BAR_ITEM_HELP,
>
> + /* Stock image. */
> + TOOL_BAR_ITEM_STOCK_IMAGE,
> +
> /* Sentinel = number of slots in tool_bar_items occupied by one
> tool-bar item. */
> TOOL_BAR_ITEM_NSLOTS
> Index: src/gtkutil.c
> ===================================================================
> RCS file: /cvsroot/emacs/emacs/src/gtkutil.c,v
> retrieving revision 1.84
> diff -u -c -r1.84 gtkutil.c
> *** src/gtkutil.c 24 Feb 2006 15:36:39 -0000 1.84
> --- src/gtkutil.c 29 Mar 2006 10:05:17 -0000
> ***************
> *** 3243,3248 ****
> --- 3243,3253 ----
> #define XG_TOOL_BAR_LAST_MODIFIER "emacs-tool-bar-modifier"
>
>
> + /* The key for the data we put in the GtkImage widgets. The data is
> + the stock name used by Emacs. We use this to see if we need to update
> + the GtkImage with a new image. */
> + #define XG_TOOL_BAR_STOCK_NAME "emacs-tool-bar-stock-name"
> +
> /* Callback function invoked when a tool bar item is pressed.
> W is the button widget in the tool bar that got pressed,
> CLIENT_DATA is an integer that is the index of the button in the
> ***************
> *** 3525,3530 ****
> --- 3530,3536 ----
> GList *iter;
> struct x_output *x = f->output_data.x;
> int hmargin, vmargin;
> + GtkToolbar *wtoolbar;
>
> if (! FRAME_GTK_WIDGET (f))
> return;
> ***************
> *** 3558,3566 ****
> if (! x->toolbar_widget)
> xg_create_tool_bar (f);
>
> ! gtk_widget_size_request (x->toolbar_widget, &old_req);
> !
> ! icon_list = gtk_container_get_children (GTK_CONTAINER (x->toolbar_widget));
> iter = icon_list;
>
> for (i = 0; i < f->n_tool_bar_items; ++i)
> --- 3564,3573 ----
> if (! x->toolbar_widget)
> xg_create_tool_bar (f);
>
> ! wtoolbar = GTK_TOOLBAR (x->toolbar_widget);
> ! gtk_widget_size_request (GTK_WIDGET (wtoolbar), &old_req);
> !
> ! icon_list = gtk_container_get_children (GTK_CONTAINER (wtoolbar));
> iter = icon_list;
>
> for (i = 0; i < f->n_tool_bar_items; ++i)
> ***************
> *** 3571,3622 ****
> int selected_p = !NILP (PROP (TOOL_BAR_ITEM_SELECTED_P));
> int idx;
> int img_id;
> ! struct image *img;
> Lisp_Object image;
> GtkWidget *wicon = iter ? GTK_WIDGET (iter->data) : 0;
>
> if (iter) iter = g_list_next (iter);
>
> ! /* If image is a vector, choose the image according to the
> ! button state. */
> ! image = PROP (TOOL_BAR_ITEM_IMAGES);
> ! if (VECTORP (image))
> ! {
> ! if (enabled_p)
> ! idx = (selected_p
> ! ? TOOL_BAR_IMAGE_ENABLED_SELECTED
> ! : TOOL_BAR_IMAGE_ENABLED_DESELECTED);
> ! else
> ! idx = (selected_p
> ! ? TOOL_BAR_IMAGE_DISABLED_SELECTED
> ! : TOOL_BAR_IMAGE_DISABLED_DESELECTED);
> !
> ! xassert (ASIZE (image) >= idx);
> ! image = AREF (image, idx);
> ! }
> ! else
> ! idx = -1;
>
> ! /* Ignore invalid image specifications. */
> ! if (!valid_image_p (image))
> {
> ! if (wicon) gtk_widget_hide (wicon);
> ! continue;
> }
>
> ! img_id = lookup_image (f, image);
> ! img = IMAGE_FROM_ID (f, img_id);
> ! prepare_image_for_display (f, img);
>
> - if (img->load_failed_p || img->pixmap == None)
> - {
> - if (wicon) gtk_widget_hide (wicon);
> - continue;
> }
>
> if (! wicon)
> {
> ! GtkWidget *w = xg_get_image_for_pixmap (f, img, x->widget, NULL);
> GtkToolItem *ti = gtk_tool_button_new (w, "");
>
> gtk_misc_set_padding (GTK_MISC (w), hmargin, vmargin);
> --- 3578,3663 ----
> int selected_p = !NILP (PROP (TOOL_BAR_ITEM_SELECTED_P));
> int idx;
> int img_id;
> ! int icon_size = 0;
> ! struct image *img = NULL;
> Lisp_Object image;
> + Lisp_Object stock;
> GtkWidget *wicon = iter ? GTK_WIDGET (iter->data) : 0;
> + GtkStockItem stock_item;
> + char *stock_name = NULL;
>
> if (iter) iter = g_list_next (iter);
>
> ! stock = PROP (TOOL_BAR_ITEM_STOCK_IMAGE);
>
> ! if (! NILP (stock) && STRINGP (stock)
> ! && gtk_stock_lookup (SSDATA (stock), &stock_item))
> {
> ! stock_name = SSDATA (stock);
> ! icon_size = gtk_toolbar_get_icon_size (wtoolbar);
> }
> + else
> + {
> + /* No stock image, or stock item not known. Try regular image. */
>
> ! /* If image is a vector, choose the image according to the
> ! button state. */
> ! image = PROP (TOOL_BAR_ITEM_IMAGES);
> ! if (VECTORP (image))
> ! {
> ! if (enabled_p)
> ! idx = (selected_p
> ! ? TOOL_BAR_IMAGE_ENABLED_SELECTED
> ! : TOOL_BAR_IMAGE_ENABLED_DESELECTED);
> ! else
> ! idx = (selected_p
> ! ? TOOL_BAR_IMAGE_DISABLED_SELECTED
> ! : TOOL_BAR_IMAGE_DISABLED_DESELECTED);
> !
> ! xassert (ASIZE (image) >= idx);
> ! image = AREF (image, idx);
> ! }
> ! else
> ! idx = -1;
> !
> ! /* Ignore invalid image specifications. */
> ! if (!valid_image_p (image))
> ! {
> ! if (wicon) gtk_widget_hide (wicon);
> ! continue;
> ! }
> !
> ! img_id = lookup_image (f, image);
> ! img = IMAGE_FROM_ID (f, img_id);
> ! prepare_image_for_display (f, img);
> !
> ! if (img->load_failed_p || img->pixmap == None)
> ! {
> ! if (wicon) gtk_widget_hide (wicon);
> ! continue;
> ! }
>
> }
>
> if (! wicon)
> {
> ! GtkWidget *w;
> ! if (stock_name)
> ! {
> ! w = gtk_image_new_from_stock (stock_name, icon_size);
> ! g_object_set_data_full (G_OBJECT (w), XG_TOOL_BAR_STOCK_NAME,
> ! (gpointer) xstrdup (stock_name),
> ! (GDestroyNotify) xfree);
> ! }
> ! else
> ! {
> ! w = xg_get_image_for_pixmap (f, img, x->widget, NULL);
> ! /* Save the image so we can see if an update is needed when
> ! this function is called again. */
> ! g_object_set_data (G_OBJECT (w), XG_TOOL_BAR_IMAGE_DATA,
> ! (gpointer)img->pixmap);
> ! }
> !
> GtkToolItem *ti = gtk_tool_button_new (w, "");
>
> gtk_misc_set_padding (GTK_MISC (w), hmargin, vmargin);
> ***************
> *** 3632,3641 ****
> gtk_widget_show (GTK_WIDGET (ti));
> gtk_widget_show (GTK_WIDGET (w));
>
> - /* Save the image so we can see if an update is needed when
> - this function is called again. */
> - g_object_set_data (G_OBJECT (w), XG_TOOL_BAR_IMAGE_DATA,
> - (gpointer)img->pixmap);
>
> g_object_set_data (G_OBJECT (ti), XG_FRAME_DATA, (gpointer)f);
>
> --- 3673,3678 ----
> ***************
> *** 3684,3698 ****
> GtkImage *wimage = GTK_IMAGE (chlist->data);
> Pixmap old_img = (Pixmap)g_object_get_data (G_OBJECT (wimage),
> XG_TOOL_BAR_IMAGE_DATA);
> g_list_free (chlist);
>
> ! gtk_misc_set_padding (GTK_MISC (wimage), hmargin, vmargin);
>
> ! if (old_img != img->pixmap)
> ! (void) xg_get_image_for_pixmap (f, img, x->widget, wimage);
> !
> ! g_object_set_data (G_OBJECT (wimage), XG_TOOL_BAR_IMAGE_DATA,
> ! (gpointer)img->pixmap);
>
> gtk_widget_set_sensitive (wicon, enabled_p);
> gtk_widget_show (wicon);
> --- 3721,3751 ----
> GtkImage *wimage = GTK_IMAGE (chlist->data);
> Pixmap old_img = (Pixmap)g_object_get_data (G_OBJECT (wimage),
> XG_TOOL_BAR_IMAGE_DATA);
> + gpointer old_stock_name = g_object_get_data (G_OBJECT (wimage),
> + XG_TOOL_BAR_STOCK_NAME);
> g_list_free (chlist);
>
> ! if (stock_name &&
> ! (! old_stock_name || strcmp (old_stock_name, stock_name) != 0))
> ! {
> ! gtk_image_set_from_stock (wimage, stock_name, icon_size);
> ! g_object_set_data_full (G_OBJECT (wimage), XG_TOOL_BAR_STOCK_NAME,
> ! (gpointer) xstrdup (stock_name),
> ! (GDestroyNotify) xfree);
> ! g_object_set_data (G_OBJECT (wimage), XG_TOOL_BAR_IMAGE_DATA,
> ! NULL);
> ! }
> ! else if (img && old_img != img->pixmap)
> ! {
> ! (void) xg_get_image_for_pixmap (f, img, x->widget, wimage);
> ! g_object_set_data (G_OBJECT (wimage), XG_TOOL_BAR_IMAGE_DATA,
> ! (gpointer)img->pixmap);
> !
> ! g_object_set_data (G_OBJECT (wimage), XG_TOOL_BAR_STOCK_NAME,
> ! NULL);
> ! }
>
> ! gtk_misc_set_padding (GTK_MISC (wimage), hmargin, vmargin);
>
> gtk_widget_set_sensitive (wicon, enabled_p);
> gtk_widget_show (wicon);
> ***************
> *** 3710,3716 ****
> iter = g_list_next (iter);
> }
>
> ! gtk_widget_size_request (x->toolbar_widget, &new_req);
> if (old_req.height != new_req.height
> && ! FRAME_X_OUTPUT (f)->toolbar_detached)
> {
> --- 3763,3769 ----
> iter = g_list_next (iter);
> }
>
> ! gtk_widget_size_request (GTK_WIDGET (wtoolbar), &new_req);
> if (old_req.height != new_req.height
> && ! FRAME_X_OUTPUT (f)->toolbar_detached)
> {
> Index: src/keyboard.c
> ===================================================================
> RCS file: /cvsroot/emacs/emacs/src/keyboard.c,v
> retrieving revision 1.851
> diff -u -c -r1.851 keyboard.c
> *** src/keyboard.c 29 Mar 2006 08:00:23 -0000 1.851
> --- src/keyboard.c 29 Mar 2006 10:05:18 -0000
> ***************
> *** 7573,7582 ****
>
> static int ntool_bar_items;
>
> ! /* The symbols `tool-bar', and `:image'. */
>
> extern Lisp_Object Qtool_bar;
> Lisp_Object QCimage;
>
> /* Function prototypes. */
>
> --- 7573,7583 ----
>
> static int ntool_bar_items;
>
> ! /* The symbols `tool-bar', `:image' and `:stock'. */
>
> extern Lisp_Object Qtool_bar;
> Lisp_Object QCimage;
> + Lisp_Object Qstock;
>
> /* Function prototypes. */
>
> ***************
> *** 7862,7867 ****
> --- 7863,7871 ----
> /* Value is either a single image specification or a vector
> of 4 such specifications for the different button states. */
> PROP (TOOL_BAR_ITEM_IMAGES) = value;
> + else if (EQ (key, Qstock))
> + /* ':stock STRING' */
> + PROP (TOOL_BAR_ITEM_STOCK_IMAGE) = value;
> }
>
> /* If got a filter apply it on binding. */
> ***************
> *** 10846,10851 ****
> --- 10850,10858 ----
> staticpro (&Qhelp_echo);
> Qhelp_echo = intern ("help-echo");
>
> + staticpro (&Qstock);
> + Qstock = intern (":stock");
> +
> staticpro (&item_properties);
> item_properties = Qnil;
>
> _______________________________________________
> Emacs-devel mailing list
> Emacs-devel@gnu.org
> http://lists.gnu.org/mailman/listinfo/emacs-devel
--
Leon
next prev parent reply other threads:[~2006-03-29 19:03 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-03-26 22:57 Icon update Bill Wohler
2006-03-26 22:59 ` Bill Wohler
2006-03-27 19:55 ` David Kastrup
2006-03-28 6:33 ` Jan D.
2006-03-29 0:42 ` Leon
2006-03-29 4:17 ` Bill Wohler
2006-03-29 10:11 ` Jan D.
2006-03-29 19:03 ` Leon [this message]
2006-03-29 20:06 ` Leon
2006-03-29 20:34 ` Stefan Monnier
2006-03-29 20:42 ` Leon
2006-03-30 7:05 ` Jan D.
2006-03-30 19:39 ` Bill Wohler
2006-03-31 12:22 ` Jan D.
2006-03-31 17:37 ` Bill Wohler
2006-04-01 12:19 ` Jan D.
2006-04-01 16:22 ` Bill Wohler
2006-04-01 20:06 ` Bill Wohler
2006-04-03 6:28 ` Jan D.
2006-04-03 22:09 ` Bill Wohler
2006-04-04 6:48 ` Jan D.
2006-04-04 19:04 ` Bill Wohler
2006-04-04 19:09 ` Lennart Borgman
2006-04-04 19:30 ` Bill Wohler
2006-04-05 7:08 ` Jan D.
2006-04-05 7:13 ` Miles Bader
2006-03-30 20:41 ` Leon
2006-03-31 1:52 ` Bill Wohler
2006-03-31 12:29 ` Jan D.
2006-03-29 21:47 ` Bill Wohler
2006-03-29 22:50 ` Stefan Monnier
2006-03-30 6:56 ` Jan D.
2006-03-30 20:26 ` Leon
2006-03-30 6:43 ` Jan D.
2006-03-28 19:22 ` Bill Wohler
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=m28xqtkr90.fsf@sl392.st-edmunds.cam.ac.uk \
--to=sdl.web@gmail.com \
/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.