unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Juanma Barranquero <lektu@mi.madritel.es>
Cc: "Kim F. Storm" <storm@cua.dk>
Subject: Re: display word wrapping
Date: Tue, 08 Jun 2004 02:33:11 +0200	[thread overview]
Message-ID: <20040608013702.085E.LEKTU@mi.madritel.es> (raw)
In-Reply-To: <m3d64bx8ti.fsf@kfs-l.imdomain.dk>

On 08 Jun 2004 01:11:21 +0200, storm@cua.dk (Kim F. Storm) wrote:

> Looks really good now!!

Yeah, it looks ;)

Anyway, this is the latest revision, almost identical to the previous
one, with two small changes:

  - Fixing a Lisp_Object/int mixup (I was returning an int from
    define_image_type and passing it as is from init-image-library,
    which returns a Lisp_Object).

  - Unknown image types (like 'zzz) are now added to Vimage_types, i.e.,
    after (image-type-available-p 'zzz), image-types contains
    '(zzz . nil).

If people tests it on non-Windows environments and it does not cause
any regresion, I'd suggest installing it for 21.[45]***.  With a
suitable entry on etc/NEWS, of course, and any required info on the manual,
if any (I'm not entirely sure this should be mentioned in any place
other than nt/INSTALL, unless there's a plan to someday support delayed
loading on non-Windows.)

Although delayed loading is, technically speaking, a new feature, it is
not visible outside Windows (other than the fact that image-types is
populated on use, but that shouldn't affect usability at all), and on
Windows it will certainly help if the GnuWin32 people changes names
again, or other ports of the image libraries are made available.

*** Did we reach any decision about 21.4 vs 21.5, BTW?

                                                           /L/e/k/t/u



Index: lisp/image.el
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/image.el,v
retrieving revision 1.40
diff -u -2 -B -r1.40 image.el
--- lisp/image.el	26 Apr 2004 22:11:36 -0000	1.40
+++ lisp/image.el	8 Jun 2004 00:06:53 -0000
@@ -49,4 +49,15 @@
 a non-nil value, TYPE is the image's type.")
 
+;;;###autoload
+(defvar image-library-alist nil
+  "Alist of image types vs external libraries needed to display them.
+
+Each element is a list (IMAGE-TYPE LIBRARY...), where the car is a symbol
+representing a supported image type, and the rest are strings giving
+alternate filenames for the corresponding external libraries to load.
+They are tried in the order they appear on the list; if none of them can
+be loaded, the running session of Emacs won't display the image type.
+No entries are needed for pbm and xbm images; they're always supported.")
+;;;###autoload (put 'image-library-alist 'risky-local-variable t)
 
 (defun image-jpeg-p (data)
@@ -112,6 +123,6 @@
   "Value is non-nil if image type TYPE is available.
 Image types are symbols like `xbm' or `jpeg'."
-  (and (boundp 'image-types) (not (null (memq type image-types)))))
-
+  (and (fboundp 'init-image-library)
+       (init-image-library type image-library-alist)))
 
 ;;;###autoload
Index: lisp/term/w32-win.el
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/term/w32-win.el,v
retrieving revision 1.62
diff -u -2 -B -r1.62 w32-win.el
--- lisp/term/w32-win.el	9 May 2004 15:01:17 -0000	1.62
+++ lisp/term/w32-win.el	8 Jun 2004 00:06:58 -0000
@@ -1262,4 +1262,12 @@
 	    (error "Font not found")))))
 
+;;; Set default known names for image libraries
+(setq image-library-alist
+      '((xpm "libXpm-nox4.dll" "libxpm.dll")
+        (png "libpng13d.dll" "libpng13.dll" "libpng12d.dll" "libpng12.dll" "libpng.dll")
+        (jpeg "jpeg62.dll" "libjpeg.dll" "jpeg-62.dll" "jpeg.dll")
+        (tiff "libtiff3.dll" "libtiff.dll")
+        (gif "libungif.dll")))
+
 ;;; arch-tag: 69fb1701-28c2-4890-b351-3d1fe4b4f166
 ;;; w32-win.el ends here
Index: src/image.c
===================================================================
RCS file: /cvsroot/emacs/emacs/src/image.c,v
retrieving revision 1.12
diff -u -2 -B -r1.12 image.c
--- src/image.c	2 Jun 2004 00:50:09 -0000	1.12
+++ src/image.c	8 Jun 2004 00:29:42 -0000
@@ -630,5 +630,5 @@
 /* Function prototypes.  */
 
-static void define_image_type P_ ((struct image_type *type));
+static Lisp_Object define_image_type P_ ((struct image_type *type, int loaded));
 static struct image_type *lookup_image_type P_ ((Lisp_Object symbol));
 static void image_error P_ ((char *format, Lisp_Object, Lisp_Object));
@@ -638,19 +638,32 @@
 				       Lisp_Object));
 
