From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED.blaine.gmane.org!not-for-mail From: Gergely Risko Newsgroups: gmane.emacs.devel Subject: Re: find-file-hook, recenter, scroll-conservatively and save-place Date: Fri, 01 Feb 2019 12:18:05 +0100 Message-ID: <87ef8ru58y.fsf@errge.nilcons.com> References: <877eelupkc.fsf@errge.nilcons.com> <5C52FCDD.7010803@gmx.at> <878sz0o9nd.fsf@mail.linkov.net> <5C540BAF.3000602@gmx.at> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="177763"; mail-complaints-to="usenet@blaine.gmane.org" User-Agent: GNU Emacs with Gnus To: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Fri Feb 01 12:19:30 2019 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([209.51.188.17]) by blaine.gmane.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1gpWr3-000k33-Fx for ged-emacs-devel@m.gmane.org; Fri, 01 Feb 2019 12:19:29 +0100 Original-Received: from localhost ([127.0.0.1]:51568 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gpWqx-0003qT-8C for ged-emacs-devel@m.gmane.org; Fri, 01 Feb 2019 06:19:23 -0500 Original-Received: from eggs.gnu.org ([209.51.188.92]:47938) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gpWqI-0003qN-04 for emacs-devel@gnu.org; Fri, 01 Feb 2019 06:18:42 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gpWqB-0003Vs-Vh for emacs-devel@gnu.org; Fri, 01 Feb 2019 06:18:39 -0500 Original-Received: from [195.159.176.226] (port=55878 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gpWpy-0003N8-Jm for emacs-devel@gnu.org; Fri, 01 Feb 2019 06:18:29 -0500 Original-Received: from list by blaine.gmane.org with local (Exim 4.89) (envelope-from ) id 1gpWpu-000ijs-2I for emacs-devel@gnu.org; Fri, 01 Feb 2019 12:18:18 +0100 X-Injected-Via-Gmane: http://gmane.org/ Cancel-Lock: sha1:ppbaj7h7Yat4D96IcV114fTj558= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 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.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.org gmane.emacs.devel:232884 Archived-At: On 2019-02-01 10:04 (Friday), martin rudalics writes: > I have no practice with 'save-place-mode' so I can't tell. From my > experience I can only tell that it's disorienting when reverting a > buffer doesn't preserve window start. Thanks for catching this, the current proposal toggles the flag in save-place's hook even on revert-buffer. Fortunately we have revert-buffer-in-progress-p, so save-place could do like this: (defvar-local nce/flagged-for-recenter nil) (defun nce/flag-for-recenter () (when (not revert-buffer-in-progress-p) (setq-local nce/flagged-for-recenter t))) BTW, my previous fake implementation had some other bugs too :-( So if anyone is interested here is a better version (still supposed to be tested with --no-site-file --no-site-lisp --no-splash): -=-=-=-=-=- (save-place-mode 1) (setq vc-follow-symlinks t) (setq scroll-margin 3) (setq scroll-conservatively 101) (defvar-local nce/flagged-for-recenter nil) (defun nce/flag-for-recenter () (when (not revert-buffer-in-progress-p) ;; (message "setting %s %s" (current-buffer) (selected-window)) (setq-local nce/flagged-for-recenter t))) (defun nce/recenter-if-flagged (ad-do-it buffer &rest args) (let ((window (apply ad-do-it buffer args))) (when (buffer-local-value 'nce/flagged-for-recenter buffer) (with-selected-window window (with-current-buffer buffer ;; (message "unsetting %s" (current-buffer)) (setq-local nce/flagged-for-recenter nil) (condition-case nil (recenter) ('error t))))) window)) (add-hook 'find-file-hook 'nce/flag-for-recenter) (advice-add 'display-buffer :around 'nce/recenter-if-flagged) -=-=-=-=-=- Martin, I will change save-place to use `switch-to-buffer-obey-display-actions', as you suggested and will report back as soon as I have it. Should I prepare a patch based on these examples, so we have some existing code to talk about or should we try to come up with something better than buffer-local variables for passing the info? Cheers, Gergely