Subject: bug#22003: 24.5; *vc-dir* show ignored files for Mercurial

From: Oleksandr Gavenko <[email-masked]>
Date: Tue, 24 Nov 2015 11:10:07 +0200

In GNU Emacs 24.5.1 (x86_64-pc-linux-gnu, GTK+ Version 3.18.2)
 of 2015-10-24 on trouble, modified by Debian
Windowing system distributor `The X.Org Foundation', version 11.0.11702000
System Description:	Debian GNU/Linux testing (stretch)

>From some newer version of Emacs (I currently on 24.5.1) after some operation
`*vc-dir*` buffer begin to show *ignored* files.

I specially craft `.hgignore` to make list of `hg status` short. But Emacs
`vc-mode` doesn't respect my preference.

Is it possible to ignore *ignored* files? I kill *vc-dir* and reopen in order
to hide *ignored* files.

To reproduce:

 * open `*vc-dir*`
 * modify file
 * undo changes on file from `*vc-dir*`
 * refresh `*vc-dir*` content

I made wrapper to diagnose problem:

    #!/bin/sh
    echo hg "$@" >> ~/tmp/hg.log
    /usr/bin/hg "$@"

>From above instruction steps I got log:

    root       # here I press C-x v d
    id -b
    id -t
    status -C ./   # below I edit and save file
    hg --config alias.status=status --config defaults.status= status -A hg.rst
    hg --config alias.status=status --config defaults.status= status -A hg.rst
    hg parent --template {rev} hg.rst
    hg --config alias.status=status --config defaults.status= status -A hg.rst
    hg --config alias.status=status --config defaults.status= status -A hg.rst
    hg diff hg.rst       # <== revert file in *vc-dir* by C-x v u
    hg revert hg.rst
    hg --config alias.status=status --config defaults.status= status -A hg.rst
    hg root            # <== here I press g
    hg id -b
    hg id -t
    hg status -C ./
    hg status -mardui -C hg.rst ./

Last command include `-i` option which cause issue. Sources have:

    $ grep -R -n mardu
    lisp/vc/vc-hg.el:640:         (concat "-mardu" (if files "i"))

which is:

    (defun vc-hg-dir-status-files (dir files update-function)
      (apply 'vc-hg-command (current-buffer) 'async dir "status"
             (concat "-mardu" (if files "i"))
             "-C" files)
      (vc-run-delayed
        (vc-hg-after-dir-status update-function)))

`lisp/vc/vc.el` state that:

    ;; - dir-status-files (dir files update-function)
    ;;   If FILES is non-nil, this function should report on all requested
    ;;   files, including up-to-date or ignored files.

Configured using:
 `configure --build x86_64-linux-gnu --prefix=/usr --sharedstatedir=/var/lib
 --libexecdir=/usr/lib --localstatedir=/var/lib --infodir=/usr/share/info
 --mandir=/usr/share/man --with-pop=yes
 --enable-locallisppath=/etc/emacs24:/etc/emacs:/usr/local/share/emacs/24.5/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/24.5/site-lisp:/usr/share/emacs/site-lisp
 --build x86_64-linux-gnu --prefix=/usr --sharedstatedir=/var/lib
 --libexecdir=/usr/lib --localstatedir=/var/lib --infodir=/usr/share/info
 --mandir=/usr/share/man --with-pop=yes
 --enable-locallisppath=/etc/emacs24:/etc/emacs:/usr/local/share/emacs/24.5/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/24.5/site-lisp:/usr/share/emacs/site-lisp
 --with-x=yes --with-x-toolkit=gtk3 --with-toolkit-scroll-bars 'CFLAGS=-g -O2
 -fstack-protector-strong -Wformat -Werror=format-security -Wall'
 CPPFLAGS=-D_FORTIFY_SOURCE=2 LDFLAGS=-Wl,-z,relro'

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

Major mode: Emacs-Lisp

