From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.ciao.gmane.io!not-for-mail From: Drew Adams Newsgroups: gmane.emacs.devel Subject: RE: Tracking buffer positions across time, without markers (was Re: PL support) Date: Sun, 10 May 2020 12:42:04 -0700 (PDT) Message-ID: References: <6a2c7d18-344e-fefb-63d5-79a99d0532fc@gmail.com> <942a8cb1-0382-cf83-5ff9-4e776c2660f0@gmail.com> <7f8bdd43-f4d7-e0a8-dcfa-6679215f9d44@gmail.com> <9e98ccbd-6b01-d076-79eb-6bd06ab803fb@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Injection-Info: ciao.gmane.io; posting-host="ciao.gmane.io:159.69.161.202"; logging-data="10774"; mail-complaints-to="usenet@ciao.gmane.io" To: =?utf-8?B?Q2zDqW1lbnQgUGl0LUNsYXVkZWw=?= , Eli Zaretskii , emacs-devel@gnu.org, =?utf-8?B?Sm/Do28gVMOhdm9yYQ==?= Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Sun May 10 21:43:08 2020 Return-path: Envelope-to: ged-emacs-devel@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 1jXrqt-0002hQ-4I for ged-emacs-devel@m.gmane-mx.org; Sun, 10 May 2020 21:43:07 +0200 Original-Received: from localhost ([::1]:53612 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jXrqs-0006AL-4a for ged-emacs-devel@m.gmane-mx.org; Sun, 10 May 2020 15:43:06 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:52214) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jXrq0-0005AC-UL for emacs-devel@gnu.org; Sun, 10 May 2020 15:42:12 -0400 Original-Received: from userp2120.oracle.com ([156.151.31.85]:59026) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jXrpy-0002Wm-PQ; Sun, 10 May 2020 15:42:12 -0400 Original-Received: from pps.filterd (userp2120.oracle.com [127.0.0.1]) by userp2120.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 04AJcZ57117757; Sun, 10 May 2020 19:42:07 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=mime-version : message-id : date : from : sender : to : subject : references : in-reply-to : content-type : content-transfer-encoding; s=corp-2020-01-29; bh=5PcRjrcU+4REVa5NNiHyXdngeiO8rhjd2LCq3u24DIU=; b=jLaXmiPnAUwAJJ9WyowSMcMqueYxHQzHnBKbHk57pbMXuTY+dH5ByvFj5umpYQ/XZdaU xGss/Fdric769kaNhBiRVSlhJ2m3yA+Uz6n3ldg8ZL+w7E4IEnhgvlc744bqS/Y7NW0c W1tUH30DYwdiu34YFii4vgL+O10Fv4kJIR2ZgVWi/ZLwZYFNiTIX2V5Yt7RcBm9WCCbZ /gZnohylWxjS6iLZWI/Zb9hdHokwjcjN8z3BhsVdlVnYJgQBZESWIkGWB2Lf3xZ6gZOc 4t7VfyaNxy2zwAXOgwqqs2Kg7Jgc43C50WSGrxGEuYUr96ATeNus5DGbaNcrNxjA5b9J 6A== Original-Received: from aserp3030.oracle.com (aserp3030.oracle.com [141.146.126.71]) by userp2120.oracle.com with ESMTP id 30x3mbj05k-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL); Sun, 10 May 2020 19:42:07 +0000 Original-Received: from pps.filterd (aserp3030.oracle.com [127.0.0.1]) by aserp3030.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 04AJdQDr101938; Sun, 10 May 2020 19:42:06 GMT Original-Received: from aserv0122.oracle.com (aserv0122.oracle.com [141.146.126.236]) by aserp3030.oracle.com with ESMTP id 30x63k6st4-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Sun, 10 May 2020 19:42:06 +0000 Original-Received: from abhmp0018.oracle.com (abhmp0018.oracle.com [141.146.116.24]) by aserv0122.oracle.com (8.14.4/8.14.4) with ESMTP id 04AJg5jc013236; Sun, 10 May 2020 19:42:06 GMT In-Reply-To: <9e98ccbd-6b01-d076-79eb-6bd06ab803fb@gmail.com> X-Priority: 3 X-Mailer: Oracle Beehive Extensions for Outlook 2.0.1.9.1 (1003210) [OL 16.0.4993.0 (x86)] X-Proofpoint-Virus-Version: vendor=nai engine=6000 definitions=9617 signatures=668687 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxscore=0 spamscore=0 suspectscore=0 malwarescore=0 phishscore=0 adultscore=0 mlxlogscore=999 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2003020000 definitions=main-2005100183 X-Proofpoint-Virus-Version: vendor=nai engine=6000 definitions=9617 signatures=668687 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 priorityscore=1501 impostorscore=0 mlxscore=0 suspectscore=0 bulkscore=0 mlxlogscore=999 phishscore=0 malwarescore=0 lowpriorityscore=0 spamscore=0 adultscore=0 clxscore=1015 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2003020000 definitions=main-2005100183 Received-SPF: pass client-ip=156.151.31.85; envelope-from=drew.adams@oracle.com; helo=userp2120.oracle.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/05/10 15:35:26 X-ACL-Warn: Detected OS = Linux 3.1-3.10 [fuzzy] X-Spam_score_int: -43 X-Spam_score: -4.4 X-Spam_bar: ---- X-Spam_report: (-4.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_MED=-2.3, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001 autolearn=_AUTOLEARN X-Spam_action: no action X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.io gmane.emacs.devel:249713 Archived-At: > > Can you explain why using markers is not a good solution for this? >=20 > Of course: in brief, because we don't know where to put the markers. >=20 > The general problem is this: I send the contents of a buffer to a > subprocess. Some time later, the subprocess returns a list of > positions (offsets from the beginning of the buffer, or line/column > pairs, etc). At that point, these positions may be stale, since the > contents of the buffer may have changed. I need a way to translate > these positions (relative to the old buffer contents) into positions > relative to the new buffer contents. >=20 > Since we don't know beforehand what positions the subprocess will > return, I don't think markers can help; right? The closest example I can recall, of handling this kind of thing, is what is done for bookmarks. In that case, in addition to saving the position, some buffer text surrounding the position is saved, as context. In the case of bookmarks, saving can be, and often is, persistent.=20 Later (in the case of bookmarks, maybe MUCH later), when the bookmark is jumped to, the code first goes to the recorded position. It then looks ahead and back for context matches. If necessary and possible, it relocates the position based on the updated content and matching context. It can also prompt the user to confirm relocating to the newly found position. Dunno if such an approach is feasible/helpful in the case you're considering.