bug-gnu-emacs
[Top][All Lists]
Advanced

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

bug#11394: 24.0.96; Sporadic pasting problem


From: Chong Yidong
Subject: bug#11394: 24.0.96; Sporadic pasting problem
Date: Thu, 03 May 2012 10:02:53 +0800
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.0.96 (gnu/linux)

Richard Stanton <stanton@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.






reply via email to

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