Subject: 24.4; auto-revert-mode with notify doesn't work with symlinked directories

From: Stefan Dorn <[email-masked]>
Date: Wed, 29 Oct 2014 13:44:50 +0000

auto-revert-mode doesn't work for files that are in symlinked
directories, even if the file itself is a normal file.

auto-revert-mode watches files based on (buffer-file-name), but
notify will only return events for the file's real path.

Currently, auto-revert-mode doesn't use file-notify if the file itself is a
symlink, which seems like a workaround for the same problem.
auto-revert-mode should probably watch files based on (file-truename)
instead, which seems to me like it would fix both problems.

(As a workaround, I just disabled auto-revert-use-notify for now.)

In GNU Emacs 24.4.1 (x86_64-unknown-linux-gnu, GTK+ Version 2.24.24)
 of 2014-10-24 on scabeiathrax
Windowing system distributor `The X.Org Foundation', version 11.0.11601000
System Description:	Gentoo Base System release 2.2

Configured using:
 `configure --disable-dependency-tracking
 --prefix=/nix/store/f8raqkpc9ldzs9hk03l2rr13ayyrsq2h-emacs-24.4
 --with-x-toolkit=gtk --with-xft
 --with-crt-dir=/nix/store/i11d0d4015p0vbdnjq7lb509v9pwp049-glibc-2.19/lib'

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

Major mode: EL

Minor modes in effect:
  magit-auto-revert-mode: t
  diff-auto-refine-mode: t
  fic-mode: t
  dired-omit-mode: t
  eldoc-mode: t
  global-flycheck-mode: t
  flycheck-mode: t
  global-auto-revert-mode: t
  auto-insert-mode: t
  which-function-mode: t
  global-auto-complete-mode: t
  auto-complete-mode: t
  yas-global-mode: t
  yas-minor-mode: t
  shell-dirtrack-mode: t
  recentf-mode: t
  ido-ubiquitous-mode: t
  flx-ido-mode: t
  ido-everywhere: t
  smartparens-global-mode: t
  smartparens-mode: t
  delete-selection-mode: t
  show-paren-mode: t
  global-subword-mode: t
  subword-mode: t
  winner-mode: t
  global-hungry-delete-mode: t
  hungry-delete-mode: t
  highlight-parentheses-mode: t
  global-undo-tree-mode: t
  undo-tree-mode: t
  global-adaptive-wrap-prefix-mode: t
  adaptive-wrap-prefix-mode: t
  savehist-mode: t
  whitespace-mode: t
  nyan-mode: t
  volatile-highlights-mode: t
  global-hl-line-mode: t
  tooltip-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  column-number-mode: t
  line-number-mode: t
  global-visual-line-mode: t
  visual-line-mode: t
  transient-mark-mode: t
  hs-minor-mode: t