Minor modes in effect:
  diff-auto-refine-mode: t
  desktop-save-mode: t
  global-cwarn-mode: t
  global-srecode-minor-mode: t
  srecode-minor-mode: t
  global-cedet-m3-minor-mode: t
  cedet-m3-minor-mode: t
  global-semanticdb-minor-mode: t
  semantic-decoration-mode: t
  global-semantic-decoration-mode: t
  semantic-mru-bookmark-mode: t
  global-semantic-mru-bookmark-mode: t
  semantic-idle-completions-mode: t
  global-semantic-idle-completions-mode: t
  global-semantic-idle-scheduler-mode: t
  semantic-idle-local-symbol-highlight-mode: t
  global-semantic-idle-local-symbol-highlight-mode: t
  global-semantic-idle-summary-mode: t
  semantic-idle-summary-mode: t
  semantic-idle-scheduler-mode: t
  which-function-mode: t
  auto-image-file-mode: t
  icomplete-mode: t
  show-paren-mode: t
  global-hl-line-mode: t
  delete-selection-mode: t
  global-hi-lock-mode: t
  hi-lock-mode: t
  global-whitespace-mode: t
  display-time-mode: t
  recentf-mode: t
  semantic-highlight-func-mode: t
  global-semantic-highlight-func-mode: t
  semantic-mode: t
  global-ede-mode: t
  ede-minor-mode: t
  shell-dirtrack-mode: t
  eldoc-mode: t
  mouse-wheel-mode: t
  global-prettify-symbols-mode: t
  prettify-symbols-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
  size-indication-mode: t
  column-number-mode: t
  line-number-mode: t
  transient-mark-mode: t
  hs-minor-mode: t

