GNU bug report logs - #31601
Dired/Wdired: Play nicely with recursive list of files and directories.

Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.

Package: emacs; Severity: minor; Reported by: Keith David Bershatsky <esq@HIDDEN>; dated Sat, 26 May 2018 04:38:02 UTC; Maintainer for emacs is bug-gnu-emacs@HIDDEN.

Message received at 31601 <at> debbugs.gnu.org:


Received: (at 31601) by debbugs.gnu.org; 28 May 2018 23:11:44 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon May 28 19:11:44 2018
Received: from localhost ([127.0.0.1]:52901 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1fNRIm-000240-Bd
	for submit <at> debbugs.gnu.org; Mon, 28 May 2018 19:11:44 -0400
Received: from gateway31.websitewelcome.com ([192.185.143.52]:12458)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <esq@HIDDEN>) id 1fNRIj-00023p-0I
 for 31601 <at> debbugs.gnu.org; Mon, 28 May 2018 19:11:42 -0400
Received: from cm11.websitewelcome.com (cm11.websitewelcome.com [100.42.49.5])
 by gateway31.websitewelcome.com (Postfix) with ESMTP id 552D5FCE2
 for <31601 <at> debbugs.gnu.org>; Mon, 28 May 2018 18:11:40 -0500 (CDT)
Received: from gator3053.hostgator.com ([50.87.144.69]) by cmsmtp with SMTP
 id NRIhfGFHQRPojNRIifxXid; Mon, 28 May 2018 18:11:40 -0500
X-Authority-Reason: nr=8
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lawlist.com
 ; s=default;
 h=Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Cc
 :To:From:Message-ID:Date:Sender:Reply-To:Content-ID:Content-Description:
 Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:
 In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:List-Subscribe:
 List-Post:List-Owner:List-Archive;
 bh=3xI9YFan3hXVVEPg/DQbmA05uvahihdJ9VUvkL0OEo8=; b=KnF4ciS6VvXv9aHEYX++vgg7Iv
 9qt54UVyt3+NaC6IcZh3+jYeO9TDr5s1gzPnkq3js0eqKzglUt6n7n0eO28R73UEVDhJ5Qi4ZQM2M
 8U5HOgF5SOj2NmvA3j6thWvzu+OB/CUxenD6hHPGzykSt9n3TMF6cJhmUJ42om0fVV3j4oYcI4MEC
 gGMpWLSTNN1aNQZVfWy6lLHAOwIZIk/N6daiSQO2BWMsAQ8HVAoQIrHDjnhGorubm4x6TIzGaOkdh
 bnTYwZcGXV9eGysmE8pYkzQcbq/x+TAWcAB/OVVn8euslZj39aEcK9Um7L/2i0B4G9n2nPDJaoXPV
 aaKS2dsg==;
Received: from cpe-45-48-239-195.socal.res.rr.com ([45.48.239.195]:53964
 helo=server.local)
 by gator3053.hostgator.com with esmtpsa (TLSv1:DHE-RSA-AES256-SHA:256)
 (Exim 4.89_1) (envelope-from <esq@HIDDEN>)
 id 1fNRIh-002zJX-7l; Mon, 28 May 2018 18:11:39 -0500
Date: Mon, 28 May 2018 16:11:38 -0700
Message-ID: <m2h8mr2x5h.wl%esq@HIDDEN>
From: Keith David Bershatsky <esq@HIDDEN>
To: Tino Calancha <tino.calancha@HIDDEN>
Subject: Re: bug#31601: Dired/Wdired: Play nicely with recursive list of files
 and directories.
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="Multipart_Mon_May_28_16:11:38_2018-1"
Content-Transfer-Encoding: 8bit
X-AntiAbuse: This header was added to track abuse,
 please include it with any abuse report
X-AntiAbuse: Primary Hostname - gator3053.hostgator.com
X-AntiAbuse: Original Domain - debbugs.gnu.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - lawlist.com
X-BWhitelist: no
X-Source-IP: 45.48.239.195
X-Source-L: No
X-Exim-ID: 1fNRIh-002zJX-7l
X-Source: 
X-Source-Args: 
X-Source-Dir: 
X-Source-Sender: cpe-45-48-239-195.socal.res.rr.com (server.local)
 [45.48.239.195]:53964
X-Source-Auth: lawlist
X-Email-Count: 1
X-Source-Cap: bGF3bGlzdDtsYXdsaXN0O2dhdG9yMzA1My5ob3N0Z2F0b3IuY29t
X-Local-Domain: yes
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 31601
Cc: 31601 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

--Multipart_Mon_May_28_16:11:38_2018-1
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Attached is a draft/proof-concept patch.diff of my ideas regarding how to make dired/wdired play nicely with an arbitrary list of files and folders, including a recursive list.  I asked for some help on emacs.stackexchange.com to implement these new approaches, and used the answers by @Drew, @Tobias and @Andreas Röhler.  Citations to their answers are included in the draft/proof-concept patch.  I would need some help regarding how to update the dired-directory variable when deleting a file in a regular dired-mode buffer, and I have added a FIXME notation in the likely spot of `dired.el` -- the approach would be similar to renaming a file (already implemented in the attached draft patch), but is a bit more complicated due to potential recursive deletions.

The file-name-nondirectory components in wdired-mode now have read-only attributes so that a user no longer erroneously believes that he/she can modify them, and only latter see an error message when trying to commit the changes:  file-error Renaming No such file or directory ....

