From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: =?utf-8?Q?=C3=93scar_Fuentes?= Newsgroups: gmane.emacs.devel Subject: Re: HG, git and others actualize the modeline when commit form the command line Date: Mon, 16 Nov 2020 17:36:18 +0100 Message-ID: <877dqlw96l.fsf@telefonica.net> References: <87blfxa2ww.fsf@mat.ucm.es> <87blfxwgov.fsf@telefonica.net> <87ima58f0s.fsf@mat.ucm.es> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="13549"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.1.50 (gnu/linux) To: emacs-devel@gnu.org Cancel-Lock: sha1:nTkrbgUmoFF4nefW/on+RAv8Vl4= Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Mon Nov 16 17:40:49 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 1kehYf-0003Q4-12 for ged-emacs-devel@m.gmane-mx.org; Mon, 16 Nov 2020 17:40:49 +0100 Original-Received: from localhost ([::1]:51552 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kehYd-0000V0-VQ for ged-emacs-devel@m.gmane-mx.org; Mon, 16 Nov 2020 11:40:48 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:36702) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kehUU-0003H1-Id for emacs-devel@gnu.org; Mon, 16 Nov 2020 11:36:30 -0500 Original-Received: from static.214.254.202.116.clients.your-server.de ([116.202.254.214]:37170 helo=ciao.gmane.io) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kehUS-0000Aj-Dw for emacs-devel@gnu.org; Mon, 16 Nov 2020 11:36:30 -0500 Original-Received: from list by ciao.gmane.io with local (Exim 4.92) (envelope-from ) id 1kehUO-0008Zh-5h for emacs-devel@gnu.org; Mon, 16 Nov 2020 17:36:24 +0100 X-Injected-Via-Gmane: http://gmane.org/ Received-SPF: pass client-ip=116.202.254.214; envelope-from=ged-emacs-devel@m.gmane-mx.org; helo=ciao.gmane.io X-detected-operating-system: by eggs.gnu.org: First seen = 2020/11/16 11:02:13 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -15 X-Spam_score: -1.6 X-Spam_bar: - X-Spam_report: (-1.6 / 5.0 requ) BAYES_00=-1.9, HEADER_FROM_DIFFERENT_DOMAINS=0.25, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no 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:259238 Archived-At: Uwe Brauer writes: > > Uwe Brauer writes: > > > This is what I use for git, wrapped into a command: > > > (vc-file-clearprops buffer-file-name) > > (vc-state-refresh buffer-file-name 'Git) > > (vc-mode-line buffer-file-name 'Git) > > > Of course, Eli's suggestion also works, although it does a lot more > > than updating VC state display. > > Yeah the revert function is a bit slow. So you have something like this > > (defun my-refresh-vc-stuff () > (interactive) > (vc-file-clearprops buffer-file-name) > (vc-state-refresh buffer-file-name 'Git) > (vc-mode-line buffer-file-name 'Git)) > > And bind that to key or insert it into a hook? I use those functions on a magit fork of mine (for updating the modeline after certain magit commands) but, for your use case, IMO a command like your example above is what you need. You can even travel the buffer list, so you don't need to execute the command for every buffer that might be affected: (dolist (buffer (buffer-list)) (when (string-prefix-p (expand-file-name default-directory) (buffer-file-name buffer)) (with-current-buffer buffer (with-demoted-errors "Error mientras revirtiendo (ignorado) %S" (if (and vc-mode (buffer-stale--default-function t) (not (buffer-modified-p))) (revert-buffer t t) (vc-file-clearprops buffer-file-name) (vc-state-refresh buffer-file-name 'Git) (vc-mode-line buffer-file-name 'Git)))))) The code above travels the buffers and, for each buffer which is visiting a file under the current directory or its childs, either reverts the buffer (if it is not modified and its contents might have changed) or just updates the modeline. As you also use Hg, you need to adapt the code for using the correct backeng on each case: (vc-backend buffer-file-name) looks like the correct thing, but I didn't test it.