From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Spencer Baugh Newsgroups: gmane.emacs.help Subject: Re: search-backward returning matches which end after point Date: Mon, 26 Aug 2024 10:26:13 -0400 Organization: Jane Street Capital Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="22615"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) To: help-gnu-emacs@gnu.org Cancel-Lock: sha1:8AHmoeEXs4ffCqBSn94LpNxgNN0= Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Mon Aug 26 16:27:07 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 1siagU-0005hy-Iv for geh-help-gnu-emacs@m.gmane-mx.org; Mon, 26 Aug 2024 16:27:06 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1siafu-0001bw-0D; Mon, 26 Aug 2024 10:26:30 -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 1siafs-0001bl-4Y for help-gnu-emacs@gnu.org; Mon, 26 Aug 2024 10:26:28 -0400 Original-Received: from ciao.gmane.io ([116.202.254.214]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1siafq-000346-GY for help-gnu-emacs@gnu.org; Mon, 26 Aug 2024 10:26:27 -0400 Original-Received: from list by ciao.gmane.io with local (Exim 4.92) (envelope-from ) id 1siafk-0004pb-Vu for help-gnu-emacs@gnu.org; Mon, 26 Aug 2024 16:26:20 +0200 X-Injected-Via-Gmane: http://gmane.org/ Received-SPF: pass client-ip=116.202.254.214; envelope-from=geh-help-gnu-emacs@m.gmane-mx.org; helo=ciao.gmane.io X-Spam_score_int: -16 X-Spam_score: -1.7 X-Spam_bar: - X-Spam_report: (-1.7 / 5.0 requ) BAYES_00=-1.9, HEADER_FROM_DIFFERENT_DOMAINS=0.25, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no 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:147816 Archived-At: Stefan Monnier via Users list for the GNU Emacs text editor writes: >> search-backward (and re-search-backward, and looking-back) don't return >> matches which end after point. Is there a version which does? > > No 🙁 > You could write a `while + looking-at` loop to do that, but if you want > something faster, you'll need to change the C code. > I don't expect it would be a difficult change, tho (it should not require > any significant change in the regexp engine, for example). I'm happy to do that, if this is an addition which is likely to be accepted into Emacs. Should the API be a new flag in search-backward/re-search-backward/looking-back? Or should it maybe be a new special variable? >> The -prev commands defined by easy-mmode-define-navigation use >> re-search-backward. So if the point is inside the thing which the regex >> matches, then thing-prev command will not go to the start of the thing. > > Of course, the same problem appears for search-forward when searching > from within the thing we're searching. In both cases the usual > workaround is to start your search elsewhere (i.e. take "small" step > back before searching forward or vice-versa). Yes, that seems to be a common workaround. Particularly common seems to be going to pos-bol first, since the search is for something which can't contain a newline. In my case this is tricky though because the thing I'm searching for *can* contain a newline, so it's not totally trivial to determin what small step is correct to take...