I have only done some basic renaming of files and directories in wdired mode using both `find-name-dired` and `dired-list-files-folders' to populate the dired- buffer.  I did not spend any time implementing hash-tables to speed up the modification of the dired-directory variable, as that would likely involve modifying a few or more aspects of dired-mode.

Thanks,

Keith


--Multipart_Mon_May_28_16:11:38_2018-1
Content-Type: application/diff; type=patch
Content-Disposition: attachment; filename="patch.diff"
Content-Transfer-Encoding: base64

ZGlmZiAtLWdpdCBhL2xpc3AvZGlyZWQtYXV4LmVsIGIvbGlzcC9kaXJlZC1hdXguZWwKaW5kZXgg
ODIxYjdkNy4uYjk4YzAwOCAxMDA2NDQKLS0tIGEvbGlzcC9kaXJlZC1hdXguZWwKKysrIGIvbGlz
cC9kaXJlZC1hdXguZWwKQEAgLTE1OTAsMTEgKzE1OTAsNjggQEAgSWYgYGFzaycsIGFzayBmb3Ig
dXNlciBjb25maXJtYXRpb24uIgogCSAgICAgICBkaXJlZC1jcmVhdGUtZmlsZXMtZmFpbHVyZXMp
CiAJIChkaXJlZC1sb2cgIkNhbid0IHNldCBkYXRlIG9uICVzOlxuJXNcbiIgZnJvbSBlcnIpKSkp
KSkKIAorOzs7IChzZXRxIG15bGlzdCAnKCJhcHBsZSIgInBlYXIiICJwZWFjaCIgIm5lY3Rhcmlu
ZSIgIndhdGVybWVsb24iKSkKKzs7OyAoYXItcmVwbGFjZS0taW4tbGlzdCAiYXBwbGUiICJjaGVy
cnkiIG15bGlzdCkKKzs7OyBXcml0dGVuIGJ5IEBBbmRyZWFzIFLDtmhsZXI6ICBodHRwczovL2Vt
YWNzLnN0YWNrZXhjaGFuZ2UuY29tL2EvNDE2MzEvMjI4NworKGRlZnVuIGFyLXJlcGxhY2UtLWlu
LWxpc3QgKGVsZW0gcmVwbGFjZW1lbnQgbGlzdCkKKyAgIkV4cGVjdHMgYSBMSVNUIG9mIHN0cmlu
Z3MuCitFTEVNOiBlbGVtZW50IHRvIHJlcGxhY2UgYnkgYXJnIFJFUExBQ0VNRU5UIgorICAobGV0
IChuZXdsaXN0KQorICAgIChkb2xpc3QgKGVsZSBsaXN0KQorICAgICAgKGlmIChzdHJpbmc9IGVs
ZSBlbGVtKQorICAgICAgICAocHVzaCByZXBsYWNlbWVudCBuZXdsaXN0KQorICAgICAgICAocHVz
aCBlbGUgbmV3bGlzdCkpKQorICAgIChucmV2ZXJzZSBuZXdsaXN0KSkpCisKKyhkZWZ1biByZXBs
YWNlLWRpcmVjdG9yeS1uYW1lLWluLWZpbGVzIChvbGQgbmV3IGxpc3QpCisiUmVwbGFjZSBpbiBm
aWxlLW5hbWVzL2RpcmVjdG9yeS1uYW1lcyBhbGwgb2NjdXJyZW5jZXMgb2YgT0xEIGRpcmVjdG9y
eSBuYW1lCit3aXRoIE5FVyBkaXJlY3RvcnkgbmFtZSBpbiB0aGUgTElTVC4iCisgIChsZXQgKChy
ZWdleHAtb2xkIChjb25jYXQgIl4iIChyZWdleHAtcXVvdGUgb2xkKSkpCisgICAgICAgIG5ld2xp
c3QpCisgICAgKGRvbGlzdCAoZmlsZSBsaXN0KQorICAgICAgOzs7IGBkaXJlZC1ub3NlbGVjdCcg
bWF5IHNldCB0aGUgZmlyc3QgZWxlbWVudCBvZiBgZGlyZWQtZGlyZWN0b3J5JyB3aXRoIGEgbGVh
ZGluZyB+CisgICAgICA7OzsgICAoYWJicmV2aWF0ZS1maWxlLW5hbWUgKGV4cGFuZC1maWxlLW5h
bWUgKGRpcmVjdG9yeS1maWxlLW5hbWUgIi9Vc2Vycy9Ib21lL2ZvbyIpKSkgPT4gIn4vZm9vIgor
ICAgICAgOzs7CisgICAgICA7OzsgV2UgdXNlIE5FVyB0byB0ZXN0IGZvciBgZmlsZS1kaXJlY3Rv
cnktcCcgYmVjYXVzZSB0aGUgZGlyZWN0b3J5CisgICAgICA7OzsgaGFzIGFscmVhZHkgYmVlbiBy
ZW5hbWVkIGJ5IHRoZSB0aW1lIHdlIGdldCBoZXJlLiAgQWx0ZXJuYXRpdmVseSwKKyAgICAgIDs7
OyB3ZSBjb3VsZCB0ZXN0IHRoZSBPTEQgZmlsZW5hbWUgdG8gc2VlIGlmIGl0IGlzIGEgZGlyZWN0
b3J5IGF0IHRoZQorICAgICAgOzs7IHRoZSBvdXRzZXQgb2YgYGRpcmVkLXJlbmFtZS1maWxlJyBh
bmQgc2F2ZSB0aGUgcmVzdWx0LgorICAgICAgOzs7CisgICAgICA7OzsgRklYTUU6ICBXZSBuZWVk
IGFuIGFkZGl0aW9uYWwgdGVzdCBhbmQgdGhlbiBkZWFsIHdpdGggYSBob21lIGRpcmVjdG9yeSB+
LgorICAgICAgOzs7IFRoZSBjb2RlIGRvZXMgbm90IHByZXNlbnRseSBkZWFsIHdpdGggYSAifi9m
b28vYmFyIiBmaWxlIHdoZW4gdGhlCisgICAgICA7OzsgZGlyZWN0b3J5IGBmb29gIGlzIHJlbmFt
ZWQuICBgcmVuYW1lLWZpbGUnIHdpbGwgZXJyb3IuCisgICAgICAoaWYgKGFuZCAoZmlsZS1kaXJl
Y3RvcnktcCBuZXcpCisgICAgICAgICAgICAgICAoc3RyaW5nLW1hdGNoIHJlZ2V4cC1vbGQgZmls
ZSkKKyAgICAgICAgICAgICAgIDs7OyBCZWNhdXNlIHdlIGhhdmUgYWxyZWFkeSBwcm9jZXNzZWQg
YGFyLXJlcGxhY2UtLWluLWxpc3QnLAorICAgICAgICAgICAgICAgOzs7IHRoZSBORVcgbmFtZSBp
cyBhbHJlYWR5IGluIGBkaXJlZC1kaXJlY3RvcnknLgorICAgICAgICAgICAgICAgKG5vdCAoZXF1
YWwgbmV3IGZpbGUpKSkKKyAgICAgICAgIChwdXNoIChyZXBsYWNlLXJlZ2V4cC1pbi1zdHJpbmcg
cmVnZXhwLW9sZCBuZXcgZmlsZSkgbmV3bGlzdCkKKyAgICAgICAgIChwdXNoIGZpbGUgbmV3bGlz
dCkpKQorICAgIChucmV2ZXJzZSBuZXdsaXN0KSkpCisKIDs7OyMjI2F1dG9sb2FkCiAoZGVmdW4g
ZGlyZWQtcmVuYW1lLWZpbGUgKGZpbGUgbmV3bmFtZSBvay1pZi1hbHJlYWR5LWV4aXN0cykKICAg
KGRpcmVkLWhhbmRsZS1vdmVyd3JpdGUgbmV3bmFtZSkKICAgKGRpcmVkLW1heWJlLWNyZWF0ZS1k
aXJzIChmaWxlLW5hbWUtZGlyZWN0b3J5IG5ld25hbWUpKQogICAocmVuYW1lLWZpbGUgZmlsZSBu
ZXduYW1lIG9rLWlmLWFscmVhZHktZXhpc3RzKSA7IGVycm9yIGlzIGNhdWdodCBpbiAtY3JlYXRl
LWZpbGVzCisgIDs7OyBJbiB0aGUgY29udGV4dCBvZiBgd2RpcmVkLWZpbmlzaC1lZGl0JywgaXQg
Y2FsbHMgYHdkaXJlZC1kby1yZW5hbWVzJyBhbmQKKyAgOzs7IHRoYXQgZnVuY3Rpb24gY29udGFp
bnMgYSBgY29uZGl0aW9uLWNhc2UnIHNlY3Rpb24gdGhhdCBjb3VudHMgdGhlIG51bWJlciBvZiBl
cnJvcnMuCisgIDs7OyBGb3IgcHVycG9zZXMgb2YgYGRpcmVkLXJlbmFtZS1maWxlJywgdGhlIGZ1
bmN0aW9uIGV4aXN0cyBhcyBzb29uIGFzIGByZW5hbWUtZmlsZScKKyAgOzs7IHRocm93cyBhbiBl
cnJvciwgc28gd2UgbmV2ZXIgZ2V0IHRvIHRoZSByZXN0IG9mIHRoaXMgZnVuY3Rpb24gYmVsb3cg
d2hlbiBhIHJlbmFtaW5nIGVycm9yIG9jY3Vycy4KKyAgOzs7CisgIDs7OyBVcGRhdGUgdGhlIGBk
aXJlZC1kaXJlY3RvcnknIGJ5IHJlcGxhY2luZyBGSUxFIHdpdGggTkVXTkFNRS4KKyAgKHdoZW4g
KGFuZCAobGlzdHAgZGlyZWQtZGlyZWN0b3J5KQorICAgICAgICAgICAgIChtZW1iZXIgZmlsZSBk
aXJlZC1kaXJlY3RvcnkpKQorICAgIChzZXRxIGRpcmVkLWRpcmVjdG9yeQorICAgICAgKGFyLXJl
cGxhY2UtLWluLWxpc3QgZmlsZSBuZXduYW1lIGRpcmVkLWRpcmVjdG9yeSkpKQorICA7OzsgSWYg
RklMRSBpcyBhIGRpcmVjdG9yeSwgdGhlbiB1cGRhdGUgdGhlIGBkaXJlZC1kaXJlY3RvcnknIGJ5
CisgIDs7OyByZXBsYWNpbmcgYWxsIG9jY3VycmVuY2VzIG9mIHRoYXQgZGlyZWN0b3J5IG5hbWUg
d2l0aGluIGFueSBmaWxlbmFtZXMuCisgICh3aGVuIChhbmQgKGxpc3RwIGRpcmVkLWRpcmVjdG9y
eSkKKyAgICAgICAgICAgICAgIDs7OyBCZWNhdXNlIHdlIGhhdmUgYWxyZWFkeSBwcm9jZXNzZWQg
YGFyLXJlcGxhY2UtLWluLWxpc3QnLAorICAgICAgICAgICAgICAgOzs7IHRoZSBORVdOQU1FIGlz
IGFscmVhZHkgaW4gYGRpcmVkLWRpcmVjdG9yeScuCisgICAgICAgICAgICAgKG1lbWJlciBuZXdu
YW1lIGRpcmVkLWRpcmVjdG9yeSkpCisgICAgKHNldHEgZGlyZWQtZGlyZWN0b3J5CisgICAgICAg
ICAgIChyZXBsYWNlLWRpcmVjdG9yeS1uYW1lLWluLWZpbGVzIGZpbGUgbmV3bmFtZSBkaXJlZC1k
aXJlY3RvcnkpKSkKICAgOzsgU2lsZW50bHkgcmVuYW1lIHRoZSB2aXNpdGVkIGZpbGUgb2YgYW55
IGJ1ZmZlciB2aXNpdGluZyB0aGlzIGZpbGUuCiAgIChhbmQgKGdldC1maWxlLWJ1ZmZlciBmaWxl
KQogICAgICAgICh3aXRoLWN1cnJlbnQtYnVmZmVyIChnZXQtZmlsZS1idWZmZXIgZmlsZSkKZGlm
ZiAtLWdpdCBhL2xpc3AvZGlyZWQuZWwgYi9saXNwL2RpcmVkLmVsCmluZGV4IDEzNDhkZjYuLjVj
NDU3NjQgMTAwNjQ0Ci0tLSBhL2xpc3AvZGlyZWQuZWwKKysrIGIvbGlzcC9kaXJlZC5lbApAQCAt
MzExOSw2ICszMTE5LDExIEBAIG5vbi1lbXB0eSBkaXJlY3RvcmllcyBpcyBhbGxvd2VkLiIKIAkg
ICAgICAobGV0ICgoaW5oaWJpdC1yZWFkLW9ubHkgdCkpCiAJCShjb25kaXRpb24tY2FzZSBlcnIK
IAkJICAgIChsZXQgKChmbiAoY2FyIChjYXIgbCkpKSkKKwkJICAgICAgOzs7IGh0dHA6Ly9kZWJi
dWdzLmdudS5vcmcvY2dpL2J1Z3JlcG9ydC5jZ2k/YnVnPTMxNjAxCisJCSAgICAgIDs7OyBGSVhN
RTogIEBsYXdsaXN0IGNvdWxkIHVzZSBzb21lIGhlbHAgZmlndXJpbmcgb3V0IGhvdy93aGVuIHRv
CisJCSAgICAgIDs7OyB1cGRhdGUgdGhlIGBsYXdsaXN0LWRpcmVkLWRpcmVjdG9yeScgd2hlbiBp
dCBpcyBhIGxpc3QuICBUaGVyZSBhcmUKKwkJICAgICAgOzs7IGEgZmV3IGRpZmZlcmVudCBvcHRp
b25zIHRoYXQgQGxhd2xpc3QgZG9lcyBub3QgZnVsbHkgdW5kZXJzdGFuZAorCQkgICAgICA7Ozsg
c3VjaCBhcyBSRUNVUlNJVkUgZGVsZXRpb25zLgogCQkgICAgICAoZGlyZWQtZGVsZXRlLWZpbGUg
Zm4gZGlyZWQtcmVjdXJzaXZlLWRlbGV0ZXMgdHJhc2gpCiAJCSAgICAgIDs7IGlmIHdlIGdldCBo
ZXJlLCByZW1vdmluZyB3b3JrZWQKIAkJICAgICAgKHNldHEgc3VjYyAoMSsgc3VjYykpCmRpZmYg
LS1naXQgYS9saXNwL3dkaXJlZC5lbCBiL2xpc3Avd2RpcmVkLmVsCmluZGV4IGJiNjBlNzcuLmVk
NzVhOGYgMTAwNjQ0Ci0tLSBhL2xpc3Avd2RpcmVkLmVsCisrKyBiL2xpc3Avd2RpcmVkLmVsCkBA
IC03Niw2ICs3Niw2NyBAQAogKHJlcXVpcmUgJ2RpcmVkKQogKGF1dG9sb2FkICdkaXJlZC1kby1j
cmVhdGUtZmlsZXMtcmVnZXhwICJkaXJlZC1hdXgiKQogCis7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7
Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7
OzsKKzs7OyBodHRwOi8vZGViYnVncy5nbnUub3JnL2NnaS9idWdyZXBvcnQuY2dpP2J1Zz0zMTYw
MQorCis7OzsgV3JpdHRlbiBieSBUaW5vIENhbGFuY2hhCis7OzsgaHR0cHM6Ly9kZWJidWdzLmdu
dS5vcmcvY2dpL2J1Z3JlcG9ydC5jZ2k/YnVnPTMxNjAxIzgKKyhkZWZ1biB3ZGlyZWQtZmluZC1k
aXJlZC1idWZmZXItcCAoKQorICAiUmV0dXJuIG5vbi1uaWwgaWYgdGhlIGRpcmVkIGJ1ZmZlciBj
b21lcyBmcm9tIGEgYGZpbmQtZGlyZWQnIGNvbW1hbmQuIgorICAoc2F2ZS1leGN1cnNpb24KKyAg
ICAoZ290by1jaGFyIChwb2ludC1taW4pKQorICAgIChmb3J3YXJkLWxpbmUgMSkKKyAgICA7Ozsg
VGhlIGxpbmUgd2UgYXJlIGxvb2tpbmcgZm9yIGlzOiAgICAvdXNyL2Jpbi9maW5kIC4gXCggLWlu
YW1lIFwqIFwpIC1scworICAgIChyZS1zZWFyY2gtZm9yd2FyZCAoZm9ybWF0ICJeXFxzLSolcyAi
IGZpbmQtcHJvZ3JhbSkgbmlsIHQpKSkKKworKGRlZnVuIGRpcmVkLWxpc3QtZmlsZXMtZm9sZGVy
cyAoKQorIlByb2R1Y2UgYSBkaXJlZC1tb2RlIGJ1ZmZlciBvZiBhbGwgZmlsZXMvZm9sZGVycyBy
ZWN1cnNpdmVseS4iCisoaW50ZXJhY3RpdmUpCisgIChsZXQqICgocGF0aCAocmVhZC1kaXJlY3Rv
cnktbmFtZSAiRGlyZWN0b3J5OiAgIikpCisgICAgICAgICAoZGlyZWN0b3J5IChmaWxlLW5hbWUt
YXMtZGlyZWN0b3J5IHBhdGgpKSkKKyAgICAodW5sZXNzIChmaWxlLWRpcmVjdG9yeS1wIHBhdGgp
CisgICAgICAobGV0ICgoZGVidWctb24tcXVpdCBuaWwpCisgICAgICAgICAgICAobXNnIChmb3Jt
YXQgIk5vdCBhIGRpcmVjdG9yeTogJXMiIHBhdGgpKSkKKyAgICAgICAgKHNpZ25hbCAncXVpdCBg
KCxtc2cpKSkpCisgICAgKGxldCogKChkZWZhdWx0LWRpcmVjdG9yeSBkaXJlY3RvcnkpCisgICAg
ICAgICAgIChpbmNsdWRlLWRpcmVjdG9yaWVzICh3aGVuICh5LW9yLW4tcCAiSW5jbHVkZSBkaXJl
Y3Rvcmllcz8iKSB0KSkKKyAgICAgICAgICAgKGxzdCAoZGlyZWN0b3J5LWZpbGVzLXJlY3Vyc2l2
ZWx5IGRlZmF1bHQtZGlyZWN0b3J5ICIiIGluY2x1ZGUtZGlyZWN0b3JpZXMpKSkKKyAgICAgIDs7
OyBUaGUgZmlyc3QgZWxlbWVudCBpcyB0YWtlbiBhcyB0aGUgZGlyZWN0b3J5IG5hbWUuCisgICAg
ICAocHVzaCBkZWZhdWx0LWRpcmVjdG9yeSBsc3QpCisgICAgICAoZGlyZWQgbHN0KSkpKQorCis7
OzsgV3JpdHRlbiBieSBEcmV3IEFkYW1zIGZyb20gaGlzIGRpcmVkKyBsaWJyYXJ5OyBzZWUgYWxz
byB0aGUgZXhhbXBsZSBwb3N0ZWQgdG8KKzs7OyBodHRwczovL2VtYWNzLnN0YWNrZXhjaGFuZ2Uu
Y29tL2EvNDE2NjkvMjI4NworKGRlZnVuIGRpcmVkcC1yb290LWRpcmVjdG9yeS1wIChmaWxlKQor
ICAiUmV0dXJuIG5vbi1uaWwgaWYgRklMRSBpcyBhIHJvb3QgZGlyZWN0b3J5LiIKKyAgKGlmIChm
Ym91bmRwICdhbmdlLWZ0cC1yb290LWRpci1wKQorICAgICAgKGFuZ2UtZnRwLXJvb3QtZGlyLXAg
KGZpbGUtbmFtZS1hcy1kaXJlY3RvcnkgZmlsZSkpCisgICAgOzsgVGhpcyBpcyBlc3NlbnRpYWxs
eSBgYW5nZS1mdHAtcm9vdC1kaXItcCcgYXBwbGllZCB0byBgZmlsZS1uYW1lLWFzLWRpcmVjdG9y
eScuCisgICAgOzsgSWYgYGFuZ2UtZnRwLXJvb3QtZGlyLXAnIGNoYW5nZXMsIHVwZGF0ZSB0aGlz
IGNvZGUuCisgICAgKG9yIChhbmQgKGVxIHN5c3RlbS10eXBlICd3aW5kb3dzLW50KQorICAgICAg
ICAgICAgIChzdHJpbmctbWF0Y2gtcCAiXFxgW2EtekEtWl06Wy9cXF1cXCciIChmaWxlLW5hbWUt
YXMtZGlyZWN0b3J5IGZpbGUpKSkKKyAgICAgICAgKHN0cmluZz0gIi8iIGZpbGUpKSkpCisKKzs7
OyBXcml0dGVuIGJ5IERyZXcgQWRhbXMgZnJvbSBoaXMgZGlyZWQrIGxpYnJhcnk7IHNlZSBhbHNv
IHRoZSBleGFtcGxlIHBvc3RlZCB0bworOzs7IGh0dHBzOi8vZW1hY3Muc3RhY2tleGNoYW5nZS5j
b20vYS80MTY2OS8yMjg3CisoZGVmdW4gZGlyZWRwLXBhcmVudC1kaXIgKGZpbGUgJm9wdGlvbmFs
IHJlbGF0aXZlcCkKKyAgIlJldHVybiB0aGUgcGFyZW50IGRpcmVjdG9yeSBvZiBGSUxFLCBvciBu
aWwgaWYgbm9uZS4KK09wdGlvbmFsIGFyZyBSRUxBVElWRVAgbm9uLW5pbCBtZWFucyByZXR1cm4g
YSByZWxhdGl2ZSBuYW1lLCB0aGF0IGlzLAoranVzdCB0aGUgcGFyZW50IGNvbXBvbmVudC4iCisg
IChsZXQgKChwYXJlbnQgIChmaWxlLW5hbWUtZGlyZWN0b3J5IChkaXJlY3RvcnktZmlsZS1uYW1l
IChleHBhbmQtZmlsZS1uYW1lIGZpbGUpKSkpCisgICAgICAgIHJlbHBhcmVudCkKKyAgICAod2hl
biByZWxhdGl2ZXAKKyAgICAgIChzZXRxIHJlbHBhcmVudCAgKGZpbGUtbmFtZS1ub25kaXJlY3Rv
cnkgKGRpcmVjdG9yeS1maWxlLW5hbWUgcGFyZW50KSkpKQorICAgIChhbmQgKG5vdCAoZXF1YWwg
cGFyZW50IGZpbGUpKSAgKG9yIHJlbHBhcmVudCAgcGFyZW50KSkpKQorCisoZGVmaW5lLWtleSBk
aXJlZC1tb2RlLW1hcCAiciIgJ3dkaXJlZC1jaGFuZ2UtdG8td2RpcmVkLW1vZGUpCisKKyhkZWZp
bmUta2V5IGN0bC14LW1hcCAiZiIgJ2RpcmVkLWxpc3QtZmlsZXMtZm9sZGVycykKKworKGRlZmlu
ZS1rZXkgY3RsLXgtbWFwICJGIiAnZmluZC1uYW1lLWRpcmVkKQorCis7Ozs7Ozs7Ozs7Ozs7Ozs7
Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7
Ozs7Ozs7OzsKKwogKGRlZmdyb3VwIHdkaXJlZCBuaWwKICAgIk1vZGUgdG8gcmVuYW1lIGZpbGVz
IGJ5IGVkaXRpbmcgdGhlaXIgbmFtZXMgaW4gZGlyZWQgYnVmZmVycy4iCiAgIDpncm91cCAnZGly
ZWQpCkBAIC0yMDMsNyArMjY0LDcgQEAgbm9uZXhpc3RlbnQgZGlyZWN0b3J5IHdpbGwgZmFpbC4i
CiAoZGVmdmFyIHdkaXJlZC1jb2wtcGVybSkgOzsgQ29sdW1uIHdoZXJlIHRoZSBwZXJtaXNzaW9u
IGJpdHMgc3RhcnQKIChkZWZ2YXIgd2RpcmVkLW9sZC1jb250ZW50KQogKGRlZnZhciB3ZGlyZWQt
b2xkLXBvaW50KQotKGRlZnZhciB3ZGlyZWQtb2xkLW1hcmtzKQorKGRlZnZhciB3ZGlyZWQtb2xk
LW1hcmtzIG5pbCkKIAogKGRlZnVuIHdkaXJlZC1tb2RlICgpCiAgICJXcml0YWJsZSBEaXJlZCAo
V0RpcmVkKSBtb2RlLgpAQCAtMjU3LDcgKzMxOCw4IEBAIFNlZSBgd2RpcmVkLW1vZGUnLiIKICAg
KGFkZC1ob29rICdraWxsLWJ1ZmZlci1ob29rICd3ZGlyZWQtY2hlY2sta2lsbC1idWZmZXIgbmls
IHQpCiAgIChzZXRxIG1ham9yLW1vZGUgJ3dkaXJlZC1tb2RlKQogICAoc2V0cSBtb2RlLW5hbWUg
IkVkaXRhYmxlIERpcmVkIikKLSAgKHNldHEgcmV2ZXJ0LWJ1ZmZlci1mdW5jdGlvbiAnd2RpcmVk
LXJldmVydCkKKyAgKHVubGVzcyAod2RpcmVkLWZpbmQtZGlyZWQtYnVmZmVyLXApCisgICAgKHNl
dHEgcmV2ZXJ0LWJ1ZmZlci1mdW5jdGlvbiAnd2RpcmVkLXJldmVydCkpCiAgIDs7IEkgdGVtcCBk
aXNhYmxlIHVuZG8gZm9yIHBlcmZvcm1hbmNlOiBzaW5jZSBJJ20gZ29pbmcgdG8gY2xlYXIgdGhl
CiAgIDs7IHVuZG8gbGlzdCwgaXQgY2FuIHNhdmUgbW9yZSB0aGFuIGEgOSUgb2YgdGltZSB3aXRo
IGJpZwogICA7OyBkaXJlY3RvcmllcyBiZWNhdXNlIHNldHRpbmcgcHJvcGVydGllcyBtb2RpZnkg
dGhlIHVuZG8tbGlzdC4KQEAgLTI4NywxOSArMzQ5LDc5IEBAIG9yIFxcW3dkaXJlZC1hYm9ydC1j
aGFuZ2VzXSB0byBhYm9ydCBjaGFuZ2VzIikpKQogICAoc2F2ZS1leGN1cnNpb24KICAgICAoZ290
by1jaGFyIChwb2ludC1taW4pKQogICAgIChsZXQgKChiLXByb3RlY3Rpb24gKHBvaW50KSkKLQkg
IGZpbGVuYW1lKQorICAgICAgICAgIGZpbGVuYW1lIHAxIHAyIHAzIGZpbGUgYWJzb2x1dGUtcCkK
ICAgICAgICh3aGlsZSAobm90IChlb2JwKSkKIAkoc2V0cSBmaWxlbmFtZSAoZGlyZWQtZ2V0LWZp
bGVuYW1lIG5pbCB0KSkKICAgICAgICAgKHdoZW4gKGFuZCBmaWxlbmFtZQotCQkgICAobm90ICht
ZW1iZXIgKGZpbGUtbmFtZS1ub25kaXJlY3RvcnkgZmlsZW5hbWUpICcoIi4iICIuLiIpKSkpCi0J
ICAoZGlyZWQtbW92ZS10by1maWxlbmFtZSkKLQkgIDs7IFRoZSByZWFyLW5vbnN0aWNreSBwcm9w
ZXJ0eSBiZWxvdyBzaGFsbCBlbnN1cmUgdGhhdCB0ZXh0IHByZWNlZGluZwotCSAgOzsgdGhlIGZp
bGVuYW1lIGNhbid0IGJlIG1vZGlmaWVkLgotCSAgKGFkZC10ZXh0LXByb3BlcnRpZXMKLQkgICAo
MS0gKHBvaW50KSkgKHBvaW50KSBgKG9sZC1uYW1lICxmaWxlbmFtZSByZWFyLW5vbnN0aWNreSAo
cmVhZC1vbmx5KSkpCi0JICAocHV0LXRleHQtcHJvcGVydHkgYi1wcm90ZWN0aW9uIChwb2ludCkg
J3JlYWQtb25seSB0KQotCSAgKHNldHEgYi1wcm90ZWN0aW9uIChkaXJlZC1tb3ZlLXRvLWVuZC1v
Zi1maWxlbmFtZSB0KSkKLQkgIChwdXQtdGV4dC1wcm9wZXJ0eSAocG9pbnQpICgxKyAocG9pbnQp
KSAnZW5kLW5hbWUgdCkpCisgICAgICAgICAgICAgICAgICAgKG5vdCAobWVtYmVyIChmaWxlLW5h
bWUtbm9uZGlyZWN0b3J5IGZpbGVuYW1lKSAnKCIuIiAiLi4iKSkpKQorICAgICAgICAgIChzZXRx
IHAxIChkaXJlZC1tb3ZlLXRvLWZpbGVuYW1lKQorICAgICAgICAgICAgICAgIHAzIChkaXJlZC1t
b3ZlLXRvLWVuZC1vZi1maWxlbmFtZSAnbm8tZXJyb3IpCisgICAgICAgICAgICAgICAgZmlsZSAo
YnVmZmVyLXN1YnN0cmluZyBwMSBwMykpCisgICAgICAgICAgOzs7IEJFR0lOIGNvZGUgYm9ycm93
ZWQgZnJvbSBgZGlyZWQtZ2V0LWZpbGVuYW1lJy4KKyAgICAgICAgICA7OyBVbnF1b3RlIG5hbWVz
IHF1b3RlZCBieSBscyBvciBieSBkaXJlZC1pbnNlcnQtZGlyZWN0b3J5LgorICAgICAgICAgIDs7
IFRoaXMgY29kZSB3YXMgd3JpdHRlbiB1c2luZyBgcmVhZCcgdG8gdW5xdW90ZSwgYmVjYXVzZQor
ICAgICAgICAgIDs7IGl0J3MgZmFzdGVyIHRoYW4gc3Vic3RpdHV0aW5nIFwwMDcgKDQgY2hhcnMp
IC0+IF5HICgxCisgICAgICAgICAgOzsgY2hhcikgZXRjLiBpbiBhIGxpc3AgbG9vcC4gIFVuZm9y
dHVuYXRlbHksIHRoaXMgZGVjaXNpb24KKyAgICAgICAgICA7OyBoYXMgbmVjZXNzaXRhdGVkIGhh
Y2tzIHN1Y2ggYXMgZGVhbGluZyB3aXRoIGZpbGVuYW1lcworICAgICAgICAgIDs7IHdpdGggcXVv
dGF0aW9uIG1hcmtzIGluIHRoZWlyIG5hbWVzLgorICAgICAgICAgICh3aGlsZSAoc3RyaW5nLW1h
dGNoICJcXCg/OlteXFxdXFx8XFxgXFwpXFwoXCJcXCkiIGZpbGUpCisgICAgICAgICAgICAoc2V0
cSBmaWxlIChyZXBsYWNlLW1hdGNoICJcXFwiIiBuaWwgdCBmaWxlIDEpKSkKKyAgICAgICAgICA7
OyBVbmVzY2FwZSBhbnkgc3BhY2VzIGVzY2FwZWQgYnkgbHMgLWIgKGJ1ZyMxMDQ2OSkuCisgICAg
ICAgICAgOzsgT3RoZXIgLWIgcXVvdGVzLCBlZyBcdCwgXG4sIHdvcmsgdHJhbnNwYXJlbnRseS4K
KyAgICAgICAgICAoaWYgKGRpcmVkLXN3aXRjaGVzLWVzY2FwZS1wIGRpcmVkLWFjdHVhbC1zd2l0
Y2hlcykKKyAgICAgICAgICAgIChsZXQgKChzdGFydCAwKQorICAgICAgICAgICAgICAgICAgKHJl
cCAiIikKKyAgICAgICAgICAgICAgICAgIChzaGlmdCAtMSkpCisgICAgICAgICAgICAgIDs7IChp
ZiAoZXEgbG9jYWxwICd2ZXJiYXRpbSkKKyAgICAgICAgICAgICAgOzsgICAgIChzZXRxIHJlcCAi
XFxcXCIKKyAgICAgICAgICAgICAgOzsgICAgICAgICAgIHNoaWZ0ICsxKSkKKyAgICAgICAgICAg
ICAgKHdoaWxlIChzdHJpbmctbWF0Y2ggIlxcKFxcXFxcXCkgIiBmaWxlIHN0YXJ0KQorICAgICAg
ICAgICAgICAgIChzZXRxIGZpbGUgKHJlcGxhY2UtbWF0Y2ggcmVwIG5pbCB0IGZpbGUgMSkKKyAg
ICAgICAgICAgICAgICAgICAgICBzdGFydCAoKyBzaGlmdCAobWF0Y2gtZW5kIDApKSkpKSkKKyAg
ICAgICAgICAod2hlbiAoZXEgc3lzdGVtLXR5cGUgJ3dpbmRvd3MtbnQpCisgICAgICAgICAgICAo
c2F2ZS1tYXRjaC1kYXRhCisgICAgICAgICAgICAgIChsZXQgKChzdGFydCAwKSkKKyAgICAgICAg
ICAgICAgICAod2hpbGUgKHN0cmluZy1tYXRjaCAiXFxcXCIgZmlsZSBzdGFydCkKKyAgICAgICAg
ICAgICAgICAgIChhc2V0IGZpbGUgKG1hdGNoLWJlZ2lubmluZyAwKSA/LykKKyAgICAgICAgICAg
ICAgICAgIChzZXRxIHN0YXJ0IChtYXRjaC1lbmQgMCkpKSkpKQorICAgICAgICAgIDs7IEhlbmNl
IHdlIGRvbid0IG5lZWQgdG8gd29ycnkgYWJvdXQgY29udmVydGluZyBgXFwnIGJhY2sgdG8gYFwn
LgorICAgICAgICAgIChzZXRxIGZpbGUgKHJlYWQgKGNvbmNhdCAiXCIiIGZpbGUgIlwiIikpKQor
ICAgICAgICAgIDs7IFRoZSBhYm92ZSBgcmVhZCcgd2lsbCByZXR1cm4gYSB1bmlieXRlIHN0cmlu
ZyBpZiBGSUxFCisgICAgICAgICAgOzsgY29udGFpbnMgZWlnaHQtYml0LWNvbnRyb2wvZ3JhcGhp
YyBjaGFyYWN0ZXJzLgorICAgICAgICAgIChpZiAoYW5kIGVuYWJsZS1tdWx0aWJ5dGUtY2hhcmFj
dGVycworICAgICAgICAgICAgICAgICAgIChub3QgKG11bHRpYnl0ZS1zdHJpbmctcCBmaWxlKSkp
CisgICAgICAgICAgICAoc2V0cSBmaWxlIChzdHJpbmctdG8tbXVsdGlieXRlIGZpbGUpKSkKKyAg
ICAgICAgICAoYW5kIGZpbGUKKyAgICAgICAgICAgICAgIChmaWxlLW5hbWUtYWJzb2x1dGUtcCBm
aWxlKQorICAgICAgICAgICAgICAgOzsgQSByZWxhdGl2ZSBmaWxlIG5hbWUgY2FuIHN0YXJ0IHdp
dGggfi4KKyAgICAgICAgICAgICAgIDs7IERvbid0IHRyZWF0IGl0IGFzIGFic29sdXRlIGluIHRo
aXMgY29udGV4dC4KKyAgICAgICAgICAgICAgIChub3QgKGVxIChhcmVmIGZpbGUgMCkgP34pKQor
ICAgICAgICAgICAgICAgKHNldHEgYWJzb2x1dGUtcCB0KSkKKyAgICAgICAgICA7OzsgRU5EIGNv
ZGUgYm9ycm93ZWQgZnJvbSBgZGlyZWQtZ2V0LWZpbGVuYW1lJy4KKyAgICAgICAgICAoaWYgKGFu
ZCBhYnNvbHV0ZS1wCisgICAgICAgICAgICAgICAgICAgOzsgVGVzdCB3aGV0aGVyIGFic29sdXRl
IGZpbGUvZGlyZWN0b3J5IGlzIGluIHRoZSByb290IG9mIHRoZSBoYXJkIGRyaXZlLgorICAgICAg
ICAgICAgICAgICAgIChub3QgKGRpcmVkcC1yb290LWRpcmVjdG9yeS1wIChkaXJlZHAtcGFyZW50
LWRpciBmaWxlKSkpKQorICAgICAgICAgICAgKHNldHEgcDIgKC0gcDMgKGxlbmd0aCAoZmlsZS1u
YW1lLW5vbmRpcmVjdG9yeSBmaWxlKSkpKQorICAgICAgICAgICAgOzs7IEZJWE1FOiAgRmlyc3Qg
YXR0ZW1wdCBhdCBkZWFsaW5nIHdpdGggcmVsYXRpdmUgcGF0aHMKKyAgICAgICAgICAgIDs7OyBX
aWxsIHRoaXMgYWx3YXlzIGJlIHRoZSBzYW1lIGFzIHdoZW4gZGVhbGluZyB3aXRoIGFuIGFic29s
dXRlIHBhdGggKGFib3ZlKT8KKyAgICAgICAgICAgIChzZXRxIHAyICgtIHAzIChsZW5ndGggKGZp
bGUtbmFtZS1ub25kaXJlY3RvcnkgZmlsZSkpKSkpCisgICAgICAgICAgOzs7IGB3ZGlyZWQtZ2V0
LWZpbGVuYW1lJyByZWxpZXMgdXBvbiB0aGUgb3JpZ2luYWwgbG9jYXRpb24gb2YgdGhlCisgICAg
ICAgICAgOzs7IG9mIHRoZSBPTEQtTkFNRSBhbmQgRklMRU5BTUUgdGV4dCBwcm9wZXJ0aWVzLgor
ICAgICAgICAgIChhZGQtdGV4dC1wcm9wZXJ0aWVzICgxLSBwMSkgcDEgYChvbGQtbmFtZSAsZmls
ZW5hbWUpKQorICAgICAgICAgIDs7OyBNYWtlIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGBmaWxlLW5h
bWUtbm9uZGlyZWN0b3J5JyB0aGUgcmVhZC1vbmx5IGJvdW5kYXJ5LgorICAgICAgICAgIDs7IFRo
ZSByZWFyLW5vbnN0aWNreSBwcm9wZXJ0eSBiZWxvdyBzaGFsbCBlbnN1cmUgdGhhdCB0ZXh0IHBy
ZWNlZGluZworICAgICAgICAgIDs7IHRoZSBmaWxlbmFtZSBjYW4ndCBiZSBtb2RpZmllZC4KKyAg
ICAgICAgICAoYWRkLXRleHQtcHJvcGVydGllcyAoMS0gcDIpIHAyIGAocmVhci1ub25zdGlja3kg
KHJlYWQtb25seSkpKQorICAgICAgICAgIDs7OyBFeGNlcHQgZm9yIHRoZSBpbml0aWFsIGxvb3Ag
d2hlcmUgQi1QUk9URUNUSU9OIGlzIHNldCB0byBgcG9pbnQtbWluJywKKyAgICAgICAgICA7Ozsg
Qi1QUk9URUNUSU9OIGlzIHRoZSBlbmQgb2YgdGhlIHByZWNlZGluZyBmaWxlbmFtZSBmcm9tIHRo
ZSBwcmV2aW91cyBsb29wLgorICAgICAgICAgIChwdXQtdGV4dC1wcm9wZXJ0eSBiLXByb3RlY3Rp
b24gcDIgJ3JlYWQtb25seSB0KQorICAgICAgICAgIChpZiAoPSAocG9pbnQpIChwb2ludC1tYXgp
KQorICAgICAgICAgICAgKHB1dC10ZXh0LXByb3BlcnR5ICgxLSBwMykgcDMgJ2VuZC1uYW1lIHQp
CisgICAgICAgICAgICAocHV0LXRleHQtcHJvcGVydHkgcDMgKDErIHAzKSAnZW5kLW5hbWUgdCkp
KQorICAgICAgICA7OzsgRXhjZXB0IGZvciB0aGUgaW5pdGlhbCBsb29wIHdoZXJlIEItUFJPVEVD
VElPTiBpcyBzZXQgdG8gYHBvaW50LW1pbicsCisgICAgICAgIDs7OyBCLVBST1RFQ1RJT04gaXMg
dGhlIGVuZCBvZiB0aGUgcHJlY2VkaW5nIGZpbGVuYW1lIGZyb20gdGhlIHByZXZpb3VzIGxvb3Au
CisgICAgICAgICh3aGVuIHAzCisgICAgICAgICAgKHNldHEgYi1wcm90ZWN0aW9uIHAzKSkKICAg
ICAgICAgKGZvcndhcmQtbGluZSkpCiAgICAgICAocHV0LXRleHQtcHJvcGVydHkgYi1wcm90ZWN0
aW9uIChwb2ludC1tYXgpICdyZWFkLW9ubHkgdCkpKSkKIApAQCAtMzQ0LDkgKzQ2NiwxNyBAQCBu
b24tbmlsIG1lYW5zIHJldHVybiBvbGQgZmlsZW5hbWUuIgogICAgICAgICAoYW5kIGZpbGUgKHNl
dHEgZmlsZSAod2RpcmVkLW5vcm1hbGl6ZS1maWxlbmFtZSBmaWxlIChub3Qgb2xkKSkpKSkKICAg
ICAgIChpZiAob3Igbm8tZGlyIG9sZCkKIAkgIGZpbGUKLQkoYW5kIGZpbGUgKD4gKGxlbmd0aCBm
aWxlKSAwKQotICAgICAgICAgICAgIChjb25jYXQgKGRpcmVkLWN1cnJlbnQtZGlyZWN0b3J5KSBm
aWxlKSkpKSkpCi0KKyAgICAgICAgKGNvbmQKKyAgICAgICAgICA7OzsgV2hlbiBGSUxFIGlzIHJl
bGF0aXZlLCBjb25jYXRlbmF0ZSBkZWZhdWx0LWRpcmVjdG9yeSB0byBiZWdpbm5pbmcuCisgICAg
ICAgICAgKChhbmQgZmlsZQorICAgICAgICAgICAgICAgICg+IChsZW5ndGggZmlsZSkgMCkKKyAg
ICAgICAgICAgICAgICAobm90IChmaWxlLW5hbWUtYWJzb2x1dGUtcCBmaWxlKSkKKyAgICAgICAg
ICAgICAgICAoY29uY2F0IChkaXJlZC1jdXJyZW50LWRpcmVjdG9yeSkgZmlsZSkpKQorICAgICAg
ICAgIDs7OyBXaGVuIEZJTEUgaXMgYWJzb2x1dGUsIG5vIG5lZWQgdG8gY29uY2F0ZW5hdGUgdGhl
IGRlZmF1bHQtZGlyZWN0b3J5LgorICAgICAgICAgICgoYW5kIGZpbGUKKyAgICAgICAgICAgICAg
ICAoPiAobGVuZ3RoIGZpbGUpIDApCisgICAgICAgICAgICAgICAgKGZpbGUtbmFtZS1hYnNvbHV0
ZS1wIGZpbGUpCisgICAgICAgICAgICAgICAgZmlsZSkpKSkpKSkKIAogKGRlZnVuIHdkaXJlZC1j
aGFuZ2UtdG8tZGlyZWQtbW9kZSAoKQogICAiQ2hhbmdlIHRoZSBtb2RlIGJhY2sgdG8gZGlyZWQu
IgpAQCAtMzYzLDcgKzQ5Myw4IEBAIG5vbi1uaWwgbWVhbnMgcmV0dXJuIG9sZCBmaWxlbmFtZS4i
CiAgIChzZXRxIG1vZGUtbmFtZSAiRGlyZWQiKQogICAoZGlyZWQtYWR2ZXJ0aXNlKQogICAocmVt
b3ZlLWhvb2sgJ2tpbGwtYnVmZmVyLWhvb2sgJ3dkaXJlZC1jaGVjay1raWxsLWJ1ZmZlciB0KQot
ICAoc2V0IChtYWtlLWxvY2FsLXZhcmlhYmxlICdyZXZlcnQtYnVmZmVyLWZ1bmN0aW9uKSAnZGly
ZWQtcmV2ZXJ0KSkKKyAgKHVubGVzcyAod2RpcmVkLWZpbmQtZGlyZWQtYnVmZmVyLXApCisgICAg
KHNldCAobWFrZS1sb2NhbC12YXJpYWJsZSAncmV2ZXJ0LWJ1ZmZlci1mdW5jdGlvbikgJ2RpcmVk
LXJldmVydCkpKQogCiAKIChkZWZ1biB3ZGlyZWQtYWJvcnQtY2hhbmdlcyAoKQpAQCAtNDU3LDYg
KzU4OCwxNiBAQCBub24tbmlsIG1lYW5zIHJldHVybiBvbGQgZmlsZW5hbWUuIgogICAgICAgICAo
cHJvZ3Jlc3MgbmlsKQogICAgICAgICAoZXJyb3JzIDApCiAgICAgICAgIChvdmVyd3JpdGUgKG9y
IChub3Qgd2RpcmVkLWNvbmZpcm0tb3ZlcndyaXRlKSAxKSkpCisgICAgOzs7IFdlIG11c3QgcHJv
Y2VzcyB0aGUgZGVlcGVzdCBkaXJlY3RvcmllcyBmaXJzdCBpbiB0aW1lLCBhbmQgZ3JhZHVhbGx5
CisgICAgOzs7IHdvcmsgb3VyIHdheSBiYWNrd2FyZHMuICBTZWU6ICBodHRwczovL2VtYWNzLnN0
YWNrZXhjaGFuZ2UuY29tL2EvNDE2ODIvMjI4NworICAgIDs7OyBTb3J0aW5nIGZ1bmN0aW9uIHdy
aXR0ZW4gYnkgQFRvYmlhcyBvbiBlbWFjcy5zdGFja2V4Y2hhbmdlLmNvbSAoc3VwcmEpCisgICAg
Ozs7IFJFTkFNRVMgYXJlIGluIHRoZSBmb3JtYXQgb2YgKGNvbnMgZmlsZS1vbGQgKHN1YnN0aXR1
dGUtaW4tZmlsZS1uYW1lIGZpbGUtbmV3KSkKKyAgICA7OzsgRmlsZXMvZGlyZWN0b3JpZXMgd2l0
aCB0aGUgZ3JlYXRlc3QgZGVwdGggYXJlIHNvcnRlZCBmaXJzdCBpbiB0aW1lLgorICAgIDs7OyBU
aGUgZnVuY3Rpb24gYHBvcCcgKHVzZWQgaGVyZWluYmVsb3cpIHVzZXMgdGhlIGZpcnN0IGVsZW1l
bnQgb2YgdGhlIGxpc3QuCisgICAgKHJlcXVpcmUgJ2NsLXNlcSkKKyAgICAoc2V0cSByZW5hbWVz
IChjbC1zdGFibGUtc29ydCByZW5hbWVzIChsYW1iZGEgKHBhdGgxIHBhdGgyKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKD4gKGNsLWNvdW50ID8vIChjYXIg
cGF0aDEpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KGNsLWNvdW50ID8vIChjYXIgcGF0aDIpKSkpKSkKICAgICAod2hpbGUgKG9yIHJlbmFtZXMKICAg
ICAgICAgICAgICAgIDs7IFdlJ3ZlIGRvbmUgb25lIHJvdW5kIHRocm91Z2ggdGhlIHJlbmFtZXMs
IHdlIGhhdmUgZm91bmQKICAgICAgICAgICAgICAgIDs7IHNvbWUgcmVzaWR1ZSwgYnV0IHdlIGFs
c28gbWFkZSBzb21lIHByb2dyZXNzLCBzbyBtYXliZQo=
--Multipart_Mon_May_28_16:11:38_2018-1--




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#31601; Package emacs. Full text available.

Message received at 31601 <at> debbugs.gnu.org:


Received: (at 31601) by debbugs.gnu.org; 26 May 2018 18:51:40 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat May 26 14:51:40 2018
Received: from localhost ([127.0.0.1]:49898 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1fMeHz-0001eC-PW
	for submit <at> debbugs.gnu.org; Sat, 26 May 2018 14:51:39 -0400
Received: from gateway36.websitewelcome.com ([192.185.193.12]:34114)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <esq@HIDDEN>) id 1fMeHx-0001e4-Ny
 for 31601 <at> debbugs.gnu.org; Sat, 26 May 2018 14:51:38 -0400
Received: from cm15.websitewelcome.com (cm15.websitewelcome.com [100.42.49.9])
 by gateway36.websitewelcome.com (Postfix) with ESMTP id B8892400E9F63
 for <31601 <at> debbugs.gnu.org>; Sat, 26 May 2018 13:51:36 -0500 (CDT)
Received: from gator3053.hostgator.com ([50.87.144.69]) by cmsmtp with SMTP
 id MeHwfB2f5bXuJMeHwfS48h; Sat, 26 May 2018 13:51:36 -0500
X-Authority-Reason: nr=8
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lawlist.com
 ; s=default;
 h=Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Cc
 :To:From:Message-ID:Date:Sender:Reply-To:Content-ID:Content-Description:
 Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:
 In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:List-Subscribe:
 List-Post:List-Owner:List-Archive;
 bh=dfxYY8qM5/sTv6+4FllPxlLLJEe1d0uduvFktrVD0Ts=; b=kdGF9MtBy62no0Cyc4uPJxHadL
 DrSiVDSVeSVpjOVX5Divpj1XNvsqNg4ilJWrQOsiOCiARiiB0v/A/3g0zIBfm8eOgPMguSH7RDn/3
 64NcNZPOSvtEOCOyTAysUJfbUYcM8bJNK7Ixlp71kBmGyMgc5Hb3hdJb74wNZXFPTtCioHvZi/lE6
 ORnnqs7N0hsq2+W4ycp3hNATZW/X0X8kgLE7trCHRgUCPXNgNU7oCbzfIeA0DbJWj97JsODvbnGe3
 UKyx3S6uX12qgUpWXw8JxqT0uHG2upwQ6W1iTj44Xdq9x4Wsl0MLczrgOdwo6HKW7iiMrxOIzULPO
 p4N2Qpmw==;
Received: from cpe-45-48-239-195.socal.res.rr.com ([45.48.239.195]:51193
 helo=server.local)
 by gator3053.hostgator.com with esmtpsa (TLSv1:DHE-RSA-AES256-SHA:256)
 (Exim 4.89_1) (envelope-from <esq@HIDDEN>)
 id 1fMeHv-003Zfe-TX; Sat, 26 May 2018 13:51:35 -0500
Date: Sat, 26 May 2018 11:51:35 -0700
Message-ID: <m2k1rqp7wo.wl%esq@HIDDEN>
From: Keith David Bershatsky <esq@HIDDEN>
To: Tino Calancha <tino.calancha@HIDDEN>
Subject: Re: bug#31601: Dired/Wdired: Play nicely with recursive list of files
 and directories.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-AntiAbuse: This header was added to track abuse,
 please include it with any abuse report
X-AntiAbuse: Primary Hostname - gator3053.hostgator.com
X-AntiAbuse: Original Domain - debbugs.gnu.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - lawlist.com
X-BWhitelist: no
X-Source-IP: 45.48.239.195
X-Source-L: No
X-Exim-ID: 1fMeHv-003Zfe-TX
X-Source: 
X-Source-Args: 
X-Source-Dir: 
X-Source-Sender: cpe-45-48-239-195.socal.res.rr.com (server.local)
 [45.48.239.195]:51193
X-Source-Auth: lawlist
X-Email-Count: 1
X-Source-Cap: bGF3bGlzdDtsYXdsaXN0O2dhdG9yMzA1My5ob3N0Z2F0b3IuY29t
X-Local-Domain: yes
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 31601
Cc: 31601 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Thank you for the alternative approaches.  I applied the new diff and was able to successfully use the second option with `find-dired`.

As to the first option, however, I would need to spend time learning about zsh, fish and em-ls.  So, that exploration would need to wait for a rainy day.

Oh, by the way, please consider adding a `nil` to the end of `(defvar wdired-old-marks)` so that the user does not experience this:

funcall-interactively: Symbol’s value as variable is void: wdired-old-marks

In my spare time, I will most likely continue implementing functionality for wdired playing nice with:

(dired (directory-files-recursively "/path/to/directory" "" 'include-directories))

That will entail:  (1) placing read-only text properties over areas that cannot be changed; (2) when I modify a directory, I will need to propagate that change throughout the applicable entries of `dired-directory'; (3) I will consider implementing a hash-table approach with `dired-directory` entries for increased speed.

Keith

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

DATE:  [05-26-2018 02:02:26] <26 May 2018 18:02:26 +0900>
FROM:  Tino Calancha <tino.calancha@HIDDEN>
> 
> * * *

> I)
> If you are lucky and "sh" points to a shell that
> supports globstar (zsh, fish), or if you are using dired
> via `em-ls', then you can do:
> M-x dired /path/to/directory/**/* RET
> ;; Now both, wdired and `dired-do-rename' works fine.
> 
> [If you are using bash or ksh, that support globstar but
> disable it by default, then you might be interestd in my
> proposal in Bug#31495: it gives the chance to enable such
> feature on dired via an user option.]
> 
> II)
> Another way could be to use a command of the `find-dired' family:
> M-x find-name-dired /path/to/directory/ RET * RET

* * *




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#31601; Package emacs. Full text available.

Message received at 31601 <at> debbugs.gnu.org:


Received: (at 31601) by debbugs.gnu.org; 26 May 2018 09:02:43 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat May 26 05:02:43 2018
Received: from localhost ([127.0.0.1]:49017 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1fMV63-0000OQ-AS
	for submit <at> debbugs.gnu.org; Sat, 26 May 2018 05:02:43 -0400
Received: from mail-pl0-f46.google.com ([209.85.160.46]:41922)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <tino.calancha@HIDDEN>) id 1fMV60-0000O8-M4
 for 31601 <at> debbugs.gnu.org; Sat, 26 May 2018 05:02:41 -0400
Received: by mail-pl0-f46.google.com with SMTP id az12-v6so4467198plb.8
 for <31601 <at> debbugs.gnu.org>; Sat, 26 May 2018 02:02:40 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=from:to:cc:subject:references:date:in-reply-to:message-id
 :user-agent:mime-version;
 bh=vhJQzPTl3/l/pfr/ZAfVLz2hxwuL4DTTyS44aXLWVQo=;
 b=ipGsxuhQJml2P4jfcMHmbFcGfOfhkrjgtR9YbxwJkd2b90924cx5eTSSZaB5Kfdf+g
 nW7pI12363B/kryBrt/k9zyNCM6gOxmwYNSehc5zRx4nXA2dL7wa64Fl366Fl+QGCB+G
 rIKRiG97kHz23VicDO9tuSUkhY21CVli2IGcHSDqXWjdlAUMmXTt9FV8kqi+OZ/kIe82
 2E0ej7R870ktCKo3cQsCluXVWLfMN9v5XSS4W3BN1pLciChIuXq+hLElxiSYZw3DvtAg
 AQ5SjbVevkmeA+aOOSXtn7neZDaWNrfU1XisDcC1HEETDDuH4Zlr9+88HKy6Oy4wySuV
 y6FQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to
 :message-id:user-agent:mime-version;
 bh=vhJQzPTl3/l/pfr/ZAfVLz2hxwuL4DTTyS44aXLWVQo=;
 b=XD/M0YSwf+yrSGX1KaskkiZ6wi0O75loN3lp7or4E7rWFDXU4cpSnUWJu98s8adAsm
 sXxTnccGcCSa5SMYAEKs2FNtC28Tg2ti6HACs7lMU8IOPo1rNeCt/VYW2BiViNlNNXXI
 TKSYvrPFCUCXGlgBb6hP+N4Fn4dbo6NnbEK3kf0y5GIn4tQYE/qzkrW7uGG7uivR3RJ/
 Ma74QECy7FXVUld+CHqOYPaSxhv/DASdq4KI/4zIBMeANgXKtWPnCwSDVvOvB2n2+Cf8
 marhYP2IfjJbqK6qNUQertlFd+3ryP0JQuVK8RQsKIt4M4jkswH61OZq2ato0A7zyykm
 a0+g==
X-Gm-Message-State: ALKqPwd4K4FF53oayI0laVmofrPr2R83Giw/b9GulRMp8A7/t9v7huav
 o+3RLnwfxYcpqMAz6XyFHMo=
X-Google-Smtp-Source: AB8JxZqEDq1qQ6LKcDYtxr9Qffjm2+Y0DY4x4gg/jM5yQ4W7wR9j5UQeZYuFwVSOZk10UHxPgDG5Ng==
X-Received: by 2002:a17:902:6b04:: with SMTP id
 o4-v6mr5843721plk.101.1527325354666; 
 Sat, 26 May 2018 02:02:34 -0700 (PDT)
Received: from calancha-pc ([240f:6e:ee9a:1:adc4:139f:709c:10b])
 by smtp.gmail.com with ESMTPSA id x2-v6sm35894756pgc.53.2018.05.26.02.02.32
 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256);
 Sat, 26 May 2018 02:02:33 -0700 (PDT)
From: Tino Calancha <tino.calancha@HIDDEN>
To: Keith David Bershatsky <esq@HIDDEN>
Subject: Re: bug#31601: Dired/Wdired: Play nicely with recursive list of files
 and directories.
References: <m21sdzghii.wl%esq@HIDDEN>
Date: Sat, 26 May 2018 18:02:26 +0900
In-Reply-To: <m21sdzghii.wl%esq@HIDDEN> (Keith David Bershatsky's message
 of "Fri, 25 May 2018 21:36:37 -0700")
Message-ID: <87zi0m6b8d.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 31601
Cc: 31601 <at> debbugs.gnu.org, tino.calancha@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Keith David Bershatsky <esq@HIDDEN> writes:

> I occasionally have the need to rename files and directories that are recursively located.  I create a dired-mode buffer as follows:
>
>     (dired (directory-files-recursively "/path/to/directory" "" 'include-directories))
>
> Wdired:  The first problem is that `wdired-get-filename' needs to be modified so that it handles absolute paths differently than relative filenames.

