From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Eshel Yaron via "Bug reports for GNU Emacs, the Swiss army knife of text editors" Newsgroups: gmane.emacs.bugs Subject: bug#66317: Project mode-line Date: Wed, 04 Oct 2023 09:15:37 +0200 Message-ID: References: <86jzs4ntxb.fsf@mail.linkov.net> <86sf6r4omc.fsf@mail.linkov.net> <86jzs34mg6.fsf@mail.linkov.net> <83zg0z6062.fsf@gnu.org> <86il7mc3xr.fsf@mail.linkov.net> Reply-To: Eshel Yaron Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="36637"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Cc: dmitry@gutov.dev, Eli Zaretskii , 66317@debbugs.gnu.org To: Juri Linkov Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Wed Oct 04 09:16:28 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 1qnw7P-0009EP-KM for geb-bug-gnu-emacs@m.gmane-mx.org; Wed, 04 Oct 2023 09:16:27 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qnw70-0001Dv-37; Wed, 04 Oct 2023 03:16:02 -0400 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 1qnw6m-0001DM-5M for bug-gnu-emacs@gnu.org; Wed, 04 Oct 2023 03:15:53 -0400 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 1qnw6i-0002mJ-Ho for bug-gnu-emacs@gnu.org; Wed, 04 Oct 2023 03:15:47 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1qnw6z-00077X-Ro for bug-gnu-emacs@gnu.org; Wed, 04 Oct 2023 03:16:01 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Eshel Yaron Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 04 Oct 2023 07:16:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66317 X-GNU-PR-Package: emacs Original-Received: via spool by 66317-submit@debbugs.gnu.org id=B66317.169640376027364 (code B ref 66317); Wed, 04 Oct 2023 07:16:01 +0000 Original-Received: (at 66317) by debbugs.gnu.org; 4 Oct 2023 07:16:00 +0000 Original-Received: from localhost ([127.0.0.1]:41393 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qnw6y-00077I-AL for submit@debbugs.gnu.org; Wed, 04 Oct 2023 03:16:00 -0400 Original-Received: from mail.eshelyaron.com ([107.175.124.16]:53896 helo=eshelyaron.com) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qnw6w-00077A-59 for 66317@debbugs.gnu.org; Wed, 04 Oct 2023 03:15:59 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eshelyaron.com; s=mail; t=1696403739; bh=wHwzu4NZYnSuV6dAqpwurTZ1vyAwIipTOwrZ3vUAd+o=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From; b=F6QLMnhvECvpVSglPyVq3RP7S0hGmqidsgZub/ErybtKEQzktLdasqEdJWJPzU+pL rY64FT8iF4LjXckHDjYJjjRh5kEJVPg9mGT1/FZT0gUvGox4/F69JJmb/jRT+skT1/ 6oX5r547CUmBZfRGpDgDaYhF7s6fsHkWSf4GeysTla1KX/tXphIeDknYQrK1u6oWnU zaFwnw7InRJR62CeEjHQ24FyCQuri483RiHzTr9qEkZa3SE7mm0vyOhTSvtOsy6TvV LwrdIrWQ3mO+rcT9wo0Vr166VdyGcmHeJUmu95WlPWZaZv/9gHmACLgsgBYehNDity iyS+9ZKxntikg== In-Reply-To: <86il7mc3xr.fsf@mail.linkov.net> (Juri Linkov's message of "Wed, 04 Oct 2023 09:18:28 +0300") X-Hashcash: 1:20:231004:66317@debbugs.gnu.org::apopE3gx7MjBjGpD:0RwD X-Hashcash: 1:20:231004:eliz@gnu.org::zDy1z64lFDw0WA53:2erY X-Hashcash: 1:20:231004:juri@linkov.net::LmtaL/p1irTvE7aF:4/fo X-Hashcash: 1:20:231004:dmitry@gutov.dev::2JFt+YC6G4zZaQHh:5NtU 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:271767 Archived-At: Juri Linkov writes: > Ok, here is the implementation with an optional variable: Thanks, I've tried this patch on top of Emacs master and it seems to work well. One small suggestion is to consider giving the project name in the mode line a dedicated face, so people/themes could customize its appearance. (By default, it could just inherit from `default`.) > diff --git a/lisp/progmodes/project.el b/lisp/progmodes/project.el > index 2e6ae89a443..74b2347b715 100644 > --- a/lisp/progmodes/project.el > +++ b/lisp/progmodes/project.el > @@ -2010,5 +2103,36 @@ project-uniquify-dirname-transform > (file-relative-name dirname root)))) > dirname)) > > +;;; Project mode-line > + > +;;;###autoload > +(defcustom project-mode-line nil > + "Show the current project name with the menu on the mode line." > + :type 'boolean > + :group 'project > + :version "30.1") > + > +(defvar project-menu-entry > + `(menu-item "Project" ,menu-bar-project-menu)) > + > +(defvar project-mode-line-map > + (let ((map (make-sparse-keymap))) > + (define-key map [mode-line down-mouse-1] project-menu-entry) > + map)) > + > +(defvar project-mode-line-format '(:eval (project-mode-line-format))) > +(put 'project-mode-line-format 'risky-local-variable t) > + > +(defun project-mode-line-format () > + "Compose the project mode-line." > + (when-let ((project (project-current))) > + (concat > + " " > + (propertize > + (project-name project) > + 'mouse-face 'mode-line-highlight > + 'help-echo "mouse-1: Project menu" > + 'local-map project-mode-line-map)))) > + > (provide 'project) > ;;; project.el ends here > diff --git a/lisp/bindings.el b/lisp/bindings.el > index 207adb3a2a4..70e4087e131 100644 > --- a/lisp/bindings.el > +++ b/lisp/bindings.el > @@ -682,6 +682,7 @@ mode-line-end-spaces > 'mode-line-buffer-identification > " " > 'mode-line-position > + '(project-mode-line project-mode-line-format) > '(vc-mode vc-mode) > " " > 'mode-line-modes