1 Return-Path: <amdragon@mit.edu>
\r
2 X-Original-To: notmuch@notmuchmail.org
\r
3 Delivered-To: notmuch@notmuchmail.org
\r
4 Received: from localhost (localhost [127.0.0.1])
\r
5 by olra.theworths.org (Postfix) with ESMTP id 65059429E26
\r
6 for <notmuch@notmuchmail.org>; Wed, 21 Dec 2011 06:39:06 -0800 (PST)
\r
7 X-Virus-Scanned: Debian amavisd-new at olra.theworths.org
\r
11 X-Spam-Status: No, score=-0.7 tagged_above=-999 required=5
\r
12 tests=[RCVD_IN_DNSWL_LOW=-0.7] autolearn=disabled
\r
13 Received: from olra.theworths.org ([127.0.0.1])
\r
14 by localhost (olra.theworths.org [127.0.0.1]) (amavisd-new, port 10024)
\r
15 with ESMTP id vFl1hgJZa1Yg for <notmuch@notmuchmail.org>;
\r
16 Wed, 21 Dec 2011 06:39:05 -0800 (PST)
\r
17 Received: from dmz-mailsec-scanner-5.mit.edu (DMZ-MAILSEC-SCANNER-5.MIT.EDU
\r
19 by olra.theworths.org (Postfix) with ESMTP id A9170431FB6
\r
20 for <notmuch@notmuchmail.org>; Wed, 21 Dec 2011 06:39:05 -0800 (PST)
\r
21 X-AuditID: 12074422-b7fd66d0000008f9-f0-4ef1ef861430
\r
22 Received: from mailhub-auth-1.mit.edu ( [18.9.21.35])
\r
23 by dmz-mailsec-scanner-5.mit.edu (Symantec Messaging Gateway) with SMTP
\r
24 id 34.2E.02297.68FE1FE4; Wed, 21 Dec 2011 09:39:02 -0500 (EST)
\r
25 Received: from outgoing.mit.edu (OUTGOING-AUTH.MIT.EDU [18.7.22.103])
\r
26 by mailhub-auth-1.mit.edu (8.13.8/8.9.2) with ESMTP id pBLEd1fO031639;
\r
27 Wed, 21 Dec 2011 09:39:02 -0500
\r
28 Received: from awakening.csail.mit.edu (awakening.csail.mit.edu [18.26.4.91])
\r
29 (authenticated bits=0)
\r
30 (User authenticated as amdragon@ATHENA.MIT.EDU)
\r
31 by outgoing.mit.edu (8.13.6/8.12.4) with ESMTP id pBLEcxpg024899
\r
32 (version=TLSv1/SSLv3 cipher=AES256-SHA bits=256 verify=NOT);
\r
33 Wed, 21 Dec 2011 09:39:00 -0500 (EST)
\r
34 Received: from amthrax by awakening.csail.mit.edu with local (Exim 4.77)
\r
35 (envelope-from <amdragon@mit.edu>)
\r
36 id 1RdNKy-0006Wi-9A; Wed, 21 Dec 2011 09:40:08 -0500
\r
37 Date: Wed, 21 Dec 2011 09:40:08 -0500
\r
38 From: Austin Clements <amdragon@MIT.EDU>
\r
39 To: David Edmondson <dme@dme.org>
\r
40 Subject: Re: [PATCH] emacs: create patch filename from subject for inline
\r
42 Message-ID: <20111221144008.GG10376@mit.edu>
\r
43 References: <1321657368-13872-1-git-send-email-jani@nikula.org>
\r
44 <87aa6nxb3o.fsf@nikula.org> <20111220215229.GF10376@mit.edu>
\r
45 <cun4nwuxota.fsf@hotblack-desiato.hh.sledj.net>
\r
47 Content-Type: text/plain; charset=us-ascii
\r
48 Content-Disposition: inline
\r
49 In-Reply-To: <cun4nwuxota.fsf@hotblack-desiato.hh.sledj.net>
\r
50 User-Agent: Mutt/1.5.21 (2010-09-15)
\r
51 X-Brightmail-Tracker:
\r
52 H4sIAAAAAAAAA+NgFuplleLIzCtJLcpLzFFi42IR4hRV1m17/9HPYNN9I4t9d7YwWTRNd7a4
\r
53 fnMmswOzx67nf5k8bt1/ze7xbNUt5gDmKC6blNSczLLUIn27BK6MCR8mMRbsEKx4/YirgXE/
\r
54 bxcjJ4eEgInE6SW7WSBsMYkL99azdTFycQgJ7GOUuLF2NjOEs4FR4t6h44wQzkkmiZst35kg
\r
55 nCWMEs2L17GC9LMIqEq8+rOcDcRmE9CQ2LZ/OSOILSKgKPH/2wp2EJtZwEqiYcsHsLiwQIzE
\r
56 03+TwHbzCuhIXL74EWr3JkaJr4cnQCUEJU7OfMIC0awlcePfS6DNHEC2tMTyfxwgYU4BG4nj
\r
57 K46D3SAqoCIx5eQ2tgmMQrOQdM9C0j0LoXsBI/MqRtmU3Crd3MTMnOLUZN3i5MS8vNQiXVO9
\r
58 3MwSvdSU0k2MoFBnd1HawfjzoNIhRgEORiUeXqH9H/yEWBPLiitzDzFKcjApifLOePvRT4gv
\r
59 KT+lMiOxOCO+qDQntfgQowQHs5II78fXQDnelMTKqtSifJiUNAeLkjivutY7PyGB9MSS1OzU
\r
60 1ILUIpisDAeHkgTvuXdAjYJFqempFWmZOSUIaSYOTpDhPEDDv4PU8BYXJOYWZ6ZD5E8xKkqJ
\r
61 834GSQiAJDJK8+B6YanoFaM40CvCvG9AqniAaQyu+xXQYCagwducP4AMLklESEk1ME4Ku3iu
\r
62 c9/qIv4auy2Sq5/d/75RX23Gq4Ipvzd48KyXdgu2/Gjj+46R7dvENb3rc1l8Yn0O7rvOmK0z
\r
63 ZWHPfS/GBQdWNr4+6mHysDVP69bRz4EySzX4O7+tdtuR2ZXU4b1rlfwt1myO+mf5r9N5Lm0W
\r
64 1sxZbtR1OU7R+c5OrXv/XBqM9XmV/yixFGckGmoxFxUnAgC3ieu9IAMAAA==
\r
65 Cc: notmuch@notmuchmail.org
\r
66 X-BeenThere: notmuch@notmuchmail.org
\r
67 X-Mailman-Version: 2.1.13
\r
69 List-Id: "Use and development of the notmuch mail system."
\r
70 <notmuch.notmuchmail.org>
\r
71 List-Unsubscribe: <http://notmuchmail.org/mailman/options/notmuch>,
\r
72 <mailto:notmuch-request@notmuchmail.org?subject=unsubscribe>
\r
73 List-Archive: <http://notmuchmail.org/pipermail/notmuch>
\r
74 List-Post: <mailto:notmuch@notmuchmail.org>
\r
75 List-Help: <mailto:notmuch-request@notmuchmail.org?subject=help>
\r
76 List-Subscribe: <http://notmuchmail.org/mailman/listinfo/notmuch>,
\r
77 <mailto:notmuch-request@notmuchmail.org?subject=subscribe>
\r
78 X-List-Received-Date: Wed, 21 Dec 2011 14:39:06 -0000
\r
80 I would definitely go with the latter.
\r
82 It might feel less unwieldy with a shorter variable name than
\r
83 "filename", since that has to be repeated so many times. (It's also
\r
84 not really a filename in the middle of the replace process.)
\r
86 This is splitting hairs, but in my original suggestion, I was thinking
\r
90 (s (replace-regexp-in-string "^ *\\(\\[[^]]*\\]\\)? *" "" s))
\r
91 (s (replace-regexp-in-string "[. ]*$" "" s))
\r
92 (s (replace-regexp-in-string "[^A-Za-z0-9._-]+" "-" s))
\r
93 (s (replace-regexp-in-string "\\.+" "." s))
\r
94 (s (substring s 0 (min (length s) 50))))
\r
95 (concat s ".patch"))
\r
97 Out of curiosity, where'd the regexps come from? They all seem
\r
98 reasonable, but some of them seem somewhat arbitrary.
\r
100 Quoth David Edmondson on Dec 21 at 9:21 am:
\r
101 > On Tue, 20 Dec 2011 16:52:52 -0500, Austin Clements <amdragon@MIT.EDU> wrote:
\r
102 > > Seems like a definite improvement, but perhaps a let* instead of all
\r
105 > What would be a lispy approach? I tried:
\r
107 > (defun notmuch-subject-to-patch-filename (subject)
\r
108 > "Convert a typical patch mail subject line into a suitable filename."
\r
110 > (let ((filename subject)
\r
112 > '(("^ *\\(\\[[^]]*\\]\\)? *" . "")
\r
114 > ("[^A-Za-z0-9._-]+" . "-")
\r
115 > ("\\.+" . "."))))
\r
116 > (mapc (lambda (transform)
\r
117 > (setq filename (replace-regexp-in-string (car transform) (cdr transform) filename)))
\r
119 > (substring filename 0 (min (length filename) 50)))
\r
122 > ...but that seems a bit unwieldy. `let*' looks best, but still feels a
\r
125 > (defun notmuch-subject-to-patch-filename (subject)
\r
126 > "Convert a typical patch mail subject line into a suitable filename."
\r
128 > (let* ((filename (replace-regexp-in-string "^ *\\(\\[[^]]*\\]\\)? *" "" subject))
\r
129 > (filename (replace-regexp-in-string "[. ]*$" "" filename))
\r
130 > (filename (replace-regexp-in-string "[^A-Za-z0-9._-]+" "-" filename))
\r
131 > (filename (replace-regexp-in-string "\\.+" "." filename)))
\r
132 > (substring filename 0 (min (length filename) 50)))
\r