+#define SET_IMAGE_TYPE_STATUS(type, status) \
+  do { Vimage_types = Fcons (Fcons (type, status), Vimage_types); } while (0)
 
 /* Define a new image type from TYPE.  This adds a copy of TYPE to
-   image_types and adds the symbol *TYPE->type to Vimage_types.  */
+   image_types and adds (*TYPE->type, loaded) to Vimage_types.  */
 
-static void
-define_image_type (type)
+static Lisp_Object
+define_image_type (type, loaded)
      struct image_type *type;
+     int loaded;
 {
-  /* Make a copy of TYPE to avoid a bus error in a dumped Emacs.
-     The initialized data segment is read-only.  */
-  struct image_type *p = (struct image_type *) xmalloc (sizeof *p);
-  bcopy (type, p, sizeof *p);
-  p->next = image_types;
-  image_types = p;
-  Vimage_types = Fcons (*p->type, Vimage_types);
+  Lisp_Object success;
+
+  if (!loaded)
+    success = Qnil;
+  else
+    {
+      /* Make a copy of TYPE to avoid a bus error in a dumped Emacs.
+         The initialized data segment is read-only.  */
+      struct image_type *p = (struct image_type *) xmalloc (sizeof *p);
+      bcopy (type, p, sizeof *p);
+      p->next = image_types;
+      image_types = p;
+      success = Qt;
+    }
+
+  SET_IMAGE_TYPE_STATUS(*type->type, success);
+  return success;
 }
 
@@ -1789,4 +1802,31 @@
   }
 
+/* Load a DLL implementing an image type.
+   The `image-library-alist' variable associates a symbol,
+   identifying  an image type, to a list of possible filenames.
+   The function returns NULL if no library could be loaded for
+   the given image type, or if the library was previously loaded;
+   else the handle of the DLL.  */
+static HMODULE
+w32_dynaload (Lisp_Object libraries, Lisp_Object library_id)
+{
+  HMODULE library = NULL;
+
+  if (CONSP (libraries) && NILP (Fassq (library_id, Vimage_types)))
+    {
+      Lisp_Object dlls = Fassq (library_id, libraries);
+
+      if (CONSP (dlls))
+        for (dlls = XCDR (dlls); CONSP (dlls); dlls = XCDR (dlls))
+          {
+            CHECK_STRING_CAR (dlls);
+            if (library = LoadLibrary (SDATA (XCAR (dlls))))
+              break;
+          }
+    }
+
+  return library;
+}
+
 #endif /* HAVE_NTGUI */
 
@@ -3489,11 +3529,10 @@
 DEF_IMGLIB_FN (XImageFree);
 
-
 static int
