From: Wolfgang Scherer <Wolfgang.Scherer@gmx.de>
To: 39380@debbugs.gnu.org
Subject: bug#39380: 26.3: Opening files in vc-dir-mode with differing root and working dir fails
Date: Sat, 1 Feb 2020 01:13:39 +0100 [thread overview]
Message-ID: <8eea69d2-46ed-0c41-b516-0120251dcc96@gmx.de> (raw)
Here is another per-tree/per-directory bug, I just found:
1. Prepare a Mercurial repository `check-hgs` with sub directories `sub1`
and `sub2` and the files `sub1/a`, `sub2/x`,
.. code-block:: sh
mkdir -p check-hgs/sub1 check-hgs/sub2
touch check-hgs/sub1/a check-hgs/sub2/x
cd check-hgs && hg init
2. Find file `check-hgs/sub1/a`.
3. Press `C-x v d RET`, which will show a "Working dir" different from "Root":
.. code-block:: text
Working dir: check-hgs/sub1/
Root : check-hgs
./
sub1/
unregistered sub1/a
sub2/
unregistered sub2/x
4. Go to line
"unregistered sub2/x"
and press `f`.
5. Press `C-x d`.
The default directory is "check-hgs/sub1/sub2/", which is wrong. It
should be "check-hgs/sub2/".
The problem results from the call to `expand-file-name` in
`vc-dir-current-file`, which uses the default directory, but
`vc-dir-fileinfo->name` delivers a filename relative to the root
directory.
.. code-block:: elisp
(defun vc-dir-current-file ()
(let ((node (ewoc-locate vc-ewoc)))
(unless node
(error "No file available"))
(expand-file-name (vc-dir-fileinfo->name (ewoc-data node)))))
However, modifying `vc-dir-current-file` does not solve the problem,
since all other invocations of `vc-dir-fileinfo->name` ultimately
suffer from the same deficiency.
It is IMHO better to remove the hybrid state of `vc-dir-mode`, where
the default directory is different from the root directory.
next reply other threads:[~2020-02-01 0:13 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-02-01 0:13 Wolfgang Scherer [this message]
2020-02-01 7:20 ` bug#39380: 26.3: Opening files in vc-dir-mode with differing root and working dir fails Dmitry Gutov
2020-02-02 22:35 ` Wolfgang Scherer
2020-02-03 13:11 ` Dmitry Gutov
2020-02-04 16:04 ` Wolfgang Scherer
2020-02-05 15:56 ` Dmitry Gutov
2020-02-06 13:25 ` Wolfgang Scherer
2020-02-06 13:38 ` Dmitry Gutov
2020-02-07 9:53 ` Eli Zaretskii
2020-02-07 11:03 ` Dmitry Gutov
2020-02-07 14:00 ` Eli Zaretskii
2020-02-08 1:20 ` Dmitry Gutov
2020-02-08 8:04 ` Eli Zaretskii
2020-02-08 9:36 ` Dmitry Gutov
2020-02-08 10:11 ` Eli Zaretskii
2020-02-11 22:36 ` Dmitry Gutov
2020-02-01 7:20 ` Dmitry Gutov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=8eea69d2-46ed-0c41-b516-0120251dcc96@gmx.de \
--to=wolfgang.scherer@gmx.de \
--cc=39380@debbugs.gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).