Recent messages:
uncompressing vc-hg.el.gz...done
Parsing vc-hg.el.gz (LL)...done
Mark set [6 times]
Grep finished (matches found)
Mark set
Searched 1 buffer; 2 matches for `dir-status-files'
Mark set
Grep finished (matches found)
Parsing vc.el (LL)...done
Quit

Load-path shadows:
/home/user/.emacs.d/elpa/web-mode-20151020.1112/web-mode hides /home/user/devel/emacs/web-mode/web-mode
/home/user/devel/emacs/cedet/lisp/speedbar/loaddefs hides /home/user/devel/emacs/cedet/lisp/cedet/loaddefs
/home/user/devel/emacs/web-mode/wfs-mode hides /home/user/usr/share/emacs/site-lisp/wfs-mode
/home/user/devel/emacs/cedet/lisp/speedbar/loaddefs hides /home/user/.emacs.d/my/loaddefs
/home/user/usr/share/emacs/site-lisp/rnc-mode hides /usr/share/emacs24/site-lisp/rnc-mode/rnc-mode
/usr/share/emacs24/site-lisp/gcl/smart-complete hides /usr/share/emacs24/site-lisp/maxima/smart-complete
/usr/share/emacs24/site-lisp/gcl/sshell hides /usr/share/emacs24/site-lisp/maxima/sshell
/usr/share/emacs/24.5/site-lisp/elpa/markdown-mode-2.0snapshot78/markdown-mode hides /usr/share/emacs24/site-lisp/emacs-goodies-el/markdown-mode
/usr/share/emacs24/site-lisp/slime/contrib/bridge hides /usr/share/emacs/24.5/site-lisp/ilisp/bridge
/usr/share/emacs24/site-lisp/ess/path hides /usr/share/emacs/24.5/site-lisp/ilisp/path
/usr/share/emacs/24.5/site-lisp/ilisp/extra/hyperspec hides /usr/share/emacs/24.5/site-lisp/slime/lib/hyperspec
/usr/share/emacs/24.5/site-lisp/debian-startup hides /usr/share/emacs/site-lisp/debian-startup
/usr/share/emacs24/site-lisp/cmake-data/cmake-mode hides /usr/share/emacs/site-lisp/cmake-mode
/usr/share/emacs24/site-lisp/flim/md4 hides /usr/share/emacs/24.5/lisp/md4
/usr/share/emacs24/site-lisp/flim/hex-util hides /usr/share/emacs/24.5/lisp/hex-util
/home/user/devel/emacs/cedet/lisp/speedbar/loaddefs hides /usr/share/emacs/24.5/lisp/loaddefs
/usr/share/emacs/site-lisp/rst hides /usr/share/emacs/24.5/lisp/textmodes/rst
/usr/share/emacs24/site-lisp/prolog-el/prolog hides /usr/share/emacs/24.5/lisp/progmodes/prolog
/usr/share/emacs24/site-lisp/flim/hmac-md5 hides /usr/share/emacs/24.5/lisp/net/hmac-md5
/usr/share/emacs24/site-lisp/flim/sasl-cram hides /usr/share/emacs/24.5/lisp/net/sasl-cram
/usr/share/emacs24/site-lisp/flim/hmac-def hides /usr/share/emacs/24.5/lisp/net/hmac-def
/usr/share/emacs24/site-lisp/flim/sasl-ntlm hides /usr/share/emacs/24.5/lisp/net/sasl-ntlm
/usr/share/emacs24/site-lisp/flim/sasl-digest hides /usr/share/emacs/24.5/lisp/net/sasl-digest
/usr/share/emacs24/site-lisp/flim/ntlm hides /usr/share/emacs/24.5/lisp/net/ntlm
/usr/share/emacs24/site-lisp/flim/sasl hides /usr/share/emacs/24.5/lisp/net/sasl
/usr/share/emacs24/site-lisp/wl/rfc2368 hides /usr/share/emacs/24.5/lisp/mail/rfc2368
/usr/share/emacs/24.5/site-lisp/slime/lib/ert-x hides /usr/share/emacs/24.5/lisp/emacs-lisp/ert-x
/usr/share/emacs/24.5/site-lisp/slime/lib/ert hides /usr/share/emacs/24.5/lisp/emacs-lisp/ert

Features:
(shadow emacsbug ede/locate ede/emacs semantic/bovine/el semantic/db-el view
vc-bzr vc-sccs vc-cvs vc-rcs find-dired grep flow-fill semantic/symref/filter
log-edit diff-mode semantic/analyze/complete url-file url-dired url-cache
url-auth eww mm-url url url-proxy url-privacy url-expand url-methods
url-history url-cookie url-domsuf shr ibuf-ext ibuffer bookmark w3m-form w3m
timezone w3m-hist w3m-fb bookmark-w3m w3m-ems w3m-ccl ccl w3m-favicon
w3m-image w3m-proc w3m-util pp mm-archive hippie-exp log-view pcvs-util
nnfolder canlock quail nnir goto-addr term ehelp sb-info info tabify man
dired-aux apt-utils mailalias smtpmail sendmail flyspell ispell sort smiley
gnus-cite mail-extr gnus-async gnus-bcklg qp gnus-ml gnus-topic utf-7 nndraft
nnmh gnutls network-stream starttls nnimap parse-time tls utf7 netrc
gnus-agent gnus-srvr gnus-score score-mode nnvirtual gnus-msg gnus-art mm-uu
mml2015 mm-view mml-smime smime dig mailcap gnus-cache gnus-sum mule-util
url-util url-handlers time-stamp misearch multi-isearch calccomp calc-alg
calc-menu calc-ext calc-aent calc calc-loaddefs calc-macs tramp-adb
tramp-cache tramp-sh tramp tramp-compat tramp-loaddefs trampver
semantic/tag-write semantic/complete eieio-opt help-mode semantic/db-typecache
ede/project-am ede/autoconf-edit autoconf autoconf-mode ede/makefile-edit
ede/make generic sh-script smie semantic/tag-file semantic/wisent/java-tags
semantic/java semantic/doc semantic/wisent/java-tags-wy superword subword
cc-langs vc-git markdown-mode semantic/lex-spp vc-svn conf-mode ede/maven2
ede/jvm-base log4-hi-mode autorevert filenotify rst org-element org-rmail
org-mhe org-irc org-info org-gnus org-docview doc-view image-mode org-bibtex
bibtex org-bbdb org-w3m semantic/imenu semantic/sb semantic/m3
semantic/db-file cedet-files semantic/bovine/make semantic/decorate/include
semantic/dep semantic/bovine/make-by semantic/bovine make-mode ede/dired vc-hg
vc-dir ewoc vc vc-dispatcher add-log fvwm-mode derived desktop frameset
web-mode cwarn semantic/ia semantic/analyze/refs cedet-java semantic/db-global
semantic/symref/global semantic/symref cedet-global semantic/ectags/lang
semantic/ectags/parse semantic/adebug eieio-datadebug data-debug
semantic/ectags/util srecode/mode srecode/insert srecode/filters srecode/args
srecode/find cedet-m3 semantic/senator semantic/db-find semantic/db-ref
semantic/db-mode semantic/decorate/mode semantic/decorate pulse
semantic/mru-bookmark semantic/idle working fame which-func imenu gnus-demon
nntp gnus-group gnus-undo nnmail mail-source gnus-start gnus-spec gnus-win
nnoo gnus-int gnus-range message rfc822 mml mml-sec mm-decode mm-bodies
mm-encode mail-parse rfc2231 rfc2047 rfc2045 ietf-drums mailabbrev gmm-utils
mailheader gnus gnus-ems nnheader mail-utils ecomplete org-capture org
org-macro org-footnote org-pcomplete org-list org-faces org-entities noutline
outline 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
find-func cal-menu calendar cal-loaddefs jdone image-file jka-compr ls-lisp
dired saveplace icomplete ffap url-parse auth-source gnus-util mm-util
mail-prsvr password-cache url-vars paren hl-line delsel hi-lock generic-x
cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine
disp-table server whitespace time avoid ack-autoloads edmacro kmacro package
epg-config recentf tree-widget cedet-devel-load srecode/map semantic/edit
srecode/srt-mode srecode/template srecode/srt-wy semantic/wisent
semantic/wisent/wisent srecode/ctxt srecode/compile srecode/dictionary
srecode/table srecode semantic/canned-configs semantic/ia-sb semantic/analyze
semantic/sort semantic/scope semantic/analyze/fcn semantic/db semantic/ctxt
semantic/format semantic/tag-ls semantic/find semantic/util-modes
semantic/util semantic semantic/tag semantic/lex semantic/fw mode-local
ede/speedbar ede/files ede ede/detect ede/base ede/auto ede/source eieio-base
eieio-speedbar speedbar sb-image ezimage dframe eieio-custom wid-edit cedet
cedet-compat inversion cedet-remove-builtin eieio byte-opt bytecomp
byte-compile cl-extra cconv eieio-core etags-select etags-table etags
debian-el debian-el-loaddefs w3m-load slime-autoloads cl-macs scala-mode-auto
haskell-mode-autoloads ido ess-toolbar ess-mouse mouseme thingatpt browse-url
ess-menu ess-swv ess-noweb ess-noweb-font-lock-mode ess-bugs-l essd-els
ess-sas-d ess-sas-l ess-sas-a shell pcomplete ess-sta-d ess-sta-l cc-vars
cc-defs make-regexp ess-sp6-d ess-sp3-d ess-julia ess-r-d ess-r-completion
compile ess-tracebug format-spec ess-roxy advice hideshow ess-help
ess-developer eldoc help-fns ess-s-l ess ess-inf comint ansi-color ring
ess-mode ess-noweb-mode ess-utils cl gv cl-loaddefs cl-lib ess-custom
executable easymenu ess-compat ess-site emacs-goodies-el emacs-goodies-custom
emacs-goodies-loaddefs easy-mmode dpkg-dev-el dpkg-dev-el-loaddefs devhelp
time-date 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 893378 105597)
 (symbols 48 70375 0)
 (miscs 40 8764 22414)
 (strings 32 256243 25144)
 (string-bytes 1 7418407)
 (vectors 16 76640)
 (vector-slots 8 2356287 48144)
 (floats 8 788 1172)
 (intervals 56 60475 6)
 (buffers 960 135)
 (heap 1024 102911 4834))

-- 
Best regards!