summaryrefslogtreecommitdiff
path: root/.localrepo/prescient-20250816.19.tar
blob: fafbb1a1931d0e9e97a23fd71c029ef44927ca34 (plain)
ofshex dumpascii
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 ................................