GNU bug report logs - #63469
29.0.90; project.el doesn't add menu-bar entries

Previous Next

Package: emacs;

Reported by: Spencer Baugh <sbaugh <at> janestreet.com>

Date: Fri, 12 May 2023 17:49:02 UTC

Severity: normal

Found in version 29.0.90

Done: Eli Zaretskii <eliz <at> gnu.org>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: Juri Linkov <juri <at> linkov.net>
To: Dmitry Gutov <dmitry <at> gutov.dev>
Cc: sbaugh <at> janestreet.com, Eli Zaretskii <eliz <at> gnu.org>, 63469 <at> debbugs.gnu.org
Subject: bug#63469: 29.0.90; project.el doesn't add menu-bar entries
Date: Tue, 23 May 2023 09:46:01 +0300
>> +(define-minor-mode project-mode
>> +  "Toggle display of project menu in the project-aware buffers."
>> +  (if project-mode
>> +      (setq-local project-name (concat
>> +	                        " "
>> +	                        (propertize
>> +	                         (project-name (project-current))
>> +	                         'mouse-face 'mode-line-highlight
>> +	                         'local-map project-mode-line-map)))))
>
> At the very least, this will need some better name, because project
> features don't need any mode to be turned on to be used.
>
> project-menu-mode?

'project-mode' will be more like 'vc-mode' that actually is not a minor mode.
I don't know why it was named 'vc-mode'.

> Next, I'm not quite sure about the caching of project-name. There is no
> scenario when it will be invalidated, right?

I can't imagine such scenario.

> Try simply calling (project-name (project-current t)) every time, see how
> the performance is. Or, more thoroughly, copy the if-let logic from
> project-prefixed-buffer-name.

Ok, will try.

BTW, there is another problem: by default 'project-name' is defined as
(file-name-nondirectory (directory-file-name (project-root project))).
But then project name often is the same for different projects
because the directory name is the same for the same repository.
For example, in a subtree:

  emacs-master/emacs/...
  emacs-29/emacs/...
  emacs-28/emacs/...

All project names are the same 'emacs'.  How would it be possible to
customize project names?  Trying to get a parent dir might be too
unreliable.  So probably the only way is to define the name manually.
Maybe in .dir-locals.el.  Actually this works:

  ((nil . ((project-vc-name . "emacs-29"))))

Not sure why non-VC projects can't be named the same way.

Also noticed that project-vc-name is not marked as safe,
so always asks a confirmation.




This bug report was last modified 2 years and 43 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.