all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: "David De La Harpe Golden" <david.delaharpe.golden@gmail.com>
To: rms@gnu.org, emacs-devel@gnu.org
Subject: Re: Improving X selection?
Date: Fri, 1 Feb 2008 19:15:50 +0000	[thread overview]
Message-ID: <8e24944a0802011115h77423fd1p2eae15a1e46bca1a@mail.gmail.com> (raw)
In-Reply-To: <8e24944a0801281659sa5a9115rf4533184413a8b20@mail.gmail.com>

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

Attached patch introduces an interprogram-highlight-function and
extends values of x-select-enable-clipboard / x-select-enable-primary
in an (I think) useful manner*.   The descriptions of the
customizations may be overly verbose.

Another mail to follow about making select-active-regions work.

[This is all still separate to but not incompatible with the idea of
having interprogram-paste-function be capable of returning more than
one value.]

* Note that since switching to trunk following unicode2 merge,
w32-vars.el is now being loaded on my linux system, not clear on why
(multi-tty?) -  and it also contained an alternate
x-select-enable-clipboard definition , which strikes me as even
stranger, but I don't know about w32 (don't even have microsoft
windows) - the patch just comments it out, not clear on what the right
thing to do is, or why w32 is having anything to do with x x-select-*
in the first place (surely it has its own w32-select-*  for its
interprogram-cut/paste functions?)

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: enhanced-x-selections.diff --]
[-- Type: text/x-diff; name=enhanced-x-selections.diff, Size: 19205 bytes --]

Index: lisp/simple.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/simple.el,v
retrieving revision 1.899
diff -U 8 -r1.899 simple.el
--- lisp/simple.el	1 Feb 2008 16:01:05 -0000	1.899
+++ lisp/simple.el	1 Feb 2008 19:09:20 -0000
@@ -2562,16 +2562,34 @@
 programs.
 
 The function takes one or two arguments.
 The first argument, TEXT, is a string containing
 the text which should be made available.
 The second, optional, argument PUSH, has the same meaning as the
 similar argument to `x-set-cut-buffer', which see.")
 
+(defvar interprogram-highlight-function nil
+  "Function to call to make an active region available to other progams.
+
+In addition to clibpoard cutting and pasting (see `interprogram-cut-function'
+and `interprogram-paste-function'), some window systems (okay, one
+window system, X11) provide a mechanism whereby text merely highlighted
+in one application may be immediately inserted into another. 
+This variable holds a function that Emacs calls whenever
+text is notionally highlighted in emacs - i.e. there is an active
+region (see `transient-mark-mode').  The function will only be 
+called when `select-active-regions' is also set.
+
+The function takes one or two arguments,
+The first argument, TEXT, is a string containing
+the text that should be made available. 
+The second, optional, argument PUSH, has the same meaning as the
+similar argument to `x-set-cut-buffer', which see.")
+
 (defvar interprogram-paste-function nil
   "Function to call to get text cut from other programs.
 
 Most window systems provide some sort of facility for cutting and
 pasting text between the windows of different programs.
 This variable holds a function that Emacs calls to obtain
 text that other programs have provided for pasting.
 
@@ -3346,18 +3364,19 @@
 
    (let ((beg (point))) (forward-line 1) (delete-region beg (point)))."
 
   (if pos
       (progn
 	(setq mark-active t)
 	(run-hooks 'activate-mark-hook)
 	(and select-active-regions
-	     (x-set-selection
-	      nil (buffer-substring (region-beginning) (region-end))))
+	     interprogram-highlight-function
+	     (funcall interprogram-highlight-function
+		      (buffer-substring (region-beginning) (region-end))))
 	(set-marker (mark-marker) pos (current-buffer)))
     ;; Normally we never clear mark-active except in Transient Mark mode.
     ;; But when we actually clear out the mark value too,
     ;; we must clear mark-active in any mode.
     (setq mark-active nil)
     (run-hooks 'deactivate-mark-hook)
     (set-marker (mark-marker) nil)))
 
Index: lisp/w32-vars.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/w32-vars.el,v
retrieving revision 1.19
diff -U 8 -r1.19 w32-vars.el
--- lisp/w32-vars.el	8 Jan 2008 20:44:48 -0000	1.19
+++ lisp/w32-vars.el	1 Feb 2008 19:09:21 -0000
@@ -144,18 +144,21 @@
 	      (repeat :inline t
 	       (choice :tag ""
 		(const :tag "Separator" (""))
 		(list :tag "Font Entry"
 		      (string :tag "Menu text")
 		      (string :tag "Font")))))))
     :group 'w32)
 
