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--
bug-gnu-emacs@HIDDEN
:bug#31601
; Package emacs
.
Full text available.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 * * *
bug-gnu-emacs@HIDDEN
:bug#31601
; Package emacs
.
Full text available.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
bug-gnu-emacs@HIDDEN
:bug#31601
; Package emacs
.
Full text available.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
Keith David Bershatsky <esq@HIDDEN>
:bug-gnu-emacs@HIDDEN
.
Full text available.bug-gnu-emacs@HIDDEN
:bug#31601
; Package emacs
.
Full text available.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997 nCipher Corporation Ltd,
1994-97 Ian Jackson.