* re-make-list @ 2020-02-10 5:11 Emanuel Berg via Users list for the GNU Emacs text editor 2020-02-10 6:58 ` re-make-list tomas 0 siblings, 1 reply; 13+ messages in thread From: Emanuel Berg via Users list for the GNU Emacs text editor @ 2020-02-10 5:11 UTC (permalink / raw) To: help-gnu-emacs; +Cc: emacs-devel Make a list of regexp matches... perhaps already in Emacs/ELPA/Joe Hacker's stash/etc? Improvements AND comment look like this: ;; improvement ha ha :) ;; this file: https://dataswamp.org/~incal/emacs-init/re-make-list.el (defun re-make-list (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) )) ;; Below are 139 colors, so the list should be ;; 139 items long... ;; ;; (length (re-make-list "#[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) -- underground experts united http://user.it.uu.se/~embe8573 https://dataswamp.org/~incal ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: re-make-list 2020-02-10 5:11 re-make-list Emanuel Berg via Users list for the GNU Emacs text editor @ 2020-02-10 6:58 ` tomas 2020-02-10 7:37 ` re-make-list Emanuel Berg via Users list for the GNU Emacs text editor 0 siblings, 1 reply; 13+ messages in thread From: tomas @ 2020-02-10 6:58 UTC (permalink / raw) To: help-gnu-emacs [-- Attachment #1: Type: text/plain, Size: 1083 bytes --] On Mon, Feb 10, 2020 at 06:11:25AM +0100, Emanuel Berg via Users list for the GNU Emacs text editor wrote: > Make a list of regexp matches... perhaps > already in Emacs/ELPA/Joe Hacker's stash/etc? > > Improvements AND comment look like this: > > ;; improvement > > ha ha :) > > ;; this file: https://dataswamp.org/~incal/emacs-init/re-make-list.el > > (defun re-make-list (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) )) [...] If you don't mind the matches being returned in reverse order, that's fine. Otherwise you might consider returning (reverse matches). In your case, since you build a fresh list which nobody else sees, you might get away returning (nreverse matches) without the Functional Gods frowning at you ;-) Cheers -- t [-- Attachment #2: Digital signature --] [-- Type: application/pgp-signature, Size: 198 bytes --] ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: re-make-list 2020-02-10 6:58 ` re-make-list tomas @ 2020-02-10 7:37 ` Emanuel Berg via Users list for the GNU Emacs text editor 2020-02-10 8:02 ` re-make-list tomas 0 siblings, 1 reply; 13+ messages in thread From: Emanuel Berg via Users list for the GNU Emacs text editor @ 2020-02-10 7:37 UTC (permalink / raw) To: help-gnu-emacs tomas wrote: > In your case, since you build a fresh list > which nobody else sees, you might get away > returning (nreverse matches) without the > Functional Gods frowning at you ;-) Actually it will be visible indeed :) Because I now have a LED-keyboard and I thought I'd have a function that gave a fresh color randomly, but not too randomly, still colors that made sense... So I got the list from the web but it still needs some computing... As for now, 'warmy' is the most creative: https://dataswamp.org/~incal/conf/.zsh/led-kb -- underground experts united http://user.it.uu.se/~embe8573 https://dataswamp.org/~incal ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: re-make-list 2020-02-10 7:37 ` re-make-list Emanuel Berg via Users list for the GNU Emacs text editor @ 2020-02-10 8:02 ` tomas 2020-02-10 8:48 ` re-make-list Emanuel Berg via Users list for the GNU Emacs text editor 0 siblings, 1 reply; 13+ messages in thread From: tomas @ 2020-02-10 8:02 UTC (permalink / raw) To: help-gnu-emacs [-- Attachment #1: Type: text/plain, Size: 710 bytes --] On Mon, Feb 10, 2020 at 08:37:48AM +0100, Emanuel Berg via Users list for the GNU Emacs text editor wrote: > tomas wrote: > > > In your case, since you build a fresh list > > which nobody else sees, you might get away > > returning (nreverse matches) without the > > Functional Gods frowning at you ;-) > > Actually it will be visible indeed :) It seems I was unclear. I was talking about your variable "matches", which you create whithin the function and let grow with each match found. Since that variable is not visible outside the function's scope, you can afford the (potentially) more efficient nreverse. Sorry for the confusion. Just ignore if still unclear :) Cheers -- tomás [-- Attachment #2: Digital signature --] [-- Type: application/pgp-signature, Size: 198 bytes --] ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: re-make-list 2020-02-10 8:02 ` re-make-list tomas @ 2020-02-10 8:48 ` Emanuel Berg via Users list for the GNU Emacs text editor 2020-02-10 9:18 ` re-make-list tomas 2020-02-10 13:27 ` re-make-list Stefan Monnier 0 siblings, 2 replies; 13+ messages in thread From: Emanuel Berg via Users list for the GNU Emacs text editor @ 2020-02-10 8:48 UTC (permalink / raw) To: help-gnu-emacs tomas wrote: >> Actually it will be visible indeed :) [...] > > It seems I was unclear. I was talking about > your variable "matches", which you create > whithin the function and let grow with each > match found. Since that variable is not > visible outside the function's scope, you can > afford the (potentially) more > efficient nreverse. > > Sorry for the confusion. Just ignore if still > unclear :) Okay... but what should I do if its still clear then? -- underground experts united http://user.it.uu.se/~embe8573 https://dataswamp.org/~incal ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: re-make-list 2020-02-10 8:48 ` re-make-list Emanuel Berg via Users list for the GNU Emacs text editor @ 2020-02-10 9:18 ` tomas 2020-02-10 13:27 ` re-make-list Stefan Monnier 1 sibling, 0 replies; 13+ messages in thread From: tomas @ 2020-02-10 9:18 UTC (permalink / raw) To: help-gnu-emacs [-- Attachment #1: Type: text/plain, Size: 458 bytes --] On Mon, Feb 10, 2020 at 09:48:10AM +0100, Emanuel Berg via Users list for the GNU Emacs text editor wrote: > tomas wrote: > > >> Actually it will be visible indeed :) [...] > > > > It seems I was unclear [...] > > Sorry for the confusion. Just ignore if still > > unclear :) > > Okay... but what should I do if its still > clear then? Then you've got all you need for a founded choice. (or (ignore) (unignore)) I'd say :-) Cheers -- t [-- Attachment #2: Digital signature --] [-- Type: application/pgp-signature, Size: 198 bytes --] ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: re-make-list 2020-02-10 8:48 ` re-make-list Emanuel Berg via Users list for the GNU Emacs text editor 2020-02-10 9:18 ` re-make-list tomas @ 2020-02-10 13:27 ` Stefan Monnier 2020-02-10 14:04 ` re-make-list tomas 2020-02-10 23:28 ` re-make-list Emanuel Berg via Users list for the GNU Emacs text editor 1 sibling, 2 replies; 13+ messages in thread From: Stefan Monnier @ 2020-02-10 13:27 UTC (permalink / raw) To: help-gnu-emacs > 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. Stefan ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: re-make-list 2020-02-10 13:27 ` re-make-list Stefan Monnier @ 2020-02-10 14:04 ` tomas 2020-02-10 19:40 ` re-make-list Emanuel Berg via Users list for the GNU Emacs text editor 2020-02-10 23:28 ` re-make-list Emanuel Berg via Users list for the GNU Emacs text editor 1 sibling, 1 reply; 13+ messages in thread From: tomas @ 2020-02-10 14:04 UTC (permalink / raw) To: help-gnu-emacs [-- Attachment #1: Type: text/plain, Size: 286 bytes --] On Mon, Feb 10, 2020 at 08:27:07AM -0500, 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. You mean... it's less clear after that? ;-) Cheers -- t [-- Attachment #2: Digital signature --] [-- Type: application/pgp-signature, Size: 198 bytes --] ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: re-make-list 2020-02-10 14:04 ` re-make-list tomas @ 2020-02-10 19:40 ` Emanuel Berg via Users list for the GNU Emacs text editor 0 siblings, 0 replies; 13+ messages in thread From: Emanuel Berg via Users list for the GNU Emacs text editor @ 2020-02-10 19:40 UTC (permalink / raw) To: help-gnu-emacs tomas wrote: > On Mon, Feb 10, 2020 at 08:27:07AM -0500, > 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. > > You mean... it's less clear after that? > > ;-) ??? You mean you never heard of the continuation-passing style? In functional programming, continuation-passing style (CPS) is a style of programming in which control is passed explicitly in the form of a continuation. This is contrasted with direct style ... [1] It makes so much sense - Emanuel Berg's style being so direct, I mean :) [1] https://en.wikipedia.org/wiki/Continuation-passing_style -- underground experts united http://user.it.uu.se/~embe8573 https://dataswamp.org/~incal ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: re-make-list 2020-02-10 13:27 ` re-make-list Stefan Monnier 2020-02-10 14:04 ` re-make-list tomas @ 2020-02-10 23:28 ` Emanuel Berg via Users list for the GNU Emacs text editor 2020-02-11 3:44 ` re-make-list Emanuel Berg via Users list for the GNU Emacs text editor 1 sibling, 1 reply; 13+ messages in thread From: Emanuel Berg via Users list for the GNU Emacs text editor @ 2020-02-10 23:28 UTC (permalink / raw) To: help-gnu-emacs 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. CPS seems to be some version of recursion but where instead of removing an item from a list or decreasing a digit one provides f1(a f2) and it is the function that changes fn..f2(f1(a)) until it and thus the whole thing terminates. So f2 is the "explicit continuation function" [1] to f1, the one that gets called after f1 has done its operations on the value original argument. Maybe? [1] https://en.wikipedia.org/wiki/Continuation-passing_style -- underground experts united http://user.it.uu.se/~embe8573 https://dataswamp.org/~incal ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: re-make-list 2020-02-10 23:28 ` re-make-list Emanuel Berg via Users list for the GNU Emacs text editor @ 2020-02-11 3:44 ` Emanuel Berg via Users list for the GNU Emacs text editor 2020-02-11 14:30 ` re-make-list Stefan Monnier 0 siblings, 1 reply; 13+ messages in thread From: Emanuel Berg via Users list for the GNU Emacs text editor @ 2020-02-11 3:44 UTC (permalink / raw) To: help-gnu-emacs 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) -- underground experts united http://user.it.uu.se/~embe8573 https://dataswamp.org/~incal ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: re-make-list 2020-02-11 3:44 ` re-make-list Emanuel Berg via Users list for the GNU Emacs text editor @ 2020-02-11 14:30 ` Stefan Monnier 2020-02-11 16:47 ` re-make-list Emanuel Berg via Users list for the GNU Emacs text editor 0 siblings, 1 reply; 13+ messages in thread From: Stefan Monnier @ 2020-02-11 14:30 UTC (permalink / raw) To: help-gnu-emacs 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) ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: re-make-list 2020-02-11 14:30 ` re-make-list Stefan Monnier @ 2020-02-11 16:47 ` Emanuel Berg via Users list for the GNU Emacs text editor 0 siblings, 0 replies; 13+ messages in thread From: Emanuel Berg via Users list for the GNU Emacs text editor @ 2020-02-11 16:47 UTC (permalink / raw) To: help-gnu-emacs Stefan Monnier wrote: > 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! Ho ho But no one has suggested Standard META Language! Added CPS to another list [1] CPS 1975 continuation-passing style, coined in "AI Memo 349" so thank you :) In the Debian repos are libcps-perl! Nothing in M/ELPA... (?) In Emacs, how about cps--add-binding cps--add-state cps--advance-for cps--atomic-p cps--define-unsupported cps--find-special-form-handler cps--gensym cps--handle-loop-for cps--initialize-for cps--make-atomic-state cps--make-catch-wrapper cps--make-close-iterator-form cps--make-condition-wrapper cps--make-dynamic-binding-wrapper cps--make-unwind-wrapper cps--replace-variable-references cps--special-form-p cps--trace cps--trace-funcall cps--transform-1 cps--with-dynamic-binding cps--with-value-wrapper cps-generate-evaluator What IS that??? :O [1] https://dataswamp.org/~incal/COMP-HIST -- underground experts united http://user.it.uu.se/~embe8573 https://dataswamp.org/~incal ^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2020-02-11 16:47 UTC | newest] Thread overview: 13+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2020-02-10 5:11 re-make-list Emanuel Berg via Users list for the GNU Emacs text editor 2020-02-10 6:58 ` re-make-list tomas 2020-02-10 7:37 ` re-make-list Emanuel Berg via Users list for the GNU Emacs text editor 2020-02-10 8:02 ` re-make-list tomas 2020-02-10 8:48 ` re-make-list Emanuel Berg via Users list for the GNU Emacs text editor 2020-02-10 9:18 ` re-make-list tomas 2020-02-10 13:27 ` re-make-list Stefan Monnier 2020-02-10 14:04 ` re-make-list tomas 2020-02-10 19:40 ` re-make-list Emanuel Berg via Users list for the GNU Emacs text editor 2020-02-10 23:28 ` re-make-list Emanuel Berg via Users list for the GNU Emacs text editor 2020-02-11 3:44 ` re-make-list Emanuel Berg via Users list for the GNU Emacs text editor 2020-02-11 14:30 ` re-make-list Stefan Monnier 2020-02-11 16:47 ` re-make-list Emanuel Berg via Users list for the GNU Emacs text editor
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).