GNU bug report logs - #11394
24.0.96; Sporadic pasting problem

Previous Next

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.

Full log


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.





This bug report was last modified 12 years and 322 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.