From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Stephen Berman Newsgroups: gmane.emacs.help Subject: Re: insert gives args out of range Date: Fri, 16 Aug 2024 14:26:47 +0200 Message-ID: <87h6bkmz5k.fsf@gmx.net> References: <87plq8n66z.fsf@gmx.net> <87le0wn0ru.fsf@gmx.net> Mime-Version: 1.0 Content-Type: text/plain Content-Transfer-Encoding: quoted-printable Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="2209"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Cc: Heime via Users list for the GNU Emacs text editor To: Heime Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Fri Aug 16 14:27:37 2024 Return-path: Envelope-to: geh-help-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1sew3M-0000PW-TV for geh-help-gnu-emacs@m.gmane-mx.org; Fri, 16 Aug 2024 14:27:37 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1sew2k-0007fP-Mt; Fri, 16 Aug 2024 08:26:58 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sew2j-0007fE-SU for help-gnu-emacs@gnu.org; Fri, 16 Aug 2024 08:26:57 -0400 Original-Received: from mout.gmx.net ([212.227.17.22]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sew2h-0007Hk-Sl for help-gnu-emacs@gnu.org; Fri, 16 Aug 2024 08:26:57 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.net; s=s31663417; t=1723811208; x=1724416008; i=stephen.berman@gmx.net; bh=LHtaM23bVlTBCXk/kwS1aT2M03f3kMBMcJ/QU6McdqA=; h=X-UI-Sender-Class:From:To:Cc:Subject:In-Reply-To:References:Date: Message-ID:MIME-Version:Content-Type:Content-Transfer-Encoding:cc: content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=cE7t+sJDIZK9P2o2RGFB2aqB+tJTkEYOkvgEOFQhXfEOCNDhbPcQAJ8yAhHiTnA0 zqcI9VZCr5fPaSTKIpUztTk9yI+1iuFcfpqadz52mBA8KTGHvo3oKHQJCiAMrvfhl hFnOuy9DaMRcZ1c3xZpxh29gGLiCtu55zXstMPBN5DF7LtxU02amHWpHOr6KHnI/y +fV4tOQJD+pzy33fkKH21x8bh2Z52bD504SN/1M2jW6ltaHVyB7JD/T9cm69rcelF 8m85ojOVVkKTiDSHo8nsQpfFRQ0ISg0Me4Az5p8lMHKThiZwKnrdEw/0biCN1zQwR OoBvw47To5iVIw3qEg== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Original-Received: from strobelfs ([94.134.95.228]) by mail.gmx.net (mrgmx104 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MxUrx-1sGYT30StN-00tKds; Fri, 16 Aug 2024 14:26:48 +0200 In-Reply-To: (Heime's message of "Fri, 16 Aug 2024 12:10:48 +0000") X-Provags-ID: V03:K1:fWopNSAspTmU7iSUPORJyYxHl8HJwlHqXOPPbWVbOvNCeWuHnTu TrmxlBIUPtwv9XAQqulYbVpZU75Ry5fWGtSOv97BK+WoruD0/MA+LCBt7RqIMJ8xMTLlU6A WC4PG1pe80zjHku5bZZL1f39ECa02eLpRBiyK8cShtCHHXXQiYgdLPXSMHrF2BTcLXfzTpS VncMZ050ad0bvxkJLoqUQ== UI-OutboundReport: notjunk:1;M01:P0:YuLizUngvF0=;WiyAbP+GOauDaA9xlDbr5FdomRe 4n7UDva4xHMfPdpX4YVRO387VhtdXynqZoiDW8J3XSHt9cRX0NW96cn1Dsi+CnTmbKOf91IRm /gMM3okOtHCisJ3KMRNTqj58oGAJCj0+MF42ncHJd/nmnMt9HbA++tuPQTS+L3sRmu6TBvYGo 5hF2KCdYQ+DCTdWNl4dw3Cy883ue2Cbfxufod+PKLSD4ACfK9LFyC+Cx0qDdZIGlp1XL9yEYM 9NTjlTGsO3x4UtuD0M/PjAGkAcKCwD9aVYH6LbsWPJEJWVciGueia7QFbL7dQqTGtXo0yNru9 n8Nfdwxb/w/ZAMQZ6DHjM43jcxRowavOZYXsMGMCKoRXq+RapaUF5d4d99EQjgPFaYxEA39eB vgdVqpvpVPbftpXm002kF4s8ZoNbrJjUISvwIu3DLS2dlgTCQx4P4uIK8aSicNhlAEejYGAr4 SMo3O0Qp6fexIH7ZxvQgQogOFHDJZid4qPioeEgKxLsWeBDzweHhmHteDjKQ8eP6Y5tGFIdLi C2FHOzmsIpiUn/wW4IbF6Q7n1BqllVfy6gYNIl4B8BO8XqljuFMBIu9hs4biasHPW3cPgtz7d FH59EWroBPE3m7v7xa2MmKwQQr1QVTJovZ/ePmyjVGwU4M9uTvMJjpOCuOuAfF8uETMTQ1qEq RlJox1O2fp5r5I4FjecjelgxMh0lPtD7XMPK4Pjv5qxkjRLsD5YwwQxYrFe4wQioyx56/vNHw IwsOjez0/zcSBmw+Z4BUJlBJ3KGgd6ehwR58MO1+w06BJ8HP04rUSdCBVqUeW4EsczKfwzJ8 Received-SPF: pass client-ip=212.227.17.22; envelope-from=stephen.berman@gmx.net; helo=mout.gmx.net X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: help-gnu-emacs@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Users list for the GNU Emacs text editor List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.help:147714 Archived-At: On Fri, 16 Aug 2024 12:10:48 +0000 Heime wrot= e: > On Saturday, August 17th, 2024 at 12:03 AM, Heime wrote: > >> On Friday, August 16th, 2024 at 11:51 PM, Stephen Berman >> stephen.berman@gmx.net wrote: >> >> > On Fri, 16 Aug 2024 10:59:09 +0000 Heime heimeborgia@protonmail.com w= rote: >> > >> > > On Friday, August 16th, 2024 at 10:20 PM, Heime >> > > heimeborgia@protonmail.com wrote: >> > > >> > > > On Friday, August 16th, 2024 at 9:54 PM, Stephen Berman >> > > > stephen.berman@gmx.net wrote: >> > > > >> > > > > On Fri, 16 Aug 2024 09:24:23 +0000 Heime heimeborgia@protonmail= .com wrote: >> > > > > >> > > > > > I want to display text starting from "(defun" up to the secon= d blank >> > > > > > line that is encountered. >> > > > > > >> > > > > > But with this code I get >> > > > > > >> > > > > > insert: Args out of range: #, 2706, 28= 04 >> > > > > > >> > > > > > (defun display-text () >> > > > > > "Display the text between a line starting with '(defun' and t= he second >> > > > > > blank line." >> > > > > > (interactive) >> > > > > > (let ((output-buffer (get-buffer-create "Defun Sections"))) >> > > > > > (with-current-buffer output-buffer >> > > > > > (erase-buffer)) ;; Clear previous contents >> > > > > > (save-excursion >> > > > > > (goto-char (point-min)) >> > > > > > (while (re-search-forward "^(defun" nil t) >> > > > > > (let ((start (match-beginning 0)) >> > > > > > (blank-lines 0) >> > > > > > end) >> > > > > > ;; Move forward to find the second blank line >> > > > > > (while (and (< blank-lines 2) >> > > > > > (re-search-forward "^\\s-*$" nil t)) >> > > > > > (setq blank-lines (1+ blank-lines))) >> > > > > > (setq end (point)) >> > > > > > ;; Ensure the range is valid before inserting >> > > > > > (when (> end start) >> > > > > > (with-current-buffer output-buffer >> > > > > > (insert (buffer-substring-no-properties start end) "\n")))))) >> > > > > > ;; Display the output buffer >> > > > > > (display-buffer output-buffer))) >> > > > > >> > > > > You've set `start' and` end' in a different buffer than output-= buffer >> > > > > but you're invoking buffer-substring-no-properties with these v= alues in >> > > > > output-buffer, which you've erased, so those values are not in = the range >> > > > > of possible values in output-buffer. Try let-binding the result= of >> > > > > invoking buffer-substring-no-properties before the second invoc= ation of >> > > > > with-current-buffer. >> > > > > >> > > > > Steve Berman >> > > >> > > I updated as suggested. Although I get the output, the search stops= on >> > > the first >> > > blank line rather than on the second blank line. >> > >> > Consider a buffer "test" with the following content (two blank lines >> > between the defuns): >> > >> > ;;;;;;;;;;;;; >> > >> > (defun f1 () >> > (ignore)) >> > >> > (defun f2 () >> > (ignore)) >> > ;;;;;;;;;;;;; >> > >> > When you call `display-text' in "test", the first evaluation of the >> > sexp (re-search-forward "^\\s-*$" nil t) moves point to the first bla= nk >> > line below the first defun. Where is point after the second evaluatio= n >> > of that sexp? - Steve Berman >> >> >> It is still at the beginning of the first blank line. > > I do not understand why this happens. Because (point) after > re-search-forward should give me the position at the beginning of the > second blank line that is encountered. The sexp (re-search-forward "^\\s-*$" nil t) succeeds if it find a line containing only zero or more whitespace characters and moves point to the end of the match. If point is on a blank line, the search succeeds, but since the beginning and end of the match coincide, point does not move. If you want point to move, your code needs to accommodate this case. Steve Berman