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: make-indirect-buffer Date: Mon, 12 Apr 2004 18:36:15 -0500 (CDT) Sender: emacs-devel-bounces+emacs-devel=quimby.gnus.org@gnu.org Message-ID: <200404122336.i3CNaFO27207@raven.dms.auburn.edu> References: <200404120519.i3C5Jrn21195@raven.dms.auburn.edu> <20040412210427.GA12000@fencepost> <200404122122.i3CLMZO26569@raven.dms.auburn.edu> NNTP-Posting-Host: deer.gmane.org X-Trace: sea.gmane.org 1081813340 8662 80.91.224.253 (12 Apr 2004 23:42:20 GMT) X-Complaints-To: usenet@sea.gmane.org NNTP-Posting-Date: Mon, 12 Apr 2004 23:42:20 +0000 (UTC) Cc: miles@gnu.org, emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+emacs-devel=quimby.gnus.org@gnu.org Tue Apr 13 01:42:11 2004 Return-path: Original-Received: from quimby.gnus.org ([80.91.224.244]) by deer.gmane.org with esmtp (Exim 3.35 #1 (Debian)) id 1BDB47-0000Tm-00 for ; Tue, 13 Apr 2004 01:42:11 +0200 Original-Received: from monty-python.gnu.org ([199.232.76.173]) by quimby.gnus.org with esmtp (Exim 3.35 #1 (Debian)) id 1BDB46-0007Is-00 for ; Tue, 13 Apr 2004 01:42:10 +0200 Original-Received: from localhost ([127.0.0.1] helo=monty-python.gnu.org) by monty-python.gnu.org with esmtp (Exim 4.30) id 1BDB2W-0003Br-PP for emacs-devel@quimby.gnus.org; Mon, 12 Apr 2004 19:40:32 -0400 Original-Received: from list by monty-python.gnu.org with tmda-scanned (Exim 4.30) id 1BDB27-0003Bc-5S for emacs-devel@gnu.org; Mon, 12 Apr 2004 19:40:07 -0400 Original-Received: from mail by monty-python.gnu.org with spam-scanned (Exim 4.30) id 1BDB1a-00036V-Vh for emacs-devel@gnu.org; Mon, 12 Apr 2004 19:40:06 -0400 Original-Received: from [131.204.53.104] (helo=manatee.dms.auburn.edu) by monty-python.gnu.org with esmtp (Exim 4.30) id 1BDB12-0002xH-Jv; Mon, 12 Apr 2004 19:39:00 -0400 Original-Received: from raven.dms.auburn.edu (raven.dms.auburn.edu [131.204.53.29]) by manatee.dms.auburn.edu (8.12.10/8.12.10) with ESMTP id i3CNcsKt017428; Mon, 12 Apr 2004 18:38:54 -0500 (CDT) Original-Received: (from teirllm@localhost) by raven.dms.auburn.edu (8.11.6+Sun/8.11.6) id i3CNaFO27207; Mon, 12 Apr 2004 18:36:15 -0500 (CDT) X-Authentication-Warning: raven.dms.auburn.edu: teirllm set sender to teirllm@dms.auburn.edu using -f Original-To: monnier@iro.umontreal.ca In-reply-to: (message from Stefan Monnier on 12 Apr 2004 18:53:34 -0400) X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+emacs-devel=quimby.gnus.org@gnu.org Xref: main.gmane.org gmane.emacs.devel:21545 X-Report-Spam: http://spam.gmane.org/gmane.emacs.devel:21545 Stefan Monnier wrote: > Basically one could do this (I do not know whether it is worth the > extra variable): AFAIK, variables have no cost. So what if I install the following: ===File ~/buffer.c-diff===================================== diff -c /home/teirllm/emacscvsdir/emacs/src/buffer.c /home/teirllm/buffer.new.c *** /home/teirllm/emacscvsdir/emacs/src/buffer.c Mon Apr 12 18:26:33 2004 --- /home/teirllm/buffer.new.c Mon Apr 12 18:01:22 2004 *************** *** 521,527 **** 2, 3, "bMake indirect buffer (to buffer): \nBName of indirect buffer: ", doc: /* Create and return an indirect buffer for buffer BASE-BUFFER, named NAME. ! BASE-BUFFER should be an existing buffer (or buffer name). NAME should be a string which is not the name of an existing buffer. Optional argument CLONE non-nil means preserve BASE-BUFFER's state, such as major and minor modes, in the indirect buffer. --- 521,527 ---- 2, 3, "bMake indirect buffer (to buffer): \nBName of indirect buffer: ", doc: /* Create and return an indirect buffer for buffer BASE-BUFFER, named NAME. ! BASE-BUFFER should be a live buffer, or the name of an existing buffer. NAME should be a string which is not the name of an existing buffer. Optional argument CLONE non-nil means preserve BASE-BUFFER's state, such as major and minor modes, in the indirect buffer. *************** *** 529,535 **** (base_buffer, name, clone) Lisp_Object base_buffer, name, clone; { ! Lisp_Object buf; struct buffer *b; CHECK_STRING (name); --- 529,535 ---- (base_buffer, name, clone) Lisp_Object base_buffer, name, clone; { ! Lisp_Object buf, tem; struct buffer *b; CHECK_STRING (name); *************** *** 537,545 **** if (!NILP (buf)) error ("Buffer name `%s' is in use", SDATA (name)); base_buffer = Fget_buffer (base_buffer); if (NILP (base_buffer)) ! error ("No such buffer: `%s'", SDATA (name)); if (SCHARS (name) == 0) error ("Empty string for buffer name is not allowed"); --- 537,548 ---- if (!NILP (buf)) error ("Buffer name `%s' is in use", SDATA (name)); + tem = base_buffer; base_buffer = Fget_buffer (base_buffer); if (NILP (base_buffer)) ! error ("No such buffer: `%s'", SDATA (tem)); ! if (NILP (XBUFFER (base_buffer)->name)) ! error ("Base buffer has been killed"); if (SCHARS (name) == 0) error ("Empty string for buffer name is not allowed"); Diff finished. Mon Apr 12 18:27:39 2004 ============================================================