all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Ergus <spacibba@aol.com>
To: Eli Zaretskii <eliz@gnu.org>
Cc: emacs-devel@gnu.org
Subject: Re: Fill column indicator functionality
Date: Thu, 14 Mar 2019 04:02:24 +0100	[thread overview]
Message-ID: <20190314030224.l5zseslncw3xc5ox@Ergus> (raw)
In-Reply-To: <83bm2e35a1.fsf@gnu.org>

[-- Attachment #1: Type: text/plain, Size: 1431 bytes --]

Here is a patch with Eli's fixes and corrections:

Actually I have 3 more questions:

1) In the graphical mode the character I use now (?\u2502) does not look
like a vertical line (there is a small vertical space between them so
the line now looks like with ?|); in terminal it looks fine. What's the
proper way to change the font size or the character itself to fit the
entire row height in the graphical mode?

2) Are there any extra considerations needed to use the character
?\u2502 ? Is it needed to check (for example) if the actual fonts can
display it properly?

3) Actually there are 3 possible configuration options the column
number, the character, and the font. Should we provide some other
alternative?

The next step is to implement the R2L version of this, but I don't have
used R2L editing ever, so it may take a while.

On Wed, Mar 13, 2019 at 10:09:42PM +0200, Eli Zaretskii wrote:
>> Date: Wed, 13 Mar 2019 21:02:25 +0100
>> From: Ergus <spacibba@aol.com>
>> Cc: emacs-devel@gnu.org
>>
>> >  Lisp_Object save_object = it->object;
>> >  it->object = Qnil;
>> >
>> >before the call to PRODUCE_GLYPHS, and then restore it->object to its
>> >previous value after PRODUCE_GLYPHS.
>> >
>> I thought that append_stretch_glyph was putting the it->object to Now I
>> see it didn't.
>
>append_stretch_glyph only does that for the stretch glyph it creates,
>it doesn't change it->object.
>
>> 1E6 Thanks.
>
>My pleasure.
>

[-- Attachment #2: display-fill-column-indicator_wip.patch --]
[-- Type: text/plain, Size: 16093 bytes --]

diff --git a/lisp/cus-start.el b/lisp/cus-start.el
index baa05d0a89..3f58eac63b 100644
--- a/lisp/cus-start.el
+++ b/lisp/cus-start.el
@@ -648,6 +648,11 @@ since it could result in memory overflow and make Emacs crash."
                                   (const :tag "Count lines from beginning of narrowed region"
                                          :value nil))
                                  "26.1")
+
+             (display-fill-column-indicator-column display-fill-column-indicator
+                                 integer "27.1")
+             (display-fill-column-indicator-character display-fill-column-indicator
+                                 character "27.1")
 	     ;; xfaces.c
 	     (scalable-fonts-allowed display boolean "22.1")
 	     ;; xfns.c
