| ofs | hex dump | ascii | 
|---|
| 0000 |  70 72 65 73 63 69 65 6e 74 2d 32 30 32 35 30 38    31 36 2e 31 39 2f 00 00 00 00 00 00 00 00 00 00  | prescient-20250816.19/.......... | 
| 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 32 36 34 36 00 20 35 00 00 00  | 0000000.00000000000.012646..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 |  70 72 65 73 63 69 65 6e 74 2d 32 30 32 35 30 38    31 36 2e 31 39 2f 70 72 65 73 63 69 65 6e 74 2d  | prescient-20250816.19/prescient- | 
| 0220 |  70 6b 67 2e 65 6c 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | pkg.el.......................... | 
| 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 30 30 36 36 36 00 30 30 30 30 30 30 30 30    30 30 30 00 30 31 35 37 35 33 00 20 30 00 00 00  | 0000666.00000000000.015753..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 20 2d 2a 2d 20 6e 6f 2d 62 79 74 65 2d 63    6f 6d 70 69 6c 65 3a 20 74 3b 20 6c 65 78 69 63  | ;;.-*-.no-byte-compile:.t;.lexic | 
| 0420 |  61 6c 2d 62 69 6e 64 69 6e 67 3a 20 6e 69 6c 20    2d 2a 2d 0a 28 64 65 66 69 6e 65 2d 70 61 63 6b  | al-binding:.nil.-*-.(define-pack | 
| 0440 |  61 67 65 20 22 70 72 65 73 63 69 65 6e 74 22 20    22 32 30 32 35 30 38 31 36 2e 31 39 22 0a 20 20  | age."prescient"."20250816.19"... | 
| 0460 |  22 42 65 74 74 65 72 20 73 6f 72 74 69 6e 67 20    61 6e 64 20 66 69 6c 74 65 72 69 6e 67 2e 22 0a  | "Better.sorting.and.filtering.". | 
| 0480 |  20 20 27 28 28 65 6d 61 63 73 20 22 32 35 2e 31    22 29 29 0a 20 20 3a 75 72 6c 20 22 68 74 74 70  | ..'((emacs."25.1"))...:url."http | 
| 04a0 |  73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 72    61 78 6f 64 35 30 32 2f 70 72 65 73 63 69 65 6e  | s://github.com/raxod502/prescien | 
| 04c0 |  74 2e 65 6c 22 0a 20 20 3a 63 6f 6d 6d 69 74 20    22 38 37 65 32 64 32 66 32 64 64 66 32 34 66 35  | t.el"...:commit."87e2d2f2ddf24f5 | 
| 04e0 |  39 31 61 35 66 37 30 63 63 39 30 64 32 61 66 62    34 35 33 37 63 61 61 31 38 22 0a 20 20 3a 72 65  | 91a5f70cc90d2afb4537caa18"...:re | 
| 0500 |  76 64 65 73 63 20 22 38 37 65 32 64 32 66 32 64    64 66 32 22 0a 20 20 3a 6b 65 79 77 6f 72 64 73  | vdesc."87e2d2f2ddf2"...:keywords | 
| 0520 |  20 27 28 22 65 78 74 65 6e 73 69 6f 6e 73 22 29    0a 20 20 3a 61 75 74 68 6f 72 73 20 27 28 28 22  | .'("extensions")...:authors.'((" | 
| 0540 |  52 61 64 69 61 6e 20 4c 4c 43 22 20 2e 20 22 63    6f 6e 74 61 63 74 2b 70 72 65 73 63 69 65 6e 74  | Radian.LLC"..."contact+prescient | 
| 0560 |  40 72 61 64 69 61 6e 2e 63 6f 64 65 73 22 29 29    0a 20 20 3a 6d 61 69 6e 74 61 69 6e 65 72 73 20  | @radian.codes"))...:maintainers. | 
| 0580 |  27 28 28 22 52 61 64 69 61 6e 20 4c 4c 43 22 20    2e 20 22 63 6f 6e 74 61 63 74 2b 70 72 65 73 63  | '(("Radian.LLC"..."contact+presc | 
| 05a0 |  69 65 6e 74 40 72 61 64 69 61 6e 2e 63 6f 64 65    73 22 29 29 29 0a 00 00 00 00 00 00 00 00 00 00  | ient@radian.codes")))........... | 
| 05c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 05e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 0600 |  70 72 65 73 63 69 65 6e 74 2d 32 30 32 35 30 38    31 36 2e 31 39 2f 70 72 65 73 63 69 65 6e 74 2e  | prescient-20250816.19/prescient. | 
| 0620 |  65 6c 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | el.............................. | 
| 0640 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 0660 |  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 | 
| 0680 |  30 31 36 31 34 31 35 00 30 30 30 30 30 30 30 30    30 30 30 00 30 31 35 31 37 34 00 20 30 00 00 00  | 0161415.00000000000.015174..0... | 
| 06a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 06c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 06e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 0700 |  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................... | 
| 0720 |  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................... | 
| 0740 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 0760 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 0780 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 07a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 07c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 07e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 0800 |  3b 3b 3b 20 70 72 65 73 63 69 65 6e 74 2e 65 6c    20 2d 2d 2d 20 42 65 74 74 65 72 20 73 6f 72 74  | ;;;.prescient.el.---.Better.sort | 
| 0820 |  69 6e 67 20 61 6e 64 20 66 69 6c 74 65 72 69 6e    67 20 2d 2a 2d 20 6c 65 78 69 63 61 6c 2d 62 69  | ing.and.filtering.-*-.lexical-bi | 
| 0840 |  6e 64 69 6e 67 3a 20 74 20 2d 2a 2d 0a 0a 3b 3b    20 43 6f 70 79 72 69 67 68 74 20 28 43 29 20 32  | nding:.t.-*-..;;.Copyright.(C).2 | 
| 0860 |  30 31 37 2d 32 30 32 32 20 52 61 64 69 61 6e 20    4c 4c 43 20 61 6e 64 20 63 6f 6e 74 72 69 62 75  | 017-2022.Radian.LLC.and.contribu | 
| 0880 |  74 6f 72 73 0a 0a 3b 3b 20 41 75 74 68 6f 72 3a    20 52 61 64 69 61 6e 20 4c 4c 43 20 3c 63 6f 6e  | tors..;;.Author:.Radian.LLC.<con | 
| 08a0 |  74 61 63 74 2b 70 72 65 73 63 69 65 6e 74 40 72    61 64 69 61 6e 2e 63 6f 64 65 73 3e 0a 3b 3b 20  | tact+prescient@radian.codes>.;;. | 
| 08c0 |  48 6f 6d 65 70 61 67 65 3a 20 68 74 74 70 73 3a    2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 72 61 78  | Homepage:.https://github.com/rax | 
| 08e0 |  6f 64 35 30 32 2f 70 72 65 73 63 69 65 6e 74 2e    65 6c 0a 3b 3b 20 4b 65 79 77 6f 72 64 73 3a 20  | od502/prescient.el.;;.Keywords:. | 
| 0900 |  65 78 74 65 6e 73 69 6f 6e 73 0a 3b 3b 20 43 72    65 61 74 65 64 3a 20 37 20 41 75 67 20 32 30 31  | extensions.;;.Created:.7.Aug.201 | 
| 0920 |  37 0a 3b 3b 20 50 61 63 6b 61 67 65 2d 52 65 71    75 69 72 65 73 3a 20 28 28 65 6d 61 63 73 20 22  | 7.;;.Package-Requires:.((emacs." | 
| 0940 |  32 35 2e 31 22 29 29 0a 3b 3b 20 53 50 44 58 2d    4c 69 63 65 6e 73 65 2d 49 64 65 6e 74 69 66 69  | 25.1")).;;.SPDX-License-Identifi | 
| 0960 |  65 72 3a 20 4d 49 54 0a 3b 3b 20 50 61 63 6b 61    67 65 2d 56 65 72 73 69 6f 6e 3a 20 32 30 32 35  | er:.MIT.;;.Package-Version:.2025 | 
| 0980 |  30 38 31 36 2e 31 39 0a 3b 3b 20 50 61 63 6b 61    67 65 2d 52 65 76 69 73 69 6f 6e 3a 20 38 37 65  | 0816.19.;;.Package-Revision:.87e | 
| 09a0 |  32 64 32 66 32 64 64 66 32 0a 0a 3b 3b 3b 20 43    6f 6d 6d 65 6e 74 61 72 79 3a 0a 0a 3b 3b 20 70  | 2d2f2ddf2..;;;.Commentary:..;;.p | 
| 09c0 |  72 65 73 63 69 65 6e 74 2e 65 6c 20 69 73 20 61    20 67 65 6e 65 72 61 6c 2d 70 75 72 70 6f 73 65  | rescient.el.is.a.general-purpose | 
| 09e0 |  20 6c 69 62 72 61 72 79 20 66 6f 72 20 73 6f 72    74 69 6e 67 20 61 6e 64 20 66 69 6c 74 65 72 69  | .library.for.sorting.and.filteri | 
| 0a00 |  6e 67 0a 3b 3b 20 63 61 6e 64 69 64 61 74 65 73    2e 0a 0a 3b 3b 20 54 68 65 20 61 6c 67 6f 72 69  | ng.;;.candidates...;;.The.algori | 
| 0a20 |  74 68 6d 20 6f 66 20 70 72 65 73 63 69 65 6e 74    2e 65 6c 20 69 73 20 76 65 72 79 20 73 69 6d 70  | thm.of.prescient.el.is.very.simp | 
| 0a40 |  6c 65 2e 20 59 6f 75 20 65 6e 74 65 72 20 61 20    71 75 65 72 79 2c 20 6f 72 0a 3b 3b 20 6d 75 6c  | le..You.enter.a.query,.or.;;.mul | 
| 0a60 |  74 69 70 6c 65 20 71 75 65 72 69 65 73 20 73 65    70 61 72 61 74 65 64 20 62 79 20 73 70 61 63 65  | tiple.queries.separated.by.space | 
| 0a80 |  73 20 28 74 77 6f 20 73 70 61 63 65 73 20 6d 61    74 63 68 20 61 20 6c 69 74 65 72 61 6c 0a 3b 3b  | s.(two.spaces.match.a.literal.;; | 
| 0aa0 |  20 73 70 61 63 65 29 2c 20 61 6e 64 20 65 61 63    68 20 71 75 65 72 79 20 66 69 6c 74 65 72 73 20  | .space),.and.each.query.filters. | 
| 0ac0 |  74 68 65 20 63 61 6e 64 69 64 61 74 65 73 20 62    79 20 6d 61 74 63 68 69 6e 67 20 65 69 74 68 65  | the.candidates.by.matching.eithe | 
| 0ae0 |  72 20 61 0a 3b 3b 20 73 75 62 73 74 72 69 6e 67    20 28 65 2e 67 2e 20 22 73 63 69 65 6e 74 22 20  | r.a.;;.substring.(e.g.."scient". | 
| 0b00 |  6d 61 74 63 68 65 73 20 22 70 72 65 73 63 69 65    6e 74 2d 66 72 65 71 75 65 6e 63 79 2d 74 68 72  | matches."prescient-frequency-thr | 
| 0b20 |  65 73 68 6f 6c 64 22 29 0a 3b 3b 20 6f 72 20 69    6e 69 74 69 61 6c 69 73 6d 20 28 65 2e 67 2e 20  | eshold").;;.or.initialism.(e.g.. | 
| 0b40 |  22 66 74 22 20 61 6c 73 6f 20 6d 61 74 63 68 65    73 20 74 68 65 20 73 61 6d 65 29 2e 20 54 68 65  | "ft".also.matches.the.same)..The | 
| 0b60 |  6e 2c 20 63 61 6e 64 69 64 61 74 65 73 0a 3b 3b    20 61 72 65 20 73 6f 72 74 65 64 20 74 6f 20 70  | n,.candidates.;;.are.sorted.to.p | 
| 0b80 |  72 69 6f 72 69 74 69 7a 65 20 72 65 63 65 6e 74    6c 79 20 63 68 6f 73 65 6e 20 63 61 6e 64 69 64  | rioritize.recently.chosen.candid | 
| 0ba0 |  61 74 65 73 2c 20 66 6f 6c 6c 6f 77 65 64 20 62    79 0a 3b 3b 20 66 72 65 71 75 65 6e 74 6c 79 20  | ates,.followed.by.;;.frequently. | 
| 0bc0 |  63 68 6f 73 65 6e 20 63 61 6e 64 69 64 61 74 65    73 2c 20 77 69 74 68 20 74 68 65 20 72 65 6d 61  | chosen.candidates,.with.the.rema | 
| 0be0 |  69 6e 69 6e 67 20 63 61 6e 64 69 64 61 74 65 73    20 73 6f 72 74 65 64 0a 3b 3b 20 62 79 20 6c 65  | ining.candidates.sorted.;;.by.le | 
| 0c00 |  6e 67 74 68 2e 0a 0a 3b 3b 20 70 72 65 73 63 69    65 6e 74 2e 65 6c 20 61 69 6d 73 20 74 6f 20 72  | ngth...;;.prescient.el.aims.to.r | 
| 0c20 |  65 70 6c 61 63 65 20 61 20 6e 75 6d 62 65 72 20    6f 66 20 6f 74 68 65 72 20 70 61 63 6b 61 67 65  | eplace.a.number.of.other.package | 
| 0c40 |  73 2c 20 69 6e 63 6c 75 64 69 6e 67 0a 3b 3b 20    49 44 4f 2c 20 53 6d 65 78 2c 20 46 6c 78 2c 20  | s,.including.;;.IDO,.Smex,.Flx,. | 
| 0c60 |  48 69 73 74 6f 72 69 61 6e 2c 20 61 6e 64 20 43    6f 6d 70 61 6e 79 2d 53 74 61 74 69 73 74 69 63  | Historian,.and.Company-Statistic | 
| 0c80 |  73 2e 20 49 74 20 61 6c 73 6f 20 72 65 70 6c 61    63 65 73 0a 3b 3b 20 74 68 65 20 73 6f 72 74 69  | s..It.also.replaces.;;.the.sorti | 
| 0ca0 |  6e 67 20 61 6e 64 20 66 69 6c 74 65 72 69 6e 67    20 66 75 6e 63 74 69 6f 6e 61 6c 69 74 69 65 73  | ng.and.filtering.functionalities | 
| 0cc0 |  20 6f 66 20 63 6f 6d 70 6c 65 74 69 6f 6e 20 66    72 61 6d 65 77 6f 72 6b 73 0a 3b 3b 20 73 75 63  | .of.completion.frameworks.;;.suc | 
| 0ce0 |  68 20 61 73 20 48 65 6c 6d 20 61 6e 64 20 49 76    79 2e 0a 0a 3b 3b 20 54 6f 20 75 73 65 20 70 72  | h.as.Helm.and.Ivy...;;.To.use.pr | 
| 0d00 |  65 73 63 69 65 6e 74 2e 65 6c 20 66 6f 72 20 49    76 79 2c 20 73 65 65 20 69 76 79 2d 70 72 65 73  | escient.el.for.Ivy,.see.ivy-pres | 
| 0d20 |  63 69 65 6e 74 2e 65 6c 2e 20 54 6f 20 75 73 65    0a 3b 3b 20 70 72 65 73 63 69 65 6e 74 2e 65 6c  | cient.el..To.use.;;.prescient.el | 
| 0d40 |  20 66 6f 72 20 43 6f 6d 70 61 6e 79 2c 20 73 65    65 20 63 6f 6d 70 61 6e 79 2d 70 72 65 73 63 69  | .for.Company,.see.company-presci | 
| 0d60 |  65 6e 74 2e 65 6c 2e 20 49 6e 20 65 69 74 68 65    72 20 63 61 73 65 2c 0a 3b 3b 20 79 6f 75 20 77  | ent.el..In.either.case,.;;.you.w | 
| 0d80 |  69 6c 6c 20 6d 6f 73 74 20 6c 69 6b 65 6c 79 20    77 61 6e 74 20 79 6f 75 72 20 75 73 61 67 65 20  | ill.most.likely.want.your.usage. | 
| 0da0 |  73 74 61 74 69 73 74 69 63 73 20 74 6f 20 62 65    20 73 61 76 65 64 20 61 63 72 6f 73 73 0a 3b 3b  | statistics.to.be.saved.across.;; | 
| 0dc0 |  20 45 6d 61 63 73 20 73 65 73 73 69 6f 6e 73 3b    20 74 6f 20 64 6f 20 74 68 69 73 2c 20 65 6e 61  | .Emacs.sessions;.to.do.this,.ena | 
| 0de0 |  62 6c 65 20 60 70 72 65 73 63 69 65 6e 74 2d 70    65 72 73 69 73 74 2d 6d 6f 64 65 27 20 69 6e 20  | ble.`prescient-persist-mode'.in. | 
| 0e00 |  79 6f 75 72 0a 3b 3b 20 69 6e 69 74 2d 66 69 6c    65 20 6f 72 20 69 6e 74 65 72 61 63 74 69 76 65  | your.;;.init-file.or.interactive | 
| 0e20 |  6c 79 2e 0a 0a 3b 3b 20 46 6f 72 20 6d 6f 72 65    20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2c 20 73 65  | ly...;;.For.more.information,.se | 
| 0e40 |  65 20 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62    2e 63 6f 6d 2f 72 61 78 6f 64 35 30 32 2f 70 72  | e.https://github.com/raxod502/pr | 
| 0e60 |  65 73 63 69 65 6e 74 2e 65 6c 2e 0a 0a 3b 3b 3b    20 43 6f 64 65 3a 0a 0a 3b 3b 20 54 6f 20 73 65  | escient.el...;;;.Code:..;;.To.se | 
| 0e80 |  65 20 74 68 65 20 6f 75 74 6c 69 6e 65 20 6f 66    20 74 68 69 73 20 66 69 6c 65 2c 20 72 75 6e 20  | e.the.outline.of.this.file,.run. | 
| 0ea0 |  4d 2d 78 20 6f 75 74 6c 69 6e 65 2d 6d 69 6e 6f    72 2d 6d 6f 64 65 20 61 6e 64 0a 3b 3b 20 74 68  | M-x.outline-minor-mode.and.;;.th | 
| 0ec0 |  65 6e 20 70 72 65 73 73 20 43 2d 63 20 40 20 43    2d 74 2e 20 54 6f 20 61 6c 73 6f 20 73 68 6f 77  | en.press.C-c.@.C-t..To.also.show | 
| 0ee0 |  20 74 68 65 20 74 6f 70 2d 6c 65 76 65 6c 20 66    75 6e 63 74 69 6f 6e 73 20 61 6e 64 0a 3b 3b 20  | .the.top-level.functions.and.;;. | 
| 0f00 |  76 61 72 69 61 62 6c 65 20 64 65 63 6c 61 72 61    74 69 6f 6e 73 20 69 6e 20 65 61 63 68 20 73 65  | variable.declarations.in.each.se | 
| 0f20 |  63 74 69 6f 6e 2c 20 72 75 6e 20 4d 2d 78 20 6f    63 63 75 72 20 77 69 74 68 20 74 68 65 0a 3b 3b  | ction,.run.M-x.occur.with.the.;; | 
| 0f40 |  20 66 6f 6c 6c 6f 77 69 6e 67 20 71 75 65 72 79    3a 20 5e 3b 3b 3b 3b 2a 20 5c 7c 5e 28 0a 0a 3b  | .following.query:.^;;;;*.\|^(..; | 
| 0f60 |  3b 3b 3b 20 4c 69 62 72 61 72 69 65 73 0a 0a 3b    3b 20 52 65 71 75 69 72 65 20 60 63 68 61 72 2d  | ;;;.Libraries..;;.Require.`char- | 
| 0f80 |  66 6f 6c 64 27 20 73 6f 20 74 68 61 74 20 60 63    68 61 72 2d 66 6f 6c 64 2d 74 61 62 6c 65 27 20  | fold'.so.that.`char-fold-table'. | 
| 0fa0 |  67 65 74 73 20 64 65 66 69 6e 65 64 2e 0a 3b 3b    20 4f 74 68 65 72 77 69 73 65 20 60 63 68 61 72  | gets.defined..;;.Otherwise.`char | 
| 0fc0 |  2d 66 6f 6c 64 2d 74 6f 2d 72 65 67 65 78 70 27    20 63 61 6e 20 73 69 67 6e 61 6c 20 61 6e 20 65  | -fold-to-regexp'.can.signal.an.e | 
| 0fe0 |  72 72 6f 72 2e 0a 28 72 65 71 75 69 72 65 20 27    63 68 61 72 2d 66 6f 6c 64 29 0a 28 72 65 71 75  | rror..(require.'char-fold).(requ | 
| 1000 |  69 72 65 20 27 63 6c 2d 6c 69 62 29 0a 28 72 65    71 75 69 72 65 20 27 73 75 62 72 2d 78 29 0a 0a  | ire.'cl-lib).(require.'subr-x).. | 
| 1020 |  3b 3b 3b 3b 20 55 73 65 72 20 6f 70 74 69 6f 6e    73 0a 0a 28 64 65 66 67 72 6f 75 70 20 70 72 65  | ;;;;.User.options..(defgroup.pre | 
| 1040 |  73 63 69 65 6e 74 20 6e 69 6c 0a 20 20 22 53 69    6d 70 6c 65 20 62 75 74 20 65 66 66 65 63 74 69  | scient.nil..."Simple.but.effecti | 
| 1060 |  76 65 20 63 61 6e 64 69 64 61 74 65 20 73 6f 72    74 69 6e 67 20 62 79 20 75 73 61 67 65 2e 22 0a  | ve.candidate.sorting.by.usage.". | 
| 1080 |  20 20 3a 67 72 6f 75 70 20 27 63 6f 6e 76 65 6e    69 65 6e 63 65 0a 20 20 3a 70 72 65 66 69 78 20  | ..:group.'convenience...:prefix. | 
| 10a0 |  22 70 72 65 73 63 69 65 6e 74 2d 22 0a 20 20 3a    6c 69 6e 6b 20 27 28 75 72 6c 2d 6c 69 6e 6b 20  | "prescient-"...:link.'(url-link. | 
| 10c0 |  22 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e    63 6f 6d 2f 72 61 78 6f 64 35 30 32 2f 70 72 65  | "https://github.com/raxod502/pre | 
| 10e0 |  73 63 69 65 6e 74 2e 65 6c 22 29 29 0a 0a 28 64    65 66 63 75 73 74 6f 6d 20 70 72 65 73 63 69 65  | scient.el"))..(defcustom.prescie | 
| 1100 |  6e 74 2d 68 69 73 74 6f 72 79 2d 6c 65 6e 67 74    68 20 31 30 30 0a 20 20 22 4e 75 6d 62 65 72 20  | nt-history-length.100..."Number. | 
| 1120 |  6f 66 20 72 65 63 65 6e 74 6c 79 20 63 68 6f 73    65 6e 20 63 61 6e 64 69 64 61 74 65 73 20 74 68  | of.recently.chosen.candidates.th | 
| 1140 |  61 74 20 77 69 6c 6c 20 62 65 20 72 65 6d 65 6d    62 65 72 65 64 2e 22 0a 20 20 3a 74 79 70 65 20  | at.will.be.remembered."...:type. | 
| 1160 |  27 6e 75 6d 62 65 72 29 0a 0a 28 64 65 66 63 75    73 74 6f 6d 20 70 72 65 73 63 69 65 6e 74 2d 66  | 'number)..(defcustom.prescient-f | 
| 1180 |  72 65 71 75 65 6e 63 79 2d 64 65 63 61 79 20 30    2e 39 39 37 0a 20 20 22 52 61 74 65 20 61 74 20  | requency-decay.0.997..."Rate.at. | 
| 11a0 |  77 68 69 63 68 20 66 72 65 71 75 65 6e 74 6c 79    20 63 68 6f 73 65 6e 20 63 61 6e 64 69 64 61 74  | which.frequently.chosen.candidat | 
| 11c0 |  65 73 20 77 69 6c 6c 20 62 65 20 66 6f 72 67 6f    74 74 65 6e 2e 0a 45 76 65 72 79 20 74 69 6d 65  | es.will.be.forgotten..Every.time | 
| 11e0 |  20 61 20 63 61 6e 64 69 64 61 74 65 20 69 73 20    73 65 6c 65 63 74 65 64 2c 20 61 6c 6c 20 63 61  | .a.candidate.is.selected,.all.ca | 
| 1200 |  6e 64 69 64 61 74 65 73 20 61 72 65 20 6d 75 6c    74 69 70 6c 69 65 64 0a 62 79 20 74 68 69 73 20  | ndidates.are.multiplied.by.this. | 
| 1220 |  66 61 63 74 6f 72 2e 20 53 65 65 20 61 6c 73 6f    20 60 70 72 65 73 63 69 65 6e 74 2d 66 72 65 71  | factor..See.also.`prescient-freq | 
| 1240 |  75 65 6e 63 79 2d 74 68 72 65 73 68 6f 6c 64 27    2e 22 0a 20 20 3a 74 79 70 65 20 27 6e 75 6d 62  | uency-threshold'."...:type.'numb | 
| 1260 |  65 72 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20    70 72 65 73 63 69 65 6e 74 2d 66 72 65 71 75 65  | er)..(defcustom.prescient-freque | 
| 1280 |  6e 63 79 2d 74 68 72 65 73 68 6f 6c 64 20 30 2e    30 35 0a 20 20 22 54 68 72 65 73 68 6f 6c 64 20  | ncy-threshold.0.05..."Threshold. | 
| 12a0 |  66 6f 72 20 66 6f 72 67 65 74 74 69 6e 67 20 61    62 6f 75 74 20 61 20 66 72 65 71 75 65 6e 74 6c  | for.forgetting.about.a.frequentl | 
| 12c0 |  79 20 63 68 6f 73 65 6e 20 63 61 6e 64 69 64 61    74 65 2e 0a 41 6e 79 20 63 61 6e 64 69 64 61 74  | y.chosen.candidate..Any.candidat | 
| 12e0 |  65 73 20 77 69 74 68 20 66 72 65 71 75 65 6e 63    69 65 73 20 6c 65 73 73 20 74 68 61 6e 20 74 68  | es.with.frequencies.less.than.th | 
| 1300 |  69 73 20 61 66 74 65 72 20 61 20 73 65 6c 65 63    74 69 6f 6e 0a 77 69 6c 6c 20 62 65 20 64 69 73  | is.after.a.selection.will.be.dis | 
| 1320 |  63 61 72 64 65 64 2e 20 53 65 65 20 61 6c 73 6f    20 60 70 72 65 73 63 69 65 6e 74 2d 66 72 65 71  | carded..See.also.`prescient-freq | 
| 1340 |  75 65 6e 63 79 2d 64 65 63 61 79 27 2e 22 0a 20    20 3a 74 79 70 65 20 27 6e 75 6d 62 65 72 29 0a  | uency-decay'."...:type.'number). | 
| 1360 |  0a 28 64 65 66 63 75 73 74 6f 6d 20 70 72 65 73    63 69 65 6e 74 2d 73 61 76 65 2d 66 69 6c 65 0a  | .(defcustom.prescient-save-file. | 
| 1380 |  20 20 28 65 78 70 61 6e 64 2d 66 69 6c 65 2d 6e    61 6d 65 20 22 76 61 72 2f 70 72 65 73 63 69 65  | ..(expand-file-name."var/prescie | 
| 13a0 |  6e 74 2d 73 61 76 65 2e 65 6c 22 20 75 73 65 72    2d 65 6d 61 63 73 2d 64 69 72 65 63 74 6f 72 79  | nt-save.el".user-emacs-directory | 
| 13c0 |  29 0a 20 20 22 46 69 6c 65 20 69 6e 20 77 68 69    63 68 20 74 6f 20 73 61 76 65 20 75 73 61 67 65  | )..."File.in.which.to.save.usage | 
| 13e0 |  20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0a 54 68    69 73 20 6f 6e 6c 79 20 68 61 73 20 61 6e 20 65  | .information..This.only.has.an.e | 
| 1400 |  66 66 65 63 74 20 69 66 20 60 70 72 65 73 63 69    65 6e 74 2d 70 65 72 73 69 73 74 2d 6d 6f 64 65  | ffect.if.`prescient-persist-mode | 
| 1420 |  27 20 69 73 20 65 6e 61 62 6c 65 64 2e 22 0a 20    20 3a 74 79 70 65 20 27 66 69 6c 65 29 0a 0a 28  | '.is.enabled."...:type.'file)..( | 
| 1440 |  64 65 66 63 75 73 74 6f 6d 20 70 72 65 73 63 69    65 6e 74 2d 66 69 6c 74 65 72 2d 6d 65 74 68 6f  | defcustom.prescient-filter-metho | 
| 1460 |  64 20 27 28 6c 69 74 65 72 61 6c 20 72 65 67 65    78 70 20 69 6e 69 74 69 61 6c 69 73 6d 29 0a 20  | d.'(literal.regexp.initialism).. | 
| 1480 |  20 22 48 6f 77 20 74 6f 20 69 6e 74 65 72 70 72    65 74 20 70 72 65 73 63 69 65 6e 74 2e 65 6c 20  | ."How.to.interpret.prescient.el. | 
| 14a0 |  66 69 6c 74 65 72 69 6e 67 20 71 75 65 72 69 65    73 2e 0a 51 75 65 72 69 65 73 20 61 72 65 20 66  | filtering.queries..Queries.are.f | 
| 14c0 |  69 72 73 74 20 73 70 6c 69 74 20 6f 6e 20 73 70    61 63 65 73 20 28 77 69 74 68 20 74 77 6f 20 63  | irst.split.on.spaces.(with.two.c | 
| 14e0 |  6f 6e 73 65 63 75 74 69 76 65 20 73 70 61 63 65    73 0a 73 74 61 6e 64 69 6e 67 20 66 6f 72 20 61  | onsecutive.spaces.standing.for.a | 
| 1500 |  20 6c 69 74 65 72 61 6c 20 73 70 61 63 65 29 2e    20 54 68 65 6e 2c 20 74 68 65 20 63 61 6e 64 69  | .literal.space)..Then,.the.candi | 
| 1520 |  64 61 74 65 73 20 61 72 65 20 66 69 6c 74 65 72    65 64 0a 75 73 69 6e 67 20 65 61 63 68 20 73 75  | dates.are.filtered.using.each.su | 
| 1540 |  62 71 75 65 72 79 20 69 6e 20 74 75 72 6e 2e 20    54 68 69 73 20 76 61 72 69 61 62 6c 65 20 61 66  | bquery.in.turn..This.variable.af | 
| 1560 |  66 65 63 74 73 20 68 6f 77 20 74 68 61 74 0a 66    69 6c 74 65 72 69 6e 67 20 74 61 6b 65 73 20 70  | fects.how.that.filtering.takes.p | 
| 1580 |  6c 61 63 65 2e 0a 0a 56 61 6c 75 65 20 60 6c 69    74 65 72 61 6c 27 20 6d 65 61 6e 73 20 74 68 65  | lace...Value.`literal'.means.the | 
| 15a0 |  20 73 75 62 71 75 65 72 79 20 6d 75 73 74 20 62    65 20 61 20 73 75 62 73 74 72 69 6e 67 20 6f 66  | .subquery.must.be.a.substring.of | 
| 15c0 |  20 74 68 65 0a 63 61 6e 64 69 64 61 74 65 2e 20    53 75 70 70 6f 72 74 73 20 63 68 61 72 20 66 6f  | .the.candidate..Supports.char.fo | 
| 15e0 |  6c 64 69 6e 67 2e 0a 0a 56 61 6c 75 65 20 60 6c    69 74 65 72 61 6c 2d 70 72 65 66 69 78 27 20 6d  | lding...Value.`literal-prefix'.m | 
| 1600 |  65 61 6e 73 20 74 68 65 20 66 69 72 73 74 20 73    75 62 71 75 65 72 79 20 6d 75 73 74 20 62 65 20  | eans.the.first.subquery.must.be. | 
| 1620 |  74 68 65 0a 70 72 65 66 69 78 20 6f 66 20 74 68    65 20 63 61 6e 64 69 64 61 74 65 20 61 6e 64 20  | the.prefix.of.the.candidate.and. | 
| 1640 |  74 68 65 20 72 65 6d 61 69 6e 69 6e 67 20 73 75    62 71 75 65 72 69 65 73 20 6d 75 73 74 20 62 65  | the.remaining.subqueries.must.be | 
| 1660 |  0a 70 72 65 66 69 78 65 73 20 6f 66 20 77 6f 72    64 73 20 69 6e 20 74 68 65 20 63 61 6e 64 69 64  | .prefixes.of.words.in.the.candid | 
| 1680 |  61 74 65 2e 20 53 75 70 70 6f 72 74 73 20 63 68    61 72 20 66 6f 6c 64 69 6e 67 2e 0a 0a 56 61 6c  | ate..Supports.char.folding...Val | 
| 16a0 |  75 65 20 60 72 65 67 65 78 70 27 20 6d 65 61 6e    73 20 74 68 65 20 73 75 62 71 75 65 72 79 20 69  | ue.`regexp'.means.the.subquery.i | 
| 16c0 |  73 20 69 6e 74 65 72 70 72 65 74 65 64 20 64 69    72 65 63 74 6c 79 20 61 73 20 61 0a 72 65 67 75  | s.interpreted.directly.as.a.regu | 
| 16e0 |  6c 61 72 20 65 78 70 72 65 73 73 69 6f 6e 2e 0a    0a 56 61 6c 75 65 20 60 69 6e 69 74 69 61 6c 69  | lar.expression...Value.`initiali | 
| 1700 |  73 6d 27 20 6d 65 61 6e 73 20 74 68 65 20 73 75    62 71 75 65 72 79 20 6d 75 73 74 20 6d 61 74 63  | sm'.means.the.subquery.must.matc | 
| 1720 |  68 20 61 20 73 75 62 73 74 72 69 6e 67 20 6f 66    0a 74 68 65 20 69 6e 69 74 69 61 6c 73 20 6f 66  | h.a.substring.of.the.initials.of | 
| 1740 |  20 74 68 65 20 63 61 6e 64 69 64 61 74 65 2e 0a    0a 56 61 6c 75 65 20 60 66 75 7a 7a 79 27 20 6d  | .the.candidate...Value.`fuzzy'.m | 
| 1760 |  65 61 6e 73 20 74 68 65 20 63 68 61 72 61 63 74    65 72 73 20 6f 66 20 74 68 65 20 73 75 62 71 75  | eans.the.characters.of.the.subqu | 
| 1780 |  65 72 79 20 6d 75 73 74 20 6d 61 74 63 68 0a 73    6f 6d 65 20 73 75 62 73 65 74 20 6f 66 20 74 68  | ery.must.match.some.subset.of.th | 
| 17a0 |  6f 73 65 20 6f 66 20 74 68 65 20 63 61 6e 64 69    64 61 74 65 2c 20 69 6e 20 74 68 65 20 63 6f 72  | ose.of.the.candidate,.in.the.cor | 
| 17c0 |  72 65 63 74 20 6f 72 64 65 72 20 62 75 74 0a 6e    6f 74 20 6e 65 63 65 73 73 61 72 69 6c 79 20 63  | rect.order.but.not.necessarily.c | 
| 17e0 |  6f 6e 74 69 67 75 6f 75 73 2e 0a 0a 56 61 6c 75    65 20 60 70 72 65 66 69 78 27 20 6d 65 61 6e 73  | ontiguous...Value.`prefix'.means | 
| 1800 |  20 74 68 65 20 77 6f 72 64 73 20 28 73 75 62 73    74 72 69 6e 67 73 20 6f 66 20 6f 6e 6c 79 20 77  | .the.words.(substrings.of.only.w | 
| 1820 |  6f 72 64 0a 63 68 61 72 61 63 74 65 72 73 29 20    6d 61 74 63 68 20 74 68 65 20 62 65 67 69 6e 6e  | ord.characters).match.the.beginn | 
| 1840 |  69 6e 67 20 6f 66 20 77 6f 72 64 73 20 66 6f 75    6e 64 20 69 6e 20 74 68 65 20 63 61 6e 64 69 64  | ing.of.words.found.in.the.candid | 
| 1860 |  61 74 65 2c 0a 69 6e 20 6f 72 64 65 72 2c 20 73    65 70 61 72 61 74 65 64 20 62 79 20 74 68 65 20  | ate,.in.order,.separated.by.the. | 
| 1880 |  73 61 6d 65 20 6e 6f 6e 2d 77 6f 72 64 20 63 68    61 72 61 63 74 65 72 73 20 74 68 61 74 20 73 65  | same.non-word.characters.that.se | 
| 18a0 |  70 61 72 61 74 65 0a 77 6f 72 64 73 20 69 6e 20    74 68 65 20 71 75 65 72 79 2e 20 54 68 69 73 20  | parate.words.in.the.query..This. | 
| 18c0 |  69 73 20 73 69 6d 69 6c 61 72 20 74 6f 20 74 68    65 20 63 6f 6d 70 6c 65 74 69 6f 6e 20 73 74 79  | is.similar.to.the.completion.sty | 
| 18e0 |  6c 65 0a 60 70 61 72 74 69 61 6c 27 2e 0a 0a 56    61 6c 75 65 20 60 61 6e 63 68 6f 72 65 64 27 20  | le.`partial'...Value.`anchored'. | 
| 1900 |  6d 65 61 6e 73 20 77 6f 72 64 73 20 61 72 65 20    73 65 70 61 72 61 74 65 64 20 62 79 20 63 61 70  | means.words.are.separated.by.cap | 
| 1920 |  69 74 61 6c 20 6c 65 74 74 65 72 73 20 6f 72 0a    73 79 6d 62 6f 6c 73 2c 20 77 69 74 68 20 63 61  | ital.letters.or.symbols,.with.ca | 
| 1940 |  70 69 74 61 6c 20 6c 65 74 74 65 72 73 20 62 65    69 6e 67 20 74 68 65 20 73 74 61 72 74 20 6f 66  | pital.letters.being.the.start.of | 
| 1960 |  20 61 20 6e 65 77 20 77 6f 72 64 2e 20 54 68 69    73 0a 69 73 20 73 69 6d 69 6c 61 72 20 74 6f 20  | .a.new.word..This.is.similar.to. | 
| 1980 |  60 70 72 65 66 69 78 27 2c 20 62 75 74 20 61 6c    6c 6f 77 73 20 66 6f 72 20 6c 65 73 73 20 74 79  | `prefix',.but.allows.for.less.ty | 
| 19a0 |  70 69 6e 67 2e 0a 0a 56 61 6c 75 65 20 63 61 6e    20 61 6c 73 6f 20 62 65 20 61 20 6c 69 73 74 20  | ping...Value.can.also.be.a.list. | 
| 19c0 |  6f 66 20 61 6e 79 20 6f 66 20 74 68 65 20 61 62    6f 76 65 20 6d 65 74 68 6f 64 73 2c 20 69 6e 20  | of.any.of.the.above.methods,.in. | 
| 19e0 |  77 68 69 63 68 0a 63 61 73 65 20 65 61 63 68 20    6d 65 74 68 6f 64 20 77 69 6c 6c 20 62 65 20 61  | which.case.each.method.will.be.a | 
| 1a00 |  70 70 6c 69 65 64 20 69 6e 20 6f 72 64 65 72 20    75 6e 74 69 6c 20 6f 6e 65 20 6d 61 74 63 68 65  | pplied.in.order.until.one.matche | 
| 1a20 |  73 2e 0a 0a 56 61 6c 75 65 20 63 61 6e 20 61 6c    73 6f 20 62 65 20 61 20 66 75 6e 63 74 69 6f 6e  | s...Value.can.also.be.a.function | 
| 1a40 |  20 77 68 69 63 68 20 72 65 74 75 72 6e 73 20 61    6e 79 20 6f 66 20 74 68 65 20 61 6c 6c 6f 77 61  | .which.returns.any.of.the.allowa | 
| 1a60 |  62 6c 65 0a 76 61 6c 75 65 73 20 64 6f 63 75 6d    65 6e 74 65 64 20 61 62 6f 76 65 2e 0a 0a 46 6f  | ble.values.documented.above...Fo | 
| 1a80 |  72 20 62 61 63 6b 77 61 72 64 73 20 63 6f 6d 70    61 74 69 62 69 6c 69 74 79 2c 20 74 68 65 20 76  | r.backwards.compatibility,.the.v | 
| 1aa0 |  61 6c 75 65 20 6f 66 20 74 68 69 73 20 76 61 72    69 61 62 6c 65 20 63 61 6e 20 61 6c 73 6f 0a 62  | alue.of.this.variable.can.also.b | 
| 1ac0 |  65 20 60 6c 69 74 65 72 61 6c 2b 69 6e 69 74 69    61 6c 69 73 6d 27 2c 20 77 68 69 63 68 20 65 71  | e.`literal+initialism',.which.eq | 
| 1ae0 |  75 69 76 61 6c 65 6e 74 20 74 6f 20 74 68 65 20    6c 69 73 74 20 28 60 6c 69 74 65 72 61 6c 27 0a  | uivalent.to.the.list.(`literal'. | 
| 1b00 |  60 69 6e 69 74 69 61 6c 69 73 6d 27 29 2e 22 0a    20 20 3a 74 79 70 65 20 27 28 73 65 74 0a 20 20  | `initialism')."...:type.'(set... | 
| 1b20 |  20 20 20 20 20 20 20 20 28 63 6f 6e 73 74 20 3a    74 61 67 20 22 4c 69 74 65 72 61 6c 22 20 6c 69  | ........(const.:tag."Literal".li | 
| 1b40 |  74 65 72 61 6c 29 0a 20 20 20 20 20 20 20 20 20    20 28 63 6f 6e 73 74 20 3a 74 61 67 20 22 4c 69  | teral)...........(const.:tag."Li | 
| 1b60 |  74 65 72 61 6c 20 50 72 65 66 69 78 22 20 6c 69    74 65 72 61 6c 2d 70 72 65 66 69 78 29 0a 20 20  | teral.Prefix".literal-prefix)... | 
| 1b80 |  20 20 20 20 20 20 20 20 28 63 6f 6e 73 74 20 3a    74 61 67 20 22 52 65 67 65 78 70 22 20 72 65 67  | ........(const.:tag."Regexp".reg | 
| 1ba0 |  65 78 70 29 0a 20 20 20 20 20 20 20 20 20 20 28    63 6f 6e 73 74 20 3a 74 61 67 20 22 49 6e 69 74  | exp)...........(const.:tag."Init | 
| 1bc0 |  69 61 6c 69 73 6d 22 20 69 6e 69 74 69 61 6c 69    73 6d 29 0a 20 20 20 20 20 20 20 20 20 20 28 63  | ialism".initialism)...........(c | 
| 1be0 |  6f 6e 73 74 20 3a 74 61 67 20 22 46 75 7a 7a 79    22 20 66 75 7a 7a 79 29 0a 20 20 20 20 20 20 20  | onst.:tag."Fuzzy".fuzzy)........ | 
| 1c00 |  20 20 20 28 63 6f 6e 73 74 20 3a 74 61 67 20 22    50 72 65 66 69 78 22 20 70 72 65 66 69 78 29 0a  | ...(const.:tag."Prefix".prefix). | 
| 1c20 |  20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 74    20 3a 74 61 67 20 22 41 6e 63 68 6f 72 65 64 22  | ..........(const.:tag."Anchored" | 
| 1c40 |  20 61 6e 63 68 6f 72 65 64 29 29 29 0a 0a 28 64    65 66 63 75 73 74 6f 6d 20 70 72 65 73 63 69 65  | .anchored)))..(defcustom.prescie | 
| 1c60 |  6e 74 2d 66 69 6c 74 65 72 2d 61 6c 69 73 74 0a    20 20 27 28 28 6c 69 74 65 72 61 6c 20 2e 20 70  | nt-filter-alist...'((literal...p | 
| 1c80 |  72 65 73 63 69 65 6e 74 2d 6c 69 74 65 72 61 6c    2d 72 65 67 65 78 70 29 0a 20 20 20 20 28 6c 69  | rescient-literal-regexp).....(li | 
| 1ca0 |  74 65 72 61 6c 2d 70 72 65 66 69 78 20 2e 20 70    72 65 73 63 69 65 6e 74 2d 6c 69 74 65 72 61 6c  | teral-prefix...prescient-literal | 
| 1cc0 |  2d 70 72 65 66 69 78 2d 72 65 67 65 78 70 29 0a    20 20 20 20 28 69 6e 69 74 69 61 6c 69 73 6d 20  | -prefix-regexp).....(initialism. | 
| 1ce0 |  2e 20 70 72 65 73 63 69 65 6e 74 2d 69 6e 69 74    69 61 6c 73 2d 72 65 67 65 78 70 29 0a 20 20 20  | ..prescient-initials-regexp).... | 
| 1d00 |  20 28 72 65 67 65 78 70 20 2e 20 70 72 65 73 63    69 65 6e 74 2d 72 65 67 65 78 70 2d 72 65 67 65  | .(regexp...prescient-regexp-rege | 
| 1d20 |  78 70 29 0a 20 20 20 20 28 66 75 7a 7a 79 20 2e    20 70 72 65 73 63 69 65 6e 74 2d 66 75 7a 7a 79  | xp).....(fuzzy...prescient-fuzzy | 
| 1d40 |  2d 72 65 67 65 78 70 29 0a 20 20 20 20 28 70 72    65 66 69 78 20 2e 20 70 72 65 73 63 69 65 6e 74  | -regexp).....(prefix...prescient | 
| 1d60 |  2d 70 72 65 66 69 78 2d 72 65 67 65 78 70 29 0a    20 20 20 20 28 61 6e 63 68 6f 72 65 64 20 2e 20  | -prefix-regexp).....(anchored... | 
| 1d80 |  70 72 65 73 63 69 65 6e 74 2d 61 6e 63 68 6f 72    65 64 2d 72 65 67 65 78 70 29 29 0a 20 20 22 41  | prescient-anchored-regexp))..."A | 
| 1da0 |  6e 20 61 6c 69 73 74 20 6f 66 20 66 69 6c 74 65    72 20 6d 65 74 68 6f 64 73 20 61 6e 64 20 74 68  | n.alist.of.filter.methods.and.th | 
| 1dc0 |  65 69 72 20 66 75 6e 63 74 69 6f 6e 73 2e 0a 0a    54 68 65 73 65 20 73 79 6d 62 6f 6c 73 20 63 61  | eir.functions...These.symbols.ca | 
| 1de0 |  6e 20 62 65 20 69 6e 63 6c 75 64 65 64 20 69 6e    20 60 70 72 65 73 63 69 65 6e 74 2d 66 69 6c 74  | n.be.included.in.`prescient-filt | 
| 1e00 |  65 72 2d 6d 65 74 68 6f 64 27 2c 20 61 6e 64 0a    74 68 65 69 72 20 63 6f 72 72 65 73 70 6f 6e 64  | er-method',.and.their.correspond | 
| 1e20 |  69 6e 67 20 66 75 6e 63 74 69 6f 6e 73 20 77 69    6c 6c 20 62 65 20 75 73 65 64 20 74 6f 20 63 72  | ing.functions.will.be.used.to.cr | 
| 1e40 |  65 61 74 65 20 72 65 67 65 78 70 73 20 66 6f 72    0a 6d 61 74 63 68 69 6e 67 20 63 61 6e 64 69 64  | eate.regexps.for.matching.candid | 
| 1e60 |  61 74 65 73 2e 0a 0a 41 20 66 75 6e 63 74 69 6f    6e 20 73 68 6f 75 6c 64 20 74 61 6b 65 20 74 68  | ates...A.function.should.take.th | 
| 1e80 |  65 20 73 75 62 2d 71 75 65 72 79 20 66 6f 72 20    77 68 69 63 68 20 69 74 20 73 68 6f 75 6c 64 20  | e.sub-query.for.which.it.should. | 
| 1ea0 |  63 72 65 61 74 65 20 61 0a 72 65 67 65 78 70 2c    20 61 6e 64 20 6b 65 79 77 6f 72 64 20 61 72 67  | create.a.regexp,.and.keyword.arg | 
| 1ec0 |  75 6d 65 6e 74 73 20 6f 66 20 77 68 69 63 68 20    74 68 65 72 65 20 61 72 65 20 63 75 72 72 65 6e  | uments.of.which.there.are.curren | 
| 1ee0 |  74 6c 79 3a 0a 0a 20 20 20 20 77 69 74 68 2d 67    72 6f 75 70 20 20 20 20 20 20 3c 62 6f 6f 6c 2d  | tly:......with-group......<bool- | 
| 1f00 |  76 61 6c 75 65 2d 6f 72 2d 61 6c 6c 3e 0a 20 20    20 20 73 75 62 71 75 65 72 79 2d 6e 75 6d 62 65  | value-or-all>.....subquery-numbe | 
| 1f20 |  72 20 3c 69 6e 74 2d 76 61 6c 75 65 3e 0a 0a 54    68 65 20 62 6f 6f 6c 65 61 6e 20 6b 65 79 77 6f  | r.<int-value>..The.boolean.keywo | 
| 1f40 |  72 64 20 61 72 67 75 6d 65 6e 74 20 57 49 54 48    2d 47 52 4f 55 50 20 64 65 73 63 72 69 62 65 73  | rd.argument.WITH-GROUP.describes | 
| 1f60 |  20 77 68 65 74 68 65 72 20 74 68 65 0a 66 75 6e    63 74 69 6f 6e 20 73 68 6f 75 6c 64 20 65 6e 63  | .whether.the.function.should.enc | 
| 1f80 |  6c 6f 73 65 20 6d 61 74 63 68 65 64 20 74 65 78    74 20 69 6e 20 61 20 63 61 70 74 75 72 65 20 67  | lose.matched.text.in.a.capture.g | 
| 1fa0 |  72 6f 75 70 20 28 73 75 63 68 20 61 73 0a 77 69    74 68 20 60 70 72 65 73 63 69 65 6e 74 2d 77 69  | roup.(such.as.with.`prescient-wi | 
| 1fc0 |  74 68 2d 67 72 6f 75 70 27 29 2e 20 20 41 64 64    69 74 69 6f 6e 61 6c 6c 79 2c 20 69 66 20 74 68  | th-group')...Additionally,.if.th | 
| 1fe0 |  65 20 76 61 6c 75 65 20 69 73 20 74 68 65 0a 73    79 6d 62 6f 6c 20 60 61 6c 6c 27 2c 20 74 68 65  | e.value.is.the.symbol.`all',.the | 
| 2000 |  6e 20 6c 69 74 65 72 61 6c 20 73 75 62 73 74 72    69 6e 67 73 20 73 68 6f 75 6c 64 20 62 65 20 65  | n.literal.substrings.should.be.e | 
| 2020 |  6e 63 6c 6f 73 65 64 20 69 6e 0a 63 61 70 74 75    72 65 20 67 72 6f 75 70 73 2e 0a 0a 54 68 65 20  | nclosed.in.capture.groups...The. | 
| 2040 |  69 6e 74 65 67 65 72 20 6b 65 79 77 6f 72 64 20    61 72 67 75 6d 65 6e 74 20 53 55 42 51 55 45 52  | integer.keyword.argument.SUBQUER | 
| 2060 |  59 2d 4e 55 4d 42 45 52 20 73 74 61 74 65 73 20    74 68 65 20 6f 72 64 65 72 20 6f 66 0a 68 6f 77  | Y-NUMBER.states.the.order.of.how | 
| 2080 |  20 74 68 65 20 69 6e 70 75 74 20 68 61 73 20 62    65 65 6e 20 73 70 6c 69 74 20 69 6e 74 6f 20 69  | .the.input.has.been.split.into.i | 
| 20a0 |  6e 64 69 76 69 64 75 61 6c 20 73 75 62 71 75 65    72 69 65 73 20 28 73 74 61 72 74 69 6e 67 0a 77  | ndividual.subqueries.(starting.w | 
| 20c0 |  69 74 68 20 30 29 2e 20 20 46 6f 72 20 65 78 61    6d 70 6c 65 2c 20 69 66 20 74 68 65 20 69 6e 70  | ith.0)...For.example,.if.the.inp | 
| 20e0 |  75 74 20 77 61 73 20 5c 22 66 6f 6f 20 62 61 72    20 62 61 7a 5c 22 20 74 68 65 0a 66 75 6e 63 74  | ut.was.\"foo.bar.baz\".the.funct | 
| 2100 |  69 6f 6e 20 77 69 6c 6c 20 62 65 20 63 61 6c 6c    65 64 20 74 68 72 65 65 20 74 69 6d 65 73 3a 0a  | ion.will.be.called.three.times:. | 
| 2120 |  0a 20 20 20 20 28 66 6e 20 5c 22 66 6f 6f 5c 22    20 3a 73 75 62 71 75 65 72 79 2d 6e 75 6d 62 65  | .....(fn.\"foo\".:subquery-numbe | 
| 2140 |  72 20 30 29 0a 20 20 20 20 28 66 6e 20 5c 22 62    61 72 5c 22 20 3a 73 75 62 71 75 65 72 79 2d 6e  | r.0).....(fn.\"bar\".:subquery-n | 
| 2160 |  75 6d 62 65 72 20 31 29 0a 20 20 20 20 28 66 6e    20 5c 22 62 61 7a 5c 22 20 3a 73 75 62 71 75 65  | umber.1).....(fn.\"baz\".:subque | 
| 2180 |  72 79 2d 6e 75 6d 62 65 72 20 32 29 22 0a 20 20    3a 74 79 70 65 20 27 28 61 6c 69 73 74 20 3a 6b  | ry-number.2)"...:type.'(alist.:k | 
| 21a0 |  65 79 2d 74 79 70 65 20 73 79 6d 62 6f 6c 20 3a    76 61 6c 75 65 2d 74 79 70 65 20 66 75 6e 63 74  | ey-type.symbol.:value-type.funct | 
| 21c0 |  69 6f 6e 29 29 0a 0a 28 64 65 66 63 75 73 74 6f    6d 20 70 72 65 73 63 69 65 6e 74 2d 73 6f 72 74  | ion))..(defcustom.prescient-sort | 
| 21e0 |  2d 6c 65 6e 67 74 68 2d 65 6e 61 62 6c 65 20 74    0a 20 20 22 57 68 65 74 68 65 72 20 74 6f 20 73  | -length-enable.t..."Whether.to.s | 
| 2200 |  6f 72 74 20 63 61 6e 64 69 64 61 74 65 73 20 62    79 20 6c 65 6e 67 74 68 2e 0a 49 66 20 6e 6f 6e  | ort.candidates.by.length..If.non | 
| 2220 |  2d 6e 69 6c 2c 20 74 68 65 6e 20 63 61 6e 64 69    64 61 74 65 73 20 77 69 74 68 20 69 64 65 6e 74  | -nil,.then.candidates.with.ident | 
| 2240 |  69 63 61 6c 20 72 65 63 65 6e 63 79 20 61 6e 64    20 66 72 65 71 75 65 6e 63 79 0a 77 69 6c 6c 20  | ical.recency.and.frequency.will. | 
| 2260 |  62 65 20 73 6f 72 74 65 64 20 62 79 20 6c 65 6e    67 74 68 2e 20 49 66 20 6e 69 6c 2c 20 74 68 65  | be.sorted.by.length..If.nil,.the | 
| 2280 |  6e 20 74 68 65 79 20 77 69 6c 6c 20 62 65 20 6c    65 66 74 20 69 6e 20 74 68 65 0a 6f 72 64 65 72  | n.they.will.be.left.in.the.order | 
| 22a0 |  20 6f 66 20 74 68 65 20 6f 72 69 67 69 6e 61 6c    20 63 6f 6c 6c 65 63 74 69 6f 6e 2e 0a 0a 49 74  | .of.the.original.collection...It | 
| 22c0 |  20 6d 69 67 68 74 20 62 65 20 64 65 73 69 72 61    62 6c 65 20 74 6f 20 73 65 74 20 74 68 69 73 20  | .might.be.desirable.to.set.this. | 
| 22e0 |  76 61 72 69 61 62 6c 65 20 74 6f 20 6e 69 6c 20    28 76 69 61 0a 60 63 6f 6d 70 61 6e 79 2d 70 72  | variable.to.nil.(via.`company-pr | 
| 2300 |  65 73 63 69 65 6e 74 2d 73 6f 72 74 2d 6c 65 6e    67 74 68 2d 65 6e 61 62 6c 65 27 29 20 77 68 65  | escient-sort-length-enable').whe | 
| 2320 |  6e 20 77 6f 72 6b 69 6e 67 20 77 69 74 68 20 61    0a 43 6f 6d 70 61 6e 79 20 62 61 63 6b 65 6e 64  | n.working.with.a.Company.backend | 
| 2340 |  20 77 68 69 63 68 20 72 65 74 75 72 6e 73 20 66    75 7a 7a 79 2d 6d 61 74 63 68 65 64 20 72 65 73  | .which.returns.fuzzy-matched.res | 
| 2360 |  75 6c 74 73 20 74 68 61 74 20 63 61 6e 6e 6f 74    0a 75 73 65 66 75 6c 6c 79 20 62 65 20 73 6f 72  | ults.that.cannot.usefully.be.sor | 
| 2380 |  74 65 64 20 62 79 20 6c 65 6e 67 74 68 20 28 70    72 65 73 75 6d 61 62 6c 79 2c 20 74 68 65 20 62  | ted.by.length.(presumably,.the.b | 
| 23a0 |  61 63 6b 65 6e 64 20 72 65 74 75 72 6e 73 0a 74    68 65 73 65 20 72 65 73 75 6c 74 73 20 69 6e 20  | ackend.returns.these.results.in. | 
| 23c0 |  73 6f 6d 65 20 61 6c 72 65 61 64 79 2d 73 6f 72    74 65 64 20 6f 72 64 65 72 29 2e 22 0a 20 20 3a  | some.already-sorted.order)."...: | 
| 23e0 |  74 79 70 65 20 27 62 6f 6f 6c 65 61 6e 29 0a 0a    28 64 65 66 63 75 73 74 6f 6d 20 70 72 65 73 63  | type.'boolean)..(defcustom.presc | 
| 2400 |  69 65 6e 74 2d 74 69 65 62 72 65 61 6b 65 72 20    6e 69 6c 0a 20 20 22 49 66 20 6e 6f 6e 2d 6e 69  | ient-tiebreaker.nil..."If.non-ni | 
| 2420 |  6c 2c 20 74 68 65 20 6d 65 74 68 6f 64 20 75 73    65 64 20 74 6f 20 62 72 65 61 6b 20 74 69 65 73  | l,.the.method.used.to.break.ties | 
| 2440 |  20 69 6e 73 74 65 61 64 20 6f 66 20 6c 65 6e 67    74 68 2e 0a 54 68 65 20 76 61 6c 75 65 20 77 69  | .instead.of.length..The.value.wi | 
| 2460 |  6c 6c 20 62 65 20 63 61 6c 6c 65 64 20 61 73 20    61 20 66 75 6e 63 74 69 6f 6e 20 77 69 74 68 20  | ll.be.called.as.a.function.with. | 
| 2480 |  74 77 6f 20 63 61 6e 64 69 64 61 74 65 73 20 74    68 61 74 0a 68 61 76 65 20 74 68 65 20 73 61 6d  | two.candidates.that.have.the.sam | 
| 24a0 |  65 20 72 65 63 65 6e 63 79 20 61 6e 64 20 66 72    65 71 75 65 6e 63 79 20 69 6e 66 6f 72 6d 61 74  | e.recency.and.frequency.informat | 
| 24c0 |  69 6f 6e 2c 20 61 6e 64 20 73 68 6f 75 6c 64 0a    72 65 74 75 72 6e 20 61 20 6e 75 6d 62 65 72 20  | ion,.and.should.return.a.number. | 
| 24e0 |  74 6f 20 69 6e 64 69 63 61 74 65 20 74 68 65 69    72 20 72 65 6c 61 74 69 76 65 20 6f 72 64 65 72  | to.indicate.their.relative.order | 
| 2500 |  20 28 6e 65 67 61 74 69 76 65 20 66 6f 72 0a 66    69 72 73 74 20 3c 20 73 65 63 6f 6e 64 2c 20 7a  | .(negative.for.first.<.second,.z | 
| 2520 |  65 72 6f 20 66 6f 72 20 66 69 72 73 74 20 3d 20    73 65 63 6f 6e 64 2c 20 70 6f 73 69 74 69 76 65  | ero.for.first.=.second,.positive | 
| 2540 |  20 66 6f 72 20 66 69 72 73 74 20 3e 0a 73 65 63    6f 6e 64 29 2c 20 77 68 65 72 65 20 63 61 6e 64  | .for.first.>.second),.where.cand | 
| 2560 |  69 64 61 74 65 73 20 61 72 65 20 61 73 73 75 6d    65 64 20 74 6f 20 73 6f 72 74 20 69 6e 20 61 73  | idates.are.assumed.to.sort.in.as | 
| 2580 |  63 65 6e 64 69 6e 67 20 6f 72 64 65 72 2e 0a 59    6f 75 20 63 61 6e 20 61 6c 73 6f 20 75 73 65 20  | cending.order..You.can.also.use. | 
| 25a0 |  74 68 65 20 76 61 72 69 61 62 6c 65 20 60 70 72    65 73 63 69 65 6e 74 2d 71 75 65 72 79 27 20 74  | the.variable.`prescient-query'.t | 
| 25c0 |  6f 20 61 63 63 65 73 73 20 74 68 65 0a 6f 72 69    67 69 6e 61 6c 20 71 75 65 72 79 20 66 72 6f 6d  | o.access.the.original.query.from | 
| 25e0 |  20 74 68 65 20 75 73 65 72 20 28 62 75 74 20 73    65 65 20 74 68 61 74 20 76 61 72 69 61 62 6c 65  | .the.user.(but.see.that.variable | 
| 2600 |  20 66 6f 72 0a 63 61 76 65 61 74 73 29 2e 22 0a    20 20 3a 74 79 70 65 20 27 28 63 68 6f 69 63 65  | .for.caveats)."...:type.'(choice | 
| 2620 |  0a 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73    74 20 3a 74 61 67 20 22 4c 65 6e 67 74 68 22 20  | ...........(const.:tag."Length". | 
| 2640 |  6e 69 6c 29 0a 20 20 20 20 20 20 20 20 20 20 28    66 75 6e 63 74 69 6f 6e 20 3a 74 61 67 20 22 43  | nil)...........(function.:tag."C | 
| 2660 |  75 73 74 6f 6d 20 66 75 6e 63 74 69 6f 6e 22 29    29 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 70  | ustom.function")))..(defcustom.p | 
| 2680 |  72 65 73 63 69 65 6e 74 2d 61 67 67 72 65 73 73    69 76 65 2d 66 69 6c 65 2d 73 61 76 65 20 6e 69  | rescient-aggressive-file-save.ni | 
| 26a0 |  6c 0a 20 20 22 57 68 65 74 68 65 72 20 74 6f 20    73 61 76 65 20 74 68 65 20 63 61 63 68 65 20 66  | l..."Whether.to.save.the.cache.f | 
| 26c0 |  69 6c 65 20 61 67 67 72 65 73 73 69 76 65 6c 79    2e 0a 49 66 20 6e 6f 6e 2d 6e 69 6c 2c 20 74 68  | ile.aggressively..If.non-nil,.th | 
| 26e0 |  65 6e 20 77 72 69 74 65 20 74 68 65 20 63 61 63    68 65 20 64 61 74 61 20 74 6f 20 60 70 72 65 73  | en.write.the.cache.data.to.`pres | 
| 2700 |  63 69 65 6e 74 2d 73 61 76 65 2d 66 69 6c 65 27    0a 61 66 74 65 72 20 74 68 65 20 63 61 63 68 65  | cient-save-file'.after.the.cache | 
| 2720 |  20 64 61 74 61 20 69 73 20 75 70 64 61 74 65 64    20 62 79 20 60 70 72 65 73 63 69 65 6e 74 2d 72  | .data.is.updated.by.`prescient-r | 
| 2740 |  65 6d 65 6d 62 65 72 27 20 77 68 65 6e 0a 60 70    72 65 73 63 69 65 6e 74 2d 70 65 72 73 69 73 74  | emember'.when.`prescient-persist | 
| 2760 |  2d 6d 6f 64 65 27 20 69 73 20 61 63 74 69 76 61    74 65 64 2e 22 0a 20 20 3a 74 79 70 65 20 27 62  | -mode'.is.activated."...:type.'b | 
| 2780 |  6f 6f 6c 65 61 6e 29 0a 0a 28 64 65 66 63 75 73    74 6f 6d 20 70 72 65 73 63 69 65 6e 74 2d 73 6f  | oolean)..(defcustom.prescient-so | 
| 27a0 |  72 74 2d 66 75 6c 6c 2d 6d 61 74 63 68 65 73 2d    66 69 72 73 74 20 6e 69 6c 0a 20 20 22 57 68 65  | rt-full-matches-first.nil..."Whe | 
| 27c0 |  74 68 65 72 20 74 6f 20 73 6f 72 74 20 66 75 6c    6c 79 20 6d 61 74 63 68 65 64 20 63 61 6e 64 69  | ther.to.sort.fully.matched.candi | 
| 27e0 |  64 61 74 65 73 20 62 65 66 6f 72 65 20 6f 74 68    65 72 73 2e 0a 0a 50 72 65 73 63 69 65 6e 74 20  | dates.before.others...Prescient. | 
| 2800 |  63 61 6e 20 73 6f 72 74 20 62 79 20 72 65 63 65    6e 63 79 2c 20 66 72 65 71 75 65 6e 63 79 2c 20  | can.sort.by.recency,.frequency,. | 
| 2820 |  61 6e 64 20 63 61 6e 64 69 64 61 74 65 20 6c 65    6e 67 74 68 2e 0a 57 69 74 68 20 74 68 69 73 20  | and.candidate.length..With.this. | 
| 2840 |  6f 70 74 69 6f 6e 2c 20 66 75 6c 6c 79 20 6d 61    74 63 68 65 64 20 63 61 6e 64 69 64 61 74 65 73  | option,.fully.matched.candidates | 
| 2860 |  20 77 69 6c 6c 20 62 65 20 73 6f 72 74 65 64 20    62 65 66 6f 72 65 0a 70 61 72 74 69 61 6c 6c 79  | .will.be.sorted.before.partially | 
| 2880 |  20 6d 61 74 63 68 65 64 20 63 61 6e 64 69 64 61    74 65 73 2c 20 62 75 74 20 63 61 6e 64 69 64 61  | .matched.candidates,.but.candida | 
| 28a0 |  74 65 73 20 69 6e 20 65 61 63 68 20 67 72 6f 75    70 20 77 69 6c 6c 0a 73 74 69 6c 6c 20 62 65 20  | tes.in.each.group.will.still.be. | 
| 28c0 |  73 6f 72 74 65 64 20 6c 69 6b 65 20 6e 6f 72 6d    61 6c 2e 22 0a 20 20 3a 74 79 70 65 20 27 62 6f  | sorted.like.normal."...:type.'bo | 
| 28e0 |  6f 6c 65 61 6e 29 0a 0a 28 64 65 66 63 75 73 74    6f 6d 20 70 72 65 73 63 69 65 6e 74 2d 75 73 65  | olean)..(defcustom.prescient-use | 
| 2900 |  2d 63 68 61 72 2d 66 6f 6c 64 69 6e 67 20 74 0a    20 20 22 57 68 65 74 68 65 72 20 63 65 72 74 61  | -char-folding.t..."Whether.certa | 
| 2920 |  69 6e 20 6c 69 74 65 72 61 6c 20 66 69 6c 74 65    72 69 6e 67 20 6d 65 74 68 6f 64 73 20 75 73 65  | in.literal.filtering.methods.use | 
| 2940 |  20 63 68 61 72 61 63 74 65 72 20 66 6f 6c 64 69    6e 67 2e 0a 0a 54 68 69 73 20 61 66 66 65 63 74  | .character.folding...This.affect | 
| 2960 |  73 20 74 68 65 20 60 6c 69 74 65 72 61 6c 27 20    61 6e 64 20 60 6c 69 74 65 72 61 6c 2d 70 72 65  | s.the.`literal'.and.`literal-pre | 
| 2980 |  66 69 78 27 20 66 69 6c 74 65 72 69 6e 67 20 6d    65 74 68 6f 64 73 2e 0a 0a 49 6e 20 45 6d 61 63  | fix'.filtering.methods...In.Emac | 
| 29a0 |  73 20 76 65 72 73 69 6f 6e 73 20 32 37 20 6f 72    20 67 72 65 61 74 65 72 2c 20 73 65 65 20 61 6c  | s.versions.27.or.greater,.see.al | 
| 29c0 |  73 6f 20 74 68 65 20 63 75 73 74 6f 6d 69 7a 61    62 6c 65 0a 76 61 72 69 61 62 6c 65 73 20 60 63  | so.the.customizable.variables.`c | 
| 29e0 |  68 61 72 2d 66 6f 6c 64 2d 69 6e 63 6c 75 64 65    27 2c 20 60 63 68 61 72 2d 66 6f 6c 64 2d 65 78  | har-fold-include',.`char-fold-ex | 
| 2a00 |  63 6c 75 64 65 27 2c 20 61 6e 64 0a 60 63 68 61    72 2d 66 6f 6c 64 2d 73 79 6d 6d 65 74 72 69 63  | clude',.and.`char-fold-symmetric | 
| 2a20 |  27 2e 22 0a 20 20 3a 74 79 70 65 20 27 62 6f 6f    6c 65 61 6e 29 0a 0a 28 64 65 66 63 75 73 74 6f  | '."...:type.'boolean)..(defcusto | 
| 2a40 |  6d 20 70 72 65 73 63 69 65 6e 74 2d 75 73 65 2d    63 61 73 65 2d 66 6f 6c 64 69 6e 67 20 27 73 6d  | m.prescient-use-case-folding.'sm | 
| 2a60 |  61 72 74 0a 20 20 22 57 68 65 74 68 65 72 20 66    69 6c 74 65 72 69 6e 67 20 6d 65 74 68 6f 64 73  | art..."Whether.filtering.methods | 
| 2a80 |  20 61 72 65 20 63 61 73 65 20 66 6f 6c 64 69 6e    67 2e 0a 0a 49 66 20 74 2c 20 61 6c 77 61 79 73  | .are.case.folding...If.t,.always | 
| 2aa0 |  20 75 73 65 20 63 61 73 65 20 66 6f 6c 64 69 6e    67 2e 20 20 49 66 20 6e 69 6c 2c 20 6e 65 76 65  | .use.case.folding...If.nil,.neve | 
| 2ac0 |  72 20 75 73 65 20 63 61 73 65 20 66 6f 6c 64 69    6e 67 2e 0a 49 66 20 60 73 6d 61 72 74 27 20 28  | r.use.case.folding..If.`smart'.( | 
| 2ae0 |  74 68 65 20 64 65 66 61 75 6c 74 29 2c 20 75 73    65 20 63 61 73 65 20 66 6f 6c 64 69 6e 67 20 6f  | the.default),.use.case.folding.o | 
| 2b00 |  6e 6c 79 20 77 68 65 6e 20 74 68 65 20 71 75 65    72 79 0a 63 6f 6e 74 61 69 6e 73 20 6e 6f 20 75  | nly.when.the.query.contains.no.u | 
| 2b20 |  70 70 65 72 2d 63 61 73 65 20 6c 65 74 74 65 72    73 2e 22 0a 20 20 3a 74 79 70 65 20 27 28 63 68  | pper-case.letters."...:type.'(ch | 
| 2b40 |  6f 69 63 65 0a 20 20 20 20 20 20 20 20 20 20 28    63 6f 6e 73 74 20 3a 74 61 67 20 22 41 6c 77 61  | oice...........(const.:tag."Alwa | 
| 2b60 |  79 73 22 20 74 29 0a 20 20 20 20 20 20 20 20 20    20 28 63 6f 6e 73 74 20 3a 74 61 67 20 22 4e 65  | ys".t)...........(const.:tag."Ne | 
| 2b80 |  76 65 72 22 20 6e 69 6c 29 0a 20 20 20 20 20 20    20 20 20 20 28 63 6f 6e 73 74 20 3a 74 61 67 20  | ver".nil)...........(const.:tag. | 
| 2ba0 |  22 55 6e 6c 65 73 73 20 75 73 69 6e 67 20 75 70    70 65 72 2d 63 61 73 65 20 6c 65 74 74 65 72 73  | "Unless.using.upper-case.letters | 
| 2bc0 |  22 20 73 6d 61 72 74 29 29 29 0a 0a 28 64 65 66    63 75 73 74 6f 6d 20 70 72 65 73 63 69 65 6e 74  | ".smart)))..(defcustom.prescient | 
| 2be0 |  2d 63 6f 6d 70 6c 65 74 69 6f 6e 2d 68 69 67 68    6c 69 67 68 74 2d 6d 61 74 63 68 65 73 20 74 0a  | -completion-highlight-matches.t. | 
| 2c00 |  20 20 22 57 68 65 74 68 65 72 20 74 68 65 20 60    70 72 65 73 63 69 65 6e 74 27 20 63 6f 6d 70 6c  | .."Whether.the.`prescient'.compl | 
| 2c20 |  65 74 69 6f 6e 20 73 74 79 6c 65 20 73 68 6f 75    6c 64 20 68 69 67 68 6c 69 67 68 74 20 6d 61 74  | etion.style.should.highlight.mat | 
| 2c40 |  63 68 65 73 2e 0a 0a 49 66 20 60 63 6f 6d 70 6c    65 74 69 6f 6e 2d 6c 61 7a 79 2d 68 69 6c 69 74  | ches...If.`completion-lazy-hilit | 
| 2c60 |  27 20 69 73 20 62 6f 75 6e 64 20 61 6e 64 20 6e    6f 6e 2d 6e 69 6c 2c 20 74 68 65 6e 20 74 68 69  | '.is.bound.and.non-nil,.then.thi | 
| 2c80 |  73 20 75 73 65 72 0a 6f 70 74 69 6f 6e 20 69 73    20 69 67 6e 6f 72 65 64 20 69 6e 20 66 61 76 6f  | s.user.option.is.ignored.in.favo | 
| 2ca0 |  72 20 6f 66 20 74 68 61 74 20 76 61 72 69 61 62    6c 65 2e 0a 0a 53 65 65 20 61 6c 73 6f 20 74 68  | r.of.that.variable...See.also.th | 
| 2cc0 |  65 20 66 61 63 65 73 20 60 70 72 65 73 63 69 65    6e 74 2d 70 72 69 6d 61 72 79 2d 68 69 67 68 6c  | e.faces.`prescient-primary-highl | 
| 2ce0 |  69 67 68 74 27 20 61 6e 64 0a 60 70 72 65 73 63    69 65 6e 74 2d 73 65 63 6f 6e 64 61 72 79 2d 68  | ight'.and.`prescient-secondary-h | 
| 2d00 |  69 67 68 6c 69 67 68 74 27 2e 22 0a 20 20 3a 74    79 70 65 20 27 62 6f 6f 6c 65 61 6e 29 0a 0a 28  | ighlight'."...:type.'boolean)..( | 
| 2d20 |  64 65 66 69 6e 65 2d 6f 62 73 6f 6c 65 74 65 2d    66 61 63 65 2d 61 6c 69 61 73 20 27 73 65 6c 65  | define-obsolete-face-alias.'sele | 
| 2d40 |  63 74 72 75 6d 2d 70 72 69 6d 61 72 79 2d 68 69    67 68 6c 69 67 68 74 0a 20 20 20 20 20 20 20 20  | ctrum-primary-highlight......... | 
| 2d60 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 27 70 72 65 73 63 69 65 6e 74 2d 70  | ....................'prescient-p | 
| 2d80 |  72 69 6d 61 72 79 2d 68 69 67 68 6c 69 67 68 74    20 74 29 0a 28 64 65 66 69 6e 65 2d 6f 62 73 6f  | rimary-highlight.t).(define-obso | 
| 2da0 |  6c 65 74 65 2d 66 61 63 65 2d 61 6c 69 61 73 20    27 73 65 6c 65 63 74 72 75 6d 2d 70 72 65 73 63  | lete-face-alias.'selectrum-presc | 
| 2dc0 |  69 65 6e 74 2d 70 72 69 6d 61 72 79 2d 68 69 67    68 6c 69 67 68 74 0a 20 20 20 20 20 20 20 20 20  | ient-primary-highlight.......... | 
| 2de0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 27 70 72 65 73 63 69 65 6e 74 2d 70 72  | ...................'prescient-pr | 
| 2e00 |  69 6d 61 72 79 2d 68 69 67 68 6c 69 67 68 74 20    74 29 0a 28 64 65 66 66 61 63 65 20 70 72 65 73  | imary-highlight.t).(defface.pres | 
| 2e20 |  63 69 65 6e 74 2d 70 72 69 6d 61 72 79 2d 68 69    67 68 6c 69 67 68 74 0a 20 20 27 28 28 74 20 3a  | cient-primary-highlight...'((t.: | 
| 2e40 |  77 65 69 67 68 74 20 62 6f 6c 64 29 29 0a 20 20    22 46 61 63 65 20 75 73 65 64 20 74 6f 20 68 69  | weight.bold))..."Face.used.to.hi | 
| 2e60 |  67 68 6c 69 67 68 74 20 74 68 65 20 70 61 72 74    73 20 6f 66 20 63 61 6e 64 69 64 61 74 65 73 20  | ghlight.the.parts.of.candidates. | 
| 2e80 |  74 68 61 74 20 6d 61 74 63 68 20 74 68 65 20 69    6e 70 75 74 2e 22 29 0a 0a 28 64 65 66 69 6e 65  | that.match.the.input.")..(define | 
| 2ea0 |  2d 6f 62 73 6f 6c 65 74 65 2d 66 61 63 65 2d 61    6c 69 61 73 20 27 73 65 6c 65 63 74 72 75 6d 2d  | -obsolete-face-alias.'selectrum- | 
| 2ec0 |  73 65 63 6f 6e 64 61 72 79 2d 68 69 67 68 6c 69    67 68 74 0a 20 20 20 20 20 20 20 20 20 20 20 20  | secondary-highlight............. | 
| 2ee0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    27 70 72 65 73 63 69 65 6e 74 2d 73 65 63 6f 6e  | ................'prescient-secon | 
| 2f00 |  64 61 72 79 2d 68 69 67 68 6c 69 67 68 74 20 74    29 0a 28 64 65 66 69 6e 65 2d 6f 62 73 6f 6c 65  | dary-highlight.t).(define-obsole | 
| 2f20 |  74 65 2d 66 61 63 65 2d 61 6c 69 61 73 20 27 73    65 6c 65 63 74 72 75 6d 2d 70 72 65 73 63 69 65  | te-face-alias.'selectrum-prescie | 
| 2f40 |  6e 74 2d 73 65 63 6f 6e 64 61 72 79 2d 68 69 67    68 6c 69 67 68 74 0a 20 20 20 20 20 20 20 20 20  | nt-secondary-highlight.......... | 
| 2f60 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 27 70 72 65 73 63 69 65 6e 74 2d 73 65  | ...................'prescient-se | 
| 2f80 |  63 6f 6e 64 61 72 79 2d 68 69 67 68 6c 69 67 68    74 20 74 29 0a 28 64 65 66 66 61 63 65 20 70 72  | condary-highlight.t).(defface.pr | 
| 2fa0 |  65 73 63 69 65 6e 74 2d 73 65 63 6f 6e 64 61 72    79 2d 68 69 67 68 6c 69 67 68 74 0a 20 20 27 28  | escient-secondary-highlight...'( | 
| 2fc0 |  28 74 20 3a 69 6e 68 65 72 69 74 20 70 72 65 73    63 69 65 6e 74 2d 70 72 69 6d 61 72 79 2d 68 69  | (t.:inherit.prescient-primary-hi | 
| 2fe0 |  67 68 6c 69 67 68 74 20 3a 75 6e 64 65 72 6c 69    6e 65 20 74 29 29 0a 20 20 22 41 64 64 69 74 69  | ghlight.:underline.t))..."Additi | 
| 3000 |  6f 6e 61 6c 20 66 61 63 65 20 75 73 65 64 20 74    6f 20 68 69 67 68 6c 69 67 68 74 20 70 61 72 74  | onal.face.used.to.highlight.part | 
| 3020 |  73 20 6f 66 20 63 61 6e 64 69 64 61 74 65 73 2e    0a 0a 4d 61 79 20 62 65 20 75 73 65 64 20 74 6f  | s.of.candidates...May.be.used.to | 
| 3040 |  20 68 69 67 68 6c 69 67 68 74 20 70 61 72 74 73    20 6f 66 20 63 61 6e 64 69 64 61 74 65 73 20 74  | .highlight.parts.of.candidates.t | 
| 3060 |  68 61 74 20 6d 61 74 63 68 20 73 70 65 63 69 66    69 63 0a 70 61 72 74 73 20 6f 66 20 74 68 65 20  | hat.match.specific.parts.of.the. | 
| 3080 |  69 6e 70 75 74 2e 22 29 0a 0a 3b 3b 3b 3b 20 43    61 63 68 65 73 0a 0a 28 64 65 66 76 61 72 20 70  | input.")..;;;;.Caches..(defvar.p | 
| 30a0 |  72 65 73 63 69 65 6e 74 2d 2d 68 69 73 74 6f 72    79 20 28 6d 61 6b 65 2d 68 61 73 68 2d 74 61 62  | rescient--history.(make-hash-tab | 
| 30c0 |  6c 65 20 3a 74 65 73 74 20 27 65 71 75 61 6c 29    0a 20 20 22 48 61 73 68 20 74 61 62 6c 65 20 6f  | le.:test.'equal)..."Hash.table.o | 
| 30e0 |  66 20 72 65 63 65 6e 74 6c 79 20 63 68 6f 73 65    6e 20 63 61 6e 64 69 64 61 74 65 73 2e 0a 54 68  | f.recently.chosen.candidates..Th | 
| 3100 |  65 20 6b 65 79 73 20 61 72 65 20 63 61 6e 64 69    64 61 74 65 73 20 61 73 20 73 74 72 69 6e 67 73  | e.keys.are.candidates.as.strings | 
| 3120 |  20 61 6e 64 20 74 68 65 20 76 61 6c 75 65 73 20    61 72 65 20 30 2d 62 61 73 65 64 0a 69 6e 64 69  | .and.the.values.are.0-based.indi | 
| 3140 |  63 65 73 2c 20 6c 65 73 73 20 74 68 61 6e 20 60    70 72 65 73 63 69 65 6e 74 2d 68 69 73 74 6f 72  | ces,.less.than.`prescient-histor | 
| 3160 |  79 2d 6c 65 6e 67 74 68 27 2e 20 54 68 65 20 6e    75 6d 62 65 72 20 6f 66 0a 76 61 6c 75 65 73 20  | y-length'..The.number.of.values. | 
| 3180 |  77 69 6c 6c 20 62 65 20 61 74 20 6d 6f 73 74 20    60 70 72 65 73 63 69 65 6e 74 2d 68 69 73 74 6f  | will.be.at.most.`prescient-histo | 
| 31a0 |  72 79 2d 6c 65 6e 67 74 68 27 2e 22 29 0a 0a 28    64 65 66 75 6e 20 70 72 65 73 63 69 65 6e 74 2d  | ry-length'.")..(defun.prescient- | 
| 31c0 |  2d 68 69 73 74 6f 72 79 2d 61 73 2d 6c 69 73 74    20 28 29 0a 20 20 22 52 65 74 75 72 6e 20 61 20  | -history-as-list.()..."Return.a. | 
| 31e0 |  6c 69 73 74 20 6f 66 20 74 68 65 20 6d 6f 73 74    20 72 65 63 65 6e 74 6c 79 20 63 68 6f 73 65 6e  | list.of.the.most.recently.chosen | 
| 3200 |  20 63 61 6e 64 69 64 61 74 65 73 20 61 73 20 73    74 72 69 6e 67 73 2e 0a 54 68 65 20 6d 6f 73 74  | .candidates.as.strings..The.most | 
| 3220 |  20 72 65 63 65 6e 74 6c 79 20 63 68 6f 73 65 6e    20 63 61 6e 64 69 64 61 74 65 73 20 61 72 65 20  | .recently.chosen.candidates.are. | 
| 3240 |  61 74 20 74 68 65 20 66 72 6f 6e 74 20 6f 66 20    74 68 65 0a 6c 69 73 74 2e 20 54 68 69 73 20 66  | at.the.front.of.the.list..This.f | 
| 3260 |  75 6e 63 74 69 6f 6e 20 69 73 20 6d 6f 73 74 6c    79 20 75 73 65 66 75 6c 20 66 6f 72 20 64 65 62  | unction.is.mostly.useful.for.deb | 
| 3280 |  75 67 67 69 6e 67 2e 22 0a 20 20 28 6c 65 74 20    28 28 68 69 73 74 6f 72 79 20 28 6d 61 6b 65 2d  | ugging."...(let.((history.(make- | 
| 32a0 |  76 65 63 74 6f 72 20 70 72 65 73 63 69 65 6e 74    2d 68 69 73 74 6f 72 79 2d 6c 65 6e 67 74 68 20  | vector.prescient-history-length. | 
| 32c0 |  6e 69 6c 29 29 29 0a 20 20 20 20 28 6d 61 70 68    61 73 68 0a 20 20 20 20 20 28 6c 61 6d 62 64 61  | nil))).....(maphash......(lambda | 
| 32e0 |  20 28 63 61 6e 64 20 69 6e 64 65 78 29 0a 20 20    20 20 20 20 20 28 69 67 6e 6f 72 65 2d 65 72 72  | .(cand.index)........(ignore-err | 
| 3300 |  6f 72 73 0a 20 20 20 20 20 20 20 20 20 28 61 73    65 74 20 68 69 73 74 6f 72 79 20 69 6e 64 65 78  | ors..........(aset.history.index | 
| 3320 |  20 63 61 6e 64 29 29 29 0a 20 20 20 20 20 70 72    65 73 63 69 65 6e 74 2d 2d 68 69 73 74 6f 72 79  | .cand)))......prescient--history | 
| 3340 |  29 0a 20 20 20 20 28 63 6c 2d 72 65 6d 6f 76 65    20 6e 69 6c 20 28 61 70 70 65 6e 64 20 68 69 73  | ).....(cl-remove.nil.(append.his | 
| 3360 |  74 6f 72 79 20 6e 69 6c 29 29 29 29 0a 0a 28 64    65 66 76 61 72 20 70 72 65 73 63 69 65 6e 74 2d  | tory.nil))))..(defvar.prescient- | 
| 3380 |  2d 66 72 65 71 75 65 6e 63 79 20 28 6d 61 6b 65    2d 68 61 73 68 2d 74 61 62 6c 65 20 3a 74 65 73  | -frequency.(make-hash-table.:tes | 
| 33a0 |  74 20 27 65 71 75 61 6c 29 0a 20 20 22 48 61 73    68 20 74 61 62 6c 65 20 6f 66 20 66 72 65 71 75  | t.'equal)..."Hash.table.of.frequ | 
| 33c0 |  65 6e 74 6c 79 20 63 68 6f 73 65 6e 20 63 61 6e    64 69 64 61 74 65 73 2e 0a 54 68 65 20 6b 65 79  | ently.chosen.candidates..The.key | 
| 33e0 |  73 20 61 72 65 20 63 61 6e 64 69 64 61 74 65 73    20 61 73 20 73 74 72 69 6e 67 73 20 61 6e 64 20  | s.are.candidates.as.strings.and. | 
| 3400 |  74 68 65 20 76 61 6c 75 65 73 20 61 72 65 0a 66    72 65 71 75 65 6e 63 69 65 73 20 28 66 6c 6f 61  | the.values.are.frequencies.(floa | 
| 3420 |  74 69 6e 67 2d 70 6f 69 6e 74 20 6e 75 6d 62 65    72 73 29 2e 20 46 72 65 71 75 65 6e 63 69 65 73  | ting-point.numbers)..Frequencies | 
| 3440 |  20 77 69 6c 6c 20 62 65 20 61 74 0a 6c 65 61 73    74 20 60 70 72 65 73 63 69 65 6e 74 2d 66 72 65  | .will.be.at.least.`prescient-fre | 
| 3460 |  71 75 65 6e 63 79 2d 74 68 72 65 73 68 6f 6c 64    27 2e 22 29 0a 0a 28 64 65 66 76 61 72 20 70 72  | quency-threshold'.")..(defvar.pr | 
| 3480 |  65 73 63 69 65 6e 74 2d 2d 63 61 63 68 65 2d 6c    6f 61 64 65 64 20 6e 69 6c 0a 20 20 22 4e 6f 6e  | escient--cache-loaded.nil..."Non | 
| 34a0 |  2d 6e 69 6c 20 69 66 20 70 72 65 73 63 69 65 6e    74 2e 65 6c 20 64 61 74 61 20 77 61 73 20 6c 6f  | -nil.if.prescient.el.data.was.lo | 
| 34c0 |  61 64 65 64 20 66 72 6f 6d 20 60 70 72 65 73 63    69 65 6e 74 2d 73 61 76 65 2d 66 69 6c 65 27 2e  | aded.from.`prescient-save-file'. | 
| 34e0 |  0a 45 76 65 6e 20 69 66 20 74 68 65 20 6c 6f 61    64 20 66 61 69 6c 65 64 2c 20 74 68 69 73 20 76  | .Even.if.the.load.failed,.this.v | 
| 3500 |  61 72 69 61 62 6c 65 20 69 73 20 73 74 69 6c 6c    20 73 65 74 20 74 6f 20 6e 6f 6e 2d 6e 69 6c 0a  | ariable.is.still.set.to.non-nil. | 
| 3520 |  77 68 65 6e 20 60 70 72 65 73 63 69 65 6e 74 2d    2d 6c 6f 61 64 27 20 69 73 20 63 61 6c 6c 65 64  | when.`prescient--load'.is.called | 
| 3540 |  2e 22 29 0a 0a 28 64 65 66 76 61 72 20 70 72 65    73 63 69 65 6e 74 2d 2d 73 65 72 69 61 6c 2d 6e  | .")..(defvar.prescient--serial-n | 
| 3560 |  75 6d 62 65 72 20 30 0a 20 20 22 4e 75 6d 62 65    72 20 6f 66 20 74 69 6d 65 73 20 60 70 72 65 73  | umber.0..."Number.of.times.`pres | 
| 3580 |  63 69 65 6e 74 2d 72 65 6d 65 6d 62 65 72 27 20    68 61 73 20 62 65 65 6e 20 63 61 6c 6c 65 64 2e  | cient-remember'.has.been.called. | 
| 35a0 |  0a 0a 54 68 69 73 20 69 73 20 75 73 65 64 20 74    6f 20 64 65 74 65 72 6d 69 6e 65 20 77 68 69 63  | ..This.is.used.to.determine.whic | 
| 35c0 |  68 20 73 65 74 20 6f 66 20 63 68 61 6e 67 65 73    20 74 6f 20 74 68 65 20 73 61 76 65 20 66 69 6c  | h.set.of.changes.to.the.save.fil | 
| 35e0 |  65 0a 73 68 6f 75 6c 64 20 5c 22 77 69 6e 5c 22    20 77 68 65 6e 20 74 77 6f 20 63 6f 6e 63 75 72  | e.should.\"win\".when.two.concur | 
| 3600 |  72 65 6e 74 20 45 6d 61 63 73 20 73 65 73 73 69    6f 6e 73 20 77 61 6e 74 20 74 6f 20 6d 6f 64 69  | rent.Emacs.sessions.want.to.modi | 
| 3620 |  66 79 0a 69 74 2e 22 29 0a 0a 28 64 65 66 75 6e    20 70 72 65 73 63 69 65 6e 74 2d 66 6f 72 67 65  | fy.it.")..(defun.prescient-forge | 
| 3640 |  74 20 28 63 61 6e 64 69 64 61 74 65 29 0a 20 20    22 52 65 6d 6f 76 65 20 43 41 4e 44 49 44 41 54  | t.(candidate)..."Remove.CANDIDAT | 
| 3660 |  45 20 66 72 6f 6d 20 72 65 63 65 6e 63 79 20 61    6e 64 20 66 72 65 71 75 65 6e 63 79 20 72 65 63  | E.from.recency.and.frequency.rec | 
| 3680 |  6f 72 64 73 2e 22 0a 20 20 28 69 6e 74 65 72 61    63 74 69 76 65 0a 20 20 20 28 6c 69 73 74 20 28  | ords."...(interactive....(list.( | 
| 36a0 |  63 6f 6d 70 6c 65 74 69 6e 67 2d 72 65 61 64 20    22 46 6f 72 67 65 74 20 63 61 6e 64 69 64 61 74  | completing-read."Forget.candidat | 
| 36c0 |  65 3a 20 22 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 20 3b  | e:."...........................; | 
| 36e0 |  3b 20 53 69 6e 63 65 20 63 61 6e 64 69 64 61 74    65 73 20 61 72 65 20 73 68 61 72 65 64 2c 20 73  | ;.Since.candidates.are.shared,.s | 
| 3700 |  65 6c 65 63 74 20 66 72 6f 6d 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | elect.from...................... | 
| 3720 |  20 20 20 20 20 3b 3b 20 74 68 65 20 74 61 62 6c    65 20 77 69 74 68 20 74 68 65 20 6d 6f 73 74 20  | .....;;.the.table.with.the.most. | 
| 3740 |  63 61 6e 64 69 64 61 74 65 73 2e 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | candidates...................... | 
| 3760 |  20 20 20 20 20 20 28 69 66 20 28 3e 20 28 68 61    73 68 2d 74 61 62 6c 65 2d 73 69 7a 65 20 70 72  | ......(if.(>.(hash-table-size.pr | 
| 3780 |  65 73 63 69 65 6e 74 2d 2d 66 72 65 71 75 65 6e    63 79 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  | escient--frequency)............. | 
| 37a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 28 68 61 73 68 2d 74 61 62 6c 65  | .....................(hash-table | 
| 37c0 |  2d 73 69 7a 65 20 70 72 65 73 63 69 65 6e 74 2d    2d 68 69 73 74 6f 72 79 29 29 0a 20 20 20 20 20  | -size.prescient--history))...... | 
| 37e0 |  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 70 72 65 73 63 69 65  | .........................prescie | 
| 3800 |  6e 74 2d 2d 66 72 65 71 75 65 6e 63 79 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | nt--frequency................... | 
| 3820 |  20 20 20 20 20 20 20 20 20 20 70 72 65 73 63 69    65 6e 74 2d 2d 68 69 73 74 6f 72 79 29 0a 20 20  | ..........prescient--history)... | 
| 3840 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 6e 69 6c 20 74 29 29 29  | ........................nil.t))) | 
| 3860 |  0a 20 20 28 72 65 6d 68 61 73 68 20 63 61 6e 64    69 64 61 74 65 20 70 72 65 73 63 69 65 6e 74 2d  | ...(remhash.candidate.prescient- | 
| 3880 |  2d 68 69 73 74 6f 72 79 29 0a 20 20 28 72 65 6d    68 61 73 68 20 63 61 6e 64 69 64 61 74 65 20 70  | -history)...(remhash.candidate.p | 
| 38a0 |  72 65 73 63 69 65 6e 74 2d 2d 66 72 65 71 75 65    6e 63 79 29 29 0a 0a 3b 3b 3b 3b 20 50 65 72 73  | rescient--frequency))..;;;;.Pers | 
| 38c0 |  69 73 74 65 6e 63 65 0a 0a 28 64 65 66 76 61 72    20 70 72 65 73 63 69 65 6e 74 2d 2d 63 61 63 68  | istence..(defvar.prescient--cach | 
| 38e0 |  65 2d 76 65 72 73 69 6f 6e 20 35 0a 20 20 22 43    75 72 72 65 6e 74 20 76 65 72 73 69 6f 6e 20 6e  | e-version.5..."Current.version.n | 
| 3900 |  75 6d 62 65 72 20 6f 66 20 60 70 72 65 73 63 69    65 6e 74 2d 73 61 76 65 2d 66 69 6c 65 27 20 66  | umber.of.`prescient-save-file'.f | 
| 3920 |  6f 72 6d 61 74 2e 22 29 0a 0a 28 64 65 66 76 61    72 20 70 72 65 73 63 69 65 6e 74 2d 63 61 63 68  | ormat.")..(defvar.prescient-cach | 
| 3940 |  65 2d 63 61 6c 6c 62 61 63 6b 20 23 27 69 67 6e    6f 72 65 0a 20 20 22 43 61 6c 6c 62 61 63 6b 20  | e-callback.#'ignore..."Callback. | 
| 3960 |  66 75 6e 63 74 69 6f 6e 20 63 61 6c 6c 65 64 20    62 79 20 6c 6f 61 64 69 6e 67 20 60 70 72 65 73  | function.called.by.loading.`pres | 
| 3980 |  63 69 65 6e 74 2d 73 61 76 65 2d 66 69 6c 65 27    2e 0a 41 20 60 66 75 6e 63 61 6c 6c 27 20 74 6f  | cient-save-file'..A.`funcall'.to | 
| 39a0 |  20 74 68 69 73 20 76 61 72 69 61 62 6c 65 20 69    73 20 77 72 69 74 74 65 6e 20 74 6f 20 60 70 72  | .this.variable.is.written.to.`pr | 
| 39c0 |  65 73 63 69 65 6e 74 2d 73 61 76 65 2d 66 69 6c    65 27 2e 0a 54 68 65 20 66 75 6e 63 74 69 6f 6e  | escient-save-file'..The.function | 
| 39e0 |  20 6d 61 79 20 70 72 6f 64 75 63 65 20 65 72 72    6f 72 73 3b 20 74 68 65 79 20 77 69 6c 6c 20 62  | .may.produce.errors;.they.will.b | 
| 3a00 |  65 20 69 67 6e 6f 72 65 64 2e 0a 0a 55 73 75 61    6c 6c 79 20 74 68 69 73 20 76 61 72 69 61 62 6c  | e.ignored...Usually.this.variabl | 
| 3a20 |  65 20 69 73 20 64 79 6e 61 6d 69 63 61 6c 6c 79    20 62 6f 75 6e 64 20 74 6f 20 61 6e 6f 74 68 65  | e.is.dynamically.bound.to.anothe | 
| 3a40 |  72 20 76 61 6c 75 65 20 77 68 69 6c 65 0a 60 70    72 65 73 63 69 65 6e 74 2d 73 61 76 65 2d 66 69  | r.value.while.`prescient-save-fi | 
| 3a60 |  6c 65 27 20 69 73 20 6c 6f 61 64 65 64 2e 22 29    0a 0a 28 64 65 66 75 6e 20 70 72 65 73 63 69 65  | le'.is.loaded.")..(defun.prescie | 
| 3a80 |  6e 74 2d 2d 6c 6f 61 64 2d 73 61 76 65 2d 66 69    6c 65 20 28 29 0a 20 20 22 4c 6f 61 64 20 60 70  | nt--load-save-file.()..."Load.`p | 
| 3aa0 |  72 65 73 63 69 65 6e 74 2d 73 61 76 65 2d 66 69    6c 65 27 2c 20 69 67 6e 6f 72 69 6e 67 20 65 72  | rescient-save-file',.ignoring.er | 
| 3ac0 |  72 6f 72 73 2e 22 0a 20 20 28 6c 65 74 20 28 28    6c 6f 61 64 2d 73 6f 75 72 63 65 2d 66 69 6c 65  | rors."...(let.((load-source-file | 
| 3ae0 |  2d 66 75 6e 63 74 69 6f 6e 20 6e 69 6c 29 29 0a    20 20 20 20 28 69 67 6e 6f 72 65 2d 65 72 72 6f  | -function.nil)).....(ignore-erro | 
| 3b00 |  72 73 0a 20 20 20 20 20 20 28 6c 6f 61 64 20 70    72 65 73 63 69 65 6e 74 2d 73 61 76 65 2d 66 69  | rs.......(load.prescient-save-fi | 
| 3b20 |  6c 65 20 27 6e 6f 65 72 72 6f 72 20 27 6e 6f 6d    65 73 73 61 67 29 29 29 29 0a 0a 28 64 65 66 75  | le.'noerror.'nomessag))))..(defu | 
| 3b40 |  6e 20 70 72 65 73 63 69 65 6e 74 2d 2d 6c 6f 61    64 20 28 29 0a 20 20 22 52 65 61 64 20 64 61 74  | n.prescient--load.()..."Read.dat | 
| 3b60 |  61 20 66 72 6f 6d 20 60 70 72 65 73 63 69 65 6e    74 2d 73 61 76 65 2d 66 69 6c 65 27 2e 22 0a 20  | a.from.`prescient-save-file'.".. | 
| 3b80 |  20 28 69 6e 74 65 72 61 63 74 69 76 65 29 0a 20    20 28 63 6c 2d 6c 65 74 66 20 28 28 70 72 65 73  | .(interactive)...(cl-letf.((pres | 
| 3ba0 |  63 69 65 6e 74 2d 63 61 63 68 65 2d 63 61 6c 6c    62 61 63 6b 0a 20 20 20 20 20 20 20 20 20 20 20  | cient-cache-callback............ | 
| 3bc0 |  20 20 28 6c 61 6d 62 64 61 20 28 26 72 65 73 74    20 61 72 67 73 29 0a 20 20 20 20 20 20 20 20 20  | ..(lambda.(&rest.args).......... | 
| 3be0 |  20 20 20 20 20 20 28 77 68 65 6e 20 28 65 71 75    61 6c 20 28 70 6c 69 73 74 2d 67 65 74 20 61 72  | ......(when.(equal.(plist-get.ar | 
| 3c00 |  67 73 20 3a 76 65 72 73 69 6f 6e 29 20 70 72 65    73 63 69 65 6e 74 2d 2d 63 61 63 68 65 2d 76 65  | gs.:version).prescient--cache-ve | 
| 3c20 |  72 73 69 6f 6e 29 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 28 73 65 74 71 20 70 72  | rsion)..................(setq.pr | 
| 3c40 |  65 73 63 69 65 6e 74 2d 2d 68 69 73 74 6f 72 79    20 28 70 6c 69 73 74 2d 67 65 74 20 61 72 67 73  | escient--history.(plist-get.args | 
| 3c60 |  20 3a 68 69 73 74 6f 72 79 29 29 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65  | .:history))..................(se | 
| 3c80 |  74 71 20 70 72 65 73 63 69 65 6e 74 2d 2d 66 72    65 71 75 65 6e 63 79 20 28 70 6c 69 73 74 2d 67  | tq.prescient--frequency.(plist-g | 
| 3ca0 |  65 74 20 61 72 67 73 20 3a 66 72 65 71 75 65 6e    63 79 29 29 0a 20 20 20 20 20 20 20 20 20 20 20  | et.args.:frequency))............ | 
| 3cc0 |  20 20 20 20 20 20 28 73 65 74 71 20 70 72 65 73    63 69 65 6e 74 2d 2d 73 65 72 69 61 6c 2d 6e 75  | ......(setq.prescient--serial-nu | 
| 3ce0 |  6d 62 65 72 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 69  | mber........................(pli | 
| 3d00 |  73 74 2d 67 65 74 20 61 72 67 73 20 3a 73 65 72    69 61 6c 2d 6e 75 6d 62 65 72 29 29 29 29 29 29  | st-get.args.:serial-number)))))) | 
| 3d20 |  0a 20 20 20 20 28 70 72 65 73 63 69 65 6e 74 2d    2d 6c 6f 61 64 2d 73 61 76 65 2d 66 69 6c 65 29  | .....(prescient--load-save-file) | 
| 3d40 |  29 0a 20 20 28 73 65 74 71 20 70 72 65 73 63 69    65 6e 74 2d 2d 63 61 63 68 65 2d 6c 6f 61 64 65  | )...(setq.prescient--cache-loade | 
| 3d60 |  64 20 74 29 29 0a 0a 28 64 65 66 75 6e 20 70 72    65 73 63 69 65 6e 74 2d 2d 73 61 76 65 20 28 29  | d.t))..(defun.prescient--save.() | 
| 3d80 |  0a 20 20 22 57 72 69 74 65 20 64 61 74 61 20 74    6f 20 60 70 72 65 73 63 69 65 6e 74 2d 73 61 76  | ..."Write.data.to.`prescient-sav | 
| 3da0 |  65 2d 66 69 6c 65 27 2e 22 0a 20 20 28 63 6c 2d    6c 65 74 66 2a 20 28 28 73 61 76 65 64 2d 73 65  | e-file'."...(cl-letf*.((saved-se | 
| 3dc0 |  72 69 61 6c 2d 6e 75 6d 62 65 72 20 6e 69 6c 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70  | rial-number.nil)..............(p | 
| 3de0 |  72 65 73 63 69 65 6e 74 2d 63 61 63 68 65 2d 63    61 6c 6c 62 61 63 6b 0a 20 20 20 20 20 20 20 20  | rescient-cache-callback......... | 
| 3e00 |  20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 26    72 65 73 74 20 61 72 67 73 29 0a 20 20 20 20 20  | ......(lambda.(&rest.args)...... | 
| 3e20 |  20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e    20 28 65 71 75 61 6c 20 28 70 6c 69 73 74 2d 67  | ...........(when.(equal.(plist-g | 
| 3e40 |  65 74 20 61 72 67 73 20 3a 76 65 72 73 69 6f 6e    29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | et.args.:version)............... | 
| 3e60 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70    72 65 73 63 69 65 6e 74 2d 2d 63 61 63 68 65 2d  | ...............prescient--cache- | 
| 3e80 |  76 65 72 73 69 6f 6e 29 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71  | version)...................(setq | 
| 3ea0 |  20 73 61 76 65 64 2d 73 65 72 69 61 6c 2d 6e 75    6d 62 65 72 0a 20 20 20 20 20 20 20 20 20 20 20  | .saved-serial-number............ | 
| 3ec0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c    69 73 74 2d 67 65 74 20 61 72 67 73 20 3a 73 65  | .............(plist-get.args.:se | 
| 3ee0 |  72 69 61 6c 2d 6e 75 6d 62 65 72 29 29 29 29 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70  | rial-number)))))..............(p | 
| 3f00 |  72 69 6e 74 2d 6c 65 6e 67 74 68 20 6e 69 6c 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70  | rint-length.nil)..............(p | 
| 3f20 |  72 69 6e 74 2d 6c 65 76 65 6c 20 6e 69 6c 29 29    0a 20 20 20 20 28 70 72 65 73 63 69 65 6e 74 2d  | rint-level.nil)).....(prescient- | 
| 3f40 |  2d 6c 6f 61 64 2d 73 61 76 65 2d 66 69 6c 65 29    0a 20 20 20 20 28 77 68 65 6e 20 28 6f 72 20 28  | -load-save-file).....(when.(or.( | 
| 3f60 |  6e 6f 74 20 28 6e 75 6d 62 65 72 70 20 73 61 76    65 64 2d 73 65 72 69 61 6c 2d 6e 75 6d 62 65 72  | not.(numberp.saved-serial-number | 
| 3f80 |  29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 28 3e 3d 20 70 72 65 73 63 69 65 6e 74 2d 2d  | ))...............(>=.prescient-- | 
| 3fa0 |  73 65 72 69 61 6c 2d 6e 75 6d 62 65 72 20 73 61    76 65 64 2d 73 65 72 69 61 6c 2d 6e 75 6d 62 65  | serial-number.saved-serial-numbe | 
| 3fc0 |  72 29 29 0a 20 20 20 20 20 20 28 6d 61 6b 65 2d    64 69 72 65 63 74 6f 72 79 20 28 66 69 6c 65 2d  | r)).......(make-directory.(file- | 
| 3fe0 |  6e 61 6d 65 2d 64 69 72 65 63 74 6f 72 79 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | name-directory.................. | 
| 4000 |  20 20 20 20 20 20 28 65 78 70 61 6e 64 2d 66 69    6c 65 2d 6e 61 6d 65 20 70 72 65 73 63 69 65 6e  | ......(expand-file-name.prescien | 
| 4020 |  74 2d 73 61 76 65 2d 66 69 6c 65 29 29 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | t-save-file))................... | 
| 4040 |  20 20 20 20 27 70 61 72 65 6e 74 73 29 0a 20 20    20 20 20 20 28 77 69 74 68 2d 74 65 6d 70 2d 66  | ....'parents).......(with-temp-f | 
| 4060 |  69 6c 65 20 70 72 65 73 63 69 65 6e 74 2d 73 61    76 65 2d 66 69 6c 65 0a 20 20 20 20 20 20 20 20  | ile.prescient-save-file......... | 
| 4080 |  28 69 6e 73 65 72 74 20 20 22 3b 3b 3b 20 2d 2a    2d 20 6c 65 78 69 63 61 6c 2d 62 69 6e 64 69 6e  | (insert..";;;.-*-.lexical-bindin | 
| 40a0 |  67 3a 20 74 3b 20 2d 2a 2d 22 29 0a 20 20 20 20    20 20 20 20 28 70 72 69 6e 74 0a 20 20 20 20 20  | g:.t;.-*-").........(print...... | 
| 40c0 |  20 20 20 20 60 28 66 75 6e 63 61 6c 6c 20 70 72    65 73 63 69 65 6e 74 2d 63 61 63 68 65 2d 63 61  | ....`(funcall.prescient-cache-ca | 
| 40e0 |  6c 6c 62 61 63 6b 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 3a 76 65 72 73 69  | llback....................:versi | 
| 4100 |  6f 6e 20 27 2c 70 72 65 73 63 69 65 6e 74 2d 2d    63 61 63 68 65 2d 76 65 72 73 69 6f 6e 0a 20 20  | on.',prescient--cache-version... | 
| 4120 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 3a 68 69 73 74 6f 72 79 20 27 2c 70 72 65 73  | .................:history.',pres | 
| 4140 |  63 69 65 6e 74 2d 2d 68 69 73 74 6f 72 79 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | cient--history.................. | 
| 4160 |  20 20 3a 66 72 65 71 75 65 6e 63 79 20 27 2c 70    72 65 73 63 69 65 6e 74 2d 2d 66 72 65 71 75 65  | ..:frequency.',prescient--freque | 
| 4180 |  6e 63 79 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 3a 73 65 72 69 61 6c 2d 6e  | ncy....................:serial-n | 
| 41a0 |  75 6d 62 65 72 20 27 2c 70 72 65 73 63 69 65 6e    74 2d 2d 73 65 72 69 61 6c 2d 6e 75 6d 62 65 72  | umber.',prescient--serial-number | 
| 41c0 |  29 0a 20 20 20 20 20 20 20 20 20 28 63 75 72 72    65 6e 74 2d 62 75 66 66 65 72 29 29 29 29 29 29  | )..........(current-buffer)))))) | 
| 41e0 |  0a 0a 28 64 65 66 69 6e 65 2d 6d 69 6e 6f 72 2d    6d 6f 64 65 20 70 72 65 73 63 69 65 6e 74 2d 70  | ..(define-minor-mode.prescient-p | 
| 4200 |  65 72 73 69 73 74 2d 6d 6f 64 65 0a 20 20 22 4d    69 6e 6f 72 20 6d 6f 64 65 20 74 6f 20 70 65 72  | ersist-mode..."Minor.mode.to.per | 
| 4220 |  73 69 73 74 20 70 72 65 73 63 69 65 6e 74 2e 65    6c 20 73 74 61 74 69 73 74 69 63 73 20 74 6f 20  | sist.prescient.el.statistics.to. | 
| 4240 |  60 70 72 65 73 63 69 65 6e 74 2d 73 61 76 65 2d    66 69 6c 65 27 2e 22 0a 20 20 3a 67 6c 6f 62 61  | `prescient-save-file'."...:globa | 
| 4260 |  6c 20 74 0a 20 20 3a 67 72 6f 75 70 20 27 70 72    65 73 63 69 65 6e 74 0a 20 20 28 69 66 20 70 72  | l.t...:group.'prescient...(if.pr | 
| 4280 |  65 73 63 69 65 6e 74 2d 70 65 72 73 69 73 74 2d    6d 6f 64 65 0a 20 20 20 20 20 20 28 70 72 6f 67  | escient-persist-mode.......(prog | 
| 42a0 |  6e 0a 20 20 20 20 20 20 20 20 28 70 72 65 73 63    69 65 6e 74 2d 70 65 72 73 69 73 74 2d 6d 6f 64  | n.........(prescient-persist-mod | 
| 42c0 |  65 20 2d 31 29 0a 20 20 20 20 20 20 20 20 28 73    65 74 71 20 70 72 65 73 63 69 65 6e 74 2d 70 65  | e.-1).........(setq.prescient-pe | 
| 42e0 |  72 73 69 73 74 2d 6d 6f 64 65 20 74 29 0a 20 20    20 20 20 20 20 20 28 61 64 64 2d 68 6f 6f 6b 20  | rsist-mode.t).........(add-hook. | 
| 4300 |  27 6b 69 6c 6c 2d 65 6d 61 63 73 2d 68 6f 6f 6b    20 23 27 70 72 65 73 63 69 65 6e 74 2d 2d 73 61  | 'kill-emacs-hook.#'prescient--sa | 
| 4320 |  76 65 29 29 0a 20 20 20 20 28 72 65 6d 6f 76 65    2d 68 6f 6f 6b 20 27 6b 69 6c 6c 2d 65 6d 61 63  | ve)).....(remove-hook.'kill-emac | 
| 4340 |  73 2d 68 6f 6f 6b 20 23 27 70 72 65 73 63 69 65    6e 74 2d 2d 73 61 76 65 29 29 29 0a 0a 3b 3b 3b  | s-hook.#'prescient--save)))..;;; | 
| 4360 |  3b 20 55 74 69 6c 69 74 79 20 66 75 6e 63 74 69    6f 6e 73 0a 28 64 65 66 75 6e 20 70 72 65 73 63  | ;.Utility.functions.(defun.presc | 
| 4380 |  69 65 6e 74 2d 2d 63 68 61 72 2d 66 6f 6c 64 2d    74 6f 2d 72 65 67 65 78 70 20 28 73 74 72 69 6e  | ient--char-fold-to-regexp.(strin | 
| 43a0 |  67 29 0a 20 20 22 43 6f 6e 76 65 72 74 20 53 54    52 49 4e 47 20 74 6f 20 61 20 72 65 67 65 78 70  | g)..."Convert.STRING.to.a.regexp | 
| 43c0 |  20 74 68 61 74 20 68 61 6e 64 6c 65 73 20 63 68    61 72 20 66 6f 6c 64 69 6e 67 2e 0a 54 68 69 73  | .that.handles.char.folding..This | 
| 43e0 |  20 69 73 20 74 68 65 20 73 61 6d 65 20 61 73 20    60 63 68 61 72 2d 66 6f 6c 64 2d 74 6f 2d 72 65  | .is.the.same.as.`char-fold-to-re | 
| 4400 |  67 65 78 70 27 20 62 75 74 20 69 74 20 77 6f 72    6b 73 20 61 72 6f 75 6e 64 0a 68 74 74 70 73 3a  | gexp'.but.it.works.around.https: | 
| 4420 |  2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 72 61 78    6f 64 35 30 32 2f 70 72 65 73 63 69 65 6e 74 2e  | //github.com/raxod502/prescient. | 
| 4440 |  65 6c 2f 69 73 73 75 65 73 2f 37 31 2e 20 54 68    65 20 69 73 73 75 65 0a 73 68 6f 75 6c 64 20 72  | el/issues/71..The.issue.should.r | 
| 4460 |  65 61 6c 6c 79 20 62 65 20 66 69 78 65 64 20 75    70 73 74 72 65 61 6d 20 69 6e 20 45 6d 61 63 73  | eally.be.fixed.upstream.in.Emacs | 
| 4480 |  2c 20 62 75 74 20 69 74 20 6c 6f 6f 6b 73 20 6c    69 6b 65 20 74 68 61 74 0a 69 73 20 6e 6f 74 20  | ,.but.it.looks.like.that.is.not. | 
| 44a0 |  68 61 70 70 65 6e 69 6e 67 20 61 6e 79 74 69 6d    65 20 73 6f 6f 6e 2e 22 0a 20 20 28 6c 65 74 20  | happening.anytime.soon."...(let. | 
| 44c0 |  28 28 72 65 67 65 78 70 20 28 63 68 61 72 2d 66    6f 6c 64 2d 74 6f 2d 72 65 67 65 78 70 20 73 74  | ((regexp.(char-fold-to-regexp.st | 
| 44e0 |  72 69 6e 67 29 29 29 0a 20 20 20 20 28 63 6f 6e    64 69 74 69 6f 6e 2d 63 61 73 65 20 5f 0a 20 20  | ring))).....(condition-case._... | 
| 4500 |  20 20 20 20 20 20 28 70 72 6f 67 31 20 72 65 67    65 78 70 0a 20 20 20 20 20 20 20 20 20 20 28 73  | ......(prog1.regexp...........(s | 
| 4520 |  74 72 69 6e 67 2d 6d 61 74 63 68 2d 70 20 72 65    67 65 78 70 20 22 22 29 29 0a 20 20 20 20 20 20  | tring-match-p.regexp.""))....... | 
| 4540 |  28 69 6e 76 61 6c 69 64 2d 72 65 67 65 78 70 20    28 72 65 67 65 78 70 2d 71 75 6f 74 65 20 73 74  | (invalid-regexp.(regexp-quote.st | 
| 4560 |  72 69 6e 67 29 29 29 29 29 0a 0a 28 64 65 66 75    6e 20 70 72 65 73 63 69 65 6e 74 2d 73 70 6c 69  | ring)))))..(defun.prescient-spli | 
| 4580 |  74 2d 71 75 65 72 79 20 28 71 75 65 72 79 29 0a    20 20 22 53 70 6c 69 74 20 51 55 45 52 59 20 73  | t-query.(query)..."Split.QUERY.s | 
| 45a0 |  74 72 69 6e 67 20 69 6e 74 6f 20 73 75 62 2d 71    75 65 72 69 65 73 2e 0a 54 68 65 20 71 75 65 72  | tring.into.sub-queries..The.quer | 
| 45c0 |  79 20 69 73 20 73 70 6c 69 74 20 6f 6e 20 73 70    61 63 65 73 2c 20 62 75 74 20 61 20 73 65 71 75  | y.is.split.on.spaces,.but.a.sequ | 
| 45e0 |  65 6e 63 65 20 6f 66 20 74 77 6f 20 6f 72 20 6d    6f 72 65 0a 73 70 61 63 65 73 20 68 61 73 20 6f  | ence.of.two.or.more.spaces.has.o | 
| 4600 |  6e 65 20 73 70 61 63 65 20 72 65 6d 6f 76 65 64    20 61 6e 64 20 69 73 20 74 72 65 61 74 65 64 20  | ne.space.removed.and.is.treated. | 
| 4620 |  6c 69 74 65 72 61 6c 6c 79 20 72 61 74 68 65 72    20 74 68 61 6e 0a 61 73 20 61 20 73 75 62 2d 71  | literally.rather.than.as.a.sub-q | 
| 4640 |  75 65 72 79 20 64 65 6c 69 6d 69 74 65 72 2e 22    0a 20 20 28 69 66 20 28 73 74 72 69 6e 67 2d 6d  | uery.delimiter."...(if.(string-m | 
| 4660 |  61 74 63 68 2d 70 20 22 5c 5c 60 20 2a 5c 5c 27    22 20 71 75 65 72 79 29 0a 20 20 20 20 20 20 3b  | atch-p."\\`.*\\'".query).......; | 
| 4680 |  3b 20 49 66 20 73 74 72 69 6e 67 20 69 73 20 7a    65 72 6f 20 6f 72 20 6f 6e 65 20 73 70 61 63 65  | ;.If.string.is.zero.or.one.space | 
| 46a0 |  73 2c 20 74 68 65 6e 20 77 65 20 6d 61 74 63 68    20 65 76 65 72 79 74 68 69 6e 67 2e 0a 20 20 20  | s,.then.we.match.everything..... | 
| 46c0 |  20 20 20 3b 3b 20 52 65 74 75 72 6e 20 61 6e 20    65 6d 70 74 79 20 73 75 62 71 75 65 72 79 20 6c  | ...;;.Return.an.empty.subquery.l | 
| 46e0 |  69 73 74 2e 0a 20 20 20 20 20 20 28 75 6e 6c 65    73 73 20 28 3c 3d 20 28 6c 65 6e 67 74 68 20 71  | ist........(unless.(<=.(length.q | 
| 4700 |  75 65 72 79 29 20 31 29 0a 20 20 20 20 20 20 20    20 3b 3b 20 4f 74 68 65 72 77 69 73 65 2c 20 74  | uery).1).........;;.Otherwise,.t | 
| 4720 |  68 65 20 6e 75 6d 62 65 72 20 6f 66 20 73 70 61    63 65 73 20 73 68 6f 75 6c 64 20 62 65 20 72 65  | he.number.of.spaces.should.be.re | 
| 4740 |  64 75 63 65 64 20 62 79 20 6f 6e 65 2e 0a 20 20    20 20 20 20 20 20 28 6c 69 73 74 20 28 73 75 62  | duced.by.one..........(list.(sub | 
| 4760 |  73 74 72 69 6e 67 20 71 75 65 72 79 20 31 29 29    29 0a 20 20 20 20 3b 3b 20 54 72 69 6d 20 6f 66  | string.query.1))).....;;.Trim.of | 
| 4780 |  66 20 61 20 73 69 6e 67 6c 65 20 73 70 61 63 65    20 66 72 6f 6d 20 74 68 65 20 62 65 67 69 6e 6e  | f.a.single.space.from.the.beginn | 
| 47a0 |  69 6e 67 20 61 6e 64 20 65 6e 64 2c 20 69 66 20    70 72 65 73 65 6e 74 2e 0a 20 20 20 20 3b 3b 20  | ing.and.end,.if.present......;;. | 
| 47c0 |  4f 74 68 65 72 77 69 73 65 2c 20 74 68 65 79 20    77 6f 75 6c 64 20 67 65 6e 65 72 61 74 65 20 65  | Otherwise,.they.would.generate.e | 
| 47e0 |  6d 70 74 79 20 73 70 6c 69 74 73 20 61 6e 64 20    63 61 75 73 65 20 75 73 20 74 6f 0a 20 20 20 20  | mpty.splits.and.cause.us.to..... | 
| 4800 |  3b 3b 20 6d 61 74 63 68 20 6c 69 74 65 72 61 6c    20 77 68 69 74 65 73 70 61 63 65 2e 0a 20 20 20  | ;;.match.literal.whitespace..... | 
| 4820 |  20 28 73 65 74 71 20 71 75 65 72 79 20 28 72 65    70 6c 61 63 65 2d 72 65 67 65 78 70 2d 69 6e 2d  | .(setq.query.(replace-regexp-in- | 
| 4840 |  73 74 72 69 6e 67 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 22 5c 5c 60 20 3f 5c 5c  | string.................."\\`.?\\ | 
| 4860 |  28 2e 2a 3f 5c 5c 29 20 3f 5c 5c 27 22 20 22 5c    5c 31 22 20 71 75 65 72 79 20 27 66 69 78 65 64  | (.*?\\).?\\'"."\\1".query.'fixed | 
| 4880 |  63 61 73 65 29 29 0a 20 20 20 20 28 6c 65 74 20    28 28 73 70 6c 69 74 73 20 28 73 70 6c 69 74 2d  | case)).....(let.((splits.(split- | 
| 48a0 |  73 74 72 69 6e 67 20 71 75 65 72 79 20 22 20 22    29 29 0a 20 20 20 20 20 20 20 20 20 20 28 73 75  | string.query."."))...........(su | 
| 48c0 |  62 71 75 65 72 79 20 22 22 29 0a 20 20 20 20 20    20 20 20 20 20 28 74 6f 6b 65 6e 2d 66 6f 75 6e  | bquery."")...........(token-foun | 
| 48e0 |  64 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 20    20 28 73 75 62 71 75 65 72 69 65 73 20 6e 69 6c  | d.nil)...........(subqueries.nil | 
| 4900 |  29 29 0a 20 20 20 20 20 20 28 64 6f 6c 69 73 74    20 28 73 70 6c 69 74 20 73 70 6c 69 74 73 29 0a  | )).......(dolist.(split.splits). | 
| 4920 |  20 20 20 20 20 20 20 20 3b 3b 20 43 68 65 63 6b    20 66 6f 72 20 65 6d 70 74 79 20 73 70 6c 69 74  | ........;;.Check.for.empty.split | 
| 4940 |  2c 20 6d 65 61 6e 69 6e 67 20 74 77 6f 20 63 6f    6e 73 65 63 75 74 69 76 65 20 73 70 61 63 65 73  | ,.meaning.two.consecutive.spaces | 
| 4960 |  20 69 6e 0a 20 20 20 20 20 20 20 20 3b 3b 20 74    68 65 20 6f 72 69 67 69 6e 61 6c 20 71 75 65 72  | .in.........;;.the.original.quer | 
| 4980 |  79 2e 0a 20 20 20 20 20 20 20 20 28 69 66 20 28    73 74 72 69 6e 67 2d 65 6d 70 74 79 2d 70 20 73  | y..........(if.(string-empty-p.s | 
| 49a0 |  70 6c 69 74 29 0a 20 20 20 20 20 20 20 20 20 20    20 20 28 70 72 6f 67 6e 0a 20 20 20 20 20 20 20  | plit).............(progn........ | 
| 49c0 |  20 20 20 20 20 20 20 3b 3b 20 43 6f 6e 73 65 63    75 74 69 76 65 20 73 70 61 63 65 73 20 6d 65 61  | .......;;.Consecutive.spaces.mea | 
| 49e0 |  6e 20 6c 69 74 65 72 61 6c 20 73 70 61 63 65 73    20 69 6e 20 74 68 65 0a 20 20 20 20 20 20 20 20  | n.literal.spaces.in.the......... | 
| 4a00 |  20 20 20 20 20 20 3b 3b 20 73 75 62 71 75 65 72    79 20 75 6e 64 65 72 20 63 6f 6e 73 74 72 75 63  | ......;;.subquery.under.construc | 
| 4a20 |  74 69 6f 6e 2e 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 28 73 65 74 71 20 73 75 62 71 75 65  | tion................(setq.subque | 
| 4a40 |  72 79 20 28 63 6f 6e 63 61 74 20 73 75 62 71 75    65 72 79 20 22 20 22 29 29 0a 20 20 20 20 20 20  | ry.(concat.subquery."."))....... | 
| 4a60 |  20 20 20 20 20 20 20 20 3b 3b 20 49 66 20 77 65    20 67 65 74 20 61 20 6e 6f 6e 2d 65 6d 70 74 79  | ........;;.If.we.get.a.non-empty | 
| 4a80 |  20 73 70 6c 69 74 2c 20 61 70 70 65 6e 64 20 69    74 20 74 6f 20 74 68 65 0a 20 20 20 20 20 20 20  | .split,.append.it.to.the........ | 
| 4aa0 |  20 20 20 20 20 20 20 3b 3b 20 73 75 62 71 75 65    72 79 20 72 61 74 68 65 72 20 74 68 61 6e 20 70  | .......;;.subquery.rather.than.p | 
| 4ac0 |  61 72 73 69 6e 67 20 69 74 20 61 73 20 61 6e 6f    74 68 65 72 20 73 75 62 71 75 65 72 79 2e 0a 20  | arsing.it.as.another.subquery... | 
| 4ae0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65    74 71 20 74 6f 6b 65 6e 2d 66 6f 75 6e 64 20 6e  | .............(setq.token-found.n | 
| 4b00 |  69 6c 29 29 0a 20 20 20 20 20 20 20 20 20 20 3b    3b 20 50 6f 73 73 69 62 6c 79 20 61 64 64 20 74  | il))...........;;.Possibly.add.t | 
| 4b20 |  68 65 20 63 6f 6c 6c 65 63 74 65 64 20 73 74 72    69 6e 67 20 61 73 20 61 20 6e 65 77 20 73 75 62  | he.collected.string.as.a.new.sub | 
| 4b40 |  71 75 65 72 79 2e 0a 20 20 20 20 20 20 20 20 20    20 28 77 68 65 6e 20 74 6f 6b 65 6e 2d 66 6f 75  | query............(when.token-fou | 
| 4b60 |  6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 28    70 75 73 68 20 73 75 62 71 75 65 72 79 20 73 75  | nd.............(push.subquery.su | 
| 4b80 |  62 71 75 65 72 69 65 73 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 28 73 65 74 71 20 73 75 62 71  | bqueries).............(setq.subq | 
| 4ba0 |  75 65 72 79 20 22 22 29 29 0a 20 20 20 20 20 20    20 20 20 20 3b 3b 20 45 69 74 68 65 72 20 73 74  | uery.""))...........;;.Either.st | 
| 4bc0 |  61 72 74 20 61 20 6e 65 77 20 73 75 62 71 75 65    72 79 20 6f 72 20 61 70 70 65 6e 64 20 74 6f 20  | art.a.new.subquery.or.append.to. | 
| 4be0 |  74 68 65 20 65 78 69 73 74 69 6e 67 20 6f 6e 65    0a 20 20 20 20 20 20 20 20 20 20 3b 3b 20 28 69  | the.existing.one...........;;.(i | 
| 4c00 |  6e 20 74 68 65 20 63 61 73 65 20 6f 66 20 70 72    65 76 69 6f 75 73 6c 79 20 73 65 65 69 6e 67 20  | n.the.case.of.previously.seeing. | 
| 4c20 |  61 6e 20 65 6d 70 74 79 20 73 70 6c 69 74 29 2e    0a 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71  | an.empty.split)............(setq | 
| 4c40 |  20 73 75 62 71 75 65 72 79 20 28 63 6f 6e 63 61    74 20 73 75 62 71 75 65 72 79 20 73 70 6c 69 74  | .subquery.(concat.subquery.split | 
| 4c60 |  29 29 0a 20 20 20 20 20 20 20 20 20 20 3b 3b 20    49 66 20 61 6e 6f 74 68 65 72 20 6e 6f 6e 2d 65  | ))...........;;.If.another.non-e | 
| 4c80 |  6d 70 74 79 20 73 70 6c 69 74 20 69 73 20 66 6f    75 6e 64 2c 20 69 74 27 73 20 61 20 73 65 70 61  | mpty.split.is.found,.it's.a.sepa | 
| 4ca0 |  72 61 74 65 0a 20 20 20 20 20 20 20 20 20 20 3b    3b 20 73 75 62 71 75 65 72 79 2e 0a 20 20 20 20  | rate...........;;.subquery...... | 
| 4cc0 |  20 20 20 20 20 20 28 73 65 74 71 20 74 6f 6b 65    6e 2d 66 6f 75 6e 64 20 74 29 29 29 0a 20 20 20  | ......(setq.token-found.t))).... | 
| 4ce0 |  20 20 20 3b 3b 20 43 68 65 63 6b 20 69 66 20 77    65 20 68 69 74 20 74 68 65 20 65 6e 64 20 6f 66  | ...;;.Check.if.we.hit.the.end.of | 
| 4d00 |  20 74 68 65 20 73 74 72 69 6e 67 20 77 68 69 6c    65 20 73 74 69 6c 6c 0a 20 20 20 20 20 20 3b 3b  | .the.string.while.still.......;; | 
| 4d20 |  20 63 6f 6e 73 74 72 75 63 74 69 6e 67 20 61 20    73 75 62 71 75 65 72 79 2c 20 61 6e 64 20 68 61  | .constructing.a.subquery,.and.ha | 
| 4d40 |  6e 64 6c 65 2e 0a 20 20 20 20 20 20 28 75 6e 6c    65 73 73 20 28 73 74 72 69 6e 67 2d 65 6d 70 74  | ndle........(unless.(string-empt | 
| 4d60 |  79 2d 70 20 73 75 62 71 75 65 72 79 29 0a 20 20    20 20 20 20 20 20 28 70 75 73 68 20 73 75 62 71  | y-p.subquery).........(push.subq | 
| 4d80 |  75 65 72 79 20 73 75 62 71 75 65 72 69 65 73 29    29 0a 20 20 20 20 20 20 3b 3b 20 57 65 20 61 64  | uery.subqueries)).......;;.We.ad | 
| 4da0 |  64 65 64 20 74 68 65 20 73 75 62 71 75 65 72 69    65 73 20 69 6e 20 72 65 76 65 72 73 65 20 6f 72  | ded.the.subqueries.in.reverse.or | 
| 4dc0 |  64 65 72 2e 0a 20 20 20 20 20 20 28 6e 72 65 76    65 72 73 65 20 73 75 62 71 75 65 72 69 65 73 29  | der........(nreverse.subqueries) | 
| 4de0 |  29 29 29 0a 0a 28 64 65 66 75 6e 20 70 72 65 73    63 69 65 6e 74 2d 77 69 74 68 2d 67 72 6f 75 70  | )))..(defun.prescient-with-group | 
| 4e00 |  20 28 72 65 67 65 78 70 20 77 69 74 68 2d 67 72    6f 75 70 29 0a 20 20 22 57 72 61 70 20 52 45 47  | .(regexp.with-group)..."Wrap.REG | 
| 4e20 |  45 58 50 20 69 6e 20 61 20 63 61 70 74 75 72 65    20 67 72 6f 75 70 2c 20 62 75 74 20 6f 6e 6c 79  | EXP.in.a.capture.group,.but.only | 
| 4e40 |  20 69 66 20 57 49 54 48 2d 47 52 4f 55 50 20 69    73 20 6e 6f 6e 2d 6e 69 6c 2e 22 0a 20 20 28 69  | .if.WITH-GROUP.is.non-nil."...(i | 
| 4e60 |  66 20 77 69 74 68 2d 67 72 6f 75 70 0a 20 20 20    20 20 20 28 66 6f 72 6d 61 74 20 22 5c 5c 28 25  | f.with-group.......(format."\\(% | 
| 4e80 |  73 5c 5c 29 22 20 72 65 67 65 78 70 29 0a 20 20    20 20 72 65 67 65 78 70 29 29 0a 0a 28 64 65 66  | s\\)".regexp).....regexp))..(def | 
| 4ea0 |  75 6e 20 70 72 65 73 63 69 65 6e 74 2d 2d 70 72    65 66 69 78 2d 61 6e 64 2d 70 61 74 74 65 72 6e  | un.prescient--prefix-and-pattern | 
| 4ec0 |  20 28 73 74 72 69 6e 67 20 74 61 62 6c 65 20 70    72 65 64 29 0a 20 20 22 53 70 6c 69 74 20 53 54  | .(string.table.pred)..."Split.ST | 
| 4ee0 |  52 49 4e 47 20 69 6e 74 6f 20 70 72 65 66 69 78    20 61 6e 64 20 70 61 74 74 65 72 6e 20 61 63 63  | RING.into.prefix.and.pattern.acc | 
| 4f00 |  6f 72 64 69 6e 67 20 74 6f 20 54 41 42 4c 45 2e    0a 0a 54 68 65 20 70 72 65 64 69 63 61 74 65 20  | ording.to.TABLE...The.predicate. | 
| 4f20 |  50 52 45 44 20 69 73 20 75 73 65 64 20 74 6f 20    63 6f 6e 73 74 72 61 69 6e 20 74 68 65 20 65 6e  | PRED.is.used.to.constrain.the.en | 
| 4f40 |  74 72 69 65 73 20 69 6e 20 54 41 42 4c 45 2e 22    0a 20 20 28 6c 65 74 20 28 28 6c 69 6d 69 74 20  | tries.in.TABLE."...(let.((limit. | 
| 4f60 |  28 63 61 72 20 28 63 6f 6d 70 6c 65 74 69 6f 6e    2d 62 6f 75 6e 64 61 72 69 65 73 20 73 74 72 69  | (car.(completion-boundaries.stri | 
| 4f80 |  6e 67 20 74 61 62 6c 65 20 70 72 65 64 20 22 22    29 29 29 29 0a 20 20 20 20 28 63 6f 6e 73 20 28  | ng.table.pred."")))).....(cons.( | 
| 4fa0 |  73 75 62 73 74 72 69 6e 67 20 73 74 72 69 6e 67    20 30 20 6c 69 6d 69 74 29 20 28 73 75 62 73 74  | substring.string.0.limit).(subst | 
| 4fc0 |  72 69 6e 67 20 73 74 72 69 6e 67 20 6c 69 6d 69    74 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 70 72  | ring.string.limit))))..(defun.pr | 
| 4fe0 |  65 73 63 69 65 6e 74 2d 69 67 6e 6f 72 65 2d 63    61 73 65 2d 70 20 28 69 6e 70 75 74 29 0a 20 20  | escient-ignore-case-p.(input)... | 
| 5000 |  22 57 68 65 74 68 65 72 20 70 72 65 73 63 69 65    6e 74 2e 65 6c 20 73 68 6f 75 6c 64 20 69 67 6e  | "Whether.prescient.el.should.ign | 
| 5020 |  6f 72 65 20 63 61 73 65 20 63 6f 6e 73 69 64 65    72 69 6e 67 20 49 4e 50 55 54 2e 0a 0a 46 69 6c  | ore.case.considering.INPUT...Fil | 
| 5040 |  74 65 72 69 6e 67 20 63 61 6e 20 6f 70 74 69 6f    6e 61 6c 6c 79 20 69 67 6e 6f 72 65 20 63 61 73  | tering.can.optionally.ignore.cas | 
| 5060 |  65 20 69 66 20 60 70 72 65 73 63 69 65 6e 74 2d    75 73 65 2d 63 61 73 65 2d 66 6f 6c 64 69 6e 67  | e.if.`prescient-use-case-folding | 
| 5080 |  27 0a 69 73 20 6e 6f 6e 2d 6e 69 6c 2e 20 20 49    66 20 60 73 6d 61 72 74 27 2c 20 74 68 65 6e 20  | '.is.non-nil...If.`smart',.then. | 
| 50a0 |  66 69 6c 74 65 72 69 6e 67 20 77 69 6c 6c 20 6e    6f 74 20 69 67 6e 6f 72 65 20 63 61 73 65 20 77  | filtering.will.not.ignore.case.w | 
| 50c0 |  68 65 6e 0a 49 4e 50 55 54 20 63 6f 6e 74 61 69    6e 73 20 75 70 70 65 72 63 61 73 65 20 6c 65 74  | hen.INPUT.contains.uppercase.let | 
| 50e0 |  74 65 72 73 2e 22 0a 20 20 28 69 66 20 28 65 71    20 70 72 65 73 63 69 65 6e 74 2d 75 73 65 2d 63  | ters."...(if.(eq.prescient-use-c | 
| 5100 |  61 73 65 2d 66 6f 6c 64 69 6e 67 20 27 73 6d 61    72 74 29 0a 20 20 20 20 20 20 28 6c 65 74 20 28  | ase-folding.'smart).......(let.( | 
| 5120 |  28 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 20 20 20 20  | (case-fold-search.nil))......... | 
| 5140 |  3b 3b 20 49 66 20 75 73 69 6e 67 20 75 70 70 65    72 2d 63 61 73 65 20 63 68 61 72 61 63 74 65 72  | ;;.If.using.upper-case.character | 
| 5160 |  73 2c 20 74 68 65 6e 20 64 6f 6e 27 74 20 66 6f    6c 64 20 63 61 73 65 2e 0a 20 20 20 20 20 20 20  | s,.then.don't.fold.case......... | 
| 5180 |  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 3a 75 70 70 65 72 3a  | .(not.(string-match-p."[[:upper: | 
| 51a0 |  5d 5d 22 20 69 6e 70 75 74 29 29 29 0a 20 20 20    20 70 72 65 73 63 69 65 6e 74 2d 75 73 65 2d 63  | ]]".input))).....prescient-use-c | 
| 51c0 |  61 73 65 2d 66 6f 6c 64 69 6e 67 29 29 0a 0a 28    64 65 66 75 6e 20 70 72 65 73 63 69 65 6e 74 2d  | ase-folding))..(defun.prescient- | 
| 51e0 |  2d 61 64 64 2d 73 6f 72 74 2d 69 6e 66 6f 20 28    63 61 6e 64 69 64 61 74 65 73 20 26 72 65 73 74  | -add-sort-info.(candidates.&rest | 
| 5200 |  20 70 72 6f 70 65 72 74 69 65 73 29 0a 20 20 22    50 72 6f 70 65 72 74 69 7a 65 20 74 68 65 20 66  | .properties)..."Propertize.the.f | 
| 5220 |  69 72 73 74 20 63 61 6e 64 69 64 61 74 65 20 69    6e 20 43 41 4e 44 49 44 41 54 45 53 20 74 6f 20  | irst.candidate.in.CANDIDATES.to. | 
| 5240 |  73 61 76 65 20 64 61 74 61 2e 0a 0a 43 75 72 72    65 6e 74 6c 79 20 72 65 63 6f 67 6e 69 7a 65 64  | save.data...Currently.recognized | 
| 5260 |  20 50 52 4f 50 45 52 54 49 45 53 20 61 72 65 3a    0a 0a 2d 20 60 3a 70 72 65 73 63 69 65 6e 74 2d  | .PROPERTIES.are:..-.`:prescient- | 
| 5280 |  6d 61 74 63 68 2d 72 65 67 65 78 70 73 27 3a 20    54 68 65 20 72 65 67 65 78 70 73 20 75 73 65 64  | match-regexps':.The.regexps.used | 
| 52a0 |  20 66 6f 72 20 66 69 6c 74 65 72 69 6e 67 2e 0a    0a 2d 20 60 3a 70 72 65 73 63 69 65 6e 74 2d 61  | .for.filtering...-.`:prescient-a | 
| 52c0 |  6c 6c 2d 72 65 67 65 78 70 73 27 3a 20 41 6c 6c    20 72 65 67 65 78 70 73 20 6f 75 74 70 75 74 74  | ll-regexps':.All.regexps.outputt | 
| 52e0 |  65 64 20 62 79 20 74 68 65 20 66 69 6c 74 65 72    0a 20 20 6d 65 74 68 6f 64 73 2c 20 77 68 69 63  | ed.by.the.filter...methods,.whic | 
| 5300 |  68 20 77 65 72 65 20 75 73 65 64 20 74 6f 20 6d    61 6b 65 20 50 52 45 53 43 49 45 4e 54 2d 4d 41  | h.were.used.to.make.PRESCIENT-MA | 
| 5320 |  54 43 48 2d 52 45 47 45 58 50 53 2e 20 41 0a 20    20 72 65 67 65 78 70 20 69 6e 20 74 68 69 73 20  | TCH-REGEXPS..A...regexp.in.this. | 
| 5340 |  6c 69 73 74 20 64 6f 65 73 20 6e 6f 74 20 6e 65    63 65 73 73 61 72 69 6c 79 20 6d 61 74 63 68 20  | list.does.not.necessarily.match. | 
| 5360 |  74 68 65 20 63 61 6e 64 69 64 61 74 65 73 0a 20    20 62 79 20 69 74 73 65 6c 66 2e 0a 0a 2d 20 60  | the.candidates...by.itself...-.` | 
| 5380 |  3a 70 72 65 73 63 69 65 6e 74 2d 69 67 6e 6f 72    65 2d 63 61 73 65 27 3a 20 57 68 65 74 68 65 72  | :prescient-ignore-case':.Whether | 
| 53a0 |  20 70 72 65 73 63 69 65 6e 74 20 69 67 6e 6f 72    65 64 20 63 61 73 65 2e 0a 0a 2d 20 60 3a 70 72  | .prescient.ignored.case...-.`:pr | 
| 53c0 |  65 73 63 69 65 6e 74 2d 71 75 65 72 79 27 3a 20    4f 72 69 67 69 6e 61 6c 20 73 65 61 72 63 68 20  | escient-query':.Original.search. | 
| 53e0 |  71 75 65 72 79 20 66 72 6f 6d 20 75 73 65 72 2e    0a 0a 54 68 65 73 65 20 70 72 6f 70 65 72 74 69  | query.from.user...These.properti | 
| 5400 |  65 73 20 61 72 65 20 69 64 65 6e 74 69 66 69 65    64 20 75 73 69 6e 67 20 6b 65 79 77 6f 72 64 20  | es.are.identified.using.keyword. | 
| 5420 |  73 79 6d 62 6f 6c 73 2e 0a 0a 54 68 69 73 20 69    6e 66 6f 72 6d 61 74 69 6f 6e 20 69 73 20 75 73  | symbols...This.information.is.us | 
| 5440 |  65 64 20 62 79 20 74 68 65 20 66 75 6e 63 74 69    6f 6e 0a 60 70 72 65 73 63 69 65 6e 74 2d 73 6f  | ed.by.the.function.`prescient-so | 
| 5460 |  72 74 2d 66 75 6c 6c 2d 6d 61 74 63 68 65 73 2d    66 69 72 73 74 27 2e 22 0a 20 20 28 69 66 20 28  | rt-full-matches-first'."...(if.( | 
| 5480 |  6e 75 6c 6c 20 63 61 6e 64 69 64 61 74 65 73 29    0a 20 20 20 20 20 20 6e 69 6c 0a 20 20 20 20 28  | null.candidates).......nil.....( | 
| 54a0 |  63 6f 6e 73 20 28 61 70 70 6c 79 20 23 27 70 72    6f 70 65 72 74 69 7a 65 20 28 63 61 72 20 63 61  | cons.(apply.#'propertize.(car.ca | 
| 54c0 |  6e 64 69 64 61 74 65 73 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 57 68  | ndidates)..................;;.Wh | 
| 54e0 |  69 6c 65 20 50 52 4f 50 45 52 54 49 45 53 20 63    6f 6e 74 61 69 6e 73 20 61 6c 6c 20 67 69 76 65  | ile.PROPERTIES.contains.all.give | 
| 5500 |  6e 20 6b 65 79 73 2c 20 77 65 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 65  | n.keys,.we..................;;.e | 
| 5520 |  78 70 6c 69 63 69 74 6c 79 20 73 65 74 20 74 68    65 20 70 72 6f 70 65 72 74 69 65 73 20 74 68 69  | xplicitly.set.the.properties.thi | 
| 5540 |  73 20 77 61 79 20 73 6f 20 74 68 61 74 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b  | s.way.so.that..................; | 
| 5560 |  3b 20 77 65 27 72 65 20 73 75 72 65 20 74 68 61    74 20 74 68 65 20 70 72 6f 70 65 72 74 69 65 73  | ;.we're.sure.that.the.properties | 
| 5580 |  20 65 78 69 73 74 20 65 76 65 6e 20 77 68 65 6e    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .exist.even.when................ | 
| 55a0 |  20 20 3b 3b 20 74 68 65 79 27 72 65 20 6e 6f 74    20 67 69 76 65 6e 2e 20 54 68 69 73 20 6d 61 6b  | ..;;.they're.not.given..This.mak | 
| 55c0 |  65 73 20 74 65 73 74 69 6e 67 20 65 61 73 69 65    72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | es.testing.easier............... | 
| 55e0 |  20 20 20 3b 3b 20 61 6e 64 20 73 68 6f 75 6c 64    20 62 65 20 68 65 6c 70 66 75 6c 20 66 6f 72 20  | ...;;.and.should.be.helpful.for. | 
| 5600 |  6f 74 68 65 72 73 20 63 72 65 61 74 69 6e 67 20    74 68 65 69 72 0a 20 20 20 20 20 20 20 20 20 20  | others.creating.their........... | 
| 5620 |  20 20 20 20 20 20 20 3b 3b 20 6f 77 6e 20 73 6f    72 74 69 6e 67 20 66 75 6e 63 74 69 6f 6e 73 2e  | .......;;.own.sorting.functions. | 
| 5640 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 3b 3b 0a 20 20 20 20 20 20 20 20 20 20 20  | ..................;;............ | 
| 5660 |  20 20 20 20 20 20 3b 3b 20 4e 6f 74 65 20 61 6c    6c 20 70 61 73 73 65 64 20 70 72 6f 70 65 72 74  | ......;;.Note.all.passed.propert | 
| 5680 |  69 65 73 20 77 69 6c 6c 20 73 74 69 6c 6c 20 67    65 74 20 73 65 74 2c 0a 20 20 20 20 20 20 20 20  | ies.will.still.get.set,......... | 
| 56a0 |  20 20 20 20 20 20 20 20 20 3b 3b 20 74 68 69 73    20 6a 75 73 74 20 64 65 66 61 75 6c 74 73 20 74  | .........;;.this.just.defaults.t | 
| 56c0 |  68 65 20 73 74 61 6e 64 61 72 64 20 6f 6e 65 73    20 74 6f 20 6e 69 6c 20 69 6e 0a 20 20 20 20 20  | he.standard.ones.to.nil.in...... | 
| 56e0 |  20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 63    61 73 65 20 74 68 65 79 20 61 72 65 20 6d 69 73  | ............;;.case.they.are.mis | 
| 5700 |  73 69 6e 67 2e 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 28 63 6c 2d 66 6c 65 74 20  | sing...................(cl-flet. | 
| 5720 |  28 28 70 75 74 2d 67 65 74 20 28 70 72 6f 70 73    20 73 79 6d 29 0a 20 20 20 20 20 20 20 20 20 20  | ((put-get.(props.sym)........... | 
| 5740 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 70 72  | ...................(plist-put.pr | 
| 5760 |  6f 70 73 20 73 79 6d 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  | ops.sym......................... | 
| 5780 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    28 70 6c 69 73 74 2d 67 65 74 20 70 72 6f 70 73  | ................(plist-get.props | 
| 57a0 |  20 73 79 6d 29 29 29 29 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 28 74 68 72  | .sym))))....................(thr | 
| 57c0 |  65 61 64 2d 66 69 72 73 74 20 70 72 6f 70 65 72    74 69 65 73 0a 20 20 20 20 20 20 20 20 20 20 20  | ead-first.properties............ | 
| 57e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 28 70 75 74 2d 67 65 74 20 3a  | ......................(put-get.: | 
| 5800 |  70 72 65 73 63 69 65 6e 74 2d 6d 61 74 63 68 2d    72 65 67 65 78 70 73 29 0a 20 20 20 20 20 20 20  | prescient-match-regexps)........ | 
| 5820 |  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 70 75 74 2d 67  | ..........................(put-g | 
| 5840 |  65 74 20 3a 70 72 65 73 63 69 65 6e 74 2d 61 6c    6c 2d 72 65 67 65 78 70 73 29 0a 20 20 20 20 20  | et.:prescient-all-regexps)...... | 
| 5860 |  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 20 28 70 75 74  | ............................(put | 
| 5880 |  2d 67 65 74 20 3a 70 72 65 73 63 69 65 6e 74 2d    69 67 6e 6f 72 65 2d 63 61 73 65 29 0a 20 20 20  | -get.:prescient-ignore-case).... | 
| 58a0 |  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 20 20 20 28 70  | ..............................(p | 
| 58c0 |  75 74 2d 67 65 74 20 3a 70 72 65 73 63 69 65 6e    74 2d 71 75 65 72 79 29 29 29 29 0a 20 20 20 20  | ut-get.:prescient-query))))..... | 
| 58e0 |  20 20 20 20 20 20 28 63 64 72 20 63 61 6e 64 69    64 61 74 65 73 29 29 29 29 0a 0a 28 64 65 66 75  | ......(cdr.candidates))))..(defu | 
| 5900 |  6e 20 70 72 65 73 63 69 65 6e 74 2d 2d 67 65 74    2d 73 6f 72 74 2d 69 6e 66 6f 20 28 63 61 6e 64  | n.prescient--get-sort-info.(cand | 
| 5920 |  69 64 61 74 65 73 29 0a 20 20 22 52 65 74 75 72    6e 20 61 20 70 72 6f 70 65 72 74 79 20 6c 69 73  | idates)..."Return.a.property.lis | 
| 5940 |  74 20 6f 66 20 70 72 6f 70 65 72 74 69 65 73 20    61 64 64 65 64 20 62 79 20 60 70 72 65 73 63 69  | t.of.properties.added.by.`presci | 
| 5960 |  65 6e 74 2d 66 69 6c 74 65 72 27 2e 0a 0a 60 70    72 65 73 63 69 65 6e 74 2d 66 69 6c 74 65 72 27  | ent-filter'...`prescient-filter' | 
| 5980 |  20 61 64 64 73 20 70 72 6f 70 65 72 74 69 65 73    20 74 6f 20 74 68 65 20 43 41 4e 44 49 44 41 54  | .adds.properties.to.the.CANDIDAT | 
| 59a0 |  45 53 20 74 68 61 74 20 69 74 0a 66 69 6c 74 65    72 65 64 20 66 6f 72 20 75 73 65 20 62 79 20 74  | ES.that.it.filtered.for.use.by.t | 
| 59c0 |  68 65 20 66 75 6e 63 74 69 6f 6e 20 60 70 72 65    73 63 69 65 6e 74 2d 73 6f 72 74 2d 66 75 6c 6c  | he.function.`prescient-sort-full | 
| 59e0 |  2d 6d 61 74 63 68 65 73 2d 66 69 72 73 74 27 2e    22 0a 20 20 28 63 6c 2d 6c 6f 6f 70 20 66 6f 72  | -matches-first'."...(cl-loop.for | 
| 5a00 |  20 63 61 6e 64 20 69 6e 20 63 61 6e 64 69 64 61    74 65 73 0a 20 20 20 20 20 20 20 20 20 20 20 66  | .cand.in.candidates............f | 
| 5a20 |  6f 72 20 70 72 6f 70 73 20 3d 20 28 74 65 78 74    2d 70 72 6f 70 65 72 74 69 65 73 2d 61 74 20 30  | or.props.=.(text-properties-at.0 | 
| 5a40 |  20 63 61 6e 64 29 0a 20 20 20 20 20 20 20 20 20    20 20 75 6e 74 69 6c 20 28 70 6c 69 73 74 2d 6d  | .cand)............until.(plist-m | 
| 5a60 |  65 6d 62 65 72 20 70 72 6f 70 73 20 3a 70 72 65    73 63 69 65 6e 74 2d 6d 61 74 63 68 2d 72 65 67  | ember.props.:prescient-match-reg | 
| 5a80 |  65 78 70 73 29 0a 20 20 20 20 20 20 20 20 20 20    20 3b 3b 20 53 69 6e 63 65 20 77 65 20 61 6c 6c  | exps)............;;.Since.we.all | 
| 5aa0 |  6f 77 20 6f 74 68 65 72 20 6b 65 79 73 20 69 6e    20 60 70 72 65 73 63 69 65 6e 74 2d 2d 61 64 64  | ow.other.keys.in.`prescient--add | 
| 5ac0 |  2d 73 6f 72 74 2d 69 6e 66 6f 27 2c 0a 20 20 20    20 20 20 20 20 20 20 20 3b 3b 20 6a 75 73 74 20  | -sort-info',............;;.just. | 
| 5ae0 |  72 65 74 75 72 6e 20 61 6c 6c 20 70 72 6f 70 65    72 74 69 65 73 20 68 65 72 65 2e 0a 20 20 20 20  | return.all.properties.here...... | 
| 5b00 |  20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 20 72    65 74 75 72 6e 20 70 72 6f 70 73 29 29 0a 0a 28  | .......finally.return.props))..( | 
| 5b20 |  64 65 66 75 6e 20 70 72 65 73 63 69 65 6e 74 2d    2d 68 69 67 68 6c 69 67 68 74 2d 63 61 6e 64 69  | defun.prescient--highlight-candi | 
| 5b40 |  64 61 74 65 20 28 72 65 67 65 78 70 73 20 63 61    73 65 2d 66 6f 6c 64 20 63 61 6e 64 69 64 61 74  | date.(regexps.case-fold.candidat | 
| 5b60 |  65 29 0a 20 20 22 48 69 67 68 6c 69 67 68 74 20    74 65 78 74 20 6d 61 74 63 68 69 6e 67 20 52 45  | e)..."Highlight.text.matching.RE | 
| 5b80 |  47 45 58 50 53 20 61 6e 64 20 63 6f 6e 73 69 64    65 72 69 6e 67 20 43 41 53 45 2d 46 4f 4c 44 20  | GEXPS.and.considering.CASE-FOLD. | 
| 5ba0 |  69 6e 20 43 41 4e 44 49 44 41 54 45 2e 0a 0a 52    65 74 75 72 6e 73 20 61 20 70 72 6f 70 65 72 74  | in.CANDIDATE...Returns.a.propert | 
| 5bc0 |  69 7a 65 64 20 43 41 4e 44 49 44 41 54 45 2e 22    0a 20 20 28 73 65 74 71 20 63 61 6e 64 69 64 61  | ized.CANDIDATE."...(setq.candida | 
| 5be0 |  74 65 20 28 63 6f 70 79 2d 73 65 71 75 65 6e 63    65 20 63 61 6e 64 69 64 61 74 65 29 29 0a 20 20  | te.(copy-sequence.candidate))... | 
| 5c00 |  28 70 72 6f 67 31 20 63 61 6e 64 69 64 61 74 65    0a 20 20 20 20 28 6c 65 74 20 28 28 63 61 73 65  | (prog1.candidate.....(let.((case | 
| 5c20 |  2d 66 6f 6c 64 2d 73 65 61 72 63 68 20 63 61 73    65 2d 66 6f 6c 64 29 29 0a 20 20 20 20 20 20 28  | -fold-search.case-fold)).......( | 
| 5c40 |  73 61 76 65 2d 6d 61 74 63 68 2d 64 61 74 61 0a    20 20 20 20 20 20 20 20 28 64 6f 6c 69 73 74 20  | save-match-data.........(dolist. | 
| 5c60 |  28 72 65 67 65 78 70 20 72 65 67 65 78 70 73 29    0a 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e  | (regexp.regexps)...........(when | 
| 5c80 |  20 28 73 74 72 69 6e 67 2d 6d 61 74 63 68 20 72    65 67 65 78 70 20 63 61 6e 64 69 64 61 74 65 29  | .(string-match.regexp.candidate) | 
| 5ca0 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 28 66 6f    6e 74 2d 6c 6f 63 6b 2d 70 72 65 70 65 6e 64 2d  | .............(font-lock-prepend- | 
| 5cc0 |  74 65 78 74 2d 70 72 6f 70 65 72 74 79 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 28 6d 61 74 63  | text-property..............(matc | 
| 5ce0 |  68 2d 62 65 67 69 6e 6e 69 6e 67 20 30 29 20 28    6d 61 74 63 68 2d 65 6e 64 20 30 29 0a 20 20 20  | h-beginning.0).(match-end.0).... | 
| 5d00 |  20 20 20 20 20 20 20 20 20 20 27 66 61 63 65 20    27 70 72 65 73 63 69 65 6e 74 2d 70 72 69 6d 61  | ..........'face.'prescient-prima | 
| 5d20 |  72 79 2d 68 69 67 68 6c 69 67 68 74 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 63 61 6e 64 69 64  | ry-highlight..............candid | 
| 5d40 |  61 74 65 29 0a 20 20 20 20 20 20 20 20 20 20 20    20 28 63 6c 2d 6c 6f 6f 70 0a 20 20 20 20 20 20  | ate).............(cl-loop....... | 
| 5d60 |  20 20 20 20 20 20 20 66 6f 72 20 28 73 74 61 72    74 20 65 6e 64 29 0a 20 20 20 20 20 20 20 20 20  | .......for.(start.end).......... | 
| 5d80 |  20 20 20 20 6f 6e 20 28 63 64 64 72 20 28 6d 61    74 63 68 2d 64 61 74 61 29 29 0a 20 20 20 20 20  | ....on.(cddr.(match-data))...... | 
| 5da0 |  20 20 20 20 20 20 20 20 62 79 20 23 27 63 64 64    72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 64  | ........by.#'cddr..............d | 
| 5dc0 |  6f 20 28 77 68 65 6e 20 28 61 6e 64 20 73 74 61    72 74 20 65 6e 64 29 0a 20 20 20 20 20 20 20 20  | o.(when.(and.start.end)......... | 
| 5de0 |  20 20 20 20 20 20 20 20 20 20 28 66 6f 6e 74 2d    6c 6f 63 6b 2d 70 72 65 70 65 6e 64 2d 74 65 78  | ..........(font-lock-prepend-tex | 
| 5e00 |  74 2d 70 72 6f 70 65 72 74 79 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74  | t-property....................st | 
| 5e20 |  61 72 74 20 65 6e 64 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 27 66 61 63 65  | art.end....................'face | 
| 5e40 |  20 27 70 72 65 73 63 69 65 6e 74 2d 73 65 63 6f    6e 64 61 72 79 2d 68 69 67 68 6c 69 67 68 74 0a  | .'prescient-secondary-highlight. | 
| 5e60 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 63 61 6e 64 69 64 61 74 65 29 29 29 29  | ...................candidate)))) | 
| 5e80 |  29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 70 72    65 73 63 69 65 6e 74 2d 2d 68 69 67 68 6c 69 67  | )))))..(defun.prescient--highlig | 
| 5ea0 |  68 74 2d 63 61 6e 64 69 64 61 74 65 73 20 28 69    6e 70 75 74 20 63 61 6e 64 69 64 61 74 65 73 29  | ht-candidates.(input.candidates) | 
| 5ec0 |  0a 20 20 22 41 63 63 6f 72 64 69 6e 67 20 74 6f    20 49 4e 50 55 54 2c 20 68 69 67 68 6c 69 67 68  | ..."According.to.INPUT,.highligh | 
| 5ee0 |  74 20 74 68 65 20 6d 61 74 63 68 65 64 20 73 65    63 74 69 6f 6e 73 20 69 6e 20 43 41 4e 44 49 44  | t.the.matched.sections.in.CANDID | 
| 5f00 |  41 54 45 53 2e 0a 0a 49 4e 50 55 54 20 69 73 20    74 68 65 20 73 74 72 69 6e 67 20 74 68 61 74 20  | ATES...INPUT.is.the.string.that. | 
| 5f20 |  77 61 73 20 75 73 65 64 20 74 6f 20 67 65 6e 65    72 61 74 65 20 61 20 6c 69 73 74 20 6f 66 20 72  | was.used.to.generate.a.list.of.r | 
| 5f40 |  65 67 65 78 70 73 0a 66 6f 72 20 66 69 6c 74 65    72 69 6e 67 2e 20 43 41 4e 44 49 44 41 54 45 53  | egexps.for.filtering..CANDIDATES | 
| 5f60 |  20 69 73 20 74 68 65 20 6c 69 73 74 20 6f 66 20    66 69 6c 74 65 72 65 64 20 63 61 6e 64 69 64 61  | .is.the.list.of.filtered.candida | 
| 5f80 |  74 65 73 2c 0a 77 68 69 63 68 20 73 68 6f 75 6c    64 20 62 65 20 61 20 6c 69 73 74 20 6f 66 20 73  | tes,.which.should.be.a.list.of.s | 
| 5fa0 |  74 72 69 6e 67 73 2e 0a 0a 52 65 74 75 72 6e 20    61 20 6c 69 73 74 20 6f 66 20 70 72 6f 70 65 72  | trings...Return.a.list.of.proper | 
| 5fc0 |  74 69 7a 65 64 20 43 41 4e 44 49 44 41 54 45 53    2e 22 0a 20 20 28 63 6c 2d 6c 6f 6f 70 20 77 69  | tized.CANDIDATES."...(cl-loop.wi | 
| 5fe0 |  74 68 20 72 65 67 65 78 70 73 20 3d 20 28 70 72    65 73 63 69 65 6e 74 2d 66 69 6c 74 65 72 2d 72  | th.regexps.=.(prescient-filter-r | 
| 6000 |  65 67 65 78 70 73 20 69 6e 70 75 74 20 27 77 69    74 68 2d 67 72 6f 75 70 29 0a 20 20 20 20 20 20  | egexps.input.'with-group)....... | 
| 6020 |  20 20 20 20 20 61 6e 64 20 63 61 73 65 2d 66 6f    6c 64 2d 73 65 61 72 63 68 20 3d 20 28 70 72 65  | .....and.case-fold-search.=.(pre | 
| 6040 |  73 63 69 65 6e 74 2d 69 67 6e 6f 72 65 2d 63 61    73 65 2d 70 20 69 6e 70 75 74 29 0a 20 20 20 20  | scient-ignore-case-p.input)..... | 
| 6060 |  20 20 20 20 20 20 20 66 6f 72 20 63 61 6e 64 20    69 6e 20 63 61 6e 64 69 64 61 74 65 73 0a 20 20  | .......for.cand.in.candidates... | 
| 6080 |  20 20 20 20 20 20 20 20 20 63 6f 6c 6c 65 63 74    20 28 70 72 65 73 63 69 65 6e 74 2d 2d 68 69 67  | .........collect.(prescient--hig | 
| 60a0 |  68 6c 69 67 68 74 2d 63 61 6e 64 69 64 61 74 65    20 72 65 67 65 78 70 73 20 63 61 73 65 2d 66 6f  | hlight-candidate.regexps.case-fo | 
| 60c0 |  6c 64 2d 73 65 61 72 63 68 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ld-search....................... | 
| 60e0 |  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 20 20 63 61 6e  | .............................can | 
| 6100 |  64 29 29 29 0a 0a 3b 3b 3b 3b 20 52 65 67 65 78    70 20 42 75 69 6c 64 65 72 73 0a 0a 28 63 6c 2d  | d)))..;;;;.Regexp.Builders..(cl- | 
| 6120 |  64 65 66 75 6e 20 70 72 65 73 63 69 65 6e 74 2d    6c 69 74 65 72 61 6c 2d 72 65 67 65 78 70 20 28  | defun.prescient-literal-regexp.( | 
| 6140 |  71 75 65 72 79 20 26 6b 65 79 20 77 69 74 68 2d    67 72 6f 75 70 0a 20 20 20 20 20 20 20 20 20 20  | query.&key.with-group........... | 
| 6160 |  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 20 20 20 20 20  | ................................ | 
| 6180 |  26 61 6c 6c 6f 77 2d 6f 74 68 65 72 2d 6b 65 79    73 29 0a 20 20 22 52 65 74 75 72 6e 20 61 20 72  | &allow-other-keys)..."Return.a.r | 
| 61a0 |  65 67 65 78 70 20 6d 61 74 63 68 69 6e 67 20 51    55 45 52 59 20 77 69 74 68 20 6f 70 74 69 6f 6e  | egexp.matching.QUERY.with.option | 
| 61c0 |  61 6c 20 63 68 61 72 61 63 74 65 72 20 66 6f 6c    64 69 6e 67 2e 0a 0a 49 66 20 57 49 54 48 2d 47  | al.character.folding...If.WITH-G | 
| 61e0 |  52 4f 55 50 20 69 73 20 60 61 6c 6c 27 2c 20 65    6e 63 6c 6f 73 65 20 74 68 65 20 6d 61 74 63 68  | ROUP.is.`all',.enclose.the.match | 
| 6200 |  20 69 6e 20 61 20 63 61 70 74 75 72 65 20 67 72    6f 75 70 2e 0a 0a 53 65 65 20 61 6c 73 6f 20 74  | .in.a.capture.group...See.also.t | 
| 6220 |  68 65 20 63 75 73 74 6f 6d 69 7a 61 62 6c 65 20    76 61 72 69 61 62 6c 65 20 60 70 72 65 73 63 69  | he.customizable.variable.`presci | 
| 6240 |  65 6e 74 2d 75 73 65 2d 63 68 61 72 2d 66 6f 6c    64 69 6e 67 27 2e 22 0a 20 20 28 70 72 65 73 63  | ent-use-char-folding'."...(presc | 
| 6260 |  69 65 6e 74 2d 77 69 74 68 2d 67 72 6f 75 70 0a    20 20 20 28 69 66 20 70 72 65 73 63 69 65 6e 74  | ient-with-group....(if.prescient | 
| 6280 |  2d 75 73 65 2d 63 68 61 72 2d 66 6f 6c 64 69 6e    67 0a 20 20 20 20 20 20 20 28 70 72 65 73 63 69  | -use-char-folding........(presci | 
| 62a0 |  65 6e 74 2d 2d 63 68 61 72 2d 66 6f 6c 64 2d 74    6f 2d 72 65 67 65 78 70 20 71 75 65 72 79 29 0a  | ent--char-fold-to-regexp.query). | 
| 62c0 |  20 20 20 20 20 28 72 65 67 65 78 70 2d 71 75 6f    74 65 20 71 75 65 72 79 29 29 0a 20 20 20 28 65  | .....(regexp-quote.query))....(e | 
| 62e0 |  71 20 77 69 74 68 2d 67 72 6f 75 70 20 27 61 6c    6c 29 29 29 0a 0a 28 63 6c 2d 64 65 66 75 6e 20  | q.with-group.'all)))..(cl-defun. | 
| 6300 |  70 72 65 73 63 69 65 6e 74 2d 6c 69 74 65 72 61    6c 2d 70 72 65 66 69 78 2d 72 65 67 65 78 70 0a  | prescient-literal-prefix-regexp. | 
| 6320 |  20 20 20 20 28 71 75 65 72 79 20 26 6b 65 79 20    77 69 74 68 2d 67 72 6f 75 70 20 73 75 62 71 75  | ....(query.&key.with-group.subqu | 
| 6340 |  65 72 79 2d 6e 75 6d 62 65 72 0a 20 20 20 20 20    20 20 20 20 20 20 26 61 6c 6c 6f 77 2d 6f 74 68  | ery-number............&allow-oth | 
| 6360 |  65 72 2d 6b 65 79 73 29 0a 20 20 22 52 65 74 75    72 6e 20 61 20 72 65 67 65 78 70 20 6d 61 74 63  | er-keys)..."Return.a.regexp.matc | 
| 6380 |  68 69 6e 67 20 51 55 45 52 59 20 77 69 74 68 20    6f 70 74 69 6f 6e 61 6c 20 63 68 61 72 61 63 74  | hing.QUERY.with.optional.charact | 
| 63a0 |  65 72 20 66 6f 6c 64 69 6e 67 2e 0a 0a 49 66 20    57 49 54 48 2d 47 52 4f 55 50 20 69 73 20 60 61  | er.folding...If.WITH-GROUP.is.`a | 
| 63c0 |  6c 6c 27 2c 20 65 6e 63 6c 6f 73 65 20 74 68 65    20 6d 61 74 63 68 20 69 6e 20 61 20 63 61 70 74  | ll',.enclose.the.match.in.a.capt | 
| 63e0 |  75 72 65 20 67 72 6f 75 70 2e 0a 41 6e 63 68 6f    72 20 74 68 65 20 51 55 45 52 59 20 61 74 20 74  | ure.group..Anchor.the.QUERY.at.t | 
| 6400 |  68 65 20 62 65 67 69 6e 6e 69 6e 67 20 6f 66 20    74 68 65 20 63 61 6e 64 69 64 61 74 65 20 69 66  | he.beginning.of.the.candidate.if | 
| 6420 |  0a 53 55 42 51 55 45 52 59 2d 4e 55 4d 42 45 52    20 65 71 75 61 6c 73 20 30 2e 0a 0a 53 65 65 20  | .SUBQUERY-NUMBER.equals.0...See. | 
| 6440 |  61 6c 73 6f 20 74 68 65 20 63 75 73 74 6f 6d 69    7a 61 62 6c 65 20 76 61 72 69 61 62 6c 65 20 60  | also.the.customizable.variable.` | 
| 6460 |  70 72 65 73 63 69 65 6e 74 2d 75 73 65 2d 63 68    61 72 2d 66 6f 6c 64 69 6e 67 27 2e 22 0a 20 20  | prescient-use-char-folding'."... | 
| 6480 |  28 70 72 65 73 63 69 65 6e 74 2d 77 69 74 68 2d    67 72 6f 75 70 0a 20 20 20 28 63 6f 6e 63 61 74  | (prescient-with-group....(concat | 
| 64a0 |  20 28 69 66 20 28 3d 20 73 75 62 71 75 65 72 79    2d 6e 75 6d 62 65 72 20 30 29 0a 20 20 20 20 20  | .(if.(=.subquery-number.0)...... | 
| 64c0 |  20 20 20 20 20 20 20 20 20 20 3b 3b 20 31 2e 20    73 75 62 71 75 65 72 79 20 3d 3e 20 61 6e 63 68  | ..........;;.1..subquery.=>.anch | 
| 64e0 |  6f 72 20 61 74 20 74 68 65 20 62 65 67 69 6e 6e    69 6e 67 20 6f 66 20 63 61 6e 64 69 64 61 74 65  | or.at.the.beginning.of.candidate | 
| 6500 |  2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 22 5e 22 0a 20 20 20 20 20 20 20 20 20 20 20  | ................."^"............ | 
| 6520 |  20 20 3b 3b 20 4f 74 68 65 72 77 69 73 65 2c 20    6a 75 73 74 20 61 6e 63 68 6f 72 20 61 74 20 74  | ..;;.Otherwise,.just.anchor.at.t | 
| 6540 |  68 65 20 62 65 67 69 6e 6e 69 6e 67 20 6f 66 20    73 6f 6d 65 20 77 6f 72 64 0a 20 20 20 20 20 20  | he.beginning.of.some.word....... | 
| 6560 |  20 20 20 20 20 20 20 3b 3b 20 69 6e 20 74 68 65    20 63 61 6e 64 69 64 61 74 65 2e 0a 20 20 20 20  | .......;;.in.the.candidate...... | 
| 6580 |  20 20 20 20 20 20 20 20 20 22 5c 5c 62 22 29 0a    20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 70  | ........."\\b")............(if.p | 
| 65a0 |  72 65 73 63 69 65 6e 74 2d 75 73 65 2d 63 68 61    72 2d 66 6f 6c 64 69 6e 67 0a 20 20 20 20 20 20  | rescient-use-char-folding....... | 
| 65c0 |  20 20 20 20 20 20 20 20 20 28 70 72 65 73 63 69    65 6e 74 2d 2d 63 68 61 72 2d 66 6f 6c 64 2d 74  | .........(prescient--char-fold-t | 
| 65e0 |  6f 2d 72 65 67 65 78 70 20 71 75 65 72 79 29 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65  | o-regexp.query)..............(re | 
| 6600 |  67 65 78 70 2d 71 75 6f 74 65 20 71 75 65 72 79    29 29 29 0a 20 20 20 28 65 71 20 77 69 74 68 2d  | gexp-quote.query)))....(eq.with- | 
| 6620 |  67 72 6f 75 70 20 27 61 6c 6c 29 29 29 0a 0a 28    63 6c 2d 64 65 66 75 6e 20 70 72 65 73 63 69 65  | group.'all)))..(cl-defun.prescie | 
| 6640 |  6e 74 2d 69 6e 69 74 69 61 6c 73 2d 72 65 67 65    78 70 20 28 71 75 65 72 79 20 26 6b 65 79 20 77  | nt-initials-regexp.(query.&key.w | 
| 6660 |  69 74 68 2d 67 72 6f 75 70 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ith-group....................... | 
| 6680 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 26 61 6c 6c 6f 77 2d 6f 74 68 65  | .....................&allow-othe | 
| 66a0 |  72 2d 6b 65 79 73 29 0a 20 20 22 52 65 74 75 72    6e 20 61 20 72 65 67 65 78 70 20 6d 61 74 63 68  | r-keys)..."Return.a.regexp.match | 
| 66c0 |  69 6e 67 20 51 55 45 52 59 20 61 73 20 61 6e 20    69 6e 69 74 69 61 6c 69 73 6d 2e 0a 54 68 69 73  | ing.QUERY.as.an.initialism..This | 
| 66e0 |  20 6d 65 61 6e 73 20 74 68 61 74 20 74 68 65 20    72 65 67 65 78 70 20 77 69 6c 6c 20 6f 6e 6c 79  | .means.that.the.regexp.will.only | 
| 6700 |  20 6d 61 74 63 68 20 61 20 67 69 76 65 6e 20 73    74 72 69 6e 67 20 69 66 0a 51 55 45 52 59 20 69  | .match.a.given.string.if.QUERY.i | 
| 6720 |  73 20 61 20 73 75 62 73 74 72 69 6e 67 20 6f 66    20 74 68 65 20 69 6e 69 74 69 61 6c 73 20 6f 66  | s.a.substring.of.the.initials.of | 
| 6740 |  20 74 68 65 20 73 74 72 69 6e 67 2e 0a 0a 49 66    20 57 49 54 48 2d 47 52 4f 55 50 20 69 73 20 6e  | .the.string...If.WITH-GROUP.is.n | 
| 6760 |  6f 6e 2d 6e 69 6c 2c 20 65 6e 63 6c 6f 73 65 20    74 68 65 20 70 61 72 74 73 20 6f 66 20 74 68 65  | on-nil,.enclose.the.parts.of.the | 
| 6780 |  20 72 65 67 65 78 70 20 74 68 61 74 0a 6d 61 74    63 68 20 74 68 65 20 61 63 74 75 61 6c 20 69 6e  | .regexp.that.match.the.actual.in | 
| 67a0 |  69 74 69 61 6c 73 20 69 6e 20 63 61 70 74 75 72    65 20 67 72 6f 75 70 73 2c 20 73 6f 20 74 68 61  | itials.in.capture.groups,.so.tha | 
| 67c0 |  74 20 74 68 65 20 6d 61 74 63 68 0a 64 61 74 61    20 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20  | t.the.match.data.can.be.used.to. | 
| 67e0 |  68 69 67 68 6c 69 67 68 74 20 74 68 65 20 69 6e    69 74 69 61 6c 73 20 6f 66 20 74 68 65 20 6d 61  | highlight.the.initials.of.the.ma | 
| 6800 |  74 63 68 2e 0a 0a 54 6f 20 69 6c 6c 75 73 74 72    61 74 65 2c 20 69 66 20 5c 22 66 61 5c 22 20 6d  | tch...To.illustrate,.if.\"fa\".m | 
| 6820 |  61 74 63 68 65 73 20 5c 22 66 69 6e 64 2d 66 69    6c 65 2d 61 74 2d 70 6f 69 6e 74 5c 22 2c 20 74  | atches.\"find-file-at-point\",.t | 
| 6840 |  68 65 6e 20 74 68 65 0a 65 6e 74 69 72 65 20 6d    61 74 63 68 20 77 69 6c 6c 20 62 65 20 74 68 65  | hen.the.entire.match.will.be.the | 
| 6860 |  20 74 65 78 74 20 5c 22 66 69 6c 65 2d 61 74 5c    22 2c 20 61 6e 64 20 74 68 65 72 65 20 77 69 6c  | .text.\"file-at\",.and.there.wil | 
| 6880 |  6c 20 62 65 20 74 77 6f 0a 63 61 70 74 75 72 65    20 67 72 6f 75 70 73 20 6d 61 74 63 68 69 6e 67  | l.be.two.capture.groups.matching | 
| 68a0 |  20 5c 22 66 5c 22 20 61 6e 64 20 5c 22 61 5c 22    2e 22 0a 20 20 28 6d 61 70 63 6f 6e 63 61 74 20  | .\"f\".and.\"a\"."...(mapconcat. | 
| 68c0 |  28 6c 61 6d 62 64 61 20 28 63 68 61 72 29 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c  | (lambda.(char)................(l | 
| 68e0 |  65 74 20 28 28 72 20 28 72 65 67 65 78 70 2d 71    75 6f 74 65 20 28 63 68 61 72 2d 74 6f 2d 73 74  | et.((r.(regexp-quote.(char-to-st | 
| 6900 |  72 69 6e 67 20 63 68 61 72 29 29 29 29 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28  | ring.char))))..................( | 
| 6920 |  77 68 65 6e 20 77 69 74 68 2d 67 72 6f 75 70 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | when.with-group................. | 
| 6940 |  20 20 20 28 73 65 74 71 20 72 20 28 66 6f 72 6d    61 74 20 22 5c 5c 28 25 73 5c 5c 29 22 20 72 29  | ...(setq.r.(format."\\(%s\\)".r) | 
| 6960 |  29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 28 66 6f 72 6d 61 74 20 22 5c 5c 62  | ))..................(format."\\b | 
| 6980 |  25 73 5c 5c 77 2a 22 20 72 29 29 29 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 71 75 65 72 79 0a  | %s\\w*".r)))..............query. | 
| 69a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 22 5c 5c    57 2a 22 29 29 0a 0a 28 63 6c 2d 64 65 66 75 6e  | ............."\\W*"))..(cl-defun | 
| 69c0 |  20 70 72 65 73 63 69 65 6e 74 2d 72 65 67 65 78    70 2d 72 65 67 65 78 70 20 28 71 75 65 72 79 20  | .prescient-regexp-regexp.(query. | 
| 69e0 |  26 72 65 73 74 20 5f 69 67 6e 6f 72 65 29 0a 20    20 22 55 6e 6c 65 73 73 20 75 73 69 6e 67 20 74  | &rest._ignore)..."Unless.using.t | 
| 6a00 |  68 65 20 72 65 67 65 78 70 20 51 55 45 52 59 20    77 6f 75 6c 64 20 72 65 74 75 72 6e 20 61 6e 20  | he.regexp.QUERY.would.return.an. | 
| 6a20 |  65 72 72 6f 72 2c 20 72 65 74 75 72 6e 20 51 55    45 52 59 2e 22 0a 20 20 28 69 67 6e 6f 72 65 2d  | error,.return.QUERY."...(ignore- | 
| 6a40 |  65 72 72 6f 72 73 0a 20 20 20 20 3b 3b 20 49 67    6e 6f 72 65 20 72 65 67 65 78 70 20 69 66 20 69  | errors.....;;.Ignore.regexp.if.i | 
| 6a60 |  74 27 73 20 6d 61 6c 66 6f 72 6d 65 64 2e 0a 20    20 20 20 28 73 74 72 69 6e 67 2d 6d 61 74 63 68  | t's.malformed......(string-match | 
| 6a80 |  2d 70 20 71 75 65 72 79 20 22 22 29 0a 20 20 20    20 71 75 65 72 79 29 29 0a 0a 28 63 6c 2d 64 65  | -p.query."").....query))..(cl-de | 
| 6aa0 |  66 75 6e 20 70 72 65 73 63 69 65 6e 74 2d 61 6e    63 68 6f 72 65 64 2d 72 65 67 65 78 70 20 28 71  | fun.prescient-anchored-regexp.(q | 
| 6ac0 |  75 65 72 79 20 26 6b 65 79 20 77 69 74 68 2d 67    72 6f 75 70 0a 20 20 20 20 20 20 20 20 20 20 20  | uery.&key.with-group............ | 
| 6ae0 |  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 20 20 20 20 20  | ................................ | 
| 6b00 |  26 61 6c 6c 6f 77 2d 6f 74 68 65 72 2d 6b 65 79    73 29 0a 20 20 22 52 65 74 75 72 6e 20 61 20 72  | &allow-other-keys)..."Return.a.r | 
| 6b20 |  65 67 65 78 70 20 6d 61 74 63 68 69 6e 67 20 51    55 45 52 59 20 77 69 74 68 20 61 6e 63 68 6f 72  | egexp.matching.QUERY.with.anchor | 
| 6b40 |  73 2e 0a 54 68 69 73 20 6d 65 61 6e 73 20 75 70    70 65 72 63 61 73 65 20 61 6e 64 20 73 79 6d 62  | s..This.means.uppercase.and.symb | 
| 6b60 |  6f 6c 73 20 77 69 6c 6c 20 62 65 20 75 73 65 64    20 61 73 20 62 65 67 69 6e 20 6f 66 20 77 6f 72  | ols.will.be.used.as.begin.of.wor | 
| 6b80 |  64 73 2e 0a 0a 49 66 20 57 49 54 48 2d 47 52 4f    55 50 20 69 73 20 6e 6f 6e 2d 6e 69 6c 2c 20 65  | ds...If.WITH-GROUP.is.non-nil,.e | 
| 6ba0 |  6e 63 6c 6f 73 65 20 74 68 65 20 70 61 72 74 73    20 6f 66 20 74 68 65 20 72 65 67 65 78 70 20 74  | nclose.the.parts.of.the.regexp.t | 
| 6bc0 |  68 61 74 0a 6d 61 74 63 68 20 74 68 65 20 61 63    74 75 61 6c 20 69 6e 69 74 69 61 6c 73 20 69 6e  | hat.match.the.actual.initials.in | 
| 6be0 |  20 63 61 70 74 75 72 65 20 67 72 6f 75 70 73 2c    20 73 6f 20 74 68 61 74 20 74 68 65 20 6d 61 74  | .capture.groups,.so.that.the.mat | 
| 6c00 |  63 68 0a 64 61 74 61 20 63 61 6e 20 62 65 20 75    73 65 64 20 74 6f 20 68 69 67 68 6c 69 67 68 74  | ch.data.can.be.used.to.highlight | 
| 6c20 |  20 74 68 65 20 69 6e 69 74 69 61 6c 73 20 6f 66    20 74 68 65 20 6d 61 74 63 68 2e 0a 0a 54 6f 20  | .the.initials.of.the.match...To. | 
| 6c40 |  69 6c 6c 75 73 74 72 61 74 65 2c 20 5c 22 46 69    46 69 41 74 5c 22 20 6d 61 74 63 68 65 73 20 5c  | illustrate,.\"FiFiAt\".matches.\ | 
| 6c60 |  22 66 69 6e 64 2d 66 69 6c 65 2d 61 74 2d 70 6f    69 6e 74 5c 22 20 77 69 74 68 20 74 68 65 0a 65  | "find-file-at-point\".with.the.e | 
| 6c80 |  6e 74 69 72 65 20 6d 61 74 63 68 20 62 65 69 6e    67 20 5c 22 66 69 6c 65 2d 66 69 6e 64 2d 61 74  | ntire.match.being.\"file-find-at | 
| 6ca0 |  5c 22 20 61 6e 64 20 77 69 74 68 20 74 68 72 65    65 20 67 72 6f 75 70 73 0a 5c 22 66 69 6e 64 5c  | \".and.with.three.groups.\"find\ | 
| 6cc0 |  22 2c 20 5c 22 66 69 6c 65 5c 22 2c 20 61 6e 64    20 5c 22 61 74 5c 22 2e 0a 0a 41 20 73 69 6d 69  | ",.\"file\",.and.\"at\"...A.simi | 
| 6ce0 |  6c 61 72 20 6d 61 74 63 68 20 63 61 6e 20 62 65    20 61 63 68 69 65 76 65 20 77 69 74 68 20 5c 22  | lar.match.can.be.achieve.with.\" | 
| 6d00 |  66 69 2d 66 69 2d 61 74 5c 22 2c 20 6f 72 20 5c    22 46 46 41 5c 22 2c 0a 6f 72 20 5c 22 66 69 6e  | fi-fi-at\",.or.\"FFA\",.or.\"fin | 
| 6d20 |  64 2d 66 2d 61 5c 22 2e 22 0a 20 20 28 6c 65 74    20 28 28 63 61 73 65 2d 66 6f 6c 64 2d 73 65 61  | d-f-a\"."...(let.((case-fold-sea | 
| 6d40 |  72 63 68 20 6e 69 6c 29 0a 20 20 20 20 20 20 20    20 28 65 78 70 72 20 28 69 66 20 77 69 74 68 2d  | rch.nil).........(expr.(if.with- | 
| 6d60 |  67 72 6f 75 70 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 22 5c 5c 28 5c 5c 62 25  | group..................."\\(\\b% | 
| 6d80 |  73 5c 5c 29 5b 5e 5c 5c 2f 5d 2a 3f 22 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 5c  | s\\)[^\\/]*?"................."\ | 
| 6da0 |  5c 62 25 73 5b 5e 5c 5c 2f 5d 2a 3f 22 29 29 29    0a 20 20 20 20 28 72 65 70 6c 61 63 65 2d 72 65  | \b%s[^\\/]*?"))).....(replace-re | 
| 6dc0 |  67 65 78 70 2d 69 6e 2d 73 74 72 69 6e 67 0a 20    20 20 20 20 22 5b 5b 3a 75 70 70 65 72 3a 5d 5d  | gexp-in-string......"[[:upper:]] | 
| 6de0 |  5b 5b 3a 6c 6f 77 65 72 3a 5d 5d 2a 5c 5c 7c 5c    5c 57 5b 5b 3a 6c 6f 77 65 72 3a 5d 5d 2a 5c 5c  | [[:lower:]]*\\|\\W[[:lower:]]*\\ | 
| 6e00 |  7c 5b 5b 3a 6c 6f 77 65 72 3a 5d 5d 2b 22 0a 20    20 20 20 20 28 6c 61 6d 62 64 61 20 28 73 29 20  | |[[:lower:]]+"......(lambda.(s). | 
| 6e20 |  28 66 6f 72 6d 61 74 20 65 78 70 72 20 28 72 65    67 65 78 70 2d 71 75 6f 74 65 20 28 64 6f 77 6e  | (format.expr.(regexp-quote.(down | 
| 6e40 |  63 61 73 65 20 73 29 29 29 29 0a 20 20 20 20 20    71 75 65 72 79 0a 20 20 20 20 20 27 66 69 78 65  | case.s))))......query......'fixe | 
| 6e60 |  64 2d 63 61 73 65 0a 20 20 20 20 20 27 6c 69 74    65 72 61 6c 29 29 29 0a 0a 28 63 6c 2d 64 65 66  | d-case......'literal)))..(cl-def | 
| 6e80 |  75 6e 20 70 72 65 73 63 69 65 6e 74 2d 66 75 7a    7a 79 2d 72 65 67 65 78 70 20 28 71 75 65 72 79  | un.prescient-fuzzy-regexp.(query | 
| 6ea0 |  20 26 6b 65 79 20 77 69 74 68 2d 67 72 6f 75 70    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .&key.with-group................ | 
| 6ec0 |  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 26 61 6c 6c 6f 77 2d  | .........................&allow- | 
| 6ee0 |  6f 74 68 65 72 2d 6b 65 79 73 29 0a 20 20 22 52    65 74 75 72 6e 20 61 20 72 65 67 65 78 70 20 66  | other-keys)..."Return.a.regexp.f | 
| 6f00 |  6f 72 20 66 75 7a 7a 79 2d 6d 61 74 63 68 69 6e    67 20 51 55 45 52 59 2e 0a 54 68 69 73 20 6d 65  | or.fuzzy-matching.QUERY..This.me | 
| 6f20 |  61 6e 73 20 74 68 61 74 20 74 68 65 20 72 65 67    65 78 70 20 77 69 6c 6c 20 6f 6e 6c 79 20 6d 61  | ans.that.the.regexp.will.only.ma | 
| 6f40 |  74 63 68 20 61 20 67 69 76 65 6e 20 73 74 72 69    6e 67 20 69 66 20 61 6c 6c 0a 63 68 61 72 61 63  | tch.a.given.string.if.all.charac | 
| 6f60 |  74 65 72 73 20 69 6e 20 51 55 45 52 59 20 61 72    65 20 70 72 65 73 65 6e 74 20 61 6e 79 77 68 65  | ters.in.QUERY.are.present.anywhe | 
| 6f80 |  72 65 20 69 6e 20 74 68 65 20 73 74 72 69 6e 67    20 69 6e 20 74 68 65 0a 73 70 65 63 69 66 69 65  | re.in.the.string.in.the.specifie | 
| 6fa0 |  64 20 6f 72 64 65 72 2e 0a 0a 49 66 20 57 49 54    48 2d 47 52 4f 55 50 20 69 73 20 6e 6f 6e 2d 6e  | d.order...If.WITH-GROUP.is.non-n | 
| 6fc0 |  69 6c 2c 20 65 6e 63 6c 6f 73 65 20 74 68 65 20    70 61 72 74 73 20 6f 66 20 74 68 65 20 72 65 67  | il,.enclose.the.parts.of.the.reg | 
| 6fe0 |  65 78 70 20 74 68 61 74 0a 6d 61 74 63 68 20 74    68 65 20 51 55 45 52 59 20 63 68 61 72 61 63 74  | exp.that.match.the.QUERY.charact | 
| 7000 |  65 72 73 20 69 6e 20 63 61 70 74 75 72 65 20 67    72 6f 75 70 73 2c 20 73 6f 20 74 68 61 74 20 74  | ers.in.capture.groups,.so.that.t | 
| 7020 |  68 65 20 6d 61 74 63 68 0a 64 61 74 61 20 63 61    6e 20 62 65 20 75 73 65 64 20 74 6f 20 68 69 67  | he.match.data.can.be.used.to.hig | 
| 7040 |  68 6c 69 67 68 74 20 74 68 65 20 6d 61 74 63 68    65 64 20 73 75 62 73 74 72 69 6e 67 73 2e 22 0a  | hlight.the.matched.substrings.". | 
| 7060 |  20 20 28 6c 65 74 20 28 28 63 68 61 72 73 20 28    73 74 72 69 6e 67 2d 74 6f 2d 6c 69 73 74 20 71  | ..(let.((chars.(string-to-list.q | 
| 7080 |  75 65 72 79 29 29 29 0a 20 20 20 20 28 63 6f 6e    63 61 74 0a 20 20 20 20 20 28 70 72 65 73 63 69  | uery))).....(concat......(presci | 
| 70a0 |  65 6e 74 2d 77 69 74 68 2d 67 72 6f 75 70 0a 20    20 20 20 20 20 28 72 65 67 65 78 70 2d 71 75 6f  | ent-with-group.......(regexp-quo | 
| 70c0 |  74 65 0a 20 20 20 20 20 20 20 28 63 68 61 72 2d    74 6f 2d 73 74 72 69 6e 67 20 28 63 61 72 20 63  | te........(char-to-string.(car.c | 
| 70e0 |  68 61 72 73 29 29 29 0a 20 20 20 20 20 20 77 69    74 68 2d 67 72 6f 75 70 29 0a 20 20 20 20 20 28  | hars))).......with-group)......( | 
| 7100 |  6d 61 70 63 6f 6e 63 61 74 0a 20 20 20 20 20 20    28 6c 61 6d 62 64 61 20 28 63 68 61 72 29 0a 20  | mapconcat.......(lambda.(char).. | 
| 7120 |  20 20 20 20 20 20 20 28 66 6f 72 6d 61 74 20 22    5b 5e 25 63 5c 6e 5d 2a 3f 25 73 22 20 63 68 61  | .......(format."[^%c\n]*?%s".cha | 
| 7140 |  72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 28 70 72 65 73 63 69 65 6e 74 2d 77 69 74  | r.................(prescient-wit | 
| 7160 |  68 2d 67 72 6f 75 70 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 28 72 65 67 65 78 70  | h-group..................(regexp | 
| 7180 |  2d 71 75 6f 74 65 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 28 63 68 61 72 2d 74  | -quote...................(char-t | 
| 71a0 |  6f 2d 73 74 72 69 6e 67 20 63 68 61 72 29 29 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | o-string.char))................. | 
| 71c0 |  20 77 69 74 68 2d 67 72 6f 75 70 29 29 29 0a 20    20 20 20 20 20 28 63 64 72 20 63 68 61 72 73 29  | .with-group))).......(cdr.chars) | 
| 71e0 |  20 22 22 29 29 29 29 0a 0a 28 63 6c 2d 64 65 66    75 6e 20 70 72 65 73 63 69 65 6e 74 2d 70 72 65  | .""))))..(cl-defun.prescient-pre | 
| 7200 |  66 69 78 2d 72 65 67 65 78 70 20 28 71 75 65 72    79 20 26 6b 65 79 20 77 69 74 68 2d 67 72 6f 75  | fix-regexp.(query.&key.with-grou | 
| 7220 |  70 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 20 20 20 20 20  | p............................... | 
| 7240 |  20 20 20 20 20 20 20 20 20 20 20 26 61 6c 6c 6f    77 2d 6f 74 68 65 72 2d 6b 65 79 73 29 0a 20 20  | ...........&allow-other-keys)... | 
| 7260 |  22 52 65 74 75 72 6e 20 61 20 72 65 67 65 78 70    20 66 6f 72 20 6d 61 74 63 68 69 6e 67 20 74 68  | "Return.a.regexp.for.matching.th | 
| 7280 |  65 20 62 65 67 69 6e 6e 69 6e 67 73 20 6f 66 20    77 6f 72 64 73 20 69 6e 20 51 55 45 52 59 2e 0a  | e.beginnings.of.words.in.QUERY.. | 
| 72a0 |  54 68 69 73 20 69 73 20 73 69 6d 69 6c 61 72 20    74 6f 20 74 68 65 20 60 70 61 72 74 69 61 6c 2d  | This.is.similar.to.the.`partial- | 
| 72c0 |  63 6f 6d 70 6c 65 74 69 6f 6e 27 20 63 6f 6d 70    6c 65 74 69 6f 6e 20 73 74 79 6c 65 0a 70 72 6f  | completion'.completion.style.pro | 
| 72e0 |  76 69 64 65 64 20 62 79 20 45 6d 61 63 73 2c 20    65 78 63 65 70 74 20 74 68 61 74 20 6e 6f 6e 2d  | vided.by.Emacs,.except.that.non- | 
| 7300 |  77 6f 72 64 20 63 68 61 72 61 63 74 65 72 73 20    61 72 65 20 74 61 6b 65 6e 0a 6c 69 74 65 72 61  | word.characters.are.taken.litera | 
| 7320 |  6c 6c 79 20 28 69 2e 65 2e 2c 20 6f 6e 65 20 63    61 6e 27 74 20 67 6c 6f 62 20 75 73 69 6e 67 20  | lly.(i.e.,.one.can't.glob.using. | 
| 7340 |  5c 22 2a 5c 22 29 2e 20 20 50 72 65 73 63 69 65    6e 74 20 61 6c 72 65 61 64 79 0a 63 6f 76 65 72  | \"*\")...Prescient.already.cover | 
| 7360 |  73 20 74 68 61 74 20 63 61 73 65 20 62 79 20 73    65 70 61 72 61 74 69 6e 67 20 71 75 65 72 69 65  | s.that.case.by.separating.querie | 
| 7380 |  73 20 77 69 74 68 20 61 20 73 70 61 63 65 2e 0a    0a 49 66 20 51 55 45 52 59 20 63 6f 6e 74 61 69  | s.with.a.space...If.QUERY.contai | 
| 73a0 |  6e 73 20 6e 6f 6e 2d 77 6f 72 64 20 63 68 61 72    61 63 74 65 72 73 2c 20 74 68 65 6e 20 74 68 69  | ns.non-word.characters,.then.thi | 
| 73c0 |  73 20 6d 61 74 63 68 65 73 0a 67 72 65 65 64 69    6c 79 2e 20 4f 74 68 65 72 77 69 73 65 2c 20 69  | s.matches.greedily..Otherwise,.i | 
| 73e0 |  74 20 6d 61 74 63 68 65 73 20 6e 6f 6e 2d 67 72    65 65 64 69 6c 79 2e 20 46 6f 72 20 65 78 61 6d  | t.matches.non-greedily..For.exam | 
| 7400 |  70 6c 65 2c 0a 0a 2d 20 5c 22 73 74 72 2d 72 5c    22 20 66 75 6c 6c 79 20 6d 61 74 63 68 65 73 20  | ple,..-.\"str-r\".fully.matches. | 
| 7420 |  5c 22 73 74 72 69 6e 67 2d 72 65 70 65 61 74 5c    22 0a 0a 2d 20 5c 22 72 65 5c 22 20 64 6f 65 73  | \"string-repeat\"..-.\"re\".does | 
| 7440 |  20 6e 6f 74 20 66 75 6c 6c 79 20 6d 61 74 63 68    20 74 68 65 20 77 6f 72 64 20 5c 22 72 65 70 65  | .not.fully.match.the.word.\"repe | 
| 7460 |  72 74 6f 69 72 65 5c 22 2c 20 6f 6e 6c 79 20 74    68 65 0a 20 20 5c 22 72 65 5c 22 20 61 74 20 74  | rtoire\",.only.the...\"re\".at.t | 
| 7480 |  68 65 20 62 65 67 69 6e 6e 69 6e 67 20 6f 66 20    74 68 65 20 77 6f 72 64 0a 0a 2d 20 5c 22 2e 67  | he.beginning.of.the.word..-.\".g | 
| 74a0 |  5c 22 20 66 75 6c 6c 79 20 6d 61 74 63 68 65 73    20 5c 22 2e 67 69 74 5c 22 0a 0a 54 68 69 73 20  | \".fully.matches.\".git\"..This. | 
| 74c0 |  62 65 68 61 76 69 6f 72 20 69 73 20 6d 65 61 6e    74 20 74 6f 20 77 6f 72 6b 20 62 65 74 74 65 72  | behavior.is.meant.to.work.better | 
| 74e0 |  20 77 69 74 68 20 74 68 65 20 66 75 6e 63 74 69    6f 6e 0a 60 70 72 65 73 63 69 65 6e 74 2d 73 6f  | .with.the.function.`prescient-so | 
| 7500 |  72 74 2d 66 75 6c 6c 2d 6d 61 74 63 68 65 73 2d    66 69 72 73 74 27 20 61 6e 64 20 74 6f 20 61 76  | rt-full-matches-first'.and.to.av | 
| 7520 |  6f 69 64 20 69 6e 74 65 72 70 72 65 74 69 6e 67    20 61 6e 0a 69 6e 69 74 69 61 6c 69 73 6d 20 61  | oid.interpreting.an.initialism.a | 
| 7540 |  73 20 61 20 70 72 65 66 69 78 2e 0a 0a 49 66 20    57 49 54 48 2d 47 52 4f 55 50 20 69 73 20 6e 6f  | s.a.prefix...If.WITH-GROUP.is.no | 
| 7560 |  6e 2d 6e 69 6c 2c 20 65 6e 63 6c 6f 73 65 20 74    68 65 20 70 61 72 74 73 20 6f 66 20 74 68 65 20  | n-nil,.enclose.the.parts.of.the. | 
| 7580 |  72 65 67 65 78 70 20 74 68 61 74 0a 6d 61 74 63    68 20 74 68 65 20 51 55 45 52 59 20 63 68 61 72  | regexp.that.match.the.QUERY.char | 
| 75a0 |  61 63 74 65 72 73 20 69 6e 20 63 61 70 74 75 72    65 20 67 72 6f 75 70 73 2c 20 73 6f 20 74 68 61  | acters.in.capture.groups,.so.tha | 
| 75c0 |  74 20 74 68 65 20 6d 61 74 63 68 0a 64 61 74 61    20 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20  | t.the.match.data.can.be.used.to. | 
| 75e0 |  68 69 67 68 6c 69 67 68 74 20 74 68 65 20 6d 61    74 63 68 65 64 20 73 75 62 73 74 72 69 6e 67 73  | highlight.the.matched.substrings | 
| 7600 |  2e 22 0a 20 20 28 63 6f 6e 63 61 74 20 28 77 68    65 6e 20 28 65 71 6c 20 30 20 28 73 74 72 69 6e  | ."...(concat.(when.(eql.0.(strin | 
| 7620 |  67 2d 6d 61 74 63 68 2d 70 20 22 5b 5b 3a 77 6f    72 64 3a 5d 5d 22 20 71 75 65 72 79 29 29 0a 20  | g-match-p."[[:word:]]".query)).. | 
| 7640 |  20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 49 66    20 51 55 45 52 59 20 62 65 67 69 6e 73 20 77 69  | ...........;;.If.QUERY.begins.wi | 
| 7660 |  74 68 20 61 20 77 6f 72 64 20 63 68 61 72 61 63    74 65 72 2c 20 6d 61 6b 65 20 73 75 72 65 20 74  | th.a.word.character,.make.sure.t | 
| 7680 |  68 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 3b    3b 20 72 65 74 75 72 6e 65 64 20 72 65 67 65 78  | he.............;;.returned.regex | 
| 76a0 |  70 20 64 6f 65 73 6e 27 74 20 73 74 61 72 74 20    6d 61 74 63 68 69 6e 67 20 69 6e 20 74 68 65 20  | p.doesn't.start.matching.in.the. | 
| 76c0 |  6d 69 64 64 6c 65 20 6f 66 0a 20 20 20 20 20 20    20 20 20 20 20 20 3b 3b 20 61 20 77 6f 72 64 2e  | middle.of.............;;.a.word. | 
| 76e0 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 22 5c 5c    3c 22 29 0a 20 20 20 20 20 20 20 20 20 20 28 72  | ............."\\<")...........(r | 
| 7700 |  65 70 6c 61 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 20 20  | eplace-regexp-in-string......... | 
| 7720 |  20 20 20 22 5b 5b 3a 77 6f 72 64 3a 5d 5d 2b 22    0a 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 43  | ..."[[:word:]]+"............;;.C | 
| 7740 |  68 6f 6f 73 65 20 77 68 65 74 68 65 72 20 74 6f    20 77 72 61 70 20 73 65 71 75 65 6e 63 65 73 20  | hoose.whether.to.wrap.sequences. | 
| 7760 |  6f 66 20 77 6f 72 64 20 63 68 61 72 61 63 74 65    72 73 2e 0a 20 20 20 20 20 20 20 20 20 20 20 28  | of.word.characters.............( | 
| 7780 |  63 6f 6e 63 61 74 20 28 69 66 20 77 69 74 68 2d    67 72 6f 75 70 0a 20 20 20 20 20 20 20 20 20 20  | concat.(if.with-group........... | 
| 77a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 22 5c 5c    5c 5c 28 5c 5c 26 5c 5c 5c 5c 29 5b 5b 3a 77 6f  | ............."\\\\(\\&\\\\)[[:wo | 
| 77c0 |  72 64 3a 5d 5d 2a 22 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 22 5c 5c  | rd:]]*"......................"\\ | 
| 77e0 |  26 5b 5b 3a 77 6f 72 64 3a 5d 5d 2a 22 29 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | &[[:word:]]*").................. | 
| 7800 |  20 20 28 75 6e 6c 65 73 73 20 28 73 74 72 69 6e    67 2d 6d 61 74 63 68 2d 70 20 22 5b 5e 5b 3a 77  | ..(unless.(string-match-p."[^[:w | 
| 7820 |  6f 72 64 3a 5d 5d 22 20 71 75 65 72 79 29 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ord:]]".query).................. | 
| 7840 |  20 20 20 20 22 3f 22 29 29 0a 20 20 20 20 20 20    20 20 20 20 20 3b 3b 20 51 75 6f 74 65 20 6e 6f  | ...."?"))............;;.Quote.no | 
| 7860 |  6e 2d 77 6f 72 64 20 63 68 61 72 61 63 74 65 72    73 20 73 6f 20 74 68 61 74 20 74 68 65 79 27 72  | n-word.characters.so.that.they'r | 
| 7880 |  65 20 74 61 6b 65 6e 0a 20 20 20 20 20 20 20 20    20 20 20 3b 3b 20 6c 69 74 65 72 61 6c 6c 79 2e  | e.taken............;;.literally. | 
| 78a0 |  0a 20 20 20 20 20 20 20 20 20 20 20 28 72 65 70    6c 61 63 65 2d 72 65 67 65 78 70 2d 69 6e 2d 73  | ............(replace-regexp-in-s | 
| 78c0 |  74 72 69 6e 67 20 22 5b 5e 5b 3a 77 6f 72 64 3a    5d 5d 22 0a 20 20 20 20 20 20 20 20 20 20 20 20  | tring."[^[:word:]]"............. | 
| 78e0 |  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 23 27 72 65 67 65 78  | .........................#'regex | 
| 7900 |  70 2d 71 75 6f 74 65 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  | p-quote......................... | 
| 7920 |  20 20 20 20 20 20 20 20 20 20 20 20 20 71 75 65    72 79 20 27 66 69 78 65 64 2d 63 61 73 65 20 27  | .............query.'fixed-case.' | 
| 7940 |  6c 69 74 65 72 61 6c 29 0a 20 20 20 20 20 20 20    20 20 20 20 27 66 69 78 65 64 2d 63 61 73 65 29  | literal)............'fixed-case) | 
| 7960 |  29 29 0a 0a 3b 3b 3b 3b 20 53 6f 72 74 69 6e 67    20 61 6e 64 20 66 69 6c 74 65 72 69 6e 67 0a 0a  | ))..;;;;.Sorting.and.filtering.. | 
| 7980 |  28 64 65 66 75 6e 20 70 72 65 73 63 69 65 6e 74    2d 66 69 6c 74 65 72 2d 72 65 67 65 78 70 73 20  | (defun.prescient-filter-regexps. | 
| 79a0 |  28 71 75 65 72 79 20 26 6f 70 74 69 6f 6e 61 6c    20 77 69 74 68 2d 67 72 6f 75 70 20 73 65 70 61  | (query.&optional.with-group.sepa | 
| 79c0 |  72 61 74 65 64 29 0a 20 20 22 43 6f 6e 76 65 72    74 20 51 55 45 52 59 20 74 6f 20 6c 69 73 74 20  | rated)..."Convert.QUERY.to.list. | 
| 79e0 |  6f 66 20 72 65 67 65 78 70 73 2e 0a 45 61 63 68    20 72 65 67 65 78 70 20 6d 75 73 74 20 6d 61 74  | of.regexps..Each.regexp.must.mat | 
| 7a00 |  63 68 20 74 68 65 20 63 61 6e 64 69 64 61 74 65    20 69 6e 20 6f 72 64 65 72 20 66 6f 72 20 61 20  | ch.the.candidate.in.order.for.a. | 
| 7a20 |  63 61 6e 64 69 64 61 74 65 20 74 6f 0a 6d 61 74    63 68 20 74 68 65 20 51 55 45 52 59 2e 0a 0a 49  | candidate.to.match.the.QUERY...I | 
| 7a40 |  66 20 57 49 54 48 2d 47 52 4f 55 50 20 69 73 20    6e 6f 6e 2d 6e 69 6c 2c 20 65 6e 63 6c 6f 73 65  | f.WITH-GROUP.is.non-nil,.enclose | 
| 7a60 |  20 74 68 65 20 69 6e 69 74 69 61 6c 73 20 69 6e    20 69 6e 69 74 69 61 6c 69 73 6d 73 0a 77 69 74  | .the.initials.in.initialisms.wit | 
| 7a80 |  68 20 63 61 70 74 75 72 65 20 67 72 6f 75 70 73    2e 20 49 66 20 69 74 20 69 73 20 74 68 65 20 73  | h.capture.groups..If.it.is.the.s | 
| 7aa0 |  79 6d 62 6f 6c 20 60 61 6c 6c 27 2c 20 61 64 64    69 74 69 6f 6e 61 6c 6c 79 0a 65 6e 63 6c 6f 73  | ymbol.`all',.additionally.enclos | 
| 7ac0 |  65 20 6c 69 74 65 72 61 6c 20 73 75 62 73 74 72    69 6e 67 73 20 77 69 74 68 20 63 61 70 74 75 72  | e.literal.substrings.with.captur | 
| 7ae0 |  65 20 67 72 6f 75 70 73 2e 0a 0a 42 79 20 64 65    66 61 75 6c 74 2c 20 74 68 69 73 20 66 75 6e 63  | e.groups...By.default,.this.func | 
| 7b00 |  74 69 6f 6e 20 72 65 74 75 72 6e 73 20 61 20 6c    69 73 74 20 63 6f 6e 74 61 69 6e 69 6e 67 20 6f  | tion.returns.a.list.containing.o | 
| 7b20 |  6e 65 20 72 65 67 65 78 70 0a 66 6f 72 20 65 61    63 68 20 73 70 61 63 65 2d 73 65 70 61 72 61 74  | ne.regexp.for.each.space-separat | 
| 7b40 |  65 64 20 73 75 62 2d 71 75 65 72 79 20 69 6e 20    51 55 45 52 59 2c 20 69 6e 20 77 68 69 63 68 20  | ed.sub-query.in.QUERY,.in.which. | 
| 7b60 |  65 61 63 68 0a 73 75 62 2d 71 75 65 72 79 27 73    20 72 65 67 65 78 70 20 69 73 20 61 20 63 6f 6d  | each.sub-query's.regexp.is.a.com | 
| 7b80 |  62 69 6e 61 74 69 6f 6e 20 6f 66 20 74 68 65 20    72 65 67 65 78 70 73 20 70 72 6f 64 75 63 65 64  | bination.of.the.regexps.produced | 
| 7ba0 |  20 62 79 0a 74 68 65 20 66 69 6c 74 65 72 20 6d    65 74 68 6f 64 73 20 66 6f 72 20 74 68 61 74 20  | .by.the.filter.methods.for.that. | 
| 7bc0 |  73 75 62 2d 71 75 65 72 79 2c 20 6a 6f 69 6e 65    64 20 62 79 20 5c 22 5c 5c 7c 5c 22 2e 20 49 66  | sub-query,.joined.by.\"\\|\"..If | 
| 7be0 |  0a 53 45 50 41 52 41 54 45 44 20 69 73 20 6e 6f    6e 2d 6e 69 6c 2c 20 74 68 69 73 20 66 75 6e 63  | .SEPARATED.is.non-nil,.this.func | 
| 7c00 |  74 69 6f 6e 20 69 6e 73 74 65 61 64 20 72 65 74    75 72 6e 73 20 61 20 6c 69 73 74 20 6f 66 20 61  | tion.instead.returns.a.list.of.a | 
| 7c20 |  6c 6c 0a 72 65 67 65 78 70 73 20 70 72 6f 64 75    63 65 64 20 62 79 20 74 68 65 20 66 69 6c 74 65  | ll.regexps.produced.by.the.filte | 
| 7c40 |  72 20 6d 65 74 68 6f 64 73 2c 20 77 69 74 68 6f    75 74 20 63 6f 6d 62 69 6e 69 6e 67 20 74 68 65  | r.methods,.without.combining.the | 
| 7c60 |  6d 0a 69 6e 74 6f 20 61 20 73 69 6e 67 6c 65 20    72 65 67 65 78 70 20 66 6f 72 20 65 61 63 68 20  | m.into.a.single.regexp.for.each. | 
| 7c80 |  73 75 62 2d 71 75 65 72 79 2e 22 0a 20 20 28 6c    65 74 20 28 28 6c 69 73 74 2d 6f 66 2d 6c 69 73  | sub-query."...(let.((list-of-lis | 
| 7ca0 |  74 73 0a 20 20 20 20 20 20 20 20 20 28 63 6c 2d    6c 6f 6f 70 0a 20 20 20 20 20 20 20 20 20 20 77  | ts..........(cl-loop...........w | 
| 7cc0 |  69 74 68 20 66 69 6c 74 65 72 2d 6d 65 74 68 6f    64 73 0a 20 20 20 20 20 20 20 20 20 20 3d 20 28  | ith.filter-methods...........=.( | 
| 7ce0 |  70 63 61 73 65 20 28 69 66 20 28 66 75 6e 63 74    69 6f 6e 70 20 70 72 65 73 63 69 65 6e 74 2d 66  | pcase.(if.(functionp.prescient-f | 
| 7d00 |  69 6c 74 65 72 2d 6d 65 74 68 6f 64 29 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ilter-method)................... | 
| 7d20 |  20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 70 72    65 73 63 69 65 6e 74 2d 66 69 6c 74 65 72 2d 6d  | .....(funcall.prescient-filter-m | 
| 7d40 |  65 74 68 6f 64 29 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 70 72 65 73  | ethod)......................pres | 
| 7d60 |  63 69 65 6e 74 2d 66 69 6c 74 65 72 2d 6d 65 74    68 6f 64 29 0a 20 20 20 20 20 20 20 20 20 20 20  | cient-filter-method)............ | 
| 7d80 |  20 20 20 3b 3b 20 57 65 20 73 75 70 70 6f 72 74    20 60 6c 69 74 65 72 61 6c 2b 69 6e 69 74 69 61  | ...;;.We.support.`literal+initia | 
| 7da0 |  6c 69 73 6d 27 20 66 6f 72 20 62 61 63 6b 77 61    72 64 73 0a 20 20 20 20 20 20 20 20 20 20 20 20  | lism'.for.backwards............. | 
| 7dc0 |  20 20 3b 3b 20 63 6f 6d 70 61 74 69 62 69 6c 69    74 79 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20  | ..;;.compatibility.............. | 
| 7de0 |  20 20 28 60 6c 69 74 65 72 61 6c 2b 69 6e 69 74    69 61 6c 69 73 6d 20 27 28 6c 69 74 65 72 61 6c  | ..(`literal+initialism.'(literal | 
| 7e00 |  20 69 6e 69 74 69 61 6c 69 73 6d 29 29 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 28 28 61 6e  | .initialism))...............((an | 
| 7e20 |  64 20 28 70 72 65 64 20 6c 69 73 74 70 29 20 78    29 20 78 29 0a 20 20 20 20 20 20 20 20 20 20 20  | d.(pred.listp).x).x)............ | 
| 7e40 |  20 20 20 28 78 20 28 6c 69 73 74 20 78 29 29 29    0a 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 73  | ...(x.(list.x)))...........for.s | 
| 7e60 |  75 62 71 75 65 72 79 20 69 6e 20 28 70 72 65 73    63 69 65 6e 74 2d 73 70 6c 69 74 2d 71 75 65 72  | ubquery.in.(prescient-split-quer | 
| 7e80 |  79 20 71 75 65 72 79 29 0a 20 20 20 20 20 20 20    20 20 20 66 6f 72 20 73 75 62 71 75 65 72 79 2d  | y.query)...........for.subquery- | 
| 7ea0 |  6e 75 6d 62 65 72 20 66 72 6f 6d 20 30 0a 20 20    20 20 20 20 20 20 20 20 63 6f 6c 6c 65 63 74 0a  | number.from.0...........collect. | 
| 7ec0 |  20 20 20 20 20 20 20 20 20 20 28 63 6c 2d 6c 6f    6f 70 20 77 69 74 68 20 74 65 6d 70 2d 72 65 67  | ..........(cl-loop.with.temp-reg | 
| 7ee0 |  65 78 70 20 3d 20 6e 69 6c 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72  | exp.=.nil....................for | 
| 7f00 |  20 6d 65 74 68 6f 64 20 69 6e 20 66 69 6c 74 65    72 2d 6d 65 74 68 6f 64 73 0a 20 20 20 20 20 20  | .method.in.filter-methods....... | 
| 7f20 |  20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72    20 66 75 6e 63 20 3d 20 28 61 6c 69 73 74 2d 67  | .............for.func.=.(alist-g | 
| 7f40 |  65 74 20 6d 65 74 68 6f 64 20 70 72 65 73 63 69    65 6e 74 2d 66 69 6c 74 65 72 2d 61 6c 69 73 74  | et.method.prescient-filter-alist | 
| 7f60 |  29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 69 66 20 28 6e 75 6c 6c 20 66 75  | )....................if.(null.fu | 
| 7f80 |  6e 63 29 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 64 6f 20 28 6d 65 73 73 61  | nc)....................do.(messa | 
| 7fa0 |  67 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 22 4e 6f 20 66 75  | ge........................"No.fu | 
| 7fc0 |  6e 63 74 69 6f 6e 20 69 6e 20 60 70 72 65 73 63    69 65 6e 74 2d 66 69 6c 74 65 72 2d 61 6c 69 73  | nction.in.`prescient-filter-alis | 
| 7fe0 |  74 27 20 66 6f 72 20 6d 65 74 68 6f 64 3a 20 25    73 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | t'.for.method:.%s".............. | 
| 8000 |  20 20 20 20 20 20 20 20 20 20 6d 65 74 68 6f 64    29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ..........method)............... | 
| 8020 |  20 20 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20  | .....else....................;;. | 
| 8040 |  43 61 6e 27 74 20 75 73 65 20 22 66 6f 72 20 3d    22 20 68 65 72 65 2e 0a 20 20 20 20 20 20 20 20  | Can't.use."for.=".here.......... | 
| 8060 |  20 20 20 20 20 20 20 20 20 20 20 64 6f 20 28 73    65 74 71 20 74 65 6d 70 2d 72 65 67 65 78 70 0a  | ...........do.(setq.temp-regexp. | 
| 8080 |  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 20 28 66 75 6e  | ............................(fun | 
| 80a0 |  63 61 6c 6c 20 66 75 6e 63 20 73 75 62 71 75 65    72 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | call.func.subquery.............. | 
| 80c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 3a 77 69 74 68 2d 67 72  | ........................:with-gr | 
| 80e0 |  6f 75 70 20 77 69 74 68 2d 67 72 6f 75 70 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | oup.with-group.................. | 
| 8100 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 3a 73 75 62 71 75 65 72 79 2d 6e 75  | ....................:subquery-nu | 
| 8120 |  6d 62 65 72 20 73 75 62 71 75 65 72 79 2d 6e 75    6d 62 65 72 29 29 0a 20 20 20 20 20 20 20 20 20  | mber.subquery-number)).......... | 
| 8140 |  20 20 20 20 20 20 20 20 20 20 61 6e 64 20 69 66    20 74 65 6d 70 2d 72 65 67 65 78 70 20 63 6f 6c  | ..........and.if.temp-regexp.col | 
| 8160 |  6c 65 63 74 20 74 65 6d 70 2d 72 65 67 65 78 70    20 65 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20  | lect.temp-regexp.end............ | 
| 8180 |  20 20 20 20 20 20 20 20 65 6e 64 29 29 29 29 0a    20 20 20 20 28 69 66 20 73 65 70 61 72 61 74 65  | ........end)))).....(if.separate | 
| 81a0 |  64 0a 20 20 20 20 20 20 20 20 28 61 70 70 6c 79    20 23 27 61 70 70 65 6e 64 20 6c 69 73 74 2d 6f  | d.........(apply.#'append.list-o | 
| 81c0 |  66 2d 6c 69 73 74 73 29 0a 20 20 20 20 20 20 28    6d 61 70 63 61 72 20 28 6c 61 6d 62 64 61 20 28  | f-lists).......(mapcar.(lambda.( | 
| 81e0 |  6c 69 73 74 29 20 28 73 74 72 69 6e 67 2d 6a 6f    69 6e 20 6c 69 73 74 20 22 5c 5c 7c 22 29 29 0a  | list).(string-join.list."\\|")). | 
| 8200 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 69    73 74 2d 6f 66 2d 6c 69 73 74 73 29 29 29 29 0a  | ..............list-of-lists)))). | 
| 8220 |  0a 3b 3b 3b 23 23 23 61 75 74 6f 6c 6f 61 64 0a    28 64 65 66 75 6e 20 70 72 65 73 63 69 65 6e 74  | .;;;###autoload.(defun.prescient | 
| 8240 |  2d 66 69 6c 74 65 72 20 28 71 75 65 72 79 20 63    61 6e 64 69 64 61 74 65 73 20 26 6f 70 74 69 6f  | -filter.(query.candidates.&optio | 
| 8260 |  6e 61 6c 20 70 72 65 64 29 0a 20 20 22 55 73 65    20 51 55 45 52 59 20 74 6f 20 66 69 6c 74 65 72  | nal.pred)..."Use.QUERY.to.filter | 
| 8280 |  20 6c 69 73 74 20 6f 66 20 43 41 4e 44 49 44 41    54 45 53 2e 0a 0a 43 41 4e 44 49 44 41 54 45 53  | .list.of.CANDIDATES...CANDIDATES | 
| 82a0 |  20 69 73 20 61 20 63 6f 6d 70 6c 65 74 69 6f 6e    20 74 61 62 6c 65 2c 20 73 75 63 68 20 61 73 20  | .is.a.completion.table,.such.as. | 
| 82c0 |  61 20 6c 69 73 74 20 6f 66 20 73 74 72 69 6e 67    73 0a 6f 72 20 61 20 66 75 6e 63 74 69 6f 6e 20  | a.list.of.strings.or.a.function. | 
| 82e0 |  61 73 20 64 65 66 69 6e 65 64 20 69 6e 20 74 68    65 20 49 6e 66 6f 20 6e 6f 64 65 0a 60 28 65 6c  | as.defined.in.the.Info.node.`(el | 
| 8300 |  69 73 70 29 50 72 6f 67 72 61 6d 6d 65 64 20 43    6f 6d 70 6c 65 74 69 6f 6e 27 2e 0a 0a 51 55 45  | isp)Programmed.Completion'...QUE | 
| 8320 |  52 59 20 69 73 20 61 20 73 74 72 69 6e 67 20 63    6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 73 75  | RY.is.a.string.containing.the.su | 
| 8340 |  62 2d 71 75 65 72 69 65 73 2c 20 77 68 69 63 68    20 61 72 65 20 67 6f 74 74 65 6e 0a 75 73 69 6e  | b-queries,.which.are.gotten.usin | 
| 8360 |  67 20 60 70 72 65 73 63 69 65 6e 74 2d 73 70 6c    69 74 2d 71 75 65 72 79 27 2e 20 45 61 63 68 20  | g.`prescient-split-query'..Each. | 
| 8380 |  73 75 62 2d 71 75 65 72 79 20 69 73 20 75 73 65    64 20 74 6f 20 70 72 6f 64 75 63 65 0a 61 20 72  | sub-query.is.used.to.produce.a.r | 
| 83a0 |  65 67 75 6c 61 72 20 65 78 70 72 65 73 73 69 6f    6e 20 61 63 63 6f 72 64 69 6e 67 20 74 6f 20 74  | egular.expression.according.to.t | 
| 83c0 |  68 65 20 66 69 6c 74 65 72 20 6d 65 74 68 6f 64    73 20 6c 69 73 74 65 64 20 69 6e 0a 60 70 72 65  | he.filter.methods.listed.in.`pre | 
| 83e0 |  73 63 69 65 6e 74 2d 66 69 6c 74 65 72 2d 6d 65    74 68 6f 64 27 2e 20 41 20 63 61 6e 64 69 64 61  | scient-filter-method'..A.candida | 
| 8400 |  74 65 20 6d 75 73 74 20 6d 61 74 63 68 20 65 76    65 72 79 20 72 65 67 75 6c 61 72 0a 65 78 70 72  | te.must.match.every.regular.expr | 
| 8420 |  65 73 73 69 6f 6e 20 6d 61 64 65 20 66 72 6f 6d    20 74 68 65 20 73 75 62 2d 71 75 65 72 69 65 73  | ession.made.from.the.sub-queries | 
| 8440 |  20 74 6f 20 62 65 20 69 6e 63 6c 75 64 65 64 20    69 6e 20 74 68 65 20 6c 69 73 74 0a 6f 66 20 72  | .to.be.included.in.the.list.of.r | 
| 8460 |  65 74 75 72 6e 65 64 20 63 61 6e 64 69 64 61 74    65 73 2e 0a 0a 50 52 45 44 20 69 73 20 74 68 65  | eturned.candidates...PRED.is.the | 
| 8480 |  20 70 72 65 64 69 63 61 74 65 20 75 73 65 64 20    77 69 74 68 20 74 68 65 20 63 6f 6d 70 6c 65 74  | .predicate.used.with.the.complet | 
| 84a0 |  69 6f 6e 20 74 61 62 6c 65 2c 20 61 73 0a 64 65    73 63 72 69 62 65 64 20 69 6e 20 74 68 65 20 61  | ion.table,.as.described.in.the.a | 
| 84c0 |  62 6f 76 65 20 49 6e 66 6f 20 6e 6f 64 65 2e 0a    0a 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 64  | bove.Info.node...This.function.d | 
| 84e0 |  6f 65 73 20 6e 6f 74 20 6d 6f 64 69 66 79 20 43    41 4e 44 49 44 41 54 45 53 3b 20 69 74 20 61 6c  | oes.not.modify.CANDIDATES;.it.al | 
| 8500 |  77 61 79 73 20 6d 61 6b 65 20 61 20 6e 65 77 0a    63 6f 70 79 20 6f 66 20 74 68 65 20 6c 69 73 74  | ways.make.a.new.copy.of.the.list | 
| 8520 |  2e 22 0a 20 20 28 70 63 61 73 65 2d 6c 65 74 2a    0a 20 20 20 20 20 20 28 28 60 28 2c 70 72 65 66  | ."...(pcase-let*.......((`(,pref | 
| 8540 |  69 78 20 2e 20 2c 70 61 74 74 65 72 6e 29 0a 20    20 20 20 20 20 20 20 28 70 72 65 73 63 69 65 6e  | ix...,pattern).........(prescien | 
| 8560 |  74 2d 2d 70 72 65 66 69 78 2d 61 6e 64 2d 70 61    74 74 65 72 6e 20 71 75 65 72 79 20 63 61 6e 64  | t--prefix-and-pattern.query.cand | 
| 8580 |  69 64 61 74 65 73 20 70 72 65 64 29 29 0a 20 20    20 20 20 20 20 28 63 6f 6d 70 6c 65 74 69 6f 6e  | idates.pred))........(completion | 
| 85a0 |  2d 72 65 67 65 78 70 2d 6c 69 73 74 20 28 70 72    65 73 63 69 65 6e 74 2d 66 69 6c 74 65 72 2d 72  | -regexp-list.(prescient-filter-r | 
| 85c0 |  65 67 65 78 70 73 20 70 61 74 74 65 72 6e 29 29    0a 20 20 20 20 20 20 20 28 63 6f 6d 70 6c 65 74  | egexps.pattern))........(complet | 
| 85e0 |  69 6f 6e 2d 69 67 6e 6f 72 65 2d 63 61 73 65 20    28 70 72 65 73 63 69 65 6e 74 2d 69 67 6e 6f 72  | ion-ignore-case.(prescient-ignor | 
| 8600 |  65 2d 63 61 73 65 2d 70 20 70 61 74 74 65 72 6e    29 29 29 0a 0a 20 20 20 20 3b 3b 20 41 64 64 20  | e-case-p.pattern)))......;;.Add. | 
| 8620 |  69 6e 66 6f 72 6d 61 74 69 6f 6e 20 66 6f 72 20    60 70 72 65 73 63 69 65 6e 74 2d 73 6f 72 74 2d  | information.for.`prescient-sort- | 
| 8640 |  66 75 6c 6c 2d 6d 61 74 63 68 65 73 2d 66 69 72    73 74 27 2e 20 57 65 0a 20 20 20 20 3b 3b 20 77  | full-matches-first'..We.....;;.w | 
| 8660 |  61 6e 74 20 74 6f 20 61 64 64 20 74 68 65 73 65    20 70 72 6f 70 65 72 74 69 65 73 20 65 76 65 6e  | ant.to.add.these.properties.even | 
| 8680 |  20 69 66 20 77 65 20 63 61 6e 27 74 20 6d 6f 64    69 66 79 20 74 61 62 6c 65 0a 20 20 20 20 3b 3b  | .if.we.can't.modify.table.....;; | 
| 86a0 |  20 6d 65 74 61 64 61 74 61 2c 20 73 69 6e 63 65    20 61 20 75 73 65 72 20 6d 69 67 68 74 20 62 65  | .metadata,.since.a.user.might.be | 
| 86c0 |  20 61 62 6c 65 20 74 6f 20 63 6f 6e 66 69 67 75    72 65 20 74 68 65 69 72 0a 20 20 20 20 3b 3b 20  | .able.to.configure.their.....;;. | 
| 86e0 |  63 6f 6d 70 6c 65 74 69 6f 6e 20 55 49 20 77 69    74 68 20 61 20 63 75 73 74 6f 6d 20 73 6f 72 74  | completion.UI.with.a.custom.sort | 
| 8700 |  69 6e 67 20 66 75 6e 63 74 69 6f 6e 20 74 68 61    74 20 77 6f 75 6c 64 20 75 73 65 0a 20 20 20 20  | ing.function.that.would.use..... | 
| 8720 |  3b 3b 20 74 68 69 73 20 69 6e 66 6f 2e 0a 20 20    20 20 3b 3b 0a 20 20 20 20 3b 3b 20 54 68 65 72  | ;;.this.info......;;.....;;.Ther | 
| 8740 |  65 20 69 73 20 61 20 71 75 65 73 74 69 6f 6e 20    6f 66 20 68 6f 77 20 74 6f 20 68 61 6e 64 6c 65  | e.is.a.question.of.how.to.handle | 
| 8760 |  20 70 72 65 66 69 78 65 73 20 66 6f 72 20 69 64    65 6e 74 69 66 79 69 6e 67 0a 20 20 20 20 3b 3b  | .prefixes.for.identifying.....;; | 
| 8780 |  20 66 75 6c 6c 79 20 6d 61 74 63 68 65 64 20 63    61 6e 64 69 64 61 74 65 73 2e 20 50 72 65 66 69  | .fully.matched.candidates..Prefi | 
| 87a0 |  78 65 73 20 61 72 65 20 75 73 65 64 20 69 6e 3a    0a 20 20 20 20 3b 3b 0a 20 20 20 20 3b 3b 20 2d  | xes.are.used.in:.....;;.....;;.- | 
| 87c0 |  20 60 63 6f 6d 70 6c 65 74 69 6e 67 2d 72 65 61    64 2d 6d 75 6c 74 69 70 6c 65 27 2c 20 61 73 20  | .`completing-read-multiple',.as. | 
| 87e0 |  74 68 65 20 63 61 6e 64 69 64 61 74 65 73 20 74    68 61 74 20 68 61 76 65 0a 20 20 20 20 3b 3b 20  | the.candidates.that.have.....;;. | 
| 8800 |  20 20 61 6c 72 65 61 64 79 20 62 65 65 6e 20 73    65 6c 65 63 74 65 64 0a 20 20 20 20 3b 3b 0a 20  | ..already.been.selected.....;;.. | 
| 8820 |  20 20 20 3b 3b 20 2d 20 66 69 6c 65 2d 6e 61 6d    65 20 63 6f 6d 70 6c 65 74 69 6f 6e 2c 20 61 73  | ...;;.-.file-name.completion,.as | 
| 8840 |  20 74 68 65 20 64 69 72 65 63 74 6f 72 79 20 70    72 65 63 65 65 64 69 6e 67 20 74 68 65 20 66 69  | .the.directory.preceeding.the.fi | 
| 8860 |  6c 65 0a 20 20 20 20 3b 3b 20 20 20 6e 61 6d 65    2c 20 74 68 6f 75 67 68 20 74 68 69 73 20 73 65  | le.....;;...name,.though.this.se | 
| 8880 |  65 6d 73 20 74 6f 20 6f 6e 6c 79 20 68 61 70 70    65 6e 20 77 68 65 6e 20 74 68 65 72 65 20 69 73  | ems.to.only.happen.when.there.is | 
| 88a0 |  20 6e 6f 0a 20 20 20 20 3b 3b 20 20 20 6d 61 74    63 68 20 69 6e 20 73 6f 6d 65 20 55 49 73 20 28  | .no.....;;...match.in.some.UIs.( | 
| 88c0 |  49 63 6f 6d 70 6c 65 74 65 2c 20 62 75 74 20 6e    6f 74 20 53 65 6c 65 63 74 72 75 6d 29 0a 20 20  | Icomplete,.but.not.Selectrum)... | 
| 88e0 |  20 20 3b 3b 0a 20 20 20 20 3b 3b 20 49 74 20 6d    69 67 68 74 20 74 75 72 6e 20 6f 75 74 20 74 68  | ..;;.....;;.It.might.turn.out.th | 
| 8900 |  61 74 20 66 6f 72 20 66 69 6c 65 20 6e 61 6d 65    73 20 77 65 20 6e 65 65 64 20 74 6f 20 61 64 6a  | at.for.file.names.we.need.to.adj | 
| 8920 |  75 73 74 20 74 68 65 0a 20 20 20 20 3b 3b 20 72    65 67 65 78 70 73 20 74 6f 20 62 65 20 22 5c 28  | ust.the.....;;.regexps.to.be."\( | 
| 8940 |  3f 3a 51 55 4f 54 45 44 2d 50 52 45 46 49 58 5c    29 4d 45 54 48 4f 44 2d 52 45 47 45 58 50 22 2c  | ?:QUOTED-PREFIX\)METHOD-REGEXP", | 
| 8960 |  20 62 75 74 20 74 68 69 73 0a 20 20 20 20 3b 3b    20 69 73 6e 27 74 20 65 76 69 64 65 6e 74 20 79  | .but.this.....;;.isn't.evident.y | 
| 8980 |  65 74 2e 20 57 65 20 6a 75 73 74 20 64 6f 20 74    68 65 20 62 65 6c 6f 77 20 74 6f 20 62 65 20 70  | et..We.just.do.the.below.to.be.p | 
| 89a0 |  72 6f 61 63 74 69 76 65 2e 0a 20 20 20 20 28 63    6c 2d 66 6c 65 74 20 28 28 6d 61 79 62 65 2d 61  | roactive......(cl-flet.((maybe-a | 
| 89c0 |  64 64 2d 70 72 65 66 69 78 20 28 72 65 67 65 78    70 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  | dd-prefix.(regexps)............. | 
| 89e0 |  20 20 20 20 28 69 66 20 28 61 6e 64 20 28 6e 6f    74 20 28 73 74 72 69 6e 67 2d 65 6d 70 74 79 2d  | ....(if.(and.(not.(string-empty- | 
| 8a00 |  70 20 70 72 65 66 69 78 29 29 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | p.prefix))...................... | 
| 8a20 |  20 20 20 20 6d 69 6e 69 62 75 66 66 65 72 2d 63    6f 6d 70 6c 65 74 69 6e 67 2d 66 69 6c 65 2d 6e  | ....minibuffer-completing-file-n | 
| 8a40 |  61 6d 65 29 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 28 63 6c 2d 6c 6f 6f  | ame).....................(cl-loo | 
| 8a60 |  70 20 66 6f 72 20 72 65 67 65 78 70 20 69 6e 20    72 65 67 65 78 70 73 0a 20 20 20 20 20 20 20 20  | p.for.regexp.in.regexps......... | 
| 8a80 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 63 6f 6c 6c 65 63 74 20 28 63 6f  | .....................collect.(co | 
| 8aa0 |  6e 63 61 74 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 20 20  | ncat............................ | 
| 8ac0 |  20 20 20 20 20 20 20 20 20 20 20 22 5c 5c 28 3f    3a 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | ..........."\\(?:".............. | 
| 8ae0 |  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 72 65 67 65 78 70  | .........................(regexp | 
| 8b00 |  2d 71 75 6f 74 65 20 70 72 65 66 69 78 29 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | -quote.prefix).................. | 
| 8b20 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 22 5c 5c 29 22 0a 20 20 20 20 20  | ....................."\\)"...... | 
| 8b40 |  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 20 20 20 20 20  | ................................ | 
| 8b60 |  20 72 65 67 65 78 70 29 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 72 65 67 65  | .regexp))...................rege | 
| 8b80 |  78 70 73 29 29 29 0a 20 20 20 20 20 20 28 70 72    65 73 63 69 65 6e 74 2d 2d 61 64 64 2d 73 6f 72  | xps))).......(prescient--add-sor | 
| 8ba0 |  74 2d 69 6e 66 6f 0a 20 20 20 20 20 20 20 28 61    6c 6c 2d 63 6f 6d 70 6c 65 74 69 6f 6e 73 20 70  | t-info........(all-completions.p | 
| 8bc0 |  72 65 66 69 78 20 63 61 6e 64 69 64 61 74 65 73    20 70 72 65 64 29 0a 20 20 20 20 20 20 20 3a 70  | refix.candidates.pred)........:p | 
| 8be0 |  72 65 73 63 69 65 6e 74 2d 6d 61 74 63 68 2d 72    65 67 65 78 70 73 20 63 6f 6d 70 6c 65 74 69 6f  | rescient-match-regexps.completio | 
| 8c00 |  6e 2d 72 65 67 65 78 70 2d 6c 69 73 74 0a 20 20    20 20 20 20 20 3a 70 72 65 73 63 69 65 6e 74 2d  | n-regexp-list........:prescient- | 
| 8c20 |  61 6c 6c 2d 72 65 67 65 78 70 73 20 28 6d 61 79    62 65 2d 61 64 64 2d 70 72 65 66 69 78 0a 20 20  | all-regexps.(maybe-add-prefix... | 
| 8c40 |  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 20 20 28 70 72  | .............................(pr | 
| 8c60 |  65 73 63 69 65 6e 74 2d 66 69 6c 74 65 72 2d 72    65 67 65 78 70 73 20 70 61 74 74 65 72 6e 20 6e  | escient-filter-regexps.pattern.n | 
| 8c80 |  69 6c 20 74 29 29 0a 20 20 20 20 20 20 20 3a 70    72 65 73 63 69 65 6e 74 2d 69 67 6e 6f 72 65 2d  | il.t))........:prescient-ignore- | 
| 8ca0 |  63 61 73 65 20 63 6f 6d 70 6c 65 74 69 6f 6e 2d    69 67 6e 6f 72 65 2d 63 61 73 65 0a 20 20 20 20  | case.completion-ignore-case..... | 
| 8cc0 |  20 20 20 3a 70 72 65 73 63 69 65 6e 74 2d 71 75    65 72 79 20 71 75 65 72 79 29 29 29 29 0a 0a 28  | ...:prescient-query.query))))..( | 
| 8ce0 |  64 65 66 6d 61 63 72 6f 20 70 72 65 73 63 69 65    6e 74 2d 2d 73 6f 72 74 2d 63 6f 6d 70 61 72 65  | defmacro.prescient--sort-compare | 
| 8d00 |  20 28 29 0a 20 20 22 48 61 63 6b 20 75 73 65 64    20 74 6f 20 63 61 75 73 65 20 74 68 65 20 62 79  | .()..."Hack.used.to.cause.the.by | 
| 8d20 |  74 65 2d 63 6f 6d 70 69 6c 65 72 20 74 6f 20 70    72 6f 64 75 63 65 20 66 61 73 74 65 72 20 63 6f  | te-compiler.to.produce.faster.co | 
| 8d40 |  64 65 2e 0a 4e 6f 74 65 20 74 68 61 74 20 74 68    69 73 20 6d 61 63 72 6f 20 6d 75 73 74 20 62 65  | de..Note.that.this.macro.must.be | 
| 8d60 |  20 75 73 65 64 20 77 69 74 68 20 73 65 76 65 72    61 6c 20 76 61 72 69 61 62 6c 65 73 20 69 6e 0a  | .used.with.several.variables.in. | 
| 8d80 |  6c 65 78 69 63 61 6c 20 73 63 6f 70 65 2e 22 0a    20 20 60 28 70 72 6f 67 6e 0a 20 20 20 20 20 28  | lexical.scope."...`(progn......( | 
| 8da0 |  6c 65 74 2a 20 28 28 70 31 20 28 67 65 74 68 61    73 68 20 63 31 20 68 69 73 74 20 6c 65 6e 29 29  | let*.((p1.(gethash.c1.hist.len)) | 
| 8dc0 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 28 70 32    20 28 67 65 74 68 61 73 68 20 63 32 20 68 69 73  | .............(p2.(gethash.c2.his | 
| 8de0 |  74 20 6c 65 6e 29 29 29 0a 20 20 20 20 20 20 20    28 6f 72 20 28 3c 20 70 31 20 70 32 29 0a 20 20  | t.len)))........(or.(<.p1.p2)... | 
| 8e00 |  20 20 20 20 20 20 20 20 20 28 61 6e 64 20 28 65    71 20 70 31 20 70 32 29 0a 20 20 20 20 20 20 20  | .........(and.(eq.p1.p2)........ | 
| 8e20 |  20 20 20 20 20 20 20 20 20 28 6c 65 74 2a 20 28    28 66 31 20 28 67 65 74 68 61 73 68 20 63 31 20  | .........(let*.((f1.(gethash.c1. | 
| 8e40 |  66 72 65 71 20 30 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  | freq.0))........................ | 
| 8e60 |  28 66 32 20 28 67 65 74 68 61 73 68 20 63 32 20    66 72 65 71 20 30 29 29 29 0a 20 20 20 20 20 20  | (f2.(gethash.c2.freq.0)))....... | 
| 8e80 |  20 20 20 20 20 20 20 20 20 20 20 20 28 6f 72 20    28 3e 20 66 31 20 66 32 29 0a 20 20 20 20 20 20  | ............(or.(>.f1.f2)....... | 
| 8ea0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    28 61 6e 64 20 28 65 71 20 66 31 20 66 32 29 0a  | ................(and.(eq.f1.f2). | 
| 8ec0 |  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 69 66 20 74  | ...........................(if.t | 
| 8ee0 |  69 65 62 72 65 61 6b 65 72 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | iebreaker....................... | 
| 8f00 |  20 20 20 20 20 20 20 20 20 28 3c 20 28 66 75 6e    63 61 6c 6c 20 74 69 65 62 72 65 61 6b 65 72 20  | .........(<.(funcall.tiebreaker. | 
| 8f20 |  63 31 20 63 32 29 20 30 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | c1.c2).0)....................... | 
| 8f40 |  20 20 20 20 20 20 20 28 61 6e 64 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .......(and..................... | 
| 8f60 |  20 20 20 20 20 20 20 20 20 20 6c 65 6e 2d 65 6e    61 62 6c 65 0a 20 20 20 20 20 20 20 20 20 20 20  | ..........len-enable............ | 
| 8f80 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 28 3c 20 28 6c 65 6e 67 74 68 20 63 31  | ...................(<.(length.c1 | 
| 8fa0 |  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 20 20 20 20 20  | )............................... | 
| 8fc0 |  20 20 20 28 6c 65 6e 67 74 68 20 63 32 29 29 29    29 29 29 29 29 29 29 29 29 0a 0a 28 64 65 66 75  | ...(length.c2))))))))))))..(defu | 
| 8fe0 |  6e 20 70 72 65 73 63 69 65 6e 74 2d 73 6f 72 74    2d 63 6f 6d 70 61 72 65 20 28 63 31 20 63 32 29  | n.prescient-sort-compare.(c1.c2) | 
| 9000 |  0a 20 20 22 43 6f 6d 70 61 72 65 20 63 61 6e 64    69 64 61 74 65 73 20 43 31 20 61 6e 64 20 43 32  | ..."Compare.candidates.C1.and.C2 | 
| 9020 |  20 62 79 20 75 73 61 67 65 20 61 6e 64 20 6c 65    6e 67 74 68 2e 0a 0a 49 66 20 60 70 72 65 73 63  | .by.usage.and.length...If.`presc | 
| 9040 |  69 65 6e 74 2d 70 65 72 73 69 73 74 2d 6d 6f 64    65 27 20 69 73 20 65 6e 61 62 6c 65 64 2c 20 74  | ient-persist-mode'.is.enabled,.t | 
| 9060 |  68 65 6e 20 65 6e 73 75 72 65 20 74 68 61 74 20    75 73 61 67 65 0a 64 61 74 61 20 68 61 73 20 62  | hen.ensure.that.usage.data.has.b | 
| 9080 |  65 65 6e 20 6c 6f 61 64 65 64 20 66 72 6f 6d 20    60 70 72 65 73 63 69 65 6e 74 2d 73 61 76 65 2d  | een.loaded.from.`prescient-save- | 
| 90a0 |  66 69 6c 65 27 20 62 65 66 6f 72 65 20 63 6f 6d    70 61 72 69 6e 67 2e 0a 4c 6f 61 64 69 6e 67 20  | file'.before.comparing..Loading. | 
| 90c0 |  77 69 6c 6c 20 6f 6e 6c 79 20 62 65 20 61 74 74    65 6d 70 74 65 64 20 6f 6e 63 65 2c 20 6e 6f 74  | will.only.be.attempted.once,.not | 
| 90e0 |  20 62 65 66 6f 72 65 20 65 76 65 72 79 0a 63 6f    6d 70 61 72 69 73 6f 6e 2e 0a 0a 49 66 20 60 70  | .before.every.comparison...If.`p | 
| 9100 |  72 65 73 63 69 65 6e 74 2d 73 6f 72 74 2d 6c 65    6e 67 74 68 2d 65 6e 61 62 6c 65 27 20 69 73 20  | rescient-sort-length-enable'.is. | 
| 9120 |  6e 69 6c 2c 20 74 68 65 6e 20 64 6f 20 6e 6f 74    20 73 6f 72 74 20 62 79 0a 6c 65 6e 67 74 68 2e  | nil,.then.do.not.sort.by.length. | 
| 9140 |  22 0a 20 20 28 77 68 65 6e 20 28 61 6e 64 20 70    72 65 73 63 69 65 6e 74 2d 70 65 72 73 69 73 74  | "...(when.(and.prescient-persist | 
| 9160 |  2d 6d 6f 64 65 20 28 6e 6f 74 20 70 72 65 73 63    69 65 6e 74 2d 2d 63 61 63 68 65 2d 6c 6f 61 64  | -mode.(not.prescient--cache-load | 
| 9180 |  65 64 29 29 0a 20 20 20 20 28 70 72 65 73 63 69    65 6e 74 2d 2d 6c 6f 61 64 29 29 0a 20 20 28 6c  | ed)).....(prescient--load))...(l | 
| 91a0 |  65 74 20 28 28 68 69 73 74 20 70 72 65 73 63 69    65 6e 74 2d 2d 68 69 73 74 6f 72 79 29 0a 20 20  | et.((hist.prescient--history)... | 
| 91c0 |  20 20 20 20 20 20 28 6c 65 6e 20 70 72 65 73 63    69 65 6e 74 2d 68 69 73 74 6f 72 79 2d 6c 65 6e  | ......(len.prescient-history-len | 
| 91e0 |  67 74 68 29 0a 20 20 20 20 20 20 20 20 28 66 72    65 71 20 70 72 65 73 63 69 65 6e 74 2d 2d 66 72  | gth).........(freq.prescient--fr | 
| 9200 |  65 71 75 65 6e 63 79 29 0a 20 20 20 20 20 20 20    20 28 6c 65 6e 2d 65 6e 61 62 6c 65 20 70 72 65  | equency).........(len-enable.pre | 
| 9220 |  73 63 69 65 6e 74 2d 73 6f 72 74 2d 6c 65 6e 67    74 68 2d 65 6e 61 62 6c 65 29 0a 20 20 20 20 20  | scient-sort-length-enable)...... | 
| 9240 |  20 20 20 28 74 69 65 62 72 65 61 6b 65 72 20 70    72 65 73 63 69 65 6e 74 2d 74 69 65 62 72 65 61  | ...(tiebreaker.prescient-tiebrea | 
| 9260 |  6b 65 72 29 29 0a 20 20 20 20 28 70 72 65 73 63    69 65 6e 74 2d 2d 73 6f 72 74 2d 63 6f 6d 70 61  | ker)).....(prescient--sort-compa | 
| 9280 |  72 65 29 29 29 0a 0a 28 64 65 66 76 61 72 20 70    72 65 73 63 69 65 6e 74 2d 71 75 65 72 79 20 6e  | re)))..(defvar.prescient-query.n | 
| 92a0 |  69 6c 0a 20 20 22 54 68 65 20 6f 72 69 67 69 6e    61 6c 20 71 75 65 72 79 20 66 72 6f 6d 20 74 68  | il..."The.original.query.from.th | 
| 92c0 |  65 20 75 73 65 72 2c 20 69 66 20 61 76 61 69 6c    61 62 6c 65 2e 0a 59 6f 75 20 63 61 6e 20 75 73  | e.user,.if.available..You.can.us | 
| 92e0 |  65 20 74 68 69 73 20 69 6e 20 79 6f 75 72 20 69    6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66  | e.this.in.your.implementation.of | 
| 9300 |  20 60 70 72 65 73 63 69 65 6e 74 2d 74 69 65 62    72 65 61 6b 65 72 27 0a 74 6f 20 73 6f 72 74 20  | .`prescient-tiebreaker'.to.sort. | 
| 9320 |  63 61 6e 64 69 64 61 74 65 73 20 64 65 70 65 6e    64 69 6e 67 20 6f 6e 20 74 68 65 20 75 73 65 72  | candidates.depending.on.the.user | 
| 9340 |  27 73 20 71 75 65 72 79 2e 20 54 68 69 73 20 6d    69 67 68 74 20 62 65 0a 6e 69 6c 20 69 66 20 60  | 's.query..This.might.be.nil.if.` | 
| 9360 |  70 72 65 73 63 69 65 6e 74 2d 73 6f 72 74 2d 63    6f 6d 70 61 72 65 27 20 69 73 20 69 6e 76 6f 6b  | prescient-sort-compare'.is.invok | 
| 9380 |  65 64 20 64 69 72 65 63 74 6c 79 2c 20 6f 72 20    69 66 0a 60 70 72 65 73 63 69 65 6e 74 2d 73 6f  | ed.directly,.or.if.`prescient-so | 
| 93a0 |  72 74 27 20 69 73 20 69 6e 76 6f 6b 65 64 20 77    69 74 68 6f 75 74 20 60 70 72 65 73 63 69 65 6e  | rt'.is.invoked.without.`prescien | 
| 93c0 |  74 2d 66 69 6c 74 65 72 27 20 68 61 76 69 6e 67    0a 62 65 65 6e 20 72 75 6e 20 66 69 72 73 74 2c  | t-filter'.having.been.run.first, | 
| 93e0 |  20 73 6f 20 79 6f 75 20 73 68 6f 75 6c 64 20 68    61 6e 64 6c 65 20 74 68 61 74 20 63 61 73 65 20  | .so.you.should.handle.that.case. | 
| 9400 |  74 6f 6f 2e 22 29 0a 0a 28 64 65 66 75 6e 20 70    72 65 73 63 69 65 6e 74 2d 73 6f 72 74 20 28 63  | too.")..(defun.prescient-sort.(c | 
| 9420 |  61 6e 64 69 64 61 74 65 73 29 0a 20 20 22 53 6f    72 74 20 43 41 4e 44 49 44 41 54 45 53 20 75 73  | andidates)..."Sort.CANDIDATES.us | 
| 9440 |  69 6e 67 20 66 72 65 71 75 65 6e 63 79 20 64 61    74 61 2e 0a 52 65 74 75 72 6e 20 74 68 65 20 73  | ing.frequency.data..Return.the.s | 
| 9460 |  6f 72 74 65 64 20 6c 69 73 74 2e 20 54 68 65 20    6f 72 69 67 69 6e 61 6c 20 69 73 20 6d 6f 64 69  | orted.list..The.original.is.modi | 
| 9480 |  66 69 65 64 20 64 65 73 74 72 75 63 74 69 76 65    6c 79 2e 0a 0a 53 65 65 20 61 6c 73 6f 20 74 68  | fied.destructively...See.also.th | 
| 94a0 |  65 20 66 75 6e 63 74 69 6f 6e 73 20 60 70 72 65    73 63 69 65 6e 74 2d 73 6f 72 74 2d 66 75 6c 6c  | e.functions.`prescient-sort-full | 
| 94c0 |  2d 6d 61 74 63 68 65 73 2d 66 69 72 73 74 27 20    61 6e 64 0a 60 70 72 65 73 63 69 65 6e 74 2d 63  | -matches-first'.and.`prescient-c | 
| 94e0 |  6f 6d 70 6c 65 74 69 6f 6e 2d 73 6f 72 74 27 2e    20 42 6f 74 68 20 61 72 65 20 6d 65 61 6e 74 20  | ompletion-sort'..Both.are.meant. | 
| 9500 |  74 6f 20 62 65 20 75 73 65 64 20 61 66 74 65 72    0a 60 70 72 65 73 63 69 65 6e 74 2d 66 69 6c 74  | to.be.used.after.`prescient-filt | 
| 9520 |  65 72 27 2e 22 0a 20 20 28 77 68 65 6e 20 28 61    6e 64 20 70 72 65 73 63 69 65 6e 74 2d 70 65 72  | er'."...(when.(and.prescient-per | 
| 9540 |  73 69 73 74 2d 6d 6f 64 65 20 28 6e 6f 74 20 70    72 65 73 63 69 65 6e 74 2d 2d 63 61 63 68 65 2d  | sist-mode.(not.prescient--cache- | 
| 9560 |  6c 6f 61 64 65 64 29 29 0a 20 20 20 20 28 70 72    65 73 63 69 65 6e 74 2d 2d 6c 6f 61 64 29 29 0a  | loaded)).....(prescient--load)). | 
| 9580 |  20 20 3b 3b 20 50 65 72 66 6f 72 6d 61 6e 63 65    20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 20 72 65  | ..;;.Performance.optimization.re | 
| 95a0 |  76 65 61 6c 65 64 20 74 68 61 74 20 72 65 61 64    69 6e 67 20 64 79 6e 61 6d 69 63 20 76 61 72 69  | vealed.that.reading.dynamic.vari | 
| 95c0 |  61 62 6c 65 73 0a 20 20 3b 3b 20 6d 75 6c 74 69    70 6c 65 20 74 69 6d 65 73 20 77 61 73 20 61 20  | ables...;;.multiple.times.was.a. | 
| 95e0 |  62 6f 74 74 6c 65 6e 65 63 6b 20 28 79 65 73 2c    20 72 65 61 6c 6c 79 29 2c 20 61 6e 64 20 62 79  | bottleneck.(yes,.really),.and.by | 
| 9600 |  20 72 65 61 64 69 6e 67 0a 20 20 3b 3b 20 74 68    65 6d 20 69 6e 74 6f 20 6c 65 78 69 63 61 6c 20  | .reading...;;.them.into.lexical. | 
| 9620 |  76 61 72 69 61 62 6c 65 73 20 77 68 69 63 68 20    61 72 65 20 6d 75 63 68 20 66 61 73 74 65 72 20  | variables.which.are.much.faster. | 
| 9640 |  74 6f 20 61 63 63 65 73 73 2c 20 77 65 0a 20 20    3b 3b 20 69 6d 70 72 6f 76 65 20 74 68 65 20 73  | to.access,.we...;;.improve.the.s | 
| 9660 |  70 65 65 64 20 6f 66 20 60 70 72 65 73 63 69 65    6e 74 2d 73 6f 72 74 27 20 6f 6e 20 6c 61 72 67  | peed.of.`prescient-sort'.on.larg | 
| 9680 |  65 20 63 61 6e 64 69 64 61 74 65 20 6c 69 73 74    73 20 62 79 0a 20 20 3b 3b 20 32 78 2e 0a 20 20  | e.candidate.lists.by...;;.2x.... | 
| 96a0 |  28 6c 65 74 20 28 28 68 69 73 74 20 70 72 65 73    63 69 65 6e 74 2d 2d 68 69 73 74 6f 72 79 29 0a  | (let.((hist.prescient--history). | 
| 96c0 |  20 20 20 20 20 20 20 20 28 6c 65 6e 20 70 72 65    73 63 69 65 6e 74 2d 68 69 73 74 6f 72 79 2d 6c  | ........(len.prescient-history-l | 
| 96e0 |  65 6e 67 74 68 29 0a 20 20 20 20 20 20 20 20 28    66 72 65 71 20 70 72 65 73 63 69 65 6e 74 2d 2d  | ength).........(freq.prescient-- | 
| 9700 |  66 72 65 71 75 65 6e 63 79 29 0a 20 20 20 20 20    20 20 20 28 6c 65 6e 2d 65 6e 61 62 6c 65 20 70  | frequency).........(len-enable.p | 
| 9720 |  72 65 73 63 69 65 6e 74 2d 73 6f 72 74 2d 6c 65    6e 67 74 68 2d 65 6e 61 62 6c 65 29 0a 20 20 20  | rescient-sort-length-enable).... | 
| 9740 |  20 20 20 20 20 28 74 69 65 62 72 65 61 6b 65 72    20 70 72 65 73 63 69 65 6e 74 2d 74 69 65 62 72  | .....(tiebreaker.prescient-tiebr | 
| 9760 |  65 61 6b 65 72 29 0a 20 20 20 20 20 20 20 20 28    70 72 65 73 63 69 65 6e 74 2d 71 75 65 72 79 20  | eaker).........(prescient-query. | 
| 9780 |  28 70 6c 69 73 74 2d 67 65 74 20 28 70 72 65 73    63 69 65 6e 74 2d 2d 67 65 74 2d 73 6f 72 74 2d  | (plist-get.(prescient--get-sort- | 
| 97a0 |  69 6e 66 6f 20 63 61 6e 64 69 64 61 74 65 73 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | info.candidates)................ | 
| 97c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 3a 70 72 65 73 63 69 65 6e 74 2d  | .....................:prescient- | 
| 97e0 |  71 75 65 72 79 29 29 29 0a 20 20 20 20 28 73 6f    72 74 0a 20 20 20 20 20 63 61 6e 64 69 64 61 74  | query))).....(sort......candidat | 
| 9800 |  65 73 0a 20 20 20 20 20 28 6c 61 6d 62 64 61 20    28 63 31 20 63 32 29 0a 20 20 20 20 20 20 20 28  | es......(lambda.(c1.c2)........( | 
| 9820 |  70 72 65 73 63 69 65 6e 74 2d 2d 73 6f 72 74 2d    63 6f 6d 70 61 72 65 29 29 29 29 29 0a 0a 28 64  | prescient--sort-compare)))))..(d | 
| 9840 |  65 66 75 6e 20 70 72 65 73 63 69 65 6e 74 2d 73    6f 72 74 2d 66 75 6c 6c 2d 6d 61 74 63 68 65 73  | efun.prescient-sort-full-matches | 
| 9860 |  2d 66 69 72 73 74 20 28 63 61 6e 64 69 64 61 74    65 73 20 72 65 67 65 78 70 73 20 69 67 6e 6f 72  | -first.(candidates.regexps.ignor | 
| 9880 |  65 2d 63 61 73 65 29 0a 20 20 22 53 6f 72 74 20    66 75 6c 6c 79 20 6d 61 74 63 68 65 64 20 73 74  | e-case)..."Sort.fully.matched.st | 
| 98a0 |  72 69 6e 67 73 20 69 6e 20 43 41 4e 44 49 44 41    54 45 53 20 62 65 66 6f 72 65 20 6f 74 68 65 72  | rings.in.CANDIDATES.before.other | 
| 98c0 |  20 63 61 6e 64 69 64 61 74 65 73 2e 0a 0a 52 45    47 45 58 50 53 20 61 72 65 20 74 68 65 20 72 65  | .candidates...REGEXPS.are.the.re | 
| 98e0 |  67 65 78 70 73 20 70 72 65 73 63 69 65 6e 74 2e    65 6c 20 75 73 65 64 20 74 6f 20 66 69 6c 74 65  | gexps.prescient.el.used.to.filte | 
| 9900 |  72 20 74 68 65 20 63 61 6e 64 69 64 61 74 65 73    2e 0a 49 47 4e 4f 52 45 2d 43 41 53 45 20 69 73  | r.the.candidates..IGNORE-CASE.is | 
| 9920 |  20 77 68 65 74 68 65 72 20 63 61 73 65 20 77 61    73 20 69 67 6e 6f 72 65 64 20 77 68 65 6e 20 66  | .whether.case.was.ignored.when.f | 
| 9940 |  69 6c 74 65 72 69 6e 67 2e 0a 0a 41 73 20 74 68    69 73 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 6d  | iltering...As.this.function.is.m | 
| 9960 |  65 61 6e 74 20 74 6f 20 62 65 20 75 73 65 64 20    61 66 74 65 72 20 66 69 6c 74 65 72 69 6e 67 2c  | eant.to.be.used.after.filtering, | 
| 9980 |  20 61 6c 6c 20 6f 66 20 74 68 65 0a 63 61 6e 64    69 64 61 74 65 73 20 69 6e 20 43 41 4e 44 49 44  | .all.of.the.candidates.in.CANDID | 
| 99a0 |  41 54 45 53 20 73 68 6f 75 6c 64 20 6d 61 74 63    68 20 61 6c 6c 20 6f 66 20 74 68 65 20 72 65 67  | ATES.should.match.all.of.the.reg | 
| 99c0 |  65 78 70 73 20 69 6e 0a 52 45 47 45 58 50 53 2e    22 0a 20 20 28 63 6f 6e 64 0a 20 20 20 28 28 6e  | exps.in.REGEXPS."...(cond....((n | 
| 99e0 |  75 6c 6c 20 63 61 6e 64 69 64 61 74 65 73 29 20    6e 69 6c 29 0a 20 20 20 28 28 6e 75 6c 6c 20 72  | ull.candidates).nil)....((null.r | 
| 9a00 |  65 67 65 78 70 73 29 20 63 61 6e 64 69 64 61 74    65 73 29 0a 20 20 20 28 74 20 28 73 61 76 65 2d  | egexps).candidates)....(t.(save- | 
| 9a20 |  6d 61 74 63 68 2d 64 61 74 61 0a 20 20 20 20 20    20 20 20 28 63 6c 2d 6c 6f 6f 70 0a 20 20 20 20  | match-data.........(cl-loop..... | 
| 9a40 |  20 20 20 20 20 77 69 74 68 20 70 72 69 6f 72 69    74 69 7a 65 64 2d 63 61 6e 64 69 64 61 74 65 73  | .....with.prioritized-candidates | 
| 9a60 |  20 3d 20 6e 69 6c 0a 20 20 20 20 20 20 20 20 20    61 6e 64 20 72 65 6d 61 69 6e 69 6e 67 2d 63 61  | .=.nil..........and.remaining-ca | 
| 9a80 |  6e 64 69 64 61 74 65 73 20 3d 20 6e 69 6c 0a 20    20 20 20 20 20 20 20 20 61 6e 64 20 63 61 73 65  | ndidates.=.nil..........and.case | 
| 9aa0 |  2d 66 6f 6c 64 2d 73 65 61 72 63 68 20 3d 20 69    67 6e 6f 72 65 2d 63 61 73 65 0a 20 20 20 20 20  | -fold-search.=.ignore-case...... | 
| 9ac0 |  20 20 20 20 66 6f 72 20 63 61 6e 64 20 69 6e 20    63 61 6e 64 69 64 61 74 65 73 0a 20 20 20 20 20  | ....for.cand.in.candidates...... | 
| 9ae0 |  20 20 20 20 69 66 20 28 63 6c 2d 6c 6f 6f 70 20    66 6f 72 20 72 65 67 65 78 70 20 69 6e 20 72 65  | ....if.(cl-loop.for.regexp.in.re | 
| 9b00 |  67 65 78 70 73 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 74 68 65 72 65  | gexps......................there | 
| 9b20 |  69 73 20 28 61 6e 64 20 28 73 74 72 69 6e 67 2d    6d 61 74 63 68 20 72 65 67 65 78 70 20 63 61 6e  | is.(and.(string-match.regexp.can | 
| 9b40 |  64 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 20 20 20 20  | d).............................. | 
| 9b60 |  20 20 20 20 20 28 3d 20 28 6c 65 6e 67 74 68 20    63 61 6e 64 29 0a 20 20 20 20 20 20 20 20 20 20  | .....(=.(length.cand)........... | 
| 9b80 |  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 2d 20 28 6d  | ...........................(-.(m | 
| 9ba0 |  61 74 63 68 2d 65 6e 64 20 30 29 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | atch-end.0)..................... | 
| 9bc0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 28 6d 61 74 63 68 2d 62 65 67 69 6e  | ....................(match-begin | 
| 9be0 |  6e 69 6e 67 20 30 29 29 29 29 29 0a 20 20 20 20    20 20 20 20 20 64 6f 20 28 70 75 73 68 20 63 61  | ning.0)))))..........do.(push.ca | 
| 9c00 |  6e 64 20 70 72 69 6f 72 69 74 69 7a 65 64 2d 63    61 6e 64 69 64 61 74 65 73 29 0a 20 20 20 20 20  | nd.prioritized-candidates)...... | 
| 9c20 |  20 20 20 20 65 6c 73 65 20 64 6f 20 28 70 75 73    68 20 63 61 6e 64 20 72 65 6d 61 69 6e 69 6e 67  | ....else.do.(push.cand.remaining | 
| 9c40 |  2d 63 61 6e 64 69 64 61 74 65 73 29 0a 20 20 20    20 20 20 20 20 20 66 69 6e 61 6c 6c 79 20 72 65  | -candidates)..........finally.re | 
| 9c60 |  74 75 72 6e 20 28 6e 63 6f 6e 63 20 28 6e 72 65    76 65 72 73 65 20 70 72 69 6f 72 69 74 69 7a 65  | turn.(nconc.(nreverse.prioritize | 
| 9c80 |  64 2d 63 61 6e 64 69 64 61 74 65 73 29 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | d-candidates)................... | 
| 9ca0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 6e 72    65 76 65 72 73 65 20 72 65 6d 61 69 6e 69 6e 67  | .............(nreverse.remaining | 
| 9cc0 |  2d 63 61 6e 64 69 64 61 74 65 73 29 29 29 29 29    29 29 0a 0a 3b 3b 3b 3b 20 43 61 6e 64 69 64 61  | -candidates)))))))..;;;;.Candida | 
| 9ce0 |  74 65 20 73 65 6c 65 63 74 69 6f 6e 0a 0a 28 64    65 66 75 6e 20 70 72 65 73 63 69 65 6e 74 2d 72  | te.selection..(defun.prescient-r | 
| 9d00 |  65 6d 65 6d 62 65 72 20 28 63 61 6e 64 69 64 61    74 65 29 0a 20 20 22 52 65 63 6f 72 64 20 43 41  | emember.(candidate)..."Record.CA | 
| 9d20 |  4e 44 49 44 41 54 45 20 69 6e 20 60 70 72 65 73    63 69 65 6e 74 2d 2d 68 69 73 74 6f 72 79 27 20  | NDIDATE.in.`prescient--history'. | 
| 9d40 |  61 6e 64 20 60 70 72 65 73 63 69 65 6e 74 2d 2d    66 72 65 71 75 65 6e 63 79 27 2e 22 0a 20 20 28  | and.`prescient--frequency'."...( | 
| 9d60 |  73 65 74 71 20 63 61 6e 64 69 64 61 74 65 20 28    73 75 62 73 74 72 69 6e 67 2d 6e 6f 2d 70 72 6f  | setq.candidate.(substring-no-pro | 
| 9d80 |  70 65 72 74 69 65 73 20 63 61 6e 64 69 64 61 74    65 29 29 0a 20 20 3b 3b 20 41 64 64 20 74 6f 20  | perties.candidate))...;;.Add.to. | 
| 9da0 |  60 70 72 65 73 63 69 65 6e 74 2d 2d 68 69 73 74    6f 72 79 27 2e 0a 20 20 28 6c 65 74 20 28 28 74  | `prescient--history'....(let.((t | 
| 9dc0 |  68 69 73 2d 70 6f 73 20 28 67 65 74 68 61 73 68    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | his-pos.(gethash................ | 
| 9de0 |  20 20 20 20 63 61 6e 64 69 64 61 74 65 20 70 72    65 73 63 69 65 6e 74 2d 2d 68 69 73 74 6f 72 79  | ....candidate.prescient--history | 
| 9e00 |  20 70 72 65 73 63 69 65 6e 74 2d 68 69 73 74 6f    72 79 2d 6c 65 6e 67 74 68 29 29 29 0a 20 20 20  | .prescient-history-length))).... | 
| 9e20 |  20 3b 3b 20 49 66 20 74 68 65 20 63 61 6e 64 69    64 61 74 65 20 77 61 73 20 61 6c 72 65 61 64 79  | .;;.If.the.candidate.was.already | 
| 9e40 |  20 69 6e 20 74 68 65 20 68 69 73 74 6f 72 79 2c    20 74 68 65 6e 20 70 72 65 70 61 72 65 20 66 6f  | .in.the.history,.then.prepare.fo | 
| 9e60 |  72 0a 20 20 20 20 3b 3b 20 6d 6f 76 69 6e 67 20    69 74 20 74 6f 20 74 68 65 20 66 72 6f 6e 74 20  | r.....;;.moving.it.to.the.front. | 
| 9e80 |  62 79 20 69 6e 63 72 65 6d 65 6e 74 69 6e 67 20    74 68 65 20 69 6e 64 69 63 65 73 20 6f 66 20 6f  | by.incrementing.the.indices.of.o | 
| 9ea0 |  74 68 65 72 0a 20 20 20 20 3b 3b 20 63 61 6e 64    69 64 61 74 65 73 2e 0a 20 20 20 20 28 6d 61 70  | ther.....;;.candidates......(map | 
| 9ec0 |  68 61 73 68 0a 20 20 20 20 20 28 6c 61 6d 62 64    61 20 28 6f 74 68 65 72 2d 63 61 6e 64 69 64 61  | hash......(lambda.(other-candida | 
| 9ee0 |  74 65 20 6f 74 68 65 72 2d 70 6f 73 29 0a 20 20    20 20 20 20 20 28 63 6f 6e 64 0a 20 20 20 20 20  | te.other-pos)........(cond...... | 
| 9f00 |  20 20 20 3b 3b 20 49 66 20 74 68 65 20 6f 74 68    65 72 20 63 61 6e 64 69 64 61 74 65 20 63 61 6d  | ...;;.If.the.other.candidate.cam | 
| 9f20 |  65 20 65 61 72 6c 69 65 72 20 69 6e 20 74 68 65    20 68 69 73 74 6f 72 79 2c 20 74 68 65 6e 0a 20  | e.earlier.in.the.history,.then.. | 
| 9f40 |  20 20 20 20 20 20 20 3b 3b 20 69 6e 63 72 65 6d    65 6e 74 20 69 74 73 20 69 6e 64 65 78 2e 0a 20  | .......;;.increment.its.index... | 
| 9f60 |  20 20 20 20 20 20 20 28 28 3c 20 6f 74 68 65 72    2d 70 6f 73 20 74 68 69 73 2d 70 6f 73 29 0a 20  | .......((<.other-pos.this-pos).. | 
| 9f80 |  20 20 20 20 20 20 20 20 28 70 75 74 68 61 73 68    20 6f 74 68 65 72 2d 63 61 6e 64 69 64 61 74 65  | ........(puthash.other-candidate | 
| 9fa0 |  20 28 31 2b 20 6f 74 68 65 72 2d 70 6f 73 29 20    70 72 65 73 63 69 65 6e 74 2d 2d 68 69 73 74 6f  | .(1+.other-pos).prescient--histo | 
| 9fc0 |  72 79 29 29 0a 20 20 20 20 20 20 20 20 3b 3b 20    45 6c 73 65 2c 20 69 66 20 69 74 27 73 20 61 6c  | ry)).........;;.Else,.if.it's.al | 
| 9fe0 |  72 65 61 64 79 20 70 61 73 74 20 74 68 65 20 65    6e 64 20 6f 66 20 74 68 65 20 68 69 73 74 6f 72  | ready.past.the.end.of.the.histor | 
| a000 |  79 20 28 74 68 69 73 0a 20 20 20 20 20 20 20 20    3b 3b 20 77 6f 75 6c 64 20 68 61 70 70 65 6e 20  | y.(this.........;;.would.happen. | 
| a020 |  69 66 20 60 70 72 65 73 63 69 65 6e 74 2d 68 69    73 74 6f 72 79 2d 6c 65 6e 67 74 68 27 20 77 65  | if.`prescient-history-length'.we | 
| a040 |  72 65 20 64 65 63 72 65 61 73 65 64 29 2c 0a 20    20 20 20 20 20 20 20 3b 3b 20 6f 72 20 69 66 20  | re.decreased),.........;;.or.if. | 
| a060 |  69 74 27 73 20 61 74 20 74 68 65 20 76 65 72 79    20 65 6e 64 20 61 6e 64 20 61 20 6e 65 77 20 63  | it's.at.the.very.end.and.a.new.c | 
| a080 |  61 6e 64 69 64 61 74 65 20 77 61 73 20 61 64 64    65 64 2c 0a 20 20 20 20 20 20 20 20 3b 3b 20 74  | andidate.was.added,.........;;.t | 
| a0a0 |  68 65 6e 20 72 65 6d 6f 76 65 20 69 74 20 66 72    6f 6d 20 74 68 65 20 68 69 73 74 6f 72 79 2e 0a  | hen.remove.it.from.the.history.. | 
| a0c0 |  20 20 20 20 20 20 20 20 28 28 6f 72 20 28 3e 3d    20 6f 74 68 65 72 2d 70 6f 73 20 70 72 65 73 63  | ........((or.(>=.other-pos.presc | 
| a0e0 |  69 65 6e 74 2d 68 69 73 74 6f 72 79 2d 6c 65 6e    67 74 68 29 0a 20 20 20 20 20 20 20 20 20 20 20  | ient-history-length)............ | 
| a100 |  20 20 28 61 6e 64 20 28 3d 20 6f 74 68 65 72 2d    70 6f 73 20 28 31 2d 20 70 72 65 73 63 69 65 6e  | ..(and.(=.other-pos.(1-.prescien | 
| a120 |  74 2d 68 69 73 74 6f 72 79 2d 6c 65 6e 67 74 68    29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | t-history-length)).............. | 
| a140 |  20 20 20 20 20 28 3d 20 74 68 69 73 2d 70 6f 73    20 70 72 65 73 63 69 65 6e 74 2d 68 69 73 74 6f  | .....(=.this-pos.prescient-histo | 
| a160 |  72 79 2d 6c 65 6e 67 74 68 29 29 29 0a 20 20 20    20 20 20 20 20 20 28 72 65 6d 68 61 73 68 20 6f  | ry-length)))..........(remhash.o | 
| a180 |  74 68 65 72 2d 63 61 6e 64 69 64 61 74 65 20 70    72 65 73 63 69 65 6e 74 2d 2d 68 69 73 74 6f 72  | ther-candidate.prescient--histor | 
| a1a0 |  79 29 29 29 29 0a 20 20 20 20 20 70 72 65 73 63    69 65 6e 74 2d 2d 68 69 73 74 6f 72 79 29 0a 20  | y))))......prescient--history).. | 
| a1c0 |  20 20 20 3b 3b 20 4e 6f 77 20 61 64 64 20 74 68    65 20 6e 65 77 20 63 61 6e 64 69 64 61 74 65 20  | ...;;.Now.add.the.new.candidate. | 
| a1e0 |  74 6f 20 74 68 65 20 62 65 67 69 6e 6e 69 6e 67    2e 0a 20 20 20 20 28 70 75 74 68 61 73 68 20 63  | to.the.beginning......(puthash.c | 
| a200 |  61 6e 64 69 64 61 74 65 20 30 20 70 72 65 73 63    69 65 6e 74 2d 2d 68 69 73 74 6f 72 79 29 29 0a  | andidate.0.prescient--history)). | 
| a220 |  20 20 3b 3b 20 41 64 64 20 74 6f 20 60 70 72 65    73 63 69 65 6e 74 2d 2d 66 72 65 71 75 65 6e 63  | ..;;.Add.to.`prescient--frequenc | 
| a240 |  79 27 2e 0a 20 20 28 70 75 74 68 61 73 68 20 63    61 6e 64 69 64 61 74 65 20 28 31 2b 20 28 67 65  | y'....(puthash.candidate.(1+.(ge | 
| a260 |  74 68 61 73 68 20 63 61 6e 64 69 64 61 74 65 20    70 72 65 73 63 69 65 6e 74 2d 2d 66 72 65 71 75  | thash.candidate.prescient--frequ | 
| a280 |  65 6e 63 79 20 30 29 29 0a 20 20 20 20 20 20 20    20 20 20 20 70 72 65 73 63 69 65 6e 74 2d 2d 66  | ency.0))............prescient--f | 
| a2a0 |  72 65 71 75 65 6e 63 79 29 0a 20 20 3b 3b 20 52    65 6d 6f 76 65 20 6f 6c 64 20 65 6e 74 72 69 65  | requency)...;;.Remove.old.entrie | 
| a2c0 |  73 20 66 72 6f 6d 20 60 70 72 65 73 63 69 65 6e    74 2d 2d 66 72 65 71 75 65 6e 63 79 27 2e 0a 20  | s.from.`prescient--frequency'... | 
| a2e0 |  20 28 6d 61 70 68 61 73 68 20 28 6c 61 6d 62 64    61 20 28 63 61 6e 64 20 6f 6c 64 2d 66 72 65 71  | .(maphash.(lambda.(cand.old-freq | 
| a300 |  29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28    6c 65 74 20 28 28 6e 65 77 2d 66 72 65 71 20 28  | )..............(let.((new-freq.( | 
| a320 |  2a 20 6f 6c 64 2d 66 72 65 71 20 70 72 65 73 63    69 65 6e 74 2d 66 72 65 71 75 65 6e 63 79 2d 64  | *.old-freq.prescient-frequency-d | 
| a340 |  65 63 61 79 29 29 29 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 28 69 66 20 28 3c 20 6e 65  | ecay)))................(if.(<.ne | 
| a360 |  77 2d 66 72 65 71 20 70 72 65 73 63 69 65 6e 74    2d 66 72 65 71 75 65 6e 63 79 2d 74 68 72 65 73  | w-freq.prescient-frequency-thres | 
| a380 |  68 6f 6c 64 29 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 28 72 65 6d 68 61 73  | hold)....................(remhas | 
| a3a0 |  68 20 63 61 6e 64 20 70 72 65 73 63 69 65 6e 74    2d 2d 66 72 65 71 75 65 6e 63 79 29 0a 20 20 20  | h.cand.prescient--frequency).... | 
| a3c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70    75 74 68 61 73 68 20 63 61 6e 64 20 6e 65 77 2d  | ..............(puthash.cand.new- | 
| a3e0 |  66 72 65 71 20 70 72 65 73 63 69 65 6e 74 2d 2d    66 72 65 71 75 65 6e 63 79 29 29 29 29 0a 20 20  | freq.prescient--frequency))))... | 
| a400 |  20 20 20 20 20 20 20 20 20 70 72 65 73 63 69 65    6e 74 2d 2d 66 72 65 71 75 65 6e 63 79 29 0a 20  | .........prescient--frequency).. | 
| a420 |  20 3b 3b 20 55 70 64 61 74 65 20 73 65 72 69 61    6c 20 6e 75 6d 62 65 72 2e 0a 20 20 28 63 6c 2d  | .;;.Update.serial.number....(cl- | 
| a440 |  69 6e 63 66 20 70 72 65 73 63 69 65 6e 74 2d 2d    73 65 72 69 61 6c 2d 6e 75 6d 62 65 72 29 0a 20  | incf.prescient--serial-number).. | 
| a460 |  20 3b 3b 20 53 61 76 65 20 74 68 65 20 63 61 63    68 65 20 64 61 74 61 2e 0a 20 20 28 77 68 65 6e  | .;;.Save.the.cache.data....(when | 
| a480 |  20 28 61 6e 64 20 70 72 65 73 63 69 65 6e 74 2d    70 65 72 73 69 73 74 2d 6d 6f 64 65 0a 20 20 20  | .(and.prescient-persist-mode.... | 
| a4a0 |  20 20 20 20 20 20 20 20 20 20 70 72 65 73 63 69    65 6e 74 2d 61 67 67 72 65 73 73 69 76 65 2d 66  | ..........prescient-aggressive-f | 
| a4c0 |  69 6c 65 2d 73 61 76 65 29 0a 20 20 20 20 28 70    72 65 73 63 69 65 6e 74 2d 2d 73 61 76 65 29 29  | ile-save).....(prescient--save)) | 
| a4e0 |  29 0a 0a 3b 3b 3b 3b 20 43 6f 6d 70 6c 65 74 69    6f 6e 20 53 74 79 6c 65 0a 0a 3b 3b 20 54 68 69  | )..;;;;.Completion.Style..;;.Thi | 
| a500 |  73 20 73 65 63 74 69 6f 6e 20 63 6f 6e 74 61 69    6e 73 20 66 75 6e 63 74 69 6f 6e 73 20 66 6f 72  | s.section.contains.functions.for | 
| a520 |  20 69 6d 70 6c 65 6d 65 6e 74 69 6e 67 20 74 68    65 20 60 70 72 65 73 63 69 65 6e 74 27 0a 3b 3b  | .implementing.the.`prescient'.;; | 
| a540 |  20 63 6f 6d 70 6c 65 74 69 6f 6e 20 73 74 79 6c    65 2e 20 54 68 69 73 20 66 65 61 74 75 72 65 20  | .completion.style..This.feature. | 
| a560 |  69 73 20 62 61 73 65 64 20 6f 6e 20 4f 72 64 65    72 6c 65 73 73 2e 65 6c 2e 0a 3b 3b 20 53 65 65  | is.based.on.Orderless.el..;;.See | 
| a580 |  3a 20 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62    2e 63 6f 6d 2f 6f 61 6e 74 6f 6c 69 6e 2f 6f 72  | :.https://github.com/oantolin/or | 
| a5a0 |  64 65 72 6c 65 73 73 0a 0a 28 64 65 66 76 61 72    20 63 6f 6d 70 6c 65 74 69 6f 6e 2d 6c 61 7a 79  | derless..(defvar.completion-lazy | 
| a5c0 |  2d 68 69 6c 69 74 29 0a 28 64 65 66 76 61 72 20    63 6f 6d 70 6c 65 74 69 6f 6e 2d 6c 61 7a 79 2d  | -hilit).(defvar.completion-lazy- | 
| a5e0 |  68 69 6c 69 74 2d 66 6e 29 0a 0a 3b 3b 3b 3b 3b    20 53 6f 72 74 69 6e 67 20 66 75 6e 63 74 69 6f  | hilit-fn)..;;;;;.Sorting.functio | 
| a600 |  6e 73 0a 0a 3b 3b 3b 23 23 23 61 75 74 6f 6c 6f    61 64 0a 28 63 6c 2d 64 65 66 75 6e 20 70 72 65  | ns..;;;###autoload.(cl-defun.pre | 
| a620 |  73 63 69 65 6e 74 2d 63 6f 6d 70 6c 65 74 69 6f    6e 2d 73 6f 72 74 20 28 63 61 6e 64 69 64 61 74  | scient-completion-sort.(candidat | 
| a640 |  65 73 29 0a 20 20 22 53 6f 72 74 20 74 68 65 20    66 69 6c 74 65 72 65 64 20 43 41 4e 44 49 44 41  | es)..."Sort.the.filtered.CANDIDA | 
| a660 |  54 45 53 2e 0a 0a 54 68 69 73 20 66 75 6e 63 74    69 6f 6e 20 77 69 6c 6c 20 61 6c 77 61 79 73 20  | TES...This.function.will.always. | 
| a680 |  73 6f 72 74 20 63 61 6e 64 69 64 61 74 65 73 20    75 73 69 6e 67 20 74 68 65 20 66 75 6e 63 74 69  | sort.candidates.using.the.functi | 
| a6a0 |  6f 6e 0a 60 70 72 65 73 63 69 65 6e 74 2d 73 6f    72 74 27 2e 20 57 68 65 6e 20 43 41 4e 44 49 44  | on.`prescient-sort'..When.CANDID | 
| a6c0 |  41 54 45 53 20 68 61 73 20 62 65 65 6e 20 66 69    6c 74 65 72 65 64 20 75 73 69 6e 67 20 74 68 65  | ATES.has.been.filtered.using.the | 
| a6e0 |  0a 60 70 72 65 73 63 69 65 6e 74 27 20 63 6f 6d    70 6c 65 74 69 6f 6e 20 73 74 79 6c 65 2c 20 69  | .`prescient'.completion.style,.i | 
| a700 |  74 20 63 61 6e 20 6f 70 74 69 6f 6e 61 6c 6c 79    20 61 6c 73 6f 20 73 6f 72 74 20 74 68 65 6d 0a  | t.can.optionally.also.sort.them. | 
| a720 |  75 73 69 6e 67 20 74 68 65 20 66 75 6e 63 74 69    6f 6e 20 60 70 72 65 73 63 69 65 6e 74 2d 73 6f  | using.the.function.`prescient-so | 
| a740 |  72 74 2d 66 75 6c 6c 2d 6d 61 74 63 68 65 73 2d    66 69 72 73 74 27 2e 0a 0a 54 68 69 73 20 66 75  | rt-full-matches-first'...This.fu | 
| a760 |  6e 63 74 69 6f 6e 20 63 68 65 63 6b 73 20 66 6f    72 20 74 68 65 20 70 72 6f 70 65 72 74 69 65 73  | nction.checks.for.the.properties | 
| a780 |  20 60 70 72 65 73 63 69 65 6e 74 2d 72 65 67 65    78 70 73 27 20 61 6e 64 0a 60 70 72 65 73 63 69  | .`prescient-regexps'.and.`presci | 
| a7a0 |  65 6e 74 2d 69 67 6e 6f 72 65 2d 63 61 73 65 27    20 6f 6e 20 61 6e 79 20 63 61 6e 64 69 64 61 74  | ent-ignore-case'.on.any.candidat | 
| a7c0 |  65 20 69 6e 20 43 41 4e 44 49 44 41 54 45 53 20    28 74 68 6f 75 67 68 0a 74 68 65 79 20 61 72 65  | e.in.CANDIDATES.(though.they.are | 
| a7e0 |  20 73 74 6f 72 65 64 20 6f 6e 20 74 68 65 20 66    69 72 73 74 20 63 61 6e 64 69 64 61 74 65 20 72  | .stored.on.the.first.candidate.r | 
| a800 |  65 74 75 72 6e 65 64 20 62 79 0a 60 70 72 65 73    63 69 65 6e 74 2d 66 69 6c 74 65 72 27 29 2e 20  | eturned.by.`prescient-filter').. | 
| a820 |  54 68 65 73 65 20 70 72 6f 70 65 72 74 69 65 73    20 61 72 65 20 75 73 65 64 20 66 6f 72 20 69 6d  | These.properties.are.used.for.im | 
| a840 |  70 6c 65 6d 65 6e 74 69 6e 67 0a 74 68 65 20 75    73 65 72 20 6f 70 74 69 6f 6e 20 60 70 72 65 73  | plementing.the.user.option.`pres | 
| a860 |  63 69 65 6e 74 2d 73 6f 72 74 2d 66 75 6c 6c 2d    6d 61 74 63 68 65 73 2d 66 69 72 73 74 27 2e 22  | cient-sort-full-matches-first'." | 
| a880 |  0a 20 20 28 69 66 20 28 6e 75 6c 6c 20 63 61 6e    64 69 64 61 74 65 73 29 0a 20 20 20 20 20 20 6e  | ...(if.(null.candidates).......n | 
| a8a0 |  69 6c 0a 20 20 20 20 3b 3b 20 60 70 72 65 73 63    69 65 6e 74 2d 66 69 6c 74 65 72 27 20 61 64 64  | il.....;;.`prescient-filter'.add | 
| a8c0 |  73 20 74 68 65 20 70 72 6f 70 65 72 74 69 65 73    20 6e 65 65 64 65 64 20 66 6f 72 0a 20 20 20 20  | s.the.properties.needed.for..... | 
| a8e0 |  3b 3b 20 60 70 72 65 73 63 69 65 6e 74 2d 73 6f    72 74 2d 66 75 6c 6c 2d 6d 61 74 63 68 65 73 2d  | ;;.`prescient-sort-full-matches- | 
| a900 |  66 69 72 73 74 27 20 74 6f 20 74 68 65 20 66 69    72 73 74 20 63 61 6e 64 69 64 61 74 65 20 69 6e  | first'.to.the.first.candidate.in | 
| a920 |  0a 20 20 20 20 3b 3b 20 74 68 65 20 6c 69 73 74    20 69 74 20 72 65 74 75 72 6e 73 2e 20 49 66 20  | .....;;.the.list.it.returns..If. | 
| a940 |  77 65 27 72 65 20 72 65 63 65 69 76 69 6e 67 20    74 68 65 20 66 69 6c 74 65 72 65 64 20 63 61 6e  | we're.receiving.the.filtered.can | 
| a960 |  64 69 64 61 74 65 73 0a 20 20 20 20 3b 3b 20 64    69 72 65 63 74 6c 79 20 28 73 6f 2c 20 6e 6f 74  | didates.....;;.directly.(so,.not | 
| a980 |  20 69 6e 20 60 63 6f 6d 70 61 6e 79 2d 70 72 65    73 63 69 65 6e 74 2d 74 72 61 6e 73 66 6f 72 6d  | .in.`company-prescient-transform | 
| a9a0 |  65 72 27 29 20 74 68 65 6e 20 77 65 0a 20 20 20    20 3b 3b 20 73 68 6f 75 6c 64 20 62 65 20 63 68  | er').then.we.....;;.should.be.ch | 
| a9c0 |  65 63 6b 69 6e 67 20 66 6f 72 20 74 68 65 6d 20    62 65 66 6f 72 65 20 72 75 6e 6e 69 6e 67 20 60  | ecking.for.them.before.running.` | 
| a9e0 |  70 72 65 73 63 69 65 6e 74 2d 73 6f 72 74 27 2c    0a 20 20 20 20 3b 3b 20 77 68 69 63 68 20 64 65  | prescient-sort',.....;;.which.de | 
| aa00 |  73 74 72 75 63 74 69 76 65 6c 79 20 6d 6f 64 69    66 69 65 73 20 43 41 4e 44 49 44 41 54 45 53 2e  | structively.modifies.CANDIDATES. | 
| aa20 |  0a 20 20 20 20 28 6c 65 74 20 28 28 72 65 67 65    78 70 73 29 0a 20 20 20 20 20 20 20 20 20 20 28  | .....(let.((regexps)...........( | 
| aa40 |  69 67 6e 6f 72 65 2d 63 61 73 65 29 29 0a 20 20    20 20 20 20 28 77 68 65 6e 20 70 72 65 73 63 69  | ignore-case)).......(when.presci | 
| aa60 |  65 6e 74 2d 73 6f 72 74 2d 66 75 6c 6c 2d 6d 61    74 63 68 65 73 2d 66 69 72 73 74 0a 20 20 20 20  | ent-sort-full-matches-first..... | 
| aa80 |  20 20 20 20 28 6c 65 74 20 28 28 70 72 6f 70 73    20 28 70 72 65 73 63 69 65 6e 74 2d 2d 67 65 74  | ....(let.((props.(prescient--get | 
| aaa0 |  2d 73 6f 72 74 2d 69 6e 66 6f 20 63 61 6e 64 69    64 61 74 65 73 29 29 29 0a 20 20 20 20 20 20 20  | -sort-info.candidates)))........ | 
| aac0 |  20 20 20 28 73 65 74 71 20 72 65 67 65 78 70 73    20 28 70 6c 69 73 74 2d 67 65 74 20 70 72 6f 70  | ...(setq.regexps.(plist-get.prop | 
| aae0 |  73 20 3a 70 72 65 73 63 69 65 6e 74 2d 61 6c 6c    2d 72 65 67 65 78 70 73 29 0a 20 20 20 20 20 20  | s.:prescient-all-regexps)....... | 
| ab00 |  20 20 20 20 20 20 20 20 20 20 69 67 6e 6f 72 65    2d 63 61 73 65 20 28 70 6c 69 73 74 2d 67 65 74  | ..........ignore-case.(plist-get | 
| ab20 |  20 70 72 6f 70 73 20 3a 70 72 65 73 63 69 65 6e    74 2d 69 67 6e 6f 72 65 2d 63 61 73 65 29 29 29  | .props.:prescient-ignore-case))) | 
| ab40 |  29 0a 20 20 20 20 20 20 28 74 68 72 65 61 64 2d    66 69 72 73 74 0a 20 20 20 20 20 20 20 20 63 61  | ).......(thread-first.........ca | 
| ab60 |  6e 64 69 64 61 74 65 73 0a 20 20 20 20 20 20 20    20 28 70 72 65 73 63 69 65 6e 74 2d 73 6f 72 74  | ndidates.........(prescient-sort | 
| ab80 |  29 0a 20 20 20 20 20 20 20 20 3b 3b 20 49 66 20    60 72 65 67 65 78 70 73 27 20 69 73 20 6e 69 6c  | ).........;;.If.`regexps'.is.nil | 
| aba0 |  2c 20 74 68 69 73 20 6a 75 73 74 20 72 65 74 75    72 6e 73 20 74 68 65 20 69 6e 70 75 74 2e 0a 20  | ,.this.just.returns.the.input... | 
| abc0 |  20 20 20 20 20 20 20 28 70 72 65 73 63 69 65 6e    74 2d 73 6f 72 74 2d 66 75 6c 6c 2d 6d 61 74 63  | .......(prescient-sort-full-matc | 
| abe0 |  68 65 73 2d 66 69 72 73 74 20 72 65 67 65 78 70    73 20 69 67 6e 6f 72 65 2d 63 61 73 65 29 29 29  | hes-first.regexps.ignore-case))) | 
| ac00 |  29 29 0a 0a 3b 3b 3b 3b 3b 20 46 69 6c 74 65 72    69 6e 67 20 66 75 6e 63 74 69 6f 6e 73 0a 0a 3b  | ))..;;;;;.Filtering.functions..; | 
| ac20 |  3b 3b 23 23 23 61 75 74 6f 6c 6f 61 64 0a 28 64    65 66 75 6e 20 70 72 65 73 63 69 65 6e 74 2d 61  | ;;###autoload.(defun.prescient-a | 
| ac40 |  6c 6c 2d 63 6f 6d 70 6c 65 74 69 6f 6e 73 20 28    73 74 72 69 6e 67 20 74 61 62 6c 65 20 26 6f 70  | ll-completions.(string.table.&op | 
| ac60 |  74 69 6f 6e 61 6c 20 70 72 65 64 20 5f 70 6f 69    6e 74 29 0a 20 20 22 60 61 6c 6c 2d 63 6f 6d 70  | tional.pred._point)..."`all-comp | 
| ac80 |  6c 65 74 69 6f 6e 73 27 20 75 73 69 6e 67 20 70    72 65 73 63 69 65 6e 74 2e 65 6c 2e 0a 0a 53 54  | letions'.using.prescient.el...ST | 
| aca0 |  52 49 4e 47 20 69 73 20 74 68 65 20 69 6e 70 75    74 2e 20 54 41 42 4c 45 20 69 73 20 61 20 63 6f  | RING.is.the.input..TABLE.is.a.co | 
| acc0 |  6d 70 6c 65 74 69 6f 6e 20 74 61 62 6c 65 2e 20    50 52 45 44 20 69 73 20 61 0a 70 72 65 64 69 63  | mpletion.table..PRED.is.a.predic | 
| ace0 |  61 74 65 20 74 68 61 74 20 66 75 72 74 68 65 72    20 72 65 73 74 72 69 63 74 73 20 74 68 65 20 6d  | ate.that.further.restricts.the.m | 
| ad00 |  61 74 63 68 69 6e 67 20 63 61 6e 64 69 64 61 74    65 73 2e 20 50 4f 49 4e 54 0a 77 6f 75 6c 64 20  | atching.candidates..POINT.would. | 
| ad20 |  62 65 20 74 68 65 20 63 75 72 72 65 6e 74 20 70    6f 69 6e 74 2c 20 62 75 74 20 69 74 20 69 73 20  | be.the.current.point,.but.it.is. | 
| ad40 |  6e 6f 74 20 75 73 65 64 20 62 79 20 74 68 69 73    20 66 75 6e 63 74 69 6f 6e 2e 0a 53 65 65 20 74  | not.used.by.this.function..See.t | 
| ad60 |  68 65 20 66 75 6e 63 74 69 6f 6e 20 60 61 6c 6c    2d 63 6f 6d 70 6c 65 74 69 6f 6e 73 27 20 66 6f  | he.function.`all-completions'.fo | 
| ad80 |  72 20 6d 6f 72 65 20 69 6e 66 6f 72 6d 61 74 69    6f 6e 2e 0a 0a 54 68 69 73 20 66 75 6e 63 74 69  | r.more.information...This.functi | 
| ada0 |  6f 6e 20 72 65 74 75 72 6e 73 20 61 20 6c 69 73    74 20 6f 66 20 63 6f 6d 70 6c 65 74 69 6f 6e 73  | on.returns.a.list.of.completions | 
| adc0 |  20 77 68 6f 73 65 20 66 69 6e 61 6c 20 60 63 64    72 27 20 69 73 0a 74 68 65 20 6c 65 6e 67 74 68  | .whose.final.`cdr'.is.the.length | 
| ade0 |  20 6f 66 20 74 68 65 20 70 72 65 66 69 78 20 73    74 72 69 6e 67 20 75 73 65 64 20 66 6f 72 20 63  | .of.the.prefix.string.used.for.c | 
| ae00 |  6f 6d 70 6c 65 74 69 6f 6e 20 28 77 68 69 63 68    20 6d 69 67 68 74 0a 62 65 20 61 6c 6c 20 6f 72  | ompletion.(which.might.be.all.or | 
| ae20 |  20 6a 75 73 74 20 70 61 72 74 20 6f 66 20 53 54    52 49 4e 47 29 2e 0a 0a 57 68 65 6e 20 60 63 6f  | .just.part.of.STRING)...When.`co | 
| ae40 |  6d 70 6c 65 74 69 6f 6e 2d 6c 61 7a 79 2d 68 69    6c 69 74 27 20 69 73 20 62 6f 75 6e 64 20 61 6e  | mpletion-lazy-hilit'.is.bound.an | 
| ae60 |  64 20 6e 6f 6e 2d 6e 69 6c 2c 20 74 68 65 6e 20    74 68 69 73 0a 66 75 6e 63 74 69 6f 6e 20 73 65  | d.non-nil,.then.this.function.se | 
| ae80 |  74 73 20 60 63 6f 6d 70 6c 65 74 69 6f 6e 2d 6c    61 7a 79 2d 68 69 6c 69 74 2d 66 6e 27 2e 20 4f  | ts.`completion-lazy-hilit-fn'..O | 
| aea0 |  74 68 65 72 77 69 73 65 2c 20 69 66 0a 60 70 72    65 73 63 69 65 6e 74 2d 63 6f 6d 70 6c 65 74 69  | therwise,.if.`prescient-completi | 
| aec0 |  6f 6e 2d 68 69 67 68 6c 69 67 68 74 2d 6d 61 74    63 68 65 73 27 20 69 73 20 6e 6f 6e 2d 6e 69 6c  | on-highlight-matches'.is.non-nil | 
| aee0 |  2c 20 74 68 69 73 0a 66 75 6e 63 74 69 6f 6e 20    70 72 6f 70 65 72 74 69 7a 65 73 20 61 6c 6c 20  | ,.this.function.propertizes.all. | 
| af00 |  6f 66 20 74 68 65 20 72 65 74 75 72 6e 65 64 20    63 6f 6d 70 6c 65 74 69 6f 6e 73 20 75 73 69 6e  | of.the.returned.completions.usin | 
| af20 |  67 20 74 68 65 0a 66 61 63 65 20 60 70 72 65 73    63 69 65 6e 74 2d 70 72 69 6d 61 72 79 2d 68 69  | g.the.face.`prescient-primary-hi | 
| af40 |  67 68 6c 69 67 68 74 27 20 61 6e 64 20 74 68 65    20 66 61 63 65 0a 60 70 72 65 73 63 69 65 6e 74  | ghlight'.and.the.face.`prescient | 
| af60 |  2d 73 65 63 6f 6e 64 61 72 79 2d 68 69 67 68 6c    69 67 68 74 27 2e 22 0a 20 20 3b 3b 20 60 70 6f  | -secondary-highlight'."...;;.`po | 
| af80 |  69 6e 74 27 20 69 73 20 61 20 72 65 71 75 69 72    65 64 20 61 72 67 75 6d 65 6e 74 2c 20 62 75 74  | int'.is.a.required.argument,.but | 
| afa0 |  20 75 6e 6e 65 65 64 65 64 20 68 65 72 65 2e 0a    20 20 28 77 68 65 6e 2d 6c 65 74 20 28 28 63 6f  | .unneeded.here....(when-let.((co | 
| afc0 |  6d 70 6c 65 74 69 6f 6e 73 20 28 70 72 65 73 63    69 65 6e 74 2d 66 69 6c 74 65 72 20 73 74 72 69  | mpletions.(prescient-filter.stri | 
| afe0 |  6e 67 20 74 61 62 6c 65 20 70 72 65 64 29 29 29    0a 20 20 20 20 28 70 63 61 73 65 2d 6c 65 74 2a  | ng.table.pred))).....(pcase-let* | 
| b000 |  20 28 28 60 28 2c 70 72 65 66 69 78 20 2e 20 2c    70 61 74 74 65 72 6e 29 0a 20 20 20 20 20 20 20  | .((`(,prefix...,pattern)........ | 
| b020 |  20 20 20 20 20 20 20 20 20 20 20 28 70 72 65 73    63 69 65 6e 74 2d 2d 70 72 65 66 69 78 2d 61 6e  | ...........(prescient--prefix-an | 
| b040 |  64 2d 70 61 74 74 65 72 6e 20 73 74 72 69 6e 67    20 74 61 62 6c 65 20 70 72 65 64 29 29 0a 20 20  | d-pattern.string.table.pred))... | 
| b060 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28    6d 61 79 62 65 2d 68 69 67 68 6c 69 67 68 74 65  | ...............(maybe-highlighte | 
| b080 |  64 0a 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  | d...................(cond....... | 
| b0a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 62    6f 75 6e 64 2d 61 6e 64 2d 74 72 75 65 2d 70 20  | .............((bound-and-true-p. | 
| b0c0 |  63 6f 6d 70 6c 65 74 69 6f 6e 2d 6c 61 7a 79 2d    68 69 6c 69 74 29 0a 20 20 20 20 20 20 20 20 20  | completion-lazy-hilit).......... | 
| b0e0 |  20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71    20 63 6f 6d 70 6c 65 74 69 6f 6e 2d 6c 61 7a 79  | ...........(setq.completion-lazy | 
| b100 |  2d 68 69 6c 69 74 2d 66 6e 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | -hilit-fn....................... | 
| b120 |  20 20 20 20 28 61 70 70 6c 79 2d 70 61 72 74 69    61 6c 6c 79 0a 20 20 20 20 20 20 20 20 20 20 20  | ....(apply-partially............ | 
| b140 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    23 27 70 72 65 73 63 69 65 6e 74 2d 2d 68 69 67  | ................#'prescient--hig | 
| b160 |  68 6c 69 67 68 74 2d 63 61 6e 64 69 64 61 74 65    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | hlight-candidate................ | 
| b180 |  20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 65    73 63 69 65 6e 74 2d 66 69 6c 74 65 72 2d 72 65  | ............(prescient-filter-re | 
| b1a0 |  67 65 78 70 73 20 70 61 74 74 65 72 6e 20 27 77    69 74 68 2d 67 72 6f 75 70 29 0a 20 20 20 20 20  | gexps.pattern.'with-group)...... | 
| b1c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 28 70 72 65 73 63 69 65 6e 74  | ......................(prescient | 
| b1e0 |  2d 69 67 6e 6f 72 65 2d 63 61 73 65 2d 70 20 70    61 74 74 65 72 6e 29 29 29 0a 20 20 20 20 20 20  | -ignore-case-p.pattern)))....... | 
| b200 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f    6d 70 6c 65 74 69 6f 6e 73 29 0a 20 20 20 20 20  | ..............completions)...... | 
| b220 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70    72 65 73 63 69 65 6e 74 2d 63 6f 6d 70 6c 65 74  | ..............(prescient-complet | 
| b240 |  69 6f 6e 2d 68 69 67 68 6c 69 67 68 74 2d 6d 61    74 63 68 65 73 0a 20 20 20 20 20 20 20 20 20 20  | ion-highlight-matches........... | 
| b260 |  20 20 20 20 20 20 20 20 20 20 28 70 72 65 73 63    69 65 6e 74 2d 2d 68 69 67 68 6c 69 67 68 74 2d  | ..........(prescient--highlight- | 
| b280 |  63 61 6e 64 69 64 61 74 65 73 20 70 61 74 74 65    72 6e 20 63 6f 6d 70 6c 65 74 69 6f 6e 73 29 29  | candidates.pattern.completions)) | 
| b2a0 |  0a 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 20 20 20 20 20 20  | ....................(t.......... | 
| b2c0 |  20 20 20 20 20 20 20 20 20 20 20 63 6f 6d 70 6c    65 74 69 6f 6e 73 29 29 29 29 0a 20 20 20 20 20  | ...........completions))))...... | 
| b2e0 |  20 28 6e 63 6f 6e 63 20 6d 61 79 62 65 2d 68 69    67 68 6c 69 67 68 74 65 64 20 28 6c 65 6e 67 74  | .(nconc.maybe-highlighted.(lengt | 
| b300 |  68 20 70 72 65 66 69 78 29 29 29 29 29 0a 0a 3b    3b 3b 23 23 23 61 75 74 6f 6c 6f 61 64 0a 28 64  | h.prefix)))))..;;;###autoload.(d | 
| b320 |  65 66 75 6e 20 70 72 65 73 63 69 65 6e 74 2d 74    72 79 2d 63 6f 6d 70 6c 65 74 69 6f 6e 20 28 73  | efun.prescient-try-completion.(s | 
| b340 |  74 72 69 6e 67 20 74 61 62 6c 65 20 26 6f 70 74    69 6f 6e 61 6c 20 70 72 65 64 20 70 6f 69 6e 74  | tring.table.&optional.pred.point | 
| b360 |  29 0a 20 20 22 60 74 72 79 2d 63 6f 6d 70 6c 65    74 69 6f 6e 27 20 75 73 69 6e 67 20 50 72 65 73  | )..."`try-completion'.using.Pres | 
| b380 |  63 69 65 6e 74 2e 0a 0a 53 54 52 49 4e 47 20 69    73 20 74 68 65 20 69 6e 70 75 74 2e 20 20 54 41  | cient...STRING.is.the.input...TA | 
| b3a0 |  42 4c 45 20 69 73 20 61 20 63 6f 6d 70 6c 65 74    69 6f 6e 20 74 61 62 6c 65 2e 20 20 50 52 45 44  | BLE.is.a.completion.table...PRED | 
| b3c0 |  20 69 73 20 61 0a 70 72 65 64 69 63 61 74 65 2e    20 20 50 4f 49 4e 54 20 69 73 20 74 68 65 20 63  | .is.a.predicate...POINT.is.the.c | 
| b3e0 |  75 72 72 65 6e 74 20 70 6f 69 6e 74 2e 20 20 53    65 65 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 0a  | urrent.point...See.the.function. | 
| b400 |  60 74 72 79 2d 63 6f 6d 70 6c 65 74 69 6f 6e 27    20 66 6f 72 20 6d 6f 72 65 20 69 6e 66 6f 72 6d  | `try-completion'.for.more.inform | 
| b420 |  61 74 69 6f 6e 2e 0a 0a 49 66 20 74 68 65 72 65    20 61 72 65 20 6e 6f 20 6d 61 74 63 68 65 73 2c  | ation...If.there.are.no.matches, | 
| b440 |  20 74 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 72    65 74 75 72 6e 73 20 6e 69 6c 2e 20 49 66 20 74  | .this.function.returns.nil..If.t | 
| b460 |  68 65 20 6f 6e 6c 79 0a 6d 61 74 63 68 20 65 71    75 61 6c 73 20 53 54 52 49 4e 47 2c 20 74 68 69  | he.only.match.equals.STRING,.thi | 
| b480 |  73 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72    6e 73 20 74 2e 20 4f 74 68 65 72 77 69 73 65 2c  | s.function.returns.t..Otherwise, | 
| b4a0 |  20 74 68 69 73 0a 66 75 6e 63 74 69 6f 6e 20 72    65 74 75 72 6e 73 20 61 20 63 6f 6e 73 20 63 65  | .this.function.returns.a.cons.ce | 
| b4c0 |  6c 6c 20 6f 66 20 74 68 65 20 63 6f 6d 70 6c 65    74 65 64 20 73 74 72 69 6e 67 20 61 6e 64 20 69  | ll.of.the.completed.string.and.i | 
| b4e0 |  74 73 0a 6c 65 6e 67 74 68 2e 20 49 66 20 74 68    65 72 65 20 69 73 20 6d 6f 72 65 20 74 68 61 6e  | ts.length..If.there.is.more.than | 
| b500 |  20 6f 6e 65 20 6d 61 74 63 68 2c 20 74 68 61 74    20 63 6f 6d 70 6c 65 74 65 64 20 73 74 72 69 6e  | .one.match,.that.completed.strin | 
| b520 |  67 20 69 73 0a 61 63 74 75 61 6c 6c 79 20 6a 75    73 74 20 74 68 65 20 69 6e 70 75 74 2c 20 69 6e  | g.is.actually.just.the.input,.in | 
| b540 |  20 77 68 69 63 68 20 63 61 73 65 20 6e 6f 74 68    69 6e 67 20 68 61 70 70 65 6e 73 2e 22 0a 20 20  | .which.case.nothing.happens."... | 
| b560 |  28 77 68 65 6e 2d 6c 65 74 20 28 28 63 6f 6d 70    6c 65 74 69 6f 6e 73 20 28 70 72 65 73 63 69 65  | (when-let.((completions.(prescie | 
| b580 |  6e 74 2d 66 69 6c 74 65 72 20 73 74 72 69 6e 67    20 74 61 62 6c 65 20 70 72 65 64 29 29 29 0a 20  | nt-filter.string.table.pred))).. | 
| b5a0 |  20 20 20 28 69 66 20 28 63 64 72 20 63 6f 6d 70    6c 65 74 69 6f 6e 73 29 0a 20 20 20 20 20 20 20  | ...(if.(cdr.completions)........ | 
| b5c0 |  20 28 63 6f 6e 73 20 73 74 72 69 6e 67 20 70 6f    69 6e 74 29 20 3b 20 4d 75 6c 74 69 70 6c 65 20  | .(cons.string.point).;.Multiple. | 
| b5e0 |  6d 61 74 63 68 65 73 0a 20 20 20 20 20 20 28 6c    65 74 20 28 28 6d 61 74 63 68 20 28 63 61 72 20  | matches.......(let.((match.(car. | 
| b600 |  63 6f 6d 70 6c 65 74 69 6f 6e 73 29 29 29 0a 20    20 20 20 20 20 20 20 28 69 66 20 28 65 71 75 61  | completions))).........(if.(equa | 
| b620 |  6c 20 73 74 72 69 6e 67 20 6d 61 74 63 68 29 0a    20 20 20 20 20 20 20 20 20 20 20 20 74 20 3b 20  | l.string.match).............t.;. | 
| b640 |  4c 69 74 65 72 61 6c 20 69 6e 70 75 74 20 65 71    75 61 6c 73 20 6f 6e 6c 79 20 6d 61 74 63 68 2e  | Literal.input.equals.only.match. | 
| b660 |  0a 20 20 20 20 20 20 20 20 20 20 3b 3b 20 4f 74    68 65 72 77 69 73 65 2c 20 72 65 74 75 72 6e 20  | ...........;;.Otherwise,.return. | 
| b680 |  74 68 65 20 6d 61 74 63 68 20 61 6e 64 20 6d 6f    76 65 20 70 6f 69 6e 74 20 74 6f 20 69 74 73 20  | the.match.and.move.point.to.its. | 
| b6a0 |  65 6e 64 2e 0a 20 20 20 20 20 20 20 20 20 20 28    6c 65 74 2a 20 28 28 70 72 65 66 69 78 20 28 63  | end............(let*.((prefix.(c | 
| b6c0 |  61 72 20 28 70 72 65 73 63 69 65 6e 74 2d 2d 70    72 65 66 69 78 2d 61 6e 64 2d 70 61 74 74 65 72  | ar.(prescient--prefix-and-patter | 
| b6e0 |  6e 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 20 20 20 20 20  | n............................... | 
| b700 |  20 73 74 72 69 6e 67 20 74 61 62 6c 65 20 70 72    65 64 29 29 29 0a 20 20 20 20 20 20 20 20 20 20  | .string.table.pred)))........... | 
| b720 |  20 20 20 20 20 20 20 28 66 75 6c 6c 20 28 63 6f    6e 63 61 74 20 70 72 65 66 69 78 20 6d 61 74 63  | .......(full.(concat.prefix.matc | 
| b740 |  68 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20    20 28 63 6f 6e 73 20 66 75 6c 6c 20 28 6c 65 6e  | h))).............(cons.full.(len | 
| b760 |  67 74 68 20 66 75 6c 6c 29 29 29 29 29 29 29 29    0a 0a 3b 3b 3b 3b 3b 20 53 65 74 74 69 6e 67 20  | gth.full))))))))..;;;;;.Setting. | 
| b780 |  75 70 20 74 68 65 20 63 6f 6d 70 6c 65 74 69 6f    6e 20 73 74 79 6c 65 0a 0a 3b 3b 3b 23 23 23 61  | up.the.completion.style..;;;###a | 
| b7a0 |  75 74 6f 6c 6f 61 64 0a 28 61 64 64 2d 74 6f 2d    6c 69 73 74 0a 20 27 63 6f 6d 70 6c 65 74 69 6f  | utoload.(add-to-list..'completio | 
| b7c0 |  6e 2d 73 74 79 6c 65 73 2d 61 6c 69 73 74 0a 20    27 28 20 70 72 65 73 63 69 65 6e 74 20 70 72 65  | n-styles-alist..'(.prescient.pre | 
| b7e0 |  73 63 69 65 6e 74 2d 74 72 79 2d 63 6f 6d 70 6c    65 74 69 6f 6e 20 70 72 65 73 63 69 65 6e 74 2d  | scient-try-completion.prescient- | 
| b800 |  61 6c 6c 2d 63 6f 6d 70 6c 65 74 69 6f 6e 73 0a    20 20 20 20 22 46 69 6c 74 65 72 69 6e 67 20 75  | all-completions....."Filtering.u | 
| b820 |  73 69 6e 67 20 70 72 65 73 63 69 65 6e 74 2e 65    6c 2e 0a 46 6f 72 20 73 6f 72 74 69 6e 67 2c 20  | sing.prescient.el..For.sorting,. | 
| b840 |  73 65 65 20 74 68 65 20 66 75 6e 63 74 69 6f 6e    20 60 70 72 65 73 63 69 65 6e 74 2d 63 6f 6d 70  | see.the.function.`prescient-comp | 
| b860 |  6c 65 74 69 6f 6e 2d 73 6f 72 74 27 2e 22 29 29    0a 0a 3b 3b 3b 3b 3b 20 43 6f 6d 70 6f 6e 65 6e  | letion-sort'."))..;;;;;.Componen | 
| b880 |  74 20 66 75 6e 63 74 69 6f 6e 73 20 66 6f 72 20    63 6f 6d 70 6c 65 74 69 6f 6e 2d 73 74 79 6c 65  | t.functions.for.completion-style | 
| b8a0 |  20 6d 69 6e 6f 72 20 6d 6f 64 65 73 0a 0a 3b 3b    20 54 68 65 73 65 20 66 75 6e 63 74 69 6f 6e 73  | .minor.modes..;;.These.functions | 
| b8c0 |  20 61 72 65 20 75 73 65 64 20 74 6f 20 69 6d 70    6c 65 6d 65 6e 74 20 74 68 65 20 69 6e 74 65 67  | .are.used.to.implement.the.integ | 
| b8e0 |  72 61 74 69 6f 6e 20 70 61 63 6b 61 67 65 73 0a    3b 3b 20 66 6f 72 20 43 6f 72 66 75 20 61 6e 64  | ration.packages.;;.for.Corfu.and | 
| b900 |  20 56 65 72 74 69 63 6f 2c 20 77 68 69 63 68 20    75 73 65 20 63 6f 6d 70 6c 65 74 69 6f 6e 20 73  | .Vertico,.which.use.completion.s | 
| b920 |  74 79 6c 65 73 2e 0a 0a 28 64 65 66 63 6f 6e 73    74 20 70 72 65 73 63 69 65 6e 74 2d 2d 63 6f 6d  | tyles...(defconst.prescient--com | 
| b940 |  70 6c 65 74 69 6f 6e 2d 72 65 63 6f 6d 6d 65 6e    64 65 64 2d 73 74 79 6c 65 73 20 27 28 70 72 65  | pletion-recommended-styles.'(pre | 
| b960 |  73 63 69 65 6e 74 20 62 61 73 69 63 29 0a 20 20    22 52 65 63 6f 6d 6d 65 6e 64 65 64 20 63 6f 6d  | scient.basic)..."Recommended.com | 
| b980 |  70 6c 65 74 69 6f 6e 73 20 73 74 79 6c 65 73 20    66 6f 72 20 75 73 69 6e 67 20 60 70 72 65 73 63  | pletions.styles.for.using.`presc | 
| b9a0 |  69 65 6e 74 27 2e 22 29 0a 0a 28 64 65 66 63 6f    6e 73 74 20 70 72 65 73 63 69 65 6e 74 2d 2d 63  | ient'.")..(defconst.prescient--c | 
| b9c0 |  6f 6d 70 6c 65 74 69 6f 6e 2d 72 65 63 6f 6d 6d    65 6e 64 65 64 2d 6f 76 65 72 72 69 64 65 73 0a  | ompletion-recommended-overrides. | 
| b9e0 |  20 20 27 28 3b 3b 20 49 6e 63 6c 75 64 65 20 60    70 61 72 74 69 61 6c 2d 63 6f 6d 70 6c 65 74 69  | ..'(;;.Include.`partial-completi | 
| ba00 |  6f 6e 27 20 74 6f 20 65 6e 61 62 6c 65 20 77 69    6c 64 63 61 72 64 73 20 61 6e 64 0a 20 20 20 20  | on'.to.enable.wildcards.and..... | 
| ba20 |  3b 3b 20 70 61 72 74 69 61 6c 20 70 61 74 68 73    2e 0a 20 20 20 20 28 66 69 6c 65 20 28 73 74 79  | ;;.partial.paths......(file.(sty | 
| ba40 |  6c 65 73 20 62 61 73 69 63 20 70 61 72 74 69 61    6c 2d 63 6f 6d 70 6c 65 74 69 6f 6e 29 29 0a 20  | les.basic.partial-completion)).. | 
| ba60 |  20 20 20 3b 3b 20 45 67 6c 6f 74 20 66 6f 72 63    65 73 20 60 66 6c 65 78 27 20 62 79 20 64 65 66  | ...;;.Eglot.forces.`flex'.by.def | 
| ba80 |  61 75 6c 74 2e 0a 20 20 20 20 28 65 67 6c 6f 74    20 28 73 74 79 6c 65 73 20 70 72 65 73 63 69 65  | ault......(eglot.(styles.prescie | 
| baa0 |  6e 74 20 62 61 73 69 63 29 29 29 0a 20 20 22 52    65 63 6f 6d 6d 65 6e 64 65 64 20 63 6f 6d 70 6c  | nt.basic)))..."Recommended.compl | 
| bac0 |  65 74 69 6f 6e 2d 63 61 74 65 67 6f 72 79 20 6f    76 65 72 72 69 64 65 73 20 66 6f 72 20 75 73 69  | etion-category.overrides.for.usi | 
| bae0 |  6e 67 20 70 72 65 73 63 69 65 6e 74 2e 22 29 0a    0a 28 64 65 66 63 6f 6e 73 74 20 70 72 65 73 63  | ng.prescient.")..(defconst.presc | 
| bb00 |  69 65 6e 74 2d 2d 63 6f 6d 70 6c 65 74 69 6f 6e    2d 73 65 74 74 69 6e 67 73 2d 76 61 72 73 0a 20  | ient--completion-settings-vars.. | 
| bb20 |  20 27 28 20 63 6f 6d 70 6c 65 74 69 6f 6e 2d 73    74 79 6c 65 73 20 63 6f 6d 70 6c 65 74 69 6f 6e  | .'(.completion-styles.completion | 
| bb40 |  2d 63 61 74 65 67 6f 72 79 2d 6f 76 65 72 72 69    64 65 73 0a 20 20 20 20 20 63 6f 6d 70 6c 65 74  | -category-overrides......complet | 
| bb60 |  69 6f 6e 2d 63 61 74 65 67 6f 72 79 2d 64 65 66    61 75 6c 74 73 29 0a 20 20 22 56 61 72 69 61 62  | ion-category-defaults)..."Variab | 
| bb80 |  6c 65 73 20 74 68 61 74 20 61 72 65 20 63 68 61    6e 67 65 64 20 74 6f 20 63 6f 6e 66 69 67 75 72  | les.that.are.changed.to.configur | 
| bba0 |  65 20 66 69 6c 74 65 72 69 6e 67 2e 22 29 0a 0a    28 64 65 66 76 61 72 20 70 72 65 73 63 69 65 6e  | e.filtering.")..(defvar.prescien | 
| bbc0 |  74 2d 2d 63 6f 6d 70 6c 65 74 69 6f 6e 2d 6f 6c    64 2d 73 74 79 6c 65 73 20 6e 69 6c 0a 20 20 22  | t--completion-old-styles.nil..." | 
| bbe0 |  50 72 65 76 69 6f 75 73 20 76 61 6c 75 65 20 6f    66 20 60 63 6f 6d 70 6c 65 74 69 6f 6e 2d 73 74  | Previous.value.of.`completion-st | 
| bc00 |  79 6c 65 73 27 2e 22 29 0a 0a 28 64 65 66 76 61    72 20 70 72 65 73 63 69 65 6e 74 2d 2d 63 6f 6d  | yles'.")..(defvar.prescient--com | 
| bc20 |  70 6c 65 74 69 6f 6e 2d 6f 6c 64 2d 6f 76 65 72    72 69 64 65 73 20 6e 69 6c 0a 20 20 22 50 72 65  | pletion-old-overrides.nil..."Pre | 
| bc40 |  76 69 6f 75 73 20 76 61 6c 75 65 20 6f 66 20 60    63 6f 6d 70 6c 65 74 69 6f 6e 2d 63 61 74 65 67  | vious.value.of.`completion-categ | 
| bc60 |  6f 72 79 2d 6f 76 65 72 72 69 64 65 73 27 2e 22    29 0a 0a 28 64 65 66 76 61 72 20 70 72 65 73 63  | ory-overrides'.")..(defvar.presc | 
| bc80 |  69 65 6e 74 2d 2d 63 6f 6d 70 6c 65 74 69 6f 6e    2d 6f 6c 64 2d 64 65 66 61 75 6c 74 73 20 6e 69  | ient--completion-old-defaults.ni | 
| bca0 |  6c 0a 20 20 22 50 72 65 76 69 6f 75 73 20 76 61    6c 75 65 20 6f 66 20 60 63 6f 6d 70 6c 65 74 69  | l..."Previous.value.of.`completi | 
| bcc0 |  6f 6e 2d 63 61 74 65 67 6f 72 79 2d 64 65 66 61    75 6c 74 73 27 2e 22 29 0a 0a 28 64 65 66 63 6f  | on-category-defaults'.")..(defco | 
| bce0 |  6e 73 74 20 70 72 65 73 63 69 65 6e 74 2d 2d 63    6f 6d 70 6c 65 74 69 6f 6e 2d 6f 6c 64 2d 76 61  | nst.prescient--completion-old-va | 
| bd00 |  72 73 0a 20 20 27 28 20 70 72 65 73 63 69 65 6e    74 2d 2d 63 6f 6d 70 6c 65 74 69 6f 6e 2d 6f 6c  | rs...'(.prescient--completion-ol | 
| bd20 |  64 2d 73 74 79 6c 65 73 0a 20 20 20 20 20 70 72    65 73 63 69 65 6e 74 2d 2d 63 6f 6d 70 6c 65 74  | d-styles......prescient--complet | 
| bd40 |  69 6f 6e 2d 6f 6c 64 2d 6f 76 65 72 72 69 64 65    73 0a 20 20 20 20 20 70 72 65 73 63 69 65 6e 74  | ion-old-overrides......prescient | 
| bd60 |  2d 2d 63 6f 6d 70 6c 65 74 69 6f 6e 2d 6f 6c 64    2d 64 65 66 61 75 6c 74 73 29 0a 20 20 22 56 61  | --completion-old-defaults)..."Va | 
| bd80 |  72 69 61 62 6c 65 73 20 75 73 65 64 20 74 6f 20    73 74 6f 72 65 20 6f 6c 64 20 73 65 74 74 69 6e  | riables.used.to.store.old.settin | 
| bda0 |  67 73 2e 22 29 0a 0a 28 63 6c 2d 64 65 66 75 6e    20 70 72 65 73 63 69 65 6e 74 2d 2d 63 6f 6d 70  | gs.")..(cl-defun.prescient--comp | 
| bdc0 |  6c 65 74 69 6f 6e 2d 61 70 70 6c 79 2d 63 6f 6d    70 6c 65 74 69 6f 6e 2d 73 65 74 74 69 6e 67 73  | letion-apply-completion-settings | 
| bde0 |  0a 20 20 20 20 28 26 6b 65 79 20 28 73 74 79 6c    65 73 20 70 72 65 73 63 69 65 6e 74 2d 2d 63 6f  | .....(&key.(styles.prescient--co | 
| be00 |  6d 70 6c 65 74 69 6f 6e 2d 72 65 63 6f 6d 6d 65    6e 64 65 64 2d 73 74 79 6c 65 73 29 0a 20 20 20  | mpletion-recommended-styles).... | 
| be20 |  20 20 20 20 20 20 20 28 6f 76 65 72 72 69 64 65    73 20 70 72 65 73 63 69 65 6e 74 2d 2d 63 6f 6d  | .......(overrides.prescient--com | 
| be40 |  70 6c 65 74 69 6f 6e 2d 72 65 63 6f 6d 6d 65 6e    64 65 64 2d 6f 76 65 72 72 69 64 65 73 29 29 0a  | pletion-recommended-overrides)). | 
| be60 |  20 20 22 4d 6f 64 69 66 79 20 74 68 65 20 75 73    65 72 20 6f 70 74 69 6f 6e 73 20 61 6e 64 20 76  | .."Modify.the.user.options.and.v | 
| be80 |  61 72 69 61 62 6c 65 73 2e 0a 0a 53 54 59 4c 45    53 20 69 73 20 74 68 65 20 6e 65 77 20 60 63 6f  | ariables...STYLES.is.the.new.`co | 
| bea0 |  6d 70 6c 65 74 69 6f 6e 2d 73 74 79 6c 65 73 27    2e 20 4f 56 45 52 52 49 44 45 53 20 69 73 20 6e  | mpletion-styles'..OVERRIDES.is.n | 
| bec0 |  65 77 0a 6f 76 65 72 72 69 64 65 73 20 66 6f 72    20 60 63 6f 6d 70 6c 65 74 69 6f 6e 2d 63 61 74  | ew.overrides.for.`completion-cat | 
| bee0 |  65 67 6f 72 79 2d 6f 76 65 72 72 69 64 65 73 27    2e 0a 60 63 6f 6d 70 6c 65 74 69 6f 6e 2d 63 61  | egory-overrides'..`completion-ca | 
| bf00 |  74 65 67 6f 72 79 2d 64 65 66 61 75 6c 74 73 27    20 69 73 20 73 65 74 20 74 6f 20 6e 69 6c 2e 20  | tegory-defaults'.is.set.to.nil.. | 
| bf20 |  54 68 65 73 65 20 76 61 72 69 61 62 6c 65 73 0a    61 72 65 20 6c 69 73 74 65 64 20 69 6e 20 60 70  | These.variables.are.listed.in.`p | 
| bf40 |  72 65 73 63 69 65 6e 74 2d 2d 63 6f 6d 70 6c 65    74 69 6f 6e 2d 73 65 74 74 69 6e 67 73 2d 76 61  | rescient--completion-settings-va | 
| bf60 |  72 73 27 2e 0a 0a 57 68 69 6c 65 20 74 68 65 72    65 20 61 72 65 20 72 65 63 6f 6d 6d 65 6e 64 65  | rs'...While.there.are.recommende | 
| bf80 |  64 20 73 65 74 74 69 6e 67 73 2c 20 74 68 65 73    65 20 63 61 6e 20 62 65 20 6f 76 65 72 72 69 64  | d.settings,.these.can.be.overrid | 
| bfa0 |  64 65 6e 20 62 79 0a 75 73 65 72 20 6f 70 74 69    6f 6e 73 20 69 6e 20 74 68 65 20 65 78 74 65 6e  | den.by.user.options.in.the.exten | 
| bfc0 |  73 69 6f 6e 20 70 61 63 6b 61 67 65 73 2e 22 0a    20 20 28 73 65 74 71 20 63 6f 6d 70 6c 65 74 69  | sion.packages."...(setq.completi | 
| bfe0 |  6f 6e 2d 73 74 79 6c 65 73 20 73 74 79 6c 65 73    0a 20 20 20 20 20 20 20 20 63 6f 6d 70 6c 65 74  | on-styles.styles.........complet | 
| c000 |  69 6f 6e 2d 63 61 74 65 67 6f 72 79 2d 64 65 66    61 75 6c 74 73 20 6e 69 6c 29 0a 0a 20 20 28 63  | ion-category-defaults.nil)....(c | 
| c020 |  6c 2d 73 79 6d 62 6f 6c 2d 6d 61 63 72 6f 6c 65    74 0a 20 20 20 20 20 20 28 28 63 61 74 65 67 6f  | l-symbol-macrolet.......((catego | 
| c040 |  72 79 2d 73 65 74 74 69 6e 67 2d 6f 76 65 72 72    69 64 65 73 0a 20 20 20 20 20 20 20 20 20 28 61  | ry-setting-overrides..........(a | 
| c060 |  6c 69 73 74 2d 67 65 74 20 73 65 74 74 69 6e 67    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | list-get.setting................ | 
| c080 |  20 20 20 20 20 28 61 6c 69 73 74 2d 67 65 74 20    63 61 74 65 67 6f 72 79 20 63 6f 6d 70 6c 65 74  | .....(alist-get.category.complet | 
| c0a0 |  69 6f 6e 2d 63 61 74 65 67 6f 72 79 2d 6f 76 65    72 72 69 64 65 73 29 29 29 29 0a 20 20 20 20 28  | ion-category-overrides)))).....( | 
| c0c0 |  63 6c 2d 6c 6f 6f 70 20 66 6f 72 20 28 63 61 74    65 67 6f 72 79 20 2e 20 6f 76 65 72 72 69 64 65  | cl-loop.for.(category...override | 
| c0e0 |  73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    69 6e 20 6f 76 65 72 72 69 64 65 73 0a 20 20 20  | s)..............in.overrides.... | 
| c100 |  20 20 20 20 20 20 20 20 20 20 64 6f 20 28 63 6c    2d 6c 6f 6f 70 20 66 6f 72 20 28 73 65 74 74 69  | ..........do.(cl-loop.for.(setti | 
| c120 |  6e 67 20 2e 20 76 61 6c 75 65 73 29 20 69 6e 20    6f 76 65 72 72 69 64 65 73 0a 20 20 20 20 20 20  | ng...values).in.overrides....... | 
| c140 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 64 6f 20 28 73 65 74 66 20 63 61 74 65  | ...................do.(setf.cate | 
| c160 |  67 6f 72 79 2d 73 65 74 74 69 6e 67 2d 6f 76 65    72 72 69 64 65 73 20 76 61 6c 75 65 73 29 29 29  | gory-setting-overrides.values))) | 
| c180 |  29 29 0a 0a 28 64 65 66 75 6e 20 70 72 65 73 63    69 65 6e 74 2d 2d 63 6f 6d 70 6c 65 74 69 6f 6e  | ))..(defun.prescient--completion | 
| c1a0 |  2d 73 61 76 65 2d 63 6f 6d 70 6c 65 74 69 6f 6e    2d 73 65 74 74 69 6e 67 73 20 28 29 0a 20 20 22  | -save-completion-settings.()..." | 
| c1c0 |  53 61 76 65 20 74 68 65 20 6f 6c 64 20 63 6f 6d    70 6c 65 74 69 6f 6e 20 66 69 6c 74 65 72 69 6e  | Save.the.old.completion.filterin | 
| c1e0 |  67 20 73 65 74 74 69 6e 67 73 2e 0a 0a 56 61 6c    75 65 73 20 61 72 65 20 73 61 76 65 64 20 69 6e  | g.settings...Values.are.saved.in | 
| c200 |  20 60 70 72 65 73 63 69 65 6e 74 2d 2d 63 6f 6d    70 6c 65 74 69 6f 6e 2d 6f 6c 64 2d 73 74 79 6c  | .`prescient--completion-old-styl | 
| c220 |  65 73 27 2c 0a 60 70 72 65 73 63 69 65 6e 74 2d    2d 63 6f 6d 70 6c 65 74 69 6f 6e 2d 6f 6c 64 2d  | es',.`prescient--completion-old- | 
| c240 |  64 65 66 61 75 6c 74 73 27 2c 20 61 6e 64 0a 60    70 72 65 73 63 69 65 6e 74 2d 2d 63 6f 6d 70 6c  | defaults',.and.`prescient--compl | 
| c260 |  65 74 69 6f 6e 2d 6f 6c 64 2d 6f 76 65 72 72 69    64 65 73 27 2c 20 77 68 69 63 68 20 61 72 65 20  | etion-old-overrides',.which.are. | 
| c280 |  6c 69 73 74 65 64 20 69 6e 0a 60 70 72 65 73 63    69 65 6e 74 2d 2d 63 6f 6d 70 6c 65 74 69 6f 6e  | listed.in.`prescient--completion | 
| c2a0 |  2d 6f 6c 64 2d 76 61 72 73 27 2e 22 0a 20 20 28    73 65 74 71 20 70 72 65 73 63 69 65 6e 74 2d 2d  | -old-vars'."...(setq.prescient-- | 
| c2c0 |  63 6f 6d 70 6c 65 74 69 6f 6e 2d 6f 6c 64 2d 73    74 79 6c 65 73 20 63 6f 6d 70 6c 65 74 69 6f 6e  | completion-old-styles.completion | 
| c2e0 |  2d 73 74 79 6c 65 73 0a 20 20 20 20 20 20 20 20    70 72 65 73 63 69 65 6e 74 2d 2d 63 6f 6d 70 6c  | -styles.........prescient--compl | 
| c300 |  65 74 69 6f 6e 2d 6f 6c 64 2d 64 65 66 61 75 6c    74 73 20 63 6f 6d 70 6c 65 74 69 6f 6e 2d 63 61  | etion-old-defaults.completion-ca | 
| c320 |  74 65 67 6f 72 79 2d 64 65 66 61 75 6c 74 73 29    0a 0a 20 20 28 63 6c 2d 73 79 6d 62 6f 6c 2d 6d  | tegory-defaults)....(cl-symbol-m | 
| c340 |  61 63 72 6f 6c 65 74 0a 20 20 20 20 20 20 28 28    63 61 74 65 67 6f 72 79 2d 73 65 74 74 69 6e 67  | acrolet.......((category-setting | 
| c360 |  2d 6f 76 65 72 72 69 64 65 73 0a 20 20 20 20 20    20 20 20 20 28 61 6c 69 73 74 2d 67 65 74 20 73  | -overrides..........(alist-get.s | 
| c380 |  65 74 74 69 6e 67 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 28 61 6c 69 73  | etting.....................(alis | 
| c3a0 |  74 2d 67 65 74 20 63 61 74 65 67 6f 72 79 20 63    6f 6d 70 6c 65 74 69 6f 6e 2d 63 61 74 65 67 6f  | t-get.category.completion-catego | 
| c3c0 |  72 79 2d 6f 76 65 72 72 69 64 65 73 29 29 29 29    0a 20 20 20 20 28 73 65 74 71 20 70 72 65 73 63  | ry-overrides)))).....(setq.presc | 
| c3e0 |  69 65 6e 74 2d 2d 63 6f 6d 70 6c 65 74 69 6f 6e    2d 6f 6c 64 2d 6f 76 65 72 72 69 64 65 73 0a 20  | ient--completion-old-overrides.. | 
| c400 |  20 20 20 20 20 20 20 20 20 28 63 6c 2d 6c 6f 6f    70 0a 20 20 20 20 20 20 20 20 20 20 20 66 6f 72  | .........(cl-loop............for | 
| c420 |  20 28 63 61 74 65 67 6f 72 79 20 2e 20 6f 76 65    72 72 69 64 65 73 29 0a 20 20 20 20 20 20 20 20  | .(category...overrides)......... | 
| c440 |  20 20 20 69 6e 20 70 72 65 73 63 69 65 6e 74 2d    2d 63 6f 6d 70 6c 65 74 69 6f 6e 2d 72 65 63 6f  | ...in.prescient--completion-reco | 
| c460 |  6d 6d 65 6e 64 65 64 2d 6f 76 65 72 72 69 64 65    73 0a 20 20 20 20 20 20 20 20 20 20 20 63 6f 6c  | mmended-overrides............col | 
| c480 |  6c 65 63 74 0a 20 20 20 20 20 20 20 20 20 20 20    60 28 2c 63 61 74 65 67 6f 72 79 20 2c 40 28 63  | lect............`(,category.,@(c | 
| c4a0 |  6c 2d 6c 6f 6f 70 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  | l-loop.......................... | 
| c4c0 |  20 66 6f 72 20 28 73 65 74 74 69 6e 67 20 2e 20    5f 29 20 69 6e 20 6f 76 65 72 72 69 64 65 73 0a  | .for.(setting..._).in.overrides. | 
| c4e0 |  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 63 6f 6c 6c 65 63  | ..........................collec | 
| c500 |  74 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 20 60 28 2c 73  | t...........................`(,s | 
| c520 |  65 74 74 69 6e 67 20 2c 40 63 61 74 65 67 6f 72    79 2d 73 65 74 74 69 6e 67 2d 6f 76 65 72 72 69  | etting.,@category-setting-overri | 
| c540 |  64 65 73 29 29 29 29 29 29 29 0a 0a 28 63 6c 2d    64 65 66 75 6e 20 70 72 65 73 63 69 65 6e 74 2d  | des)))))))..(cl-defun.prescient- | 
| c560 |  2d 63 6f 6d 70 6c 65 74 69 6f 6e 2d 72 65 73 74    6f 72 65 2d 63 6f 6d 70 6c 65 74 69 6f 6e 2d 73  | -completion-restore-completion-s | 
| c580 |  65 74 74 69 6e 67 73 0a 20 20 20 20 28 26 6b 65    79 20 28 73 74 79 6c 65 73 20 70 72 65 73 63 69  | ettings.....(&key.(styles.presci | 
| c5a0 |  65 6e 74 2d 2d 63 6f 6d 70 6c 65 74 69 6f 6e 2d    72 65 63 6f 6d 6d 65 6e 64 65 64 2d 73 74 79 6c  | ent--completion-recommended-styl | 
| c5c0 |  65 73 29 0a 20 20 20 20 20 20 20 20 20 20 28 6f    76 65 72 72 69 64 65 73 20 70 72 65 73 63 69 65  | es)...........(overrides.prescie | 
| c5e0 |  6e 74 2d 2d 63 6f 6d 70 6c 65 74 69 6f 6e 2d 72    65 63 6f 6d 6d 65 6e 64 65 64 2d 6f 76 65 72 72  | nt--completion-recommended-overr | 
| c600 |  69 64 65 73 29 29 0a 20 20 22 52 65 73 74 6f 72    65 20 74 68 65 20 6f 6c 64 20 73 65 74 74 69 6e  | ides))..."Restore.the.old.settin | 
| c620 |  67 73 2e 0a 0a 53 54 59 4c 45 53 20 69 73 20 77    68 61 74 20 60 63 6f 6d 70 6c 65 74 69 6f 6e 2d  | gs...STYLES.is.what.`completion- | 
| c640 |  73 74 79 6c 65 73 27 20 77 61 73 20 63 68 61 6e    67 65 64 20 74 6f 2e 20 4f 56 45 52 52 49 44 45  | styles'.was.changed.to..OVERRIDE | 
| c660 |  53 20 61 72 65 0a 74 68 65 20 6f 76 65 72 72 69    64 65 73 20 74 68 61 74 20 77 65 72 65 20 63 68  | S.are.the.overrides.that.were.ch | 
| c680 |  61 6e 67 65 64 20 69 6e 20 60 63 6f 6d 70 6c 65    74 69 6f 6e 2d 63 61 74 65 67 6f 72 79 2d 6f 76  | anged.in.`completion-category-ov | 
| c6a0 |  65 72 72 69 64 65 73 27 2e 0a 0a 49 66 20 74 68    65 20 63 75 72 72 65 6e 74 20 76 61 6c 75 65 73  | errides'...If.the.current.values | 
| c6c0 |  20 6f 66 20 74 68 65 20 73 65 74 74 69 6e 67 73    20 76 61 72 69 61 62 6c 65 73 20 64 6f 20 6e 6f  | .of.the.settings.variables.do.no | 
| c6e0 |  74 20 6d 61 74 63 68 20 74 68 65 0a 63 68 61 6e    67 65 73 20 6d 61 64 65 20 62 79 20 60 70 72 65  | t.match.the.changes.made.by.`pre | 
| c700 |  73 63 69 65 6e 74 2d 2d 63 6f 6d 70 6c 65 74 69    6f 6e 2d 61 70 70 6c 79 2d 63 6f 6d 70 6c 65 74  | scient--completion-apply-complet | 
| c720 |  69 6f 6e 2d 73 65 74 74 69 6e 67 73 27 2c 0a 74    68 65 6e 20 77 65 20 64 6f 6e 27 74 20 72 65 73  | ion-settings',.then.we.don't.res | 
| c740 |  74 6f 72 65 20 74 68 65 20 70 72 65 76 69 6f 75    73 20 76 61 6c 75 65 73 20 61 6e 64 20 69 6e 73  | tore.the.previous.values.and.ins | 
| c760 |  74 65 61 64 20 6f 6e 6c 79 20 74 72 79 20 74 6f    0a 72 65 6d 6f 76 65 20 75 73 61 67 65 73 20 6f  | tead.only.try.to.remove.usages.o | 
| c780 |  66 20 74 68 65 20 60 70 72 65 73 63 69 65 6e 74    27 20 63 6f 6d 70 6c 65 74 69 6f 6e 20 73 74 79  | f.the.`prescient'.completion.sty | 
| c7a0 |  6c 65 2e 22 0a 20 20 3b 3b 20 54 72 79 20 74 6f    20 72 65 76 65 72 74 20 62 61 63 6b 20 74 6f 20  | le."...;;.Try.to.revert.back.to. | 
| c7c0 |  6f 6c 64 20 73 65 74 74 69 6e 67 73 2c 20 6f 72    20 61 74 20 6c 65 61 73 74 20 6e 6f 74 20 75 73  | old.settings,.or.at.least.not.us | 
| c7e0 |  65 20 74 68 65 0a 20 20 3b 3b 20 60 70 72 65 73    63 69 65 6e 74 27 20 73 74 79 6c 65 2e 0a 20 20  | e.the...;;.`prescient'.style.... | 
| c800 |  28 69 66 20 28 65 71 75 61 6c 20 63 6f 6d 70 6c    65 74 69 6f 6e 2d 73 74 79 6c 65 73 20 73 74 79  | (if.(equal.completion-styles.sty | 
| c820 |  6c 65 73 29 0a 20 20 20 20 20 20 28 73 65 74 71    20 63 6f 6d 70 6c 65 74 69 6f 6e 2d 73 74 79 6c  | les).......(setq.completion-styl | 
| c840 |  65 73 20 70 72 65 73 63 69 65 6e 74 2d 2d 63 6f    6d 70 6c 65 74 69 6f 6e 2d 6f 6c 64 2d 73 74 79  | es.prescient--completion-old-sty | 
| c860 |  6c 65 73 29 0a 20 20 20 20 28 63 6c 2d 63 61 6c    6c 66 32 20 72 65 6d 71 20 27 70 72 65 73 63 69  | les).....(cl-callf2.remq.'presci | 
| c880 |  65 6e 74 20 63 6f 6d 70 6c 65 74 69 6f 6e 2d 73    74 79 6c 65 73 29 29 0a 0a 20 20 28 63 6c 2d 6c  | ent.completion-styles))....(cl-l | 
| c8a0 |  6f 6f 70 20 66 6f 72 20 28 6b 65 79 20 2e 20 76    61 6c 29 20 69 6e 20 70 72 65 73 63 69 65 6e 74  | oop.for.(key...val).in.prescient | 
| c8c0 |  2d 2d 63 6f 6d 70 6c 65 74 69 6f 6e 2d 6f 6c 64    2d 64 65 66 61 75 6c 74 73 0a 20 20 20 20 20 20  | --completion-old-defaults....... | 
| c8e0 |  20 20 20 20 20 75 6e 6c 65 73 73 20 28 61 6c 69    73 74 2d 67 65 74 20 6b 65 79 20 63 6f 6d 70 6c  | .....unless.(alist-get.key.compl | 
| c900 |  65 74 69 6f 6e 2d 63 61 74 65 67 6f 72 79 2d 64    65 66 61 75 6c 74 73 29 0a 20 20 20 20 20 20 20  | etion-category-defaults)........ | 
| c920 |  20 20 20 20 64 6f 20 28 73 65 74 66 20 28 61 6c    69 73 74 2d 67 65 74 20 6b 65 79 20 63 6f 6d 70  | ....do.(setf.(alist-get.key.comp | 
| c940 |  6c 65 74 69 6f 6e 2d 63 61 74 65 67 6f 72 79 2d    64 65 66 61 75 6c 74 73 29 20 76 61 6c 29 29 0a  | letion-category-defaults).val)). | 
| c960 |  0a 20 20 28 63 6c 2d 73 79 6d 62 6f 6c 2d 6d 61    63 72 6f 6c 65 74 0a 20 20 20 20 20 20 28 28 63  | ...(cl-symbol-macrolet.......((c | 
| c980 |  61 74 65 67 6f 72 79 2d 73 65 74 74 69 6e 67 2d    6f 76 65 72 72 69 64 65 73 0a 20 20 20 20 20 20  | ategory-setting-overrides....... | 
| c9a0 |  20 20 20 28 61 6c 69 73 74 2d 67 65 74 0a 20 20    20 20 20 20 20 20 20 20 73 65 74 74 69 6e 67 0a  | ...(alist-get...........setting. | 
| c9c0 |  20 20 20 20 20 20 20 20 20 20 28 61 6c 69 73 74    2d 67 65 74 20 63 61 74 65 67 6f 72 79 20 63 6f  | ..........(alist-get.category.co | 
| c9e0 |  6d 70 6c 65 74 69 6f 6e 2d 63 61 74 65 67 6f 72    79 2d 6f 76 65 72 72 69 64 65 73 29 29 29 29 0a  | mpletion-category-overrides)))). | 
| ca00 |  20 20 20 20 28 63 6c 2d 6c 6f 6f 70 0a 20 20 20    20 20 3b 3b 20 54 68 65 73 65 20 74 77 6f 20 74  | ....(cl-loop......;;.These.two.t | 
| ca20 |  72 65 65 73 20 73 68 6f 75 6c 64 20 68 61 76 65    20 74 68 65 20 73 61 6d 65 20 73 74 72 75 63 74  | rees.should.have.the.same.struct | 
| ca40 |  75 72 65 20 62 79 20 74 68 69 73 0a 20 20 20 20    20 3b 3b 20 70 6f 69 6e 74 2e 20 57 65 20 77 61  | ure.by.this......;;.point..We.wa | 
| ca60 |  6e 74 20 74 6f 20 74 72 79 20 74 6f 20 61 76 6f    69 64 20 75 6e 64 6f 69 6e 67 20 61 6e 79 20 63  | nt.to.try.to.avoid.undoing.any.c | 
| ca80 |  68 61 6e 67 65 73 20 74 68 61 74 20 77 65 72 65    0a 20 20 20 20 20 3b 3b 20 6d 61 64 65 20 61 66  | hanges.that.were......;;.made.af | 
| caa0 |  74 65 72 20 74 68 65 20 6d 6f 64 65 20 77 61 73    20 65 6e 61 62 6c 65 64 2e 0a 20 20 20 20 20 66  | ter.the.mode.was.enabled.......f | 
| cac0 |  6f 72 20 28 63 61 74 65 67 6f 72 79 20 2e 20 6e    65 77 2d 6f 76 65 72 72 69 64 65 73 29 0a 20 20  | or.(category...new-overrides)... | 
| cae0 |  20 20 20 69 6e 20 6f 76 65 72 72 69 64 65 73 0a    20 20 20 20 20 66 6f 72 20 28 5f 20 2e 20 6f 6c  | ...in.overrides......for.(_...ol | 
| cb00 |  64 2d 6f 76 65 72 72 69 64 65 73 29 0a 20 20 20    20 20 69 6e 20 70 72 65 73 63 69 65 6e 74 2d 2d  | d-overrides)......in.prescient-- | 
| cb20 |  63 6f 6d 70 6c 65 74 69 6f 6e 2d 6f 6c 64 2d 6f    76 65 72 72 69 64 65 73 0a 20 20 20 20 20 64 6f  | completion-old-overrides......do | 
| cb40 |  20 28 63 6c 2d 6c 6f 6f 70 0a 20 20 20 20 20 20    20 20 20 66 6f 72 20 28 73 65 74 74 69 6e 67 20  | .(cl-loop..........for.(setting. | 
| cb60 |  2e 20 6e 65 77 2d 76 61 6c 75 65 73 29 20 69 6e    20 6e 65 77 2d 6f 76 65 72 72 69 64 65 73 0a 20  | ..new-values).in.new-overrides.. | 
| cb80 |  20 20 20 20 20 20 20 20 66 6f 72 20 28 5f 20 2e    20 6f 6c 64 2d 76 61 6c 75 65 73 29 20 69 6e 20  | ........for.(_...old-values).in. | 
| cba0 |  6f 6c 64 2d 6f 76 65 72 72 69 64 65 73 0a 20 20    20 20 20 20 20 20 20 69 66 20 28 65 71 75 61 6c  | old-overrides..........if.(equal | 
| cbc0 |  20 63 61 74 65 67 6f 72 79 2d 73 65 74 74 69 6e    67 2d 6f 76 65 72 72 69 64 65 73 20 6e 65 77 2d  | .category-setting-overrides.new- | 
| cbe0 |  76 61 6c 75 65 73 29 0a 20 20 20 20 20 20 20 20    20 64 6f 20 28 73 65 74 66 20 63 61 74 65 67 6f  | values)..........do.(setf.catego | 
| cc00 |  72 79 2d 73 65 74 74 69 6e 67 2d 6f 76 65 72 72    69 64 65 73 20 6f 6c 64 2d 76 61 6c 75 65 73 29  | ry-setting-overrides.old-values) | 
| cc20 |  0a 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 64    6f 20 28 63 6c 2d 63 61 6c 6c 66 32 20 72 65 6d  | ..........else.do.(cl-callf2.rem | 
| cc40 |  71 20 27 70 72 65 73 63 69 65 6e 74 20 63 61 74    65 67 6f 72 79 2d 73 65 74 74 69 6e 67 2d 6f 76  | q.'prescient.category-setting-ov | 
| cc60 |  65 72 72 69 64 65 73 29 29 29 29 29 0a 0a 28 64    65 66 76 61 72 2d 6c 6f 63 61 6c 20 70 72 65 73  | errides)))))..(defvar-local.pres | 
| cc80 |  63 69 65 6e 74 2d 2d 63 6f 6d 70 6c 65 74 69 6f    6e 2d 76 61 72 73 2d 61 6c 72 65 61 64 79 2d 6c  | cient--completion-vars-already-l | 
| cca0 |  6f 63 61 6c 20 6e 69 6c 0a 20 20 22 56 61 72 69    61 62 6c 65 73 20 6f 66 20 69 6e 74 65 72 65 73  | ocal.nil..."Variables.of.interes | 
| ccc0 |  74 20 74 68 61 74 20 77 65 72 65 20 61 6c 72 65    61 64 79 20 62 75 66 66 65 72 20 6c 6f 63 61 6c  | t.that.were.already.buffer.local | 
| cce0 |  2e 0a 0a 45 78 74 65 6e 73 69 6f 6e 20 70 61 63    6b 61 67 65 73 20 6d 69 67 68 74 20 77 69 73 68  | ...Extension.packages.might.wish | 
| cd00 |  20 74 6f 20 63 6f 6e 66 69 67 75 72 65 20 74 68    65 20 76 61 72 69 61 62 6c 65 73 20 6c 69 73 74  | .to.configure.the.variables.list | 
| cd20 |  65 64 0a 69 6e 20 60 70 72 65 73 63 69 65 6e 74    2d 2d 63 6f 6d 70 6c 65 74 69 6f 6e 2d 73 65 74  | ed.in.`prescient--completion-set | 
| cd40 |  74 69 6e 67 73 2d 76 61 72 73 27 20 62 75 66 66    65 72 20 6c 6f 63 61 6c 6c 79 2c 20 77 68 6f 73  | tings-vars'.buffer.locally,.whos | 
| cd60 |  65 0a 6c 6f 63 61 6c 6e 65 73 73 20 73 68 6f 75    6c 64 20 62 65 20 75 6e 64 6f 6e 65 20 77 68 65  | e.localness.should.be.undone.whe | 
| cd80 |  6e 20 74 68 65 20 65 78 74 65 6e 73 69 6f 6e 20    6d 6f 64 65 20 69 73 20 64 69 73 61 62 6c 65 64  | n.the.extension.mode.is.disabled | 
| cda0 |  2e 0a 54 68 69 73 20 6c 69 73 74 20 69 73 20 74    6f 20 70 72 65 76 65 6e 74 20 65 78 74 65 6e 73  | ..This.list.is.to.prevent.extens | 
| cdc0 |  69 6f 6e 20 6d 6f 64 65 73 20 66 72 6f 6d 20 6b    69 6c 6c 69 6e 67 20 76 61 72 69 61 62 6c 65 73  | ion.modes.from.killing.variables | 
| cde0 |  0a 74 68 61 74 20 77 65 72 65 20 61 6c 72 65 61    64 79 20 6c 6f 63 61 6c 20 77 68 65 6e 20 74 68  | .that.were.already.local.when.th | 
| ce00 |  65 20 6d 6f 64 65 20 77 61 73 20 65 6e 61 62 6c    65 64 2e 22 29 0a 0a 28 64 65 66 75 6e 20 70 72  | e.mode.was.enabled.")..(defun.pr | 
| ce20 |  65 73 63 69 65 6e 74 2d 2d 63 6f 6d 70 6c 65 74    69 6f 6e 2d 6d 61 6b 65 2d 76 61 72 73 2d 6c 6f  | escient--completion-make-vars-lo | 
| ce40 |  63 61 6c 20 28 29 0a 20 20 22 4d 61 6b 65 20 74    68 65 20 73 65 74 74 69 6e 67 73 20 61 6e 64 20  | cal.()..."Make.the.settings.and. | 
| ce60 |  72 65 73 74 6f 72 61 74 69 6f 6e 20 76 61 72 69    61 62 6c 65 73 20 62 75 66 66 65 72 20 6c 6f 63  | restoration.variables.buffer.loc | 
| ce80 |  61 6c 2e 0a 0a 52 65 63 6f 72 64 20 77 68 65 74    68 65 72 20 61 20 73 65 74 74 69 6e 67 73 20 76  | al...Record.whether.a.settings.v | 
| cea0 |  61 72 69 61 62 6c 65 20 28 66 6f 72 20 65 78 61    6d 70 6c 65 2c 0a 60 63 6f 6d 70 6c 65 74 69 6f  | ariable.(for.example,.`completio | 
| cec0 |  6e 2d 73 74 79 6c 65 73 27 29 20 77 61 73 20 61    6c 72 65 61 64 79 20 6c 6f 63 61 6c 20 69 6e 0a  | n-styles').was.already.local.in. | 
| cee0 |  60 70 72 65 73 63 69 65 6e 74 2d 2d 63 6f 6d 70    6c 65 74 69 6f 6e 2d 76 61 72 73 2d 61 6c 72 65  | `prescient--completion-vars-alre | 
| cf00 |  61 64 79 2d 6c 6f 63 61 6c 27 2e 0a 0a 54 68 69    73 20 6d 75 73 74 20 68 61 70 70 65 6e 20 62 65  | ady-local'...This.must.happen.be | 
| cf20 |  66 6f 72 65 20 73 74 6f 72 69 6e 67 20 6f 6c 64    20 76 61 6c 75 65 73 2e 22 0a 20 20 28 6d 61 70  | fore.storing.old.values."...(map | 
| cf40 |  63 20 23 27 6d 61 6b 65 2d 6c 6f 63 61 6c 2d 76    61 72 69 61 62 6c 65 20 70 72 65 73 63 69 65 6e  | c.#'make-local-variable.prescien | 
| cf60 |  74 2d 2d 63 6f 6d 70 6c 65 74 69 6f 6e 2d 6f 6c    64 2d 76 61 72 73 29 0a 20 20 28 64 6f 6c 69 73  | t--completion-old-vars)...(dolis | 
| cf80 |  74 20 28 76 61 72 20 70 72 65 73 63 69 65 6e 74    2d 2d 63 6f 6d 70 6c 65 74 69 6f 6e 2d 73 65 74  | t.(var.prescient--completion-set | 
| cfa0 |  74 69 6e 67 73 2d 76 61 72 73 29 0a 20 20 20 20    28 69 66 20 28 6c 6f 63 61 6c 2d 76 61 72 69 61  | tings-vars).....(if.(local-varia | 
| cfc0 |  62 6c 65 2d 70 20 76 61 72 29 0a 20 20 20 20 20    20 20 20 28 70 75 73 68 20 76 61 72 20 70 72 65  | ble-p.var).........(push.var.pre | 
| cfe0 |  73 63 69 65 6e 74 2d 2d 63 6f 6d 70 6c 65 74 69    6f 6e 2d 76 61 72 73 2d 61 6c 72 65 61 64 79 2d  | scient--completion-vars-already- | 
| d000 |  6c 6f 63 61 6c 29 0a 20 20 20 20 20 20 28 6d 61    6b 65 2d 6c 6f 63 61 6c 2d 76 61 72 69 61 62 6c  | local).......(make-local-variabl | 
| d020 |  65 20 76 61 72 29 29 29 29 0a 0a 28 64 65 66 75    6e 20 70 72 65 73 63 69 65 6e 74 2d 2d 63 6f 6d  | e.var))))..(defun.prescient--com | 
| d040 |  70 6c 65 74 69 6f 6e 2d 6b 69 6c 6c 2d 6c 6f 63    61 6c 2d 76 61 72 73 20 28 29 0a 20 20 22 4b 69  | pletion-kill-local-vars.()..."Ki | 
| d060 |  6c 6c 20 6c 6f 63 61 6c 20 73 65 74 74 69 6e 67    73 20 61 6e 64 20 72 65 73 74 6f 72 61 74 69 6f  | ll.local.settings.and.restoratio | 
| d080 |  6e 20 76 61 72 69 61 62 6c 65 73 2e 0a 0a 44 6f    6e 27 74 20 6b 69 6c 6c 20 74 68 65 20 76 61 72  | n.variables...Don't.kill.the.var | 
| d0a0 |  69 61 62 6c 65 73 20 69 66 20 74 68 65 79 20 61    72 65 20 6d 65 6d 62 65 72 73 20 6f 66 0a 60 70  | iables.if.they.are.members.of.`p | 
| d0c0 |  72 65 73 63 69 65 6e 74 2d 2d 63 6f 6d 70 6c 65    74 69 6f 6e 2d 76 61 72 73 2d 61 6c 72 65 61 64  | rescient--completion-vars-alread | 
| d0e0 |  79 2d 6c 6f 63 61 6c 27 2e 0a 0a 54 68 69 73 20    6d 75 73 74 20 68 61 70 70 65 6e 20 61 66 74 65  | y-local'...This.must.happen.afte | 
| d100 |  72 20 72 65 73 74 6f 72 69 6e 67 20 6f 6c 64 20    76 61 6c 75 65 73 2e 22 0a 20 20 28 64 6f 6c 69  | r.restoring.old.values."...(doli | 
| d120 |  73 74 20 28 76 61 72 20 70 72 65 73 63 69 65 6e    74 2d 2d 63 6f 6d 70 6c 65 74 69 6f 6e 2d 73 65  | st.(var.prescient--completion-se | 
| d140 |  74 74 69 6e 67 73 2d 76 61 72 73 29 0a 20 20 20    20 28 75 6e 6c 65 73 73 20 28 6d 65 6d 71 20 76  | ttings-vars).....(unless.(memq.v | 
| d160 |  61 72 20 70 72 65 73 63 69 65 6e 74 2d 2d 63 6f    6d 70 6c 65 74 69 6f 6e 2d 76 61 72 73 2d 61 6c  | ar.prescient--completion-vars-al | 
| d180 |  72 65 61 64 79 2d 6c 6f 63 61 6c 29 0a 20 20 20    20 20 20 28 6b 69 6c 6c 2d 6c 6f 63 61 6c 2d 76  | ready-local).......(kill-local-v | 
| d1a0 |  61 72 69 61 62 6c 65 20 76 61 72 29 29 29 0a 20    20 28 73 65 74 71 20 70 72 65 73 63 69 65 6e 74  | ariable.var)))...(setq.prescient | 
| d1c0 |  2d 2d 63 6f 6d 70 6c 65 74 69 6f 6e 2d 76 61 72    73 2d 61 6c 72 65 61 64 79 2d 6c 6f 63 61 6c 20  | --completion-vars-already-local. | 
| d1e0 |  6e 69 6c 29 29 0a 0a 3b 3b 3b 3b 20 54 6f 67 67    6c 69 6e 67 20 63 6f 6d 6d 61 6e 64 73 0a 3b 3b  | nil))..;;;;.Toggling.commands.;; | 
| d200 |  20 54 68 65 73 65 20 63 6f 6d 6d 61 6e 64 73 20    61 72 65 20 6d 65 61 6e 74 20 74 6f 20 62 65 20  | .These.commands.are.meant.to.be. | 
| d220 |  62 6f 75 6e 64 20 69 6e 20 61 20 63 6f 6d 70 6c    65 74 69 6f 6e 20 55 49 2c 20 69 6e 20 77 68 69  | bound.in.a.completion.UI,.in.whi | 
| d240 |  63 68 0a 3b 3b 20 60 70 72 65 73 63 69 65 6e 74    2d 66 69 6c 74 65 72 2d 6d 65 74 68 6f 64 27 20  | ch.;;.`prescient-filter-method'. | 
| d260 |  63 61 6e 20 62 65 20 62 6f 75 6e 64 20 62 75 66    66 65 72 20 6c 6f 63 61 6c 6c 79 2e 0a 0a 28 64  | can.be.bound.buffer.locally...(d | 
| d280 |  65 66 63 6f 6e 73 74 20 70 72 65 73 63 69 65 6e    74 2d 2d 74 6f 67 67 6c 65 2d 76 61 72 73 0a 20  | efconst.prescient--toggle-vars.. | 
| d2a0 |  20 27 28 20 70 72 65 73 63 69 65 6e 74 2d 66 69    6c 74 65 72 2d 6d 65 74 68 6f 64 20 70 72 65 73  | .'(.prescient-filter-method.pres | 
| d2c0 |  63 69 65 6e 74 2d 75 73 65 2d 63 61 73 65 2d 66    6f 6c 64 69 6e 67 0a 20 20 20 20 20 70 72 65 73  | cient-use-case-folding......pres | 
| d2e0 |  63 69 65 6e 74 2d 75 73 65 2d 63 68 61 72 2d 66    6f 6c 64 69 6e 67 29 0a 20 20 22 56 61 72 69 61  | cient-use-char-folding)..."Varia | 
| d300 |  62 6c 65 73 20 74 68 61 74 20 63 61 6e 20 62 65    20 63 68 61 6e 67 65 64 20 6c 6f 63 61 6c 6c 79  | bles.that.can.be.changed.locally | 
| d320 |  20 62 79 20 74 6f 67 67 6c 69 6e 67 20 63 6f 6d    6d 61 6e 64 73 2e 0a 0a 41 6e 20 65 78 70 6c 69  | .by.toggling.commands...An.expli | 
| d340 |  63 69 74 20 6c 69 73 74 20 69 73 20 6e 65 65 64    65 64 20 66 6f 72 20 43 6f 72 66 75 2e 22 29 0a  | cit.list.is.needed.for.Corfu."). | 
| d360 |  0a 28 64 65 66 76 61 72 20 70 72 65 73 63 69 65    6e 74 2d 2d 74 6f 67 67 6c 65 2d 72 65 66 72 65  | .(defvar.prescient--toggle-refre | 
| d380 |  73 68 2d 66 75 6e 63 74 69 6f 6e 73 20 6e 69 6c    0a 20 20 22 46 75 6e 63 74 69 6f 6e 73 20 74 6f  | sh-functions.nil..."Functions.to | 
| d3a0 |  20 72 75 6e 20 74 6f 20 66 6f 72 63 65 20 72 65    66 72 65 73 68 69 6e 67 20 74 68 65 20 63 6f 6d  | .run.to.force.refreshing.the.com | 
| d3c0 |  70 6c 65 74 69 6f 6e 20 55 49 2e 0a 46 75 6e 63    74 69 6f 6e 73 20 61 72 65 20 61 64 64 65 64 20  | pletion.UI..Functions.are.added. | 
| d3e0 |  62 79 20 74 68 65 20 69 6e 74 65 67 72 61 74 69    6f 6e 20 70 61 63 6b 61 67 65 73 2e 22 29 0a 0a  | by.the.integration.packages.").. | 
| d400 |  28 64 65 66 75 6e 20 70 72 65 73 63 69 65 6e 74    2d 2d 74 6f 67 67 6c 65 2d 72 65 66 72 65 73 68  | (defun.prescient--toggle-refresh | 
| d420 |  20 28 29 0a 20 20 22 52 75 6e 20 74 68 65 20 55    49 20 72 65 66 72 65 73 68 20 66 75 6e 63 74 69  | .()..."Run.the.UI.refresh.functi | 
| d440 |  6f 6e 73 2e 22 0a 20 20 28 72 75 6e 2d 68 6f 6f    6b 73 20 27 70 72 65 73 63 69 65 6e 74 2d 2d 74  | ons."...(run-hooks.'prescient--t | 
| d460 |  6f 67 67 6c 65 2d 72 65 66 72 65 73 68 2d 66 75    6e 63 74 69 6f 6e 73 29 29 0a 0a 28 64 65 66 76  | oggle-refresh-functions))..(defv | 
| d480 |  61 72 20 70 72 65 73 63 69 65 6e 74 2d 74 6f 67    67 6c 65 2d 6d 61 70 20 28 6d 61 6b 65 2d 73 70  | ar.prescient-toggle-map.(make-sp | 
| d4a0 |  61 72 73 65 2d 6b 65 79 6d 61 70 29 0a 20 20 22    54 6f 67 67 6c 69 6e 67 20 63 6f 6d 6d 61 6e 64  | arse-keymap)..."Toggling.command | 
| d4c0 |  73 20 66 6f 72 20 60 70 72 65 73 63 69 65 6e 74    2e 65 6c 27 20 66 69 6c 74 65 72 73 20 69 6e 20  | s.for.`prescient.el'.filters.in. | 
| d4e0 |  6d 69 6e 69 62 75 66 66 65 72 20 63 6f 6d 70 6c    65 74 69 6f 6e 2e 0a 54 68 69 73 20 6d 61 70 20  | minibuffer.completion..This.map. | 
| d500 |  69 73 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79    20 62 6f 75 6e 64 20 62 79 20 74 68 65 20 69 6e  | is.automatically.bound.by.the.in | 
| d520 |  74 65 67 72 61 74 69 6f 6e 20 70 61 63 6b 61 67    65 73 2e 22 29 0a 0a 3b 3b 3b 23 23 23 61 75 74  | tegration.packages.")..;;;###aut | 
| d540 |  6f 6c 6f 61 64 0a 28 64 65 66 6d 61 63 72 6f 20    70 72 65 73 63 69 65 6e 74 2d 63 72 65 61 74 65  | oload.(defmacro.prescient-create | 
| d560 |  2d 61 6e 64 2d 62 69 6e 64 2d 74 6f 67 67 6c 65    2d 63 6f 6d 6d 61 6e 64 0a 20 20 20 20 28 66 69  | -and-bind-toggle-command.....(fi | 
| d580 |  6c 74 65 72 2d 74 79 70 65 20 6b 62 64 2d 73 74    72 69 6e 67 29 0a 20 20 22 43 72 65 61 74 65 20  | lter-type.kbd-string)..."Create. | 
| d5a0 |  61 6e 64 20 62 69 6e 64 20 61 20 63 6f 6d 6d 61    6e 64 20 74 6f 20 74 6f 67 67 6c 65 20 74 68 65  | and.bind.a.command.to.toggle.the | 
| d5c0 |  20 75 73 65 20 6f 66 20 61 20 66 69 6c 74 65 72    20 6d 65 74 68 6f 64 2e 0a 0a 54 68 65 20 63 72  | .use.of.a.filter.method...The.cr | 
| d5e0 |  65 61 74 65 64 20 63 6f 6d 6d 61 6e 64 20 74 6f    67 67 6c 65 73 20 74 68 65 20 46 49 4c 54 45 52  | eated.command.toggles.the.FILTER | 
| d600 |  2d 54 59 50 45 20 6d 65 74 68 6f 64 20 6f 6e 0a    6f 72 20 6f 66 66 20 62 75 66 66 65 72 20 6c 6f  | -TYPE.method.on.or.off.buffer.lo | 
| d620 |  63 61 6c 6c 79 2c 20 61 6e 64 20 64 6f 65 73 6e    27 74 20 61 66 66 65 63 74 20 74 68 65 20 64 65  | cally,.and.doesn't.affect.the.de | 
| d640 |  66 61 75 6c 74 0a 62 65 68 61 76 69 6f 72 20 28    64 65 74 65 72 6d 69 6e 65 64 20 62 79 20 60 70  | fault.behavior.(determined.by.`p | 
| d660 |  72 65 73 63 69 65 6e 74 2d 66 69 6c 74 65 72 2d    6d 65 74 68 6f 64 27 29 2e 0a 0a 54 68 65 20 63  | rescient-filter-method')...The.c | 
| d680 |  72 65 61 74 65 64 20 63 6f 6d 6d 61 6e 64 20 69    73 20 62 6f 75 6e 64 20 74 6f 20 4b 42 44 2d 53  | reated.command.is.bound.to.KBD-S | 
| d6a0 |  54 52 49 4e 47 20 69 6e 0a 60 70 72 65 73 63 69    65 6e 74 2d 74 6f 67 67 6c 65 2d 6d 61 70 27 2e  | TRING.in.`prescient-toggle-map'. | 
| d6c0 |  20 54 68 69 73 20 6d 61 70 20 69 73 20 69 74 73    65 6c 66 20 62 6f 75 6e 64 20 74 6f 20 60 4d 2d  | .This.map.is.itself.bound.to.`M- | 
| d6e0 |  73 27 0a 69 6e 20 74 68 65 20 63 6f 6d 70 6c 65    74 69 6f 6e 20 62 75 66 66 65 72 20 77 68 65 6e  | s'.in.the.completion.buffer.when | 
| d700 |  20 60 73 65 6c 65 63 74 72 75 6d 2d 70 72 65 73    63 69 65 6e 74 2d 6d 6f 64 65 27 20 6f 72 0a 60  | .`selectrum-prescient-mode'.or.` | 
| d720 |  76 65 72 74 69 63 6f 2d 70 72 65 73 63 69 65 6e    74 2d 6d 6f 64 65 27 20 61 72 65 20 65 6e 61 62  | vertico-prescient-mode'.are.enab | 
| d740 |  6c 65 64 2e 0a 0a 46 49 4c 54 45 52 2d 54 59 50    45 20 69 73 20 61 6e 20 75 6e 71 75 6f 74 65 64  | led...FILTER-TYPE.is.an.unquoted | 
| d760 |  20 73 79 6d 62 6f 6c 20 74 68 61 74 20 63 61 6e    20 62 65 20 75 73 65 64 20 69 6e 0a 60 70 72 65  | .symbol.that.can.be.used.in.`pre | 
| d780 |  73 63 69 65 6e 74 2d 66 69 6c 74 65 72 2d 6d 65    74 68 6f 64 27 2e 20 4b 42 44 2d 53 54 52 49 4e  | scient-filter-method'..KBD-STRIN | 
| d7a0 |  47 20 69 73 20 61 20 73 74 72 69 6e 67 20 74 68    61 74 20 63 61 6e 20 62 65 0a 70 61 73 73 65 64  | G.is.a.string.that.can.be.passed | 
| d7c0 |  20 74 6f 20 60 6b 62 64 27 2e 22 0a 20 20 28 6c    65 74 2a 20 28 28 66 69 6c 74 65 72 2d 74 79 70  | .to.`kbd'."...(let*.((filter-typ | 
| d7e0 |  65 2d 6e 61 6d 65 20 28 73 79 6d 62 6f 6c 2d 6e    61 6d 65 20 66 69 6c 74 65 72 2d 74 79 70 65 29  | e-name.(symbol-name.filter-type) | 
| d800 |  29 29 0a 20 20 20 20 60 28 64 65 66 69 6e 65 2d    6b 65 79 20 70 72 65 73 63 69 65 6e 74 2d 74 6f  | )).....`(define-key.prescient-to | 
| d820 |  67 67 6c 65 2d 6d 61 70 20 28 6b 62 64 20 2c 6b    62 64 2d 73 74 72 69 6e 67 29 0a 20 20 20 20 20  | ggle-map.(kbd.,kbd-string)...... | 
| d840 |  20 20 20 20 20 20 20 20 20 20 20 20 28 64 65 66    75 6e 20 2c 28 69 6e 74 65 72 6e 20 28 63 6f 6e  | ............(defun.,(intern.(con | 
| d860 |  63 61 74 20 22 70 72 65 73 63 69 65 6e 74 2d 74    6f 67 67 6c 65 2d 22 20 66 69 6c 74 65 72 2d 74  | cat."prescient-toggle-".filter-t | 
| d880 |  79 70 65 2d 6e 61 6d 65 29 29 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ype-name))...................... | 
| d8a0 |  28 61 72 67 29 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 3b 20 41 72 67 20 6c  | (arg)....................;.Arg.l | 
| d8c0 |  69 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 2c 28 66 6f 72 6d 61 74 0a  | ist....................,(format. | 
| d8e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 22 54 6f 67 67 6c 65 20 74 68 65  | ....................."Toggle.the | 
| d900 |  20 5c 22 25 73 5c 22 20 66 69 6c 74 65 72 20 6f    6e 20 6f 72 20 6f 66 66 2e 20 57 69 74 68 20 41  | .\"%s\".filter.on.or.off..With.A | 
| d920 |  52 47 2c 20 75 73 65 20 6f 6e 6c 79 20 74 68 69    73 20 66 69 6c 74 65 72 2e 0a 54 68 69 73 20 74  | RG,.use.only.this.filter..This.t | 
| d940 |  6f 67 67 6c 69 6e 67 20 6f 6e 6c 79 20 61 66 66    65 63 74 73 20 66 69 6c 74 65 72 69 6e 67 20 69  | oggling.only.affects.filtering.i | 
| d960 |  6e 20 74 68 65 20 63 75 72 72 65 6e 74 20 63 6f    6d 70 6c 65 74 69 6f 6e 0a 62 75 66 66 65 72 2e  | n.the.current.completion.buffer. | 
| d980 |  20 49 74 20 64 6f 65 73 20 6e 6f 74 20 61 66 66    65 63 74 20 74 68 65 20 64 65 66 61 75 6c 74 20  | .It.does.not.affect.the.default. | 
| d9a0 |  62 65 68 61 76 69 6f 72 20 28 64 65 74 65 72 6d    69 6e 65 64 20 62 79 0a 60 70 72 65 73 63 69 65  | behavior.(determined.by.`prescie | 
| d9c0 |  6e 74 2d 66 69 6c 74 65 72 2d 6d 65 74 68 6f 64    27 29 2e 22 20 20 66 69 6c 74 65 72 2d 74 79 70  | nt-filter-method')."..filter-typ | 
| d9e0 |  65 2d 6e 61 6d 65 29 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 28 69 6e 74 65  | e-name)....................(inte | 
| da00 |  72 61 63 74 69 76 65 20 22 50 22 29 0a 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ractive."P").................... | 
| da20 |  20 3b 3b 20 4d 61 6b 65 20 60 70 72 65 73 63 69    65 6e 74 2d 66 69 6c 74 65 72 2d 6d 65 74 68 6f  | .;;.Make.`prescient-filter-metho | 
| da40 |  64 27 20 62 75 66 66 65 72 2d 6c 6f 63 61 6c 20    69 6e 20 74 68 65 0a 20 20 20 20 20 20 20 20 20  | d'.buffer-local.in.the.......... | 
| da60 |  20 20 20 20 20 20 20 20 20 20 3b 3b 20 63 6f 6d    70 6c 65 74 69 6f 6e 20 62 75 66 66 65 72 2e 20  | ..........;;.completion.buffer.. | 
| da80 |  57 65 20 64 6f 6e 27 74 20 77 61 6e 74 20 74 6f    20 61 63 63 69 64 65 6e 74 61 6c 6c 79 20 63 68  | We.don't.want.to.accidentally.ch | 
| daa0 |  61 6e 67 65 20 74 68 65 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 75  | ange.the....................;;.u | 
| dac0 |  73 65 72 27 73 20 64 65 66 61 75 6c 74 20 62 65    68 61 76 69 6f 72 2e 0a 20 20 20 20 20 20 20 20  | ser's.default.behavior.......... | 
| dae0 |  20 20 20 20 20 20 20 20 20 20 20 28 6d 61 6b 65    2d 6c 6f 63 61 6c 2d 76 61 72 69 61 62 6c 65 20  | ...........(make-local-variable. | 
| db00 |  27 70 72 65 73 63 69 65 6e 74 2d 66 69 6c 74 65    72 2d 6d 65 74 68 6f 64 29 0a 0a 20 20 20 20 20  | 'prescient-filter-method)....... | 
| db20 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69    66 20 61 72 67 0a 20 20 20 20 20 20 20 20 20 20  | ..............(if.arg........... | 
| db40 |  20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20    49 66 20 75 73 65 72 20 70 72 6f 76 69 64 65 73  | .............;;.If.user.provides | 
| db60 |  20 61 20 70 72 65 66 69 78 20 61 72 67 75 6d 65    6e 74 2c 20 73 65 74 20 66 69 6c 74 65 72 69 6e  | .a.prefix.argument,.set.filterin | 
| db80 |  67 20 74 6f 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 62  | g.to........................;;.b | 
| dba0 |  65 20 61 20 6c 69 73 74 20 6f 66 20 6f 6e 6c 79    20 6f 6e 65 20 66 69 6c 74 65 72 20 74 79 70 65  | e.a.list.of.only.one.filter.type | 
| dbc0 |  2e 0a 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 71 20 70  | .........................(setq.p | 
| dbe0 |  72 65 73 63 69 65 6e 74 2d 66 69 6c 74 65 72 2d    6d 65 74 68 6f 64 20 27 28 2c 66 69 6c 74 65 72  | rescient-filter-method.'(,filter | 
| dc00 |  2d 74 79 70 65 29 29 0a 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b  | -type)).......................;; | 
| dc20 |  20 4f 74 68 65 72 77 69 73 65 2c 20 69 66 20 74    68 65 20 63 75 72 72 65 6e 74 20 73 65 74 74 69  | .Otherwise,.if.the.current.setti | 
| dc40 |  6e 67 20 69 73 20 61 20 66 75 6e 63 74 69 6f 6e    2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ng.is.a.function,............... | 
| dc60 |  20 20 20 20 20 20 20 3b 3b 20 65 76 61 6c 75 61    74 65 20 69 74 20 74 6f 20 67 65 74 20 74 68 65  | .......;;.evaluate.it.to.get.the | 
| dc80 |  20 76 61 6c 75 65 2e 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68  | .value.......................(wh | 
| dca0 |  65 6e 20 28 66 75 6e 63 74 69 6f 6e 70 20 70 72    65 73 63 69 65 6e 74 2d 66 69 6c 74 65 72 2d 6d  | en.(functionp.prescient-filter-m | 
| dcc0 |  65 74 68 6f 64 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 28 73  | ethod)........................(s | 
| dce0 |  65 74 71 20 70 72 65 73 63 69 65 6e 74 2d 66 69    6c 74 65 72 2d 6d 65 74 68 6f 64 0a 20 20 20 20  | etq.prescient-filter-method..... | 
| dd00 |  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 61 6c  | .........................(funcal | 
| dd20 |  6c 20 70 72 65 73 63 69 65 6e 74 2d 66 69 6c 74    65 72 2d 6d 65 74 68 6f 64 29 29 29 0a 0a 20 20  | l.prescient-filter-method))).... | 
| dd40 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 3b 3b 20 49 66 20 77 65 20 6e 65 65 64  | ...................;;.If.we.need | 
| dd60 |  20 74 6f 20 61 64 64 20 6f 72 20 72 65 6d 6f 76    65 20 66 72 6f 6d 20 74 68 65 20 6c 69 73 74 2c  | .to.add.or.remove.from.the.list, | 
| dd80 |  20 6d 61 6b 65 20 73 75 72 65 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .make.sure...................... | 
| dda0 |  3b 3b 20 69 74 27 73 20 61 63 74 75 61 6c 6c 79    20 61 20 6c 69 73 74 20 61 6e 64 20 6e 6f 74 20  | ;;.it's.actually.a.list.and.not. | 
| ddc0 |  6a 75 73 74 20 61 20 73 79 6d 62 6f 6c 2e 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | just.a.symbol................... | 
| dde0 |  20 20 20 20 28 77 68 65 6e 20 28 73 79 6d 62 6f    6c 70 20 70 72 65 73 63 69 65 6e 74 2d 66 69 6c  | ....(when.(symbolp.prescient-fil | 
| de00 |  74 65 72 2d 6d 65 74 68 6f 64 29 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ter-method)..................... | 
| de20 |  20 20 20 28 73 65 74 71 20 70 72 65 73 63 69 65    6e 74 2d 66 69 6c 74 65 72 2d 6d 65 74 68 6f 64  | ...(setq.prescient-filter-method | 
| de40 |  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 20 20 20 20 28 6c  | ..............................(l | 
| de60 |  69 73 74 20 70 72 65 73 63 69 65 6e 74 2d 66 69    6c 74 65 72 2d 6d 65 74 68 6f 64 29 29 29 0a 0a  | ist.prescient-filter-method))).. | 
| de80 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 28 69 66 20 28 65 71 75 61 6c 20  | .....................(if.(equal. | 
| dea0 |  70 72 65 73 63 69 65 6e 74 2d 66 69 6c 74 65 72    2d 6d 65 74 68 6f 64 20 27 28 2c 66 69 6c 74 65  | prescient-filter-method.'(,filte | 
| dec0 |  72 2d 74 79 70 65 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  | r-type))........................ | 
| dee0 |  20 20 3b 3b 20 4d 61 6b 65 20 73 75 72 65 20 74    68 65 20 75 73 65 72 20 64 6f 65 73 6e 27 74 20  | ..;;.Make.sure.the.user.doesn't. | 
| df00 |  61 63 63 69 64 65 6e 74 61 6c 6c 79 20 64 69 73    61 62 6c 65 20 61 6c 6c 0a 20 20 20 20 20 20 20  | accidentally.disable.all........ | 
| df20 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 3b 3b 20 66 69 6c 74 65 72 69 6e 67 2e 0a  | ..................;;.filtering.. | 
| df40 |  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 75 73 65 72 2d 65  | .........................(user-e | 
| df60 |  72 72 6f 72 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 20 2c  | rror..........................., | 
| df80 |  28 63 6f 6e 63 61 74 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  | (concat......................... | 
| dfa0 |  20 20 20 20 22 50 72 65 73 63 69 65 6e 74 2e 65    6c 3a 20 43 61 6e 27 74 20 74 6f 67 67 6c 65 20  | ...."Prescient.el:.Can't.toggle. | 
| dfc0 |  6f 66 66 20 6f 6e 6c 79 20 61 63 74 69 76 65 20    66 69 6c 74 65 72 20 6d 65 74 68 6f 64 3a 20 22  | off.only.active.filter.method:." | 
| dfe0 |  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 20 20 20 66 69 6c  | .............................fil | 
| e000 |  74 65 72 2d 74 79 70 65 2d 6e 61 6d 65 29 29 0a    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ter-type-name))................. | 
| e020 |  20 20 20 20 20 20 20 20 28 73 65 74 71 20 70 72    65 73 63 69 65 6e 74 2d 66 69 6c 74 65 72 2d 6d  | ........(setq.prescient-filter-m | 
| e040 |  65 74 68 6f 64 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 20  | ethod........................... | 
| e060 |  20 20 20 28 69 66 20 28 6d 65 6d 71 20 27 2c 66    69 6c 74 65 72 2d 74 79 70 65 20 70 72 65 73 63  | ...(if.(memq.',filter-type.presc | 
| e080 |  69 65 6e 74 2d 66 69 6c 74 65 72 2d 6d 65 74 68    6f 64 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  | ient-filter-method)............. | 
| e0a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 3b 3b 20 45 76 65 6e 20 77 68 65  | .....................;;.Even.whe | 
| e0c0 |  6e 20 72 75 6e 6e 69 6e 67 20 60 6d 61 6b 65 2d    6c 6f 63 61 6c 2d 76 61 72 69 61 62 6c 65 27 2c  | n.running.`make-local-variable', | 
| e0e0 |  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 20 20 20 20 20 20  | ................................ | 
| e100 |  20 20 3b 3b 20 69 74 20 73 65 65 6d 73 20 60 64    65 6c 71 27 20 6d 69 67 68 74 20 73 74 69 6c 6c  | ..;;.it.seems.`delq'.might.still | 
| e120 |  20 6d 6f 64 69 66 79 20 74 68 65 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .modify.the..................... | 
| e140 |  20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20    67 6c 6f 62 61 6c 20 76 61 6c 75 65 2c 20 73 6f  | .............;;.global.value,.so | 
| e160 |  20 77 65 20 75 73 65 20 60 72 65 6d 71 27 20 68    65 72 65 2e 0a 20 20 20 20 20 20 20 20 20 20 20  | .we.use.`remq'.here............. | 
| e180 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 28 72 65 6d 71 20 27 2c 66 69  | ......................(remq.',fi | 
| e1a0 |  6c 74 65 72 2d 74 79 70 65 20 70 72 65 73 63 69    65 6e 74 2d 66 69 6c 74 65 72 2d 6d 65 74 68 6f  | lter-type.prescient-filter-metho | 
| e1c0 |  64 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 20 20 20 20  | d).............................. | 
| e1e0 |  20 20 28 63 6f 6e 73 20 27 2c 66 69 6c 74 65 72    2d 74 79 70 65 20 70 72 65 73 63 69 65 6e 74 2d  | ..(cons.',filter-type.prescient- | 
| e200 |  66 69 6c 74 65 72 2d 6d 65 74 68 6f 64 29 29 29    29 29 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20  | filter-method))))).............. | 
| e220 |  20 20 20 20 20 20 20 3b 3b 20 41 66 74 65 72 20    63 68 61 6e 67 69 6e 67 20 60 70 72 65 73 63 69  | .......;;.After.changing.`presci | 
| e240 |  65 6e 74 2d 66 69 6c 74 65 72 2d 6d 65 74 68 6f    64 27 2c 20 74 65 6c 6c 20 74 68 65 20 75 73 65  | ent-filter-method',.tell.the.use | 
| e260 |  72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 3b 3b 20 74 68 65 20 6e 65 77 20  | r....................;;.the.new. | 
| e280 |  76 61 6c 75 65 20 61 6e 64 20 75 70 64 61 74 65    20 74 68 65 20 55 49 27 73 20 64 69 73 70 6c 61  | value.and.update.the.UI's.displa | 
| e2a0 |  79 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 28 6d 65 73 73 61 67 65 20 22  | y.....................(message." | 
| e2c0 |  50 72 65 73 63 69 65 6e 74 2e 65 6c 20 66 69 6c    74 65 72 20 69 73 20 6e 6f 77 20 25 73 22 0a 20  | Prescient.el.filter.is.now.%s".. | 
| e2e0 |  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 70 72 65 73 63  | ...........................presc | 
| e300 |  69 65 6e 74 2d 66 69 6c 74 65 72 2d 6d 65 74 68    6f 64 29 0a 0a 20 20 20 20 20 20 20 20 20 20 20  | ient-filter-method)............. | 
| e320 |  20 20 20 20 20 20 20 20 3b 3b 20 43 61 6c 6c 20    22 65 78 68 69 62 69 74 22 20 66 75 6e 63 74 69  | ........;;.Call."exhibit".functi | 
| e340 |  6f 6e 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 28 70 72 65 73 63 69 65 6e  | on.....................(prescien | 
| e360 |  74 2d 2d 74 6f 67 67 6c 65 2d 72 65 66 72 65 73    68 29 29 29 29 29 0a 0a 28 70 72 65 73 63 69 65  | t--toggle-refresh)))))..(prescie | 
| e380 |  6e 74 2d 63 72 65 61 74 65 2d 61 6e 64 2d 62 69    6e 64 2d 74 6f 67 67 6c 65 2d 63 6f 6d 6d 61 6e  | nt-create-and-bind-toggle-comman | 
| e3a0 |  64 20 61 6e 63 68 6f 72 65 64 20 22 61 22 29 0a    28 70 72 65 73 63 69 65 6e 74 2d 63 72 65 61 74  | d.anchored."a").(prescient-creat | 
| e3c0 |  65 2d 61 6e 64 2d 62 69 6e 64 2d 74 6f 67 67 6c    65 2d 63 6f 6d 6d 61 6e 64 20 66 75 7a 7a 79 20  | e-and-bind-toggle-command.fuzzy. | 
| e3e0 |  22 66 22 29 0a 28 70 72 65 73 63 69 65 6e 74 2d    63 72 65 61 74 65 2d 61 6e 64 2d 62 69 6e 64 2d  | "f").(prescient-create-and-bind- | 
| e400 |  74 6f 67 67 6c 65 2d 63 6f 6d 6d 61 6e 64 20 69    6e 69 74 69 61 6c 69 73 6d 20 22 69 22 29 0a 28  | toggle-command.initialism."i").( | 
| e420 |  70 72 65 73 63 69 65 6e 74 2d 63 72 65 61 74 65    2d 61 6e 64 2d 62 69 6e 64 2d 74 6f 67 67 6c 65  | prescient-create-and-bind-toggle | 
| e440 |  2d 63 6f 6d 6d 61 6e 64 20 6c 69 74 65 72 61 6c    20 22 6c 22 29 0a 28 70 72 65 73 63 69 65 6e 74  | -command.literal."l").(prescient | 
| e460 |  2d 63 72 65 61 74 65 2d 61 6e 64 2d 62 69 6e 64    2d 74 6f 67 67 6c 65 2d 63 6f 6d 6d 61 6e 64 20  | -create-and-bind-toggle-command. | 
| e480 |  6c 69 74 65 72 61 6c 2d 70 72 65 66 69 78 20 22    50 22 29 0a 28 70 72 65 73 63 69 65 6e 74 2d 63  | literal-prefix."P").(prescient-c | 
| e4a0 |  72 65 61 74 65 2d 61 6e 64 2d 62 69 6e 64 2d 74    6f 67 67 6c 65 2d 63 6f 6d 6d 61 6e 64 20 70 72  | reate-and-bind-toggle-command.pr | 
| e4c0 |  65 66 69 78 20 22 70 22 29 0a 28 70 72 65 73 63    69 65 6e 74 2d 63 72 65 61 74 65 2d 61 6e 64 2d  | efix."p").(prescient-create-and- | 
| e4e0 |  62 69 6e 64 2d 74 6f 67 67 6c 65 2d 63 6f 6d 6d    61 6e 64 20 72 65 67 65 78 70 20 22 72 22 29 0a  | bind-toggle-command.regexp."r"). | 
| e500 |  0a 28 64 65 66 75 6e 20 70 72 65 73 63 69 65 6e    74 2d 74 6f 67 67 6c 65 2d 63 68 61 72 2d 66 6f  | .(defun.prescient-toggle-char-fo | 
| e520 |  6c 64 20 28 29 0a 20 20 22 54 6f 67 67 6c 65 20    63 68 61 72 61 63 74 65 72 20 66 6f 6c 64 69 6e  | ld.()..."Toggle.character.foldin | 
| e540 |  67 20 69 6e 20 74 68 65 20 63 75 72 72 65 6e 74    20 63 6f 6d 70 6c 65 74 69 6f 6e 20 62 75 66 66  | g.in.the.current.completion.buff | 
| e560 |  65 72 2e 0a 0a 53 65 65 20 74 68 65 20 75 73 65    72 20 6f 70 74 69 6f 6e 20 60 70 72 65 73 63 69  | er...See.the.user.option.`presci | 
| e580 |  65 6e 74 2d 75 73 65 2d 63 68 61 72 2d 66 6f 6c    64 69 6e 67 27 2e 22 0a 20 20 28 69 6e 74 65 72  | ent-use-char-folding'."...(inter | 
| e5a0 |  61 63 74 69 76 65 29 0a 20 20 28 73 65 74 71 2d    6c 6f 63 61 6c 20 70 72 65 73 63 69 65 6e 74 2d  | active)...(setq-local.prescient- | 
| e5c0 |  75 73 65 2d 63 68 61 72 2d 66 6f 6c 64 69 6e 67    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28  | use-char-folding...............( | 
| e5e0 |  6e 6f 74 20 70 72 65 73 63 69 65 6e 74 2d 75 73    65 2d 63 68 61 72 2d 66 6f 6c 64 69 6e 67 29 29  | not.prescient-use-char-folding)) | 
| e600 |  0a 20 20 28 6d 65 73 73 61 67 65 20 22 43 68 61    72 61 63 74 65 72 20 66 6f 6c 64 69 6e 67 20 74  | ...(message."Character.folding.t | 
| e620 |  6f 67 67 6c 65 64 20 25 73 22 0a 20 20 20 20 20    20 20 20 20 20 20 28 69 66 20 70 72 65 73 63 69  | oggled.%s"............(if.presci | 
| e640 |  65 6e 74 2d 75 73 65 2d 63 68 61 72 2d 66 6f 6c    64 69 6e 67 20 22 6f 6e 22 20 22 6f 66 66 22 29  | ent-use-char-folding."on"."off") | 
| e660 |  29 0a 20 20 28 70 72 65 73 63 69 65 6e 74 2d 2d    74 6f 67 67 6c 65 2d 72 65 66 72 65 73 68 29 29  | )...(prescient--toggle-refresh)) | 
| e680 |  0a 0a 3b 3b 20 54 68 69 73 20 69 73 20 74 68 65    20 73 61 6d 65 20 62 69 6e 64 69 6e 67 20 75 73  | ..;;.This.is.the.same.binding.us | 
| e6a0 |  65 64 20 62 79 20 60 69 73 65 61 72 63 68 2d 74    6f 67 67 6c 65 2d 63 68 61 72 2d 66 6f 6c 64 27  | ed.by.`isearch-toggle-char-fold' | 
| e6c0 |  2e 0a 28 64 65 66 69 6e 65 2d 6b 65 79 20 70 72    65 73 63 69 65 6e 74 2d 74 6f 67 67 6c 65 2d 6d  | ..(define-key.prescient-toggle-m | 
| e6e0 |  61 70 20 28 6b 62 64 20 22 27 22 29 0a 20 20 20    20 20 20 20 20 20 20 20 20 23 27 70 72 65 73 63  | ap.(kbd."'").............#'presc | 
| e700 |  69 65 6e 74 2d 74 6f 67 67 6c 65 2d 63 68 61 72    2d 66 6f 6c 64 29 0a 0a 28 64 65 66 75 6e 20 70  | ient-toggle-char-fold)..(defun.p | 
| e720 |  72 65 73 63 69 65 6e 74 2d 74 6f 67 67 6c 65 2d    63 61 73 65 2d 66 6f 6c 64 20 28 29 0a 20 20 22  | rescient-toggle-case-fold.()..." | 
| e740 |  54 6f 67 67 6c 65 20 63 61 73 65 20 66 6f 6c 64    69 6e 67 20 69 6e 20 74 68 65 20 63 75 72 72 65  | Toggle.case.folding.in.the.curre | 
| e760 |  6e 74 20 63 6f 6d 70 6c 65 74 69 6f 6e 20 62 75    66 66 65 72 2e 0a 0a 49 66 20 60 70 72 65 73 63  | nt.completion.buffer...If.`presc | 
| e780 |  69 65 6e 74 2d 75 73 65 2d 63 61 73 65 2d 66 6f    6c 64 69 6e 67 27 20 69 73 20 73 65 74 20 74 6f  | ient-use-case-folding'.is.set.to | 
| e7a0 |  20 60 73 6d 61 72 74 27 2c 20 74 68 65 6e 20 74    68 69 73 0a 74 6f 67 67 6c 65 73 20 77 68 65 74  | .`smart',.then.this.toggles.whet | 
| e7c0 |  68 65 72 20 74 6f 20 75 73 65 20 73 6d 61 72 74    20 63 61 73 65 20 66 6f 6c 64 69 6e 67 20 6f 72  | her.to.use.smart.case.folding.or | 
| e7e0 |  20 6e 6f 20 63 61 73 65 20 66 6f 6c 64 69 6e 67    2e 0a 4f 74 68 65 72 77 69 73 65 2c 20 74 68 69  | .no.case.folding..Otherwise,.thi | 
| e800 |  73 20 74 6f 67 67 6c 65 73 20 62 65 74 77 65 65    6e 20 6e 6f 72 6d 61 6c 20 63 61 73 65 20 66 6f  | s.toggles.between.normal.case.fo | 
| e820 |  6c 64 69 6e 67 20 61 6e 64 20 6e 6f 20 63 61 73    65 0a 66 6f 6c 64 69 6e 67 2e 22 0a 20 20 28 69  | lding.and.no.case.folding."...(i | 
| e840 |  6e 74 65 72 61 63 74 69 76 65 29 0a 20 20 28 73    65 74 71 2d 6c 6f 63 61 6c 20 70 72 65 73 63 69  | nteractive)...(setq-local.presci | 
| e860 |  65 6e 74 2d 75 73 65 2d 63 61 73 65 2d 66 6f 6c    64 69 6e 67 0a 20 20 20 20 20 20 20 20 20 20 20  | ent-use-case-folding............ | 
| e880 |  20 20 20 28 63 6f 6e 64 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 28 70 72 65 73 63 69 65  | ...(cond................(prescie | 
| e8a0 |  6e 74 2d 75 73 65 2d 63 61 73 65 2d 66 6f 6c 64    69 6e 67 0a 20 20 20 20 20 20 20 20 20 20 20 20  | nt-use-case-folding............. | 
| e8c0 |  20 20 20 20 28 6d 65 73 73 61 67 65 20 22 43 61    73 65 20 66 6f 6c 64 69 6e 67 20 74 6f 67 67 6c  | ....(message."Case.folding.toggl | 
| e8e0 |  65 64 20 6f 66 66 22 29 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 6e 69 6c 29 0a 20 20  | ed.off").................nil)... | 
| e900 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 65    71 20 28 64 65 66 61 75 6c 74 2d 74 6f 70 6c 65  | .............((eq.(default-tople | 
| e920 |  76 65 6c 2d 76 61 6c 75 65 20 27 70 72 65 73 63    69 65 6e 74 2d 75 73 65 2d 63 61 73 65 2d 66 6f  | vel-value.'prescient-use-case-fo | 
| e940 |  6c 64 69 6e 67 29 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 27 73 6d 61 72  | lding).....................'smar | 
| e960 |  74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 28 6d 65 73 73 61 67 65 20 22 53 6d 61  | t).................(message."Sma | 
| e980 |  72 74 20 63 61 73 65 20 66 6f 6c 64 69 6e 67 20    74 6f 67 67 6c 65 64 20 6f 6e 22 29 0a 20 20 20  | rt.case.folding.toggled.on").... | 
| e9a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 27 73 6d    61 72 74 29 0a 20 20 20 20 20 20 20 20 20 20 20  | .............'smart)............ | 
| e9c0 |  20 20 20 20 28 74 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 28 6d 65 73 73 61 67 65 20  | ....(t.................(message. | 
| e9e0 |  22 43 61 73 65 20 66 6f 6c 64 69 6e 67 20 74 6f    67 67 6c 65 64 20 6f 6e 22 29 0a 20 20 20 20 20  | "Case.folding.toggled.on")...... | 
| ea00 |  20 20 20 20 20 20 20 20 20 20 20 74 29 29 29 0a    20 20 28 70 72 65 73 63 69 65 6e 74 2d 2d 74 6f  | ...........t)))...(prescient--to | 
| ea20 |  67 67 6c 65 2d 72 65 66 72 65 73 68 29 29 0a 0a    3b 3b 20 54 68 69 73 20 69 73 20 74 68 65 20 73  | ggle-refresh))..;;.This.is.the.s | 
| ea40 |  61 6d 65 20 62 69 6e 64 69 6e 67 20 75 73 65 64    20 62 79 20 60 69 73 65 61 72 63 68 2d 74 6f 67  | ame.binding.used.by.`isearch-tog | 
| ea60 |  67 6c 65 2d 63 61 73 65 2d 66 6f 6c 64 27 2e 0a    28 64 65 66 69 6e 65 2d 6b 65 79 20 70 72 65 73  | gle-case-fold'..(define-key.pres | 
| ea80 |  63 69 65 6e 74 2d 74 6f 67 67 6c 65 2d 6d 61 70    20 28 6b 62 64 20 22 63 22 29 0a 20 20 20 20 20  | cient-toggle-map.(kbd."c")...... | 
| eaa0 |  20 20 20 20 20 20 20 23 27 70 72 65 73 63 69 65    6e 74 2d 74 6f 67 67 6c 65 2d 63 61 73 65 2d 66  | .......#'prescient-toggle-case-f | 
| eac0 |  6f 6c 64 29 0a 0a 0a 3b 3b 3b 3b 20 43 6c 6f 73    69 6e 67 20 72 65 6d 61 72 6b 73 0a 28 70 72 6f  | old)...;;;;.Closing.remarks.(pro | 
| eae0 |  76 69 64 65 20 27 70 72 65 73 63 69 65 6e 74 29    0a 0a 3b 3b 3b 20 70 72 65 73 63 69 65 6e 74 2e  | vide.'prescient)..;;;.prescient. | 
| eb00 |  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 00 00 00 00 00  | el.ends.here.................... | 
| eb20 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| eb40 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| eb60 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| eb80 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| eba0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| ebc0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| ebe0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| ec00 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| ec20 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| ec40 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| ec60 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| ec80 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| eca0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| ecc0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| ece0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| ed00 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| ed20 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| ed40 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| ed60 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| ed80 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| eda0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| edc0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| ede0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| ee00 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| ee20 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| ee40 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| ee60 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| ee80 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| eea0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| eec0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| eee0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| ef00 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| ef20 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| ef40 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| ef60 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| ef80 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| efa0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| efc0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| efe0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ |