GNU bug report logs -
#65904
29.1.50; autorevert can't revert files in a symlink directory
Previous Next
To reply to this bug, email your comments to 65904 AT debbugs.gnu.org.
Toggle the display of automated, internal messages from the tracker.
Report forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#65904
; Package
emacs
.
(Wed, 13 Sep 2023 04:01:02 GMT)
Full text and
rfc822 format available.
Acknowledgement sent
to
Zhang Haijun <ccsmile2008 <at> outlook.com>
:
New bug report received and forwarded. Copy sent to
bug-gnu-emacs <at> gnu.org
.
(Wed, 13 Sep 2023 04:01:02 GMT)
Full text and
rfc822 format available.
Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
It works in Emacs 26/27, But it doesn't work in Emacs 29.
0. emacs -Q
1. use the following code to open an existing file in a symlink directory
(progn
(setq auto-revert-use-notify t
auto-revert-interval 3)
(global-auto-revert-mode 1)
(setq find-file-hook (delq 'vc-refresh-state find-file-hook))
(find-file "~/symlink_dir/test.txt"))
2. modify the test file in external program and save
3. emacs doesn't autorevert the file
In GNU Emacs 29.1.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version
3.24.37, cairo version 1.16.0) of 2023-09-05 built on debian-think
Repository revision: 4995c0e685f994a554d6f82c4f6d9b24ea722b66
Repository branch: emacs-29-mod
Windowing system distributor 'The X.Org Foundation', version 11.0.12101007
System Description: Debian GNU/Linux 12 (bookworm)
Configured using:
'configure --prefix=/home/jun/apps/emacs-29 --with-x-toolkit=gtk3
--with-modules --without-makeinfo CFLAGS=-O2'
Configured features:
CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GSETTINGS HARFBUZZ JPEG JSON
LIBSELINUX LIBXML2 MODULES NOTIFY INOTIFY PDUMPER PNG RSVG SECCOMP SOUND
SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS TREE_SITTER WEBP X11 XDBE XIM
XINPUT2 XPM GTK3 ZLIB
Important settings:
value of $LC_CTYPE: zh_CN.UTF-8
value of $LANG: en_US.UTF-8
value of $XMODIFIERS: @im=fcitx
locale-coding-system: utf-8-unix
Major mode: Text
Minor modes in effect:
global-auto-revert-mode: t
tooltip-mode: t
global-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
line-number-mode: t
indent-tabs-mode: t
transient-mark-mode: t
auto-composition-mode: t
auto-encryption-mode: t
auto-compression-mode: t
Load-path shadows:
None found.
Features:
(shadow sort mail-extr emacsbug message mailcap yank-media puny dired
dired-loaddefs rfc822 mml mml-sec password-cache epa derived epg rfc6068
epg-config gnus-util text-property-search time-date subr-x mm-decode
mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader
sendmail rfc2047 rfc2045 ietf-drums mm-util mail-prsvr mail-utils
autorevert filenotify cl-loaddefs cl-lib china-util rmc iso-transl
tooltip cconv 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 nadvice seq
simple cl-generic indonesian philippine 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 abbrev obarray oclosure cl-preloaded button
loaddefs theme-loaddefs faces cus-face macroexp files window
text-properties overlay sha1 md5 base64 format env code-pages mule
custom widget keymap hashtable-print-readable backquote threads dbusbind
inotify dynamic-setting system-font-setting font-render-setting cairo
move-toolbar gtk x-toolkit xinput2 x multi-tty make-network-process
emacs)
Memory information:
((conses 16 38732 5890)
(symbols 48 5317 0)
(strings 32 13519 1764)
(string-bytes 1 390023)
(vectors 16 10997)
(vector-slots 8 211846 7863)
(floats 8 22 23)
(intervals 56 235 0)
(buffers 984 11))
[Message part 2 (text/html, inline)]
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#65904
; Package
emacs
.
(Wed, 13 Sep 2023 12:57:02 GMT)
Full text and
rfc822 format available.
Message #8 received at 65904 <at> debbugs.gnu.org (full text, mbox):
> From: Zhang Haijun <ccsmile2008 <at> outlook.com>
> Date: Wed, 13 Sep 2023 03:55:15 +0000
>
>
> It works in Emacs 26/27, But it doesn't work in Emacs 29.
>
> 0. emacs -Q
> 1. use the following code to open an existing file in a symlink directory
> (progn
> (setq auto-revert-use-notify t
> auto-revert-interval 3)
> (global-auto-revert-mode 1)
> (setq find-file-hook (delq 'vc-refresh-state find-file-hook))
> (find-file "~/symlink_dir/test.txt"))
>
> 2. modify the test file in external program and save
> 3. emacs doesn't autorevert the file
AFAICT, we don't support autoreverting symlinks, since Dec 2013, so it
sounds strange that you say it worked in Emacs 27.
The relevant discussion is here:
https://lists.gnu.org/archive/html/emacs-devel/2013-12/msg00282.html
The reason for this non-support seems to be performance.
I hope Michael (CC'ed) will be able to tell more about this.
A workaround is to set auto-revert-use-notify to nil.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#65904
; Package
emacs
.
(Wed, 13 Sep 2023 13:13:01 GMT)
Full text and
rfc822 format available.
Message #11 received at 65904 <at> debbugs.gnu.org (full text, mbox):
Do you mean that the test file itself is a symlink file?
In my case, the test file itself is a normal file. But its parent
directory is a symlink.
I just tested: 'file-symlink-p' return nil for the test file.
On 9/13/23 20:56, Eli Zaretskii wrote:
>> From: Zhang Haijun <ccsmile2008 <at> outlook.com>
>> Date: Wed, 13 Sep 2023 03:55:15 +0000
>>
>>
>> It works in Emacs 26/27, But it doesn't work in Emacs 29.
>>
>> 0. emacs -Q
>> 1. use the following code to open an existing file in a symlink directory
>> (progn
>> (setq auto-revert-use-notify t
>> auto-revert-interval 3)
>> (global-auto-revert-mode 1)
>> (setq find-file-hook (delq 'vc-refresh-state find-file-hook))
>> (find-file "~/symlink_dir/test.txt"))
>>
>> 2. modify the test file in external program and save
>> 3. emacs doesn't autorevert the file
> AFAICT, we don't support autoreverting symlinks, since Dec 2013, so it
> sounds strange that you say it worked in Emacs 27.
>
> The relevant discussion is here:
>
> https://lists.gnu.org/archive/html/emacs-devel/2013-12/msg00282.html
>
> The reason for this non-support seems to be performance.
>
> I hope Michael (CC'ed) will be able to tell more about this.
>
> A workaround is to set auto-revert-use-notify to nil.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#65904
; Package
emacs
.
(Wed, 13 Sep 2023 13:30:02 GMT)
Full text and
rfc822 format available.
Message #14 received at 65904 <at> debbugs.gnu.org (full text, mbox):
> Date: Wed, 13 Sep 2023 21:12:30 +0800
> Cc: 65904 <at> debbugs.gnu.org
> From: zhanghj <ccsmile2008 <at> outlook.com>
>
> Do you mean that the test file itself is a symlink file?
>
> In my case, the test file itself is a normal file. But its parent
> directory is a symlink.
>
> I just tested: 'file-symlink-p' return nil for the test file.
Emacs watches the parent directory of the file, not the file itself
(because certain changes regarding the file are only seen if we watch
the directory).
But I will let Michael chime in, in case I'm missing something.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#65904
; Package
emacs
.
(Wed, 13 Sep 2023 13:35:01 GMT)
Full text and
rfc822 format available.
Message #17 received at 65904 <at> debbugs.gnu.org (full text, mbox):
Eli Zaretskii <eliz <at> gnu.org> writes:
Hi,
>> 0. emacs -Q
>> 1. use the following code to open an existing file in a symlink directory
>> (progn
>> (setq auto-revert-use-notify t
>> auto-revert-interval 3)
>> (global-auto-revert-mode 1)
>> (setq find-file-hook (delq 'vc-refresh-state find-file-hook))
>> (find-file "~/symlink_dir/test.txt"))
>>
>> 2. modify the test file in external program and save
>> 3. emacs doesn't autorevert the file
>
> AFAICT, we don't support autoreverting symlinks, since Dec 2013, so it
> sounds strange that you say it worked in Emacs 27.
>
> The relevant discussion is here:
>
> https://lists.gnu.org/archive/html/emacs-devel/2013-12/msg00282.html
>
> The reason for this non-support seems to be performance.
>
> I hope Michael (CC'ed) will be able to tell more about this.
Yes, we don't support autorevert of files in a symlinked directory via
file notifications. There are other bugs with the same topic, see
bug#16113, bug#18883 and bug#64061. I'll merge this bug with the other
ones.
> A workaround is to set auto-revert-use-notify to nil.
Yep.
Best regards, Michael.
Severity set to 'wishlist' from 'normal'
Request was from
Michael Albinus <michael.albinus <at> gmx.de>
to
control <at> debbugs.gnu.org
.
(Wed, 13 Sep 2023 13:54:01 GMT)
Full text and
rfc822 format available.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#65904
; Package
emacs
.
(Wed, 13 Sep 2023 14:17:01 GMT)
Full text and
rfc822 format available.
Message #24 received at 65904 <at> debbugs.gnu.org (full text, mbox):
How does it work in Emacs 26/27? Why don't you let it keep the old behavior?
I just tried again with the following test code(with
auto-revert-interval be a big value). There was a long delay(about 30s)
before the first reverting. But the following ones were instant.
(progn
(setq auto-revert-use-notify t
auto-revert-interval 30)
(global-auto-revert-mode 1)
(setq find-file-hook (delq 'vc-refresh-state find-file-hook))
(find-file "~/symlink_dir/abc.txt"))
On 9/13/23 21:33, Michael Albinus wrote:
> Eli Zaretskii <eliz <at> gnu.org> writes:
>
> Hi,
>
>>> 0. emacs -Q
>>> 1. use the following code to open an existing file in a symlink directory
>>> (progn
>>> (setq auto-revert-use-notify t
>>> auto-revert-interval 3)
>>> (global-auto-revert-mode 1)
>>> (setq find-file-hook (delq 'vc-refresh-state find-file-hook))
>>> (find-file "~/symlink_dir/test.txt"))
>>>
>>> 2. modify the test file in external program and save
>>> 3. emacs doesn't autorevert the file
>> AFAICT, we don't support autoreverting symlinks, since Dec 2013, so it
>> sounds strange that you say it worked in Emacs 27.
>>
>> The relevant discussion is here:
>>
>> https://lists.gnu.org/archive/html/emacs-devel/2013-12/msg00282.html
>>
>> The reason for this non-support seems to be performance.
>>
>> I hope Michael (CC'ed) will be able to tell more about this.
> Yes, we don't support autorevert of files in a symlinked directory via
> file notifications. There are other bugs with the same topic, see
> bug#16113, bug#18883 and bug#64061. I'll merge this bug with the other
> ones.
>
>> A workaround is to set auto-revert-use-notify to nil.
> Yep.
>
> Best regards, Michael.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#65904
; Package
emacs
.
(Thu, 14 Sep 2023 11:59:01 GMT)
Full text and
rfc822 format available.
Message #27 received at 65904 <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
zhanghj <ccsmile2008 <at> outlook.com> writes:
Hi,
> How does it work in Emacs 26/27? Why don't you let it keep the old behavior?
That time, it was unspecified, whether symlinked files/directories are
watched. Some file notification backends did, other backends didn't. In
Emacs 29, this was clarified, see (info "(elisp) File Notifications")
--8<---------------cut here---------------start------------->8---
If FILE is a symlink, it doesn’t follow that link. Just FILE
itself will be watched.
--8<---------------cut here---------------end--------------->8---
There is the idea to add a new flag to the `file-notify-add-watch'
function, `follow'. This would allow to follow symlinks, with different
implementations in the different backends. Buth this hasn't been
implemented yet.
If you need this feature urgently in inotify (I guess you're using this
backend), try the appended patch in filenotify.el (untested).
Best regards, Michael.
[Message part 2 (text/x-patch, attachment)]
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#65904
; Package
emacs
.
(Mon, 18 Sep 2023 21:10:01 GMT)
Full text and
rfc822 format available.
Message #30 received at 65904 <at> debbugs.gnu.org (full text, mbox):
I tried your patch on GNU/Linux. It works as you said(the same as in
Emacs 26/27 now). I will try it on macOS later.
I have added some debug message and see that without this patch, the
`filenotiy' also watch the file but `autorevert.el` can't receives
events for the test file. After applying the patch, it can receive
events for the test file. It seems that the patch is not harmful. Can
you apply it in Emacs 29?
Thanks.
On 9/14/23 19:58, Michael Albinus wrote:
> zhanghj <ccsmile2008 <at> outlook.com> writes:
>
> Hi,
>
>> How does it work in Emacs 26/27? Why don't you let it keep the old behavior?
> That time, it was unspecified, whether symlinked files/directories are
> watched. Some file notification backends did, other backends didn't. In
> Emacs 29, this was clarified, see (info "(elisp) File Notifications")
>
> --8<---------------cut here---------------start------------->8---
> If FILE is a symlink, it doesn’t follow that link. Just FILE
> itself will be watched.
> --8<---------------cut here---------------end--------------->8---
>
> There is the idea to add a new flag to the `file-notify-add-watch'
> function, `follow'. This would allow to follow symlinks, with different
> implementations in the different backends. Buth this hasn't been
> implemented yet.
>
> If you need this feature urgently in inotify (I guess you're using this
> backend), try the appended patch in filenotify.el (untested).
>
> Best regards, Michael.
>
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#65904
; Package
emacs
.
(Tue, 19 Sep 2023 07:20:01 GMT)
Full text and
rfc822 format available.
Message #33 received at 65904 <at> debbugs.gnu.org (full text, mbox):
zhanghj <ccsmile2008 <at> outlook.com> writes:
Hi,
> I tried your patch on GNU/Linux. It works as you said(the same as in
> Emacs 26/27 now). I will try it on macOS later.
Thanks for the check. On macOS, inotify isn't used, so the change
wouldn't work.
> I have added some debug message and see that without this patch, the
> `filenotiy' also watch the file but `autorevert.el` can't receives
> events for the test file. After applying the patch, it can receive
> events for the test file. It seems that the patch is not harmful. Can
> you apply it in Emacs 29?
As said, there is the idea to support symlinked files/directories in
general. Once this is implemented, the proposed change for inotify will
be installed.
> Thanks.
Best regards, Michael.
This bug report was last modified 1 year and 267 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.