emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] Changes to emacs/lisp/term/x-win.el,v


From: Jan Djärv
Subject: [Emacs-diffs] Changes to emacs/lisp/term/x-win.el,v
Date: Mon, 20 Nov 2006 07:43:12 +0000

CVSROOT:        /cvsroot/emacs
Module name:    emacs
Changes by:     Jan Djärv <jhd>        06/11/20 07:43:11

Index: x-win.el
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/term/x-win.el,v
retrieving revision 1.196
retrieving revision 1.197
diff -u -b -r1.196 -r1.197
--- x-win.el    18 Nov 2006 13:16:43 -0000      1.196
+++ x-win.el    20 Nov 2006 07:43:11 -0000      1.197
@@ -2138,6 +2138,8 @@
 (defvar x-last-selected-text-cut-encoded nil
   "The value of the X cut buffer last time we selected or pasted text.
 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.
@@ -2163,6 +2165,7 @@
               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))
@@ -2331,20 +2334,28 @@
     ;; 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
-           ;; We can not compare  x-last-selected-text-cut-encoded with
-           ;; cut-text because the next-selection-coding-system may have 
changed
-           ;; so we need to re-decode anyway.
            (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 
-                  (or next-selection-coding-system 'iso-latin-1))))))
+                  cut-text next-coding))))))
 
     ;; As we have done one selection, clear this now.
     (setq next-selection-coding-system nil)




reply via email to

[Prev in Thread] Current Thread [Next in Thread]