-(defcustom x-select-enable-clipboard t
-  "*Non-nil means cutting and pasting uses the clipboard.
-This is in addition to the primary selection."
-  :type 'boolean
-  :group 'killing)
+;; Uh.  Does this belong here? It's also in 
+;; term/x-win.el and now has an extended definition there
+;;
+;; (defcustom x-select-enable-clipboard t
+;;   "*Non-nil means cutting and pasting uses the clipboard.
+;; This is in addition to the primary selection."
+;;   :type 'boolean
+;;  :group 'killing)
 
 (provide 'w32-vars)
 
 ;;; arch-tag: ee2394fb-9db7-4c15-a8f0-66b47f4a2bb1
 ;;; w32-vars.el ends here
Index: lisp/term/x-win.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/term/x-win.el,v
retrieving revision 1.222
diff -U 8 -r1.222 x-win.el
--- lisp/term/x-win.el	1 Feb 2008 16:01:25 -0000	1.222
+++ lisp/term/x-win.el	1 Feb 2008 19:09:24 -0000
@@ -2140,55 +2140,179 @@
 This is the actual text stored in the X cut buffer.")
 (defvar x-last-cut-buffer-coding 'iso-latin-1
   "The coding we last used to encode/decode the text from the X cut buffer")
 
 (defvar x-cut-buffer-max 20000 ; Note this value is overridden below.
   "Max number of characters to put in the cut buffer.
 It is said that overlarge strings are slow to put into the cut buffer.")
 
-(defcustom x-select-enable-clipboard nil
-  "Non-nil means cutting and pasting uses the clipboard.
-This is in addition to, but in preference to, the primary selection."
-  :type 'boolean
-  :group 'killing)
-
-(defcustom x-select-enable-primary t
-  "Non-nil means cutting and pasting uses the primary selection."
-  :type 'boolean
-  :group 'killing)
+(defcustom x-select-enable-clipboard '(:cut :paste)
+"What cut/copy/paste/highlight ops should involve CLIPBOARD.
+
+In X11, CLIPBOARD is normally associated with 'clipboard cut/copy/paste'
+style data interchange.
+
+Cut/Copy: Set if Killing (e.g. C-w/M-w) in Emacs should place text in the 
+CLIPBOARD X11 selection, i.e. if you want to paste killed text into other
+programs on your desktop with the other programs' clipboard paste 
+function (typically something like C-v in those programs)
+
+Paste: Set if Yanking (e.g. C-y) in Emacs should check the clipboard 
+for text placed there with other programs' clipboard cut or copy 
+functions (typically something like C-x or C-c in those programs)
+
+Highlight:  Set if merely highlighting text (setting the active region) 
+in Emacs should immediately put it in the clipboard, if 
+`select-active-regions' is also set.  This is unusual for recent X11 
+applications, typically highlighted text is placed in the PRIMARY X11 
+selection, for 'highlight/middlebutton' style X11 transfer. 
+See `x-select-enable-primary'.
+
+It is recommended to unset `mouse-drag-copy-region' and
+set `transient-mark-mode' if Highlight is set here."
+
+:type '(choice (const :tag "None" nil)
+	       (const :tag "All" t)
+	       (set :tag "Choose" (const :tag "Cut/Copy" :cut)
+		    (const :tag "Paste" :paste)
+		    (const :tag "Highlight" :highlight)))
+:group 'killing)
+
+(defcustom x-select-enable-primary '(:highlight)
+"What cut/copy/paste/highlight ops should involve PRIMARY.
+
+In X11, PRIMARY is associated with 'highlight/middlebutton-insert' style
+data interchange.
+
+Cut/Copy: Set if Killing (e.g. C-w/M-w) in emacs should place text in the
+PRIMARY X11 selection. i.e. if you want to paste killed text into other 
+programs on your desktop with the other programs' primary insertion 
+function (typically a middle-button-click).  This is not usual for X11 
+applications, typically Cut/Copied text is placed in the CLIPBOARD X11 
+selection, for clipboard-style X11 transfer. 
+See `x-select-enable-clipboard'
+
+Paste: Set if Yanking (e.g. C-y) in emacs should check the primary selection
+for text placed there with other programs' primary selection 
+functions (typically highlighting the text in other X11 programs makes it 
+available as the primary selection).  It is not usual in X11 to do so, however 
+it  may be convenient to do so in emacs, as it reduces mousing, allowing easy 
+keyboard insertion of the primary selection.  Note that if both 
+`x-select-enable-clipboard' and this have Paste set,  the clipboard 
+currently takes precendence when yanking.
+
+Highlight:  Set if merely highlighting text (an active region) in emacs should 
+immediately put it in the primary selection, if `select-active-regions' is
+set. This is usual for recent X11 programs, and allows you to insert the text 
+into the other program with their primary insertion function (typically
+middle-button-click).
+
+It is recommended to unset `mouse-drag-copy-region' and
+set `transient-mark-mode' if Highlight is set here."
+
+:type '(choice (const :tag "None" nil)
+	       (const :tag "All" t)
+	       (set :tag "Choose" (const :tag "Cut/Copy" :cut)
+		    (const :tag "Paste" :paste)
+		    (const :tag "Highlight" :highlight)))
+:group 'killing)
+
+
+(defcustom x-select-enable-cutbuffer nil
+  "What cut/copy/paste/highlight ops shold involve legacy Cut Buffer 0.   
+
+In X, cut buffers have long been superseded by clipboard and primary
+selections.  However, some old X programs use them.  If you
+need to exchange data between emacs and such programs via
+X cut buffers, you may want to set this to a non-nil value.
+
+Cut/Copy:  Set if Killing (e.g. C-w/M-w) in emacs should
+place text into X Cut Buffer 0
+
+Paste: Set if Yanking (e.g. C-y) in Emacs should check
+X Cut Buffer 0 for text.
+
+Highlight: Set if merely highlighting text (an active region) 
+in emacs should immediately put it in X Cut Buffer 0, if 
+`select-active-regions' is also set.
+
+It is recommended to unset `mouse-drag-copy-region' and
+set `transient-mark-mode' if Highlight is set here."
+
+:type '(choice (const :tag "None" nil)
+	       (const :tag "All" t)
+	       (set :tag "Choose" (const :tag "Cut/Copy" :cut)
+		    (const :tag "Paste" :paste)
+		    (const :tag "Highlight" :highlight)))
+:group 'killing)
+ 
+
+(defun x-select-text-for-op (op text &optional push)
+  "Make TEXT, a string, the primary and/or clipboard X selection.
+
+This function matches OP against `x-select-enable-primary'
+and `x-select-enable-clipboard'.  OP must be one of :cut
+or :highlight, corresponding to use as an `interprogram-cut-function'
+or `interprogram-highlight-function'
+
+Also may set the value of X cut buffer 0, for backward compatibility
+with older X applications, matching OP against `x-select-enable-cutbuffer'
 
-(defun x-select-text (text &optional push)
-  "Make TEXT, a string, the primary X selection.
-Also, set the value of X cut buffer 0, for backward compatibility
-with older X applications.
 gildea@stop.mail-abuse.org says it's not desirable to put kills
 in the clipboard."
   ;; With multi-tty, this function may be called from a tty frame.
   (when (eq (framep (selected-frame)) 'x)
-    ;; Don't send the cut buffer too much text.
-    ;; It becomes slow, and if really big it causes errors.
-    (cond ((>= (length text) x-cut-buffer-max)
-           (x-set-cut-buffer "" push)
-           (setq x-last-selected-text-cut ""
-                 x-last-selected-text-cut-encoded ""))
-          (t
-           (setq x-last-selected-text-cut text
-                 x-last-cut-buffer-coding 'iso-latin-1
-                 x-last-selected-text-cut-encoded
-                 ;; ICCCM says cut buffer always contain ISO-Latin-1
-                 (encode-coding-string text 'iso-latin-1))
-           (x-set-cut-buffer x-last-selected-text-cut-encoded push)))
-    (when x-select-enable-primary
+    (when (or (eq x-select-enable-cutbuffer t)
+	      (member op x-select-enable-cutbuffer))
+      ;; Don't send the cut buffer too much text.
+      ;; It becomes slow, and if really big it causes errors.
+      (cond ((>= (length text) x-cut-buffer-max)
+	     (x-set-cut-buffer "" push)
+	     (setq x-last-selected-text-cut ""
+		   x-last-selected-text-cut-encoded ""))
+	    (t
+	     (setq x-last-selected-text-cut text
+		   x-last-cut-buffer-coding 'iso-latin-1
+		   x-last-selected-text-cut-encoded
+		   ;; ICCCM says cut buffer always contain ISO-Latin-1
+		   (encode-coding-string text 'iso-latin-1))
+	     (x-set-cut-buffer x-last-selected-text-cut-encoded push))))
+    (when (or (eq x-select-enable-primary t)
+	      (member op x-select-enable-primary))
       (x-set-selection 'PRIMARY text)
       (setq x-last-selected-text-primary text))
-    (when x-select-enable-clipboard
+    (when (or (eq x-select-enable-clipboard t)
+	      (member op x-select-enable-clipboard)) 
       (x-set-selection 'CLIPBOARD text)
       (setq x-last-selected-text-clipboard text))))
 
+
+(defun x-select-text (text &optional push)
+  "Make TEXT, a string, the primary and/or clipboard X selection (for cut).
+
+Also may set the value of X cut buffer 0, for backward compatibility
+with older X applications.
+
+This function is suitable as an `interprogram-cut-function'.  
+This function just calls  `x-select-text-for-op' with OP :cut"
+  (x-select-text-for-op :cut text push))
+
+
+(defun x-select-text-for-highlight (text &optional push)
+  "Make TEXT, a string, the primary and/or clipboard X selection (for highlight).
+
+Also may set the value of X cut buffer 0, for backward compatibility
+with older X applications.
+
+This function is suitable as an `interprogram-highlight-function'.  
+This function is calls `x-select-text-for-op' with OP `:highlight'"
+  (x-select-text-for-op :highlight text push))
+
+
 (defvar x-select-request-type nil
   "*Data type request for X selection.
 The value is one of the following data types, a list of them, or nil:
   `COMPOUND_TEXT', `UTF8_STRING', `STRING', `TEXT'
 
 If the value is one of the above symbols, try only the specified
 type.
 
@@ -2226,17 +2350,18 @@
 ;; as if they were unset.
 ;; If this function is called twice and finds the same text,
 ;; it returns nil the second time.  This is so that a single
 ;; selection won't be added to the kill ring over and over.
 (defun x-cut-buffer-or-selection-value ()
   ;; With multi-tty, this function may be called from a tty frame.
   (when (eq (framep (selected-frame)) 'x)
     (let (clip-text primary-text cut-text)
-      (when x-select-enable-clipboard
+      (when (or (eq x-select-enable-clipboard t)
+		(member :paste x-select-enable-clipboard))
         (setq clip-text (x-selection-value 'CLIPBOARD))
         (if (string= clip-text "") (setq clip-text nil))
 
         ;; Check the CLIPBOARD selection for 'newness', is it different
         ;; from what we remebered them to be last time we did a
         ;; cut/paste operation.
         (setq clip-text
               (cond ;; check clipboard
@@ -2245,17 +2370,18 @@
                ((eq      clip-text x-last-selected-text-clipboard) nil)
                ((string= clip-text x-last-selected-text-clipboard)
                 ;; Record the newer string,
                 ;; so subsequent calls can use the `eq' test.
                 (setq x-last-selected-text-clipboard clip-text)
                 nil)
                (t (setq x-last-selected-text-clipboard clip-text)))))
 
-      (when x-select-enable-primary
+      (when (or (eq x-select-enable-primary t)
+		(member :paste x-select-enable-primary))
 	(setq primary-text (x-selection-value 'PRIMARY))
 	;; Check the PRIMARY selection for 'newness', is it different
 	;; from what we remebered them to be last time we did a
 	;; cut/paste operation.
 	(setq primary-text
 	      (cond ;; check primary selection
 	       ((or (not primary-text) (string= primary-text ""))
 		(setq x-last-selected-text-primary nil))
@@ -2263,47 +2389,49 @@
 	       ((string= primary-text x-last-selected-text-primary)
 		;; Record the newer string,
 		;; so subsequent calls can use the `eq' test.
 		(setq x-last-selected-text-primary primary-text)
 		nil)
 	       (t
 		(setq x-last-selected-text-primary primary-text)))))
 
-      (setq cut-text (x-get-cut-buffer 0))
-
-      ;; Check the x cut buffer for 'newness', is it different
-      ;; from what we remebered them to be last time we did a
-      ;; cut/paste operation.
-      (setq cut-text
-            (let ((next-coding (or next-selection-coding-system 'iso-latin-1)))
-              (cond ;; check cut buffer
-               ((or (not cut-text) (string= cut-text ""))
-                (setq x-last-selected-text-cut nil))
-               ;; This short cut doesn't work because x-get-cut-buffer
-               ;; always returns a newly created string.
-               ;; ((eq      cut-text x-last-selected-text-cut) nil)
-               ((and (string= cut-text x-last-selected-text-cut-encoded)
-                     (eq x-last-cut-buffer-coding next-coding))
-                ;; See the comment above.  No need of this recording.
-                ;; Record the newer string,
-                ;; so subsequent calls can use the `eq' test.
-                ;; (setq x-last-selected-text-cut cut-text)
-                nil)
-               (t
-                (setq x-last-selected-text-cut-encoded cut-text
-                      x-last-cut-buffer-coding next-coding
-                      x-last-selected-text-cut
-                      ;; ICCCM says cut buffer always contain ISO-Latin-1, but
-                      ;; use next-selection-coding-system if not nil.
-                      (decode-coding-string
-                       cut-text next-coding))))))
+      (when (or (eq x-select-enable-cutbuffer t)
+		(member :paste x-select-enable-cutbuffer))
+	(setq cut-text (x-get-cut-buffer 0))
+	
+	;; Check the x cut buffer for 'newness', is it different
+	;; from what we remebered them to be last time we did a
+	;; cut/paste operation.
+	(setq cut-text
+	      (let ((next-coding (or next-selection-coding-system 'iso-latin-1)))
+		(cond ;; check cut buffer
+		 ((or (not cut-text) (string= cut-text ""))
+		  (setq x-last-selected-text-cut nil))
+		 ;; This short cut doesn't work because x-get-cut-buffer
+		 ;; always returns a newly created string.
+		 ;; ((eq      cut-text x-last-selected-text-cut) nil)
+		 ((and (string= cut-text x-last-selected-text-cut-encoded)
+		       (eq x-last-cut-buffer-coding next-coding))
+		  ;; See the comment above.  No need of this recording.
+		  ;; Record the newer string,
+		  ;; so subsequent calls can use the `eq' test.
+		  ;; (setq x-last-selected-text-cut cut-text)
+		  nil)
+		 (t
+		  (setq x-last-selected-text-cut-encoded cut-text
+			x-last-cut-buffer-coding next-coding
+			x-last-selected-text-cut
+			;; ICCCM says cut buffer always contain ISO-Latin-1, but
+			;; use next-selection-coding-system if not nil.
+			(decode-coding-string
+			 cut-text next-coding))))))
 
-      ;; As we have done one selection, clear this now.
-      (setq next-selection-coding-system nil)
+	;; As we have done one selection, clear this now.
+	(setq next-selection-coding-system nil))
 
       ;; At this point we have recorded the current values for the
       ;; selection from clipboard (if we are supposed to) primary,
       ;; and cut buffer.  So return the first one that has changed
       ;; (which is the first non-null one).
       ;;
       ;; NOTE: There will be cases where more than one of these has
       ;; changed and the new values differ.  This indicates that
@@ -2321,16 +2449,17 @@
       ;; primary had been set the cut buffer would essentially never be
       ;; checked again).
       (or clip-text primary-text cut-text)
       )))
 
 ;; Arrange for the kill and yank functions to set and check the clipboard.
 (setq interprogram-cut-function 'x-select-text)
 (setq interprogram-paste-function 'x-cut-buffer-or-selection-value)
+(setq interprogram-highlight-function 'x-select-text-for-highlight)
 
 (defun x-clipboard-yank ()
   "Insert the clipboard contents, or the last stretch of killed text."
   (interactive "*")
   (let ((clipboard-text (x-selection-value 'CLIPBOARD))
 	(x-select-enable-clipboard t))
     (if (and clipboard-text (> (length clipboard-text) 0))
 	(kill-new clipboard-text))

  reply	other threads:[~2008-02-01 19:15 UTC|newest]

Thread overview: 101+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-10-15 10:20 Improving X selection? Horsley, Tom
2007-10-15 11:06 ` Jan Djärv
2007-10-16  4:10 ` Richard Stallman
2007-10-16 23:29   ` David De La Harpe Golden
2007-10-17  1:05     ` David De La Harpe Golden
2007-12-25 21:13     ` Richard Stallman
2008-01-28 19:52       ` David De La Harpe Golden
2008-01-29  0:59         ` David De La Harpe Golden
2008-02-01 19:15           ` David De La Harpe Golden [this message]
2008-02-02  0:17             ` David De La Harpe Golden
2008-02-03 11:38               ` David De La Harpe Golden
2008-02-03 12:44                 ` Jan D.
2008-02-03 13:12                   ` David De La Harpe Golden
2008-02-04 21:02                     ` David De La Harpe Golden
2008-02-05  3:38                       ` David De La Harpe Golden
2008-02-05  7:08                       ` Jan Djärv
2008-02-07  3:57                         ` David De La Harpe Golden
2008-02-07  4:23                           ` Miles Bader
2008-02-07  4:59                             ` David De La Harpe Golden
2008-02-07  9:07                           ` Jason Rumney
2008-02-07 16:32                             ` David De La Harpe Golden
2008-02-07 17:11                               ` David De La Harpe Golden
2008-02-07 17:13                               ` Jason Rumney
2008-02-07 19:46                                 ` Stefan Monnier
2008-02-10 18:42                                 ` Richard Stallman
2008-02-11 17:46                                   ` David De La Harpe Golden
2008-02-07 17:25                               ` Stefan Monnier
2008-02-07 17:39                                 ` David De La Harpe Golden
2008-02-07 17:51                                   ` David De La Harpe Golden
2008-02-07 19:54                                   ` Stefan Monnier
2008-02-07 15:14                           ` Stefan Monnier
2008-02-07 16:15                             ` David De La Harpe Golden
2008-02-07 18:01                               ` Stephen J. Turnbull
2008-02-07 18:07                                 ` David De La Harpe Golden
2008-02-07 19:21                                   ` Stephen J. Turnbull
2008-02-08  1:19                                     ` Miles Bader
2008-02-08  1:42                                       ` David De La Harpe Golden
2008-02-07 18:22                                 ` David De La Harpe Golden
2008-02-07 19:45                                   ` Stefan Monnier
2008-02-07 20:39                                     ` David De La Harpe Golden
2008-02-07 21:25                                       ` Stephen J. Turnbull
2008-02-07 21:41                                         ` David De La Harpe Golden
2008-02-08  0:22                                           ` Stephen J. Turnbull
2008-02-08  1:26                                             ` David De La Harpe Golden
2008-02-07 22:43                                       ` Stefan Monnier
2008-02-08  2:50                                         ` David De La Harpe Golden
2008-02-08 13:26                                           ` OT [was Re: Improving X selection?] Tom Horsley
2008-02-08 15:30                                             ` David De La Harpe Golden
2008-02-08 16:07                                               ` OT Stefan Monnier
2008-02-08 16:43                                                 ` OT David De La Harpe Golden
2008-02-08 14:41                                           ` Improving X selection? Stefan Monnier
2008-02-08 15:21                                             ` David De La Harpe Golden
2008-02-17  3:38                                             ` David De La Harpe Golden
2008-02-17  3:55                                               ` David De La Harpe Golden
2008-02-07 21:01                                     ` Tom Horsley
2008-02-07 21:18                                       ` David De La Harpe Golden
2008-02-07 21:36                                         ` Tom Horsley
2008-02-07 21:40                                           ` David De La Harpe Golden
2008-02-07 22:51                                       ` Stefan Monnier
     [not found]                                 ` <8e24944a0802071042u43d68f04pc8492ad8ce07aa18@mail.gmail.com>
2008-02-07 18:44                                   ` Fwd: " David De La Harpe Golden
2008-02-03 16:18             ` Richard Stallman
2008-02-03 18:29               ` David De La Harpe Golden
2008-02-05  5:58               ` David De La Harpe Golden
2008-02-05  6:23                 ` Miles Bader
2008-02-05  6:56                   ` David De La Harpe Golden
2008-02-03 16:18           ` Richard Stallman
  -- strict thread matches above, loose matches on Subject: below --
2007-10-12 14:50 Tom Horsley
2007-10-14 16:29 ` Richard Stallman
2007-10-14 17:25   ` Jeremy Maitin-Shepard
2007-10-15  6:19     ` Jan Djärv
2007-10-15  6:21       ` Jan Djärv
2007-10-15  6:41       ` Eli Zaretskii
2007-10-15  6:55       ` Miles Bader
2007-10-15  8:16         ` Jan Djärv
2007-10-15 14:21       ` Stefan Monnier
2007-10-15 18:30       ` Richard Stallman
2007-10-15 19:26         ` Jeremy Maitin-Shepard
2007-10-15 20:03           ` Andreas Schwab
2007-10-15 20:22             ` Jeremy Maitin-Shepard
2007-10-16  8:02               ` Frank Schmitt
2007-10-16  7:27           ` Jan Djärv
2007-10-16 10:08             ` René Kyllingstad
2007-10-16 13:15               ` Stefan Monnier
2008-08-18 15:29                 ` René Kyllingstad
2008-08-18 18:47                   ` David De La Harpe Golden
2008-08-18 19:16                 ` David Hansen
2008-08-19  8:06                   ` Frank Schmitt
2008-08-25 15:34                     ` Juri Linkov
2008-08-25 15:56                       ` Frank Schmitt
2008-08-28 17:45                         ` David De La Harpe Golden
2008-08-28 17:58                           ` Frank Schmitt
2008-08-28 18:19                             ` David De La Harpe Golden
2008-08-29  5:53                               ` David Hansen
2008-08-30  4:08                                 ` David De La Harpe Golden
2008-08-31  7:41                                   ` David Hansen
2008-08-20 22:41                   ` David De La Harpe Golden
2008-08-25 15:34                     ` Juri Linkov
2008-08-26  3:09                       ` David Hansen
2008-08-26  8:03                         ` David De La Harpe Golden
2008-08-26  8:41                           ` David Hansen
2007-10-16  7:26         ` Jan Djärv

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=8e24944a0802011115h77423fd1p2eae15a1e46bca1a@mail.gmail.com \
    --to=david.delaharpe.golden@gmail.com \
    --cc=emacs-devel@gnu.org \
    --cc=rms@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.