From debbugs-submit-bounces@debbugs.gnu.org Mon Aug 27 10:51:18 2018 Received: (at submit) by debbugs.gnu.org; 27 Aug 2018 14:51:18 +0000 Received: from localhost ([127.0.0.1]:34397 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fuIrN-0006vB-PM for submit@debbugs.gnu.org; Mon, 27 Aug 2018 10:51:18 -0400 Received: from eggs.gnu.org ([208.118.235.92]:57292) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fuG1s-0000OD-A6 for submit@debbugs.gnu.org; Mon, 27 Aug 2018 07:49:56 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fuG1m-00088a-FZ for submit@debbugs.gnu.org; Mon, 27 Aug 2018 07:49:51 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=BAYES_20,FREEMAIL_FROM, T_DKIM_INVALID autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:43850) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1fuG1m-00087h-B9 for submit@debbugs.gnu.org; Mon, 27 Aug 2018 07:49:50 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50042) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fuG1l-0002Ch-GI for bug-gnu-emacs@gnu.org; Mon, 27 Aug 2018 07:49:50 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fuG1h-0007xp-GC for bug-gnu-emacs@gnu.org; Mon, 27 Aug 2018 07:49:49 -0400 Received: from mail-lf1-x12f.google.com ([2a00:1450:4864:20::12f]:38865) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fuG1h-0007uy-6S for bug-gnu-emacs@gnu.org; Mon, 27 Aug 2018 07:49:45 -0400 Received: by mail-lf1-x12f.google.com with SMTP id i7-v6so11688421lfh.5 for ; Mon, 27 Aug 2018 04:49:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:content-transfer-encoding:mime-version:subject:message-id:date :to; bh=kS3Ievau/VVa72y9ZNwNHxPKmicfHi6vpYdMO1y9gjk=; b=bCNmFQnjCZGr8p+lj1jENT5W7T0CSNrJENPhj7xDZk6GmLj7VcbvZrGn0biuH/aX3X VwrYiCwSzHpkVbQzV+fXd3lY3mkT8c3VTv/T5SuWvFI4d0+zBCJDAhnI/BB/ncGkg8r0 lzzgi1wIdlbhxVBbFO00w1oKMPuTY5H9yHeVtDnJ8QRflkmcbKvpI4xIjbsl4la5HcF0 4dQxz9GBHiciHSn5+P+0iNlDZQurLbAhJJfOxPXphWXF/jXQp6YAXGl8Oeh+qTdXlvai jJQbLSicBITjgJpWEeZ7bhGZX8vu3+kTuV96eckdqBjrZJ30pVGN1fM6ImJ2dfAyQdOQ B4AQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:content-transfer-encoding:mime-version :subject:message-id:date:to; bh=kS3Ievau/VVa72y9ZNwNHxPKmicfHi6vpYdMO1y9gjk=; b=tAV43cmoaUkB9auo6b36vbVOb5DZmSRbq3DbI9VdbnF6qpOljlfRSgyJe8XTEWz2Sb DrgLR+EpZkcz8ywgwFehbB4zlisaVQnIhFYUJQBFaMAr8gkdhLxBfIKFy9YNGmTk2jSt KpWRV8nG5gSdbE996t/DrZQdLBiS9j3UwZoTVWWB9Ska7p49tcJ05HG5iiJqkSRG8D0l 5ljn9r8vCyciYi4T4v2c0GG1+Wrrq5+0y/zf/C/RpSG+Gf7gmpVWpufDVw4MPQ6ut/KM 3/rTr2329/Ar45uPfsMw57ljXPZnuRoncd8l3iA30UyMGqwGLda9jbmfSOU86us8eNuM El+g== X-Gm-Message-State: APzg51BtyN+968U97UZrGAX6Iu+Taxu6Nt9GI8OILhcO6vazEbtQf8lt +cGarN3+eVmzhk1FAsMcDrPLxNmw X-Google-Smtp-Source: ANB0VdbRdZH5UFETzUZQiaxoQyoGzsLkUTaFDkDFNOPjsqOsANTlO44nr06uOj+cK/oU4Zh3ZInC4g== X-Received: by 2002:a19:d204:: with SMTP id j4-v6mr7844917lfg.139.1535370583413; Mon, 27 Aug 2018 04:49:43 -0700 (PDT) Received: from [10.1.1.179] (188-42-207-82.ip.ukrtel.net. [82.207.42.188]) by smtp.gmail.com with ESMTPSA id t14-v6sm2441074ljg.17.2018.08.27.04.49.42 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 27 Aug 2018 04:49:42 -0700 (PDT) From: Andrey Kolomoets Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: quoted-printable Mime-Version: 1.0 (Mac OS X Mail 11.5 \(3445.9.1\)) Subject: 26.1; list-matching-lines-jump-to-current breaks revert-buffer in occur-mode Message-Id: <84223559-4256-4BC9-A603-4D6C11A8EF06@gmail.com> Date: Mon, 27 Aug 2018 14:49:41 +0300 To: bug-gnu-emacs@gnu.org X-Mailer: Apple Mail (2.3445.9.1) X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -4.0 (----) X-Debbugs-Envelope-To: submit X-Mailman-Approved-At: Mon, 27 Aug 2018 10:51:13 -0400 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -5.0 (-----) 0. emacs -Q 1. M-: (setq list-matching-lines-jump-to-current-line t) 2. M-s o text 3. C-x o 4. g (wrong-type-argument number-or-marker-p nil) occur-engine("text" (#) # 0 t = underline shadow match t) occur-1("text" nil (#) "*Occur*") apply(occur-1 ("text" nil (#) "*Occur*")) occur-revert-function(t nil) revert-buffer(t) funcall-interactively(revert-buffer t) call-interactively(revert-buffer nil nil) command-execute(revert-buffer) I think it's because occur--orig-line not initialized in = occur-revert-function and it fails on (when (and list-matching-lines-jump-to-current-line (null orig-line-shown-p) (> curr-line orig-line)) In GNU Emacs 26.1 and still in 27.0.50 From debbugs-submit-bounces@debbugs.gnu.org Sat Sep 01 18:50:20 2018 Received: (at 32543) by debbugs.gnu.org; 1 Sep 2018 22:50:20 +0000 Received: from localhost ([127.0.0.1]:42213 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fwEii-00024g-BI for submit@debbugs.gnu.org; Sat, 01 Sep 2018 18:50:20 -0400 Received: from pop.dreamhost.com ([64.90.62.162]:53020 helo=pdx1-sub0-mail-a39.g.dreamhost.com) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fwEig-00024Y-0a for 32543@debbugs.gnu.org; Sat, 01 Sep 2018 18:50:18 -0400 Received: from pdx1-sub0-mail-a39.g.dreamhost.com (localhost [127.0.0.1]) by pdx1-sub0-mail-a39.g.dreamhost.com (Postfix) with ESMTP id 086C67FA7F; Sat, 1 Sep 2018 15:50:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=linkov.net; h=from:to:cc :subject:references:date:in-reply-to:message-id:mime-version :content-type; s=linkov.net; bh=iqpJUBOX1zL3jyCPiOn6iHgMJSg=; b= sHD+7vi/U4iF/IlbkBW6nHZVP8seCd/pwX8LuIhPmTNq+b5oEssaoRL5ifhcVcC2 EW1W6JlngSEaLNPp9EquSbgS5VouZY2Aa+M1K2ByPP8mrMaf5Xp9Blut83dA6b/p NgHEvVfudcpD4TSfXXy6cn8wpFyABYXFXWGdgtYJLtQ= Received: from localhost.linkov.net (m91-129-101-104.cust.tele2.ee [91.129.101.104]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) (Authenticated sender: jurta@jurta.org) by pdx1-sub0-mail-a39.g.dreamhost.com (Postfix) with ESMTPSA id 1384E7FA7C; Sat, 1 Sep 2018 15:50:14 -0700 (PDT) From: Juri Linkov To: Andrey Kolomoets Subject: Re: bug#32543: 26.1; list-matching-lines-jump-to-current breaks revert-buffer in occur-mode Organization: LINKOV.NET References: <84223559-4256-4BC9-A603-4D6C11A8EF06@gmail.com> Date: Sun, 02 Sep 2018 01:49:08 +0300 In-Reply-To: <84223559-4256-4BC9-A603-4D6C11A8EF06@gmail.com> (Andrey Kolomoets's message of "Mon, 27 Aug 2018 14:49:41 +0300") Message-ID: <87d0tw96l7.fsf@mail.linkov.net> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 32543 Cc: 32543@debbugs.gnu.org, tino.calancha@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) > 0. emacs -Q > 1. M-: (setq list-matching-lines-jump-to-current-line t) > 2. M-s o text > 3. C-x o > 4. g > > (wrong-type-argument number-or-marker-p nil) > occur-engine("text" (#) # 0 t underline shadow match t) > occur-1("text" nil (#) "*Occur*") > apply(occur-1 ("text" nil (#) "*Occur*")) > occur-revert-function(t nil) > revert-buffer(t) > funcall-interactively(revert-buffer t) > call-interactively(revert-buffer nil nil) > command-execute(revert-buffer) > > I think it's because occur--orig-line not initialized in occur-revert-function and it fails on > > (when (and list-matching-lines-jump-to-current-line > (null orig-line-shown-p) > (> curr-line orig-line)) We have two solutions here: on reverting reset the current line number to the default numeric value of occur--orig-line (e.g. 0), or better to remember occur--orig-line in occur-revert-arguments. Maybe Tino has better ideas (Cc'ed). From debbugs-submit-bounces@debbugs.gnu.org Mon Sep 03 08:34:30 2018 Received: (at 32543) by debbugs.gnu.org; 3 Sep 2018 12:34:30 +0000 Received: from localhost ([127.0.0.1]:43704 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fwo3p-00018X-P0 for submit@debbugs.gnu.org; Mon, 03 Sep 2018 08:34:30 -0400 Received: from mail-wm0-f65.google.com ([74.125.82.65]:35783) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fwo3n-00018K-2A for 32543@debbugs.gnu.org; Mon, 03 Sep 2018 08:34:27 -0400 Received: by mail-wm0-f65.google.com with SMTP id o18-v6so1010154wmc.0 for <32543@debbugs.gnu.org>; Mon, 03 Sep 2018 05:34:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:in-reply-to:references:user-agent:date :message-id:mime-version; bh=Xik4d6CzgcwilxQ8hN7l0Nd6palv5nB00y7Livi8Vqc=; b=dx5m65R3C6F0TXUv9zw2Ope4ZFdkynVVt99eP+9I3V20iBb9JqNUqt3SDoF78J4SO4 DvcplX4UybQ2UYOBsJetV3S+OCtbaVsfsg9XlkyQsxA34tX/oyxZi2oFiSr/HIOzJg85 Q0GwzBvb66iDaPTEsqaVVjUlbDbPrrKYo9kKZIp8NQuBm+UgcjjcIW3/jGTdr0p8VGSz 6fJj3/5LjGvZXh4ucXbzeSllJ+FV/X26kdCH1WUIW1g5SmCvo/OAqVBtnUSD32Ubj9h9 Pkcb+TV3McCqBLQjKG87gEpl89Ro2zmx+7gQJbQC7s2OaC7k4k4JI14I9j7fpTGv+F0o L1SA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:in-reply-to:references :user-agent:date:message-id:mime-version; bh=Xik4d6CzgcwilxQ8hN7l0Nd6palv5nB00y7Livi8Vqc=; b=T+lz6gdoD42osuTLXD8N2dqXlFlPjjWbYFQUNFb8TK571zUx7gQUq1Z4aw9GmXv+hM U3vzGxaBcBgoXTk3LaMeuQcSaxz/847ZwWeq9D3N4+fx55qGKCR/HY/iXCYwjlmNEN0J 10w15iqHo+0WzipFyT8kWBhZb1aCSJP8peEMTs7n/AY04MWrgAIAhqgkpQL09rBZbzMs zrJS93N5D+KXW+4zCyvwP1K7iB+kUDykFJTNYuAzXayzXo20sVZaiG8i8RZDVrzHt9TN Uao0UFLmVls2MrDRiIFPzbXRfeZ2g0IqgXuGoQzSElz4HTUmrsrgXvmyj0C+Xu8Ivgs3 vsyQ== X-Gm-Message-State: APzg51B6+31UozetwSGvTZv4U5LdCjGtks/OXavdmv7jDtBiBjLVBelt gG/Vt7m4alWtFhN/V8OXohMF/uar X-Google-Smtp-Source: ANB0VdaPzy1qhbghCdgQzPLIM+0d1jmb4QKHfMO2l7M00R1Qp1NGvLkp5Jp1GLAAzsvrgrd6iJ0chQ== X-Received: by 2002:a1c:8f0e:: with SMTP id r14-v6mr5329106wmd.79.1535978061064; Mon, 03 Sep 2018 05:34:21 -0700 (PDT) Received: from calancha-pc.dy.bbexcite.jp (49.red-83-45-242.dynamicip.rima-tde.net. [83.45.242.49]) by smtp.gmail.com with ESMTPSA id s131-v6sm14581579wmf.2.2018.09.03.05.34.20 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 03 Sep 2018 05:34:20 -0700 (PDT) From: Tino Calancha To: Juri Linkov Subject: Re: bug#32543: 26.1; list-matching-lines-jump-to-current breaks revert-buffer in occur-mode In-Reply-To: <87d0tw96l7.fsf@mail.linkov.net> (Juri Linkov's message of "Sun, 02 Sep 2018 01:49:08 +0300") References: <84223559-4256-4BC9-A603-4D6C11A8EF06@gmail.com> <87d0tw96l7.fsf@mail.linkov.net> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux) Date: Mon, 03 Sep 2018 21:34:15 +0900 Message-ID: <87o9deahfc.fsf@calancha-pc.dy.bbexcite.jp> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 32543 Cc: 32543@debbugs.gnu.org, Andrey Kolomoets X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Juri Linkov writes: > We have two solutions here: on reverting reset the current line number to > the default numeric value of occur--orig-line (e.g. 0), or better to > remember occur--orig-line in occur-revert-arguments. Maybe Tino has > better ideas (Cc'ed). How about we store such info in the *Occur* header line as text properties? Then we don't need to modify `occur-revert-arguments'. Following patch implement this way: --8<-----------------------------cut here---------------start------------->8--- commit 8fbe516c404a8993c1fc22cdf75e4c553ec1f1a8 Author: Tino Calancha Date: Mon Sep 3 21:24:38 2018 +0900 Fix bug 32543 Store the region and orig line into the *Occur* header line. Retrieve this information in `occur-revert-function'. * lisp/replace.el (occur--parse-occur-buffer): New defun. (occur-revert-function): Use it. (occur-engine): Store region and original position as text properties into the *Occur* header line. * lisp/replace.el (occur-engine): Add sensible default values for (occur--orig-line and nlines. diff --git a/lisp/replace.el b/lisp/replace.el index 20b868a765..638ad3b368 100644 --- a/lisp/replace.el +++ b/lisp/replace.el @@ -1206,9 +1206,38 @@ occur-after-change-function (move-to-column col))))))) +(defun occur--parse-occur-buffer() + "Retrieve a list of the form (BEG END ORIG-LINE BUFFER). +BEG and END define the region. +ORIG-LINE and BUFFER are the line and the buffer from which +the user called `occur'." + (save-excursion + (goto-char (point-min)) + (let ((buffer (get-text-property (point-at-bol) 'occur-title)) + (beg-pos (get-text-property (point-at-bol) 'region-start)) + (end-pos (get-text-property (point-at-bol) 'region-end)) + (orig-line (get-text-property (point-at-bol) 'current-line)) + beg-line end-line) + (list beg-pos end-pos orig-line buffer)))) + (defun occur-revert-function (_ignore1 _ignore2) "Handle `revert-buffer' for Occur mode buffers." - (apply 'occur-1 (append occur-revert-arguments (list (buffer-name))))) + (if (cdr (nth 2 occur-revert-arguments)) ; multi-occur + (apply 'occur-1 (append occur-revert-arguments (list (buffer-name)))) + (let* ((region (occur--parse-occur-buffer)) + (region-start (car region)) + (region-end (cadr region)) + (orig-line (caddr region)) + (buffer (cadddr region)) + (regexp (car occur-revert-arguments))) + (with-current-buffer buffer + (when (wholenump orig-line) + (goto-char 1) + (forward-line (1- orig-line))) + (save-excursion + (if region + (occur regexp nil (list (cons region-start region-end))) + (apply 'occur-1 (append occur-revert-arguments (list (buffer-name)))))))))) (defun occur-mode-find-occurrence () (let ((pos (get-text-property (point) 'occur-target))) @@ -1651,7 +1680,7 @@ occur-engine (matches 0) ;; count of matches (curr-line ;; line count (or occur--region-start-line 1)) - (orig-line occur--orig-line) + (orig-line (or occur--orig-line 1)) (orig-line-shown-p) (prev-line nil) ;; line number of prev match endpt (prev-after-lines nil) ;; context lines of prev match @@ -1701,6 +1730,8 @@ occur-engine (setq matches (1+ matches))) (when (and list-matching-lines-jump-to-current-line (not multi-occur-p)) + (or orig-line (setq orig-line 1)) + (or nlines (setq nlines (line-number-at-pos (point-max)))) (when (= curr-line orig-line) (add-face-text-property 0 len list-matching-lines-current-line-face nil curstring) @@ -1859,7 +1890,9 @@ occur-engine "")) 'read-only t)) (setq end (point)) - (add-text-properties beg end `(occur-title ,buf)) + (add-text-properties beg end `(occur-title ,buf current-line ,orig-line + region-start ,occur--region-start + region-end ,occur--region-end)) (when title-face (add-face-text-property beg end title-face)) (goto-char (if (and list-matching-lines-jump-to-current-line --8<-----------------------------cut here---------------end--------------->8--- In GNU Emacs 27.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.22.11) of 2018-09-03 Repository revision: db2fed3bdfb351c3283e481829ce687931d27a3d From debbugs-submit-bounces@debbugs.gnu.org Mon Sep 03 18:45:20 2018 Received: (at 32543) by debbugs.gnu.org; 3 Sep 2018 22:45:20 +0000 Received: from localhost ([127.0.0.1]:44726 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fwxax-0001V6-Sw for submit@debbugs.gnu.org; Mon, 03 Sep 2018 18:45:20 -0400 Received: from pop.dreamhost.com ([64.90.62.162]:41838 helo=pdx1-sub0-mail-a22.g.dreamhost.com) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fwxaw-0001Uz-EU for 32543@debbugs.gnu.org; Mon, 03 Sep 2018 18:45:18 -0400 Received: from pdx1-sub0-mail-a22.g.dreamhost.com (localhost [127.0.0.1]) by pdx1-sub0-mail-a22.g.dreamhost.com (Postfix) with ESMTP id E9DF57F316; Mon, 3 Sep 2018 15:45:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=linkov.net; h=from:to:cc :subject:references:date:in-reply-to:message-id:mime-version :content-type; s=linkov.net; bh=UD2kdbmO5DzJKxoyVTamDzu9r00=; b= tbNzxuYjaQvr4WMpyJrWodra5uuX7Hz1amUj4JD56iprM0NDkkTJuPX3GVfLnxZR xjdXREpediOuDaKr43lrSGabPnK4HlO2e3nlAdtrej4cFuJRud0WjAuKouVtwJdT g/H0tgfVaJ820A2NkURpEh9+fi2uiZuZ1eOjTzK9YLo= Received: from localhost.linkov.net (m91-129-101-104.cust.tele2.ee [91.129.101.104]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) (Authenticated sender: jurta@jurta.org) by pdx1-sub0-mail-a22.g.dreamhost.com (Postfix) with ESMTPSA id BC5EE7F30A; Mon, 3 Sep 2018 15:45:16 -0700 (PDT) From: Juri Linkov To: Tino Calancha Subject: Re: bug#32543: 26.1; list-matching-lines-jump-to-current breaks revert-buffer in occur-mode Organization: LINKOV.NET References: <84223559-4256-4BC9-A603-4D6C11A8EF06@gmail.com> <87d0tw96l7.fsf@mail.linkov.net> <87o9deahfc.fsf@calancha-pc.dy.bbexcite.jp> Date: Tue, 04 Sep 2018 01:41:29 +0300 In-Reply-To: <87o9deahfc.fsf@calancha-pc.dy.bbexcite.jp> (Tino Calancha's message of "Mon, 03 Sep 2018 21:34:15 +0900") Message-ID: <87ftyqryp2.fsf@mail.linkov.net> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 32543 Cc: 32543@debbugs.gnu.org, Andrey Kolomoets X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) > How about we store such info in the *Occur* header line as text > properties? > Then we don't need to modify `occur-revert-arguments'. I agree it's one of legitimate places to store information about the buffer. > + (let* ((region (occur--parse-occur-buffer)) > + (region-start (car region)) > + (region-end (cadr region)) > + (orig-line (caddr region)) > + (buffer (cadddr region)) Better to use (nth 1), (nth 2), (nth 3), ... From debbugs-submit-bounces@debbugs.gnu.org Thu Sep 06 06:55:56 2018 Received: (at 32543) by debbugs.gnu.org; 6 Sep 2018 10:55:56 +0000 Received: from localhost ([127.0.0.1]:47712 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fxrx5-0008Au-SD for submit@debbugs.gnu.org; Thu, 06 Sep 2018 06:55:56 -0400 Received: from mail-wr1-f66.google.com ([209.85.221.66]:39273) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fxrx2-0008Ab-O1 for 32543@debbugs.gnu.org; Thu, 06 Sep 2018 06:55:54 -0400 Received: by mail-wr1-f66.google.com with SMTP id s14-v6so1915710wrw.6 for <32543@debbugs.gnu.org>; Thu, 06 Sep 2018 03:55:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=EgbvUfa8jl4xzXYxEG/zYkB6hFyAhogB5fUWpKYzkGo=; b=WebSsw5IKNcE3jrsr3QBZ98rHci6iC60vxXcpA342PlVDJDhCrhxGARMQPW6O8L9Dp oaU1x5I0zpnHQ7SdkMfGfwE6i+Jr/oi61T3cldC44TESwL+c1r9cYtiscjEUW6/G/4ZC +dj/pGIdSFvTU5WJBILlzbyC/+MLg76qbOihNBFt7fzr4iEo0RzZyQN3uBqqMAKRUWSR QSX9vcwJZw8UiSzcbOu1jkiyr7NDzRH69/twK3fVkveYVkL1cHaMegZa8uGtAa5YlLiP cUVsdSF7qB0hMYFfaKUcv5QYlhkcu/j2BOvLD3ww+EBlaZEJuzVlk9SEuefOCPPrpE67 AFqw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version; bh=EgbvUfa8jl4xzXYxEG/zYkB6hFyAhogB5fUWpKYzkGo=; b=A9892u0CuaieXY7N4di3Ph2uC0P0+2XoWrU5qDjq/U/zJ/U8Npz6UrS2cZ1Y3iIKIw fhsl7X7VnXlmEu7OevzAeW6iI/QWq47VKjxAsDBpr07nUyCkSh8uKn1IjvQxdGkiBq4j r/GNPXETpHh91SXZjy2CWi++Ap2U9v5AV3RFnydVWF5WuX55QPqvmsxvuFVayAMv52Z1 ynbptzc8yHektWdzvV5aTmCSyZT25/EsK8YgS+PEKI1GnC5DCsPCISVB4rhI+VHKf+Ol MumVfTSjhTc7+udpPiIaDLkIquSBrYlUkfzjiZ85TnDC0vshO5AjcwNDnnSsfUJnxQrO KLqw== X-Gm-Message-State: APzg51DDYYLcVxST4IWkVC+DMNpRbqGTg7ws3xlZRyd1jyIFMdDnpS8+ mYH8aIO1nl2JlAqNl8uICVU= X-Google-Smtp-Source: ANB0VdYaIEfrYpiIa9rUa//OXzpGT5+2AXFu/oHtI+o3YzDVt9wG9SrObfJ5+WcUIw6cQX0TwTo60g== X-Received: by 2002:adf:92c2:: with SMTP id 60-v6mr1860946wrn.153.1536231346927; Thu, 06 Sep 2018 03:55:46 -0700 (PDT) Received: from calancha-pc.dy.bbexcite.jp ([213.99.246.133]) by smtp.gmail.com with ESMTPSA id 34-v6sm3980391wra.20.2018.09.06.03.55.45 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 06 Sep 2018 03:55:46 -0700 (PDT) From: Tino Calancha To: Juri Linkov Subject: Re: bug#32543: 26.1; list-matching-lines-jump-to-current breaks revert-buffer in occur-mode References: <84223559-4256-4BC9-A603-4D6C11A8EF06@gmail.com> <87d0tw96l7.fsf@mail.linkov.net> <87o9deahfc.fsf@calancha-pc.dy.bbexcite.jp> <87ftyqryp2.fsf@mail.linkov.net> Date: Thu, 06 Sep 2018 19:55:41 +0900 In-Reply-To: <87ftyqryp2.fsf@mail.linkov.net> (Juri Linkov's message of "Tue, 04 Sep 2018 01:41:29 +0300") Message-ID: <87h8j2ao9e.fsf@calancha-pc.dy.bbexcite.jp> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 32543 Cc: 32543@debbugs.gnu.org, Andrey Kolomoets X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Juri Linkov writes: >> + (let* ((region (occur--parse-occur-buffer)) >> + (region-start (car region)) >> + (region-end (cadr region)) >> + (orig-line (caddr region)) >> + (buffer (cadddr region)) > > Better to use (nth 1), (nth 2), (nth 3), ... Yeah, it reads better. Here is the updated patch: --8<-----------------------------cut here---------------start------------->8--- commit 88588f772a82397e8c60e0e066507b3d67b72848 Author: Tino Calancha Date: Thu Sep 6 19:48:18 2018 +0900 Fix bug 32543 Store the region and orig line into the *Occur* header line. Retrieve this information in `occur-revert-function'. * lisp/replace.el (occur--parse-occur-buffer): New defun. (occur-revert-function): Use it. (occur-engine): Store region and original position as text properties into the *Occur* header line. * lisp/replace.el (occur-engine): Add sensible default values for (occur--orig-line and nlines. diff --git a/lisp/replace.el b/lisp/replace.el index 20b868a765..093993a3b6 100644 --- a/lisp/replace.el +++ b/lisp/replace.el @@ -1206,9 +1206,38 @@ occur-after-change-function (move-to-column col))))))) +(defun occur--parse-occur-buffer() + "Retrieve a list of the form (BEG END ORIG-LINE BUFFER). +BEG and END define the region. +ORIG-LINE and BUFFER are the line and the buffer from which +the user called `occur'." + (save-excursion + (goto-char (point-min)) + (let ((buffer (get-text-property (point-at-bol) 'occur-title)) + (beg-pos (get-text-property (point-at-bol) 'region-start)) + (end-pos (get-text-property (point-at-bol) 'region-end)) + (orig-line (get-text-property (point-at-bol) 'current-line)) + beg-line end-line) + (list beg-pos end-pos orig-line buffer)))) + (defun occur-revert-function (_ignore1 _ignore2) "Handle `revert-buffer' for Occur mode buffers." - (apply 'occur-1 (append occur-revert-arguments (list (buffer-name))))) + (if (cdr (nth 2 occur-revert-arguments)) ; multi-occur + (apply 'occur-1 (append occur-revert-arguments (list (buffer-name)))) + (let* ((region (occur--parse-occur-buffer)) + (region-start (nth 0 region)) + (region-end (nth 1 region)) + (orig-line (nth 2 region)) + (buffer (nth 3 region)) + (regexp (car occur-revert-arguments))) + (with-current-buffer buffer + (when (wholenump orig-line) + (goto-char 1) + (forward-line (1- orig-line))) + (save-excursion + (if region + (occur regexp nil (list (cons region-start region-end))) + (apply 'occur-1 (append occur-revert-arguments (list (buffer-name)))))))))) (defun occur-mode-find-occurrence () (let ((pos (get-text-property (point) 'occur-target))) @@ -1651,7 +1680,7 @@ occur-engine (matches 0) ;; count of matches (curr-line ;; line count (or occur--region-start-line 1)) - (orig-line occur--orig-line) + (orig-line (or occur--orig-line 1)) (orig-line-shown-p) (prev-line nil) ;; line number of prev match endpt (prev-after-lines nil) ;; context lines of prev match @@ -1701,6 +1730,8 @@ occur-engine (setq matches (1+ matches))) (when (and list-matching-lines-jump-to-current-line (not multi-occur-p)) + (or orig-line (setq orig-line 1)) + (or nlines (setq nlines (line-number-at-pos (point-max)))) (when (= curr-line orig-line) (add-face-text-property 0 len list-matching-lines-current-line-face nil curstring) @@ -1859,7 +1890,9 @@ occur-engine "")) 'read-only t)) (setq end (point)) - (add-text-properties beg end `(occur-title ,buf)) + (add-text-properties beg end `(occur-title ,buf current-line ,orig-line + region-start ,occur--region-start + region-end ,occur--region-end)) (when title-face (add-face-text-property beg end title-face)) (goto-char (if (and list-matching-lines-jump-to-current-line --8<-----------------------------cut here---------------end--------------->8--- In GNU Emacs 27.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.22.11) of 2018-09-06 Repository revision: bca35315e16cb53415649e5c0ac2ec0cc1368679 From debbugs-submit-bounces@debbugs.gnu.org Tue Sep 18 08:34:02 2018 Received: (at 32543-done) by debbugs.gnu.org; 18 Sep 2018 12:34:02 +0000 Received: from localhost ([127.0.0.1]:43767 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1g2FCc-0000ES-Ij for submit@debbugs.gnu.org; Tue, 18 Sep 2018 08:34:02 -0400 Received: from mail-wr1-f50.google.com ([209.85.221.50]:35843) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1g2FCb-0000Dz-91 for 32543-done@debbugs.gnu.org; Tue, 18 Sep 2018 08:34:01 -0400 Received: by mail-wr1-f50.google.com with SMTP id e1-v6so1922738wrt.3 for <32543-done@debbugs.gnu.org>; Tue, 18 Sep 2018 05:34:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:references:date:in-reply-to:message-id:user-agent :mime-version; bh=L2UvHvRiXDtlsrEl51Dca5dczb1UzgsNZkmrJ2PXqSA=; b=sG4WBJJ34yYtoxp/jMHEVnBM6VBvdfau0jQcxIQleWKsqVlHj0ejrHeFNICrczXkeV uuyCVxkG2ik+hwWf75/550js1LGeTu+LSbGxl1jLErENBYjMYDMeSlMEUJiwoZ5Xjaz0 TljuhE+qQDKgdx++3ZCkz/w2qxzjXEqkmkp6uTClABBmEDz1kfjowIoMNgxnvtWWzBm5 poVu9vRDb2NPaKSl8UJfG2BIz+zDjcOox8bbVYXK4cdhvT0hv1/gdgdGJrT11mmL7dFq 1wUycEiDi91Zt4BB3FwDpJIg/KXVqas7kqphvcX9WE92wELPxh7Pn2dX8FAa/58uFBD+ LEKg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:references:date:in-reply-to :message-id:user-agent:mime-version; bh=L2UvHvRiXDtlsrEl51Dca5dczb1UzgsNZkmrJ2PXqSA=; b=s/sXLlGwGId3vvGMsqBHOhaRkGmYlql/+VvRXnda35XQSqbTuhXf42EG2mGCsLowW7 DMO09gCYKB0/IT9vbHvp7fBZug+m78sKOBUEs9LgACOz8virDxdpBOzcVJrzyZ7DXNDw WB7m7zlY0s5XB/ci4Ebcz3f58iQtfEMoIWiYUUPjbn4eI7YJNap9/OCOGlm0o72JbO73 zjHkZ3BIw5tNyecxBmfQpZBzFZzEteT6ijejRsDngyvIPdJxsbBHQbk7CKtlLQLQi66i nQC8Sjd4B9iQmBvj5OqviI3nYmmyhO1zgVxu6MLNEOXUYGus6egoLeGKuVa7HbahUHaC EH1w== X-Gm-Message-State: APzg51A6OOVsSM02WqdW1eNBBXG8hK41Z/B/MNkac0QdakdT0Q5HNLaQ kYTj6BdPjF4nuFYQNfn5vFhshsjI X-Google-Smtp-Source: ANB0VdZx0gIoSxv10bfNSPKO3yF6bzGh50xicyb8bBcMTP5TzBI5KJ6LSBerWn/CW8/AWlyPOVCxNw== X-Received: by 2002:adf:fc84:: with SMTP id g4-v6mr5893512wrr.166.1537274035026; Tue, 18 Sep 2018 05:33:55 -0700 (PDT) Received: from calancha-pc.dy.bbexcite.jp (15.red-83-50-151.dynamicip.rima-tde.net. [83.50.151.15]) by smtp.gmail.com with ESMTPSA id i4-v6sm14674627wrs.85.2018.09.18.05.33.53 for <32543-done@debbugs.gnu.org> (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 18 Sep 2018 05:33:54 -0700 (PDT) From: Tino Calancha To: 32543-done@debbugs.gnu.org Subject: Re: bug#32543: 26.1; list-matching-lines-jump-to-current breaks revert-buffer in occur-mode References: <84223559-4256-4BC9-A603-4D6C11A8EF06@gmail.com> <87d0tw96l7.fsf@mail.linkov.net> <87o9deahfc.fsf@calancha-pc.dy.bbexcite.jp> <87ftyqryp2.fsf@mail.linkov.net> <87h8j2ao9e.fsf@calancha-pc.dy.bbexcite.jp> Date: Tue, 18 Sep 2018 21:33:47 +0900 In-Reply-To: <87h8j2ao9e.fsf@calancha-pc.dy.bbexcite.jp> (Tino Calancha's message of "Thu, 06 Sep 2018 19:55:41 +0900") Message-ID: <87fty77zo4.fsf@calancha-pc.dy.bbexcite.jp> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 32543-done X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Tino Calancha writes: > Juri Linkov writes: > >>> + (let* ((region (occur--parse-occur-buffer)) >>> + (region-start (car region)) >>> + (region-end (cadr region)) >>> + (orig-line (caddr region)) >>> + (buffer (cadddr region)) >> >> Better to use (nth 1), (nth 2), (nth 3), ... > Yeah, it reads better. > Here is the updated patch: Fixed in master branch as commit 'Fix bug 32543' (75d9a55fae1c484aa6d213064931bfe3b65cf5dd) From unknown Tue Sep 09 22:28:52 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Wed, 17 Oct 2018 11:24:04 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # bug archived. thanks # This fakemail brought to you by your local debbugs # administrator