Recent input:
<left> <left> <left> <left> <left> <left> <left> <left> 
<left> <left> <left> <left> C-x C-s C-x SPC SPC <up> 
<up> <up> <up> <up> <up> <up> <up> <up> <up> <left> 
<left> <left> <left> <left> <left> <left> <left> <left> 
<left> <left> <left> <left> <up> C-h f <return> <up> 
<up> C-n C-n C-n <up> <up> <return> ( <backspace> <backspace> 
<down> <down> <down> <down> <down> C-x C-s C-n C-n 
C-n C-n C-n q C-n q C-n C-r SPC <down> <down> <down> 
<down> <down> <down> C-x SPC SPC <down> <down> <right> 
<right> <right> <right> <right> <right> <right> <right> 
<right> C-x SPC SPC <right> <right> <right> <right> 
<right> <right> <right> <right> <right> <right> <right> 
<right> C-h f <return> <switch-frame> <switch-frame> 
C-x g <down> <down> <down> <down> <down> <down> <down> 
<down> <down> <down> <down> <down> <up> g <tab> <tab> 
s c c t o d o C-c C-c <down> <tab> <tab> k y k y s 
s c c l u a C-a f i x SPC C-c C-c <up> <up> <up> <up> 
<up> <up> <up> <up> s c c o c a m l SPC + SPC s m l 
SPC m o e <backspace> d e s C-c C-c <down> <down> <tab> 
<up> <down> <tab> <down> <tab> <down> <down> <down> 
<down> <down> <down> <down> <down> <down> <down> <down> 
<down> <down> <down> <down> <down> <down> <down> <down> 
<next> <next> <home> <down> <down> <down> <down> <down> 
<tab> s c c p o i n t l e s s SPC a b b r e v SPC u 
p d a t e C-c C-c P P q C-r SPC q <up> <up> <up> <up> 
<up> <up> <right> <right> <right> <right> <right> <right> 
<right> <right> <right> <C-right> C-g <left> <left> 
<left> <left> S-SPC C-f C-f C-f M-x C-g M-w M-x r e 
p o r t b <return>

Recent messages:
Wrote /home/amon/.emacs.d/cache/undo/.!home!amon!src!emacs!config!.git!COMMIT_EDITMSG.~undo-tree~
Wrote /home/amon/src/emacs/config/.git/COMMIT_EDITMSG
Git finished
Type a prefix key to toggle it. Run 'actions' with their prefixes. '?' for more help.
Running git push -v origin master:refs/heads/master
Git finished
Type <right> to expand again, <left> to contract, SPC to reset
Quit
Mark set
Quit

Load-path shadows:
/home/amon/.emacs.d/packages/pde-0.2.16/tree-mode hides /home/amon/.emacs.d/packages/tree-mode-20121207.1538/tree-mode
/home/amon/.emacs.d/packages/css-mode-1.0/css-mode hides /nix/store/f8raqkpc9ldzs9hk03l2rr13ayyrsq2h-emacs-24.4/share/emacs/24.4/lisp/textmodes/css-mode
/home/amon/.emacs.d/packages/flymake-0.4.16/flymake hides /nix/store/f8raqkpc9ldzs9hk03l2rr13ayyrsq2h-emacs-24.4/share/emacs/24.4/lisp/progmodes/flymake
/home/amon/.emacs.d/packages/python-20120402/python hides /nix/store/f8raqkpc9ldzs9hk03l2rr13ayyrsq2h-emacs-24.4/share/emacs/24.4/lisp/progmodes/python
/home/amon/.emacs.d/packages/tabulated-list-20120406.1351/tabulated-list hides /nix/store/f8raqkpc9ldzs9hk03l2rr13ayyrsq2h-emacs-24.4/share/emacs/24.4/lisp/emacs-lisp/tabulated-list
/home/amon/.emacs.d/packages/ace-jump-mode-20140616.115/ace-jump-mode hides /home/amon/.emacs.d/local/ace-jump-mode/ace-jump-mode
/home/amon/.emacs.d/packages/ace-jump-mode-20140616.115/ace-jump-mode-pkg hides /home/amon/.emacs.d/local/ace-jump-mode/ace-jump-mode-pkg

Features:
(shadow sort mail-extr emacsbug shen-mode arc ielm conf-mode ag vc-svn
css-mode-expansions css-mode scss-mode nxml-mode-expansions rng-nxml
rng-valid rng-loc rng-uri rng-parse nxml-parse rng-match rng-dt rng-util
rng-pttrn nxml-ns nxml-mode nxml-outln nxml-rap nxml-util nxml-glyph
nxml-enc xmltok sh-script executable js2-mode-expansions
js-mode-expansions js2-mode cc-mode-expansions cc-mode cc-fonts cc-guess
cc-menus cc-styles cc-align cc-cmds cc-engine haskell-indentation
haskell-doc inf-haskell haskell-cabal haskell-utils haskell-decl-scan
haskell-mode haskell-string haskell-sort-imports haskell-align-imports
haskell-compat haskell-complete-module dabbrev the-org-mode-expansions
org org-macro org-footnote org-pcomplete org-list org-faces org-entities
org-version ob-emacs-lisp ob ob-tangle ob-ref ob-lob ob-table ob-exp
org-src ob-keys ob-comint ob-core ob-eval org-compat org-macs
org-loaddefs cal-menu calendar cal-loaddefs yaml-mode markdown-mode
smartparens-latex latex-mode-expansions latex tex-style tex dbus xml
c-eldoc smartparens-lua lua-mode autoload lisp-mnt mm-archive
url-handlers finder-inf gnutls network-stream starttls url-http tls
url-gw url-cache url-auth url url-proxy url-privacy url-expand
url-methods url-history url-cookie url-domsuf url-util url-parse
url-vars mailcap paradox mule-util eieio-opt misearch multi-isearch
epa-file magit-key-mode magit grep diff-mode git-rebase-mode
git-commit-mode log-edit pcvs-util nix-mode
python-el-fgallina-expansions python dired-aux add-log rspec-mode
inf-ruby fic-mode flymake rhtml-mode rhtml-navigation rhtml-sgml-hacks
rhtml-ruby-hook smartparens-html html-mode-expansions sgml-mode
rhtml-erb rhtml-fonts ruby-block ruby-mode-expansions ruby-mode smie
yari smartparens-ruby enh-ruby-mode-expansions enh-ruby-mode color
server disp-table init-misc init-shell init-mail mu4e mu4e-speedbar
speedbar sb-image ezimage dframe mu4e-main mu4e-view epa derived epg
mu4e-headers mu4e-compose mu4e-draft mu4e-actions rfc2368 smtpmail
sendmail mu4e-mark mu4e-message html2text mu4e-proc mu4e-utils doc-view
jka-compr image-mode dired-open dired-hacks-utils dired-details+
dired-details dired-x wdired dired mu4e-lists mu4e-about mu4e-vars
message rfc822 mml mml-sec mm-decode mm-bodies mm-encode mail-parse
rfc2231 rfc2047 rfc2045 ietf-drums mailabbrev mail-utils gmm-utils
mailheader mu4e-meta init-major-modes geiser-mode geiser-xref
geiser-racket geiser-guile geiser-repl geiser-image geiser-compile
geiser-debug geiser-company geiser-doc geiser-menu geiser-autodoc eldoc
info-look geiser-edit geiser-completion geiser-eval geiser-connection tq
geiser-syntax scheme geiser-log geiser-popup view geiser-impl
geiser-custom geiser-base ac-geiser geiser racket-mode racket-edit
racket-complete racket-eval racket-repl racket-common racket-indent
racket-font-lock racket-keywords-and-builtins racket-emacs-compat vc
vc-dispatcher flycheck pcase subr-x cl-lib-highlight autorevert
filenotify notes-mode autoinsert which-func guess-offset cc-vars cc-defs
init-auto-completion-nonsense ac-slime slime shell-command compile
arc-mode archive-mode pp hyperspec browse-url auto-complete-config
auto-complete popup haskell-yas yasnippet init-search imenu-anywhere
idomenu imenu occur-x tramp-cache tramp-sh tramp tramp-compat
auth-source gnus-util mm-util mail-prsvr password-cache tramp-loaddefs
trampver shell pcomplete comint ansi-color format-spec recentf
tree-widget smex ido-ubiquitous flx-ido flx ido kill-ring-search
init-editing elastic-tabstops help-fns+ wid-edit sticky-windows
smartparens-config smartparens delsel midnight paren yafolding fold-dwim
noutline outline hideshow superword subword number mc-jump mc-extras
mc-remove mc-cua cua-rect cua-base mc-compare multiple-cursors
mc-hide-unmatched-lines-mode mc-separate-operations
rectangular-region-mode mc-mark-pop mc-mark-more mc-cycle-cursors
mc-edit-lines multiple-cursors-core rect expand-region
text-mode-expansions er-basic-expansions thingatpt expand-region-core
expand-region-custom winner buffer-move windmove move-dup easy-mmode
custom-input-methods quail help-mode whole-line-or-region align
wcheck-mode hungry-delete highlight-parentheses undo-tree diff
adaptive-wrap desktop frameset time-date savehist saveplace init-look
diminish whitespace warnings nyan-mode etags ring volatile-highlights
automargin smooth-scrolling hl-line leuven-theme init-keys init-helpers
ample-regexps rx s ucs-normalize dash setup find-func init-load-path
ac-etags-autoloads ac-geiser-autoloads ace-link-autoloads ace-window
ace-jump-mode ace-jump-mode-autoloads adoc-mode-autoloads
ample-regexps-autoloads auto-save-buffers-enhanced-autoloads
auto-yasnippet-autoloads back-button-autoloads c-eldoc-autoloads
cl-lib-highlight-autoloads company-auctex-autoloads info easymenu
tex-site company-go-autoloads company-inf-ruby-autoloads
css-mode-autoloads diminish-autoloads dired-avfs-autoloads
dired-details+-autoloads dired-details-autoloads dired-imenu-autoloads
dired-isearch-autoloads dired-open-autoloads dired-rainbow-autoloads
dired-subtree-autoloads dired-hacks-utils-autoloads direx-grep-autoloads
elmacro-autoloads enh-ruby-mode-autoloads epoch-view-autoloads
erc-colorize-autoloads erc-nick-notify-autoloads erc-view-log-autoloads
esh-buf-stack-autoloads esh-help-autoloads
eshell-fringe-status-autoloads eshell-prompt-extras-autoloads
expand-region-autoloads f-autoloads fancy-narrow-autoloads
flx-ido-autoloads flx-autoloads flycheck-rust-autoloads
flymake-go-autoloads flymake-autoloads flymake-racket-autoloads
flymake-ruby-autoloads flymake-sass-autoloads flymake-shell-autoloads
flymake-easy-autoloads fold-dwim-autoloads fold-this-autoloads
frame-fns-autoloads free-keys-autoloads fuzzy-autoloads
git-annex-autoloads git-timemachine-autoloads go-autocomplete-autoloads
auto-complete-autoloads go-direx-autoloads direx-autoloads
go-projectile-autoloads go-eldoc-autoloads google-contacts-autoloads
google-this-autoloads graphviz-dot-mode-autoloads guess-offset-autoloads
guide-key-autoloads helm-cmd-t-autoloads helm-flycheck-autoloads
helm-git-autoloads helm-git-files-autoloads helm-git-grep-autoloads
helm-go-package-autoloads deferred-autoloads go-mode-autoloads
helm-google-autoloads google-autoloads helm-helm-commands-autoloads
helm-mode-manager-autoloads helm-package-autoloads
helm-projectile-all-autoloads helm-rb-autoloads helm-ag-r-autoloads
help-fns+-autoloads hide-lines-autoloads hide-region-autoloads
hideshowvis-autoloads highlight-indentation-autoloads
highlight-parentheses-autoloads hl-sexp-autoloads htmlize-autoloads
ibuffer-git-autoloads ido-ubiquitous-autoloads idomenu-autoloads
iedit-autoloads imenu+-autoloads imenu-anywhere-autoloads
indent-guide-autoloads inflections-autoloads kill-ring-search-autoloads
lacarte-autoloads lorem-ipsum-autoloads magit-annex-autoloads
magit-filenotify-autoloads magit-find-file-autoloads
magit-gh-pulls-autoloads gh-autoloads eieio byte-opt bytecomp
byte-compile cconv eieio-core logito-autoloads magit-tramp-autoloads
markup-faces-autoloads mc-extras-autoloads mc-jump-autoloads
memory-usage-autoloads move-dup-autoloads move-line-autoloads
mu4e-maildirs-extension-autoloads multi-eshell-autoloads
multifiles-autoloads mv-shell-autoloads nav-flash-autoloads
nix-mode-autoloads nm-autoloads notmuch-labeler-autoloads
notmuch-unread-autoloads notmuch-autoloads number-autoloads
oauth2-autoloads occur-context-resize-autoloads occur-x-autoloads
parenface-autoloads pde-autoloads peg-autoloads perspective-autoloads
phi-search-mc-autoloads phi-search-autoloads log4e-autoloads
popwin-autoloads pretty-symbols-autoloads pkg-info-autoloads
epl-autoloads python-autoloads qml-mode-autoloads quack-autoloads
rainbow-blocks-autoloads rainbow-identifiers-autoloads
rainbow-mode-autoloads regex-tool-autoloads register-channel-autoloads
request-autoloads rhtml-mode-autoloads rings-autoloads robe-autoloads
rotate-text-autoloads rubocop-autoloads ruby-block-autoloads
rust-mode-autoloads s-buffer-autoloads s-autoloads sane-term-autoloads
scss-mode-autoloads shadchen-autoloads shell-command-autoloads
shell-pop-autoloads shen-mode-autoloads skewer-mode-autoloads
simple-httpd-autoloads slime-autoloads smart-mode-line-autoloads
rich-minority-autoloads smartrep-autoloads smex-autoloads
smooth-scrolling-autoloads advice state-autoloads
sticky-windows-autoloads stumpwm-mode-autoloads
sunrise-x-checkpoints-autoloads sunrise-x-loop-autoloads
sunrise-x-mirror-autoloads sunrise-x-modeline-autoloads
sunrise-x-tabs-autoloads sunrise-x-tree-autoloads
sunrise-commander-autoloads swoop-autoloads pcre2el-autoloads
ht-autoloads tabulated-list-autoloads theme-park-mode-autoloads
tree-mode-autoloads ucs-utils-autoloads persistent-soft-autoloads
list-utils-autoloads help-fns cl-macs cl gv pcache-autoloads
undo-tree-autoloads wcheck-mode-autoloads whole-line-or-region-autoloads
workgroups-autoloads edmacro kmacro cl-loaddefs cl-lib
yaml-mode-autoloads yari-autoloads yaxception-autoloads package
epg-config tooltip electric uniquify ediff-hook vc-hooks lisp-float-type
mwheel x-win x-dnd tool-bar dnd fontset image regexp-opt fringe
tabulated-list newcomment lisp-mode prog-mode register page menu-bar
rfn-eshadow timer select scroll-bar mouse jit-lock font-lock syntax
facemenu font-core frame cham georgian utf-8-lang misc-lang vietnamese
tibetan thai tai-viet lao korean japanese hebrew greek romanian slovak
czech european ethiopic indian cyrillic chinese case-table epa-hook
jka-cmpr-hook help simple abbrev minibuffer nadvice loaddefs button
faces cus-face macroexp files text-properties overlay sha1 md5 base64
format env code-pages mule custom widget hashtable-print-readable
backquote make-network-process dbusbind gfilenotify dynamic-setting
system-font-setting font-render-setting move-toolbar gtk x-toolkit x
multi-tty emacs)

Memory information:
((conses 16 2075895 294762)
 (symbols 48 69115 0)
 (miscs 40 3457 5662)
 (strings 32 283964 120989)
 (string-bytes 1 6151183)
 (vectors 16 171841)
 (vector-slots 8 4853102 78018)
 (floats 8 25304 1923)
 (intervals 56 143586 14571)
 (buffers 960 51)
 (heap 1024 137373 9556))