From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Drew Adams Newsgroups: gmane.emacs.bugs Subject: bug#58364: [PATCH] Add new function 'file-name-parent-p' Date: Fri, 7 Oct 2022 21:10:35 +0000 Message-ID: References: <87h70f758g.fsf@posteo.net> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="30505"; mail-complaints-to="usenet@ciao.gmane.io" To: Philip Kaludercic , "58364@debbugs.gnu.org" <58364@debbugs.gnu.org> Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Fri Oct 07 23:11:26 2022 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1ogucv-0007jy-IH for geb-bug-gnu-emacs@m.gmane-mx.org; Fri, 07 Oct 2022 23:11:26 +0200 Original-Received: from localhost ([::1]:58882 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ogucu-0001iQ-2W for geb-bug-gnu-emacs@m.gmane-mx.org; Fri, 07 Oct 2022 17:11:24 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:46080) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ogucY-0001iG-HS for bug-gnu-emacs@gnu.org; Fri, 07 Oct 2022 17:11:03 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]:38500) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ogucY-0005UK-8i for bug-gnu-emacs@gnu.org; Fri, 07 Oct 2022 17:11:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1ogucX-0006ac-MK for bug-gnu-emacs@gnu.org; Fri, 07 Oct 2022 17:11:01 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Drew Adams Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 07 Oct 2022 21:11:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 58364 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch Original-Received: via spool by 58364-submit@debbugs.gnu.org id=B58364.166517704425302 (code B ref 58364); Fri, 07 Oct 2022 21:11:01 +0000 Original-Received: (at 58364) by debbugs.gnu.org; 7 Oct 2022 21:10:44 +0000 Original-Received: from localhost ([127.0.0.1]:37578 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ogucF-0006a2-Px for submit@debbugs.gnu.org; Fri, 07 Oct 2022 17:10:44 -0400 Original-Received: from mx0a-00069f02.pphosted.com ([205.220.165.32]:24086) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ogucB-0006Zr-Pg for 58364@debbugs.gnu.org; Fri, 07 Oct 2022 17:10:42 -0400 Original-Received: from pps.filterd (m0246627.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 297HwjJ5012804; Fri, 7 Oct 2022 21:10:38 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : subject : date : message-id : references : in-reply-to : content-type : content-transfer-encoding : mime-version; s=corp-2022-7-12; bh=Qq1/6MCeWj0BeUNhXgQXQRL6KrdZDVsx98B54S9wZPY=; b=FHmabcyu2K9+8C9xjSZ8FySZZKecxlmH3MvPveluR525cuNDc6p1oE6SHh6szDRZxM9U UvlkLp4efgNZeJhhL6jHV8gUPEwr4IRw0WJZFGDE6ktQxXdhGDeaUJ9q5q+69RusXdqT FX7PzJvBJIhCqdFJoONkb5c4JN5AA2jkfwKmMBQdc0wZ/dQOX5MWXIitD8kSO03W9sXe eOXwPchgNpj1CIUh2myZ1ok+2Z4Aj24ydvxb8otB+YxoO+bZVO8faqEpv/JFzAw0MIiZ RS+yjzTaDy1uwS48dHYveULbQfye0P0fvLtgDqVh3PIL+vpdIdVDUIeZG0XrzkbzAq3S 9w== Original-Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3jxc528kq1-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 07 Oct 2022 21:10:38 +0000 Original-Received: from pps.filterd (iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 297JOmS0002726; Fri, 7 Oct 2022 21:10:37 GMT Original-Received: from nam10-bn7-obe.outbound.protection.outlook.com (mail-bn7nam10lp2106.outbound.protection.outlook.com [104.47.70.106]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3jxc0dhfrc-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 07 Oct 2022 21:10:36 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=dhiPwK2Nssr6Q6/WWIp/cJo2cxUI8T4jg2pcqsDLn3V96yAkrkzE/o2wWgZds2ENsYY71zVxt+sxflcM6rWXVJN5S1ROvN3Ta8QV8B72v3WV5wUbOl3OObq0tuakTh/qZh12DaKSX4qDHZCp8U+Mv5LHuCKCF/TksZluuQkJnM4Emgu1NtT+/wUQPGapGH7Mq8LwbENVxjVH188OYEudAngOZ3Ha8wvVV0LtODSQgOIl3v74GT9ZhM/C6mtd/tv/Lk/MO8wfaJIRRfxIu2+EdpLuVA3JBRbhroaMR4mLGIhtqk9NcRS7wfxXw3M9cJQ5ixivkMgsHpbmtSuYU3cDAw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=Qq1/6MCeWj0BeUNhXgQXQRL6KrdZDVsx98B54S9wZPY=; b=oATEpzIcwHAtSau8myG/sa7FNCz1l87dgwIIDPZtl4ahAJOheP6AorobvuWSamnhFIo3wx/xZlGFLqrHBGaJCMHSO92ffG5BgAj8tCXF30SxnzOdQsKeTQm2JvIi2W+k9uY2g87IRjT7wKQzSAv7h90b0TvTCYKUKozdjS8GjJtowVqex5SCMX2hbcGqzemaLRzuvcBKqHWSDXW0yVfLk9wHLgbyPTSTiMTFWiGWBESfTTkyrkPu2KXh7KQPy9NxTOGbpfuD0SJlbBJUrCnvQ0aq3HXkSopiJj95BzCKu2jLufUfIEIro9FpKyTO6S1smAianfc8wKFP+uN6ioXRDg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Qq1/6MCeWj0BeUNhXgQXQRL6KrdZDVsx98B54S9wZPY=; b=dshe9OBgqznTJ7MB5AzF4IjZ5EaStxkZSvKEartY9CiOHUSoe1xmgwC44Zfj3YKDquB298IQDFsAiYIK6B5gDqHVaF89UOyT6pGRmAY8tkfXdqI34YX9xuK64d431QUzbF9ty7RzIpjo4Tf4MfH6UfOMxSpmr7+IOT7aROl68q4= Original-Received: from SJ0PR10MB5488.namprd10.prod.outlook.com (2603:10b6:a03:37e::19) by DM6PR10MB4332.namprd10.prod.outlook.com (2603:10b6:5:220::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5709.15; Fri, 7 Oct 2022 21:10:35 +0000 Original-Received: from SJ0PR10MB5488.namprd10.prod.outlook.com ([fe80::f319:dced:1a48:779a]) by SJ0PR10MB5488.namprd10.prod.outlook.com ([fe80::f319:dced:1a48:779a%4]) with mapi id 15.20.5676.036; Fri, 7 Oct 2022 21:10:35 +0000 Thread-Topic: [External] : bug#58364: [PATCH] Add new function 'file-name-parent-p' Thread-Index: AQHY2orEvK7ss9Du9USJJbESswc7wa4DaGQQ In-Reply-To: <87h70f758g.fsf@posteo.net> Accept-Language: en-US Content-Language: en-US x-ms-publictraffictype: Email x-ms-traffictypediagnostic: SJ0PR10MB5488:EE_|DM6PR10MB4332:EE_ x-ms-office365-filtering-correlation-id: 18ba7104-ce77-477f-8253-08daa8a8607a x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 43/1B3cHGjRXvq/SW22m5UoY+Q48DsaxV7ZviqJxwVkZq/jjH5I0oKpChWZVzR2GU4Ax8n8ws/bsNbdkqPeUDcH0BZteX5q0bRcUkD0/pT7ZGlx/LapD4xfW9QYjDl/4D/Pvkfgxvn5x8VbGJMfUrqVUKWQH3moByk4M50MPLXa+9SYDWC91M4wSM4jHTmGc0Pl2P9OswikQZILfiQKHjaEX0AfmRsJ6nQwQ3n0jr/YOhTUo+R9jA9ydg20BlaFp+qfX4Puzacl09mtKfwkqv/pogQI/W5mzrgHI7+/8mDWwVJnm7T1KjLejp6iZIbUm8bgPB5PkJ/8HIhZH+KoT6YJJio73N1yHcEbWb9dGT2N8pQjtcthGAl3zYi3fJ1zZUWPkYDHUJJHoROGmV02Xq+mcyJlH4LXwaWqoq9+KAAguzjEewB8uzASlfPQw9xLI9i+gUnjcurQUEzhY2rBu/c2hGbIh7rpJA+PJhsecijGGy6DT+23Lh7Hkfd5bkwIekZpLKYzBpXDKh41YULdHp3z0JrIoO9BgZDE7xtHKcK00LW+NTbCzC7roXK+3GGKEgsm0/tdI0QyxxzrGUur1kwidRsR+3XX0YOxMTI6RdVViL4rWqmRdjf3AFtnHZyoHMcfOpRkrSTbhAHC4enPQYctjx6Ia4Nz/sa2FUIO3p1yUgaU2a/h4ACaPmdYdV1bZXZnTFSVPqBGkyX/8KZDI/ochlyDO1TJMAmGxPc5LqBo0cKumLvW0H6boJ4b9a YGrQxodNQ9y1hL9MxW6r+UaLA== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR10MB5488.namprd10.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230022)(39860400002)(346002)(136003)(366004)(376002)(396003)(451199015)(186003)(38070700005)(122000001)(38100700002)(5660300002)(44832011)(41300700001)(2906002)(8936002)(52536014)(55016003)(478600001)(9686003)(26005)(8676002)(66556008)(66476007)(64756008)(316002)(66946007)(6506007)(66446008)(7696005)(76116006)(71200400001)(110136005)(33656002)(86362001); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: k9v6cuRLHsuDopV17xy58uWXjYv5sKlJ4G3HMizgkgdQ6INNF2HU0pa+ZPx3Q6U2js0/DVEUy25h33qAqKvnVYYvVY+zgBKik9FZiNvOodp8cDro385uLddzan72uaxWrJUjD8q55ZgW93ttYWW/VLyEQyNSb06DCOQWfxyTxG/d84VIWFCE/UbYm5BxkHfNaXtWORGtuNQw6CjTTUUntpbxJJCfywRad5UCmj9gfI7bfW526jnijDOc1nXUcH3KDYhJjN85CCcIpmHR3jFR/RBFPQuIo9N2WEc9D4PPOqiPWiRA3WkQOz6XrtyE8nlOJ62oHXt7lSHosrEKcd4FTtKJ0qchgI/X22iqJkNPHDv/532bwFhAM70qbPhWOZRO5lWzRzKr6dHtn0kzmdpZ0nfqyw9UV9xGrbVbOMorwltSAQzCkScBmtZXX2muAnMlv9GmaJdMh2xiZelVq9h9CI3dW7NliDz1KcYi7GUpis4cqbt7nS7dXpUlQ3dVvGWSnRvM+90fpO356xWMK9Q+uwkOwE8Eml0+L+LlC2knnP5pEFSLXzry/AyW1Vsftm3hXe/Up/HVXnn8SSyIDCFgAPJctyQoHthcSPYLTgXxK5pwPXGgrGXgPYhoDol4CGBw5MUftzma1HM9SeDP+8H7S6FDomGv3Hg1B1hDiXuXDlzk/HBtluoLtHfPjYa3ic3zx64R+KCbPTFyjpB9GJ6TSjCqo8dfG4UykwYekQC77mS1FLkww6DCHikQdo kiE2guJkwU2l739+uzvFoel2EB8Axm7x8FyQxg1CeIEynMinCnmDUD/JAyUOvLhO+Ya1zh4nbklLZWCwaEtwBqFUfPrNzncofS X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SJ0PR10MB5488.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 18ba7104-ce77-477f-8253-08daa8a8607a X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Oct 2022 21:10:35.2491 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: QwWRQmyPsJvvLFKOySlIhsQeeM3mWGLNMu2yCFdHHXNZKuwY7e0o/EXz7Hn2/A7xaH1hb9thMdtjsHCr06TdNg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR10MB4332 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.895,Hydra:6.0.528,FMLib:17.11.122.1 definitions=2022-10-07_04,2022-10-07_01,2022-06-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 bulkscore=0 mlxscore=0 malwarescore=0 adultscore=0 spamscore=0 mlxlogscore=967 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2209130000 definitions=main-2210070126 X-Proofpoint-GUID: 7xfSUQuiPGSBl8HTM2rIgXdqP1TfY_mn X-Proofpoint-ORIG-GUID: 7xfSUQuiPGSBl8HTM2rIgXdqP1TfY_mn X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.io gmane.emacs.bugs:244852 Archived-At: > Unless I am mistaken, there is no direct function > to quickly test if a directory is a super-directory > of file. As I have encountered this issue more > than once the last few days of hacking, I would > like to propose the below function. Parent is not the same as super-directory (or "eventual parent", as your doc says). A parent is an immediate direct ancestor. It's not just _any_ ancestor. "Ancestor" includes parent, grandparent,... -- any level. I guess it's what you meant by "parent" and "super-directory". ___ FWIW: I use this, for a _parent_ directory. (I've likely proposed this to Emacs before.) The name is because it's defined in dired+.el, but the function isn't specific to Dired. (defun diredp-parent-dir (file &optional relativep) "Return the parent directory of FILE, or nil if none. Optional arg RELATIVEP non-nil means return a relative name, that is, just the parent component." (let ((parent (file-name-directory (directory-file-name (expand-file-name file)))) relparent) (when relativep (setq relparent (file-name-nondirectory (directory-file-name parent)))) (and (not (equal parent file)) (or relparent parent)))) IOW, in a nutshell, this is a parent dir of FILE: (file-name-directory (directory-file-name (expand-file-name FILE))) FWIW2: I use this to get a list of all ancestors of DIR. (defun diredp-ancestor-dirs (dir) "Return a list of the ancestor directories of directory DIR." (mapcar #'file-name-as-directory (diredp-maplist (lambda (dd) (mapconcat #'identity (reverse dd) "/")) (cdr (nreverse (split-string dir "/" t)))))) (You can use `cl-maplist'. I use `diredp-maplist' because dired+.el needs compatibility with old Emacs versions.)