GNU bug report logs - #57418
28.1; Projects not saved when vc-handled-backends is nil

Previous Next

Package: emacs;

Reported by: Louis-Guillaume Gagnon <gagnonlg <at> protonmail.com>

Date: Thu, 25 Aug 2022 20:51:01 UTC

Severity: normal

Tags: moreinfo

Found in version 28.1

Done: Dmitry Gutov <dgutov <at> yandex.ru>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 57418 in the body.
You can then email your comments to 57418 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-gnu-emacs <at> gnu.org:
bug#57418; Package emacs. (Thu, 25 Aug 2022 20:51:01 GMT) Full text and rfc822 format available.

Acknowledgement sent to Louis-Guillaume Gagnon <gagnonlg <at> protonmail.com>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Thu, 25 Aug 2022 20:51:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Louis-Guillaume Gagnon <gagnonlg <at> protonmail.com>
To: bug-gnu-emacs <at> gnu.org
Subject: 28.1; Projects not saved when vc-handled-backends is nil
Date: Thu, 25 Aug 2022 20:35:55 +0000
Good day,

I've recently been migrating from projectile to the built-in
project.el. Since then, one major annoyance is that the projects are
never saved into project-list-file, so I have to re-enter the projects'
paths everytime I make a query.

I have narrowed it down to vc-handled-backends being set to nil in my
init-file. If it's left at its default, it works as expected. I could
just leave the variable at its default but (iirc) it's part of a bunch
of optimizations I made to speedup my TRAMP setup, so I'm reluctant to
do that.  And just to be perfectly clear, the rest of project mode seemingly
works as expected if that variable is nil, it's just the projects are
not saved.

Steps to reproduce from emacs -Q:

+ (setq 'vc-handled-backends nil)

+ Use project.el to find a file in any project not in your
project-list-file, e.g. with C-x p p

+ Open your project-list-file, "/.emacs.d/projects" in my case

Expected result: The recently opened project is listed
Actual result: The recently opened project is *not* listed

Thanks in advance,
L-G


In GNU Emacs 28.1 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.33,
cairo version 1.17.6)
  of 2022-04-27 built on frederik
Windowing system distributor 'The X.Org Foundation', version 11.0.12101004
System Description: Arch Linux

Configured using:
  'configure --with-x-toolkit=gtk3 --with-native-compilation
  --sysconfdir=/etc --prefix=/usr --libexecdir=/usr/lib
  --localstatedir=/var --with-cairo --with-harfbuzz --with-libsystemd
  --with-modules 'CFLAGS=-march=x86-64 -mtune=generic -O2 -pipe -fno-plt
  -fexceptions -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security
  -fstack-clash-protection -fcf-protection -g
  -ffile-prefix-map=/build/emacs/src=/usr/src/debug -flto=auto'
  'LDFLAGS=-Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now -flto=auto''

Configured features:
ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ JPEG
JSON LCMS2 LIBOTF LIBSYSTEMD LIBXML2 M17N_FLT MODULES NATIVE_COMP NOTIFY
INOTIFY PDUMPER PNG RSVG SECCOMP SOUND THREADS TIFF TOOLKIT_SCROLL_BARS
X11 XDBE XIM XPM GTK3 ZLIB

Important settings:
   value of $LANG: en_US.UTF-8
   locale-coding-system: utf-8-unix

Major mode: Lisp Interaction

Minor modes in effect:
   tooltip-mode: t
   global-eldoc-mode: t
   eldoc-mode: t
   show-paren-mode: t
   electric-indent-mode: t
   mouse-wheel-mode: t
   tool-bar-mode: t
   menu-bar-mode: t
   file-name-shadow-mode: t
   global-font-lock-mode: t
   font-lock-mode: t
   blink-cursor-mode: t
   auto-composition-mode: t
   auto-encryption-mode: t
   auto-compression-mode: t
   line-number-mode: t
   indent-tabs-mode: t
   transient-mark-mode: t

Load-path shadows:
None found.

Features:
(shadow sort mail-extr emacsbug message rmc puny dired dired-loaddefs
rfc822 mml mml-sec epa derived epg rfc6068 epg-config gnus-util rmail
rmail-loaddefs auth-source cl-seq eieio eieio-core cl-macs
eieio-loaddefs password-cache json map text-property-search time-date
subr-x seq byte-opt gv bytecomp byte-compile cconv mm-decode mm-bodies
mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader cl-loaddefs
cl-lib sendmail rfc2047 rfc2045 ietf-drums mm-util mail-prsvr mail-utils
iso-transl tooltip eldoc paren electric uniquify ediff-hook vc-hooks
lisp-float-type elisp-mode mwheel term/x-win x-win term/common-win x-dnd
tool-bar dnd fontset image regexp-opt fringe tabulated-list replace
newcomment text-mode lisp-mode prog-mode register page tab-bar menu-bar
rfn-eshadow isearch easymenu timer select scroll-bar mouse jit-lock
font-lock syntax font-core term/tty-colors frame minibuffer cl-generic
cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao
korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech
european ethiopic indian cyrillic chinese composite emoji-zwj charscript
charprop case-table epa-hook jka-cmpr-hook help simple abbrev obarray
cl-preloaded nadvice button loaddefs faces cus-face macroexp files
window text-properties overlay sha1 md5 base64 format env code-pages
mule custom widget hashtable-print-readable backquote threads dbusbind
inotify lcms2 dynamic-setting system-font-setting font-render-setting
cairo move-toolbar gtk x-toolkit x multi-tty make-network-process
native-compile emacs)

Memory information:
((conses 16 68327 6828)
  (symbols 48 6640 0)
  (strings 32 19747 1364)
  (string-bytes 1 670753)
  (vectors 16 14088)
  (vector-slots 8 298948 14165)
  (floats 8 22 33)
  (intervals 56 237 1)
  (buffers 992 11))






Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#57418; Package emacs. (Fri, 26 Aug 2022 07:47:02 GMT) Full text and rfc822 format available.

Message #8 received at 57418 <at> debbugs.gnu.org (full text, mbox):

From: Philip Kaludercic <philipk <at> posteo.net>
To: Louis-Guillaume Gagnon <gagnonlg <at> protonmail.com>
Cc: 57418 <at> debbugs.gnu.org
Subject: Re: bug#57418: 28.1; Projects not saved when vc-handled-backends is
 nil
Date: Fri, 26 Aug 2022 07:46:06 +0000
Louis-Guillaume Gagnon <gagnonlg <at> protonmail.com> writes:

>
> Good day,
>
> I've recently been migrating from projectile to the built-in
> project.el. Since then, one major annoyance is that the projects are
> never saved into project-list-file, so I have to re-enter the projects'
> paths everytime I make a query.
>
> I have narrowed it down to vc-handled-backends being set to nil in my
> init-file. If it's left at its default, it works as expected. I could
> just leave the variable at its default but (iirc) it's part of a bunch
> of optimizations I made to speedup my TRAMP setup, so I'm reluctant to
> do that.  And just to be perfectly clear, the rest of project mode seemingly
> works as expected if that variable is nil, it's just the projects are
> not saved.
>
> Steps to reproduce from emacs -Q:
>
> + (setq 'vc-handled-backends nil)
>
> + Use project.el to find a file in any project not in your
> project-list-file, e.g. with C-x p p
>
> + Open your project-list-file, "/.emacs.d/projects" in my case
>
> Expected result: The recently opened project is listed
> Actual result: The recently opened project is *not* listed

This is to be expected, as by default `project-find-functions' only
includes one function that uses and relies on VC.  If it were just this,
I would therefore not consider this to be a bug.  Does anything else
work?  `project-find-file', `project-shell', `project-compile', ...?

What might be worth doing is issuing a warning if `project-try-vc' (the
default project-finding-function) is invoked while VC is effectively
disabled.

You could try solving this by either adding your own alternative to
`project-try-vc' (e.g. if you just use Git, then this

--8<---------------cut here---------------start------------->8---
(defun project-try-git (dir)
  "Find a super-directory of DIR containing a root file."
  (let ((repo (locate-dominating-file dir ".git")))
    (and repo (list 'git dir))))

(cl-defmethod project-root ((project (head git)))
  "Return the root of a explicit PROJECT."
  (cadr project ))

(with-eval-after-load 'project
  (add-hook 'project-find-functions #'project-try-git))
--8<---------------cut here---------------end--------------->8---

might be enough, but still be optimised a bit more).

Another idea might be to just disable VC for Tramp, or rather just some
Tramp connections? 

> Thanks in advance,
> L-G




Added tag(s) moreinfo. Request was from Lars Ingebrigtsen <larsi <at> gnus.org> to control <at> debbugs.gnu.org. (Fri, 26 Aug 2022 11:10:02 GMT) Full text and rfc822 format available.

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#57418; Package emacs. (Fri, 26 Aug 2022 14:10:01 GMT) Full text and rfc822 format available.

Message #13 received at 57418 <at> debbugs.gnu.org (full text, mbox):

From: Michael Albinus <michael.albinus <at> gmx.de>
To: Philip Kaludercic <philipk <at> posteo.net>
Cc: 57418 <at> debbugs.gnu.org, Louis-Guillaume Gagnon <gagnonlg <at> protonmail.com>
Subject: Re: bug#57418: 28.1; Projects not saved when vc-handled-backends is
 nil
Date: Fri, 26 Aug 2022 16:09:37 +0200
Philip Kaludercic <philipk <at> posteo.net> writes:

Hi,

> Another idea might be to just disable VC for Tramp, or rather just some
> Tramp connections?

Yes, this shall be possible via connection-local variables (I haven't
tested, 'tho).

>> Thanks in advance,
>> L-G

Best regards, Michael.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#57418; Package emacs. (Fri, 26 Aug 2022 14:22:02 GMT) Full text and rfc822 format available.

Message #16 received at 57418 <at> debbugs.gnu.org (full text, mbox):

From: Dmitry Gutov <dgutov <at> yandex.ru>
To: Philip Kaludercic <philipk <at> posteo.net>,
 Louis-Guillaume Gagnon <gagnonlg <at> protonmail.com>
Cc: 57418 <at> debbugs.gnu.org
Subject: Re: bug#57418: 28.1; Projects not saved when vc-handled-backends is
 nil
Date: Fri, 26 Aug 2022 17:21:13 +0300
On 26.08.2022 10:46, Philip Kaludercic wrote:
> Louis-Guillaume Gagnon<gagnonlg <at> protonmail.com>  writes:
> 
>> Good day,
>>
>> I've recently been migrating from projectile to the built-in
>> project.el. Since then, one major annoyance is that the projects are
>> never saved into project-list-file, so I have to re-enter the projects'
>> paths everytime I make a query.
>>
>> I have narrowed it down to vc-handled-backends being set to nil in my
>> init-file. If it's left at its default, it works as expected. I could
>> just leave the variable at its default but (iirc) it's part of a bunch
>> of optimizations I made to speedup my TRAMP setup, so I'm reluctant to
>> do that.  And just to be perfectly clear, the rest of project mode seemingly
>> works as expected if that variable is nil, it's just the projects are
>> not saved.
>>
>> Steps to reproduce from emacs -Q:
>>
>> + (setq 'vc-handled-backends nil)
>>
>> + Use project.el to find a file in any project not in your
>> project-list-file, e.g. with C-x p p
>>
>> + Open your project-list-file, "/.emacs.d/projects" in my case
>>
>> Expected result: The recently opened project is listed
>> Actual result: The recently opened project is*not*  listed
> This is to be expected, as by default `project-find-functions' only
> includes one function that uses and relies on VC.  If it were just this,
> I would therefore not consider this to be a bug.  Does anything else
> work?  `project-find-file', `project-shell', `project-compile', ...?

I'm honestly surprised that things work with vc-handled-backends disabled.

Louis-Guillaume, does (project-current) ever evaluate to non-nil on your 
system? I'm guessing you end up picking the project directory manually 
every time.

