| ofs | hex dump | ascii |
|---|
| 0000 | 73 2d 32 30 32 32 30 39 30 32 2e 31 35 31 31 2f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | s-20220902.1511/................ |
| 0020 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0040 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0060 | 00 00 00 00 30 30 30 30 37 35 35 00 30 30 30 30 30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30 | ....0000755.0000000.0000000.0000 |
| 0080 | 30 30 30 30 30 30 30 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 31 32 34 33 00 20 35 00 00 00 | 0000000.00000000000.011243..5... |
| 00a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 00c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 00e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0100 | 00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .ustar...root................... |
| 0120 | 00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .........root................... |
| 0140 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0160 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0180 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 01a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 01c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 01e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0200 | 73 2d 32 30 32 32 30 39 30 32 2e 31 35 31 31 2f 73 2e 65 6c 00 00 00 00 00 00 00 00 00 00 00 00 | s-20220902.1511/s.el............ |
| 0220 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0240 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0260 | 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30 30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30 | ....0000644.0000000.0000000.0000 |
| 0280 | 30 30 36 32 37 32 32 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 32 30 34 30 00 20 30 00 00 00 | 0062722.00000000000.012040..0... |
| 02a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 02c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 02e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0300 | 00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .ustar...root................... |
| 0320 | 00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .........root................... |
| 0340 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0360 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0380 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 03a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 03c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 03e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0400 | 3b 3b 3b 20 73 2e 65 6c 20 2d 2d 2d 20 54 68 65 20 6c 6f 6e 67 20 6c 6f 73 74 20 45 6d 61 63 73 | ;;;.s.el.---.The.long.lost.Emacs |
| 0420 | 20 73 74 72 69 6e 67 20 6d 61 6e 69 70 75 6c 61 74 69 6f 6e 20 6c 69 62 72 61 72 79 2e 20 2d 2a | .string.manipulation.library..-* |
| 0440 | 2d 20 6c 65 78 69 63 61 6c 2d 62 69 6e 64 69 6e 67 3a 20 74 20 2d 2a 2d 0a 0a 3b 3b 20 43 6f 70 | -.lexical-binding:.t.-*-..;;.Cop |
| 0460 | 79 72 69 67 68 74 20 28 43 29 20 32 30 31 32 2d 32 30 32 32 20 4d 61 67 6e 61 72 20 53 76 65 65 | yright.(C).2012-2022.Magnar.Svee |
| 0480 | 6e 0a 0a 3b 3b 20 41 75 74 68 6f 72 3a 20 4d 61 67 6e 61 72 20 53 76 65 65 6e 20 3c 6d 61 67 6e | n..;;.Author:.Magnar.Sveen.<magn |
| 04a0 | 61 72 73 40 67 6d 61 69 6c 2e 63 6f 6d 3e 0a 3b 3b 20 4d 61 69 6e 74 61 69 6e 65 72 3a 20 4a 61 | ars@gmail.com>.;;.Maintainer:.Ja |
| 04c0 | 73 6f 6e 20 4d 69 6c 6b 69 6e 73 20 3c 6a 61 73 6f 6e 6d 32 33 40 67 6d 61 69 6c 2e 63 6f 6d 3e | son.Milkins.<jasonm23@gmail.com> |
| 04e0 | 0a 3b 3b 20 56 65 72 73 69 6f 6e 3a 20 31 2e 31 33 2e 31 0a 3b 3b 20 4b 65 79 77 6f 72 64 73 3a | .;;.Version:.1.13.1.;;.Keywords: |
| 0500 | 20 73 74 72 69 6e 67 73 0a 0a 3b 3b 20 54 68 69 73 20 70 72 6f 67 72 61 6d 20 69 73 20 66 72 65 | .strings..;;.This.program.is.fre |
| 0520 | 65 20 73 6f 66 74 77 61 72 65 3b 20 79 6f 75 20 63 61 6e 20 72 65 64 69 73 74 72 69 62 75 74 65 | e.software;.you.can.redistribute |
| 0540 | 20 69 74 20 61 6e 64 2f 6f 72 20 6d 6f 64 69 66 79 0a 3b 3b 20 69 74 20 75 6e 64 65 72 20 74 68 | .it.and/or.modify.;;.it.under.th |
| 0560 | 65 20 74 65 72 6d 73 20 6f 66 20 74 68 65 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 | e.terms.of.the.GNU.General.Publi |
| 0580 | 63 20 4c 69 63 65 6e 73 65 20 61 73 20 70 75 62 6c 69 73 68 65 64 20 62 79 0a 3b 3b 20 74 68 65 | c.License.as.published.by.;;.the |
| 05a0 | 20 46 72 65 65 20 53 6f 66 74 77 61 72 65 20 46 6f 75 6e 64 61 74 69 6f 6e 2c 20 65 69 74 68 65 | .Free.Software.Foundation,.eithe |
| 05c0 | 72 20 76 65 72 73 69 6f 6e 20 33 20 6f 66 20 74 68 65 20 4c 69 63 65 6e 73 65 2c 20 6f 72 0a 3b | r.version.3.of.the.License,.or.; |
| 05e0 | 3b 20 28 61 74 20 79 6f 75 72 20 6f 70 74 69 6f 6e 29 20 61 6e 79 20 6c 61 74 65 72 20 76 65 72 | ;.(at.your.option).any.later.ver |
| 0600 | 73 69 6f 6e 2e 0a 0a 3b 3b 20 54 68 69 73 20 70 72 6f 67 72 61 6d 20 69 73 20 64 69 73 74 72 69 | sion...;;.This.program.is.distri |
| 0620 | 62 75 74 65 64 20 69 6e 20 74 68 65 20 68 6f 70 65 20 74 68 61 74 20 69 74 20 77 69 6c 6c 20 62 | buted.in.the.hope.that.it.will.b |
| 0640 | 65 20 75 73 65 66 75 6c 2c 0a 3b 3b 20 62 75 74 20 57 49 54 48 4f 55 54 20 41 4e 59 20 57 41 52 | e.useful,.;;.but.WITHOUT.ANY.WAR |
| 0660 | 52 41 4e 54 59 3b 20 77 69 74 68 6f 75 74 20 65 76 65 6e 20 74 68 65 20 69 6d 70 6c 69 65 64 20 | RANTY;.without.even.the.implied. |
| 0680 | 77 61 72 72 61 6e 74 79 20 6f 66 0a 3b 3b 20 4d 45 52 43 48 41 4e 54 41 42 49 4c 49 54 59 20 6f | warranty.of.;;.MERCHANTABILITY.o |
| 06a0 | 72 20 46 49 54 4e 45 53 53 20 46 4f 52 20 41 20 50 41 52 54 49 43 55 4c 41 52 20 50 55 52 50 4f | r.FITNESS.FOR.A.PARTICULAR.PURPO |
| 06c0 | 53 45 2e 20 20 53 65 65 20 74 68 65 0a 3b 3b 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c | SE...See.the.;;.GNU.General.Publ |
| 06e0 | 69 63 20 4c 69 63 65 6e 73 65 20 66 6f 72 20 6d 6f 72 65 20 64 65 74 61 69 6c 73 2e 0a 0a 3b 3b | ic.License.for.more.details...;; |
| 0700 | 20 59 6f 75 20 73 68 6f 75 6c 64 20 68 61 76 65 20 72 65 63 65 69 76 65 64 20 61 20 63 6f 70 79 | .You.should.have.received.a.copy |
| 0720 | 20 6f 66 20 74 68 65 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e | .of.the.GNU.General.Public.Licen |
| 0740 | 73 65 0a 3b 3b 20 61 6c 6f 6e 67 20 77 69 74 68 20 74 68 69 73 20 70 72 6f 67 72 61 6d 2e 20 20 | se.;;.along.with.this.program... |
| 0760 | 49 66 20 6e 6f 74 2c 20 73 65 65 20 3c 68 74 74 70 3a 2f 2f 77 77 77 2e 67 6e 75 2e 6f 72 67 2f | If.not,.see.<http://www.gnu.org/ |
| 0780 | 6c 69 63 65 6e 73 65 73 2f 3e 2e 0a 0a 3b 3b 3b 20 43 6f 6d 6d 65 6e 74 61 72 79 3a 0a 0a 3b 3b | licenses/>...;;;.Commentary:..;; |
| 07a0 | 20 54 68 65 20 6c 6f 6e 67 20 6c 6f 73 74 20 45 6d 61 63 73 20 73 74 72 69 6e 67 20 6d 61 6e 69 | .The.long.lost.Emacs.string.mani |
| 07c0 | 70 75 6c 61 74 69 6f 6e 20 6c 69 62 72 61 72 79 2e 0a 3b 3b 0a 3b 3b 20 53 65 65 20 64 6f 63 75 | pulation.library..;;.;;.See.docu |
| 07e0 | 6d 65 6e 74 61 74 69 6f 6e 20 6f 6e 20 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f | mentation.on.https://github.com/ |
| 0800 | 6d 61 67 6e 61 72 73 2f 73 2e 65 6c 23 66 75 6e 63 74 69 6f 6e 73 0a 0a 3b 3b 3b 20 43 6f 64 65 | magnars/s.el#functions..;;;.Code |
| 0820 | 3a 0a 0a 3b 3b 20 53 69 6c 65 6e 63 65 20 62 79 74 65 2d 63 6f 6d 70 69 6c 65 72 0a 28 64 65 66 | :..;;.Silence.byte-compiler.(def |
| 0840 | 76 61 72 20 75 63 73 2d 6e 6f 72 6d 61 6c 69 7a 65 2d 63 6f 6d 62 69 6e 69 6e 67 2d 63 68 61 72 | var.ucs-normalize-combining-char |
| 0860 | 73 29 20 20 3b 20 44 65 66 69 6e 65 64 20 69 6e 20 60 75 63 73 2d 6e 6f 72 6d 61 6c 69 7a 65 27 | s)..;.Defined.in.`ucs-normalize' |
| 0880 | 0a 28 61 75 74 6f 6c 6f 61 64 20 27 73 6c 6f 74 2d 76 61 6c 75 65 20 22 65 69 65 69 6f 22 29 0a | .(autoload.'slot-value."eieio"). |
| 08a0 | 0a 28 64 65 66 75 6e 20 73 2d 74 72 69 6d 2d 6c 65 66 74 20 28 73 29 0a 20 20 22 52 65 6d 6f 76 | .(defun.s-trim-left.(s)..."Remov |
| 08c0 | 65 20 77 68 69 74 65 73 70 61 63 65 20 61 74 20 74 68 65 20 62 65 67 69 6e 6e 69 6e 67 20 6f 66 | e.whitespace.at.the.beginning.of |
| 08e0 | 20 53 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 70 75 72 65 20 74 29 20 28 73 69 64 65 2d 65 | .S."...(declare.(pure.t).(side-e |
| 0900 | 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 73 61 76 65 2d 6d 61 74 63 68 2d 64 61 74 | ffect-free.t))...(save-match-dat |
| 0920 | 61 0a 20 20 20 20 28 69 66 20 28 73 74 72 69 6e 67 2d 6d 61 74 63 68 20 22 5c 5c 60 5b 20 5c 74 | a.....(if.(string-match."\\`[.\t |
| 0940 | 5c 6e 5c 72 5d 2b 22 20 73 29 0a 20 20 20 20 20 20 20 20 28 72 65 70 6c 61 63 65 2d 6d 61 74 63 | \n\r]+".s).........(replace-matc |
| 0960 | 68 20 22 22 20 74 20 74 20 73 29 0a 20 20 20 20 20 20 73 29 29 29 0a 0a 28 64 65 66 75 6e 20 73 | h."".t.t.s).......s)))..(defun.s |
| 0980 | 2d 74 72 69 6d 2d 72 69 67 68 74 20 28 73 29 0a 20 20 22 52 65 6d 6f 76 65 20 77 68 69 74 65 73 | -trim-right.(s)..."Remove.whites |
| 09a0 | 70 61 63 65 20 61 74 20 74 68 65 20 65 6e 64 20 6f 66 20 53 2e 22 0a 20 20 28 64 65 63 6c 61 72 | pace.at.the.end.of.S."...(declar |
| 09c0 | 65 20 28 70 75 72 65 20 74 29 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 | e.(pure.t).(side-effect-free.t)) |
| 09e0 | 0a 20 20 28 73 61 76 65 2d 6d 61 74 63 68 2d 64 61 74 61 0a 20 20 20 20 28 69 66 20 28 73 74 72 | ...(save-match-data.....(if.(str |
| 0a00 | 69 6e 67 2d 6d 61 74 63 68 20 22 5b 20 5c 74 5c 6e 5c 72 5d 2b 5c 5c 27 22 20 73 29 0a 20 20 20 | ing-match."[.\t\n\r]+\\'".s).... |
| 0a20 | 20 20 20 20 20 28 72 65 70 6c 61 63 65 2d 6d 61 74 63 68 20 22 22 20 74 20 74 20 73 29 0a 20 20 | .....(replace-match."".t.t.s)... |
| 0a40 | 20 20 20 20 73 29 29 29 0a 0a 28 64 65 66 75 6e 20 73 2d 74 72 69 6d 20 28 73 29 0a 20 20 22 52 | ....s)))..(defun.s-trim.(s)..."R |
| 0a60 | 65 6d 6f 76 65 20 77 68 69 74 65 73 70 61 63 65 20 61 74 20 74 68 65 20 62 65 67 69 6e 6e 69 6e | emove.whitespace.at.the.beginnin |
| 0a80 | 67 20 61 6e 64 20 65 6e 64 20 6f 66 20 53 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 70 75 72 | g.and.end.of.S."...(declare.(pur |
| 0aa0 | 65 20 74 29 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 73 2d | e.t).(side-effect-free.t))...(s- |
| 0ac0 | 74 72 69 6d 2d 6c 65 66 74 20 28 73 2d 74 72 69 6d 2d 72 69 67 68 74 20 73 29 29 29 0a 0a 28 64 | trim-left.(s-trim-right.s)))..(d |
| 0ae0 | 65 66 75 6e 20 73 2d 63 6f 6c 6c 61 70 73 65 2d 77 68 69 74 65 73 70 61 63 65 20 28 73 29 0a 20 | efun.s-collapse-whitespace.(s).. |
| 0b00 | 20 22 43 6f 6e 76 65 72 74 20 61 6c 6c 20 61 64 6a 61 63 65 6e 74 20 77 68 69 74 65 73 70 61 63 | ."Convert.all.adjacent.whitespac |
| 0b20 | 65 20 63 68 61 72 61 63 74 65 72 73 20 74 6f 20 61 20 73 69 6e 67 6c 65 20 73 70 61 63 65 2e 22 | e.characters.to.a.single.space." |
| 0b40 | 0a 20 20 28 64 65 63 6c 61 72 65 20 28 70 75 72 65 20 74 29 20 28 73 69 64 65 2d 65 66 66 65 63 | ...(declare.(pure.t).(side-effec |
| 0b60 | 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 72 65 70 6c 61 63 65 2d 72 65 67 65 78 70 2d 69 6e 2d | t-free.t))...(replace-regexp-in- |
| 0b80 | 73 74 72 69 6e 67 20 22 5b 20 5c 74 5c 6e 5c 72 5d 2b 22 20 22 20 22 20 73 29 29 0a 0a 28 64 65 | string."[.\t\n\r]+".".".s))..(de |
| 0ba0 | 66 75 6e 20 73 2d 75 6e 69 6e 64 65 6e 74 20 28 73 20 26 6f 70 74 69 6f 6e 61 6c 20 62 6f 6c 29 | fun.s-unindent.(s.&optional.bol) |
| 0bc0 | 0a 20 20 22 55 6e 69 6e 64 65 6e 74 20 53 20 77 68 69 63 68 20 68 61 73 20 42 4f 4c 20 28 62 65 | ..."Unindent.S.which.has.BOL.(be |
| 0be0 | 67 69 6e 6e 69 6e 67 20 6f 66 20 6c 69 6e 65 29 20 69 6e 64 69 63 61 74 6f 72 73 2e 0a 42 4f 4c | ginning.of.line).indicators..BOL |
| 0c00 | 20 77 69 6c 6c 20 64 65 66 61 75 6c 74 20 74 6f 20 70 69 70 65 2e 20 59 6f 75 20 63 61 6e 20 6f | .will.default.to.pipe..You.can.o |
| 0c20 | 70 74 69 6f 6e 61 6c 6c 79 20 73 75 70 70 6c 79 20 79 6f 75 72 20 6f 77 6e 2e 22 0a 20 20 28 64 | ptionally.supply.your.own."...(d |
| 0c40 | 65 63 6c 61 72 65 20 28 70 75 72 65 20 74 29 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 | eclare.(pure.t).(side-effect-fre |
| 0c60 | 65 20 74 29 29 0a 20 20 28 6c 65 74 20 28 28 63 61 73 65 2d 66 6f 6c 64 2d 73 65 61 72 63 68 20 | e.t))...(let.((case-fold-search. |
| 0c80 | 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 28 62 6f 6c 20 28 6f 72 20 62 6f 6c 20 22 7c 22 29 29 29 | nil).........(bol.(or.bol."|"))) |
| 0ca0 | 0a 20 20 20 28 73 2d 72 65 70 6c 61 63 65 2d 72 65 67 65 78 70 20 28 63 6f 6e 63 61 74 20 22 5e | ....(s-replace-regexp.(concat."^ |
| 0cc0 | 5b 5b 3a 73 70 61 63 65 3a 5d 5d 2a 22 20 28 72 65 67 65 78 70 2d 71 75 6f 74 65 20 62 6f 6c 29 | [[:space:]]*".(regexp-quote.bol) |
| 0ce0 | 29 20 22 22 20 73 29 29 29 0a 0a 28 64 65 66 75 6e 20 73 2d 73 70 6c 69 74 20 28 73 65 70 61 72 | )."".s)))..(defun.s-split.(separ |
| 0d00 | 61 74 6f 72 20 73 20 26 6f 70 74 69 6f 6e 61 6c 20 6f 6d 69 74 2d 6e 75 6c 6c 73 29 0a 20 20 22 | ator.s.&optional.omit-nulls)..." |
| 0d20 | 53 70 6c 69 74 20 53 20 69 6e 74 6f 20 73 75 62 73 74 72 69 6e 67 73 20 62 6f 75 6e 64 65 64 20 | Split.S.into.substrings.bounded. |
| 0d40 | 62 79 20 6d 61 74 63 68 65 73 20 66 6f 72 20 72 65 67 65 78 70 20 53 45 50 41 52 41 54 4f 52 2e | by.matches.for.regexp.SEPARATOR. |
| 0d60 | 0a 49 66 20 4f 4d 49 54 2d 4e 55 4c 4c 53 20 69 73 20 6e 6f 6e 2d 6e 69 6c 2c 20 7a 65 72 6f 2d | .If.OMIT-NULLS.is.non-nil,.zero- |
| 0d80 | 6c 65 6e 67 74 68 20 73 75 62 73 74 72 69 6e 67 73 20 61 72 65 20 6f 6d 69 74 74 65 64 2e 0a 0a | length.substrings.are.omitted... |
| 0da0 | 54 68 69 73 20 69 73 20 61 20 73 69 6d 70 6c 65 20 77 72 61 70 70 65 72 20 61 72 6f 75 6e 64 20 | This.is.a.simple.wrapper.around. |
| 0dc0 | 74 68 65 20 62 75 69 6c 74 2d 69 6e 20 60 73 70 6c 69 74 2d 73 74 72 69 6e 67 27 2e 22 0a 20 20 | the.built-in.`split-string'."... |
| 0de0 | 28 64 65 63 6c 61 72 65 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20 | (declare.(side-effect-free.t)).. |
| 0e00 | 20 28 73 61 76 65 2d 6d 61 74 63 68 2d 64 61 74 61 0a 20 20 20 20 28 73 70 6c 69 74 2d 73 74 72 | .(save-match-data.....(split-str |
| 0e20 | 69 6e 67 20 73 20 73 65 70 61 72 61 74 6f 72 20 6f 6d 69 74 2d 6e 75 6c 6c 73 29 29 29 0a 0a 28 | ing.s.separator.omit-nulls)))..( |
| 0e40 | 64 65 66 75 6e 20 73 2d 73 70 6c 69 74 2d 75 70 2d 74 6f 20 28 73 65 70 61 72 61 74 6f 72 20 73 | defun.s-split-up-to.(separator.s |
| 0e60 | 20 6e 20 26 6f 70 74 69 6f 6e 61 6c 20 6f 6d 69 74 2d 6e 75 6c 6c 73 29 0a 20 20 22 53 70 6c 69 | .n.&optional.omit-nulls)..."Spli |
| 0e80 | 74 20 53 20 75 70 20 74 6f 20 4e 20 74 69 6d 65 73 20 69 6e 74 6f 20 73 75 62 73 74 72 69 6e 67 | t.S.up.to.N.times.into.substring |
| 0ea0 | 73 20 62 6f 75 6e 64 65 64 20 62 79 20 6d 61 74 63 68 65 73 20 66 6f 72 20 72 65 67 65 78 70 20 | s.bounded.by.matches.for.regexp. |
| 0ec0 | 53 45 50 41 52 41 54 4f 52 2e 0a 0a 49 66 20 4f 4d 49 54 2d 4e 55 4c 4c 53 20 69 73 20 6e 6f 6e | SEPARATOR...If.OMIT-NULLS.is.non |
| 0ee0 | 2d 6e 69 6c 2c 20 7a 65 72 6f 2d 6c 65 6e 67 74 68 20 73 75 62 73 74 72 69 6e 67 73 20 61 72 65 | -nil,.zero-length.substrings.are |
| 0f00 | 20 6f 6d 69 74 74 65 64 2e 0a 0a 53 65 65 20 61 6c 73 6f 20 60 73 2d 73 70 6c 69 74 27 2e 22 0a | .omitted...See.also.`s-split'.". |
| 0f20 | 20 20 28 64 65 63 6c 61 72 65 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 | ..(declare.(side-effect-free.t)) |
| 0f40 | 0a 20 20 28 73 61 76 65 2d 6d 61 74 63 68 2d 64 61 74 61 0a 20 20 20 20 28 6c 65 74 20 28 28 6f | ...(save-match-data.....(let.((o |
| 0f60 | 70 20 30 29 0a 20 20 20 20 20 20 20 20 20 20 28 72 20 6e 69 6c 29 29 0a 20 20 20 20 20 20 28 77 | p.0)...........(r.nil)).......(w |
| 0f80 | 69 74 68 2d 74 65 6d 70 2d 62 75 66 66 65 72 0a 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 | ith-temp-buffer.........(insert. |
| 0fa0 | 73 29 0a 20 20 20 20 20 20 20 20 28 73 65 74 71 20 6f 70 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 | s).........(setq.op.(goto-char.( |
| 0fc0 | 70 6f 69 6e 74 2d 6d 69 6e 29 29 29 0a 20 20 20 20 20 20 20 20 28 77 68 69 6c 65 20 28 61 6e 64 | point-min))).........(while.(and |
| 0fe0 | 20 28 72 65 2d 73 65 61 72 63 68 2d 66 6f 72 77 61 72 64 20 73 65 70 61 72 61 74 6f 72 20 6e 69 | .(re-search-forward.separator.ni |
| 1000 | 6c 20 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 3c 20 30 20 6e 29 | l.t).....................(<.0.n) |
| 1020 | 29 0a 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 73 75 62 20 28 62 75 66 66 65 72 2d 73 | )...........(let.((sub.(buffer-s |
| 1040 | 75 62 73 74 72 69 6e 67 20 6f 70 20 28 6d 61 74 63 68 2d 62 65 67 69 6e 6e 69 6e 67 20 30 29 29 | ubstring.op.(match-beginning.0)) |
| 1060 | 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 61 6e 64 20 6f 6d 69 74 | )).............(unless.(and.omit |
| 1080 | 2d 6e 75 6c 6c 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | -nulls.......................... |
| 10a0 | 28 65 71 75 61 6c 20 73 75 62 20 22 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 | (equal.sub.""))...............(p |
| 10c0 | 75 73 68 20 73 75 62 20 72 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 6f 70 20 | ush.sub.r)))...........(setq.op. |
| 10e0 | 28 67 6f 74 6f 2d 63 68 61 72 20 28 6d 61 74 63 68 2d 65 6e 64 20 30 29 29 29 0a 20 20 20 20 20 | (goto-char.(match-end.0)))...... |
| 1100 | 20 20 20 20 20 28 73 65 74 71 20 6e 20 28 31 2d 20 6e 29 29 29 0a 20 20 20 20 20 20 20 20 28 6c | .....(setq.n.(1-.n))).........(l |
| 1120 | 65 74 20 28 28 73 75 62 20 28 62 75 66 66 65 72 2d 73 75 62 73 74 72 69 6e 67 20 6f 70 20 28 70 | et.((sub.(buffer-substring.op.(p |
| 1140 | 6f 69 6e 74 2d 6d 61 78 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 | oint-max))))...........(unless.( |
| 1160 | 61 6e 64 20 6f 6d 69 74 2d 6e 75 6c 6c 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | and.omit-nulls.................. |
| 1180 | 20 20 20 20 20 20 28 65 71 75 61 6c 20 73 75 62 20 22 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 | ......(equal.sub.""))........... |
| 11a0 | 20 20 28 70 75 73 68 20 73 75 62 20 72 29 29 29 29 0a 20 20 20 20 20 20 28 6e 72 65 76 65 72 73 | ..(push.sub.r)))).......(nrevers |
| 11c0 | 65 20 72 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 73 2d 6c 69 6e 65 73 20 28 73 29 0a 20 20 22 53 | e.r))))..(defun.s-lines.(s)..."S |
| 11e0 | 70 6c 69 74 73 20 53 20 69 6e 74 6f 20 61 20 6c 69 73 74 20 6f 66 20 73 74 72 69 6e 67 73 20 6f | plits.S.into.a.list.of.strings.o |
| 1200 | 6e 20 6e 65 77 6c 69 6e 65 20 63 68 61 72 61 63 74 65 72 73 2e 22 0a 20 20 28 64 65 63 6c 61 72 | n.newline.characters."...(declar |
| 1220 | 65 20 28 70 75 72 65 20 74 29 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 | e.(pure.t).(side-effect-free.t)) |
| 1240 | 0a 20 20 28 73 2d 73 70 6c 69 74 20 22 5c 5c 28 5c 72 5c 6e 5c 5c 7c 5b 5c 6e 5c 72 5d 5c 5c 29 | ...(s-split."\\(\r\n\\|[\n\r]\\) |
| 1260 | 22 20 73 29 29 0a 0a 28 64 65 66 75 6e 20 73 2d 6a 6f 69 6e 20 28 73 65 70 61 72 61 74 6f 72 20 | ".s))..(defun.s-join.(separator. |
| 1280 | 73 74 72 69 6e 67 73 29 0a 20 20 22 4a 6f 69 6e 20 61 6c 6c 20 74 68 65 20 73 74 72 69 6e 67 73 | strings)..."Join.all.the.strings |
| 12a0 | 20 69 6e 20 53 54 52 49 4e 47 53 20 77 69 74 68 20 53 45 50 41 52 41 54 4f 52 20 69 6e 20 62 65 | .in.STRINGS.with.SEPARATOR.in.be |
| 12c0 | 74 77 65 65 6e 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 70 75 72 65 20 74 29 20 28 73 69 64 | tween."...(declare.(pure.t).(sid |
| 12e0 | 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 6d 61 70 63 6f 6e 63 61 74 20 27 | e-effect-free.t))...(mapconcat.' |
| 1300 | 69 64 65 6e 74 69 74 79 20 73 74 72 69 6e 67 73 20 73 65 70 61 72 61 74 6f 72 29 29 0a 0a 28 64 | identity.strings.separator))..(d |
| 1320 | 65 66 75 6e 20 73 2d 63 6f 6e 63 61 74 20 28 26 72 65 73 74 20 73 74 72 69 6e 67 73 29 0a 20 20 | efun.s-concat.(&rest.strings)... |
| 1340 | 22 4a 6f 69 6e 20 61 6c 6c 20 74 68 65 20 73 74 72 69 6e 67 20 61 72 67 75 6d 65 6e 74 73 20 69 | "Join.all.the.string.arguments.i |
| 1360 | 6e 74 6f 20 6f 6e 65 20 73 74 72 69 6e 67 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 70 75 72 | nto.one.string."...(declare.(pur |
| 1380 | 65 20 74 29 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 61 70 | e.t).(side-effect-free.t))...(ap |
| 13a0 | 70 6c 79 20 27 63 6f 6e 63 61 74 20 73 74 72 69 6e 67 73 29 29 0a 0a 28 64 65 66 75 6e 20 73 2d | ply.'concat.strings))..(defun.s- |
| 13c0 | 70 72 65 70 65 6e 64 20 28 70 72 65 66 69 78 20 73 29 0a 20 20 22 43 6f 6e 63 61 74 65 6e 61 74 | prepend.(prefix.s)..."Concatenat |
| 13e0 | 65 20 50 52 45 46 49 58 20 61 6e 64 20 53 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 70 75 72 | e.PREFIX.and.S."...(declare.(pur |
| 1400 | 65 20 74 29 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 63 6f | e.t).(side-effect-free.t))...(co |
| 1420 | 6e 63 61 74 20 70 72 65 66 69 78 20 73 29 29 0a 0a 28 64 65 66 75 6e 20 73 2d 61 70 70 65 6e 64 | ncat.prefix.s))..(defun.s-append |
| 1440 | 20 28 73 75 66 66 69 78 20 73 29 0a 20 20 22 43 6f 6e 63 61 74 65 6e 61 74 65 20 53 20 61 6e 64 | .(suffix.s)..."Concatenate.S.and |
| 1460 | 20 53 55 46 46 49 58 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 70 75 72 65 20 74 29 20 28 73 | .SUFFIX."...(declare.(pure.t).(s |
| 1480 | 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 63 6f 6e 63 61 74 20 73 20 | ide-effect-free.t))...(concat.s. |
| 14a0 | 73 75 66 66 69 78 29 29 0a 0a 28 64 65 66 75 6e 20 73 2d 73 70 6c 69 63 65 20 28 6e 65 65 64 6c | suffix))..(defun.s-splice.(needl |
| 14c0 | 65 20 6e 20 73 29 0a 20 20 22 53 70 6c 69 63 65 20 4e 45 45 44 4c 45 20 69 6e 74 6f 20 53 20 61 | e.n.s)..."Splice.NEEDLE.into.S.a |
| 14e0 | 74 20 70 6f 73 69 74 69 6f 6e 20 4e 2e 0a 30 20 69 73 20 74 68 65 20 62 65 67 69 6e 6e 69 6e 67 | t.position.N..0.is.the.beginning |
| 1500 | 20 6f 66 20 74 68 65 20 73 74 72 69 6e 67 2c 20 2d 31 20 69 73 20 74 68 65 20 65 6e 64 2e 22 0a | .of.the.string,.-1.is.the.end.". |
| 1520 | 20 20 28 69 66 20 28 3c 20 6e 20 30 29 0a 20 20 20 20 20 20 28 6c 65 74 20 28 28 6c 65 66 74 20 | ..(if.(<.n.0).......(let.((left. |
| 1540 | 28 73 75 62 73 74 72 69 6e 67 20 73 20 30 20 28 2b 20 31 20 6e 20 28 6c 65 6e 67 74 68 20 73 29 | (substring.s.0.(+.1.n.(length.s) |
| 1560 | 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 72 69 67 68 74 20 28 73 2d 72 69 67 68 74 20 | ))).............(right.(s-right. |
| 1580 | 28 2d 20 2d 31 20 6e 29 20 73 29 29 29 0a 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 6c 65 | (-.-1.n).s))).........(concat.le |
| 15a0 | 66 74 20 6e 65 65 64 6c 65 20 72 69 67 68 74 29 29 0a 20 20 20 20 28 6c 65 74 20 28 28 6c 65 66 | ft.needle.right)).....(let.((lef |
| 15c0 | 74 20 28 73 2d 6c 65 66 74 20 6e 20 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 72 69 67 68 74 | t.(s-left.n.s))...........(right |
| 15e0 | 20 28 73 75 62 73 74 72 69 6e 67 20 73 20 6e 20 28 6c 65 6e 67 74 68 20 73 29 29 29 29 0a 20 20 | .(substring.s.n.(length.s))))... |
| 1600 | 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 6c 65 66 74 20 6e 65 65 64 6c 65 20 72 69 67 68 74 29 | ......(concat.left.needle.right) |
| 1620 | 29 29 29 0a 0a 0a 28 64 65 66 75 6e 20 73 2d 72 65 70 65 61 74 20 28 6e 75 6d 20 73 29 0a 20 20 | )))...(defun.s-repeat.(num.s)... |
| 1640 | 22 4d 61 6b 65 20 61 20 73 74 72 69 6e 67 20 6f 66 20 53 20 72 65 70 65 61 74 65 64 20 4e 55 4d | "Make.a.string.of.S.repeated.NUM |
| 1660 | 20 74 69 6d 65 73 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 70 75 72 65 20 74 29 20 28 73 69 | .times."...(declare.(pure.t).(si |
| 1680 | 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 6c 65 74 20 28 73 73 29 0a 20 | de-effect-free.t))...(let.(ss).. |
| 16a0 | 20 20 20 28 77 68 69 6c 65 20 28 3e 20 6e 75 6d 20 30 29 0a 20 20 20 20 20 20 28 73 65 74 71 20 | ...(while.(>.num.0).......(setq. |
| 16c0 | 73 73 20 28 63 6f 6e 73 20 73 20 73 73 29 29 0a 20 20 20 20 20 20 28 73 65 74 71 20 6e 75 6d 20 | ss.(cons.s.ss)).......(setq.num. |
| 16e0 | 28 31 2d 20 6e 75 6d 29 29 29 0a 20 20 20 20 28 61 70 70 6c 79 20 27 63 6f 6e 63 61 74 20 73 73 | (1-.num))).....(apply.'concat.ss |
| 1700 | 29 29 29 0a 0a 28 64 65 66 75 6e 20 73 2d 63 68 6f 70 2d 73 75 66 66 69 78 20 28 73 75 66 66 69 | )))..(defun.s-chop-suffix.(suffi |
| 1720 | 78 20 73 29 0a 20 20 22 52 65 6d 6f 76 65 20 53 55 46 46 49 58 20 69 66 20 69 74 20 69 73 20 61 | x.s)..."Remove.SUFFIX.if.it.is.a |
| 1740 | 74 20 65 6e 64 20 6f 66 20 53 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 70 75 72 65 20 74 29 | t.end.of.S."...(declare.(pure.t) |
| 1760 | 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 6c 65 74 20 28 28 | .(side-effect-free.t))...(let.(( |
| 1780 | 70 6f 73 20 28 2d 20 28 6c 65 6e 67 74 68 20 73 75 66 66 69 78 29 29 29 29 0a 20 20 20 20 28 69 | pos.(-.(length.suffix)))).....(i |
| 17a0 | 66 20 28 61 6e 64 20 28 3e 3d 20 28 6c 65 6e 67 74 68 20 73 29 20 28 6c 65 6e 67 74 68 20 73 75 | f.(and.(>=.(length.s).(length.su |
| 17c0 | 66 66 69 78 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 74 72 69 6e 67 3d 20 73 75 66 | ffix))..............(string=.suf |
| 17e0 | 66 69 78 20 28 73 75 62 73 74 72 69 6e 67 20 73 20 70 6f 73 29 29 29 0a 20 20 20 20 20 20 20 20 | fix.(substring.s.pos)))......... |
| 1800 | 28 73 75 62 73 74 72 69 6e 67 20 73 20 30 20 70 6f 73 29 0a 20 20 20 20 20 20 73 29 29 29 0a 0a | (substring.s.0.pos).......s))).. |
| 1820 | 28 64 65 66 75 6e 20 73 2d 63 68 6f 70 2d 73 75 66 66 69 78 65 73 20 28 73 75 66 66 69 78 65 73 | (defun.s-chop-suffixes.(suffixes |
| 1840 | 20 73 29 0a 20 20 22 52 65 6d 6f 76 65 20 53 55 46 46 49 58 45 53 20 6f 6e 65 20 62 79 20 6f 6e | .s)..."Remove.SUFFIXES.one.by.on |
| 1860 | 65 20 69 6e 20 6f 72 64 65 72 2c 20 69 66 20 74 68 65 79 20 61 72 65 20 61 74 20 74 68 65 20 65 | e.in.order,.if.they.are.at.the.e |
| 1880 | 6e 64 20 6f 66 20 53 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 70 75 72 65 20 74 29 20 28 73 | nd.of.S."...(declare.(pure.t).(s |
| 18a0 | 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 77 68 69 6c 65 20 73 75 66 | ide-effect-free.t))...(while.suf |
| 18c0 | 66 69 78 65 73 0a 20 20 20 20 28 73 65 74 71 20 73 20 28 73 2d 63 68 6f 70 2d 73 75 66 66 69 78 | fixes.....(setq.s.(s-chop-suffix |
| 18e0 | 20 28 63 61 72 20 73 75 66 66 69 78 65 73 29 20 73 29 29 0a 20 20 20 20 28 73 65 74 71 20 73 75 | .(car.suffixes).s)).....(setq.su |
| 1900 | 66 66 69 78 65 73 20 28 63 64 72 20 73 75 66 66 69 78 65 73 29 29 29 0a 20 20 73 29 0a 0a 28 64 | ffixes.(cdr.suffixes)))...s)..(d |
| 1920 | 65 66 75 6e 20 73 2d 63 68 6f 70 2d 70 72 65 66 69 78 20 28 70 72 65 66 69 78 20 73 29 0a 20 20 | efun.s-chop-prefix.(prefix.s)... |
| 1940 | 22 52 65 6d 6f 76 65 20 50 52 45 46 49 58 20 69 66 20 69 74 20 69 73 20 61 74 20 74 68 65 20 73 | "Remove.PREFIX.if.it.is.at.the.s |
| 1960 | 74 61 72 74 20 6f 66 20 53 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 70 75 72 65 20 74 29 20 | tart.of.S."...(declare.(pure.t). |
| 1980 | 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 6c 65 74 20 28 28 70 | (side-effect-free.t))...(let.((p |
| 19a0 | 6f 73 20 28 6c 65 6e 67 74 68 20 70 72 65 66 69 78 29 29 29 0a 20 20 20 20 28 69 66 20 28 61 6e | os.(length.prefix))).....(if.(an |
| 19c0 | 64 20 28 3e 3d 20 28 6c 65 6e 67 74 68 20 73 29 20 28 6c 65 6e 67 74 68 20 70 72 65 66 69 78 29 | d.(>=.(length.s).(length.prefix) |
| 19e0 | 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 74 72 69 6e 67 3d 20 70 72 65 66 69 78 20 28 | )..............(string=.prefix.( |
| 1a00 | 73 75 62 73 74 72 69 6e 67 20 73 20 30 20 70 6f 73 29 29 29 0a 20 20 20 20 20 20 20 20 28 73 75 | substring.s.0.pos))).........(su |
| 1a20 | 62 73 74 72 69 6e 67 20 73 20 70 6f 73 29 0a 20 20 20 20 20 20 73 29 29 29 0a 0a 28 64 65 66 75 | bstring.s.pos).......s)))..(defu |
| 1a40 | 6e 20 73 2d 63 68 6f 70 2d 70 72 65 66 69 78 65 73 20 28 70 72 65 66 69 78 65 73 20 73 29 0a 20 | n.s-chop-prefixes.(prefixes.s).. |
| 1a60 | 20 22 52 65 6d 6f 76 65 20 50 52 45 46 49 58 45 53 20 6f 6e 65 20 62 79 20 6f 6e 65 20 69 6e 20 | ."Remove.PREFIXES.one.by.one.in. |
| 1a80 | 6f 72 64 65 72 2c 20 69 66 20 74 68 65 79 20 61 72 65 20 61 74 20 74 68 65 20 73 74 61 72 74 20 | order,.if.they.are.at.the.start. |
| 1aa0 | 6f 66 20 53 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 70 75 72 65 20 74 29 20 28 73 69 64 65 | of.S."...(declare.(pure.t).(side |
| 1ac0 | 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 77 68 69 6c 65 20 70 72 65 66 69 78 | -effect-free.t))...(while.prefix |
| 1ae0 | 65 73 0a 20 20 20 20 28 73 65 74 71 20 73 20 28 73 2d 63 68 6f 70 2d 70 72 65 66 69 78 20 28 63 | es.....(setq.s.(s-chop-prefix.(c |
| 1b00 | 61 72 20 70 72 65 66 69 78 65 73 29 20 73 29 29 0a 20 20 20 20 28 73 65 74 71 20 70 72 65 66 69 | ar.prefixes).s)).....(setq.prefi |
| 1b20 | 78 65 73 20 28 63 64 72 20 70 72 65 66 69 78 65 73 29 29 29 0a 20 20 73 29 0a 0a 28 64 65 66 75 | xes.(cdr.prefixes)))...s)..(defu |
| 1b40 | 6e 20 73 2d 73 68 61 72 65 64 2d 73 74 61 72 74 20 28 73 31 20 73 32 29 0a 20 20 22 52 65 74 75 | n.s-shared-start.(s1.s2)..."Retu |
| 1b60 | 72 6e 73 20 74 68 65 20 6c 6f 6e 67 65 73 74 20 70 72 65 66 69 78 20 53 31 20 61 6e 64 20 53 32 | rns.the.longest.prefix.S1.and.S2 |
| 1b80 | 20 68 61 76 65 20 69 6e 20 63 6f 6d 6d 6f 6e 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 70 75 | .have.in.common."...(declare.(pu |
| 1ba0 | 72 65 20 74 29 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 6c | re.t).(side-effect-free.t))...(l |
| 1bc0 | 65 74 20 28 28 63 6d 70 20 28 63 6f 6d 70 61 72 65 2d 73 74 72 69 6e 67 73 20 73 31 20 30 20 28 | et.((cmp.(compare-strings.s1.0.( |
| 1be0 | 6c 65 6e 67 74 68 20 73 31 29 20 73 32 20 30 20 28 6c 65 6e 67 74 68 20 73 32 29 29 29 29 0a 20 | length.s1).s2.0.(length.s2)))).. |
| 1c00 | 20 20 20 28 69 66 20 28 65 71 20 63 6d 70 20 74 29 20 73 31 20 28 73 75 62 73 74 72 69 6e 67 20 | ...(if.(eq.cmp.t).s1.(substring. |
| 1c20 | 73 31 20 30 20 28 31 2d 20 28 61 62 73 20 63 6d 70 29 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 | s1.0.(1-.(abs.cmp))))))..(defun. |
| 1c40 | 73 2d 73 68 61 72 65 64 2d 65 6e 64 20 28 73 31 20 73 32 29 0a 20 20 22 52 65 74 75 72 6e 73 20 | s-shared-end.(s1.s2)..."Returns. |
| 1c60 | 74 68 65 20 6c 6f 6e 67 65 73 74 20 73 75 66 66 69 78 20 53 31 20 61 6e 64 20 53 32 20 68 61 76 | the.longest.suffix.S1.and.S2.hav |
| 1c80 | 65 20 69 6e 20 63 6f 6d 6d 6f 6e 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 70 75 72 65 20 74 | e.in.common."...(declare.(pure.t |
| 1ca0 | 29 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 6c 65 74 2a 20 | ).(side-effect-free.t))...(let*. |
| 1cc0 | 28 28 6c 31 20 28 6c 65 6e 67 74 68 20 73 31 29 29 0a 20 20 20 20 20 20 20 20 20 28 6c 32 20 28 | ((l1.(length.s1))..........(l2.( |
| 1ce0 | 6c 65 6e 67 74 68 20 73 32 29 29 0a 20 20 20 20 20 20 20 20 20 28 73 65 61 72 63 68 2d 6c 65 6e | length.s2))..........(search-len |
| 1d00 | 67 74 68 20 28 6d 69 6e 20 6c 31 20 6c 32 29 29 0a 20 20 20 20 20 20 20 20 20 28 69 20 30 29 29 | gth.(min.l1.l2))..........(i.0)) |
| 1d20 | 0a 20 20 20 20 28 77 68 69 6c 65 20 28 61 6e 64 20 28 3c 20 69 20 73 65 61 72 63 68 2d 6c 65 6e | .....(while.(and.(<.i.search-len |
| 1d40 | 67 74 68 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 3d 20 28 61 72 65 66 20 73 31 | gth).................(=.(aref.s1 |
| 1d60 | 20 28 2d 20 6c 31 20 69 20 31 29 29 20 28 61 72 65 66 20 73 32 20 28 2d 20 6c 32 20 69 20 31 29 | .(-.l1.i.1)).(aref.s2.(-.l2.i.1) |
| 1d80 | 29 29 29 0a 20 20 20 20 20 20 28 73 65 74 71 20 69 20 28 31 2b 20 69 29 29 29 0a 20 20 20 20 3b | ))).......(setq.i.(1+.i))).....; |
| 1da0 | 3b 20 49 66 20 49 20 69 73 20 30 2c 20 74 68 65 6e 20 69 74 20 6d 65 61 6e 73 20 74 68 61 74 20 | ;.If.I.is.0,.then.it.means.that. |
| 1dc0 | 74 68 65 72 65 27 73 20 6e 6f 20 63 6f 6d 6d 6f 6e 20 73 75 66 66 69 78 20 62 65 74 77 65 65 6e | there's.no.common.suffix.between |
| 1de0 | 0a 20 20 20 20 3b 3b 20 53 31 20 61 6e 64 20 53 32 2e 0a 20 20 20 20 3b 3b 0a 20 20 20 20 3b 3b | .....;;.S1.and.S2......;;.....;; |
| 1e00 | 20 48 6f 77 65 76 65 72 2c 20 73 69 6e 63 65 20 28 73 75 62 73 74 72 69 6e 67 20 73 20 28 2d 20 | .However,.since.(substring.s.(-. |
| 1e20 | 30 29 29 20 77 69 6c 6c 20 72 65 74 75 72 6e 20 74 68 65 20 77 68 6f 6c 65 0a 20 20 20 20 3b 3b | 0)).will.return.the.whole.....;; |
| 1e40 | 20 73 74 72 69 6e 67 2c 20 60 73 2d 73 68 61 72 65 64 2d 65 6e 64 27 20 73 68 6f 75 6c 64 20 73 | .string,.`s-shared-end'.should.s |
| 1e60 | 69 6d 70 6c 79 20 72 65 74 75 72 6e 20 74 68 65 20 65 6d 70 74 79 20 73 74 72 69 6e 67 0a 20 20 | imply.return.the.empty.string... |
| 1e80 | 20 20 3b 3b 20 77 68 65 6e 20 49 20 69 73 20 30 2e 0a 20 20 20 20 28 69 66 20 28 7a 65 72 6f 70 | ..;;.when.I.is.0......(if.(zerop |
| 1ea0 | 20 69 29 0a 20 20 20 20 20 20 20 20 22 22 0a 20 20 20 20 20 20 28 73 75 62 73 74 72 69 6e 67 20 | .i)........."".......(substring. |
| 1ec0 | 73 31 20 28 2d 20 69 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 73 2d 63 68 6f 6d 70 20 28 73 29 | s1.(-.i)))))..(defun.s-chomp.(s) |
| 1ee0 | 0a 20 20 22 52 65 6d 6f 76 65 20 6f 6e 65 20 74 72 61 69 6c 69 6e 67 20 60 5c 5c 6e 60 2c 20 60 | ..."Remove.one.trailing.`\\n`,.` |
| 1f00 | 5c 5c 72 60 20 6f 72 20 60 5c 5c 72 5c 5c 6e 60 20 66 72 6f 6d 20 53 2e 22 0a 20 20 28 64 65 63 | \\r`.or.`\\r\\n`.from.S."...(dec |
| 1f20 | 6c 61 72 65 20 28 70 75 72 65 20 74 29 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 | lare.(pure.t).(side-effect-free. |
| 1f40 | 74 29 29 0a 20 20 28 73 2d 63 68 6f 70 2d 73 75 66 66 69 78 65 73 20 27 28 22 5c 6e 22 20 22 5c | t))...(s-chop-suffixes.'("\n"."\ |
| 1f60 | 72 22 29 20 73 29 29 0a 0a 28 64 65 66 75 6e 20 73 2d 74 72 75 6e 63 61 74 65 20 28 6c 65 6e 20 | r").s))..(defun.s-truncate.(len. |
| 1f80 | 73 20 26 6f 70 74 69 6f 6e 61 6c 20 65 6c 6c 69 70 73 69 73 29 0a 20 20 22 49 66 20 53 20 69 73 | s.&optional.ellipsis)..."If.S.is |
| 1fa0 | 20 6c 6f 6e 67 65 72 20 74 68 61 6e 20 4c 45 4e 2c 20 63 75 74 20 69 74 20 64 6f 77 6e 20 61 6e | .longer.than.LEN,.cut.it.down.an |
| 1fc0 | 64 20 61 64 64 20 45 4c 4c 49 50 53 49 53 20 74 6f 20 74 68 65 20 65 6e 64 2e 0a 0a 54 68 65 20 | d.add.ELLIPSIS.to.the.end...The. |
| 1fe0 | 72 65 73 75 6c 74 69 6e 67 20 73 74 72 69 6e 67 2c 20 69 6e 63 6c 75 64 69 6e 67 20 65 6c 6c 69 | resulting.string,.including.elli |
| 2000 | 70 73 69 73 2c 20 77 69 6c 6c 20 62 65 20 4c 45 4e 20 63 68 61 72 61 63 74 65 72 73 0a 6c 6f 6e | psis,.will.be.LEN.characters.lon |
| 2020 | 67 2e 0a 0a 57 68 65 6e 20 6e 6f 74 20 73 70 65 63 69 66 69 65 64 2c 20 45 4c 4c 49 50 53 49 53 | g...When.not.specified,.ELLIPSIS |
| 2040 | 20 64 65 66 61 75 6c 74 73 20 74 6f 20 e2 80 98 2e 2e 2e e2 80 99 2e 22 0a 20 20 28 64 65 63 6c | .defaults.to..........."...(decl |
| 2060 | 61 72 65 20 28 70 75 72 65 20 74 29 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 | are.(pure.t).(side-effect-free.t |
| 2080 | 29 29 0a 20 20 28 75 6e 6c 65 73 73 20 65 6c 6c 69 70 73 69 73 0a 20 20 20 20 28 73 65 74 71 20 | ))...(unless.ellipsis.....(setq. |
| 20a0 | 65 6c 6c 69 70 73 69 73 20 22 2e 2e 2e 22 29 29 0a 20 20 28 69 66 20 28 3e 20 28 6c 65 6e 67 74 | ellipsis."..."))...(if.(>.(lengt |
| 20c0 | 68 20 73 29 20 6c 65 6e 29 0a 20 20 20 20 20 20 28 66 6f 72 6d 61 74 20 22 25 73 25 73 22 20 28 | h.s).len).......(format."%s%s".( |
| 20e0 | 73 75 62 73 74 72 69 6e 67 20 73 20 30 20 28 2d 20 6c 65 6e 20 28 6c 65 6e 67 74 68 20 65 6c 6c | substring.s.0.(-.len.(length.ell |
| 2100 | 69 70 73 69 73 29 29 29 20 65 6c 6c 69 70 73 69 73 29 0a 20 20 20 20 73 29 29 0a 0a 28 64 65 66 | ipsis))).ellipsis).....s))..(def |
| 2120 | 75 6e 20 73 2d 77 6f 72 64 2d 77 72 61 70 20 28 6c 65 6e 20 73 29 0a 20 20 22 49 66 20 53 20 69 | un.s-word-wrap.(len.s)..."If.S.i |
| 2140 | 73 20 6c 6f 6e 67 65 72 20 74 68 61 6e 20 4c 45 4e 2c 20 77 72 61 70 20 74 68 65 20 77 6f 72 64 | s.longer.than.LEN,.wrap.the.word |
| 2160 | 73 20 77 69 74 68 20 6e 65 77 6c 69 6e 65 73 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 73 69 | s.with.newlines."...(declare.(si |
| 2180 | 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 73 61 76 65 2d 6d 61 74 63 68 | de-effect-free.t))...(save-match |
| 21a0 | 2d 64 61 74 61 0a 20 20 20 20 28 77 69 74 68 2d 74 65 6d 70 2d 62 75 66 66 65 72 0a 20 20 20 20 | -data.....(with-temp-buffer..... |
| 21c0 | 20 20 28 69 6e 73 65 72 74 20 73 29 0a 20 20 20 20 20 20 28 6c 65 74 20 28 28 66 69 6c 6c 2d 63 | ..(insert.s).......(let.((fill-c |
| 21e0 | 6f 6c 75 6d 6e 20 6c 65 6e 29 29 0a 20 20 20 20 20 20 20 20 28 66 69 6c 6c 2d 72 65 67 69 6f 6e | olumn.len)).........(fill-region |
| 2200 | 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 29 0a 20 20 20 20 20 | .(point-min).(point-max)))...... |
| 2220 | 20 28 62 75 66 66 65 72 2d 73 75 62 73 74 72 69 6e 67 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 20 28 | .(buffer-substring.(point-min).( |
| 2240 | 70 6f 69 6e 74 2d 6d 61 78 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 73 2d 63 65 6e 74 65 72 20 | point-max)))))..(defun.s-center. |
| 2260 | 28 6c 65 6e 20 73 29 0a 20 20 22 49 66 20 53 20 69 73 20 73 68 6f 72 74 65 72 20 74 68 61 6e 20 | (len.s)..."If.S.is.shorter.than. |
| 2280 | 4c 45 4e 2c 20 70 61 64 20 69 74 20 77 69 74 68 20 73 70 61 63 65 73 20 73 6f 20 69 74 20 69 73 | LEN,.pad.it.with.spaces.so.it.is |
| 22a0 | 20 63 65 6e 74 65 72 65 64 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 70 75 72 65 20 74 29 20 | .centered."...(declare.(pure.t). |
| 22c0 | 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 6c 65 74 20 28 28 65 | (side-effect-free.t))...(let.((e |
| 22e0 | 78 74 72 61 20 28 6d 61 78 20 30 20 28 2d 20 6c 65 6e 20 28 6c 65 6e 67 74 68 20 73 29 29 29 29 | xtra.(max.0.(-.len.(length.s)))) |
| 2300 | 29 0a 20 20 20 20 28 63 6f 6e 63 61 74 0a 20 20 20 20 20 28 6d 61 6b 65 2d 73 74 72 69 6e 67 20 | ).....(concat......(make-string. |
| 2320 | 28 63 65 69 6c 69 6e 67 20 65 78 74 72 61 20 32 29 20 3f 5c 73 29 0a 20 20 20 20 20 73 0a 20 20 | (ceiling.extra.2).?\s)......s... |
| 2340 | 20 20 20 28 6d 61 6b 65 2d 73 74 72 69 6e 67 20 28 66 6c 6f 6f 72 20 65 78 74 72 61 20 32 29 20 | ...(make-string.(floor.extra.2). |
| 2360 | 3f 5c 73 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 73 2d 70 61 64 2d 6c 65 66 74 20 28 6c 65 6e 20 | ?\s))))..(defun.s-pad-left.(len. |
| 2380 | 70 61 64 64 69 6e 67 20 73 29 0a 20 20 22 49 66 20 53 20 69 73 20 73 68 6f 72 74 65 72 20 74 68 | padding.s)..."If.S.is.shorter.th |
| 23a0 | 61 6e 20 4c 45 4e 2c 20 70 61 64 20 69 74 20 77 69 74 68 20 50 41 44 44 49 4e 47 20 6f 6e 20 74 | an.LEN,.pad.it.with.PADDING.on.t |
| 23c0 | 68 65 20 6c 65 66 74 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 70 75 72 65 20 74 29 20 28 73 | he.left."...(declare.(pure.t).(s |
| 23e0 | 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 6c 65 74 20 28 28 65 78 74 | ide-effect-free.t))...(let.((ext |
| 2400 | 72 61 20 28 6d 61 78 20 30 20 28 2d 20 6c 65 6e 20 28 6c 65 6e 67 74 68 20 73 29 29 29 29 29 0a | ra.(max.0.(-.len.(length.s))))). |
| 2420 | 20 20 20 20 28 63 6f 6e 63 61 74 20 28 6d 61 6b 65 2d 73 74 72 69 6e 67 20 65 78 74 72 61 20 28 | ....(concat.(make-string.extra.( |
| 2440 | 73 74 72 69 6e 67 2d 74 6f 2d 63 68 61 72 20 70 61 64 64 69 6e 67 29 29 0a 20 20 20 20 20 20 20 | string-to-char.padding))........ |
| 2460 | 20 20 20 20 20 73 29 29 29 0a 0a 28 64 65 66 75 6e 20 73 2d 70 61 64 2d 72 69 67 68 74 20 28 6c | .....s)))..(defun.s-pad-right.(l |
| 2480 | 65 6e 20 70 61 64 64 69 6e 67 20 73 29 0a 20 20 22 49 66 20 53 20 69 73 20 73 68 6f 72 74 65 72 | en.padding.s)..."If.S.is.shorter |
| 24a0 | 20 74 68 61 6e 20 4c 45 4e 2c 20 70 61 64 20 69 74 20 77 69 74 68 20 50 41 44 44 49 4e 47 20 6f | .than.LEN,.pad.it.with.PADDING.o |
| 24c0 | 6e 20 74 68 65 20 72 69 67 68 74 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 70 75 72 65 20 74 | n.the.right."...(declare.(pure.t |
| 24e0 | 29 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 6c 65 74 20 28 | ).(side-effect-free.t))...(let.( |
| 2500 | 28 65 78 74 72 61 20 28 6d 61 78 20 30 20 28 2d 20 6c 65 6e 20 28 6c 65 6e 67 74 68 20 73 29 29 | (extra.(max.0.(-.len.(length.s)) |
| 2520 | 29 29 29 0a 20 20 20 20 28 63 6f 6e 63 61 74 20 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 6d | ))).....(concat.s.............(m |
| 2540 | 61 6b 65 2d 73 74 72 69 6e 67 20 65 78 74 72 61 20 28 73 74 72 69 6e 67 2d 74 6f 2d 63 68 61 72 | ake-string.extra.(string-to-char |
| 2560 | 20 70 61 64 64 69 6e 67 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 73 2d 6c 65 66 74 20 28 6c 65 | .padding)))))..(defun.s-left.(le |
| 2580 | 6e 20 73 29 0a 20 20 22 52 65 74 75 72 6e 73 20 75 70 20 74 6f 20 74 68 65 20 4c 45 4e 20 66 69 | n.s)..."Returns.up.to.the.LEN.fi |
| 25a0 | 72 73 74 20 63 68 61 72 73 20 6f 66 20 53 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 70 75 72 | rst.chars.of.S."...(declare.(pur |
| 25c0 | 65 20 74 29 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 69 66 | e.t).(side-effect-free.t))...(if |
| 25e0 | 20 28 3e 20 28 6c 65 6e 67 74 68 20 73 29 20 6c 65 6e 29 0a 20 20 20 20 20 20 28 73 75 62 73 74 | .(>.(length.s).len).......(subst |
| 2600 | 72 69 6e 67 20 73 20 30 20 6c 65 6e 29 0a 20 20 20 20 73 29 29 0a 0a 28 64 65 66 75 6e 20 73 2d | ring.s.0.len).....s))..(defun.s- |
| 2620 | 72 69 67 68 74 20 28 6c 65 6e 20 73 29 0a 20 20 22 52 65 74 75 72 6e 73 20 75 70 20 74 6f 20 74 | right.(len.s)..."Returns.up.to.t |
| 2640 | 68 65 20 4c 45 4e 20 6c 61 73 74 20 63 68 61 72 73 20 6f 66 20 53 2e 22 0a 20 20 28 64 65 63 6c | he.LEN.last.chars.of.S."...(decl |
| 2660 | 61 72 65 20 28 70 75 72 65 20 74 29 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 | are.(pure.t).(side-effect-free.t |
| 2680 | 29 29 0a 20 20 28 6c 65 74 20 28 28 6c 20 28 6c 65 6e 67 74 68 20 73 29 29 29 0a 20 20 20 20 28 | ))...(let.((l.(length.s))).....( |
| 26a0 | 69 66 20 28 3e 20 6c 20 6c 65 6e 29 0a 20 20 20 20 20 20 20 20 28 73 75 62 73 74 72 69 6e 67 20 | if.(>.l.len).........(substring. |
| 26c0 | 73 20 28 2d 20 6c 20 6c 65 6e 29 20 6c 29 0a 20 20 20 20 20 20 73 29 29 29 0a 0a 28 64 65 66 75 | s.(-.l.len).l).......s)))..(defu |
| 26e0 | 6e 20 73 2d 63 68 6f 70 2d 6c 65 66 74 20 28 6c 65 6e 20 73 29 0a 20 20 22 52 65 6d 6f 76 65 20 | n.s-chop-left.(len.s)..."Remove. |
| 2700 | 74 68 65 20 66 69 72 73 74 20 4c 45 4e 20 63 68 61 72 73 20 66 72 6f 6d 20 53 2e 22 0a 20 20 28 | the.first.LEN.chars.from.S."...( |
| 2720 | 6c 65 74 20 28 28 6c 20 28 6c 65 6e 67 74 68 20 73 29 29 29 0a 20 20 20 20 28 69 66 20 28 3e 20 | let.((l.(length.s))).....(if.(>. |
| 2740 | 6c 20 6c 65 6e 29 0a 20 20 20 20 20 20 20 20 28 73 75 62 73 74 72 69 6e 67 20 73 20 6c 65 6e 20 | l.len).........(substring.s.len. |
| 2760 | 6c 29 0a 20 20 20 20 20 20 22 22 29 29 29 0a 0a 28 64 65 66 75 6e 20 73 2d 63 68 6f 70 2d 72 69 | l)......."")))..(defun.s-chop-ri |
| 2780 | 67 68 74 20 28 6c 65 6e 20 73 29 0a 20 20 22 52 65 6d 6f 76 65 20 74 68 65 20 6c 61 73 74 20 4c | ght.(len.s)..."Remove.the.last.L |
| 27a0 | 45 4e 20 63 68 61 72 73 20 66 72 6f 6d 20 53 2e 22 0a 20 20 28 6c 65 74 20 28 28 6c 20 28 6c 65 | EN.chars.from.S."...(let.((l.(le |
| 27c0 | 6e 67 74 68 20 73 29 29 29 0a 20 20 20 20 28 69 66 20 28 3e 20 6c 20 6c 65 6e 29 0a 20 20 20 20 | ngth.s))).....(if.(>.l.len)..... |
| 27e0 | 20 20 20 20 28 73 75 62 73 74 72 69 6e 67 20 73 20 30 20 28 2d 20 6c 20 6c 65 6e 29 29 0a 20 20 | ....(substring.s.0.(-.l.len))... |
| 2800 | 20 20 20 20 22 22 29 29 29 0a 0a 28 64 65 66 75 6e 20 73 2d 65 6e 64 73 2d 77 69 74 68 3f 20 28 | ...."")))..(defun.s-ends-with?.( |
| 2820 | 73 75 66 66 69 78 20 73 20 26 6f 70 74 69 6f 6e 61 6c 20 69 67 6e 6f 72 65 2d 63 61 73 65 29 0a | suffix.s.&optional.ignore-case). |
| 2840 | 20 20 22 44 6f 65 73 20 53 20 65 6e 64 20 77 69 74 68 20 53 55 46 46 49 58 3f 0a 0a 49 66 20 49 | .."Does.S.end.with.SUFFIX?..If.I |
| 2860 | 47 4e 4f 52 45 2d 43 41 53 45 20 69 73 20 6e 6f 6e 2d 6e 69 6c 2c 20 74 68 65 20 63 6f 6d 70 61 | GNORE-CASE.is.non-nil,.the.compa |
| 2880 | 72 69 73 6f 6e 20 69 73 20 64 6f 6e 65 20 77 69 74 68 6f 75 74 20 70 61 79 69 6e 67 0a 61 74 74 | rison.is.done.without.paying.att |
| 28a0 | 65 6e 74 69 6f 6e 20 74 6f 20 63 61 73 65 20 64 69 66 66 65 72 65 6e 63 65 73 2e 0a 0a 41 6c 69 | ention.to.case.differences...Ali |
| 28c0 | 61 73 3a 20 60 73 2d 73 75 66 66 69 78 3f 27 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 70 75 72 | as:.`s-suffix?'"...(declare.(pur |
| 28e0 | 65 20 74 29 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 6c 65 | e.t).(side-effect-free.t))...(le |
| 2900 | 74 20 28 28 73 74 61 72 74 2d 70 6f 73 20 28 2d 20 28 6c 65 6e 67 74 68 20 73 29 20 28 6c 65 6e | t.((start-pos.(-.(length.s).(len |
| 2920 | 67 74 68 20 73 75 66 66 69 78 29 29 29 29 0a 20 20 20 20 28 61 6e 64 20 28 3e 3d 20 73 74 61 72 | gth.suffix)))).....(and.(>=.star |
| 2940 | 74 2d 70 6f 73 20 30 29 0a 20 20 20 20 20 20 20 20 20 28 65 71 20 74 20 28 63 6f 6d 70 61 72 65 | t-pos.0)..........(eq.t.(compare |
| 2960 | 2d 73 74 72 69 6e 67 73 20 73 75 66 66 69 78 20 6e 69 6c 20 6e 69 6c 0a 20 20 20 20 20 20 20 20 | -strings.suffix.nil.nil......... |
| 2980 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 20 73 74 61 72 74 2d | ........................s.start- |
| 29a0 | 70 6f 73 20 6e 69 6c 20 69 67 6e 6f 72 65 2d 63 61 73 65 29 29 29 29 29 0a 0a 28 64 65 66 75 6e | pos.nil.ignore-case)))))..(defun |
| 29c0 | 20 73 2d 73 74 61 72 74 73 2d 77 69 74 68 3f 20 28 70 72 65 66 69 78 20 73 20 26 6f 70 74 69 6f | .s-starts-with?.(prefix.s.&optio |
| 29e0 | 6e 61 6c 20 69 67 6e 6f 72 65 2d 63 61 73 65 29 0a 20 20 22 44 6f 65 73 20 53 20 73 74 61 72 74 | nal.ignore-case)..."Does.S.start |
| 2a00 | 20 77 69 74 68 20 50 52 45 46 49 58 3f 0a 0a 49 66 20 49 47 4e 4f 52 45 2d 43 41 53 45 20 69 73 | .with.PREFIX?..If.IGNORE-CASE.is |
| 2a20 | 20 6e 6f 6e 2d 6e 69 6c 2c 20 74 68 65 20 63 6f 6d 70 61 72 69 73 6f 6e 20 69 73 20 64 6f 6e 65 | .non-nil,.the.comparison.is.done |
| 2a40 | 20 77 69 74 68 6f 75 74 20 70 61 79 69 6e 67 0a 61 74 74 65 6e 74 69 6f 6e 20 74 6f 20 63 61 73 | .without.paying.attention.to.cas |
| 2a60 | 65 20 64 69 66 66 65 72 65 6e 63 65 73 2e 0a 0a 41 6c 69 61 73 3a 20 60 73 2d 70 72 65 66 69 78 | e.differences...Alias:.`s-prefix |
| 2a80 | 3f 27 2e 20 54 68 69 73 20 69 73 20 61 20 73 69 6d 70 6c 65 20 77 72 61 70 70 65 72 20 61 72 6f | ?'..This.is.a.simple.wrapper.aro |
| 2aa0 | 75 6e 64 20 74 68 65 20 62 75 69 6c 74 2d 69 6e 0a 60 73 74 72 69 6e 67 2d 70 72 65 66 69 78 2d | und.the.built-in.`string-prefix- |
| 2ac0 | 70 27 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 70 75 72 65 20 74 29 20 28 73 69 64 65 2d 65 | p'."...(declare.(pure.t).(side-e |
| 2ae0 | 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 73 74 72 69 6e 67 2d 70 72 65 66 69 78 2d | ffect-free.t))...(string-prefix- |
| 2b00 | 70 20 70 72 65 66 69 78 20 73 20 69 67 6e 6f 72 65 2d 63 61 73 65 29 29 0a 0a 28 64 65 66 75 6e | p.prefix.s.ignore-case))..(defun |
| 2b20 | 20 73 2d 2d 74 72 75 74 68 79 3f 20 28 76 61 6c 29 0a 20 20 28 64 65 63 6c 61 72 65 20 28 70 75 | .s--truthy?.(val)...(declare.(pu |
| 2b40 | 72 65 20 74 29 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 6e | re.t).(side-effect-free.t))...(n |
| 2b60 | 6f 74 20 28 6e 75 6c 6c 20 76 61 6c 29 29 29 0a 0a 28 64 65 66 75 6e 20 73 2d 63 6f 6e 74 61 69 | ot.(null.val)))..(defun.s-contai |
| 2b80 | 6e 73 3f 20 28 6e 65 65 64 6c 65 20 73 20 26 6f 70 74 69 6f 6e 61 6c 20 69 67 6e 6f 72 65 2d 63 | ns?.(needle.s.&optional.ignore-c |
| 2ba0 | 61 73 65 29 0a 20 20 22 44 6f 65 73 20 53 20 63 6f 6e 74 61 69 6e 20 4e 45 45 44 4c 45 3f 0a 0a | ase)..."Does.S.contain.NEEDLE?.. |
| 2bc0 | 49 66 20 49 47 4e 4f 52 45 2d 43 41 53 45 20 69 73 20 6e 6f 6e 2d 6e 69 6c 2c 20 74 68 65 20 63 | If.IGNORE-CASE.is.non-nil,.the.c |
| 2be0 | 6f 6d 70 61 72 69 73 6f 6e 20 69 73 20 64 6f 6e 65 20 77 69 74 68 6f 75 74 20 70 61 79 69 6e 67 | omparison.is.done.without.paying |
| 2c00 | 0a 61 74 74 65 6e 74 69 6f 6e 20 74 6f 20 63 61 73 65 20 64 69 66 66 65 72 65 6e 63 65 73 2e 22 | .attention.to.case.differences." |
| 2c20 | 0a 20 20 28 64 65 63 6c 61 72 65 20 28 70 75 72 65 20 74 29 20 28 73 69 64 65 2d 65 66 66 65 63 | ...(declare.(pure.t).(side-effec |
| 2c40 | 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 6c 65 74 20 28 28 63 61 73 65 2d 66 6f 6c 64 2d 73 65 | t-free.t))...(let.((case-fold-se |
| 2c60 | 61 72 63 68 20 69 67 6e 6f 72 65 2d 63 61 73 65 29 29 0a 20 20 20 20 28 73 2d 2d 74 72 75 74 68 | arch.ignore-case)).....(s--truth |
| 2c80 | 79 3f 20 28 73 74 72 69 6e 67 2d 6d 61 74 63 68 2d 70 20 28 72 65 67 65 78 70 2d 71 75 6f 74 65 | y?.(string-match-p.(regexp-quote |
| 2ca0 | 20 6e 65 65 64 6c 65 29 20 73 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 73 2d 65 71 75 61 6c 73 3f | .needle).s))))..(defun.s-equals? |
| 2cc0 | 20 28 73 31 20 73 32 29 0a 20 20 22 49 73 20 53 31 20 65 71 75 61 6c 20 74 6f 20 53 32 3f 0a 0a | .(s1.s2)..."Is.S1.equal.to.S2?.. |
| 2ce0 | 54 68 69 73 20 69 73 20 61 20 73 69 6d 70 6c 65 20 77 72 61 70 70 65 72 20 61 72 6f 75 6e 64 20 | This.is.a.simple.wrapper.around. |
| 2d00 | 74 68 65 20 62 75 69 6c 74 2d 69 6e 20 60 73 74 72 69 6e 67 2d 65 71 75 61 6c 27 2e 22 0a 20 20 | the.built-in.`string-equal'."... |
| 2d20 | 28 64 65 63 6c 61 72 65 20 28 70 75 72 65 20 74 29 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 | (declare.(pure.t).(side-effect-f |
| 2d40 | 72 65 65 20 74 29 29 0a 20 20 28 73 74 72 69 6e 67 2d 65 71 75 61 6c 20 73 31 20 73 32 29 29 0a | ree.t))...(string-equal.s1.s2)). |
| 2d60 | 0a 28 64 65 66 75 6e 20 73 2d 6c 65 73 73 3f 20 28 73 31 20 73 32 29 0a 20 20 22 49 73 20 53 31 | .(defun.s-less?.(s1.s2)..."Is.S1 |
| 2d80 | 20 6c 65 73 73 20 74 68 61 6e 20 53 32 3f 0a 0a 54 68 69 73 20 69 73 20 61 20 73 69 6d 70 6c 65 | .less.than.S2?..This.is.a.simple |
| 2da0 | 20 77 72 61 70 70 65 72 20 61 72 6f 75 6e 64 20 74 68 65 20 62 75 69 6c 74 2d 69 6e 20 60 73 74 | .wrapper.around.the.built-in.`st |
| 2dc0 | 72 69 6e 67 2d 6c 65 73 73 70 27 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 70 75 72 65 20 74 | ring-lessp'."...(declare.(pure.t |
| 2de0 | 29 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 73 74 72 69 6e | ).(side-effect-free.t))...(strin |
| 2e00 | 67 2d 6c 65 73 73 70 20 73 31 20 73 32 29 29 0a 0a 28 64 65 66 75 6e 20 73 2d 6d 61 74 63 68 65 | g-lessp.s1.s2))..(defun.s-matche |
| 2e20 | 73 3f 20 28 72 65 67 65 78 70 20 73 20 26 6f 70 74 69 6f 6e 61 6c 20 73 74 61 72 74 29 0a 20 20 | s?.(regexp.s.&optional.start)... |
| 2e40 | 22 44 6f 65 73 20 52 45 47 45 58 50 20 6d 61 74 63 68 20 53 3f 0a 49 66 20 53 54 41 52 54 20 69 | "Does.REGEXP.match.S?.If.START.i |
| 2e60 | 73 20 6e 6f 6e 2d 6e 69 6c 20 74 68 65 20 73 65 61 72 63 68 20 73 74 61 72 74 73 20 61 74 20 74 | s.non-nil.the.search.starts.at.t |
| 2e80 | 68 61 74 20 69 6e 64 65 78 2e 0a 0a 54 68 69 73 20 69 73 20 61 20 73 69 6d 70 6c 65 20 77 72 61 | hat.index...This.is.a.simple.wra |
| 2ea0 | 70 70 65 72 20 61 72 6f 75 6e 64 20 74 68 65 20 62 75 69 6c 74 2d 69 6e 20 60 73 74 72 69 6e 67 | pper.around.the.built-in.`string |
| 2ec0 | 2d 6d 61 74 63 68 2d 70 27 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 73 69 64 65 2d 65 66 66 | -match-p'."...(declare.(side-eff |
| 2ee0 | 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 73 2d 2d 74 72 75 74 68 79 3f 20 28 73 74 72 69 | ect-free.t))...(s--truthy?.(stri |
| 2f00 | 6e 67 2d 6d 61 74 63 68 2d 70 20 72 65 67 65 78 70 20 73 20 73 74 61 72 74 29 29 29 0a 0a 28 64 | ng-match-p.regexp.s.start)))..(d |
| 2f20 | 65 66 75 6e 20 73 2d 62 6c 61 6e 6b 3f 20 28 73 29 0a 20 20 22 49 73 20 53 20 6e 69 6c 20 6f 72 | efun.s-blank?.(s)..."Is.S.nil.or |
| 2f40 | 20 74 68 65 20 65 6d 70 74 79 20 73 74 72 69 6e 67 3f 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 | .the.empty.string?"...(declare.( |
| 2f60 | 70 75 72 65 20 74 29 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 | pure.t).(side-effect-free.t))... |
| 2f80 | 28 6f 72 20 28 6e 75 6c 6c 20 73 29 20 28 73 74 72 69 6e 67 3d 20 22 22 20 73 29 29 29 0a 0a 28 | (or.(null.s).(string=."".s)))..( |
| 2fa0 | 64 65 66 75 6e 20 73 2d 62 6c 61 6e 6b 2d 73 74 72 3f 20 28 73 29 0a 20 20 22 49 73 20 53 20 6e | defun.s-blank-str?.(s)..."Is.S.n |
| 2fc0 | 69 6c 20 6f 72 20 74 68 65 20 65 6d 70 74 79 20 73 74 72 69 6e 67 20 6f 72 20 73 74 72 69 6e 67 | il.or.the.empty.string.or.string |
| 2fe0 | 20 6f 6e 6c 79 20 63 6f 6e 74 61 69 6e 73 20 77 68 69 74 65 73 70 61 63 65 3f 22 0a 20 20 28 64 | .only.contains.whitespace?"...(d |
| 3000 | 65 63 6c 61 72 65 20 28 70 75 72 65 20 74 29 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 | eclare.(pure.t).(side-effect-fre |
| 3020 | 65 20 74 29 29 0a 20 20 28 6f 72 20 28 73 2d 62 6c 61 6e 6b 3f 20 73 29 20 28 73 2d 62 6c 61 6e | e.t))...(or.(s-blank?.s).(s-blan |
| 3040 | 6b 3f 20 28 73 2d 74 72 69 6d 20 73 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 73 2d 70 72 65 73 65 | k?.(s-trim.s))))..(defun.s-prese |
| 3060 | 6e 74 3f 20 28 73 29 0a 20 20 22 49 73 20 53 20 61 6e 79 74 68 69 6e 67 20 62 75 74 20 6e 69 6c | nt?.(s)..."Is.S.anything.but.nil |
| 3080 | 20 6f 72 20 74 68 65 20 65 6d 70 74 79 20 73 74 72 69 6e 67 3f 22 0a 20 20 28 64 65 63 6c 61 72 | .or.the.empty.string?"...(declar |
| 30a0 | 65 20 28 70 75 72 65 20 74 29 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 | e.(pure.t).(side-effect-free.t)) |
| 30c0 | 0a 20 20 28 6e 6f 74 20 28 73 2d 62 6c 61 6e 6b 3f 20 73 29 29 29 0a 0a 28 64 65 66 75 6e 20 73 | ...(not.(s-blank?.s)))..(defun.s |
| 30e0 | 2d 70 72 65 73 65 6e 63 65 20 28 73 29 0a 20 20 22 52 65 74 75 72 6e 20 53 20 69 66 20 69 74 27 | -presence.(s)..."Return.S.if.it' |
| 3100 | 73 20 60 73 2d 70 72 65 73 65 6e 74 3f 27 2c 20 6f 74 68 65 72 77 69 73 65 20 72 65 74 75 72 6e | s.`s-present?',.otherwise.return |
| 3120 | 20 6e 69 6c 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 70 75 72 65 20 74 29 20 28 73 69 64 65 | .nil."...(declare.(pure.t).(side |
| 3140 | 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 61 6e 64 20 28 73 2d 70 72 65 73 65 | -effect-free.t))...(and.(s-prese |
| 3160 | 6e 74 3f 20 73 29 20 73 29 29 0a 0a 28 64 65 66 75 6e 20 73 2d 6c 6f 77 65 72 63 61 73 65 3f 20 | nt?.s).s))..(defun.s-lowercase?. |
| 3180 | 28 73 29 0a 20 20 22 41 72 65 20 61 6c 6c 20 74 68 65 20 6c 65 74 74 65 72 73 20 69 6e 20 53 20 | (s)..."Are.all.the.letters.in.S. |
| 31a0 | 69 6e 20 6c 6f 77 65 72 20 63 61 73 65 3f 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 73 69 64 65 | in.lower.case?"...(declare.(side |
| 31c0 | 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 6c 65 74 20 28 28 63 61 73 65 2d 66 | -effect-free.t))...(let.((case-f |
| 31e0 | 6f 6c 64 2d 73 65 61 72 63 68 20 6e 69 6c 29 29 0a 20 20 20 20 28 6e 6f 74 20 28 73 74 72 69 6e | old-search.nil)).....(not.(strin |
| 3200 | 67 2d 6d 61 74 63 68 2d 70 20 22 5b 5b 3a 75 70 70 65 72 3a 5d 5d 22 20 73 29 29 29 29 0a 0a 28 | g-match-p."[[:upper:]]".s))))..( |
| 3220 | 64 65 66 75 6e 20 73 2d 75 70 70 65 72 63 61 73 65 3f 20 28 73 29 0a 20 20 22 41 72 65 20 61 6c | defun.s-uppercase?.(s)..."Are.al |
| 3240 | 6c 20 74 68 65 20 6c 65 74 74 65 72 73 20 69 6e 20 53 20 69 6e 20 75 70 70 65 72 20 63 61 73 65 | l.the.letters.in.S.in.upper.case |
| 3260 | 3f 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 | ?"...(declare.(side-effect-free. |
| 3280 | 74 29 29 0a 20 20 28 6c 65 74 20 28 28 63 61 73 65 2d 66 6f 6c 64 2d 73 65 61 72 63 68 20 6e 69 | t))...(let.((case-fold-search.ni |
| 32a0 | 6c 29 29 0a 20 20 20 20 28 6e 6f 74 20 28 73 74 72 69 6e 67 2d 6d 61 74 63 68 2d 70 20 22 5b 5b | l)).....(not.(string-match-p."[[ |
| 32c0 | 3a 6c 6f 77 65 72 3a 5d 5d 22 20 73 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 73 2d 6d 69 78 65 64 | :lower:]]".s))))..(defun.s-mixed |
| 32e0 | 63 61 73 65 3f 20 28 73 29 0a 20 20 22 41 72 65 20 74 68 65 72 65 20 62 6f 74 68 20 6c 6f 77 65 | case?.(s)..."Are.there.both.lowe |
| 3300 | 72 20 63 61 73 65 20 61 6e 64 20 75 70 70 65 72 20 63 61 73 65 20 6c 65 74 74 65 72 73 20 69 6e | r.case.and.upper.case.letters.in |
| 3320 | 20 53 3f 22 0a 20 20 28 6c 65 74 20 28 28 63 61 73 65 2d 66 6f 6c 64 2d 73 65 61 72 63 68 20 6e | .S?"...(let.((case-fold-search.n |
| 3340 | 69 6c 29 29 0a 20 20 20 20 28 73 2d 2d 74 72 75 74 68 79 3f 0a 20 20 20 20 20 28 61 6e 64 20 28 | il)).....(s--truthy?......(and.( |
| 3360 | 73 74 72 69 6e 67 2d 6d 61 74 63 68 2d 70 20 22 5b 5b 3a 6c 6f 77 65 72 3a 5d 5d 22 20 73 29 0a | string-match-p."[[:lower:]]".s). |
| 3380 | 20 20 20 20 20 20 20 20 20 20 28 73 74 72 69 6e 67 2d 6d 61 74 63 68 2d 70 20 22 5b 5b 3a 75 70 | ..........(string-match-p."[[:up |
| 33a0 | 70 65 72 3a 5d 5d 22 20 73 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 73 2d 63 61 70 69 74 61 6c | per:]]".s)))))..(defun.s-capital |
| 33c0 | 69 7a 65 64 3f 20 28 73 29 0a 20 20 22 49 6e 20 53 2c 20 69 73 20 74 68 65 20 66 69 72 73 74 20 | ized?.(s)..."In.S,.is.the.first. |
| 33e0 | 6c 65 74 74 65 72 20 75 70 70 65 72 20 63 61 73 65 2c 20 61 6e 64 20 61 6c 6c 20 6f 74 68 65 72 | letter.upper.case,.and.all.other |
| 3400 | 20 6c 65 74 74 65 72 73 20 6c 6f 77 65 72 20 63 61 73 65 3f 22 0a 20 20 28 64 65 63 6c 61 72 65 | .letters.lower.case?"...(declare |
| 3420 | 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 6c 65 74 20 28 28 | .(side-effect-free.t))...(let.(( |
| 3440 | 63 61 73 65 2d 66 6f 6c 64 2d 73 65 61 72 63 68 20 6e 69 6c 29 29 0a 20 20 20 20 28 73 2d 2d 74 | case-fold-search.nil)).....(s--t |
| 3460 | 72 75 74 68 79 3f 0a 20 20 20 20 20 28 73 74 72 69 6e 67 2d 6d 61 74 63 68 2d 70 20 22 5e 5b 5b | ruthy?......(string-match-p."^[[ |
| 3480 | 3a 75 70 70 65 72 3a 5d 5d 5b 5e 5b 3a 75 70 70 65 72 3a 5d 5d 2a 24 22 20 73 29 29 29 29 0a 0a | :upper:]][^[:upper:]]*$".s)))).. |
| 34a0 | 28 64 65 66 75 6e 20 73 2d 6e 75 6d 65 72 69 63 3f 20 28 73 29 0a 20 20 22 49 73 20 53 20 61 20 | (defun.s-numeric?.(s)..."Is.S.a. |
| 34c0 | 6e 75 6d 62 65 72 3f 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 70 75 72 65 20 74 29 20 28 73 69 | number?"...(declare.(pure.t).(si |
| 34e0 | 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 73 2d 2d 74 72 75 74 68 79 3f | de-effect-free.t))...(s--truthy? |
| 3500 | 0a 20 20 20 28 73 74 72 69 6e 67 2d 6d 61 74 63 68 2d 70 20 22 5e 5b 30 2d 39 5d 2b 24 22 20 73 | ....(string-match-p."^[0-9]+$".s |
| 3520 | 29 29 29 0a 0a 28 64 65 66 75 6e 20 73 2d 72 65 70 6c 61 63 65 20 28 6f 6c 64 20 6e 65 77 20 73 | )))..(defun.s-replace.(old.new.s |
| 3540 | 29 0a 20 20 22 52 65 70 6c 61 63 65 73 20 4f 4c 44 20 77 69 74 68 20 4e 45 57 20 69 6e 20 53 2e | )..."Replaces.OLD.with.NEW.in.S. |
| 3560 | 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 70 75 72 65 20 74 29 20 28 73 69 64 65 2d 65 66 66 65 | "...(declare.(pure.t).(side-effe |
| 3580 | 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 72 65 70 6c 61 63 65 2d 72 65 67 65 78 70 2d 69 6e | ct-free.t))...(replace-regexp-in |
| 35a0 | 2d 73 74 72 69 6e 67 20 28 72 65 67 65 78 70 2d 71 75 6f 74 65 20 6f 6c 64 29 20 6e 65 77 20 73 | -string.(regexp-quote.old).new.s |
| 35c0 | 20 74 20 74 29 29 0a 0a 28 64 65 66 61 6c 69 61 73 20 27 73 2d 72 65 70 6c 61 63 65 2d 72 65 67 | .t.t))..(defalias.'s-replace-reg |
| 35e0 | 65 78 70 20 27 72 65 70 6c 61 63 65 2d 72 65 67 65 78 70 2d 69 6e 2d 73 74 72 69 6e 67 29 0a 0a | exp.'replace-regexp-in-string).. |
| 3600 | 28 64 65 66 75 6e 20 73 2d 2d 61 67 65 74 20 28 61 6c 69 73 74 20 6b 65 79 29 0a 20 20 22 47 65 | (defun.s--aget.(alist.key)..."Ge |
| 3620 | 74 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20 4b 45 59 20 69 6e 20 41 4c 49 53 54 2e 22 0a 20 20 | t.the.value.of.KEY.in.ALIST."... |
| 3640 | 28 64 65 63 6c 61 72 65 20 28 70 75 72 65 20 74 29 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 | (declare.(pure.t).(side-effect-f |
| 3660 | 72 65 65 20 74 29 29 0a 20 20 28 63 64 72 20 28 61 73 73 6f 63 2d 73 74 72 69 6e 67 20 6b 65 79 | ree.t))...(cdr.(assoc-string.key |
| 3680 | 20 61 6c 69 73 74 29 29 29 0a 0a 28 64 65 66 75 6e 20 73 2d 72 65 70 6c 61 63 65 2d 61 6c 6c 20 | .alist)))..(defun.s-replace-all. |
| 36a0 | 28 72 65 70 6c 61 63 65 6d 65 6e 74 73 20 73 29 0a 20 20 22 52 45 50 4c 41 43 45 4d 45 4e 54 53 | (replacements.s)..."REPLACEMENTS |
| 36c0 | 20 69 73 20 61 20 6c 69 73 74 20 6f 66 20 63 6f 6e 73 2d 63 65 6c 6c 73 2e 20 45 61 63 68 20 60 | .is.a.list.of.cons-cells..Each.` |
| 36e0 | 63 61 72 60 20 69 73 20 72 65 70 6c 61 63 65 64 20 77 69 74 68 20 60 63 64 72 60 20 69 6e 20 53 | car`.is.replaced.with.`cdr`.in.S |
| 3700 | 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 70 75 72 65 20 74 29 20 28 73 69 64 65 2d 65 66 66 | ."...(declare.(pure.t).(side-eff |
| 3720 | 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 6c 65 74 20 28 28 63 61 73 65 2d 66 6f 6c 64 2d | ect-free.t))...(let.((case-fold- |
| 3740 | 73 65 61 72 63 68 20 6e 69 6c 29 29 0a 20 20 20 28 72 65 70 6c 61 63 65 2d 72 65 67 65 78 70 2d | search.nil))....(replace-regexp- |
| 3760 | 69 6e 2d 73 74 72 69 6e 67 20 28 72 65 67 65 78 70 2d 6f 70 74 20 28 6d 61 70 63 61 72 20 27 63 | in-string.(regexp-opt.(mapcar.'c |
| 3780 | 61 72 20 72 65 70 6c 61 63 65 6d 65 6e 74 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ar.replacements))............... |
| 37a0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 69 74 29 20 28 73 2d 2d | ...............(lambda.(it).(s-- |
| 37c0 | 61 67 65 74 20 72 65 70 6c 61 63 65 6d 65 6e 74 73 20 69 74 29 29 0a 20 20 20 20 20 20 20 20 20 | aget.replacements.it)).......... |
| 37e0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 20 74 20 74 29 29 29 0a 0a 28 64 | ....................s.t.t)))..(d |
| 3800 | 65 66 75 6e 20 73 2d 64 6f 77 6e 63 61 73 65 20 28 73 29 0a 20 20 22 43 6f 6e 76 65 72 74 20 53 | efun.s-downcase.(s)..."Convert.S |
| 3820 | 20 74 6f 20 6c 6f 77 65 72 20 63 61 73 65 2e 0a 0a 54 68 69 73 20 69 73 20 61 20 73 69 6d 70 6c | .to.lower.case...This.is.a.simpl |
| 3840 | 65 20 77 72 61 70 70 65 72 20 61 72 6f 75 6e 64 20 74 68 65 20 62 75 69 6c 74 2d 69 6e 20 60 64 | e.wrapper.around.the.built-in.`d |
| 3860 | 6f 77 6e 63 61 73 65 27 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 73 69 64 65 2d 65 66 66 65 | owncase'."...(declare.(side-effe |
| 3880 | 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 64 6f 77 6e 63 61 73 65 20 73 29 29 0a 0a 28 64 65 | ct-free.t))...(downcase.s))..(de |
| 38a0 | 66 75 6e 20 73 2d 75 70 63 61 73 65 20 28 73 29 0a 20 20 22 43 6f 6e 76 65 72 74 20 53 20 74 6f | fun.s-upcase.(s)..."Convert.S.to |
| 38c0 | 20 75 70 70 65 72 20 63 61 73 65 2e 0a 0a 54 68 69 73 20 69 73 20 61 20 73 69 6d 70 6c 65 20 77 | .upper.case...This.is.a.simple.w |
| 38e0 | 72 61 70 70 65 72 20 61 72 6f 75 6e 64 20 74 68 65 20 62 75 69 6c 74 2d 69 6e 20 60 75 70 63 61 | rapper.around.the.built-in.`upca |
| 3900 | 73 65 27 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 | se'."...(declare.(side-effect-fr |
| 3920 | 65 65 20 74 29 29 0a 20 20 28 75 70 63 61 73 65 20 73 29 29 0a 0a 28 64 65 66 75 6e 20 73 2d 63 | ee.t))...(upcase.s))..(defun.s-c |
| 3940 | 61 70 69 74 61 6c 69 7a 65 20 28 73 29 0a 20 20 22 43 6f 6e 76 65 72 74 20 53 20 66 69 72 73 74 | apitalize.(s)..."Convert.S.first |
| 3960 | 20 77 6f 72 64 27 73 20 66 69 72 73 74 20 63 68 61 72 61 63 74 65 72 20 74 6f 20 75 70 70 65 72 | .word's.first.character.to.upper |
| 3980 | 20 61 6e 64 20 74 68 65 20 72 65 73 74 20 74 6f 20 6c 6f 77 65 72 20 63 61 73 65 2e 22 0a 20 20 | .and.the.rest.to.lower.case."... |
| 39a0 | 28 64 65 63 6c 61 72 65 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20 | (declare.(side-effect-free.t)).. |
| 39c0 | 20 28 63 6f 6e 63 61 74 20 28 75 70 63 61 73 65 20 28 73 75 62 73 74 72 69 6e 67 20 73 20 30 20 | .(concat.(upcase.(substring.s.0. |
| 39e0 | 31 29 29 20 28 64 6f 77 6e 63 61 73 65 20 28 73 75 62 73 74 72 69 6e 67 20 73 20 31 29 29 29 29 | 1)).(downcase.(substring.s.1)))) |
| 3a00 | 0a 0a 28 64 65 66 75 6e 20 73 2d 74 69 74 6c 65 69 7a 65 20 28 73 29 0a 20 20 22 43 6f 6e 76 65 | ..(defun.s-titleize.(s)..."Conve |
| 3a20 | 72 74 20 69 6e 20 53 20 65 61 63 68 20 77 6f 72 64 27 73 20 66 69 72 73 74 20 63 68 61 72 61 63 | rt.in.S.each.word's.first.charac |
| 3a40 | 74 65 72 20 74 6f 20 75 70 70 65 72 20 61 6e 64 20 74 68 65 20 72 65 73 74 20 74 6f 20 6c 6f 77 | ter.to.upper.and.the.rest.to.low |
| 3a60 | 65 72 20 63 61 73 65 2e 0a 0a 54 68 69 73 20 69 73 20 61 20 73 69 6d 70 6c 65 20 77 72 61 70 70 | er.case...This.is.a.simple.wrapp |
| 3a80 | 65 72 20 61 72 6f 75 6e 64 20 74 68 65 20 62 75 69 6c 74 2d 69 6e 20 60 63 61 70 69 74 61 6c 69 | er.around.the.built-in.`capitali |
| 3aa0 | 7a 65 27 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 | ze'."...(declare.(side-effect-fr |
| 3ac0 | 65 65 20 74 29 29 0a 20 20 28 63 61 70 69 74 61 6c 69 7a 65 20 73 29 29 0a 0a 28 64 65 66 6d 61 | ee.t))...(capitalize.s))..(defma |
| 3ae0 | 63 72 6f 20 73 2d 77 69 74 68 20 28 73 20 66 6f 72 6d 20 26 72 65 73 74 20 6d 6f 72 65 29 0a 20 | cro.s-with.(s.form.&rest.more).. |
| 3b00 | 20 22 54 68 72 65 61 64 73 20 53 20 74 68 72 6f 75 67 68 20 74 68 65 20 66 6f 72 6d 73 2e 20 49 | ."Threads.S.through.the.forms..I |
| 3b20 | 6e 73 65 72 74 73 20 53 20 61 73 20 74 68 65 20 6c 61 73 74 20 69 74 65 6d 0a 69 6e 20 74 68 65 | nserts.S.as.the.last.item.in.the |
| 3b40 | 20 66 69 72 73 74 20 66 6f 72 6d 2c 20 6d 61 6b 69 6e 67 20 61 20 6c 69 73 74 20 6f 66 20 69 74 | .first.form,.making.a.list.of.it |
| 3b60 | 20 69 66 20 69 74 20 69 73 20 6e 6f 74 20 61 20 6c 69 73 74 0a 61 6c 72 65 61 64 79 2e 20 49 66 | .if.it.is.not.a.list.already..If |
| 3b80 | 20 74 68 65 72 65 20 61 72 65 20 6d 6f 72 65 20 66 6f 72 6d 73 2c 20 69 6e 73 65 72 74 73 20 74 | .there.are.more.forms,.inserts.t |
| 3ba0 | 68 65 20 66 69 72 73 74 20 66 6f 72 6d 20 61 73 20 74 68 65 0a 6c 61 73 74 20 69 74 65 6d 20 69 | he.first.form.as.the.last.item.i |
| 3bc0 | 6e 20 73 65 63 6f 6e 64 20 66 6f 72 6d 2c 20 65 74 63 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 | n.second.form,.etc."...(declare. |
| 3be0 | 28 64 65 62 75 67 20 28 66 6f 72 6d 20 26 72 65 73 74 20 5b 26 6f 72 20 28 66 75 6e 63 74 69 6f | (debug.(form.&rest.[&or.(functio |
| 3c00 | 6e 20 26 72 65 73 74 20 66 6f 72 6d 29 20 66 62 6f 75 6e 64 70 5d 29 29 29 0a 20 20 28 69 66 20 | n.&rest.form).fboundp])))...(if. |
| 3c20 | 28 6e 75 6c 6c 20 6d 6f 72 65 29 0a 20 20 20 20 20 20 28 69 66 20 28 6c 69 73 74 70 20 66 6f 72 | (null.more).......(if.(listp.for |
| 3c40 | 6d 29 0a 20 20 20 20 20 20 20 20 20 20 60 28 2c 28 63 61 72 20 66 6f 72 6d 29 20 2c 40 28 63 64 | m)...........`(,(car.form).,@(cd |
| 3c60 | 72 20 66 6f 72 6d 29 20 2c 73 29 0a 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 66 6f 72 6d 20 73 | r.form).,s).........(list.form.s |
| 3c80 | 29 29 0a 20 20 20 20 60 28 73 2d 77 69 74 68 20 28 73 2d 77 69 74 68 20 2c 73 20 2c 66 6f 72 6d | )).....`(s-with.(s-with.,s.,form |
| 3ca0 | 29 20 2c 40 6d 6f 72 65 29 29 29 0a 0a 28 70 75 74 20 27 73 2d 77 69 74 68 20 27 6c 69 73 70 2d | ).,@more)))..(put.'s-with.'lisp- |
| 3cc0 | 69 6e 64 65 6e 74 2d 66 75 6e 63 74 69 6f 6e 20 31 29 0a 0a 28 64 65 66 75 6e 20 73 2d 69 6e 64 | indent-function.1)..(defun.s-ind |
| 3ce0 | 65 78 2d 6f 66 20 28 6e 65 65 64 6c 65 20 73 20 26 6f 70 74 69 6f 6e 61 6c 20 69 67 6e 6f 72 65 | ex-of.(needle.s.&optional.ignore |
| 3d00 | 2d 63 61 73 65 29 0a 20 20 22 52 65 74 75 72 6e 73 20 66 69 72 73 74 20 69 6e 64 65 78 20 6f 66 | -case)..."Returns.first.index.of |
| 3d20 | 20 4e 45 45 44 4c 45 20 69 6e 20 53 2c 20 6f 72 20 6e 69 6c 2e 0a 0a 49 66 20 49 47 4e 4f 52 45 | .NEEDLE.in.S,.or.nil...If.IGNORE |
| 3d40 | 2d 43 41 53 45 20 69 73 20 6e 6f 6e 2d 6e 69 6c 2c 20 74 68 65 20 63 6f 6d 70 61 72 69 73 6f 6e | -CASE.is.non-nil,.the.comparison |
| 3d60 | 20 69 73 20 64 6f 6e 65 20 77 69 74 68 6f 75 74 20 70 61 79 69 6e 67 0a 61 74 74 65 6e 74 69 6f | .is.done.without.paying.attentio |
| 3d80 | 6e 20 74 6f 20 63 61 73 65 20 64 69 66 66 65 72 65 6e 63 65 73 2e 22 0a 20 20 28 64 65 63 6c 61 | n.to.case.differences."...(decla |
| 3da0 | 72 65 20 28 70 75 72 65 20 74 29 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 | re.(pure.t).(side-effect-free.t) |
| 3dc0 | 29 0a 20 20 28 6c 65 74 20 28 28 63 61 73 65 2d 66 6f 6c 64 2d 73 65 61 72 63 68 20 69 67 6e 6f | )...(let.((case-fold-search.igno |
| 3de0 | 72 65 2d 63 61 73 65 29 29 0a 20 20 20 20 28 73 74 72 69 6e 67 2d 6d 61 74 63 68 2d 70 20 28 72 | re-case)).....(string-match-p.(r |
| 3e00 | 65 67 65 78 70 2d 71 75 6f 74 65 20 6e 65 65 64 6c 65 29 20 73 29 29 29 0a 0a 28 64 65 66 75 6e | egexp-quote.needle).s)))..(defun |
| 3e20 | 20 73 2d 72 65 76 65 72 73 65 20 28 73 29 0a 20 20 22 52 65 74 75 72 6e 20 74 68 65 20 72 65 76 | .s-reverse.(s)..."Return.the.rev |
| 3e40 | 65 72 73 65 20 6f 66 20 53 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 70 75 72 65 20 74 29 20 | erse.of.S."...(declare.(pure.t). |
| 3e60 | 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 73 61 76 65 2d 6d 61 | (side-effect-free.t))...(save-ma |
| 3e80 | 74 63 68 2d 64 61 74 61 0a 20 20 20 20 28 69 66 20 28 6d 75 6c 74 69 62 79 74 65 2d 73 74 72 69 | tch-data.....(if.(multibyte-stri |
| 3ea0 | 6e 67 2d 70 20 73 29 0a 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 69 6e 70 75 74 20 28 73 74 | ng-p.s).........(let.((input.(st |
| 3ec0 | 72 69 6e 67 2d 74 6f 2d 6c 69 73 74 20 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f | ring-to-list.s))...............o |
| 3ee0 | 75 74 70 75 74 29 0a 20 20 20 20 20 20 20 20 20 20 28 72 65 71 75 69 72 65 20 27 75 63 73 2d 6e | utput)...........(require.'ucs-n |
| 3f00 | 6f 72 6d 61 6c 69 7a 65 29 0a 20 20 20 20 20 20 20 20 20 20 28 77 68 69 6c 65 20 69 6e 70 75 74 | ormalize)...........(while.input |
| 3f20 | 0a 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 48 61 6e 64 6c 65 20 65 6e 74 69 72 65 20 67 72 | .............;;.Handle.entire.gr |
| 3f40 | 61 70 68 65 6d 65 20 63 6c 75 73 74 65 72 20 61 73 20 61 20 73 69 6e 67 6c 65 20 75 6e 69 74 0a | apheme.cluster.as.a.single.unit. |
| 3f60 | 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 67 72 61 70 68 65 6d 65 20 28 6c 69 73 | ............(let.((grapheme.(lis |
| 3f80 | 74 20 28 70 6f 70 20 69 6e 70 75 74 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 | t.(pop.input))))...............( |
| 3fa0 | 77 68 69 6c 65 20 28 6d 65 6d 71 6c 20 28 63 61 72 20 69 6e 70 75 74 29 20 75 63 73 2d 6e 6f 72 | while.(memql.(car.input).ucs-nor |
| 3fc0 | 6d 61 6c 69 7a 65 2d 63 6f 6d 62 69 6e 69 6e 67 2d 63 68 61 72 73 29 0a 20 20 20 20 20 20 20 20 | malize-combining-chars)......... |
| 3fe0 | 20 20 20 20 20 20 20 20 28 70 75 73 68 20 28 70 6f 70 20 69 6e 70 75 74 29 20 67 72 61 70 68 65 | ........(push.(pop.input).graphe |
| 4000 | 6d 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 6f 75 74 70 75 74 20 | me))...............(setq.output. |
| 4020 | 28 6e 63 6f 6e 63 20 28 6e 72 65 76 65 72 73 65 20 67 72 61 70 68 65 6d 65 29 20 6f 75 74 70 75 | (nconc.(nreverse.grapheme).outpu |
| 4040 | 74 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 6f 75 74 70 75 74 29 29 | t))))...........(concat.output)) |
| 4060 | 0a 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 28 6e 72 65 76 65 72 73 65 20 28 73 74 72 69 6e 67 | .......(concat.(nreverse.(string |
| 4080 | 2d 74 6f 2d 6c 69 73 74 20 73 29 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 73 2d 6d 61 74 63 68 | -to-list.s))))))..(defun.s-match |
| 40a0 | 2d 73 74 72 69 6e 67 73 2d 61 6c 6c 20 28 72 65 67 65 78 20 73 74 72 69 6e 67 29 0a 20 20 22 52 | -strings-all.(regex.string)..."R |
| 40c0 | 65 74 75 72 6e 20 61 20 6c 69 73 74 20 6f 66 20 6d 61 74 63 68 65 73 20 66 6f 72 20 52 45 47 45 | eturn.a.list.of.matches.for.REGE |
| 40e0 | 58 20 69 6e 20 53 54 52 49 4e 47 2e 0a 0a 45 61 63 68 20 65 6c 65 6d 65 6e 74 20 69 74 73 65 6c | X.in.STRING...Each.element.itsel |
| 4100 | 66 20 69 73 20 61 20 6c 69 73 74 20 6f 66 20 6d 61 74 63 68 65 73 2c 20 61 73 20 70 65 72 0a 60 | f.is.a.list.of.matches,.as.per.` |
| 4120 | 6d 61 74 63 68 2d 73 74 72 69 6e 67 27 2e 20 4d 75 6c 74 69 70 6c 65 20 6d 61 74 63 68 65 73 20 | match-string'..Multiple.matches. |
| 4140 | 61 74 20 74 68 65 20 73 61 6d 65 20 70 6f 73 69 74 69 6f 6e 20 77 69 6c 6c 20 62 65 0a 69 67 6e | at.the.same.position.will.be.ign |
| 4160 | 6f 72 65 64 20 61 66 74 65 72 20 74 68 65 20 66 69 72 73 74 2e 22 0a 20 20 28 64 65 63 6c 61 72 | ored.after.the.first."...(declar |
| 4180 | 65 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 73 61 76 65 2d | e.(side-effect-free.t))...(save- |
| 41a0 | 6d 61 74 63 68 2d 64 61 74 61 0a 20 20 20 20 28 6c 65 74 20 28 28 61 6c 6c 2d 73 74 72 69 6e 67 | match-data.....(let.((all-string |
| 41c0 | 73 20 28 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 69 20 30 29 29 0a 20 20 20 20 20 20 28 77 68 | s.())...........(i.0)).......(wh |
| 41e0 | 69 6c 65 20 28 61 6e 64 20 28 3c 20 69 20 28 6c 65 6e 67 74 68 20 73 74 72 69 6e 67 29 29 0a 20 | ile.(and.(<.i.(length.string)).. |
| 4200 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 74 72 69 6e 67 2d 6d 61 74 63 68 20 72 | .................(string-match.r |
| 4220 | 65 67 65 78 20 73 74 72 69 6e 67 20 69 29 29 0a 20 20 20 20 20 20 20 20 28 73 65 74 71 20 69 20 | egex.string.i)).........(setq.i. |
| 4240 | 28 31 2b 20 28 6d 61 74 63 68 2d 62 65 67 69 6e 6e 69 6e 67 20 30 29 29 29 0a 20 20 20 20 20 20 | (1+.(match-beginning.0)))....... |
| 4260 | 20 20 28 6c 65 74 20 28 73 74 72 69 6e 67 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6e | ..(let.(strings...............(n |
| 4280 | 75 6d 2d 6d 61 74 63 68 65 73 20 28 2f 20 28 6c 65 6e 67 74 68 20 28 6d 61 74 63 68 2d 64 61 74 | um-matches.(/.(length.(match-dat |
| 42a0 | 61 29 29 20 32 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 61 74 63 68 20 30 29 29 | a)).2))...............(match.0)) |
| 42c0 | 0a 20 20 20 20 20 20 20 20 20 20 28 77 68 69 6c 65 20 28 2f 3d 20 6d 61 74 63 68 20 6e 75 6d 2d | ...........(while.(/=.match.num- |
| 42e0 | 6d 61 74 63 68 65 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 28 6d 61 74 63 | matches).............(push.(matc |
| 4300 | 68 2d 73 74 72 69 6e 67 20 6d 61 74 63 68 20 73 74 72 69 6e 67 29 20 73 74 72 69 6e 67 73 29 0a | h-string.match.string).strings). |
| 4320 | 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 6d 61 74 63 68 20 28 31 2b 20 6d 61 74 63 | ............(setq.match.(1+.matc |
| 4340 | 68 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 28 6e 72 65 76 65 72 73 65 20 73 | h)))...........(push.(nreverse.s |
| 4360 | 74 72 69 6e 67 73 29 20 61 6c 6c 2d 73 74 72 69 6e 67 73 29 29 29 0a 20 20 20 20 20 20 28 6e 72 | trings).all-strings))).......(nr |
| 4380 | 65 76 65 72 73 65 20 61 6c 6c 2d 73 74 72 69 6e 67 73 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 73 | everse.all-strings))))..(defun.s |
| 43a0 | 2d 6d 61 74 63 68 65 64 2d 70 6f 73 69 74 69 6f 6e 73 2d 61 6c 6c 20 28 72 65 67 65 78 70 20 73 | -matched-positions-all.(regexp.s |
| 43c0 | 74 72 69 6e 67 20 26 6f 70 74 69 6f 6e 61 6c 20 73 75 62 65 78 70 2d 64 65 70 74 68 29 0a 20 20 | tring.&optional.subexp-depth)... |
| 43e0 | 22 52 65 74 75 72 6e 20 61 20 6c 69 73 74 20 6f 66 20 6d 61 74 63 68 65 64 20 70 6f 73 69 74 69 | "Return.a.list.of.matched.positi |
| 4400 | 6f 6e 73 20 66 6f 72 20 52 45 47 45 58 50 20 69 6e 20 53 54 52 49 4e 47 2e 0a 53 55 42 45 58 50 | ons.for.REGEXP.in.STRING..SUBEXP |
| 4420 | 2d 44 45 50 54 48 20 69 73 20 30 20 62 79 20 64 65 66 61 75 6c 74 2e 22 0a 20 20 28 64 65 63 6c | -DEPTH.is.0.by.default."...(decl |
| 4440 | 61 72 65 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 69 66 20 | are.(side-effect-free.t))...(if. |
| 4460 | 28 6e 75 6c 6c 20 73 75 62 65 78 70 2d 64 65 70 74 68 29 0a 20 20 20 20 20 20 28 73 65 74 71 20 | (null.subexp-depth).......(setq. |
| 4480 | 73 75 62 65 78 70 2d 64 65 70 74 68 20 30 29 29 0a 20 20 28 73 61 76 65 2d 6d 61 74 63 68 2d 64 | subexp-depth.0))...(save-match-d |
| 44a0 | 61 74 61 0a 20 20 20 20 28 6c 65 74 20 28 28 70 6f 73 20 30 29 20 72 65 73 75 6c 74 29 0a 20 20 | ata.....(let.((pos.0).result)... |
| 44c0 | 20 20 20 20 28 77 68 69 6c 65 20 28 61 6e 64 20 28 73 74 72 69 6e 67 2d 6d 61 74 63 68 20 72 65 | ....(while.(and.(string-match.re |
| 44e0 | 67 65 78 70 20 73 74 72 69 6e 67 20 70 6f 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | gexp.string.pos)................ |
| 4500 | 20 20 20 28 3c 20 70 6f 73 20 28 6c 65 6e 67 74 68 20 73 74 72 69 6e 67 29 29 29 0a 20 20 20 20 | ...(<.pos.(length.string)))..... |
| 4520 | 20 20 20 20 28 70 75 73 68 20 28 63 6f 6e 73 20 28 6d 61 74 63 68 2d 62 65 67 69 6e 6e 69 6e 67 | ....(push.(cons.(match-beginning |
| 4540 | 20 73 75 62 65 78 70 2d 64 65 70 74 68 29 20 28 6d 61 74 63 68 2d 65 6e 64 20 73 75 62 65 78 70 | .subexp-depth).(match-end.subexp |
| 4560 | 2d 64 65 70 74 68 29 29 20 72 65 73 75 6c 74 29 0a 20 20 20 20 20 20 20 20 28 73 65 74 71 20 70 | -depth)).result).........(setq.p |
| 4580 | 6f 73 20 28 6d 61 74 63 68 2d 65 6e 64 20 30 29 29 29 0a 20 20 20 20 20 20 28 6e 72 65 76 65 72 | os.(match-end.0))).......(nrever |
| 45a0 | 73 65 20 72 65 73 75 6c 74 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 73 2d 6d 61 74 63 68 20 28 72 | se.result))))..(defun.s-match.(r |
| 45c0 | 65 67 65 78 70 20 73 20 26 6f 70 74 69 6f 6e 61 6c 20 73 74 61 72 74 29 0a 20 20 22 57 68 65 6e | egexp.s.&optional.start)..."When |
| 45e0 | 20 74 68 65 20 67 69 76 65 6e 20 65 78 70 72 65 73 73 69 6f 6e 20 6d 61 74 63 68 65 73 20 74 68 | .the.given.expression.matches.th |
| 4600 | 65 20 73 74 72 69 6e 67 2c 20 74 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 | e.string,.this.function.returns. |
| 4620 | 61 20 6c 69 73 74 0a 6f 66 20 74 68 65 20 77 68 6f 6c 65 20 6d 61 74 63 68 69 6e 67 20 73 74 72 | a.list.of.the.whole.matching.str |
| 4640 | 69 6e 67 20 61 6e 64 20 61 20 73 74 72 69 6e 67 20 66 6f 72 20 65 61 63 68 20 6d 61 74 63 68 65 | ing.and.a.string.for.each.matche |
| 4660 | 64 20 73 75 62 65 78 70 72 65 73 73 69 6f 6e 73 2e 0a 53 75 62 65 78 70 72 65 73 73 69 6f 6e 73 | d.subexpressions..Subexpressions |
| 4680 | 20 74 68 61 74 20 64 69 64 6e 27 74 20 6d 61 74 63 68 20 61 72 65 20 72 65 70 72 65 73 65 6e 74 | .that.didn't.match.are.represent |
| 46a0 | 65 64 20 62 79 20 6e 69 6c 20 65 6c 65 6d 65 6e 74 73 0a 69 6e 20 74 68 65 20 6c 69 73 74 2c 20 | ed.by.nil.elements.in.the.list,. |
| 46c0 | 65 78 63 65 70 74 20 74 68 61 74 20 6e 6f 6e 2d 6d 61 74 63 68 69 6e 67 20 73 75 62 65 78 70 72 | except.that.non-matching.subexpr |
| 46e0 | 65 73 73 69 6f 6e 73 20 61 74 20 74 68 65 20 65 6e 64 0a 6f 66 20 52 45 47 45 58 50 20 6d 69 67 | essions.at.the.end.of.REGEXP.mig |
| 4700 | 68 74 20 6e 6f 74 20 61 70 70 65 61 72 20 61 74 20 61 6c 6c 20 69 6e 20 74 68 65 20 6c 69 73 74 | ht.not.appear.at.all.in.the.list |
| 4720 | 2e 20 20 54 68 61 74 20 69 73 2c 20 74 68 65 0a 72 65 74 75 72 6e 65 64 20 6c 69 73 74 20 63 61 | ...That.is,.the.returned.list.ca |
| 4740 | 6e 20 62 65 20 73 68 6f 72 74 65 72 20 74 68 61 6e 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 | n.be.shorter.than.the.number.of. |
| 4760 | 73 75 62 65 78 70 72 65 73 73 69 6f 6e 73 20 69 6e 0a 52 45 47 45 58 50 20 70 6c 75 73 20 6f 6e | subexpressions.in.REGEXP.plus.on |
| 4780 | 65 2e 20 20 49 66 20 52 45 47 45 58 50 20 64 69 64 20 6e 6f 74 20 6d 61 74 63 68 20 74 68 65 20 | e...If.REGEXP.did.not.match.the. |
| 47a0 | 72 65 74 75 72 6e 65 64 20 76 61 6c 75 65 20 69 73 0a 61 6e 20 65 6d 70 74 79 20 6c 69 73 74 20 | returned.value.is.an.empty.list. |
| 47c0 | 28 6e 69 6c 29 2e 0a 0a 57 68 65 6e 20 53 54 41 52 54 20 69 73 20 6e 6f 6e 2d 6e 69 6c 20 74 68 | (nil)...When.START.is.non-nil.th |
| 47e0 | 65 20 73 65 61 72 63 68 20 77 69 6c 6c 20 73 74 61 72 74 20 61 74 20 74 68 61 74 20 69 6e 64 65 | e.search.will.start.at.that.inde |
| 4800 | 78 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 | x."...(declare.(side-effect-free |
| 4820 | 20 74 29 29 0a 20 20 28 73 61 76 65 2d 6d 61 74 63 68 2d 64 61 74 61 0a 20 20 20 20 28 69 66 20 | .t))...(save-match-data.....(if. |
| 4840 | 28 73 74 72 69 6e 67 2d 6d 61 74 63 68 20 72 65 67 65 78 70 20 73 20 73 74 61 72 74 29 0a 20 20 | (string-match.regexp.s.start)... |
| 4860 | 20 20 20 20 20 20 28 6c 65 74 20 28 28 6d 61 74 63 68 2d 64 61 74 61 2d 6c 69 73 74 20 28 6d 61 | ......(let.((match-data-list.(ma |
| 4880 | 74 63 68 2d 64 61 74 61 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 29 | tch-data))...............result) |
| 48a0 | 0a 20 20 20 20 20 20 20 20 20 20 28 77 68 69 6c 65 20 6d 61 74 63 68 2d 64 61 74 61 2d 6c 69 73 | ...........(while.match-data-lis |
| 48c0 | 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 2a 20 28 28 62 65 67 20 28 63 61 72 20 6d | t.............(let*.((beg.(car.m |
| 48e0 | 61 74 63 68 2d 64 61 74 61 2d 6c 69 73 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | atch-data-list))................ |
| 4900 | 20 20 20 20 28 65 6e 64 20 28 63 61 64 72 20 6d 61 74 63 68 2d 64 61 74 61 2d 6c 69 73 74 29 29 | ....(end.(cadr.match-data-list)) |
| 4920 | 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 75 62 73 20 28 69 66 20 28 61 | ....................(subs.(if.(a |
| 4940 | 6e 64 20 62 65 67 20 65 6e 64 29 20 28 73 75 62 73 74 72 69 6e 67 20 73 20 62 65 67 20 65 6e 64 | nd.beg.end).(substring.s.beg.end |
| 4960 | 29 20 6e 69 6c 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 72 65 73 | ).nil)))...............(setq.res |
| 4980 | 75 6c 74 20 28 63 6f 6e 73 20 73 75 62 73 20 72 65 73 75 6c 74 29 29 0a 20 20 20 20 20 20 20 20 | ult.(cons.subs.result))......... |
| 49a0 | 20 20 20 20 20 20 28 73 65 74 71 20 6d 61 74 63 68 2d 64 61 74 61 2d 6c 69 73 74 0a 20 20 20 20 | ......(setq.match-data-list..... |
| 49c0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 64 64 72 20 6d 61 74 63 68 2d 64 61 74 61 | ................(cddr.match-data |
| 49e0 | 2d 6c 69 73 74 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 6e 72 65 76 65 72 73 65 20 72 65 | -list))))...........(nreverse.re |
| 4a00 | 73 75 6c 74 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 73 2d 73 6c 69 63 65 2d 61 74 20 28 72 65 | sult)))))..(defun.s-slice-at.(re |
| 4a20 | 67 65 78 70 20 73 29 0a 20 20 22 53 6c 69 63 65 73 20 53 20 75 70 20 61 74 20 65 76 65 72 79 20 | gexp.s)..."Slices.S.up.at.every. |
| 4a40 | 69 6e 64 65 78 20 6d 61 74 63 68 69 6e 67 20 52 45 47 45 58 50 2e 22 0a 20 20 28 64 65 63 6c 61 | index.matching.REGEXP."...(decla |
| 4a60 | 72 65 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 69 66 20 28 | re.(side-effect-free.t))...(if.( |
| 4a80 | 73 2d 62 6c 61 6e 6b 3f 20 73 29 0a 20 20 20 20 20 20 28 6c 69 73 74 20 73 29 0a 20 20 20 20 28 | s-blank?.s).......(list.s).....( |
| 4aa0 | 6c 65 74 20 28 73 73 29 0a 20 20 20 20 20 20 28 77 68 69 6c 65 20 28 6e 6f 74 20 28 73 2d 62 6c | let.(ss).......(while.(not.(s-bl |
| 4ac0 | 61 6e 6b 3f 20 73 29 29 0a 20 20 20 20 20 20 20 20 28 73 61 76 65 2d 6d 61 74 63 68 2d 64 61 74 | ank?.s)).........(save-match-dat |
| 4ae0 | 61 0a 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 69 20 28 73 74 72 69 6e 67 2d 6d 61 74 | a...........(let.((i.(string-mat |
| 4b00 | 63 68 20 72 65 67 65 78 70 20 73 20 31 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 | ch.regexp.s.1))).............(if |
| 4b20 | 20 69 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 73 73 20 28 63 6f 6e | .i.................(setq.ss.(con |
| 4b40 | 73 20 28 73 75 62 73 74 72 69 6e 67 20 73 20 30 20 69 29 20 73 73 29 0a 20 20 20 20 20 20 20 20 | s.(substring.s.0.i).ss)......... |
| 4b60 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 20 28 73 75 62 73 74 72 69 6e 67 20 73 20 69 29 29 | ..............s.(substring.s.i)) |
| 4b80 | 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 73 73 20 28 63 6f 6e 73 20 73 20 | ...............(setq.ss.(cons.s. |
| 4ba0 | 73 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 20 22 22 29 29 29 29 | ss).....................s."")))) |
| 4bc0 | 29 0a 20 20 20 20 20 20 28 6e 72 65 76 65 72 73 65 20 73 73 29 29 29 29 0a 0a 28 64 65 66 75 6e | ).......(nreverse.ss))))..(defun |
| 4be0 | 20 73 2d 73 70 6c 69 74 2d 77 6f 72 64 73 20 28 73 29 0a 20 20 22 53 70 6c 69 74 20 53 20 69 6e | .s-split-words.(s)..."Split.S.in |
| 4c00 | 74 6f 20 6c 69 73 74 20 6f 66 20 77 6f 72 64 73 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 73 | to.list.of.words."...(declare.(s |
| 4c20 | 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 73 2d 73 70 6c 69 74 0a 20 | ide-effect-free.t))...(s-split.. |
| 4c40 | 20 20 22 5b 5e 5b 3a 77 6f 72 64 3a 5d 30 2d 39 5d 2b 22 0a 20 20 20 28 6c 65 74 20 28 28 63 61 | .."[^[:word:]0-9]+"....(let.((ca |
| 4c60 | 73 65 2d 66 6f 6c 64 2d 73 65 61 72 63 68 20 6e 69 6c 29 29 0a 20 20 20 20 20 28 72 65 70 6c 61 | se-fold-search.nil))......(repla |
| 4c80 | 63 65 2d 72 65 67 65 78 70 2d 69 6e 2d 73 74 72 69 6e 67 0a 20 20 20 20 20 20 22 5c 5c 28 5b 5b | ce-regexp-in-string......."\\([[ |
| 4ca0 | 3a 6c 6f 77 65 72 3a 5d 5d 5c 5c 29 5c 5c 28 5b 5b 3a 75 70 70 65 72 3a 5d 5d 5c 5c 29 22 20 22 | :lower:]]\\)\\([[:upper:]]\\)"." |
| 4cc0 | 5c 5c 31 20 5c 5c 32 22 0a 20 20 20 20 20 20 28 72 65 70 6c 61 63 65 2d 72 65 67 65 78 70 2d 69 | \\1.\\2".......(replace-regexp-i |
| 4ce0 | 6e 2d 73 74 72 69 6e 67 20 22 5c 5c 28 5b 5b 3a 75 70 70 65 72 3a 5d 5d 5c 5c 29 5c 5c 28 5b 5b | n-string."\\([[:upper:]]\\)\\([[ |
| 4d00 | 3a 75 70 70 65 72 3a 5d 5d 5b 30 2d 39 5b 3a 6c 6f 77 65 72 3a 5d 5d 5c 5c 29 22 20 22 5c 5c 31 | :upper:]][0-9[:lower:]]\\)"."\\1 |
| 4d20 | 20 5c 5c 32 22 20 73 29 29 29 0a 20 20 20 74 29 29 0a 0a 28 64 65 66 75 6e 20 73 2d 2d 6d 61 70 | .\\2".s)))....t))..(defun.s--map |
| 4d40 | 63 61 72 2d 68 65 61 64 20 28 66 6e 2d 68 65 61 64 20 66 6e 2d 72 65 73 74 20 6c 69 73 74 29 0a | car-head.(fn-head.fn-rest.list). |
| 4d60 | 20 20 22 4c 69 6b 65 20 4d 41 50 43 41 52 2c 20 62 75 74 20 61 70 70 6c 69 65 73 20 61 20 64 69 | .."Like.MAPCAR,.but.applies.a.di |
| 4d80 | 66 66 65 72 65 6e 74 20 66 75 6e 63 74 69 6f 6e 20 74 6f 20 74 68 65 20 66 69 72 73 74 20 65 6c | fferent.function.to.the.first.el |
| 4da0 | 65 6d 65 6e 74 2e 22 0a 20 20 28 69 66 20 6c 69 73 74 0a 20 20 20 20 20 20 28 63 6f 6e 73 20 28 | ement."...(if.list.......(cons.( |
| 4dc0 | 66 75 6e 63 61 6c 6c 20 66 6e 2d 68 65 61 64 20 28 63 61 72 20 6c 69 73 74 29 29 20 28 6d 61 70 | funcall.fn-head.(car.list)).(map |
| 4de0 | 63 61 72 20 66 6e 2d 72 65 73 74 20 28 63 64 72 20 6c 69 73 74 29 29 29 29 29 0a 0a 28 64 65 66 | car.fn-rest.(cdr.list)))))..(def |
| 4e00 | 75 6e 20 73 2d 6c 6f 77 65 72 2d 63 61 6d 65 6c 2d 63 61 73 65 20 28 73 29 0a 20 20 22 43 6f 6e | un.s-lower-camel-case.(s)..."Con |
| 4e20 | 76 65 72 74 20 53 20 74 6f 20 6c 6f 77 65 72 43 61 6d 65 6c 43 61 73 65 2e 22 0a 20 20 28 64 65 | vert.S.to.lowerCamelCase."...(de |
| 4e40 | 63 6c 61 72 65 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 73 | clare.(side-effect-free.t))...(s |
| 4e60 | 2d 6a 6f 69 6e 20 22 22 20 28 73 2d 2d 6d 61 70 63 61 72 2d 68 65 61 64 20 27 64 6f 77 6e 63 61 | -join."".(s--mapcar-head.'downca |
| 4e80 | 73 65 20 27 63 61 70 69 74 61 6c 69 7a 65 20 28 73 2d 73 70 6c 69 74 2d 77 6f 72 64 73 20 73 29 | se.'capitalize.(s-split-words.s) |
| 4ea0 | 29 29 29 0a 0a 28 64 65 66 75 6e 20 73 2d 75 70 70 65 72 2d 63 61 6d 65 6c 2d 63 61 73 65 20 28 | )))..(defun.s-upper-camel-case.( |
| 4ec0 | 73 29 0a 20 20 22 43 6f 6e 76 65 72 74 20 53 20 74 6f 20 55 70 70 65 72 43 61 6d 65 6c 43 61 73 | s)..."Convert.S.to.UpperCamelCas |
| 4ee0 | 65 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 | e."...(declare.(side-effect-free |
| 4f00 | 20 74 29 29 0a 20 20 28 73 2d 6a 6f 69 6e 20 22 22 20 28 6d 61 70 63 61 72 20 27 63 61 70 69 74 | .t))...(s-join."".(mapcar.'capit |
| 4f20 | 61 6c 69 7a 65 20 28 73 2d 73 70 6c 69 74 2d 77 6f 72 64 73 20 73 29 29 29 29 0a 0a 28 64 65 66 | alize.(s-split-words.s))))..(def |
| 4f40 | 75 6e 20 73 2d 73 6e 61 6b 65 2d 63 61 73 65 20 28 73 29 0a 20 20 22 43 6f 6e 76 65 72 74 20 53 | un.s-snake-case.(s)..."Convert.S |
| 4f60 | 20 74 6f 20 73 6e 61 6b 65 5f 63 61 73 65 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 73 69 64 | .to.snake_case."...(declare.(sid |
| 4f80 | 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 73 2d 6a 6f 69 6e 20 22 5f 22 20 | e-effect-free.t))...(s-join."_". |
| 4fa0 | 28 6d 61 70 63 61 72 20 27 64 6f 77 6e 63 61 73 65 20 28 73 2d 73 70 6c 69 74 2d 77 6f 72 64 73 | (mapcar.'downcase.(s-split-words |
| 4fc0 | 20 73 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 73 2d 64 61 73 68 65 64 2d 77 6f 72 64 73 20 28 73 | .s))))..(defun.s-dashed-words.(s |
| 4fe0 | 29 0a 20 20 22 43 6f 6e 76 65 72 74 20 53 20 74 6f 20 64 61 73 68 65 64 2d 77 6f 72 64 73 2e 22 | )..."Convert.S.to.dashed-words." |
| 5000 | 0a 20 20 28 64 65 63 6c 61 72 65 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 | ...(declare.(side-effect-free.t) |
| 5020 | 29 0a 20 20 28 73 2d 6a 6f 69 6e 20 22 2d 22 20 28 6d 61 70 63 61 72 20 27 64 6f 77 6e 63 61 73 | )...(s-join."-".(mapcar.'downcas |
| 5040 | 65 20 28 73 2d 73 70 6c 69 74 2d 77 6f 72 64 73 20 73 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 73 | e.(s-split-words.s))))..(defun.s |
| 5060 | 2d 73 70 61 63 65 64 2d 77 6f 72 64 73 20 28 73 29 0a 20 20 22 43 6f 6e 76 65 72 74 20 53 20 74 | -spaced-words.(s)..."Convert.S.t |
| 5080 | 6f 20 73 70 61 63 65 64 20 77 6f 72 64 73 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 73 69 64 | o.spaced.words."...(declare.(sid |
| 50a0 | 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 73 2d 6a 6f 69 6e 20 22 20 22 20 | e-effect-free.t))...(s-join.".". |
| 50c0 | 28 73 2d 73 70 6c 69 74 2d 77 6f 72 64 73 20 73 29 29 29 0a 0a 28 64 65 66 75 6e 20 73 2d 63 61 | (s-split-words.s)))..(defun.s-ca |
| 50e0 | 70 69 74 61 6c 69 7a 65 64 2d 77 6f 72 64 73 20 28 73 29 0a 20 20 22 43 6f 6e 76 65 72 74 20 53 | pitalized-words.(s)..."Convert.S |
| 5100 | 20 74 6f 20 43 61 70 69 74 61 6c 69 7a 65 64 20 77 6f 72 64 73 2e 22 0a 20 20 28 64 65 63 6c 61 | .to.Capitalized.words."...(decla |
| 5120 | 72 65 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 6c 65 74 20 | re.(side-effect-free.t))...(let. |
| 5140 | 28 28 77 6f 72 64 73 20 28 73 2d 73 70 6c 69 74 2d 77 6f 72 64 73 20 73 29 29 29 0a 20 20 20 20 | ((words.(s-split-words.s)))..... |
| 5160 | 28 73 2d 6a 6f 69 6e 20 22 20 22 20 28 63 6f 6e 73 20 28 63 61 70 69 74 61 6c 69 7a 65 20 28 63 | (s-join.".".(cons.(capitalize.(c |
| 5180 | 61 72 20 77 6f 72 64 73 29 29 20 28 6d 61 70 63 61 72 20 27 64 6f 77 6e 63 61 73 65 20 28 63 64 | ar.words)).(mapcar.'downcase.(cd |
| 51a0 | 72 20 77 6f 72 64 73 29 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 73 2d 74 69 74 6c 65 69 7a 65 | r.words))))))..(defun.s-titleize |
| 51c0 | 64 2d 77 6f 72 64 73 20 28 73 29 0a 20 20 22 43 6f 6e 76 65 72 74 20 53 20 74 6f 20 54 69 74 6c | d-words.(s)..."Convert.S.to.Titl |
| 51e0 | 65 69 7a 65 64 20 57 6f 72 64 73 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 73 69 64 65 2d 65 | eized.Words."...(declare.(side-e |
| 5200 | 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 73 2d 6a 6f 69 6e 20 22 20 22 20 28 6d 61 | ffect-free.t))...(s-join.".".(ma |
| 5220 | 70 63 61 72 20 27 73 2d 74 69 74 6c 65 69 7a 65 20 28 73 2d 73 70 6c 69 74 2d 77 6f 72 64 73 20 | pcar.'s-titleize.(s-split-words. |
| 5240 | 73 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 73 2d 77 6f 72 64 2d 69 6e 69 74 69 61 6c 73 20 28 73 | s))))..(defun.s-word-initials.(s |
| 5260 | 29 0a 20 20 22 43 6f 6e 76 65 72 74 20 53 20 74 6f 20 69 74 73 20 69 6e 69 74 69 61 6c 73 2e 22 | )..."Convert.S.to.its.initials." |
| 5280 | 0a 20 20 28 64 65 63 6c 61 72 65 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 | ...(declare.(side-effect-free.t) |
| 52a0 | 29 0a 20 20 28 73 2d 6a 6f 69 6e 20 22 22 20 28 6d 61 70 63 61 72 20 28 6c 61 6d 62 64 61 20 28 | )...(s-join."".(mapcar.(lambda.( |
| 52c0 | 73 73 29 20 28 73 75 62 73 74 72 69 6e 67 20 73 73 20 30 20 31 29 29 0a 20 20 20 20 20 20 20 20 | ss).(substring.ss.0.1))......... |
| 52e0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 2d 73 70 6c 69 74 2d 77 6f 72 64 73 20 73 29 29 29 | .............(s-split-words.s))) |
| 5300 | 29 0a 0a 3b 3b 20 45 72 72 6f 72 73 20 66 6f 72 20 73 2d 66 6f 72 6d 61 74 0a 28 70 72 6f 67 6e | )..;;.Errors.for.s-format.(progn |
| 5320 | 0a 20 20 28 70 75 74 20 27 73 2d 66 6f 72 6d 61 74 2d 72 65 73 6f 6c 76 65 0a 20 20 20 20 20 20 | ...(put.'s-format-resolve....... |
| 5340 | 20 27 65 72 72 6f 72 2d 63 6f 6e 64 69 74 69 6f 6e 73 0a 20 20 20 20 20 20 20 27 28 65 72 72 6f | .'error-conditions........'(erro |
| 5360 | 72 20 73 2d 66 6f 72 6d 61 74 20 73 2d 66 6f 72 6d 61 74 2d 72 65 73 6f 6c 76 65 29 29 0a 20 20 | r.s-format.s-format-resolve))... |
| 5380 | 28 70 75 74 20 27 73 2d 66 6f 72 6d 61 74 2d 72 65 73 6f 6c 76 65 0a 20 20 20 20 20 20 20 27 65 | (put.'s-format-resolve........'e |
| 53a0 | 72 72 6f 72 2d 6d 65 73 73 61 67 65 0a 20 20 20 20 20 20 20 22 43 61 6e 6e 6f 74 20 72 65 73 6f | rror-message........"Cannot.reso |
| 53c0 | 6c 76 65 20 61 20 74 65 6d 70 6c 61 74 65 20 74 6f 20 76 61 6c 75 65 73 22 29 29 0a 0a 28 64 65 | lve.a.template.to.values"))..(de |
| 53e0 | 66 75 6e 20 73 2d 66 6f 72 6d 61 74 20 28 74 65 6d 70 6c 61 74 65 20 72 65 70 6c 61 63 65 72 20 | fun.s-format.(template.replacer. |
| 5400 | 26 6f 70 74 69 6f 6e 61 6c 20 65 78 74 72 61 29 0a 20 20 22 46 6f 72 6d 61 74 20 54 45 4d 50 4c | &optional.extra)..."Format.TEMPL |
| 5420 | 41 54 45 20 77 69 74 68 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 52 45 50 4c 41 43 45 52 2e 0a | ATE.with.the.function.REPLACER.. |
| 5440 | 0a 52 45 50 4c 41 43 45 52 20 74 61 6b 65 73 20 61 6e 20 61 72 67 75 6d 65 6e 74 20 6f 66 20 74 | .REPLACER.takes.an.argument.of.t |
| 5460 | 68 65 20 66 6f 72 6d 61 74 20 76 61 72 69 61 62 6c 65 20 61 6e 64 20 6f 70 74 69 6f 6e 61 6c 6c | he.format.variable.and.optionall |
| 5480 | 79 0a 61 6e 20 65 78 74 72 61 20 61 72 67 75 6d 65 6e 74 20 77 68 69 63 68 20 69 73 20 74 68 65 | y.an.extra.argument.which.is.the |
| 54a0 | 20 45 58 54 52 41 20 76 61 6c 75 65 20 66 72 6f 6d 20 74 68 65 20 63 61 6c 6c 20 74 6f 0a 60 73 | .EXTRA.value.from.the.call.to.`s |
| 54c0 | 2d 66 6f 72 6d 61 74 27 2e 0a 0a 53 65 76 65 72 61 6c 20 73 74 61 6e 64 61 72 64 20 60 73 2d 66 | -format'...Several.standard.`s-f |
| 54e0 | 6f 72 6d 61 74 27 20 68 65 6c 70 65 72 20 66 75 6e 63 74 69 6f 6e 73 20 61 72 65 20 72 65 63 6f | ormat'.helper.functions.are.reco |
| 5500 | 67 6e 69 7a 65 64 20 61 6e 64 0a 61 64 61 70 74 65 64 20 66 6f 72 20 74 68 69 73 3a 0a 0a 20 20 | gnized.and.adapted.for.this:.... |
| 5520 | 20 20 28 73 2d 66 6f 72 6d 61 74 20 5c 22 24 7b 6e 61 6d 65 7d 5c 22 20 5c 5c 3d 27 67 65 74 68 | ..(s-format.\"${name}\".\\='geth |
| 5540 | 61 73 68 20 68 61 73 68 2d 74 61 62 6c 65 29 0a 20 20 20 20 28 73 2d 66 6f 72 6d 61 74 20 5c 22 | ash.hash-table).....(s-format.\" |
| 5560 | 24 7b 6e 61 6d 65 7d 5c 22 20 5c 5c 3d 27 61 67 65 74 20 61 6c 69 73 74 29 0a 20 20 20 20 28 73 | ${name}\".\\='aget.alist).....(s |
| 5580 | 2d 66 6f 72 6d 61 74 20 5c 22 24 30 5c 22 20 5c 5c 3d 27 65 6c 74 20 73 65 71 75 65 6e 63 65 29 | -format.\"$0\".\\='elt.sequence) |
| 55a0 | 0a 0a 54 68 65 20 52 45 50 4c 41 43 45 52 20 66 75 6e 63 74 69 6f 6e 20 6d 61 79 20 62 65 20 75 | ..The.REPLACER.function.may.be.u |
| 55c0 | 73 65 64 20 74 6f 20 64 6f 20 61 6e 79 20 6f 74 68 65 72 20 6b 69 6e 64 20 6f 66 0a 74 72 61 6e | sed.to.do.any.other.kind.of.tran |
| 55e0 | 73 66 6f 72 6d 61 74 69 6f 6e 2e 22 0a 20 20 28 6c 65 74 20 28 28 73 61 76 65 64 2d 6d 61 74 63 | sformation."...(let.((saved-matc |
| 5600 | 68 2d 64 61 74 61 20 28 6d 61 74 63 68 2d 64 61 74 61 29 29 29 0a 20 20 20 20 28 75 6e 77 69 6e | h-data.(match-data))).....(unwin |
| 5620 | 64 2d 70 72 6f 74 65 63 74 0a 20 20 20 20 20 20 20 20 28 72 65 70 6c 61 63 65 2d 72 65 67 65 78 | d-protect.........(replace-regex |
| 5640 | 70 2d 69 6e 2d 73 74 72 69 6e 67 0a 20 20 20 20 20 20 20 20 20 22 5c 5c 24 5c 5c 28 7b 5c 5c 28 | p-in-string.........."\\$\\({\\( |
| 5660 | 5b 5e 7d 5d 2b 5c 5c 29 7d 5c 5c 7c 5b 30 2d 39 5d 2b 5c 5c 29 22 0a 20 20 20 20 20 20 20 20 20 | [^}]+\\)}\\|[0-9]+\\)".......... |
| 5680 | 28 6c 61 6d 62 64 61 20 28 6d 64 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 76 | (lambda.(md)............(let.((v |
| 56a0 | 61 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 6d 20 28 6d | ar...................(let.((m.(m |
| 56c0 | 61 74 63 68 2d 73 74 72 69 6e 67 20 32 20 6d 64 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 | atch-string.2.md)))............. |
| 56e0 | 20 20 20 20 20 20 20 20 28 69 66 20 6d 20 6d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ........(if.m.m................. |
| 5700 | 20 20 20 20 20 20 28 73 74 72 69 6e 67 2d 74 6f 2d 6e 75 6d 62 65 72 20 28 6d 61 74 63 68 2d 73 | ......(string-to-number.(match-s |
| 5720 | 74 72 69 6e 67 20 31 20 6d 64 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | tring.1.md)))))................. |
| 5740 | 20 28 72 65 70 6c 61 63 65 72 2d 6d 61 74 63 68 2d 64 61 74 61 20 28 6d 61 74 63 68 2d 64 61 74 | .(replacer-match-data.(match-dat |
| 5760 | 61 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 75 6e 77 69 6e 64 2d 70 72 6f 74 65 63 | a)))..............(unwind-protec |
| 5780 | 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 76 0a 20 20 20 20 | t..................(let.((v..... |
| 57a0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 64 0a 20 20 20 20 20 20 | ....................(cond....... |
| 57c0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 65 71 20 72 65 70 6c 61 63 65 72 | ...................((eq.replacer |
| 57e0 | 20 27 67 65 74 68 61 73 68 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | .'gethash)...................... |
| 5800 | 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 72 65 70 6c 61 63 65 72 20 76 61 72 20 65 78 74 72 61 | .....(funcall.replacer.var.extra |
| 5820 | 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 65 71 | ))..........................((eq |
| 5840 | 20 72 65 70 6c 61 63 65 72 20 27 61 67 65 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | .replacer.'aget)................ |
| 5860 | 20 20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 27 73 2d 2d 61 67 65 74 20 65 78 74 | ...........(funcall.'s--aget.ext |
| 5880 | 72 61 20 76 61 72 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ra.var))........................ |
| 58a0 | 20 20 28 28 65 71 20 72 65 70 6c 61 63 65 72 20 27 65 6c 74 29 0a 20 20 20 20 20 20 20 20 20 20 | ..((eq.replacer.'elt)........... |
| 58c0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 72 65 70 6c 61 63 65 | ................(funcall.replace |
| 58e0 | 72 20 65 78 74 72 61 20 76 61 72 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | r.extra.var))................... |
| 5900 | 20 20 20 20 20 20 20 28 28 65 71 20 72 65 70 6c 61 63 65 72 20 27 6f 72 65 66 29 0a 20 20 20 20 | .......((eq.replacer.'oref)..... |
| 5920 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 23 | ......................(funcall.# |
| 5940 | 27 73 6c 6f 74 2d 76 61 6c 75 65 20 65 78 74 72 61 20 28 69 6e 74 65 72 6e 20 76 61 72 29 29 29 | 'slot-value.extra.(intern.var))) |
| 5960 | 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 0a 20 20 20 | ..........................(t.... |
| 5980 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 2d 6d 61 74 63 | .......................(set-matc |
| 59a0 | 68 2d 64 61 74 61 20 73 61 76 65 64 2d 6d 61 74 63 68 2d 64 61 74 61 29 0a 20 20 20 20 20 20 20 | h-data.saved-match-data)........ |
| 59c0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 65 78 74 72 61 0a 20 20 20 | ...................(if.extra.... |
| 59e0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 | ...........................(func |
| 5a00 | 61 6c 6c 20 72 65 70 6c 61 63 65 72 20 76 61 72 20 65 78 74 72 61 29 0a 20 20 20 20 20 20 20 20 | all.replacer.var.extra)......... |
| 5a20 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 72 65 70 | ....................(funcall.rep |
| 5a40 | 6c 61 63 65 72 20 76 61 72 29 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | lacer.var))))))................. |
| 5a60 | 20 20 20 28 69 66 20 76 20 28 66 6f 72 6d 61 74 20 22 25 73 22 20 76 29 20 28 73 69 67 6e 61 6c | ...(if.v.(format."%s".v).(signal |
| 5a80 | 20 27 73 2d 66 6f 72 6d 61 74 2d 72 65 73 6f 6c 76 65 20 6d 64 29 29 29 0a 20 20 20 20 20 20 20 | .'s-format-resolve.md)))........ |
| 5aa0 | 20 20 20 20 20 20 20 20 28 73 65 74 2d 6d 61 74 63 68 2d 64 61 74 61 20 72 65 70 6c 61 63 65 72 | ........(set-match-data.replacer |
| 5ac0 | 2d 6d 61 74 63 68 2d 64 61 74 61 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 74 65 6d 70 6c 61 74 | -match-data))))..........templat |
| 5ae0 | 65 0a 20 20 20 20 20 20 20 20 20 3b 3b 20 4e 65 65 64 20 6c 69 74 65 72 61 6c 20 74 6f 20 6d 61 | e..........;;.Need.literal.to.ma |
| 5b00 | 6b 65 20 73 75 72 65 20 69 74 20 77 6f 72 6b 73 0a 20 20 20 20 20 20 20 20 20 74 20 74 29 0a 20 | ke.sure.it.works..........t.t).. |
| 5b20 | 20 20 20 20 20 28 73 65 74 2d 6d 61 74 63 68 2d 64 61 74 61 20 73 61 76 65 64 2d 6d 61 74 63 68 | .....(set-match-data.saved-match |
| 5b40 | 2d 64 61 74 61 29 29 29 29 0a 0a 28 64 65 66 76 61 72 20 73 2d 6c 65 78 2d 76 61 6c 75 65 2d 61 | -data))))..(defvar.s-lex-value-a |
| 5b60 | 73 2d 6c 69 73 70 20 6e 69 6c 0a 20 20 22 49 66 20 60 74 27 20 69 6e 74 65 72 70 6f 6c 61 74 65 | s-lisp.nil..."If.`t'.interpolate |
| 5b80 | 20 6c 69 73 70 20 76 61 6c 75 65 73 20 61 73 20 6c 69 73 70 2e 0a 0a 60 73 2d 6c 65 78 2d 66 6f | .lisp.values.as.lisp...`s-lex-fo |
| 5ba0 | 72 6d 61 74 27 20 69 6e 73 65 72 74 73 20 76 61 6c 75 65 73 20 77 69 74 68 20 28 66 6f 72 6d 61 | rmat'.inserts.values.with.(forma |
| 5bc0 | 74 20 5c 22 25 53 5c 22 29 2e 22 29 0a 0a 28 64 65 66 75 6e 20 73 2d 6c 65 78 2d 66 6d 74 7c 65 | t.\"%S\").")..(defun.s-lex-fmt|e |
| 5be0 | 78 70 61 6e 64 20 28 66 6d 74 29 0a 20 20 22 45 78 70 61 6e 64 20 46 4d 54 20 69 6e 74 6f 20 6c | xpand.(fmt)..."Expand.FMT.into.l |
| 5c00 | 69 73 70 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 | isp."...(declare.(side-effect-fr |
| 5c20 | 65 65 20 74 29 29 0a 20 20 28 6c 69 73 74 20 27 73 2d 66 6f 72 6d 61 74 20 66 6d 74 20 28 71 75 | ee.t))...(list.'s-format.fmt.(qu |
| 5c40 | 6f 74 65 20 27 61 67 65 74 29 0a 20 20 20 20 20 20 20 20 28 61 70 70 65 6e 64 20 27 28 6c 69 73 | ote.'aget).........(append.'(lis |
| 5c60 | 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 61 70 63 61 72 0a 20 20 20 20 20 | t).................(mapcar...... |
| 5c80 | 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 6d 61 74 63 68 65 73 29 0a 20 20 | ............(lambda.(matches)... |
| 5ca0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 0a 20 20 20 20 20 20 20 20 20 | .................(list.......... |
| 5cc0 | 20 20 20 20 20 20 20 20 20 20 20 27 63 6f 6e 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ...........'cons................ |
| 5ce0 | 20 20 20 20 20 28 63 61 64 72 20 6d 61 74 63 68 65 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 | .....(cadr.matches)............. |
| 5d00 | 20 20 20 20 20 20 20 20 60 28 66 6f 72 6d 61 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ........`(format................ |
| 5d20 | 20 20 20 20 20 20 20 28 69 66 20 73 2d 6c 65 78 2d 76 61 6c 75 65 2d 61 73 2d 6c 69 73 70 20 22 | .......(if.s-lex-value-as-lisp." |
| 5d40 | 25 53 22 20 22 25 73 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | %S"."%s")....................... |
| 5d60 | 2c 28 69 6e 74 65 72 6e 20 28 63 61 64 72 20 6d 61 74 63 68 65 73 29 29 29 29 29 0a 20 20 20 20 | ,(intern.(cadr.matches)))))..... |
| 5d80 | 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 2d 6d 61 74 63 68 2d 73 74 72 69 6e 67 73 2d 61 6c | .............(s-match-strings-al |
| 5da0 | 6c 20 22 24 7b 5c 5c 28 5b 5e 7d 5d 2b 5c 5c 29 7d 22 20 66 6d 74 29 29 29 29 29 0a 0a 28 64 65 | l."${\\([^}]+\\)}".fmt)))))..(de |
| 5dc0 | 66 6d 61 63 72 6f 20 73 2d 6c 65 78 2d 66 6f 72 6d 61 74 20 28 66 6f 72 6d 61 74 2d 73 74 72 29 | fmacro.s-lex-format.(format-str) |
| 5de0 | 0a 20 20 22 60 73 2d 66 6f 72 6d 61 74 60 20 77 69 74 68 20 74 68 65 20 63 75 72 72 65 6e 74 20 | ..."`s-format`.with.the.current. |
| 5e00 | 65 6e 76 69 72 6f 6e 6d 65 6e 74 2e 0a 0a 46 4f 52 4d 41 54 2d 53 54 52 20 6d 61 79 20 75 73 65 | environment...FORMAT-STR.may.use |
| 5e20 | 20 74 68 65 20 60 73 2d 66 6f 72 6d 61 74 27 20 76 61 72 69 61 62 6c 65 20 72 65 66 65 72 65 6e | .the.`s-format'.variable.referen |
| 5e40 | 63 65 20 74 6f 20 72 65 66 65 72 20 74 6f 0a 61 6e 79 20 76 61 72 69 61 62 6c 65 3a 0a 0a 20 28 | ce.to.refer.to.any.variable:...( |
| 5e60 | 6c 65 74 20 28 28 78 20 31 29 29 0a 20 20 20 28 73 2d 6c 65 78 2d 66 6f 72 6d 61 74 20 5c 22 78 | let.((x.1))....(s-lex-format.\"x |
| 5e80 | 20 69 73 3a 20 24 7b 78 7d 5c 22 29 29 0a 0a 54 68 65 20 76 61 6c 75 65 73 20 6f 66 20 74 68 65 | .is:.${x}\"))..The.values.of.the |
| 5ea0 | 20 76 61 72 69 61 62 6c 65 73 20 61 72 65 20 69 6e 74 65 72 70 6f 6c 61 74 65 64 20 77 69 74 68 | .variables.are.interpolated.with |
| 5ec0 | 20 5c 22 25 73 5c 22 20 75 6e 6c 65 73 73 0a 74 68 65 20 76 61 72 69 61 62 6c 65 20 60 73 2d 6c | .\"%s\".unless.the.variable.`s-l |
| 5ee0 | 65 78 2d 76 61 6c 75 65 2d 61 73 2d 6c 69 73 70 27 20 69 73 20 60 74 27 20 61 6e 64 20 74 68 65 | ex-value-as-lisp'.is.`t'.and.the |
| 5f00 | 6e 20 74 68 65 79 20 61 72 65 0a 69 6e 74 65 72 70 6f 6c 61 74 65 64 20 77 69 74 68 20 5c 22 25 | n.they.are.interpolated.with.\"% |
| 5f20 | 53 5c 22 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 64 65 62 75 67 20 28 66 6f 72 6d 29 29 29 | S\"."...(declare.(debug.(form))) |
| 5f40 | 0a 20 20 28 73 2d 6c 65 78 2d 66 6d 74 7c 65 78 70 61 6e 64 20 66 6f 72 6d 61 74 2d 73 74 72 29 | ...(s-lex-fmt|expand.format-str) |
| 5f60 | 29 0a 0a 28 64 65 66 75 6e 20 73 2d 63 6f 75 6e 74 2d 6d 61 74 63 68 65 73 20 28 72 65 67 65 78 | )..(defun.s-count-matches.(regex |
| 5f80 | 70 20 73 20 26 6f 70 74 69 6f 6e 61 6c 20 73 74 61 72 74 20 65 6e 64 29 0a 20 20 22 43 6f 75 6e | p.s.&optional.start.end)..."Coun |
| 5fa0 | 74 20 6f 63 63 75 72 72 65 6e 63 65 73 20 6f 66 20 60 72 65 67 65 78 70 27 20 69 6e 20 60 73 27 | t.occurrences.of.`regexp'.in.`s' |
| 5fc0 | 2e 0a 0a 60 73 74 61 72 74 27 2c 20 69 6e 63 6c 75 73 69 76 65 2c 20 61 6e 64 20 60 65 6e 64 27 | ...`start',.inclusive,.and.`end' |
| 5fe0 | 2c 20 65 78 63 6c 75 73 69 76 65 2c 20 64 65 6c 69 6d 69 74 20 74 68 65 20 70 61 72 74 20 6f 66 | ,.exclusive,.delimit.the.part.of |
| 6000 | 20 60 73 27 20 74 6f 0a 6d 61 74 63 68 2e 20 20 60 73 74 61 72 74 27 20 61 6e 64 20 60 65 6e 64 | .`s'.to.match...`start'.and.`end |
| 6020 | 27 20 61 72 65 20 62 6f 74 68 20 69 6e 64 65 78 65 64 20 73 74 61 72 74 69 6e 67 20 61 74 20 31 | '.are.both.indexed.starting.at.1 |
| 6040 | 3b 20 74 68 65 20 69 6e 69 74 69 61 6c 0a 63 68 61 72 61 63 74 65 72 20 69 6e 20 60 73 27 20 69 | ;.the.initial.character.in.`s'.i |
| 6060 | 73 20 69 6e 64 65 78 20 31 2e 0a 0a 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 73 74 61 72 74 73 | s.index.1...This.function.starts |
| 6080 | 20 6c 6f 6f 6b 69 6e 67 20 66 6f 72 20 74 68 65 20 6e 65 78 74 20 6d 61 74 63 68 20 66 72 6f 6d | .looking.for.the.next.match.from |
| 60a0 | 20 74 68 65 20 65 6e 64 20 6f 66 20 74 68 65 0a 70 72 65 76 69 6f 75 73 20 6d 61 74 63 68 2e 20 | .the.end.of.the.previous.match.. |
| 60c0 | 20 48 65 6e 63 65 2c 20 69 74 20 69 67 6e 6f 72 65 73 20 6d 61 74 63 68 65 73 20 74 68 61 74 20 | .Hence,.it.ignores.matches.that. |
| 60e0 | 6f 76 65 72 6c 61 70 20 61 20 70 72 65 76 69 6f 75 73 6c 79 0a 66 6f 75 6e 64 20 6d 61 74 63 68 | overlap.a.previously.found.match |
| 6100 | 2e 20 20 54 6f 20 63 6f 75 6e 74 20 6f 76 65 72 6c 61 70 70 69 6e 67 20 6d 61 74 63 68 65 73 2c | ...To.count.overlapping.matches, |
| 6120 | 20 75 73 65 0a 60 73 2d 63 6f 75 6e 74 2d 6d 61 74 63 68 65 73 2d 61 6c 6c 27 2e 22 0a 20 20 28 | .use.`s-count-matches-all'."...( |
| 6140 | 64 65 63 6c 61 72 65 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 | declare.(side-effect-free.t))... |
| 6160 | 28 73 61 76 65 2d 6d 61 74 63 68 2d 64 61 74 61 0a 20 20 20 20 28 77 69 74 68 2d 74 65 6d 70 2d | (save-match-data.....(with-temp- |
| 6180 | 62 75 66 66 65 72 0a 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 73 29 0a 20 20 20 20 20 20 28 67 | buffer.......(insert.s).......(g |
| 61a0 | 6f 74 6f 2d 63 68 61 72 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 0a 20 20 20 20 20 20 28 63 6f 75 | oto-char.(point-min)).......(cou |
| 61c0 | 6e 74 2d 6d 61 74 63 68 65 73 20 72 65 67 65 78 70 20 28 6f 72 20 73 74 61 72 74 20 31 29 20 28 | nt-matches.regexp.(or.start.1).( |
| 61e0 | 6f 72 20 65 6e 64 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 | or.end.(point-max))))))..(defun. |
| 6200 | 73 2d 63 6f 75 6e 74 2d 6d 61 74 63 68 65 73 2d 61 6c 6c 20 28 72 65 67 65 78 70 20 73 20 26 6f | s-count-matches-all.(regexp.s.&o |
| 6220 | 70 74 69 6f 6e 61 6c 20 73 74 61 72 74 20 65 6e 64 29 0a 20 20 22 43 6f 75 6e 74 20 6f 63 63 75 | ptional.start.end)..."Count.occu |
| 6240 | 72 72 65 6e 63 65 73 20 6f 66 20 60 72 65 67 65 78 70 27 20 69 6e 20 60 73 27 2e 0a 0a 60 73 74 | rrences.of.`regexp'.in.`s'...`st |
| 6260 | 61 72 74 27 2c 20 69 6e 63 6c 75 73 69 76 65 2c 20 61 6e 64 20 60 65 6e 64 27 2c 20 65 78 63 6c | art',.inclusive,.and.`end',.excl |
| 6280 | 75 73 69 76 65 2c 20 64 65 6c 69 6d 69 74 20 74 68 65 20 70 61 72 74 20 6f 66 20 60 73 27 20 74 | usive,.delimit.the.part.of.`s'.t |
| 62a0 | 6f 0a 6d 61 74 63 68 2e 20 20 60 73 74 61 72 74 27 20 61 6e 64 20 60 65 6e 64 27 20 61 72 65 20 | o.match...`start'.and.`end'.are. |
| 62c0 | 62 6f 74 68 20 69 6e 64 65 78 65 64 20 73 74 61 72 74 69 6e 67 20 61 74 20 31 3b 20 74 68 65 20 | both.indexed.starting.at.1;.the. |
| 62e0 | 69 6e 69 74 69 61 6c 0a 63 68 61 72 61 63 74 65 72 20 69 6e 20 60 73 27 20 69 73 20 69 6e 64 65 | initial.character.in.`s'.is.inde |
| 6300 | 78 20 31 2e 0a 0a 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 73 74 61 72 74 73 20 6c 6f 6f 6b 69 | x.1...This.function.starts.looki |
| 6320 | 6e 67 20 66 6f 72 20 74 68 65 20 6e 65 78 74 20 6d 61 74 63 68 20 66 72 6f 6d 20 74 68 65 20 73 | ng.for.the.next.match.from.the.s |
| 6340 | 65 63 6f 6e 64 0a 63 68 61 72 61 63 74 65 72 20 6f 66 20 74 68 65 20 70 72 65 76 69 6f 75 73 20 | econd.character.of.the.previous. |
| 6360 | 6d 61 74 63 68 2e 20 20 48 65 6e 63 65 2c 20 69 74 20 63 6f 75 6e 74 73 20 6d 61 74 63 68 65 73 | match...Hence,.it.counts.matches |
| 6380 | 20 74 68 61 74 0a 6f 76 65 72 6c 61 70 20 61 20 70 72 65 76 69 6f 75 73 6c 79 20 66 6f 75 6e 64 | .that.overlap.a.previously.found |
| 63a0 | 20 6d 61 74 63 68 2e 20 20 54 6f 20 69 67 6e 6f 72 65 20 6d 61 74 63 68 65 73 20 74 68 61 74 20 | .match...To.ignore.matches.that. |
| 63c0 | 6f 76 65 72 6c 61 70 20 61 0a 70 72 65 76 69 6f 75 73 6c 79 20 66 6f 75 6e 64 20 6d 61 74 63 68 | overlap.a.previously.found.match |
| 63e0 | 2c 20 75 73 65 20 60 73 2d 63 6f 75 6e 74 2d 6d 61 74 63 68 65 73 27 2e 22 0a 20 20 28 64 65 63 | ,.use.`s-count-matches'."...(dec |
| 6400 | 6c 61 72 65 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 6c 65 | lare.(side-effect-free.t))...(le |
| 6420 | 74 2a 20 28 28 61 6e 63 68 6f 72 65 64 2d 72 65 67 65 78 70 20 28 66 6f 72 6d 61 74 20 22 5e 25 | t*.((anchored-regexp.(format."^% |
| 6440 | 73 22 20 72 65 67 65 78 70 29 29 0a 20 20 20 20 20 20 20 20 20 28 6d 61 74 63 68 2d 63 6f 75 6e | s".regexp))..........(match-coun |
| 6460 | 74 20 30 29 0a 20 20 20 20 20 20 20 20 20 28 69 20 30 29 0a 20 20 20 20 20 20 20 20 20 28 6e 61 | t.0)..........(i.0)..........(na |
| 6480 | 72 72 6f 77 65 64 2d 73 20 28 73 75 62 73 74 72 69 6e 67 20 73 20 28 69 66 20 73 74 61 72 74 20 | rrowed-s.(substring.s.(if.start. |
| 64a0 | 28 31 2d 20 73 74 61 72 74 29 20 30 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | (1-.start).0)................... |
| 64c0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 65 6e 64 20 28 31 2d 20 65 6e | ................(when.end.(1-.en |
| 64e0 | 64 29 29 29 29 29 0a 20 20 20 20 28 73 61 76 65 2d 6d 61 74 63 68 2d 64 61 74 61 0a 20 20 20 20 | d))))).....(save-match-data..... |
| 6500 | 20 20 28 77 68 69 6c 65 20 28 3c 20 69 20 28 6c 65 6e 67 74 68 20 6e 61 72 72 6f 77 65 64 2d 73 | ..(while.(<.i.(length.narrowed-s |
| 6520 | 29 29 0a 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 73 2d 6d 61 74 63 68 65 73 3f 20 61 6e 63 | )).........(when.(s-matches?.anc |
| 6540 | 68 6f 72 65 64 2d 72 65 67 65 78 70 20 28 73 75 62 73 74 72 69 6e 67 20 6e 61 72 72 6f 77 65 64 | hored-regexp.(substring.narrowed |
| 6560 | 2d 73 20 69 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 6d 61 74 63 68 2d 63 6f 75 | -s.i))...........(setq.match-cou |
| 6580 | 6e 74 20 28 31 2b 20 6d 61 74 63 68 2d 63 6f 75 6e 74 29 29 29 0a 20 20 20 20 20 20 20 20 28 73 | nt.(1+.match-count))).........(s |
| 65a0 | 65 74 71 20 69 20 28 31 2b 20 69 29 29 29 29 0a 20 20 20 20 6d 61 74 63 68 2d 63 6f 75 6e 74 29 | etq.i.(1+.i)))).....match-count) |
| 65c0 | 29 0a 0a 28 64 65 66 75 6e 20 73 2d 77 72 61 70 20 28 73 20 70 72 65 66 69 78 20 26 6f 70 74 69 | )..(defun.s-wrap.(s.prefix.&opti |
| 65e0 | 6f 6e 61 6c 20 73 75 66 66 69 78 29 0a 20 20 22 57 72 61 70 20 73 74 72 69 6e 67 20 53 20 77 69 | onal.suffix)..."Wrap.string.S.wi |
| 6600 | 74 68 20 50 52 45 46 49 58 20 61 6e 64 20 6f 70 74 69 6f 6e 61 6c 6c 79 20 53 55 46 46 49 58 2e | th.PREFIX.and.optionally.SUFFIX. |
| 6620 | 0a 0a 52 65 74 75 72 6e 20 73 74 72 69 6e 67 20 53 20 77 69 74 68 20 50 52 45 46 49 58 20 70 72 | ..Return.string.S.with.PREFIX.pr |
| 6640 | 65 70 65 6e 64 65 64 2e 20 20 49 66 20 53 55 46 46 49 58 20 69 73 20 70 72 65 73 65 6e 74 2c 20 | epended...If.SUFFIX.is.present,. |
| 6660 | 69 74 0a 69 73 20 61 70 70 65 6e 64 65 64 2c 20 6f 74 68 65 72 77 69 73 65 20 50 52 45 46 49 58 | it.is.appended,.otherwise.PREFIX |
| 6680 | 20 69 73 20 75 73 65 64 20 61 73 20 62 6f 74 68 20 70 72 65 66 69 78 20 61 6e 64 0a 73 75 66 66 | .is.used.as.both.prefix.and.suff |
| 66a0 | 69 78 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 70 75 72 65 20 74 29 20 28 73 69 64 65 2d 65 | ix."...(declare.(pure.t).(side-e |
| 66c0 | 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 63 6f 6e 63 61 74 20 70 72 65 66 69 78 20 | ffect-free.t))...(concat.prefix. |
| 66e0 | 73 20 28 6f 72 20 73 75 66 66 69 78 20 70 72 65 66 69 78 29 29 29 0a 0a 0c 0a 3b 3b 3b 20 41 6c | s.(or.suffix.prefix)))....;;;.Al |
| 6700 | 69 61 73 65 73 0a 0a 28 64 65 66 61 6c 69 61 73 20 27 73 2d 62 6c 61 6e 6b 2d 70 20 27 73 2d 62 | iases..(defalias.'s-blank-p.'s-b |
| 6720 | 6c 61 6e 6b 3f 29 0a 28 64 65 66 61 6c 69 61 73 20 27 73 2d 62 6c 61 6e 6b 2d 73 74 72 2d 70 20 | lank?).(defalias.'s-blank-str-p. |
| 6740 | 27 73 2d 62 6c 61 6e 6b 2d 73 74 72 3f 29 0a 28 64 65 66 61 6c 69 61 73 20 27 73 2d 63 61 70 69 | 's-blank-str?).(defalias.'s-capi |
| 6760 | 74 61 6c 69 7a 65 64 2d 70 20 27 73 2d 63 61 70 69 74 61 6c 69 7a 65 64 3f 29 0a 28 64 65 66 61 | talized-p.'s-capitalized?).(defa |
| 6780 | 6c 69 61 73 20 27 73 2d 63 6f 6e 74 61 69 6e 73 2d 70 20 27 73 2d 63 6f 6e 74 61 69 6e 73 3f 29 | lias.'s-contains-p.'s-contains?) |
| 67a0 | 0a 28 64 65 66 61 6c 69 61 73 20 27 73 2d 65 6e 64 73 2d 77 69 74 68 2d 70 20 27 73 2d 65 6e 64 | .(defalias.'s-ends-with-p.'s-end |
| 67c0 | 73 2d 77 69 74 68 3f 29 0a 28 64 65 66 61 6c 69 61 73 20 27 73 2d 65 71 75 61 6c 73 2d 70 20 27 | s-with?).(defalias.'s-equals-p.' |
| 67e0 | 73 2d 65 71 75 61 6c 73 3f 29 0a 28 64 65 66 61 6c 69 61 73 20 27 73 2d 6c 65 73 73 2d 70 20 27 | s-equals?).(defalias.'s-less-p.' |
| 6800 | 73 2d 6c 65 73 73 3f 29 0a 28 64 65 66 61 6c 69 61 73 20 27 73 2d 6c 6f 77 65 72 63 61 73 65 2d | s-less?).(defalias.'s-lowercase- |
| 6820 | 70 20 27 73 2d 6c 6f 77 65 72 63 61 73 65 3f 29 0a 28 64 65 66 61 6c 69 61 73 20 27 73 2d 6d 61 | p.'s-lowercase?).(defalias.'s-ma |
| 6840 | 74 63 68 65 73 2d 70 20 27 73 2d 6d 61 74 63 68 65 73 3f 29 0a 28 64 65 66 61 6c 69 61 73 20 27 | tches-p.'s-matches?).(defalias.' |
| 6860 | 73 2d 6d 69 78 65 64 63 61 73 65 2d 70 20 27 73 2d 6d 69 78 65 64 63 61 73 65 3f 29 0a 28 64 65 | s-mixedcase-p.'s-mixedcase?).(de |
| 6880 | 66 61 6c 69 61 73 20 27 73 2d 6e 75 6d 65 72 69 63 2d 70 20 27 73 2d 6e 75 6d 65 72 69 63 3f 29 | falias.'s-numeric-p.'s-numeric?) |
| 68a0 | 0a 28 64 65 66 61 6c 69 61 73 20 27 73 2d 70 72 65 66 69 78 2d 70 20 27 73 2d 73 74 61 72 74 73 | .(defalias.'s-prefix-p.'s-starts |
| 68c0 | 2d 77 69 74 68 3f 29 0a 28 64 65 66 61 6c 69 61 73 20 27 73 2d 70 72 65 66 69 78 3f 20 27 73 2d | -with?).(defalias.'s-prefix?.'s- |
| 68e0 | 73 74 61 72 74 73 2d 77 69 74 68 3f 29 0a 28 64 65 66 61 6c 69 61 73 20 27 73 2d 70 72 65 73 65 | starts-with?).(defalias.'s-prese |
| 6900 | 6e 74 2d 70 20 27 73 2d 70 72 65 73 65 6e 74 3f 29 0a 28 64 65 66 61 6c 69 61 73 20 27 73 2d 73 | nt-p.'s-present?).(defalias.'s-s |
| 6920 | 74 61 72 74 73 2d 77 69 74 68 2d 70 20 27 73 2d 73 74 61 72 74 73 2d 77 69 74 68 3f 29 0a 28 64 | tarts-with-p.'s-starts-with?).(d |
| 6940 | 65 66 61 6c 69 61 73 20 27 73 2d 73 75 66 66 69 78 2d 70 20 27 73 2d 65 6e 64 73 2d 77 69 74 68 | efalias.'s-suffix-p.'s-ends-with |
| 6960 | 3f 29 0a 28 64 65 66 61 6c 69 61 73 20 27 73 2d 73 75 66 66 69 78 3f 20 27 73 2d 65 6e 64 73 2d | ?).(defalias.'s-suffix?.'s-ends- |
| 6980 | 77 69 74 68 3f 29 0a 28 64 65 66 61 6c 69 61 73 20 27 73 2d 75 70 70 65 72 63 61 73 65 2d 70 20 | with?).(defalias.'s-uppercase-p. |
| 69a0 | 27 73 2d 75 70 70 65 72 63 61 73 65 3f 29 0a 0a 0c 0a 28 70 72 6f 76 69 64 65 20 27 73 29 0a 3b | 's-uppercase?)....(provide.'s).; |
| 69c0 | 3b 3b 20 73 2e 65 6c 20 65 6e 64 73 20 68 65 72 65 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ;;.s.el.ends.here............... |
| 69e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6a00 | 73 2d 32 30 32 32 30 39 30 32 2e 31 35 31 31 2f 73 2d 70 6b 67 2e 65 6c 00 00 00 00 00 00 00 00 | s-20220902.1511/s-pkg.el........ |
| 6a20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6a40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6a60 | 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30 30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30 | ....0000644.0000000.0000000.0000 |
| 6a80 | 30 30 30 30 36 31 31 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 32 36 30 34 00 20 30 00 00 00 | 0000611.00000000000.012604..0... |
| 6aa0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6ac0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6ae0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6b00 | 00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .ustar...root................... |
| 6b20 | 00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .........root................... |
| 6b40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6b60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6b80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6ba0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6bc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6be0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6c00 | 28 64 65 66 69 6e 65 2d 70 61 63 6b 61 67 65 20 22 73 22 20 22 32 30 32 32 30 39 30 32 2e 31 35 | (define-package."s"."20220902.15 |
| 6c20 | 31 31 22 20 22 54 68 65 20 6c 6f 6e 67 20 6c 6f 73 74 20 45 6d 61 63 73 20 73 74 72 69 6e 67 20 | 11"."The.long.lost.Emacs.string. |
| 6c40 | 6d 61 6e 69 70 75 6c 61 74 69 6f 6e 20 6c 69 62 72 61 72 79 2e 22 20 27 6e 69 6c 20 3a 63 6f 6d | manipulation.library.".'nil.:com |
| 6c60 | 6d 69 74 20 22 62 34 62 38 63 30 33 66 63 65 66 33 31 36 61 32 37 66 37 35 36 33 33 66 65 34 62 | mit."b4b8c03fcef316a27f75633fe4b |
| 6c80 | 62 39 39 30 61 65 66 66 36 65 37 30 35 22 20 3a 61 75 74 68 6f 72 73 0a 20 20 27 28 28 22 4d 61 | b990aeff6e705".:authors...'(("Ma |
| 6ca0 | 67 6e 61 72 20 53 76 65 65 6e 22 20 2e 20 22 6d 61 67 6e 61 72 73 40 67 6d 61 69 6c 2e 63 6f 6d | gnar.Sveen"..."magnars@gmail.com |
| 6cc0 | 22 29 29 0a 20 20 3a 6d 61 69 6e 74 61 69 6e 65 72 73 0a 20 20 27 28 28 22 4a 61 73 6f 6e 20 4d | "))...:maintainers...'(("Jason.M |
| 6ce0 | 69 6c 6b 69 6e 73 22 20 2e 20 22 6a 61 73 6f 6e 6d 32 33 40 67 6d 61 69 6c 2e 63 6f 6d 22 29 29 | ilkins"..."jasonm23@gmail.com")) |
| 6d00 | 0a 20 20 3a 6d 61 69 6e 74 61 69 6e 65 72 0a 20 20 27 28 22 4a 61 73 6f 6e 20 4d 69 6c 6b 69 6e | ...:maintainer...'("Jason.Milkin |
| 6d20 | 73 22 20 2e 20 22 6a 61 73 6f 6e 6d 32 33 40 67 6d 61 69 6c 2e 63 6f 6d 22 29 0a 20 20 3a 6b 65 | s"..."jasonm23@gmail.com")...:ke |
| 6d40 | 79 77 6f 72 64 73 0a 20 20 27 28 22 73 74 72 69 6e 67 73 22 29 29 0a 3b 3b 20 4c 6f 63 61 6c 20 | ywords...'("strings")).;;.Local. |
| 6d60 | 56 61 72 69 61 62 6c 65 73 3a 0a 3b 3b 20 6e 6f 2d 62 79 74 65 2d 63 6f 6d 70 69 6c 65 3a 20 74 | Variables:.;;.no-byte-compile:.t |
| 6d80 | 0a 3b 3b 20 45 6e 64 3a 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .;;.End:........................ |
| 6da0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6dc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6de0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6e00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6e20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6e40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6e60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6e80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6ea0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6ec0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6ee0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6f00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6f20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6f40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6f60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6f80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6fa0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6fc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6fe0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7000 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7020 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7040 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7060 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7080 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 70a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 70c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 70e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7100 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7120 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7140 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7160 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7180 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 71a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 71c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 71e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7200 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7220 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7240 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7260 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7280 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 72a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 72c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 72e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7300 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7320 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7340 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7360 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7380 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 73a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 73c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 73e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7400 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7420 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7440 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7460 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7480 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 74a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 74c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 74e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7500 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7520 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7540 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7560 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7580 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 75a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 75c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 75e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7600 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7620 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7640 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7660 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7680 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 76a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 76c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 76e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7700 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7720 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7740 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7760 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7780 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 77a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 77c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 77e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |