unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#57418: 28.1; Projects not saved when vc-handled-backends is nil
@ 2022-08-25 20:35 Louis-Guillaume Gagnon via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2022-08-26  7:46 ` Philip Kaludercic
  0 siblings, 1 reply; 7+ messages in thread
From: Louis-Guillaume Gagnon via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2022-08-25 20:35 UTC (permalink / raw)
  To: 57418

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))







^ permalink raw reply	[flat|nested] 7+ messages in thread

* bug#57418: 28.1; Projects not saved when vc-handled-backends is nil
  2022-08-25 20:35 bug#57418: 28.1; Projects not saved when vc-handled-backends is nil Louis-Guillaume Gagnon via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2022-08-26  7:46 ` Philip Kaludercic
  2022-08-26 14:09   ` Michael Albinus
  2022-08-26 14:21   ` Dmitry Gutov
  0 siblings, 2 replies; 7+ messages in thread
From: Philip Kaludercic @ 2022-08-26  7:46 UTC (permalink / raw)
  To: Louis-Guillaume Gagnon; +Cc: 57418

Louis-Guillaume Gagnon <gagnonlg@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





^ permalink raw reply	[flat|nested] 7+ messages in thread

* bug#57418: 28.1; Projects not saved when vc-handled-backends is nil
  2022-08-26  7:46 ` Philip Kaludercic
@ 2022-08-26 14:09   ` Michael Albinus
  2022-08-26 14:21   ` Dmitry Gutov
  1 sibling, 0 replies; 7+ messages in thread
From: Michael Albinus @ 2022-08-26 14:09 UTC (permalink / raw)
  To: Philip Kaludercic; +Cc: 57418, Louis-Guillaume Gagnon

Philip Kaludercic <philipk@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.





^ permalink raw reply	[flat|nested] 7+ messages in thread

* bug#57418: 28.1; Projects not saved when vc-handled-backends is nil
  2022-08-26  7:46 ` Philip Kaludercic
  2022-08-26 14:09   ` Michael Albinus
@ 2022-08-26 14:21   ` Dmitry Gutov
  2022-08-26 14:34     ` Louis-Guillaume Gagnon via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2022-08-26 16:11     ` Louis-Guillaume Gagnon via Bug reports for GNU Emacs, the Swiss army knife of text editors
  1 sibling, 2 replies; 7+ messages in thread
From: Dmitry Gutov @ 2022-08-26 14:21 UTC (permalink / raw)
  To: Philip Kaludercic, Louis-Guillaume Gagnon; +Cc: 57418

On 26.08.2022 10:46, Philip Kaludercic wrote:
> Louis-Guillaume Gagnon<gagnonlg@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.





^ permalink raw reply	[flat|nested] 7+ messages in thread

* bug#57418: 28.1; Projects not saved when vc-handled-backends is nil
  2022-08-26 14:21   ` Dmitry Gutov
@ 2022-08-26 14:34     ` Louis-Guillaume Gagnon via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2022-08-26 16:11     ` Louis-Guillaume Gagnon via Bug reports for GNU Emacs, the Swiss army knife of text editors
  1 sibling, 0 replies; 7+ messages in thread
From: Louis-Guillaume Gagnon via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2022-08-26 14:34 UTC (permalink / raw)
  To: Dmitry Gutov, Philip Kaludercic; +Cc: 57418

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









^ permalink raw reply	[flat|nested] 7+ messages in thread

* bug#57418: 28.1; Projects not saved when vc-handled-backends is nil
  2022-08-26 14:21   ` Dmitry Gutov
  2022-08-26 14:34     ` Louis-Guillaume Gagnon via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2022-08-26 16:11     ` Louis-Guillaume Gagnon via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2022-08-26 22:36       ` Dmitry Gutov
  1 sibling, 1 reply; 7+ messages in thread
From: Louis-Guillaume Gagnon via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2022-08-26 16:11 UTC (permalink / raw)
  To: Dmitry Gutov, Philip Kaludercic; +Cc: 57418

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








^ permalink raw reply	[flat|nested] 7+ messages in thread

* bug#57418: 28.1; Projects not saved when vc-handled-backends is nil
  2022-08-26 16:11     ` Louis-Guillaume Gagnon via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2022-08-26 22:36       ` Dmitry Gutov
  0 siblings, 0 replies; 7+ messages in thread
From: Dmitry Gutov @ 2022-08-26 22:36 UTC (permalink / raw)
  To: Louis-Guillaume Gagnon, Philip Kaludercic; +Cc: 57418-done

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.





^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2022-08-26 22:36 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-08-25 20:35 bug#57418: 28.1; Projects not saved when vc-handled-backends is nil Louis-Guillaume Gagnon via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-08-26  7:46 ` Philip Kaludercic
2022-08-26 14:09   ` Michael Albinus
2022-08-26 14:21   ` Dmitry Gutov
2022-08-26 14:34     ` Louis-Guillaume Gagnon via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-08-26 16:11     ` Louis-Guillaume Gagnon via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-08-26 22:36       ` Dmitry Gutov

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).