> What might be worth doing is issuing a warning if `project-try-vc' (the
> default project-finding-function) is invoked while VC is effectively
> disabled.

Probably not: after all, the user can have some next backend configured. 
And we allow setting vc-handled-backends to nil.

> You could try solving this by either adding your own alternative to
> `project-try-vc' (e.g. if you just use Git, then this
> 
> --8<---------------cut here---------------start------------->8---
> (defun project-try-git (dir)
>    "Find a super-directory of DIR containing a root file."
>    (let ((repo (locate-dominating-file dir ".git")))
>      (and repo (list 'git dir))))
> 
> (cl-defmethod project-root ((project (head git)))
>    "Return the root of a explicit PROJECT."
>    (cadr project ))
> 
> (with-eval-after-load 'project
>    (add-hook 'project-find-functions #'project-try-git))
> --8<---------------cut here---------------end--------------->8---
> 
> might be enough, but still be optimised a bit more).

This should work, yes.

We could also add a variable which would substitute vc-handled-backends 
for the purposes of project.el (we'd temporarily use its value). Not 
sure it's worth the added complexity, though.

> Another idea might be to just disable VC for Tramp, or rather just some
> Tramp connections?

(setq-local vc-handled-backends) inside find-file-hook behind a 
file-remote-p check could do the trick.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#57418; Package emacs. (Fri, 26 Aug 2022 14:36:01 GMT) Full text and rfc822 format available.

Message #19 received at 57418 <at> debbugs.gnu.org (full text, mbox):

From: Louis-Guillaume Gagnon <gagnonlg <at> protonmail.com>
To: Dmitry Gutov <dgutov <at> yandex.ru>, Philip Kaludercic <philipk <at> posteo.net>
Cc: 57418 <at> debbugs.gnu.org
Subject: Re: bug#57418: 28.1;
 Projects not saved when vc-handled-backends is nil
Date: Fri, 26 Aug 2022 14:34:54 +0000
Hi Dmitry & all,

Le 8/26/22 à 07:21, Dmitry Gutov a écrit :
>> This is to be expected, as by default `project-find-functions' only
>> includes one function that uses and relies on VC.  If it were just this,
>> I would therefore not consider this to be a bug.  Does anything else
>> work?  `project-find-file', `project-shell', `project-compile', ...?
> I'm honestly surprised that things work with vc-handled-backends disabled.
>
> Louis-Guillaume, does (project-current) ever evaluate to non-nil on your
> system? I'm guessing you end up picking the project directory manually
> every time.

Indeed, it's always nil if vc-handled-backends is also nil. I think the
situation now makes more sense to me now; I thought the only problem is
that the projects are not saved but the reason why I have to reenter the
project every  time is deeper and related to project-root, I guess.

I will explore the various proposed ways to get the equivalent setup
without wholesale disabling vc. Thanks to everyone who chimed in!

L-G








Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#57418; Package emacs. (Fri, 26 Aug 2022 16:12:01 GMT) Full text and rfc822 format available.

Message #22 received at 57418 <at> debbugs.gnu.org (full text, mbox):

From: Louis-Guillaume Gagnon <gagnonlg <at> protonmail.com>
To: Dmitry Gutov <dgutov <at> yandex.ru>, Philip Kaludercic <philipk <at> posteo.net>
Cc: 57418 <at> debbugs.gnu.org
Subject: Re: bug#57418: 28.1;
 Projects not saved when vc-handled-backends is nil
Date: Fri, 26 Aug 2022 16:11:04 +0000
Dear all,

This appears to do what I want:

   (setq vc-follow-symlinks nil)
   (defun my-vc-off-if-remote ()
     (if (file-remote-p (buffer-file-name))
         (setq-local vc-handled-backends nil)))
   (add-hook 'find-file-hook 'my-vc-off-if-remote)

I guess this can be closed as "notabug".

Thanks!

L-G







Reply sent to Dmitry Gutov <dgutov <at> yandex.ru>:
You have taken responsibility. (Fri, 26 Aug 2022 22:37:01 GMT) Full text and rfc822 format available.

Notification sent to Louis-Guillaume Gagnon <gagnonlg <at> protonmail.com>:
bug acknowledged by developer. (Fri, 26 Aug 2022 22:37:01 GMT) Full text and rfc822 format available.

Message #27 received at 57418-done <at> debbugs.gnu.org (full text, mbox):

From: Dmitry Gutov <dgutov <at> yandex.ru>
To: Louis-Guillaume Gagnon <gagnonlg <at> protonmail.com>,
 Philip Kaludercic <philipk <at> posteo.net>
Cc: 57418-done <at> debbugs.gnu.org
Subject: Re: bug#57418: 28.1; Projects not saved when vc-handled-backends is
 nil
Date: Sat, 27 Aug 2022 01:36:25 +0300
On 26.08.2022 19:11, Louis-Guillaume Gagnon wrote:
> Dear all,
> 
> This appears to do what I want:
> 
>     (setq vc-follow-symlinks nil)
>     (defun my-vc-off-if-remote ()
>       (if (file-remote-p (buffer-file-name))
>           (setq-local vc-handled-backends nil)))
>     (add-hook 'find-file-hook 'my-vc-off-if-remote)
> 
> I guess this can be closed as "notabug".

Very good, closing.




bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Sat, 24 Sep 2022 11:24:05 GMT) Full text and rfc822 format available.

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

Previous Next


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