(x-last-cut-buffer-coding): New variable.
(x-select-text): Set it. (x-cut-buffer-or-selection-value): Check also x-last-cut-buffer-coding when checking for newness.
This commit is contained in:
parent
83dc699514
commit
8eee81013f
2 changed files with 28 additions and 10 deletions
|
|
@ -1,3 +1,10 @@
|
|||
2006-11-20 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
|
||||
|
||||
* term/x-win.el (x-last-cut-buffer-coding): New variable.
|
||||
(x-select-text): Set it.
|
||||
(x-cut-buffer-or-selection-value): Check also x-last-cut-buffer-coding
|
||||
when checking for newness.
|
||||
|
||||
2006-11-19 Juanma Barranquero <lekktu@gmail.com>
|
||||
|
||||
* subr.el (posn-image):
|
||||
|
|
|
|||
|
|
@ -2138,6 +2138,8 @@ The actual text stored in the X cut buffer is what encoded from this value.")
|
|||
(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 @@ in the clipboard."
|
|||
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 @@ order until succeed.")
|
|||
;; from what we remebered them to be last time we did a
|
||||
;; cut/paste operation.
|
||||
(setq cut-text
|
||||
(cond;; check cut buffer
|
||||
((or (not cut-text) (string= cut-text ""))
|
||||
(setq x-last-selected-text-cut 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
|
||||
(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
|
||||
(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)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue