[Top][All Lists]
[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)