Package: emacs;
Reported by: Richard Stanton <stanton <at> haas.berkeley.edu>
Date: Wed, 2 May 2012 20:35:01 UTC
Severity: normal
Found in version 24.0.96
Done: Chong Yidong <cyd <at> gnu.org>
Bug is archived. No further changes may be made.
Message #8 received at 11394 <at> debbugs.gnu.org (full text, mbox):
From: Chong Yidong <cyd <at> gnu.org> To: Richard Stanton <stanton <at> haas.berkeley.edu> Cc: 11394 <at> debbugs.gnu.org Subject: Re: bug#11394: 24.0.96; Sporadic pasting problem Date: Thu, 03 May 2012 10:02:53 +0800
Richard Stanton <stanton <at> haas.berkeley.edu> writes: > I've been using Emacs with org-mode quite a lot over the last 24 hours > to edit a file that will turn into a Beamer presentation. During the > course of this editing, I've several times had the problem that when > cutting and pasting text, when I press C-y, instead of doing what I ask, I > get a > message in the minibuffer telling me something like > > Quit: pasteboard doesn't contain valid data My suspicion is the fix for Bug#11315 (revno 107896 on emacs-24 branch). Please recompile with the following patch (which reverts the above fix) and see if the problem goes away. === modified file 'lisp/select.el' *** lisp/select.el 2012-04-24 05:34:50 +0000 --- lisp/select.el 2012-05-03 01:42:31 +0000 *************** *** 213,237 **** (defun xselect--int-to-cons (n) (cons (ash n -16) (logand n 65535))) ! (defun xselect--encode-string (type str &optional can-modify) ! (when str ! ;; If TYPE is nil, this is a local request; return STR as-is. ! (if (null type) ! str ! ;; Otherwise, encode STR. ! (let ((coding (or next-selection-coding-system ! selection-coding-system))) (if coding (setq coding (coding-system-base coding))) (let ((inhibit-read-only t)) ;; Suppress producing escape sequences for compositions. - ;; But avoid modifying the string if it's a buffer name etc. - (unless can-modify (setq str (substring str 0))) (remove-text-properties 0 (length str) '(composition nil) str) - ;; TEXT is a polymorphic target. Select the actual type - ;; from `UTF8_STRING', `COMPOUND_TEXT', `STRING', and - ;; `C_STRING'. (if (eq type 'TEXT) (if (not (multibyte-string-p str)) (setq type 'C_STRING) (let (non-latin-1 non-unicode eight-bit) --- 213,242 ---- (defun xselect--int-to-cons (n) (cons (ash n -16) (logand n 65535))) ! (defun xselect-convert-to-string (_selection type value) ! (let (str coding) ! ;; Get the actual string from VALUE. ! (cond ((stringp value) ! (setq str value)) ! ((setq value (xselect--selection-bounds value)) ! (with-current-buffer (nth 2 value) ! (setq str (buffer-substring (nth 0 value) ! (nth 1 value)))))) ! (when str ! ;; If TYPE is nil, this is a local request, thus return STR as ! ;; is. Otherwise, encode STR. ! (if (not type) ! str ! (setq coding (or next-selection-coding-system selection-coding-system)) (if coding (setq coding (coding-system-base coding))) (let ((inhibit-read-only t)) ;; Suppress producing escape sequences for compositions. (remove-text-properties 0 (length str) '(composition nil) str) (if (eq type 'TEXT) + ;; TEXT is a polymorphic target. We must select the + ;; actual type from `UTF8_STRING', `COMPOUND_TEXT', + ;; `STRING', and `C_STRING'. (if (not (multibyte-string-p str)) (setq type 'C_STRING) (let (non-latin-1 non-unicode eight-bit) *************** *** 274,287 **** (setq next-selection-coding-system nil) (cons type str)))) - (defun xselect-convert-to-string (_selection type value) - (let ((str (cond ((stringp value) value) - ((setq value (xselect--selection-bounds value)) - (with-current-buffer (nth 2 value) - (buffer-substring (nth 0 value) - (nth 1 value))))))) - (xselect--encode-string type str t))) - (defun xselect-convert-to-length (_selection _type value) (let ((len (cond ((stringp value) (length value)) --- 279,284 ---- *************** *** 314,320 **** (defun xselect-convert-to-filename (_selection _type value) (when (setq value (xselect--selection-bounds value)) ! (xselect--encode-string 'TEXT (buffer-file-name (nth 2 value))))) (defun xselect-convert-to-charpos (_selection _type value) (when (setq value (xselect--selection-bounds value)) --- 311,317 ---- (defun xselect-convert-to-filename (_selection _type value) (when (setq value (xselect--selection-bounds value)) ! (buffer-file-name (nth 2 value)))) (defun xselect-convert-to-charpos (_selection _type value) (when (setq value (xselect--selection-bounds value)) *************** *** 340,352 **** (xselect--int-to-cons (max beg end)))))))) (defun xselect-convert-to-os (_selection _type _size) ! (xselect--encode-string 'TEXT (symbol-name system-type))) (defun xselect-convert-to-host (_selection _type _size) ! (xselect--encode-string 'TEXT (system-name))) (defun xselect-convert-to-user (_selection _type _size) ! (xselect--encode-string 'TEXT (user-full-name))) (defun xselect-convert-to-class (_selection _type _size) "Convert selection to class. --- 337,349 ---- (xselect--int-to-cons (max beg end)))))))) (defun xselect-convert-to-os (_selection _type _size) ! (symbol-name system-type)) (defun xselect-convert-to-host (_selection _type _size) ! (system-name)) (defun xselect-convert-to-user (_selection _type _size) ! (user-full-name)) (defun xselect-convert-to-class (_selection _type _size) "Convert selection to class.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.