> Dired:  The second problem is a dired-mode problem in that the `dired-directory' variable is not updated when renaming a file

Thank you for your report Keith!
You are right, it looks annoying.

Though I haven't arrived with an ideal solution, following
are two ways how I would try to perform a similar task.

I)
If you are lucky and "sh" points to a shell that
supports globstar (zsh, fish), or if you are using dired
via `em-ls', then you can do:
M-x dired /path/to/directory/**/* RET
;; Now both, wdired and `dired-do-rename' works fine.

[If you are using bash or ksh, that support globstar but
disable it by default, then you might be interestd in my
proposal in Bug#31495: it gives the chance to enable such
feature on dired via an user option.]

II)
Another way could be to use a command of the `find-dired' family:
M-x find-name-dired /path/to/directory/ RET * RET
;; I just noticed that wdired resets `revert-buffer-function' also for
;; these dired buffers.  IMO it shouldn't, so I would propose
;; something like this:
--8<-----------------------------cut here---------------start------------->8---
commit 58842a20f570d32f5d3f90aced8f0e8c1b1535a7
Author: Tino Calancha <tino.calancha@HIDDEN>
Date:   Sat May 26 17:39:29 2018 +0900

    Preserve revert-buffer-function on find-dired buffers
    
    * lisp/wdired.el (wdired-find-dired-buffer-p): New predicate.
    (wdired-change-to-wdired-mode, wdired-change-to-dired-mode):
    Preserve `revert-buffer-function' on dired buffers created
    with `find-dired' commands.

diff --git a/lisp/wdired.el b/lisp/wdired.el
index bb60e77776..de5b327d75 100644
--- a/lisp/wdired.el
+++ b/lisp/wdired.el
@@ -228,6 +228,12 @@ wdired-mode
   (error "This mode can be enabled only by `wdired-change-to-wdired-mode'"))
 (put 'wdired-mode 'mode-class 'special)
 
+(defun wdired-find-dired-buffer-p ()
+  "Return non-nil if the dired buffer comes from a `find-dired' command."
+  (save-excursion
+    (goto-char (point-min))
+    (forward-line 1)
+    (re-search-forward (format "^\\s-*%s " find-program) nil t)))
 
 ;;;###autoload
 (defun wdired-change-to-wdired-mode ()
@@ -257,7 +263,8 @@ wdired-change-to-wdired-mode
   (add-hook 'kill-buffer-hook 'wdired-check-kill-buffer nil t)
   (setq major-mode 'wdired-mode)
   (setq mode-name "Editable Dired")
-  (setq revert-buffer-function 'wdired-revert)
+  (unless (wdired-find-dired-buffer-p)
+    (setq revert-buffer-function 'wdired-revert))
   ;; I temp disable undo for performance: since I'm going to clear the
   ;; undo list, it can save more than a 9% of time with big
   ;; directories because setting properties modify the undo-list.
@@ -363,7 +370,8 @@ wdired-change-to-dired-mode
   (setq mode-name "Dired")
   (dired-advertise)
   (remove-hook 'kill-buffer-hook 'wdired-check-kill-buffer t)
-  (set (make-local-variable 'revert-buffer-function) 'dired-revert))
+  (unless (wdired-find-dired-buffer-p)
+    (set (make-local-variable 'revert-buffer-function) 'dired-revert)))
 
 
 (defun wdired-abort-changes ()
--8<-----------------------------cut here---------------end--------------->8---
In GNU Emacs 27.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.22.11)
 of 2018-05-26 built on calancha-pc
Repository revision: 66c9ab90d5f8b566467549bf1d48c936bc6d296b





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#31601; Package emacs. Full text available.

Message received at submit <at> debbugs.gnu.org:


Received: (at submit) by debbugs.gnu.org; 26 May 2018 04:37:06 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat May 26 00:37:06 2018
Received: from localhost ([127.0.0.1]:48917 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1fMQwz-0000dC-VQ
	for submit <at> debbugs.gnu.org; Sat, 26 May 2018 00:37:06 -0400
Received: from eggs.gnu.org ([208.118.235.92]:38152)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <esq@HIDDEN>) id 1fMQwx-0000ce-Cy
 for submit <at> debbugs.gnu.org; Sat, 26 May 2018 00:37:04 -0400
Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)
 (envelope-from <esq@HIDDEN>) id 1fMQwq-0007vu-DT
 for submit <at> debbugs.gnu.org; Sat, 26 May 2018 00:36:57 -0400
X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org
X-Spam-Level: 
X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50,T_DKIM_INVALID
 autolearn=disabled version=3.3.2
Received: from lists.gnu.org ([2001:4830:134:3::11]:55837)
 by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32)
 (Exim 4.71) (envelope-from <esq@HIDDEN>) id 1fMQwq-0007vm-9W
 for submit <at> debbugs.gnu.org; Sat, 26 May 2018 00:36:56 -0400
Received: from eggs.gnu.org ([2001:4830:134:3::10]:57344)
 by lists.gnu.org with esmtp (Exim 4.71)
 (envelope-from <esq@HIDDEN>) id 1fMQwo-0006GG-Oe
 for bug-gnu-emacs@HIDDEN; Sat, 26 May 2018 00:36:56 -0400
Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)
 (envelope-from <esq@HIDDEN>) id 1fMQwl-0007mb-I8
 for bug-gnu-emacs@HIDDEN; Sat, 26 May 2018 00:36:54 -0400
Received: from gateway30.websitewelcome.com ([192.185.198.26]:45033)
 by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32)
 (Exim 4.71) (envelope-from <esq@HIDDEN>) id 1fMQwl-0007Y1-8F
 for bug-gnu-emacs@HIDDEN; Sat, 26 May 2018 00:36:51 -0400
Received: from cm10.websitewelcome.com (cm10.websitewelcome.com [100.42.49.4])
 by gateway30.websitewelcome.com (Postfix) with ESMTP id E274ACEA
 for <bug-gnu-emacs@HIDDEN>; Fri, 25 May 2018 23:36:38 -0500 (CDT)
Received: from gator3053.hostgator.com ([50.87.144.69]) by cmsmtp with SMTP
 id MQwYfkqJhBcCXMQwYfeVum; Fri, 25 May 2018 23:36:38 -0500
X-Authority-Reason: nr=8
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lawlist.com
 ; s=default;
 h=Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:To
 :From:Message-ID:Date:Sender:Reply-To:Cc:Content-ID:Content-Description:
 Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:
 In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:List-Subscribe:
 List-Post:List-Owner:List-Archive;
 bh=QKQhYJDH6sfSQiJ91xYDY8u8rbSM3kCslFxXiNUkFOs=; b=DaluByGt3lmfKsxj341OPQSEfa
 tZPjqam9RRAT25R80GbpXKlFAuW0gSI5GqVuAi6FE0QMLkTXQQYUApgO2ufUhApsZNgyngFgDjVRN
 EavAcsd7XWGpOD2gWCZCkpsvOE047fhdQExaBE7Lg9ZoKUO8dHcaQlUwKkEaZYfZfpX1pJ0xdajcN
 D4WxMyzL8xMa0wxCcbL7TYlNf34CBJ2HdbAgytwV3QtUAoXRIi0MisKP2uSJUYdjVB5A3ssyjuayB
 JJtxQkyq5gjOlxKlEQGffHEHK7VBu0DnUzWe/DPRaOssUfJXM3u8iIs2qXSKttY6l+L4edFOhbylj
 l+3ffaOQ==;
Received: from cpe-45-48-239-195.socal.res.rr.com ([45.48.239.195]:49903
 helo=server.local)
 by gator3053.hostgator.com with esmtpsa (TLSv1:DHE-RSA-AES256-SHA:256)
 (Exim 4.89_1) (envelope-from <esq@HIDDEN>)
 id 1fMQwY-002tAV-0W; Fri, 25 May 2018 23:36:38 -0500
Date: Fri, 25 May 2018 21:36:37 -0700
Message-ID: <m21sdzghii.wl%esq@HIDDEN>
From: Keith David Bershatsky <esq@HIDDEN>
To: Emacs Bug Reports <bug-gnu-emacs@HIDDEN>
Subject: Dired/Wdired: Play nicely with recursive list of files and
 directories.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
X-AntiAbuse: This header was added to track abuse,
 please include it with any abuse report
X-AntiAbuse: Primary Hostname - gator3053.hostgator.com
X-AntiAbuse: Original Domain - gnu.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - lawlist.com
X-BWhitelist: no
X-Source-IP: 45.48.239.195
X-Source-L: No
X-Exim-ID: 1fMQwY-002tAV-0W
X-Source: 
X-Source-Args: 
X-Source-Dir: 
X-Source-Sender: cpe-45-48-239-195.socal.res.rr.com (server.local)
 [45.48.239.195]:49903
X-Source-Auth: lawlist
X-Email-Count: 2
X-Source-Cap: bGF3bGlzdDtsYXdsaXN0O2dhdG9yMzA1My5ob3N0Z2F0b3IuY29t
X-Local-Domain: yes
Content-Transfer-Encoding: quoted-printable
X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]
 [fuzzy]
X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x
X-Received-From: 2001:4830:134:3::11
X-Spam-Score: -5.0 (-----)
X-Debbugs-Envelope-To: submit
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -6.0 (------)

I occasionally have the need to rename files and directories that are rec=
ursively located.  I create a dired-mode buffer as follows:

    (dired (directory-files-recursively "/path/to/directory" "" 'include-=
directories))

Wdired:  The first problem is that `wdired-get-filename' needs to be modi=
fied so that it handles absolute paths differently than relative filename=
s.  Here is an example that works -- using `file-name-absolute-p`:

(defun wdired-get-filename (&optional no-dir old)
  "Return the filename at line.
Similar to `dired-get-filename' but it doesn't rely on regexps.  It
relies on WDired buffer's properties.  Optional arg NO-DIR with value
non-nil means don't include directory.  Optional arg OLD with value
non-nil means return old filename."
  ;; FIXME: Use dired-get-filename's new properties.
  (let (beg end file)
    (save-excursion
      (setq end (line-end-position))
      (beginning-of-line)
      (setq beg (next-single-property-change (point) 'old-name nil end))
      (unless (eq beg end)
  (if old
      (setq file (get-text-property beg 'old-name))
    ;; In the following form changed `(1+ beg)' to `beg' so that
    ;; the filename end is found even when the filename is empty.
    ;; Fixes error and spurious newlines when marking files for
    ;; deletion.
    (if (=3D (point-at-eol) (point-max))
      (setq end (point-max)) ;; fix for @lawlist eliminating final new li=
ne at eob.
      (setq end (next-single-property-change beg 'end-name)))
    (setq file (buffer-substring-no-properties (1+ beg) end)))
  (and file (setq file (wdired-normalize-filename file))))
      (if (or no-dir old)
        file
        (cond
          ;;; When FILE is relative, concatenate default-directory to beg=
inning.
          ((and file
                (> (length file) 0)
                (not (file-name-absolute-p file))
                (concat (dired-current-directory) file)))
          ;;; When FILE is absolute, no need to concatenate the default-d=
irectory.
          ((and file
                (> (length file) 0)
                (file-name-absolute-p file)
                file)))))))

Dired:  The second problem is a dired-mode problem in that the `dired-dir=
ectory' variable is not updated when renaming a file.  I haven't tested d=
eleting a file, but that probably suffers the same problem.  Absent updat=
ing the `dired-directory` with the renamed filename, the `revert-buffer` =
will encounter errors because `ls` or `gls` will try to find files that n=
o longer exist, and that errors will be inserted into the dired- buffer. =
 A quick solution for renaming the file is to modify `dired-rename-file` =
as follows:

;;; (setq mylist '("apple" "pear" "peach" "nectarine" "watermelon"))
;;; (ar-replace--in-list "apple" "cherry" mylist)
;;; Written by @Andreas R=C3=B6hler:  https://emacs.stackexchange.com/a/4=
1631/2287
(defun ar-replace--in-list (elem replacement list)
  "Expects a LIST of strings.
ELEM: element to replace by arg REPLACEMENT"
  (let (newlist)
    (dolist (ele list)
      (if (string=3D ele elem)
      (push replacement newlist)
    (push ele newlist)))
    (nreverse newlist)))

(defun dired-rename-file (file newname ok-if-already-exists)
  (dired-handle-overwrite newname)
  (rename-file file newname ok-if-already-exists) ; error is caught in -c=
reate-files
  ;;; Update the `dired-directory'
  (when (and (listp dired-directory)
             (member file dired-directory))
    (setq dired-directory
      (ar-replace--in-list file newname dired-directory)))
  ;; Silently rename the visited file of any buffer visiting this file.
  (and (get-file-buffer file)
       (with-current-buffer (get-file-buffer file)
   (set-visited-file-name newname nil t)))
  (dired-remove-file file)
  ;; See if it's an inserted subdir, and rename that, too.
  (dired-rename-subdir file newname))

However, this is understandably slow if there are a lot of files.  Perhap=
s a hash-table system would be better suited to keep track of files and d=
irectories instead of just a plain old list with file/directory names.

I haven't yet figured out the best approach to modify a wdired-mode buffe=
r that has a combination of directories and files.  Presumably some porti=
on of the absolute filename/directory-name will need read-only attributes=
 ....  But, that is as far as my thinking has gone on this issue.

There may be many other situations that I haven't thought of because I've=
 never used all of the features of dired-mode and/or wdired-mode.

Thanks,

Keith




Acknowledgement sent to Keith David Bershatsky <esq@HIDDEN>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs@HIDDEN. Full text available.
Report forwarded to bug-gnu-emacs@HIDDEN:
bug#31601; Package emacs. Full text available.
Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.
Last modified: Mon, 25 Nov 2019 12:00:02 UTC

GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997 nCipher Corporation Ltd, 1994-97 Ian Jackson.