From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: pjb@informatimago.com (Pascal J. Bourguignon) Newsgroups: gmane.emacs.help Subject: Re: Simple copy & paste problem Date: Wed, 11 Aug 2010 19:43:20 +0200 Organization: Informatimago Message-ID: <87fwyl9haf.fsf@kuiper.lan.informatimago.com> References: NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: dough.gmane.org 1291860898 14612 80.91.229.12 (9 Dec 2010 02:14:58 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Thu, 9 Dec 2010 02:14:58 +0000 (UTC) To: help-gnu-emacs@gnu.org Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Thu Dec 09 03:14:53 2010 Return-path: Envelope-to: geh-help-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1PQW20-0004ec-99 for geh-help-gnu-emacs@m.gmane.org; Thu, 09 Dec 2010 03:14:52 +0100 Original-Received: from localhost ([127.0.0.1]:45845 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1PQW1z-00027v-KF for geh-help-gnu-emacs@m.gmane.org; Wed, 08 Dec 2010 21:14:51 -0500 Original-Path: usenet.stanford.edu!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail Original-Newsgroups: gnu.emacs.help Original-Lines: 57 Original-X-Trace: individual.net T12nTbxK0QG2xwzsPzMHeg5dE4iiyy/J9R5nVWoW88bpQFmBZn Cancel-Lock: sha1:MzlhZjlmMWJlY2ZmN2YxZDg2YmYxYTIxNjU2MTM0YmI2YmQ2OWY2Zg== sha1:h5tkukBcbl5I1+pG5hc5ZIwaMAY= Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwAQMAAABtzGvEAAAABlBMVEUAAAD///+l2Z/dAAAA oElEQVR4nK3OsRHCMAwF0O8YQufUNIQRGIAja9CxSA55AxZgFO4coMgYrEDDQZWPIlNAjwq9 033pbOBPtbXuB6PKNBn5gZkhGa86Z4x2wE67O+06WxGD/HCOGR0deY3f9Ijwwt7rNGNf6Oac l/GuZTF1wFGKiYYHKSFAkjIo1b6sCYS1sVmFhhhahKQssRjRT90ITWUk6vvK3RsPGs+M1RuR mV+hO/VvFAAAAABJRU5ErkJggg== X-Accept-Language: fr, es, en X-Disabled: X-No-Archive: no User-Agent: Gnus/5.101 (Gnus v5.10.10) Emacs/23.2 (gnu/linux) Original-Xref: usenet.stanford.edu gnu.emacs.help:180588 X-BeenThere: help-gnu-emacs@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Users list for the GNU Emacs text editor List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Errors-To: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.help:76455 Archived-At: Andrea Crotti writes: > This is probably very stupid but every time I step into it and it's very > annoying. > > Supposing I want to copy something from Safari to emacs. > So I > - select and copy > - select and kill the text I want to substitute > - try to paste > > ARGH! Now the text I copied from safari is disappeared... > A workardound is to delete first and then copy-paste. or: - select and copy - yank (it's called yank in emacs, not paste). - select and kill the text you wanted to substitute > But is there a smarter way to solve this? > Something like > "if I copied something from the os keep it as first in the kill ring"? Use delete-region-and-yank instead of yank: (defun delete-region-and-yank (&optional arg) "Deletes region if mark is active and yanks the last kill. Always replaces the region with the yank, whether the region was selected via keyboard or mouse. Also works for normal yank even with ARGS (thus it can be mapped to \\C-y)" (interactive "*P") ; raw, like yank. (message "arg=%S" arg) (cond (mark-active ; delete region (let ((str (buffer-substring (point) (mark)))) (delete-region (point) (mark)) (if (string=* str (current-kill 0 1)) (let ((str2 (current-kill 1 1))) (kill-new str2 t)))) (if arg (yank arg) (yank))) ;; else no region selected: ((consp arg) ; delete forward sexp (set-mark (point)) (forward-sexp 1) (delete-region-and-yank)) (arg (yank arg)) (t (yank)))) -- __Pascal Bourguignon__ http://www.informatimago.com/