From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Juri Linkov Newsgroups: gmane.emacs.bugs Subject: bug#66464: Vc mode-line Date: Sat, 11 Nov 2023 20:50:12 +0200 Organization: LINKOV.NET Message-ID: <86r0kw3z67.fsf@mail.linkov.net> References: <86a5spm8be.fsf@mail.linkov.net> <86v8antf36.fsf@mail.linkov.net> <86ttpu98wd.fsf@mail.linkov.net> <5c8d51aa-8625-9b2c-3c15-037b5d10de08@gutov.dev> <868r76p16h.fsf@mail.linkov.net> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="17491"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/30.0.50 (x86_64-pc-linux-gnu) Cc: 66464@debbugs.gnu.org To: Dmitry Gutov Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Sat Nov 11 20:06:39 2023 Return-path: Envelope-to: geb-bug-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 1r1tJW-0004Oi-B5 for geb-bug-gnu-emacs@m.gmane-mx.org; Sat, 11 Nov 2023 20:06:38 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1r1tJJ-0000wR-7o; Sat, 11 Nov 2023 14:06:25 -0500 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 1r1tJH-0000la-NZ for bug-gnu-emacs@gnu.org; Sat, 11 Nov 2023 14:06:23 -0500 Original-Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1r1tJG-00012U-9f for bug-gnu-emacs@gnu.org; Sat, 11 Nov 2023 14:06:23 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1r1tJu-0004QF-HR for bug-gnu-emacs@gnu.org; Sat, 11 Nov 2023 14:07:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Juri Linkov Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 11 Nov 2023 19:07:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66464 X-GNU-PR-Package: emacs Original-Received: via spool by 66464-submit@debbugs.gnu.org id=B66464.169972957616933 (code B ref 66464); Sat, 11 Nov 2023 19:07:02 +0000 Original-Received: (at 66464) by debbugs.gnu.org; 11 Nov 2023 19:06:16 +0000 Original-Received: from localhost ([127.0.0.1]:54454 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1r1tJA-0004P2-6W for submit@debbugs.gnu.org; Sat, 11 Nov 2023 14:06:16 -0500 Original-Received: from relay6-d.mail.gandi.net ([2001:4b98:dc4:8::226]:53979) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1r1tJ7-0004Oo-Kq for 66464@debbugs.gnu.org; Sat, 11 Nov 2023 14:06:14 -0500 Original-Received: by mail.gandi.net (Postfix) with ESMTPSA id 8649EC0003; Sat, 11 Nov 2023 19:05:24 +0000 (UTC) In-Reply-To: (Dmitry Gutov's message of "Sat, 11 Nov 2023 01:54:38 +0200") X-GND-Sasl: juri@linkov.net X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:274170 Archived-At: --=-=-= Content-Type: text/plain >> The format is "project-branch" instead of "backend-branch". > > It might also be misread as a directory name. E.g. I have directories > called "emacs" and "emacs-master" (thanks to git-worktree), and they get > automatically assigned the corresponding project names. The new mode-line > with your customization looks like "emacs-master-master". But that could > just be my problem. I had the same problem even after enabling project-mode-line, so needed to remove the branch name from project names. >> I'm sure that showing the backend name in all file buffers is useless >> for most users and wastes the precious screen space. > > Hmm, I suppose since we're in a situation where one VCS (Git) is used 99% > of the time, the indication might be unnecessary. But it's also a reminder > that this mode-line item is for VC. Anyway... The problem is that the useless word "Git" (with big G) between the project name and the branch name is a big distraction. >>> And if you customize 'vc-display-status' to 'with-project' but don't >>> set project-mode-line to t, the project name won't be shown at all. >> This is why the condition already handles this case: >> (and (eq vc-display-status 'with-project) >> (bound-and-true-p project-mode-line)) > > What happens if mode-line-format doesn't contain project-mode-line-format, > or has it in the wrong place? E.g. if the user (or third-party package) > customized the mode-line. Indeed, for such cases this option can't be used. I believe we should better document such situation in the docstring. > Anyway, I've raised the questions, but I don't have strong objections to > your patch. Perhaps consider changing the description from > > (const :tag "Show project name and status" with-project) > > to > > (const :tag "Show only status next to project name" with-project) Currently the options are aligned and provide a nice review what the user will see on the mode line: :type '(choice (const :tag "Show project name and status" with-project) (const :tag "Show backend and status" t) (const :tag "Show only backend name" nil)) So I'd rather like to describe more details in the docstring. > and, maybe, check that project-mode-line-format precedes the vc-mode > indicator in the current mode-line format. And otherwise keep the > separating " ". If that makes sense to you. Probably it should be sufficient to describe this in the docstring like in this patch? PS: Probably we could also add another option `no-backend' that will show only an indicator and the branch name. But the dangling indicator such as "-" or "*" before the branch name doesn't look nice when there is a space that separates it from the project name, e.g. "project -branch". --=-=-= Content-Type: text/x-diff Content-Disposition: inline; filename=vc-display-status-with-project.patch diff --git a/lisp/vc/vc-hooks.el b/lisp/vc/vc-hooks.el index c16fb63b2ff..6e4be6414d2 100644 --- a/lisp/vc/vc-hooks.el +++ b/lisp/vc/vc-hooks.el @@ -152,8 +152,15 @@ vc-follow-symlinks (defcustom vc-display-status t "If non-nil, display revision number and lock status in mode line. -Otherwise, not displayed." - :type 'boolean +If nil, it's not displayed. +When the value is `with-project' then instead of the backend name +a project name can be displayed before the revision number and lock +status. This works only in case when you enable `project-mode-line' +and don't change the default order of `project-mode-line' and +`vc-mode' in `mode-line-format'." + :type '(choice (const :tag "Show project name and status" with-project) + (const :tag "Show backend and status" t) + (const :tag "Show only backend name" nil)) :group 'vc) @@ -683,7 +690,9 @@ vc-mode-line (ml-echo (get-text-property 0 'help-echo ml-string))) (setq vc-mode (concat - " " + (unless (and (eq vc-display-status 'with-project) + (bound-and-true-p project-mode-line)) + " ") (propertize ml-string 'mouse-face 'mode-line-highlight diff --git a/lisp/vc/vc-git.el b/lisp/vc/vc-git.el index 707fc7cfc07..0313f6ec827 100644 --- a/lisp/vc/vc-git.el +++ b/lisp/vc/vc-git.el @@ -423,7 +423,10 @@ vc-git-mode-line-string (rev (vc-working-revision file 'Git)) (disp-rev (or (vc-git--symbolic-ref file) (and rev (substring rev 0 7)))) - (state-string (concat backend-name indicator disp-rev))) + (state-string (concat (unless (and (eq vc-display-status 'with-project) + (bound-and-true-p project-mode-line)) + backend-name) + indicator disp-rev))) (propertize state-string 'face face 'help-echo (concat state-echo " under the " backend-name " version control system" --=-=-=--