diff --git a/lisp/display-fill-column-indicator.el b/lisp/display-fill-column-indicator.el
new file mode 100644
index 0000000000..846466a2c3
--- /dev/null
+++ b/lisp/display-fill-column-indicator.el
@@ -0,0 +1,74 @@
+;;; display-fill-column-indicator.el --- interface for display-fill-column-indicator -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017-2019 Free Software Foundation, Inc.
+
+;; Maintainer: emacs-devel@gnu.org
+;; Keywords: convenience
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs.  If not, see <https://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; Provides a minor mode interface for `display-fill-column-indicator'.
+;;
+;; Toggle display of line numbers with M-x
+;; display-fill-column-indicator-mode.  To enable line numbering in
+;; all buffers, use M-x global-display-fill-column-indicator-mode.  To
+;; change the default line column
+
+
+;; NOTE: Customization variables for `display-fill-column-indicator'
+;; itself are defined in cus-start.el.
+
+;;; Code:
+
+(defgroup display-fill-column-indicator nil
+  "Display line numbers in the buffer."
+  :group 'convenience
+  :group 'display)
+
+
+;;;###autoload
+(define-minor-mode display-fill-column-indicator-mode
+  "Toggle display fill column indicator.
+This uses `display-fill-column-indicator' internally.
+
+To change the position of the line displayed by default,
+customize `display-fill-column-indicator-column' you can change the
+character for the line setting `display-fill-column-indicator-character'."
+  :lighter nil
+  (if display-fill-column-indicator-mode
+      (progn
+        (setq display-fill-column-indicator t)
+        (unless display-fill-column-indicator-column
+          (setq display-fill-column-indicator-column fill-column))
+        (unless display-fill-column-indicator-character
+          (setq display-fill-column-indicator-character ?\u2502)))
+    (setq display-fill-column-indicator nil)))
+
+(defun display-fill-column-indicator--turn-on ()
+  "Turn on `display-fill-column-indicator-mode'."
+  (unless (or (minibufferp)
+              (and (daemonp) (null (frame-parameter nil 'client))))
+    (display-fill-column-indicator-mode)))
+
+;;;###autoload
+(define-globalized-minor-mode global-display-fill-column-indicator-mode
+  display-fill-column-indicator-mode display-fill-column-indicator--turn-on)
+
+(provide 'display-fill-column-indicator)
+
+;;; display-fill-column-indicator.el ends here
diff --git a/lisp/faces.el b/lisp/faces.el
index ab6c384c80..153e6a208f 100644
--- a/lisp/faces.el
+++ b/lisp/faces.el
@@ -2502,6 +2502,20 @@ unwanted effects."
   :group 'basic-faces
   :group 'display-line-numbers)
 
+;; Definition stolen from linum.el.
+(defface fill-column
+  '((t :inherit (shadow default)))
+  "Face for displaying fill column indicator line.
+This face is used when `display-fill-column-indicator-mode' is
+non-nil.
+
+If you customize the font of this face, make sure it is a
+monospaced font, otherwise the line's characters will not line
+up horizontally."
+  :version "27.1"
+  :group 'basic-faces
+  :group 'display-fill-column-indicator)
+
 (defface escape-glyph
   '((((background dark)) :foreground "cyan")
     ;; See the comment in minibuffer-prompt for
diff --git a/lisp/frame.el b/lisp/frame.el
index dd1d5b030f..03c4d0761b 100644
--- a/lisp/frame.el
+++ b/lisp/frame.el
@@ -2663,6 +2663,9 @@ See also `toggle-frame-maximized'."
         display-line-numbers-width
         display-line-numbers-current-absolute
         display-line-numbers-widen
+        display-fill-column-indicator
+        display-fill-column-indicator-column
+        display-fill-column-indicator-character
         bidi-paragraph-direction
         bidi-display-reordering))
 
diff --git a/lisp/ldefs-boot.el b/lisp/ldefs-boot.el
index 0e8e5f699b..1227ceb377 100644
--- a/lisp/ldefs-boot.el
+++ b/lisp/ldefs-boot.el
@@ -7734,7 +7734,44 @@ See `display-line-numbers-mode' for more information on Display-Line-Numbers mod
 
 \(fn &optional ARG)" t nil)
 
-(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "display-line-numbers" '("display-line-numbers-")))
+(if (fboundp 'register-definition-prefixes)
+    (register-definition-prefixes "display-line-numbers" '("display-line-numbers-")))
+
+;;;***
+\f
+;;;### (autoloads nil "display-fill-column-indicator" "display-fill-column-indicator.el"
+;;;;;;  (0 0 0 0))
+;;; Generated autoloads from display-fill-column-indicator.el
+
+(autoload 'display-fill-column-indicator-mode "display-fill-column-indicator" "\
+Toggle display fill column indicator.
+This uses `display-fill-column-indicator' internally.
+
+To change the position of the line displayed by default,
+customize `display-fill-column-indicator-column'.
+
+\(fn &optional ARG)" t nil)
+
+(defvar global-display-fill-column-indicator-mode nil "\
+Non-nil if Global Display-fill-column-indicator mode is enabled.
+See the `global-display-fill-column-indicator-mode' command
+for a description of this minor mode.")
+
+(custom-autoload 'global-display-fill-column-indicator-mode
+                 "display-fill-column-indicator" nil)
+
+(autoload 'global-display-fill-column-indicator-mode
+  "display-fill-column-indicator" "\
+Toggle display fill column indicator.
+This uses `display-fill-column-indicator' internally.
+
+To change the position of the line displayed by default,
+customize `display-fill-column-indicator-column'.
+
+\(fn &optional ARG)" t nil)
+
+(if (fboundp 'register-definition-prefixes)
+    (register-definition-prefixes "display-fill-column-indicator" '("display-fill-column-indicator-")))
 
 ;;;***
 \f
diff --git a/src/xdisp.c b/src/xdisp.c
index 6d30afda6d..8ac4be8dc7 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -20135,15 +20135,41 @@ append_space_for_newline (struct it *it, bool default_face_p)
 	  it->what = IT_CHARACTER;
 	  memset (&it->position, 0, sizeof it->position);
 	  it->object = Qnil;
-	  it->c = it->char_to_display = ' ';
 	  it->len = 1;
 
+	  int local_default_face_id = lookup_basic_face (it->w, it->f, DEFAULT_FACE_ID);
+	  struct face* default_face =
+	    FACE_FROM_ID_OR_NULL (it->f, local_default_face_id);
+
+	  /* Corner case for when display-fill-column-indicator-mode
+	     is active and the extra character should be added in the
+	     same place than the line */
+	  if (!NILP (Vdisplay_fill_column_indicator)
+	      && FIXNATP (Vdisplay_fill_column_indicator_column)
+	      && FIXNATP (Vdisplay_fill_column_indicator_character))
+	    {
+	       struct font *font = default_face->font ? default_face->font : FRAME_FONT (it->f);
+	       const int char_width = font->average_width ? font->average_width : font->space_width;
+	       const int fill_column = XFIXNAT (Vdisplay_fill_column_indicator_column);
+	       const int column_x = char_width * fill_column + it->lnum_pixel_width;
+
+	       if (it->current_x == column_x)
+	         {
+	           it->c = it->char_to_display = XFIXNAT(Vdisplay_fill_column_indicator_character);
+	           it->face_id = merge_faces (it->w, Qfill_column, 0, DEFAULT_FACE_ID);
+	           face = FACE_FROM_ID(it->f, it->face_id);
+	           goto produce_glyphs;
+	         }
+	    }
+
+	  it->c = it->char_to_display = ' ';
 	  /* If the default face was remapped, be sure to use the
 	     remapped face for the appended newline.  */
 	  if (default_face_p)
-	    it->face_id = lookup_basic_face (it->w, it->f, DEFAULT_FACE_ID);
+	    it->face_id = local_default_face_id;
 	  else if (it->face_before_selective_p)
 	    it->face_id = it->saved_face_id;
+
 	  face = FACE_FROM_ID (it->f, it->face_id);
 	  it->face_id = FACE_FOR_CHAR (it->f, face, 0, -1, Qnil);
 	  /* In R2L rows, we will prepend a stretch glyph that will
@@ -20152,11 +20178,12 @@ append_space_for_newline (struct it *it, bool default_face_p)
 	     set.  */
 	  if (it->glyph_row->reversed_p
 	      /* But if the appended newline glyph goes all the way to
-		 the end of the row, there will be no stretch glyph,
-		 so leave the box flag set.  */
+	         the end of the row, there will be no stretch glyph,
+	         so leave the box flag set.  */
 	      && saved_x + FRAME_COLUMN_WIDTH (it->f) < it->last_visible_x)
-	    it->end_of_box_run_p = false;
+		  it->end_of_box_run_p = false;
 
+	produce_glyphs:
 	  PRODUCE_GLYPHS (it);
 
 #ifdef HAVE_WINDOW_SYSTEM
@@ -20305,7 +20332,8 @@ extend_face_to_end_of_line (struct it *it)
 #ifdef HAVE_WINDOW_SYSTEM
       && !face->stipple
 #endif
-      && !it->glyph_row->reversed_p)
+      && !it->glyph_row->reversed_p
+      && NILP (Vdisplay_fill_column_indicator))
     return;
 
   /* Set the glyph row flag indicating that the face of the last glyph
@@ -20359,6 +20387,55 @@ extend_face_to_end_of_line (struct it *it)
 	    }
 	}
 #ifdef HAVE_WINDOW_SYSTEM
+
+      if (!NILP (Vdisplay_fill_column_indicator)
+          && FIXNATP (Vdisplay_fill_column_indicator_column)
+          && FIXNATP (Vdisplay_fill_column_indicator_character))
+        {
+
+	  struct font *font = default_face->font ? default_face->font : FRAME_FONT (f);
+	  const int char_width = font->average_width ? font->average_width : font->space_width;
+
+	  const int fill_column = XFIXNAT (Vdisplay_fill_column_indicator_column);
+
+	  const int column_x = char_width * fill_column + it->lnum_pixel_width;
+
+	  if ((it->current_x < column_x)
+	      && (column_x < it->last_visible_x))
+	    {
+	      const char saved_char = it->char_to_display;
+	      const struct text_pos saved_pos = it->position;
+	      const bool saved_avoid_cursor = it->avoid_cursor_p;
+	      const int saved_face_id = it->face_id;
+	      const bool saved_box_start = it->start_of_box_run_p;
+	      Lisp_Object save_object = it->object;
+
+	      /* The stretch width needs to considet the latter added glyph */
+	      const int stretch_width = column_x - it->current_x - char_width;
+
+	      int stretch_ascent = (((it->ascent + it->descent)
+		    * FONT_BASE (font)) / FONT_HEIGHT (font));
+
+	      it->char_to_display = XFIXNAT(Vdisplay_fill_column_indicator_character);
+	      memset (&it->position, 0, sizeof it->position);
+	      it->avoid_cursor_p = true;
+	      it->face_id = merge_faces (it->w, Qfill_column, 0, DEFAULT_FACE_ID);
+	      it->start_of_box_run_p = false;
+	      it->object = Qnil;
+
+	      append_stretch_glyph (it, Qnil, stretch_width,
+	                            it->ascent + it->descent, stretch_ascent);
+
+	      PRODUCE_GLYPHS (it);
+
+	      it->position = saved_pos;
+	      it->avoid_cursor_p = saved_avoid_cursor;
+	      it->face_id = saved_face_id;
+	      it->start_of_box_run_p = saved_box_start;
+	      it->char_to_display = saved_char;
+	      it->object = save_object;
+	    }
+        }
       if (it->glyph_row->reversed_p)
 	{
 	  /* Prepend a stretch glyph to the row, such that the
@@ -20478,10 +20555,34 @@ extend_face_to_end_of_line (struct it *it)
 	it->face_id = default_face->id;
       else
 	it->face_id = face->id;
-      PRODUCE_GLYPHS (it);
 
-      while (it->current_x <= it->last_visible_x)
-	PRODUCE_GLYPHS (it);
+      /* Display fill-column-line if mode is active */
+      if (!NILP (Vdisplay_fill_column_indicator))
+	{
+	  const int fill_column_indicator_line =
+	    XFIXNAT (Vdisplay_fill_column_indicator_column) + it->lnum_pixel_width;
+	  do
+	    {
+	      if (it->current_x == fill_column_indicator_line)
+	        {
+		  const int saved_face = it->face_id;
+		  it->face_id = merge_faces (it->w, Qfill_column, 0, DEFAULT_FACE_ID);
+		  it->c = it->char_to_display = XFIXNAT(Vdisplay_fill_column_indicator_character);
+		  PRODUCE_GLYPHS (it);
+		  it->face_id = saved_face;
+		  it->c = it->char_to_display = ' ';
+	        }
+	      else
+		PRODUCE_GLYPHS (it);
+	    } while (it->current_x < it->last_visible_x);
+	}
+      else
+	{
+          do
+	    {
+	      PRODUCE_GLYPHS (it);
+            } while (it->current_x < it->last_visible_x);
+        }
 
       if (WINDOW_RIGHT_MARGIN_WIDTH (it->w) > 0
 	  && (it->glyph_row->used[RIGHT_MARGIN_AREA]
@@ -20571,14 +20672,16 @@ highlight_trailing_whitespace (struct it *it)
       if (!row->reversed_p)
 	{
 	  while (glyph >= start
-		 && glyph->type == CHAR_GLYPH
+	         && (glyph->type == CHAR_GLYPH
+	             || glyph->type == STRETCH_GLYPH)
 		 && NILP (glyph->object))
 	    --glyph;
 	}
       else
 	{
 	  while (glyph <= start
-		 && glyph->type == CHAR_GLYPH
+		 && (glyph->type == CHAR_GLYPH
+	             || glyph->type == STRETCH_GLYPH)
 		 && NILP (glyph->object))
 	    ++glyph;
 	}
@@ -32645,6 +32748,9 @@ be let-bound around code that needs to disable messages temporarily. */);
   /* Name of a text property which disables line-number display.  */
   DEFSYM (Qdisplay_line_numbers_disable, "display-line-numbers-disable");
 
+  /* Names of the faces used to display fill column indicator character. */
+  DEFSYM (Qfill_column, "fill-column");
+
   /* Name and number of the face used to highlight escape glyphs.  */
   DEFSYM (Qescape_glyph, "escape-glyph");
 
@@ -33213,6 +33319,27 @@ either `relative' or `visual'.  */);
   DEFSYM (Qdisplay_line_numbers_widen, "display-line-numbers-widen");
   Fmake_variable_buffer_local (Qdisplay_line_numbers_widen);
 
+  DEFVAR_LISP ("display-fill-column-indicator", Vdisplay_fill_column_indicator,
+    doc: /* Non-nil means display the fill column indicator.  */);
+  Vdisplay_fill_column_indicator = Qnil;
+  DEFSYM (Qdisplay_fill_column_indicator, "display-fill-column-indicator");
+  Fmake_variable_buffer_local (Qdisplay_fill_column_indicator);
+
+  DEFVAR_LISP ("display-fill-column-indicator-column", Vdisplay_fill_column_indicator_column,
+    doc: /* Column to draw the indicator when `display-fill-column-indicator' is non-nil.
+The default value is the variable `fill-column' if not other value is given. */);
+  Vdisplay_fill_column_indicator_column = Qnil;
+  DEFSYM (Qdisplay_fill_column_indicator_column, "display-fill-column-indicator-column");
+  Fmake_variable_buffer_local (Qdisplay_fill_column_indicator_column);
+
+  DEFVAR_LISP ("display-fill-column-indicator-character", Vdisplay_fill_column_indicator_character,
+    doc: /* Character to draw the indicator when `display-fill-column-indicator' is non-nil.
+The default is ?\u2502 the but a good alternative is (ascii 124) if
+yours font doesn't support unicode characters.  */);
+  Vdisplay_fill_column_indicator_character = Qnil;
+  DEFSYM (Qdisplay_fill_column_indicator_character, "display-fill-column-indicator-character");
+  Fmake_variable_buffer_local (Qdisplay_fill_column_indicator_character);
+
   DEFVAR_BOOL ("inhibit-eval-during-redisplay", inhibit_eval_during_redisplay,
     doc: /* Non-nil means don't eval Lisp during redisplay.  */);
   inhibit_eval_during_redisplay = false;

  reply	other threads:[~2019-03-14  3:02 UTC|newest]

Thread overview: 196+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-02-05 10:53 Fill column indicator functionality Ergus
2019-02-05 16:41 ` Eli Zaretskii
2019-02-05 18:47   ` Ergus
2019-02-05 19:56     ` Drew Adams
2019-02-05 23:32       ` Ergus
2019-02-06 16:08     ` Eli Zaretskii
2019-02-06 20:48       ` John Yates
2019-02-06 22:25         ` Ergus
2019-02-07  1:41           ` Basil L. Contovounesios
2019-02-07 14:31             ` Eli Zaretskii
2019-02-10 22:04               ` Ergus
2019-02-11 15:55                 ` Eli Zaretskii
2019-02-11 16:56                   ` Jimmy Aguilar Mena
2019-02-11 17:13                     ` Eli Zaretskii
2019-03-08 18:57                       ` Ergus
2019-03-08 20:06                         ` Eli Zaretskii
2019-03-09 13:22                           ` Ergus
2019-03-09 14:10                             ` Eli Zaretskii
2019-03-11 10:48                               ` Ergus
2019-03-11 15:30                                 ` Eli Zaretskii
2019-03-11 19:58                                   ` Andy Moreton
2019-03-11 20:24                                     ` Eli Zaretskii
2019-03-12 15:29                                   ` Ergus
2019-03-12 16:19                                     ` Eli Zaretskii
2019-03-12 19:20                                       ` Ergus
2019-03-13 16:19                                         ` Eli Zaretskii
2019-03-13 20:02                                           ` Ergus
2019-03-13 20:09                                             ` Eli Zaretskii
2019-03-14  3:02                                               ` Ergus [this message]
2019-03-14  6:40                                                 ` Eli Zaretskii
2019-03-14 16:51                                                   ` Ergus
2019-03-14 17:59                                                     ` Andreas Schwab
2019-03-14 18:22                                                     ` Eli Zaretskii
     [not found]                                                       ` <20190314211313.giyz7p6jtmquabea@Ergus>
     [not found]                                                         ` <83bm2c1smi.fsf@gnu.org>
2019-03-15 20:56                                                           ` Ergus
2019-03-15 22:52                                                             ` Óscar Fuentes
2019-03-15 23:22                                                               ` Ergus
2019-03-15 23:47                                                                 ` Óscar Fuentes
2019-03-16  6:50                                                                   ` Ergus
2019-03-16  7:48                                                                 ` Eli Zaretskii
2019-03-16  7:42                                                               ` Eli Zaretskii
2019-03-16 12:26                                                             ` Eli Zaretskii
2019-03-17 17:28                                                               ` Alp Aker
2019-03-17 18:03                                                                 ` Ergus
2019-03-17 18:40                                                                 ` Eli Zaretskii
2019-03-16  9:36                                                           ` Ergus
2019-03-16 10:18                                                             ` Question about documented functions Ergus
2019-03-16 12:21                                                               ` Eli Zaretskii
2019-03-16 13:53                                                                 ` Ergus
2019-03-16 14:05                                                                   ` Eli Zaretskii
2019-03-16 12:40                                                             ` Fill column indicator functionality Eli Zaretskii
2019-03-14 21:28                                                     ` Óscar Fuentes
2019-03-14 23:54                                                       ` Ergus
2019-03-14 18:58                                                   ` Clément Pit-Claudel
2019-03-15  7:30                                                     ` Eli Zaretskii
2019-03-15 12:44                                                       ` Clément Pit-Claudel
2019-03-15 14:07                                                         ` Óscar Fuentes
2019-03-15 14:54                                                           ` Clément Pit-Claudel
2019-03-15 15:15                                                             ` Óscar Fuentes
2019-03-15 15:30                                                               ` Clément Pit-Claudel
2019-03-15 14:12                                                         ` Eli Zaretskii
2019-03-15 14:35                                                           ` Clément Pit-Claudel
2019-03-15 16:13                                                             ` Eli Zaretskii
2019-03-15 18:26                                                               ` Clément Pit-Claudel
2019-03-15 19:14                                                                 ` Eli Zaretskii
2019-03-15 15:13                                                         ` Stefan Monnier
2019-03-15 13:00                                                       ` Alp Aker
2019-03-15 13:30                                                         ` Mattias Engdegård
2019-03-15 14:24                                                           ` Eli Zaretskii
2019-03-15 15:05                                                             ` Mattias Engdegård
2019-03-15 15:54                                                               ` Eli Zaretskii
2019-03-15 15:09                                                             ` Stefan Monnier
2019-03-15 15:56                                                               ` Eli Zaretskii
2019-03-15 13:54                                                         ` Eli Zaretskii
2019-03-15 14:19                                                           ` Alp Aker
2019-03-15 14:58                                                             ` Clément Pit-Claudel
2019-03-16 15:07                                                               ` Johan Bockgård
2019-03-16 15:22                                                                 ` Clément Pit-Claudel
2019-03-15 15:43                                                             ` Eli Zaretskii
2019-03-15 17:24                                                               ` Óscar Fuentes
2019-03-15 18:28                                                                 ` Clément Pit-Claudel
2019-03-15 14:35                                                           ` Alp Aker
2019-03-09 18:02                             ` John Yates
2019-03-09 18:23                               ` Eli Zaretskii
  -- strict thread matches above, loose matches on Subject: below --
2019-03-15 16:59 Drew Adams
2019-03-15 18:21 ` Eli Zaretskii
2019-03-15 19:18   ` Drew Adams
2019-03-15 19:30     ` Eli Zaretskii
2019-03-15 19:51 ` Ergus
2019-03-18  1:03 Ergus
2019-03-18  3:35 ` Eli Zaretskii
2019-03-18 11:42   ` Ergus
2019-03-18 17:10     ` Eli Zaretskii
2019-04-02 12:42       ` Ergus
2019-04-02 13:03         ` Óscar Fuentes
2019-04-02 13:25           ` Óscar Fuentes
2019-04-02 13:37           ` Ergus
2019-04-02 15:07             ` Eli Zaretskii
2019-04-02 15:35               ` Ergus
2019-04-02 15:44                 ` Eli Zaretskii
2019-04-02 16:36                   ` Ergus
2019-04-02 16:48                     ` Eli Zaretskii
2019-04-02 17:00                       ` Ergus
2019-04-02 17:26                         ` Eli Zaretskii
2019-04-02 17:48                           ` Ergus
2019-04-02 18:28                             ` Eli Zaretskii
2019-04-02 21:22                               ` Ergus
2019-04-03  5:20                                 ` Eli Zaretskii
2019-04-03 10:22                                   ` Ergus
2019-04-03 11:11                                     ` Eli Zaretskii
2019-04-05  9:10                                       ` Robert Pluim
2019-04-05 10:36                                         ` Ergus
2019-04-05 11:47                                           ` Eli Zaretskii
2019-04-05 12:13                                             ` Robert Pluim
2019-04-05 12:46                                               ` Eli Zaretskii
2019-04-05 14:09                                                 ` Robert Pluim
2019-04-05 14:13                                                   ` Eli Zaretskii
2019-04-05 14:38                                                     ` Eli Zaretskii
2019-04-05 15:04                                             ` Ergus
2019-04-05 15:17                                               ` Eli Zaretskii
2019-04-05 17:30                                                 ` Ergus
2019-04-05 19:05                                                   ` Eli Zaretskii
2019-04-05 20:03                                                     ` Ergus
2019-04-05 21:10                                                       ` Óscar Fuentes
2019-04-05 22:01                                                         ` Ergus
2019-04-05 22:20                                                           ` Óscar Fuentes
2019-04-06  6:49                                                         ` Eli Zaretskii
2019-04-06 11:06                                                           ` Ergus
2019-04-06 12:53                                                             ` Eli Zaretskii
2019-04-06  6:51                                                       ` Eli Zaretskii
2019-04-06 13:21                                                         ` Eli Zaretskii
2019-04-06 15:20                                                           ` Ergus
2019-04-06 16:00                                                             ` Eli Zaretskii
2019-04-06 18:59                                                               ` Ergus
2019-04-06 19:07                                                                 ` Eli Zaretskii
2019-04-06 19:51                                                                   ` Ergus
2019-04-07 18:19                                                                   ` Ergus
2019-04-07 18:31                                                                     ` Eli Zaretskii
2019-04-07 18:35                                                                       ` Ergus
2019-04-07 18:38                                                                       ` Ergus
2019-04-07 19:02                                                                         ` Eli Zaretskii
2019-04-07 20:05                                                                           ` Ergus
2019-04-08  2:27                                                                             ` Eli Zaretskii
2019-04-08  8:51                                                                               ` Ergus
2019-04-08 14:57                                                                                 ` Eli Zaretskii
2019-04-08 16:04                                                                                   ` Ergus
2019-04-12 13:46                                                                                   ` Ergus
2019-04-12 13:54                                                                                     ` Eli Zaretskii
2019-05-01 11:08                                                                                       ` Ergus
2019-05-03 13:19                                                                                         ` Eli Zaretskii
2019-05-03 14:14                                                                                           ` Basil L. Contovounesios
2019-05-03 15:10                                                                                             ` Eli Zaretskii
2019-05-03 15:25                                                                                               ` Basil L. Contovounesios
2019-05-03 16:21                                                                                                 ` Eli Zaretskii
2019-05-03 16:18                                                                                             ` Ergus
2019-05-03 17:49                                                                                           ` Ergus
2019-05-03 18:32                                                                                             ` Eli Zaretskii
2019-05-03 18:39                                                                                             ` Eli Zaretskii
2019-05-03 21:05                                                                                               ` Ergus
2019-05-04  6:54                                                                                                 ` Eli Zaretskii
2019-05-04  9:37                                                                                                   ` Ergus
2019-05-04 11:04                                                                                                     ` Eli Zaretskii
2019-05-04 11:29                                                                                                       ` Óscar Fuentes
2019-05-04 15:44                                                                                                         ` Alp Aker
2019-05-04 15:59                                                                                                           ` Eli Zaretskii
2019-05-04 16:32                                                                                                             ` Eli Zaretskii
2019-05-04 16:32                                                                                                             ` Alp Aker
2019-05-04 16:36                                                                                                               ` Eli Zaretskii
2019-05-04 16:38                                                                                                                 ` Alp Aker
2019-05-04 16:42                                                                                                                   ` Eli Zaretskii
2019-05-05 14:40                                                                                                                     ` Ergus
2019-05-04 16:42                                                                                                             ` Ergus
2019-05-03 14:34                                                                                         ` Basil L. Contovounesios
2019-05-03 15:31                                                                                         ` Alp Aker
2019-04-07 20:51                                                                           ` Ergus
2019-04-07 21:23                                                                             ` Stefan Monnier
2019-04-07 21:37                                                                               ` Ergus
2019-04-07 21:39                                                                                 ` Stefan Monnier
2019-04-05 13:06                                           ` Eli Zaretskii
2019-04-05 15:28                                             ` Eli Zaretskii
2019-04-05 18:11                                               ` Ergus
2019-04-05 19:03                                                 ` Eli Zaretskii
2019-04-05 21:15                                                   ` Ergus
2019-04-06 10:13                                                     ` Robert Pluim
2019-04-06 12:54                                                       ` Eli Zaretskii
2019-04-05 11:44                                         ` Eli Zaretskii
2019-04-05 12:09                                           ` Robert Pluim
2019-04-05 12:44                                             ` Eli Zaretskii
2019-04-05 13:21                                               ` Eli Zaretskii
2019-04-05 13:47                                                 ` Robert Pluim
2019-04-05 14:08                                               ` Robert Pluim
2019-04-03 12:13                                     ` Stefan Monnier
2019-04-02 23:11                       ` Dmitry Gutov
2019-04-02 17:01                     ` Robert Pluim
2019-04-02 17:26                       ` Ergus
2019-04-02 17:50                         ` Robert Pluim
2019-05-04 22:51 Keith David Bershatsky

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=20190314030224.l5zseslncw3xc5ox@Ergus \
    --to=spacibba@aol.com \
    --cc=eliz@gnu.org \
    --cc=emacs-devel@gnu.org \
    /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.