-init_xpm_functions (void)
+init_xpm_functions (Lisp_Object libraries)
 {
   HMODULE library;
 
-  if (!(library = LoadLibrary ("libXpm.dll")))
+  if (!(library = w32_dynaload (libraries, Qxpm)))
     return 0;
 
@@ -5589,19 +5628,10 @@
 
 static int
-init_png_functions (void)
+init_png_functions (Lisp_Object libraries)
 {
   HMODULE library;
 
-  /* Ensure zlib is loaded.  Try debug version first.  */
-  if (!LoadLibrary ("zlibd.dll")
-      && !LoadLibrary ("zlib.dll"))
-    return 0;
-
   /* Try loading libpng under probable names.  */
-  if (!(library = LoadLibrary ("libpng13d.dll"))
-      && !(library = LoadLibrary ("libpng13.dll"))
-      && !(library = LoadLibrary ("libpng12d.dll"))
-      && !(library = LoadLibrary ("libpng12.dll"))
-      && !(library = LoadLibrary ("libpng.dll")))
+  if (!(library = w32_dynaload (libraries, Qpng)))
     return 0;
 
@@ -6247,11 +6277,9 @@
 
 static int
-init_jpeg_functions (void)
+init_jpeg_functions (Lisp_Object libraries)
 {
   HMODULE library;
 
-  if (!(library = LoadLibrary ("libjpeg.dll"))
-      && !(library = LoadLibrary ("jpeg-62.dll"))
-      && !(library = LoadLibrary ("jpeg.dll")))
+  if (!(library = w32_dynaload (libraries, Qjpeg)))
     return 0;
 
@@ -6684,9 +6712,9 @@
 
 static int
-init_tiff_functions (void)
+init_tiff_functions (Lisp_Object libraries)
 {
   HMODULE library;
 
-  if (!(library = LoadLibrary ("libtiff.dll")))
+  if (!(library = w32_dynaload (libraries, Qtiff)))
     return 0;
 
@@ -7104,9 +7132,9 @@
 
 static int
-init_gif_functions (void)
+init_gif_functions (Lisp_Object libraries)
 {
   HMODULE library;
 
-  if (!(library = LoadLibrary ("libungif.dll")))
+  if (!(library = w32_dynaload (libraries, Qgif)))
     return 0;
 
@@ -7881,4 +7909,65 @@
  ***********************************************************************/
 
+#ifdef HAVE_NTGUI
+/* Image types that rely on external libraries are loaded dynamically
+   if the library is available.  */
+#define CHECK_LIB_AVAILABLE(image_type, init_lib_fn) \
+  define_image_type (image_type, init_lib_fn (libraries))
+#else
+#define CHECK_LIB_AVAILABLE(image_type, init_lib_fn) \
+  define_image_type (image_type, TRUE)
+#endif /* HAVE_NTGUI */
+
+DEFUN ("init-image-library", Finit_image_library, Sinit_image_library, 2, 2, 0,
+       doc: /* Initialize image library implementing image type TYPE.
+Return non-nil if TYPE is a supported image type.
+
+Image types pbm and xbm are prebuilt; other types are loaded here.
+Libraries to load are specified in alist LIBRARIES (usually, the value
+of `image-library-alist', which see.  */)
+  (type, libraries)
+{
+  Lisp_Object tested;
+
+  /* Don't try to reload the library.  */
+  tested = Fassq (type, Vimage_types);
+  if (CONSP (tested))
+    return XCDR (tested);
+
+#if defined (HAVE_XPM) || defined (MAC_OS)
+  if (EQ (type, Qxpm))
+    return CHECK_LIB_AVAILABLE(&xpm_type, init_xpm_functions);
+#endif
+
+#if defined (HAVE_JPEG) || defined (MAC_OS)
+  if (EQ (type, Qjpeg))
+    return CHECK_LIB_AVAILABLE(&jpeg_type, init_jpeg_functions);
+#endif
+
+#if defined (HAVE_TIFF) || defined (MAC_OS)
+  if (EQ (type, Qtiff))
+    return CHECK_LIB_AVAILABLE(&tiff_type, init_tiff_functions);
+#endif
+
+#if defined (HAVE_GIF) || defined (MAC_OS)
+  if (EQ (type, Qgif))
+    return CHECK_LIB_AVAILABLE(&gif_type, init_gif_functions);
+#endif
+
+#if defined (HAVE_PNG) || defined (MAC_OS)
+  if (EQ (type, Qpng))
+    return CHECK_LIB_AVAILABLE(&png_type, init_png_functions);
+#endif
+
+#ifdef HAVE_GHOSTSCRIPT
+  if (EQ (type, Qpostscript))
+    return CHECK_LIB_AVAILABLE(&gs_type, init_gs_functions);
+#endif
+
+  /* If the type is not recognized, avoid testing it ever again.  */
+  SET_IMAGE_TYPE_STATUS(type, Qnil);
+  return Qnil;
+}
+
 void
 syms_of_image ()
@@ -7958,4 +8047,5 @@
 #endif
 
+  defsubr (&Sinit_image_library);
   defsubr (&Sclear_image_cache);
   defsubr (&Simage_size);
@@ -7985,13 +8075,4 @@
 }
 
-
-#ifdef HAVE_NTGUI
-/* Image types that rely on external libraries are loaded dynamically
-   if the library is available.  */
-#define IF_LIB_AVAILABLE(init_lib_fn)  if (init_lib_fn())
-#else
-#define IF_LIB_AVAILABLE(init_func)    /* Load unconditionally */
-#endif /* HAVE_NTGUI */
-
 void
 init_image ()
@@ -8000,35 +8081,6 @@
   Vimage_types = Qnil;
 
-  define_image_type (&xbm_type);
-  define_image_type (&pbm_type);
-
-#if defined (HAVE_XPM) || defined (MAC_OS)
-  IF_LIB_AVAILABLE(init_xpm_functions)
-    define_image_type (&xpm_type);
-#endif
-
-#if defined (HAVE_JPEG) || defined (MAC_OS)
-  IF_LIB_AVAILABLE(init_jpeg_functions)
-    define_image_type (&jpeg_type);
-#endif
-
-#if defined (HAVE_TIFF) || defined (MAC_OS)
-  IF_LIB_AVAILABLE(init_tiff_functions)
-    define_image_type (&tiff_type);
-#endif
-
-#if defined (HAVE_GIF) || defined (MAC_OS)
-  IF_LIB_AVAILABLE(init_gif_functions)
-    define_image_type (&gif_type);
-#endif
-
-#if defined (HAVE_PNG) || defined (MAC_OS)
-  IF_LIB_AVAILABLE(init_png_functions)
-    define_image_type (&png_type);
-#endif
-
-#ifdef HAVE_GHOSTSCRIPT
-  define_image_type (&gs_type);
-#endif
+  define_image_type (&xbm_type, TRUE);
+  define_image_type (&pbm_type, TRUE);
 
 #ifdef MAC_OS

  reply	other threads:[~2004-06-08  0:33 UTC|newest]

Thread overview: 174+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-05-26 10:02 display word wrapping Miles Bader
2004-05-26 10:53 ` Kai Grossjohann
2004-05-26 11:29 ` Kim F. Storm
2004-05-26 12:54   ` Miles Bader
2004-05-26 14:50     ` David Kastrup
2004-05-26 15:06       ` Kim F. Storm
2004-05-26 19:16         ` David Kastrup
2004-05-26 19:50           ` Miles Bader
2004-05-26 21:43             ` i-search face-cache crash [was Re: display word wrapping] Kim F. Storm
2004-05-27  0:12               ` Miles Bader
2004-05-27  8:33                 ` Kim F. Storm
2004-05-27  4:48               ` i-search face-cache crash Miles Bader
2004-05-27 23:54                 ` Richard Stallman
2004-05-26 20:58           ` display word wrapping Kim F. Storm
2004-05-27  7:31             ` Jason Rumney
2004-05-26 22:21           ` Luc Teirlinck
2004-05-27  5:59           ` Miles Bader
2004-05-26 19:45         ` Miles Bader
2004-05-26 21:01           ` Kim F. Storm
2004-05-26 21:33             ` Miles Bader
2004-05-26 21:55               ` Kim F. Storm
2004-05-27  0:38                 ` Miles Bader
2004-05-26 21:52           ` Stefan Monnier
2004-05-27 23:53           ` Richard Stallman
2004-05-27  9:08         ` Juanma Barranquero
2004-05-27 10:41           ` Kim F. Storm
2004-05-27 11:15             ` Juanma Barranquero
2004-05-28  7:57               ` Jason Rumney
2004-05-28  8:24                 ` Kim F. Storm
2004-05-28  9:36                 ` Juanma Barranquero
2004-05-29 20:54                 ` Juanma Barranquero
2004-05-30  1:38                   ` Juanma Barranquero
2004-05-30  6:12                     ` Eli Zaretskii
2004-05-30 16:50                       ` Juanma Barranquero
2004-05-30 18:27                         ` Eli Zaretskii
2004-05-31  0:40                           ` Juanma Barranquero
2004-05-31  7:34                             ` Eli Zaretskii
2004-05-31 14:40                               ` Juanma Barranquero
2004-05-31 15:28                                 ` Andreas Schwab
2004-05-31 17:41                                   ` Eli Zaretskii
2004-06-01  7:14                                     ` Juanma Barranquero
2004-06-01 20:32                                       ` Eli Zaretskii
2004-06-01 20:53                                         ` Andreas Schwab
2004-06-01 23:50                                           ` Juanma Barranquero
2004-06-02  7:58                                             ` Kim F. Storm
2004-06-02  8:25                                               ` Juanma Barranquero
2004-06-02  4:55                                           ` Eli Zaretskii
2004-06-02  7:27                                             ` Juanma Barranquero
2004-05-31 17:55                                 ` Eli Zaretskii
2004-05-31 18:39                                   ` Juanma Barranquero
2004-05-31 19:03                                   ` Juanma Barranquero
2004-05-31 20:19                                     ` Andreas Schwab
2004-05-31 21:36                                       ` Juanma Barranquero
2004-05-31 19:18                                   ` Miles Bader
2004-05-31 20:02                                     ` Juanma Barranquero
2004-05-31 19:09                                 ` Jason Rumney
2004-05-31 15:27                               ` Andreas Schwab
2004-05-31 18:33                                 ` Juanma Barranquero
2004-05-31 19:05                           ` Jason Rumney
2004-05-31 22:19                             ` Juanma Barranquero
2004-06-01  4:43                               ` Eli Zaretskii
2004-06-01  7:16                                 ` Juanma Barranquero
2004-05-28  9:15               ` Benjamin Riefenstahl
2004-05-28  9:48                 ` Juanma Barranquero
2004-05-28  9:24               ` Eli Zaretskii
2004-05-28  9:46                 ` Juanma Barranquero
2004-05-29  1:43                 ` Richard Stallman
2004-05-29 11:37                   ` Eli Zaretskii
2004-05-29 15:07                   ` Juanma Barranquero
2004-05-30 14:30                     ` Richard Stallman
2004-05-30 16:58                       ` Juanma Barranquero
2004-05-31 18:39                         ` Richard Stallman
2004-05-31 18:55                       ` Jason Rumney
2004-06-02 17:36                         ` Richard Stallman
2004-05-31 21:05                 ` David Kastrup
2004-05-27 21:32             ` W32 image support (was Re: display word wrapping) Jason Rumney
2004-05-28 15:54           ` display word wrapping Peter Lee
2004-05-28 21:48             ` Jason Rumney
2004-05-29  3:19             ` Juanma Barranquero
2004-05-29 23:10               ` Kim F. Storm
2004-05-29 23:23                 ` Juanma Barranquero
2004-05-30 19:41                   ` Richard Stallman
2004-05-31 19:12                 ` Jason Rumney
2004-05-31 20:18                   ` Kim F. Storm
2004-06-02 15:04                     ` Juanma Barranquero
2004-06-02 22:17                       ` Jason Rumney
2004-06-02 22:43                         ` Juanma Barranquero
2004-06-03  7:49                           ` Jason Rumney
2004-06-03  8:40                             ` Juanma Barranquero
2004-06-03  9:00                               ` David Kastrup
2004-06-03  9:16                                 ` Juanma Barranquero
2004-06-03  9:26                                   ` David Kastrup
2004-06-03 10:02                                     ` Juanma Barranquero
2004-06-03 12:04                               ` Kim F. Storm
2004-06-03 13:52                                 ` Juanma Barranquero
2004-06-03 20:43                                   ` Kim F. Storm
2004-06-04  1:39                                     ` Juanma Barranquero
2004-06-04  8:07                                       ` Kim F. Storm
2004-06-04  9:09                                         ` Juanma Barranquero
2004-06-04  9:29                                           ` Juanma Barranquero
2004-06-04 12:40                                             ` Kim F. Storm
2004-06-04 12:45                                           ` Kim F. Storm
2004-06-04 13:42                                             ` Juanma Barranquero
2004-06-04 14:16                                               ` Kim F. Storm
2004-06-05  1:20                                                 ` Juanma Barranquero
2004-06-07 12:55                                                   ` Juanma Barranquero
2004-06-07 13:34                                                     ` Kim F. Storm
2004-06-07 16:00                                                       ` Juanma Barranquero
2004-06-07 23:11                                                         ` Kim F. Storm
2004-06-08  0:33                                                           ` Juanma Barranquero [this message]
2004-06-08  6:38                                                             ` David Kastrup
2004-06-08  8:06                                                               ` Kim F. Storm
2004-06-08  8:23                                                                 ` David Kastrup
2004-06-08  9:33                                                                   ` Kim F. Storm
2004-06-08  9:54                                                                     ` David Kastrup
2004-06-08 10:02                                                                       ` Juanma Barranquero
2004-06-08 10:10                                                                         ` David Kastrup
2004-06-08 10:24                                                                           ` Juanma Barranquero
2004-06-08 10:43                                                                             ` David Kastrup
2004-06-08 11:17                                                                               ` Juanma Barranquero
2004-06-08 12:08                                                                                 ` Kim F. Storm
2004-06-08 12:22                                                                                   ` Miles Bader
2004-06-08 12:31                                                                                     ` David Kastrup
2004-06-08 11:31                                                                               ` Juanma Barranquero
2004-06-08 11:39                                                                                 ` David Kastrup
2004-06-08 12:11                                                                                   ` Juanma Barranquero
2004-06-08 12:05                                                                                 ` Kim F. Storm
2004-06-08 12:13                                                                                   ` Juanma Barranquero
2004-06-08 10:00                                                                     ` Juanma Barranquero
2004-06-08  8:14                                                               ` Juanma Barranquero
2004-06-02 23:47                         ` Juanma Barranquero
2004-06-03  7:43                           ` Jason Rumney
2004-06-03  7:54                             ` Juanma Barranquero
2004-06-03  9:37                           ` Benjamin Riefenstahl
2004-06-03  9:54                             ` Juanma Barranquero
2004-06-07 11:13                               ` Benjamin Riefenstahl
2004-06-07 13:29                                 ` Juanma Barranquero
2004-06-07 16:37                                   ` Benjamin Riefenstahl
2004-06-01 16:34               ` Peter Lee
2004-06-01 20:43                 ` Eli Zaretskii
2004-06-02  0:05                 ` Juanma Barranquero
2004-05-29 17:02             ` Richard Stallman
2004-05-29 18:19               ` Juanma Barranquero
2004-05-30 19:41                 ` Richard Stallman
2004-05-31 18:42               ` Jason Rumney
2004-06-01  4:51                 ` Eli Zaretskii
2004-06-01  7:18                   ` Juanma Barranquero
2004-06-01 20:40                     ` Eli Zaretskii
2004-06-03  0:19                       ` Juanma Barranquero
2004-06-02  3:44                   ` Richard Stallman
2004-05-27 12:28         ` Kai Grossjohann
2004-05-27 23:53           ` Luc Teirlinck
2004-05-28 14:21             ` Richard Stallman
2004-05-29  1:43               ` Luc Teirlinck
2004-05-26 17:51       ` Eli Zaretskii
2004-05-26 19:39         ` David Kastrup
2004-05-27  8:14           ` Eli Zaretskii
2004-05-26 12:57 ` Henrik Enberg
2004-05-26 16:15   ` David Kastrup
2004-05-27 23:54 ` Richard Stallman
2004-05-28  8:37   ` Kim F. Storm
2004-05-28  9:52     ` Miles Bader
2004-05-29 10:33       ` Kai Grossjohann
2004-05-29  1:44     ` Richard Stallman
2004-05-29  8:28       ` Karl Eichwalder
2004-05-30 14:30         ` Richard Stallman
2004-05-30 16:50           ` Kai Grossjohann
2004-05-31 18:39             ` Richard Stallman
2004-05-29  9:46       ` Jason Rumney
2004-05-30  3:11         ` Stefan Monnier
2004-05-30  6:08           ` Eli Zaretskii
2004-05-30 14:30         ` Richard Stallman
2004-05-28  9:07   ` Eli Zaretskii
2004-05-29  1:43     ` Richard Stallman

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

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20040608013702.085E.LEKTU@mi.madritel.es \
    --to=lektu@mi.madritel.es \
    --cc=storm@cua.dk \
    /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 public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).