From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.ciao.gmane.io!not-for-mail From: Stefan Monnier Newsgroups: gmane.emacs.help Subject: Re: re-make-list Date: Tue, 11 Feb 2020 09:30:09 -0500 Message-ID: References: <87imkfhvr6.fsf@ebih.ebihd> <20200210065820.GA31564@tuxteam.de> <87d0amj3jn.fsf@ebih.ebihd> <20200210080250.GB31564@tuxteam.de> <87blq6rfp1.fsf@ebih.ebihd> <87sgjixbrk.fsf@ebih.ebihd> <874kvxyeii.fsf@ebih.ebihd> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="ciao.gmane.io:159.69.161.202"; logging-data="59873"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) To: help-gnu-emacs@gnu.org Cancel-Lock: sha1:W2VoR80dkvbbGKxDU6abBCzZHwg= Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Tue Feb 11 15:30:48 2020 Return-path: Envelope-to: geh-help-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 1j1WYo-000FQg-PS for geh-help-gnu-emacs@m.gmane-mx.org; Tue, 11 Feb 2020 15:30:46 +0100 Original-Received: from localhost ([::1]:50550 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j1WYn-0004Ro-Rs for geh-help-gnu-emacs@m.gmane-mx.org; Tue, 11 Feb 2020 09:30:45 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:51000) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j1WYO-0004RZ-19 for help-gnu-emacs@gnu.org; Tue, 11 Feb 2020 09:30:21 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1j1WYM-0005f5-8c for help-gnu-emacs@gnu.org; Tue, 11 Feb 2020 09:30:19 -0500 Original-Received: from ciao.gmane.io ([159.69.161.202]:55910) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1j1WYM-0005eh-2L for help-gnu-emacs@gnu.org; Tue, 11 Feb 2020 09:30:18 -0500 Original-Received: from list by ciao.gmane.io with local (Exim 4.92) (envelope-from ) id 1j1WYK-000EwU-Ag for help-gnu-emacs@gnu.org; Tue, 11 Feb 2020 15:30:16 +0100 X-Injected-Via-Gmane: http://gmane.org/ X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 159.69.161.202 X-BeenThere: help-gnu-emacs@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Users list for the GNU Emacs text editor List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: "help-gnu-emacs" Xref: news.gmane.io gmane.emacs.help:122400 Archived-At: I didn't realize how CPS is not just technically a good first step, but also at a more meta-level it's proved a great first step! Stefan Emanuel Berg via Users list for the GNU Emacs text editor [2020-02-11 04:44:05] wrote: > Stefan Monnier wrote: > >>>> Okay... but what should I do if its still >>>> clear then? >>> >>> Usually converting to CPS is a good first >>> step to solve these kinds of problems. > > If CPS is about like with `reverse' and > `nreverse', which I take it are the quadratic > and linear versions of the same unelegant last > thing of reversing all good enough government > job already done, then relax, one can do it > with the "direct" style as well - and even > directly so, by just fliping the first > `re-make-list', which is direct to begin with! > > Ema-CPS 2-0 > > ;; this file: https://dataswamp.org/~incal/emacs-init/re-make-list.el > > (defun re-make-list-forward (re &optional start stop) > (interactive > (if (use-region-p) > (list (region-beginning) (region-end)) > (list (point-min) (point-max)) )) > (save-excursion > (let ((matches ())) > (goto-char start) > (while (re-search-forward re stop t) > (push (match-string-no-properties 0) matches) ) > matches) )) > (defalias 're-make-list #'re-make-list-forward) > > (defun re-make-list-backward (re &optional start stop) > (interactive > (if (use-region-p) > (list (region-beginning) (region-end)) > (list (point-min) (point-max)) )) > (save-excursion > (let ((matches ())) > (goto-char stop) > (while (re-search-backward re start t) > (push (match-string-no-properties 0) matches) ) > matches) )) > > ;; Below are 139 colors, so the list should be > ;; 139 items long... > ;; > ;; (length (re-make-list-forward "#[0-9\\|A-F]\\{6\\}" (point) (point-max))) ; 139 > ;; (length (re-make-list-backward "#[0-9\\|A-F]\\{6\\}" (point) (point-max))) ; 139 > ;; > ;; # /bin/zsh > ;; # > ;; # not really... > ;; # > ;; # https://www.rapidtables.com/web/color/RGB_Color.html > ;; # maroon #800000 (128,0,0) > ;; # dark red #8B0000 (139,0,0) > ;; # brown #A52A2A (165,42,42) > ;; # firebrick #B22222 (178,34,34) > ;; # crimson #DC143C (220,20,60) > ;; # red #FF0000 (255,0,0) > ;; # tomato #FF6347 (255,99,71) > ;; # coral #FF7F50 (255,127,80) > ;; # indian red #CD5C5C (205,92,92) > ;; # light coral #F08080 (240,128,128) > ;; # dark salmon #E9967A (233,150,122) > ;; # salmon #FA8072 (250,128,114) > ;; # light salmon #FFA07A (255,160,122) > ;; # orange red #FF4500 (255,69,0) > ;; # dark orange #FF8C00 (255,140,0) > ;; # orange #FFA500 (255,165,0) > ;; # gold #FFD700 (255,215,0) > ;; # dark golden rod #B8860B (184,134,11) > ;; # golden rod #DAA520 (218,165,32) > ;; # pale golden rod #EEE8AA (238,232,170) > ;; # dark khaki #BDB76B (189,183,107) > ;; # khaki #F0E68C (240,230,140) > ;; # olive #808000 (128,128,0) > ;; # yellow #FFFF00 (255,255,0) > ;; # yellow green #9ACD32 (154,205,50) > ;; # dark olive green #556B2F (85,107,47) > ;; # olive drab #6B8E23 (107,142,35) > ;; # lawn green #7CFC00 (124,252,0) > ;; # chart reuse #7FFF00 (127,255,0) > ;; # green yellow #ADFF2F (173,255,47) > ;; # dark green #006400 (0,100,0) > ;; # green #008000 (0,128,0) > ;; # forest green #228B22 (34,139,34) > ;; # lime #00FF00 (0,255,0) > ;; # lime green #32CD32 (50,205,50) > ;; # light green #90EE90 (144,238,144) > ;; # pale green #98FB98 (152,251,152) > ;; # dark sea green #8FBC8F (143,188,143) > ;; # medium spring green #00FA9A (0,250,154) > ;; # spring green #00FF7F (0,255,127) > ;; # sea green #2E8B57 (46,139,87) > ;; # medium aqua marine #66CDAA (102,205,170) > ;; # medium sea green #3CB371 (60,179,113) > ;; # light sea green #20B2AA (32,178,170) > ;; # dark slate gray #2F4F4F (47,79,79) > ;; # teal #008080 (0,128,128) > ;; # dark cyan #008B8B (0,139,139) > ;; # aqua #00FFFF (0,255,255) > ;; # cyan #00FFFF (0,255,255) > ;; # light cyan #E0FFFF (224,255,255) > ;; # dark turquoise #00CED1 (0,206,209) > ;; # turquoise #40E0D0 (64,224,208) > ;; # medium turquoise #48D1CC (72,209,204) > ;; # pale turquoise #AFEEEE (175,238,238) > ;; # aqua marine #7FFFD4 (127,255,212) > ;; # powder blue #B0E0E6 (176,224,230) > ;; # cadet blue #5F9EA0 (95,158,160) > ;; # steel blue #4682B4 (70,130,180) > ;; # corn flower blue #6495ED (100,149,237) > ;; # deep sky blue #00BFFF (0,191,255) > ;; # dodger blue #1E90FF (30,144,255) > ;; # light blue #ADD8E6 (173,216,230) > ;; # sky blue #87CEEB (135,206,235) > ;; # light sky blue #87CEFA (135,206,250) > ;; # midnight blue #191970 (25,25,112) > ;; # navy #000080 (0,0,128) > ;; # dark blue #00008B (0,0,139) > ;; # medium blue #0000CD (0,0,205) > ;; # blue #0000FF (0,0,255) > ;; # royal blue #4169E1 (65,105,225) > ;; # blue violet #8A2BE2 (138,43,226) > ;; # indigo #4B0082 (75,0,130) > ;; # dark slate blue #483D8B (72,61,139) > ;; # slate blue #6A5ACD (106,90,205) > ;; # medium slate blue #7B68EE (123,104,238) > ;; # medium purple #9370DB (147,112,219) > ;; # dark magenta #8B008B (139,0,139) > ;; # dark violet #9400D3 (148,0,211) > ;; # dark orchid #9932CC (153,50,204) > ;; # medium orchid #BA55D3 (186,85,211) > ;; # purple #800080 (128,0,128) > ;; # thistle #D8BFD8 (216,191,216) > ;; # plum #DDA0DD (221,160,221) > ;; # violet #EE82EE (238,130,238) > ;; # magenta / fuchsia #FF00FF (255,0,255) > ;; # orchid #DA70D6 (218,112,214) > ;; # medium violet red #C71585 (199,21,133) > ;; # pale violet red #DB7093 (219,112,147) > ;; # deep pink #FF1493 (255,20,147) > ;; # hot pink #FF69B4 (255,105,180) > ;; # light pink #FFB6C1 (255,182,193) > ;; # pink #FFC0CB (255,192,203) > ;; # antique white #FAEBD7 (250,235,215) > ;; # beige #F5F5DC (245,245,220) > ;; # bisque #FFE4C4 (255,228,196) > ;; # blanched almond #FFEBCD (255,235,205) > ;; # wheat #F5DEB3 (245,222,179) > ;; # corn silk #FFF8DC (255,248,220) > ;; # lemon chiffon #FFFACD (255,250,205) > ;; # light golden rod yellow #FAFAD2 (250,250,210) > ;; # light yellow #FFFFE0 (255,255,224) > ;; # saddle brown #8B4513 (139,69,19) > ;; # sienna #A0522D (160,82,45) > ;; # chocolate #D2691E (210,105,30) > ;; # peru #CD853F (205,133,63) > ;; # sandy brown #F4A460 (244,164,96) > ;; # burly wood #DEB887 (222,184,135) > ;; # tan #D2B48C (210,180,140) > ;; # rosy brown #BC8F8F (188,143,143) > ;; # moccasin #FFE4B5 (255,228,181) > ;; # navajo white #FFDEAD (255,222,173) > ;; # peach puff #FFDAB9 (255,218,185) > ;; # misty rose #FFE4E1 (255,228,225) > ;; # lavender blush #FFF0F5 (255,240,245) > ;; # linen #FAF0E6 (250,240,230) > ;; # old lace #FDF5E6 (253,245,230) > ;; # papaya whip #FFEFD5 (255,239,213) > ;; # sea shell #FFF5EE (255,245,238) > ;; # mint cream #F5FFFA (245,255,250) > ;; # slate gray #708090 (112,128,144) > ;; # light slate gray #778899 (119,136,153) > ;; # light steel blue #B0C4DE (176,196,222) > ;; # lavender #E6E6FA (230,230,250) > ;; # floral white #FFFAF0 (255,250,240) > ;; # alice blue #F0F8FF (240,248,255) > ;; # ghost white #F8F8FF (248,248,255) > ;; # honeydew #F0FFF0 (240,255,240) > ;; # ivory #FFFFF0 (255,255,240) > ;; # azure #F0FFFF (240,255,255) > ;; # snow #FFFAFA (255,250,250) > ;; # black #000000 (0,0,0) > ;; # dim gray / dim grey #696969 (105,105,105) > ;; # gray / grey #808080 (128,128,128) > ;; # dark gray / dark grey #A9A9A9 (169,169,169) > ;; # silver #C0C0C0 (192,192,192) > ;; # light gray / light grey #D3D3D3 (211,211,211) > ;; # gainsboro #DCDCDC (220,220,220) > ;; # white smoke #F5F5F5 (245,245,245) > ;; # white #FFFFFF (255,255,255)