From mboxrd@z Thu Jan 1 00:00:00 1970 Path: main.gmane.org!not-for-mail From: Luc Teirlinck Newsgroups: gmane.emacs.devel Subject: Re: Various simple.el patches Date: Thu, 22 May 2003 22:52:45 -0500 (CDT) Sender: emacs-devel-bounces+emacs-devel=quimby.gnus.org@gnu.org Message-ID: <200305230352.h4N3qj211239@eel.dms.auburn.edu> References: <200305132031.h4DKVp58013718@rum.cs.yale.edu> <84llx9hhwp.fsf@lucy.is.informatik.uni-duisburg.de> <20030514124245.GA24487@gnu.org> <843cjhtytp.fsf@lucy.is.informatik.uni-duisburg.de> <20030514144839.GA6241@gnu.org> <844r3xr0ar.fsf@lucy.is.informatik.uni-duisburg.de> <84fznfzb9t.fsf@lucy.is.informatik.uni-duisburg.de> <84k7co464e.fsf@lucy.is.informatik.uni-duisburg.de> <200305220252.h4M2q9W10068@eel.dms.auburn.edu> NNTP-Posting-Host: main.gmane.org X-Trace: main.gmane.org 1053662189 16745 80.91.224.249 (23 May 2003 03:56:29 GMT) X-Complaints-To: usenet@main.gmane.org NNTP-Posting-Date: Fri, 23 May 2003 03:56:29 +0000 (UTC) Cc: kai.grossjohann@gmx.net Original-X-From: emacs-devel-bounces+emacs-devel=quimby.gnus.org@gnu.org Fri May 23 05:56:26 2003 Return-path: Original-Received: from quimby.gnus.org ([80.91.224.244]) by main.gmane.org with esmtp (Exim 3.35 #1 (Debian)) id 19J3fO-0004Lu-00 for ; Fri, 23 May 2003 05:56:26 +0200 Original-Received: from monty-python.gnu.org ([199.232.76.173]) by quimby.gnus.org with esmtp (Exim 3.12 #1 (Debian)) id 19J3qx-0004qy-00 for ; Fri, 23 May 2003 06:08:24 +0200 Original-Received: from localhost ([127.0.0.1] helo=monty-python.gnu.org) by monty-python.gnu.org with esmtp (Exim 4.20) id 19J3es-0002dK-IZ for emacs-devel@quimby.gnus.org; Thu, 22 May 2003 23:55:54 -0400 Original-Received: from list by monty-python.gnu.org with tmda-scanned (Exim 4.20) id 19J3eD-0002R7-7d for emacs-devel@gnu.org; Thu, 22 May 2003 23:55:13 -0400 Original-Received: from mail by monty-python.gnu.org with spam-scanned (Exim 4.20) id 19J3cG-0000EF-Nf for emacs-devel@gnu.org; Thu, 22 May 2003 23:53:43 -0400 Original-Received: from manatee.dms.auburn.edu ([131.204.53.104]) by monty-python.gnu.org with esmtp (Exim 4.20) id 19J3bw-00008S-OH for emacs-devel@gnu.org; Thu, 22 May 2003 23:52:52 -0400 Original-Received: from eel.dms.auburn.edu (eel.dms.auburn.edu [131.204.53.108]) h4N3qgoc013178; Thu, 22 May 2003 22:52:42 -0500 (CDT) Original-Received: (from teirllm@localhost) by eel.dms.auburn.edu (8.11.6+Sun/8.11.6) id h4N3qj211239; Thu, 22 May 2003 22:52:45 -0500 (CDT) X-Authentication-Warning: eel.dms.auburn.edu: teirllm set sender to teirllm@dms.auburn.edu using -f Original-To: teirllm@dms.auburn.edu In-reply-to: <200305220252.h4M2q9W10068@eel.dms.auburn.edu> (message from Luc Teirlinck on Wed, 21 May 2003 21:52:09 -0500 (CDT)) Original-cc: emacs-devel@gnu.org X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1b5 Precedence: list List-Id: Emacs development discussions. List-Help: List-Post: List-Subscribe: , List-Archive: List-Unsubscribe: , Errors-To: emacs-devel-bounces+emacs-devel=quimby.gnus.org@gnu.org Xref: main.gmane.org gmane.emacs.devel:14112 X-Report-Spam: http://spam.gmane.org/gmane.emacs.devel:14112 The following version of kill-whole-line should work OK with the kill-ring, including read-only buffers, and with invisible text. It implements the version I referred to previously as "version2", but other types of behavior could be implemented in a similar way, should they be deemed more desirable. Invisible text will work OK if you apply the patch to simple.el which I sent yesterday and avoid using lists with two or more elements as invisibility properties. If you do the latter, the invisibility related machinery of simple.el will malfunction. This is a problem unrelated to kill-whole-line, which can easily be solved by using a corrected version of line-move-invisible, either the one I sent today, or one from the C code, as Stefan suggested. ===File ~/newkwlversion2.el================================= (defun kill-whole-line (&optional arg) "Kill current line. With prefix arg, kill that many lines from point. If arg is negative, kill backwards. If arg is zero, kill current line but exclude the trailing newline." (interactive "P") (setq arg (prefix-numeric-value arg)) (if (and (> arg 0) (eobp) (save-excursion (forward-visible-line 0) (eobp))) (signal 'end-of-buffer nil)) (if (and (< arg 0) (bobp) (save-excursion (end-of-visible-line) (bobp))) (signal 'beginning-of-buffer nil)) (unless (eq last-command 'kill-region) (kill-new "") (setq last-command 'kill-region)) (cond ((zerop arg) (save-excursion (kill-region (point) (progn (forward-visible-line 0) (point)))) (kill-region (point) (progn (end-of-visible-line) (point)))) ((< arg 0) (save-excursion (kill-region (point) (progn (end-of-visible-line) (point)))) (kill-region (point) (progn (forward-visible-line (1+ arg)) (unless (bobp) (backward-char)) (point)))) (t (save-excursion (kill-region (point) (progn (forward-visible-line 0) (point)))) (kill-region (point) (progn (forward-visible-line arg) (point)))))) ============================================================