summaryrefslogtreecommitdiff
path: root/localrepo/prescient-20240226.204.tar
blob: 8f839aa297d2fae333c7fac5fb5657b4cbdf197a (plain)
ofshex dumpascii
0000 70 72 65 73 63 69 65 6e 74 2d 32 30 32 34 30 32 32 36 2e 32 30 34 2f 00 00 00 00 00 00 00 00 00 prescient-20240226.204/.........
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 37 31 34 00 20 35 00 00 00 0000000.00000000000.012714..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 34 30 32 32 36 2e 32 30 34 2f 70 72 65 73 63 69 65 6e 74 prescient-20240226.204/prescient
0220 2d 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 -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 37 33 37 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 36 30 32 30 00 20 30 00 00 00 0000737.00000000000.016020..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 28 64 65 66 69 6e 65 2d 70 61 63 6b 61 67 65 20 22 70 72 65 73 63 69 65 6e 74 22 20 22 32 30 32 (define-package."prescient"."202
0420 34 30 32 32 36 2e 32 30 34 22 20 22 42 65 74 74 65 72 20 73 6f 72 74 69 6e 67 20 61 6e 64 20 66 40226.204"."Better.sorting.and.f
0440 69 6c 74 65 72 69 6e 67 22 0a 20 20 27 28 28 65 6d 61 63 73 20 22 32 35 2e 31 22 29 29 0a 20 20 iltering"...'((emacs."25.1"))...
0460 3a 63 6f 6d 6d 69 74 20 22 63 33 39 62 66 30 37 63 35 36 62 34 32 37 62 66 34 31 61 61 66 64 37 :commit."c39bf07c56b427bf41aafd7
0480 64 32 30 65 61 65 66 35 63 66 33 63 33 31 32 62 35 22 20 3a 61 75 74 68 6f 72 73 0a 20 20 27 28 d20eaef5cf3c312b5".:authors...'(
04a0 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 69 65 ("Radian.LLC"..."contact+prescie
04c0 6e 74 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 nt@radian.codes"))...:maintainer
04e0 73 0a 20 20 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 s...'(("Radian.LLC"..."contact+p
0500 72 65 73 63 69 65 6e 74 40 72 61 64 69 61 6e 2e 63 6f 64 65 73 22 29 29 0a 20 20 3a 6d 61 69 6e rescient@radian.codes"))...:main
0520 74 61 69 6e 65 72 0a 20 20 27 28 22 52 61 64 69 61 6e 20 4c 4c 43 22 20 2e 20 22 63 6f 6e 74 61 tainer...'("Radian.LLC"..."conta
0540 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 22 29 0a 20 20 3a 6b ct+prescient@radian.codes")...:k
0560 65 79 77 6f 72 64 73 0a 20 20 27 28 22 65 78 74 65 6e 73 69 6f 6e 73 22 29 0a 20 20 3a 75 72 6c eywords...'("extensions")...:url
0580 20 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 ."https://github.com/raxod502/pr
05a0 65 73 63 69 65 6e 74 2e 65 6c 22 29 0a 3b 3b 20 4c 6f 63 61 6c 20 56 61 72 69 61 62 6c 65 73 3a escient.el").;;.Local.Variables:
05c0 0a 3b 3b 20 6e 6f 2d 62 79 74 65 2d 63 6f 6d 70 69 6c 65 3a 20 74 0a 3b 3b 20 45 6e 64 3a 0a 00 .;;.no-byte-compile:.t.;;.End:..
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 34 30 32 32 36 2e 32 30 34 2f 70 72 65 73 63 69 65 6e 74 prescient-20240226.204/prescient
0620 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 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 30 34 32 36 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 35 32 34 33 00 20 30 00 00 00 0160426.00000000000.015243..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 56 65 72 73 69 6f 6e 3a 20 36 2e 33 2e 30 0a 0a 3b 3b 3b 20 43 er:.MIT.;;.Version:.6.3.0..;;;.C
0980 6f 6d 6d 65 6e 74 61 72 79 3a 0a 0a 3b 3b 20 70 72 65 73 63 69 65 6e 74 2e 65 6c 20 69 73 20 61 ommentary:..;;.prescient.el.is.a
09a0 20 67 65 6e 65 72 61 6c 2d 70 75 72 70 6f 73 65 20 6c 69 62 72 61 72 79 20 66 6f 72 20 73 6f 72 .general-purpose.library.for.sor
09c0 74 69 6e 67 20 61 6e 64 20 66 69 6c 74 65 72 69 6e 67 0a 3b 3b 20 63 61 6e 64 69 64 61 74 65 73 ting.and.filtering.;;.candidates
09e0 2e 0a 0a 3b 3b 20 54 68 65 20 61 6c 67 6f 72 69 74 68 6d 20 6f 66 20 70 72 65 73 63 69 65 6e 74 ...;;.The.algorithm.of.prescient
0a00 2e 65 6c 20 69 73 20 76 65 72 79 20 73 69 6d 70 6c 65 2e 20 59 6f 75 20 65 6e 74 65 72 20 61 20 .el.is.very.simple..You.enter.a.
0a20 71 75 65 72 79 2c 20 6f 72 0a 3b 3b 20 6d 75 6c 74 69 70 6c 65 20 71 75 65 72 69 65 73 20 73 65 query,.or.;;.multiple.queries.se
0a40 70 61 72 61 74 65 64 20 62 79 20 73 70 61 63 65 73 20 28 74 77 6f 20 73 70 61 63 65 73 20 6d 61 parated.by.spaces.(two.spaces.ma
0a60 74 63 68 20 61 20 6c 69 74 65 72 61 6c 0a 3b 3b 20 73 70 61 63 65 29 2c 20 61 6e 64 20 65 61 63 tch.a.literal.;;.space),.and.eac
0a80 68 20 71 75 65 72 79 20 66 69 6c 74 65 72 73 20 74 68 65 20 63 61 6e 64 69 64 61 74 65 73 20 62 h.query.filters.the.candidates.b
0aa0 79 20 6d 61 74 63 68 69 6e 67 20 65 69 74 68 65 72 20 61 0a 3b 3b 20 73 75 62 73 74 72 69 6e 67 y.matching.either.a.;;.substring
0ac0 20 28 65 2e 67 2e 20 22 73 63 69 65 6e 74 22 20 6d 61 74 63 68 65 73 20 22 70 72 65 73 63 69 65 .(e.g.."scient".matches."prescie
0ae0 6e 74 2d 66 72 65 71 75 65 6e 63 79 2d 74 68 72 65 73 68 6f 6c 64 22 29 0a 3b 3b 20 6f 72 20 69 nt-frequency-threshold").;;.or.i
0b00 6e 69 74 69 61 6c 69 73 6d 20 28 65 2e 67 2e 20 22 66 74 22 20 61 6c 73 6f 20 6d 61 74 63 68 65 nitialism.(e.g.."ft".also.matche
0b20 73 20 74 68 65 20 73 61 6d 65 29 2e 20 54 68 65 6e 2c 20 63 61 6e 64 69 64 61 74 65 73 0a 3b 3b s.the.same)..Then,.candidates.;;
0b40 20 61 72 65 20 73 6f 72 74 65 64 20 74 6f 20 70 72 69 6f 72 69 74 69 7a 65 20 72 65 63 65 6e 74 .are.sorted.to.prioritize.recent
0b60 6c 79 20 63 68 6f 73 65 6e 20 63 61 6e 64 69 64 61 74 65 73 2c 20 66 6f 6c 6c 6f 77 65 64 20 62 ly.chosen.candidates,.followed.b
0b80 79 0a 3b 3b 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 65 y.;;.frequently.chosen.candidate
0ba0 73 2c 20 77 69 74 68 20 74 68 65 20 72 65 6d 61 69 6e 69 6e 67 20 63 61 6e 64 69 64 61 74 65 73 s,.with.the.remaining.candidates
0bc0 20 73 6f 72 74 65 64 0a 3b 3b 20 62 79 20 6c 65 6e 67 74 68 2e 0a 0a 3b 3b 20 70 72 65 73 63 69 .sorted.;;.by.length...;;.presci
0be0 65 6e 74 2e 65 6c 20 61 69 6d 73 20 74 6f 20 72 65 70 6c 61 63 65 20 61 20 6e 75 6d 62 65 72 20 ent.el.aims.to.replace.a.number.
0c00 6f 66 20 6f 74 68 65 72 20 70 61 63 6b 61 67 65 73 2c 20 69 6e 63 6c 75 64 69 6e 67 0a 3b 3b 20 of.other.packages,.including.;;.
0c20 49 44 4f 2c 20 53 6d 65 78 2c 20 46 6c 78 2c 20 48 69 73 74 6f 72 69 61 6e 2c 20 61 6e 64 20 43 IDO,.Smex,.Flx,.Historian,.and.C
0c40 6f 6d 70 61 6e 79 2d 53 74 61 74 69 73 74 69 63 73 2e 20 49 74 20 61 6c 73 6f 20 72 65 70 6c 61 ompany-Statistics..It.also.repla
0c60 63 65 73 0a 3b 3b 20 74 68 65 20 73 6f 72 74 69 6e 67 20 61 6e 64 20 66 69 6c 74 65 72 69 6e 67 ces.;;.the.sorting.and.filtering
0c80 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74 69 65 73 20 6f 66 20 63 6f 6d 70 6c 65 74 69 6f 6e 20 66 .functionalities.of.completion.f
0ca0 72 61 6d 65 77 6f 72 6b 73 0a 3b 3b 20 73 75 63 68 20 61 73 20 48 65 6c 6d 20 61 6e 64 20 49 76 rameworks.;;.such.as.Helm.and.Iv
0cc0 79 2e 0a 0a 3b 3b 20 54 6f 20 75 73 65 20 70 72 65 73 63 69 65 6e 74 2e 65 6c 20 66 6f 72 20 49 y...;;.To.use.prescient.el.for.I
0ce0 76 79 2c 20 73 65 65 20 69 76 79 2d 70 72 65 73 63 69 65 6e 74 2e 65 6c 2e 20 54 6f 20 75 73 65 vy,.see.ivy-prescient.el..To.use
0d00 0a 3b 3b 20 70 72 65 73 63 69 65 6e 74 2e 65 6c 20 66 6f 72 20 43 6f 6d 70 61 6e 79 2c 20 73 65 .;;.prescient.el.for.Company,.se
0d20 65 20 63 6f 6d 70 61 6e 79 2d 70 72 65 73 63 69 65 6e 74 2e 65 6c 2e 20 49 6e 20 65 69 74 68 65 e.company-prescient.el..In.eithe
0d40 72 20 63 61 73 65 2c 0a 3b 3b 20 79 6f 75 20 77 69 6c 6c 20 6d 6f 73 74 20 6c 69 6b 65 6c 79 20 r.case,.;;.you.will.most.likely.
0d60 77 61 6e 74 20 79 6f 75 72 20 75 73 61 67 65 20 73 74 61 74 69 73 74 69 63 73 20 74 6f 20 62 65 want.your.usage.statistics.to.be
0d80 20 73 61 76 65 64 20 61 63 72 6f 73 73 0a 3b 3b 20 45 6d 61 63 73 20 73 65 73 73 69 6f 6e 73 3b .saved.across.;;.Emacs.sessions;
0da0 20 74 6f 20 64 6f 20 74 68 69 73 2c 20 65 6e 61 62 6c 65 20 60 70 72 65 73 63 69 65 6e 74 2d 70 .to.do.this,.enable.`prescient-p
0dc0 65 72 73 69 73 74 2d 6d 6f 64 65 27 20 69 6e 20 79 6f 75 72 0a 3b 3b 20 69 6e 69 74 2d 66 69 6c ersist-mode'.in.your.;;.init-fil
0de0 65 20 6f 72 20 69 6e 74 65 72 61 63 74 69 76 65 6c 79 2e 0a 0a 3b 3b 20 46 6f 72 20 6d 6f 72 65 e.or.interactively...;;.For.more
0e00 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2c 20 73 65 65 20 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 .information,.see.https://github
0e20 2e 63 6f 6d 2f 72 61 78 6f 64 35 30 32 2f 70 72 65 73 63 69 65 6e 74 2e 65 6c 2e 0a 0a 3b 3b 3b .com/raxod502/prescient.el...;;;
0e40 20 43 6f 64 65 3a 0a 0a 3b 3b 20 54 6f 20 73 65 65 20 74 68 65 20 6f 75 74 6c 69 6e 65 20 6f 66 .Code:..;;.To.see.the.outline.of
0e60 20 74 68 69 73 20 66 69 6c 65 2c 20 72 75 6e 20 4d 2d 78 20 6f 75 74 6c 69 6e 65 2d 6d 69 6e 6f .this.file,.run.M-x.outline-mino
0e80 72 2d 6d 6f 64 65 20 61 6e 64 0a 3b 3b 20 74 68 65 6e 20 70 72 65 73 73 20 43 2d 63 20 40 20 43 r-mode.and.;;.then.press.C-c.@.C
0ea0 2d 74 2e 20 54 6f 20 61 6c 73 6f 20 73 68 6f 77 20 74 68 65 20 74 6f 70 2d 6c 65 76 65 6c 20 66 -t..To.also.show.the.top-level.f
0ec0 75 6e 63 74 69 6f 6e 73 20 61 6e 64 0a 3b 3b 20 76 61 72 69 61 62 6c 65 20 64 65 63 6c 61 72 61 unctions.and.;;.variable.declara
0ee0 74 69 6f 6e 73 20 69 6e 20 65 61 63 68 20 73 65 63 74 69 6f 6e 2c 20 72 75 6e 20 4d 2d 78 20 6f tions.in.each.section,.run.M-x.o
0f00 63 63 75 72 20 77 69 74 68 20 74 68 65 0a 3b 3b 20 66 6f 6c 6c 6f 77 69 6e 67 20 71 75 65 72 79 ccur.with.the.;;.following.query
0f20 3a 20 5e 3b 3b 3b 3b 2a 20 5c 7c 5e 28 0a 0a 3b 3b 3b 3b 20 4c 69 62 72 61 72 69 65 73 0a 0a 3b :.^;;;;*.\|^(..;;;;.Libraries..;
0f40 3b 20 52 65 71 75 69 72 65 20 60 63 68 61 72 2d 66 6f 6c 64 27 20 73 6f 20 74 68 61 74 20 60 63 ;.Require.`char-fold'.so.that.`c
0f60 68 61 72 2d 66 6f 6c 64 2d 74 61 62 6c 65 27 20 67 65 74 73 20 64 65 66 69 6e 65 64 2e 0a 3b 3b har-fold-table'.gets.defined..;;
0f80 20 4f 74 68 65 72 77 69 73 65 20 60 63 68 61 72 2d 66 6f 6c 64 2d 74 6f 2d 72 65 67 65 78 70 27 .Otherwise.`char-fold-to-regexp'
0fa0 20 63 61 6e 20 73 69 67 6e 61 6c 20 61 6e 20 65 72 72 6f 72 2e 0a 28 72 65 71 75 69 72 65 20 27 .can.signal.an.error..(require.'
0fc0 63 68 61 72 2d 66 6f 6c 64 29 0a 28 72 65 71 75 69 72 65 20 27 63 6c 2d 6c 69 62 29 0a 28 72 65 char-fold).(require.'cl-lib).(re
0fe0 71 75 69 72 65 20 27 73 75 62 72 2d 78 29 0a 0a 3b 3b 3b 3b 20 55 73 65 72 20 6f 70 74 69 6f 6e quire.'subr-x)..;;;;.User.option
1000 73 0a 0a 28 64 65 66 67 72 6f 75 70 20 70 72 65 73 63 69 65 6e 74 20 6e 69 6c 0a 20 20 22 53 69 s..(defgroup.prescient.nil..."Si
1020 6d 70 6c 65 20 62 75 74 20 65 66 66 65 63 74 69 76 65 20 63 61 6e 64 69 64 61 74 65 20 73 6f 72 mple.but.effective.candidate.sor
1040 74 69 6e 67 20 62 79 20 75 73 61 67 65 2e 22 0a 20 20 3a 67 72 6f 75 70 20 27 63 6f 6e 76 65 6e ting.by.usage."...:group.'conven
1060 69 65 6e 63 65 0a 20 20 3a 70 72 65 66 69 78 20 22 70 72 65 73 63 69 65 6e 74 2d 22 0a 20 20 3a ience...:prefix."prescient-"...:
1080 6c 69 6e 6b 20 27 28 75 72 6c 2d 6c 69 6e 6b 20 22 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e link.'(url-link."https://github.
10a0 63 6f 6d 2f 72 61 78 6f 64 35 30 32 2f 70 72 65 73 63 69 65 6e 74 2e 65 6c 22 29 29 0a 0a 28 64 com/raxod502/prescient.el"))..(d
10c0 65 66 63 75 73 74 6f 6d 20 70 72 65 73 63 69 65 6e 74 2d 68 69 73 74 6f 72 79 2d 6c 65 6e 67 74 efcustom.prescient-history-lengt
10e0 68 20 31 30 30 0a 20 20 22 4e 75 6d 62 65 72 20 6f 66 20 72 65 63 65 6e 74 6c 79 20 63 68 6f 73 h.100..."Number.of.recently.chos
1100 65 6e 20 63 61 6e 64 69 64 61 74 65 73 20 74 68 61 74 20 77 69 6c 6c 20 62 65 20 72 65 6d 65 6d en.candidates.that.will.be.remem
1120 62 65 72 65 64 2e 22 0a 20 20 3a 74 79 70 65 20 27 6e 75 6d 62 65 72 29 0a 0a 28 64 65 66 63 75 bered."...:type.'number)..(defcu
1140 73 74 6f 6d 20 70 72 65 73 63 69 65 6e 74 2d 66 72 65 71 75 65 6e 63 79 2d 64 65 63 61 79 20 30 stom.prescient-frequency-decay.0
1160 2e 39 39 37 0a 20 20 22 52 61 74 65 20 61 74 20 77 68 69 63 68 20 66 72 65 71 75 65 6e 74 6c 79 .997..."Rate.at.which.frequently
1180 20 63 68 6f 73 65 6e 20 63 61 6e 64 69 64 61 74 65 73 20 77 69 6c 6c 20 62 65 20 66 6f 72 67 6f .chosen.candidates.will.be.forgo
11a0 74 74 65 6e 2e 0a 45 76 65 72 79 20 74 69 6d 65 20 61 20 63 61 6e 64 69 64 61 74 65 20 69 73 20 tten..Every.time.a.candidate.is.
11c0 73 65 6c 65 63 74 65 64 2c 20 61 6c 6c 20 63 61 6e 64 69 64 61 74 65 73 20 61 72 65 20 6d 75 6c selected,.all.candidates.are.mul
11e0 74 69 70 6c 69 65 64 0a 62 79 20 74 68 69 73 20 66 61 63 74 6f 72 2e 20 53 65 65 20 61 6c 73 6f tiplied.by.this.factor..See.also
1200 20 60 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 68 6f 6c 64 27 .`prescient-frequency-threshold'
1220 2e 22 0a 20 20 3a 74 79 70 65 20 27 6e 75 6d 62 65 72 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 ."...:type.'number)..(defcustom.
1240 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 68 6f 6c 64 20 30 2e prescient-frequency-threshold.0.
1260 30 35 0a 20 20 22 54 68 72 65 73 68 6f 6c 64 20 66 6f 72 20 66 6f 72 67 65 74 74 69 6e 67 20 61 05..."Threshold.for.forgetting.a
1280 62 6f 75 74 20 61 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 bout.a.frequently.chosen.candida
12a0 74 65 2e 0a 41 6e 79 20 63 61 6e 64 69 64 61 74 65 73 20 77 69 74 68 20 66 72 65 71 75 65 6e 63 te..Any.candidates.with.frequenc
12c0 69 65 73 20 6c 65 73 73 20 74 68 61 6e 20 74 68 69 73 20 61 66 74 65 72 20 61 20 73 65 6c 65 63 ies.less.than.this.after.a.selec
12e0 74 69 6f 6e 0a 77 69 6c 6c 20 62 65 20 64 69 73 63 61 72 64 65 64 2e 20 53 65 65 20 61 6c 73 6f tion.will.be.discarded..See.also
1300 20 60 70 72 65 73 63 69 65 6e 74 2d 66 72 65 71 75 65 6e 63 79 2d 64 65 63 61 79 27 2e 22 0a 20 .`prescient-frequency-decay'."..
1320 20 3a 74 79 70 65 20 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 .:type.'number)..(defcustom.pres
1340 63 69 65 6e 74 2d 73 61 76 65 2d 66 69 6c 65 0a 20 20 28 65 78 70 61 6e 64 2d 66 69 6c 65 2d 6e cient-save-file...(expand-file-n
1360 61 6d 65 20 22 76 61 72 2f 70 72 65 73 63 69 65 6e 74 2d 73 61 76 65 2e 65 6c 22 20 75 73 65 72 ame."var/prescient-save.el".user
1380 2d 65 6d 61 63 73 2d 64 69 72 65 63 74 6f 72 79 29 0a 20 20 22 46 69 6c 65 20 69 6e 20 77 68 69 -emacs-directory)..."File.in.whi
13a0 63 68 20 74 6f 20 73 61 76 65 20 75 73 61 67 65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0a 54 68 ch.to.save.usage.information..Th
13c0 69 73 20 6f 6e 6c 79 20 68 61 73 20 61 6e 20 65 66 66 65 63 74 20 69 66 20 60 70 72 65 73 63 69 is.only.has.an.effect.if.`presci
13e0 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 2e 22 0a 20 ent-persist-mode'.is.enabled."..
1400 20 3a 74 79 70 65 20 27 66 69 6c 65 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 70 72 65 73 63 69 .:type.'file)..(defcustom.presci
1420 65 6e 74 2d 66 69 6c 74 65 72 2d 6d 65 74 68 6f 64 20 27 28 6c 69 74 65 72 61 6c 20 72 65 67 65 ent-filter-method.'(literal.rege
1440 78 70 20 69 6e 69 74 69 61 6c 69 73 6d 29 0a 20 20 22 48 6f 77 20 74 6f 20 69 6e 74 65 72 70 72 xp.initialism)..."How.to.interpr
1460 65 74 20 70 72 65 73 63 69 65 6e 74 2e 65 6c 20 66 69 6c 74 65 72 69 6e 67 20 71 75 65 72 69 65 et.prescient.el.filtering.querie
1480 73 2e 0a 51 75 65 72 69 65 73 20 61 72 65 20 66 69 72 73 74 20 73 70 6c 69 74 20 6f 6e 20 73 70 s..Queries.are.first.split.on.sp
14a0 61 63 65 73 20 28 77 69 74 68 20 74 77 6f 20 63 6f 6e 73 65 63 75 74 69 76 65 20 73 70 61 63 65 aces.(with.two.consecutive.space
14c0 73 0a 73 74 61 6e 64 69 6e 67 20 66 6f 72 20 61 20 6c 69 74 65 72 61 6c 20 73 70 61 63 65 29 2e s.standing.for.a.literal.space).
14e0 20 54 68 65 6e 2c 20 74 68 65 20 63 61 6e 64 69 64 61 74 65 73 20 61 72 65 20 66 69 6c 74 65 72 .Then,.the.candidates.are.filter
1500 65 64 0a 75 73 69 6e 67 20 65 61 63 68 20 73 75 62 71 75 65 72 79 20 69 6e 20 74 75 72 6e 2e 20 ed.using.each.subquery.in.turn..
1520 54 68 69 73 20 76 61 72 69 61 62 6c 65 20 61 66 66 65 63 74 73 20 68 6f 77 20 74 68 61 74 0a 66 This.variable.affects.how.that.f
1540 69 6c 74 65 72 69 6e 67 20 74 61 6b 65 73 20 70 6c 61 63 65 2e 0a 0a 56 61 6c 75 65 20 60 6c 69 iltering.takes.place...Value.`li
1560 74 65 72 61 6c 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 62 teral'.means.the.subquery.must.b
1580 65 20 61 20 73 75 62 73 74 72 69 6e 67 20 6f 66 20 74 68 65 0a 63 61 6e 64 69 64 61 74 65 2e 20 e.a.substring.of.the.candidate..
15a0 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 75 65 20 60 6c Supports.char.folding...Value.`l
15c0 69 74 65 72 61 6c 2d 70 72 65 66 69 78 27 20 6d 65 61 6e 73 20 74 68 65 20 66 69 72 73 74 20 73 iteral-prefix'.means.the.first.s
15e0 75 62 71 75 65 72 79 20 6d 75 73 74 20 62 65 20 74 68 65 0a 70 72 65 66 69 78 20 6f 66 20 74 68 ubquery.must.be.the.prefix.of.th
1600 65 20 63 61 6e 64 69 64 61 74 65 20 61 6e 64 20 74 68 65 20 72 65 6d 61 69 6e 69 6e 67 20 73 75 e.candidate.and.the.remaining.su
1620 62 71 75 65 72 69 65 73 20 6d 75 73 74 20 62 65 0a 70 72 65 66 69 78 65 73 20 6f 66 20 77 6f 72 bqueries.must.be.prefixes.of.wor
1640 64 73 20 69 6e 20 74 68 65 20 63 61 6e 64 69 64 61 74 65 2e 20 53 75 70 70 6f 72 74 73 20 63 68 ds.in.the.candidate..Supports.ch
1660 61 72 20 66 6f 6c 64 69 6e 67 2e 0a 0a 56 61 6c 75 65 20 60 72 65 67 65 78 70 27 20 6d 65 61 6e ar.folding...Value.`regexp'.mean
1680 73 20 74 68 65 20 73 75 62 71 75 65 72 79 20 69 73 20 69 6e 74 65 72 70 72 65 74 65 64 20 64 69 s.the.subquery.is.interpreted.di
16a0 72 65 63 74 6c 79 20 61 73 20 61 0a 72 65 67 75 6c 61 72 20 65 78 70 72 65 73 73 69 6f 6e 2e 0a rectly.as.a.regular.expression..
16c0 0a 56 61 6c 75 65 20 60 69 6e 69 74 69 61 6c 69 73 6d 27 20 6d 65 61 6e 73 20 74 68 65 20 73 75 .Value.`initialism'.means.the.su
16e0 62 71 75 65 72 79 20 6d 75 73 74 20 6d 61 74 63 68 20 61 20 73 75 62 73 74 72 69 6e 67 20 6f 66 bquery.must.match.a.substring.of
1700 0a 74 68 65 20 69 6e 69 74 69 61 6c 73 20 6f 66 20 74 68 65 20 63 61 6e 64 69 64 61 74 65 2e 0a .the.initials.of.the.candidate..
1720 0a 56 61 6c 75 65 20 60 66 75 7a 7a 79 27 20 6d 65 61 6e 73 20 74 68 65 20 63 68 61 72 61 63 74 .Value.`fuzzy'.means.the.charact
1740 65 72 73 20 6f 66 20 74 68 65 20 73 75 62 71 75 65 72 79 20 6d 75 73 74 20 6d 61 74 63 68 0a 73 ers.of.the.subquery.must.match.s
1760 6f 6d 65 20 73 75 62 73 65 74 20 6f 66 20 74 68 6f 73 65 20 6f 66 20 74 68 65 20 63 61 6e 64 69 ome.subset.of.those.of.the.candi
1780 64 61 74 65 2c 20 69 6e 20 74 68 65 20 63 6f 72 72 65 63 74 20 6f 72 64 65 72 20 62 75 74 0a 6e date,.in.the.correct.order.but.n
17a0 6f 74 20 6e 65 63 65 73 73 61 72 69 6c 79 20 63 6f 6e 74 69 67 75 6f 75 73 2e 0a 0a 56 61 6c 75 ot.necessarily.contiguous...Valu
17c0 65 20 60 70 72 65 66 69 78 27 20 6d 65 61 6e 73 20 74 68 65 20 77 6f 72 64 73 20 28 73 75 62 73 e.`prefix'.means.the.words.(subs
17e0 74 72 69 6e 67 73 20 6f 66 20 6f 6e 6c 79 20 77 6f 72 64 0a 63 68 61 72 61 63 74 65 72 73 29 20 trings.of.only.word.characters).
1800 6d 61 74 63 68 20 74 68 65 20 62 65 67 69 6e 6e 69 6e 67 20 6f 66 20 77 6f 72 64 73 20 66 6f 75 match.the.beginning.of.words.fou
1820 6e 64 20 69 6e 20 74 68 65 20 63 61 6e 64 69 64 61 74 65 2c 0a 69 6e 20 6f 72 64 65 72 2c 20 73 nd.in.the.candidate,.in.order,.s
1840 65 70 61 72 61 74 65 64 20 62 79 20 74 68 65 20 73 61 6d 65 20 6e 6f 6e 2d 77 6f 72 64 20 63 68 eparated.by.the.same.non-word.ch
1860 61 72 61 63 74 65 72 73 20 74 68 61 74 20 73 65 70 61 72 61 74 65 0a 77 6f 72 64 73 20 69 6e 20 aracters.that.separate.words.in.
1880 74 68 65 20 71 75 65 72 79 2e 20 54 68 69 73 20 69 73 20 73 69 6d 69 6c 61 72 20 74 6f 20 74 68 the.query..This.is.similar.to.th
18a0 65 20 63 6f 6d 70 6c 65 74 69 6f 6e 20 73 74 79 6c 65 0a 60 70 61 72 74 69 61 6c 27 2e 0a 0a 56 e.completion.style.`partial'...V
18c0 61 6c 75 65 20 60 61 6e 63 68 6f 72 65 64 27 20 6d 65 61 6e 73 20 77 6f 72 64 73 20 61 72 65 20 alue.`anchored'.means.words.are.
18e0 73 65 70 61 72 61 74 65 64 20 62 79 20 63 61 70 69 74 61 6c 20 6c 65 74 74 65 72 73 20 6f 72 0a separated.by.capital.letters.or.
1900 73 79 6d 62 6f 6c 73 2c 20 77 69 74 68 20 63 61 70 69 74 61 6c 20 6c 65 74 74 65 72 73 20 62 65 symbols,.with.capital.letters.be
1920 69 6e 67 20 74 68 65 20 73 74 61 72 74 20 6f 66 20 61 20 6e 65 77 20 77 6f 72 64 2e 20 54 68 69 ing.the.start.of.a.new.word..Thi
1940 73 0a 69 73 20 73 69 6d 69 6c 61 72 20 74 6f 20 60 70 72 65 66 69 78 27 2c 20 62 75 74 20 61 6c s.is.similar.to.`prefix',.but.al
1960 6c 6f 77 73 20 66 6f 72 20 6c 65 73 73 20 74 79 70 69 6e 67 2e 0a 0a 56 61 6c 75 65 20 63 61 6e lows.for.less.typing...Value.can
1980 20 61 6c 73 6f 20 62 65 20 61 20 6c 69 73 74 20 6f 66 20 61 6e 79 20 6f 66 20 74 68 65 20 61 62 .also.be.a.list.of.any.of.the.ab
19a0 6f 76 65 20 6d 65 74 68 6f 64 73 2c 20 69 6e 20 77 68 69 63 68 0a 63 61 73 65 20 65 61 63 68 20 ove.methods,.in.which.case.each.
19c0 6d 65 74 68 6f 64 20 77 69 6c 6c 20 62 65 20 61 70 70 6c 69 65 64 20 69 6e 20 6f 72 64 65 72 20 method.will.be.applied.in.order.
19e0 75 6e 74 69 6c 20 6f 6e 65 20 6d 61 74 63 68 65 73 2e 0a 0a 56 61 6c 75 65 20 63 61 6e 20 61 6c until.one.matches...Value.can.al
1a00 73 6f 20 62 65 20 61 20 66 75 6e 63 74 69 6f 6e 20 77 68 69 63 68 20 72 65 74 75 72 6e 73 20 61 so.be.a.function.which.returns.a
1a20 6e 79 20 6f 66 20 74 68 65 20 61 6c 6c 6f 77 61 62 6c 65 0a 76 61 6c 75 65 73 20 64 6f 63 75 6d ny.of.the.allowable.values.docum
1a40 65 6e 74 65 64 20 61 62 6f 76 65 2e 0a 0a 46 6f 72 20 62 61 63 6b 77 61 72 64 73 20 63 6f 6d 70 ented.above...For.backwards.comp
1a60 61 74 69 62 69 6c 69 74 79 2c 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68 69 73 20 76 61 72 atibility,.the.value.of.this.var
1a80 69 61 62 6c 65 20 63 61 6e 20 61 6c 73 6f 0a 62 65 20 60 6c 69 74 65 72 61 6c 2b 69 6e 69 74 69 iable.can.also.be.`literal+initi
1aa0 61 6c 69 73 6d 27 2c 20 77 68 69 63 68 20 65 71 75 69 76 61 6c 65 6e 74 20 74 6f 20 74 68 65 20 alism',.which.equivalent.to.the.
1ac0 6c 69 73 74 20 28 60 6c 69 74 65 72 61 6c 27 0a 60 69 6e 69 74 69 61 6c 69 73 6d 27 29 2e 22 0a list.(`literal'.`initialism').".
1ae0 20 20 3a 74 79 70 65 20 27 28 73 65 74 0a 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 74 20 3a ..:type.'(set...........(const.:
1b00 74 61 67 20 22 4c 69 74 65 72 61 6c 22 20 6c 69 74 65 72 61 6c 29 0a 20 20 20 20 20 20 20 20 20 tag."Literal".literal)..........
1b20 20 28 63 6f 6e 73 74 20 3a 74 61 67 20 22 4c 69 74 65 72 61 6c 20 50 72 65 66 69 78 22 20 6c 69 .(const.:tag."Literal.Prefix".li
1b40 74 65 72 61 6c 2d 70 72 65 66 69 78 29 0a 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 74 20 3a teral-prefix)...........(const.:
1b60 74 61 67 20 22 52 65 67 65 78 70 22 20 72 65 67 65 78 70 29 0a 20 20 20 20 20 20 20 20 20 20 28 tag."Regexp".regexp)...........(
1b80 63 6f 6e 73 74 20 3a 74 61 67 20 22 49 6e 69 74 69 61 6c 69 73 6d 22 20 69 6e 69 74 69 61 6c 69 const.:tag."Initialism".initiali
1ba0 73 6d 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 46 75 7a 7a 79 sm)...........(const.:tag."Fuzzy
1bc0 22 20 66 75 7a 7a 79 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 ".fuzzy)...........(const.:tag."
1be0 50 72 65 66 69 78 22 20 70 72 65 66 69 78 29 0a 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 74 Prefix".prefix)...........(const
1c00 20 3a 74 61 67 20 22 41 6e 63 68 6f 72 65 64 22 20 61 6e 63 68 6f 72 65 64 29 29 29 0a 0a 28 64 .:tag."Anchored".anchored)))..(d
1c20 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 61 6c 69 73 74 0a efcustom.prescient-filter-alist.
1c40 20 20 27 28 28 6c 69 74 65 72 61 6c 20 2e 20 70 72 65 73 63 69 65 6e 74 2d 6c 69 74 65 72 61 6c ..'((literal...prescient-literal
1c60 2d 72 65 67 65 78 70 29 0a 20 20 20 20 28 6c 69 74 65 72 61 6c 2d 70 72 65 66 69 78 20 2e 20 70 -regexp).....(literal-prefix...p
1c80 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 29 0a rescient-literal-prefix-regexp).
1ca0 20 20 20 20 28 69 6e 69 74 69 61 6c 69 73 6d 20 2e 20 70 72 65 73 63 69 65 6e 74 2d 69 6e 69 74 ....(initialism...prescient-init
1cc0 69 61 6c 73 2d 72 65 67 65 78 70 29 0a 20 20 20 20 28 72 65 67 65 78 70 20 2e 20 70 72 65 73 63 ials-regexp).....(regexp...presc
1ce0 69 65 6e 74 2d 72 65 67 65 78 70 2d 72 65 67 65 78 70 29 0a 20 20 20 20 28 66 75 7a 7a 79 20 2e ient-regexp-regexp).....(fuzzy..
1d00 20 70 72 65 73 63 69 65 6e 74 2d 66 75 7a 7a 79 2d 72 65 67 65 78 70 29 0a 20 20 20 20 28 70 72 .prescient-fuzzy-regexp).....(pr
1d20 65 66 69 78 20 2e 20 70 72 65 73 63 69 65 6e 74 2d 70 72 65 66 69 78 2d 72 65 67 65 78 70 29 0a efix...prescient-prefix-regexp).
1d40 20 20 20 20 28 61 6e 63 68 6f 72 65 64 20 2e 20 70 72 65 73 63 69 65 6e 74 2d 61 6e 63 68 6f 72 ....(anchored...prescient-anchor
1d60 65 64 2d 72 65 67 65 78 70 29 29 0a 20 20 22 41 6e 20 61 6c 69 73 74 20 6f 66 20 66 69 6c 74 65 ed-regexp))..."An.alist.of.filte
1d80 72 20 6d 65 74 68 6f 64 73 20 61 6e 64 20 74 68 65 69 72 20 66 75 6e 63 74 69 6f 6e 73 2e 0a 0a r.methods.and.their.functions...
1da0 54 68 65 73 65 20 73 79 6d 62 6f 6c 73 20 63 61 6e 20 62 65 20 69 6e 63 6c 75 64 65 64 20 69 6e These.symbols.can.be.included.in
1dc0 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 2c 20 61 6e 64 0a .`prescient-filter-method',.and.
1de0 74 68 65 69 72 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 66 75 6e 63 74 69 6f 6e 73 20 77 69 their.corresponding.functions.wi
1e00 6c 6c 20 62 65 20 75 73 65 64 20 74 6f 20 63 72 65 61 74 65 20 72 65 67 65 78 70 73 20 66 6f 72 ll.be.used.to.create.regexps.for
1e20 0a 6d 61 74 63 68 69 6e 67 20 63 61 6e 64 69 64 61 74 65 73 2e 0a 0a 41 20 66 75 6e 63 74 69 6f .matching.candidates...A.functio
1e40 6e 20 73 68 6f 75 6c 64 20 74 61 6b 65 20 74 68 65 20 73 75 62 2d 71 75 65 72 79 20 66 6f 72 20 n.should.take.the.sub-query.for.
1e60 77 68 69 63 68 20 69 74 20 73 68 6f 75 6c 64 20 63 72 65 61 74 65 20 61 0a 72 65 67 65 78 70 2c which.it.should.create.a.regexp,
1e80 20 61 6e 64 20 6b 65 79 77 6f 72 64 20 61 72 67 75 6d 65 6e 74 73 20 6f 66 20 77 68 69 63 68 20 .and.keyword.arguments.of.which.
1ea0 74 68 65 72 65 20 61 72 65 20 63 75 72 72 65 6e 74 6c 79 3a 0a 0a 20 20 20 20 77 69 74 68 2d 67 there.are.currently:......with-g
1ec0 72 6f 75 70 20 20 20 20 20 20 3c 62 6f 6f 6c 2d 76 61 6c 75 65 2d 6f 72 2d 61 6c 6c 3e 0a 20 20 roup......<bool-value-or-all>...
1ee0 20 20 73 75 62 71 75 65 72 79 2d 6e 75 6d 62 65 72 20 3c 69 6e 74 2d 76 61 6c 75 65 3e 0a 0a 54 ..subquery-number.<int-value>..T
1f00 68 65 20 62 6f 6f 6c 65 61 6e 20 6b 65 79 77 6f 72 64 20 61 72 67 75 6d 65 6e 74 20 57 49 54 48 he.boolean.keyword.argument.WITH
1f20 2d 47 52 4f 55 50 20 64 65 73 63 72 69 62 65 73 20 77 68 65 74 68 65 72 20 74 68 65 0a 66 75 6e -GROUP.describes.whether.the.fun
1f40 63 74 69 6f 6e 20 73 68 6f 75 6c 64 20 65 6e 63 6c 6f 73 65 20 6d 61 74 63 68 65 64 20 74 65 78 ction.should.enclose.matched.tex
1f60 74 20 69 6e 20 61 20 63 61 70 74 75 72 65 20 67 72 6f 75 70 20 28 73 75 63 68 20 61 73 0a 77 69 t.in.a.capture.group.(such.as.wi
1f80 74 68 20 60 70 72 65 73 63 69 65 6e 74 2d 77 69 74 68 2d 67 72 6f 75 70 27 29 2e 20 20 41 64 64 th.`prescient-with-group')...Add
1fa0 69 74 69 6f 6e 61 6c 6c 79 2c 20 69 66 20 74 68 65 20 76 61 6c 75 65 20 69 73 20 74 68 65 0a 73 itionally,.if.the.value.is.the.s
1fc0 79 6d 62 6f 6c 20 60 61 6c 6c 27 2c 20 74 68 65 6e 20 6c 69 74 65 72 61 6c 20 73 75 62 73 74 72 ymbol.`all',.then.literal.substr
1fe0 69 6e 67 73 20 73 68 6f 75 6c 64 20 62 65 20 65 6e 63 6c 6f 73 65 64 20 69 6e 0a 63 61 70 74 75 ings.should.be.enclosed.in.captu
2000 72 65 20 67 72 6f 75 70 73 2e 0a 0a 54 68 65 20 69 6e 74 65 67 65 72 20 6b 65 79 77 6f 72 64 20 re.groups...The.integer.keyword.
2020 61 72 67 75 6d 65 6e 74 20 53 55 42 51 55 45 52 59 2d 4e 55 4d 42 45 52 20 73 74 61 74 65 73 20 argument.SUBQUERY-NUMBER.states.
2040 74 68 65 20 6f 72 64 65 72 20 6f 66 0a 68 6f 77 20 74 68 65 20 69 6e 70 75 74 20 68 61 73 20 62 the.order.of.how.the.input.has.b
2060 65 65 6e 20 73 70 6c 69 74 20 69 6e 74 6f 20 69 6e 64 69 76 69 64 75 61 6c 20 73 75 62 71 75 65 een.split.into.individual.subque
2080 72 69 65 73 20 28 73 74 61 72 74 69 6e 67 0a 77 69 74 68 20 30 29 2e 20 20 46 6f 72 20 65 78 61 ries.(starting.with.0)...For.exa
20a0 6d 70 6c 65 2c 20 69 66 20 74 68 65 20 69 6e 70 75 74 20 77 61 73 20 5c 22 66 6f 6f 20 62 61 72 mple,.if.the.input.was.\"foo.bar
20c0 20 62 61 7a 5c 22 20 74 68 65 0a 66 75 6e 63 74 69 6f 6e 20 77 69 6c 6c 20 62 65 20 63 61 6c 6c .baz\".the.function.will.be.call
20e0 65 64 20 74 68 72 65 65 20 74 69 6d 65 73 3a 0a 0a 20 20 20 20 28 66 6e 20 5c 22 66 6f 6f 5c 22 ed.three.times:......(fn.\"foo\"
2100 20 3a 73 75 62 71 75 65 72 79 2d 6e 75 6d 62 65 72 20 30 29 0a 20 20 20 20 28 66 6e 20 5c 22 62 .:subquery-number.0).....(fn.\"b
2120 61 72 5c 22 20 3a 73 75 62 71 75 65 72 79 2d 6e 75 6d 62 65 72 20 31 29 0a 20 20 20 20 28 66 6e ar\".:subquery-number.1).....(fn
2140 20 5c 22 62 61 7a 5c 22 20 3a 73 75 62 71 75 65 72 79 2d 6e 75 6d 62 65 72 20 32 29 22 0a 20 20 .\"baz\".:subquery-number.2)"...
2160 3a 74 79 70 65 20 27 28 61 6c 69 73 74 20 3a 6b 65 79 2d 74 79 70 65 20 73 79 6d 62 6f 6c 20 3a :type.'(alist.:key-type.symbol.:
2180 76 61 6c 75 65 2d 74 79 70 65 20 66 75 6e 63 74 69 6f 6e 29 29 0a 0a 28 64 65 66 63 75 73 74 6f value-type.function))..(defcusto
21a0 6d 20 70 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 20 74 m.prescient-sort-length-enable.t
21c0 0a 20 20 22 57 68 65 74 68 65 72 20 74 6f 20 73 6f 72 74 20 63 61 6e 64 69 64 61 74 65 73 20 62 ..."Whether.to.sort.candidates.b
21e0 79 20 6c 65 6e 67 74 68 2e 0a 49 66 20 6e 6f 6e 2d 6e 69 6c 2c 20 74 68 65 6e 20 63 61 6e 64 69 y.length..If.non-nil,.then.candi
2200 64 61 74 65 73 20 77 69 74 68 20 69 64 65 6e 74 69 63 61 6c 20 72 65 63 65 6e 63 79 20 61 6e 64 dates.with.identical.recency.and
2220 20 66 72 65 71 75 65 6e 63 79 0a 77 69 6c 6c 20 62 65 20 73 6f 72 74 65 64 20 62 79 20 6c 65 6e .frequency.will.be.sorted.by.len
2240 67 74 68 2e 20 49 66 20 6e 69 6c 2c 20 74 68 65 6e 20 74 68 65 79 20 77 69 6c 6c 20 62 65 20 6c gth..If.nil,.then.they.will.be.l
2260 65 66 74 20 69 6e 20 74 68 65 0a 6f 72 64 65 72 20 6f 66 20 74 68 65 20 6f 72 69 67 69 6e 61 6c eft.in.the.order.of.the.original
2280 20 63 6f 6c 6c 65 63 74 69 6f 6e 2e 0a 0a 49 74 20 6d 69 67 68 74 20 62 65 20 64 65 73 69 72 61 .collection...It.might.be.desira
22a0 62 6c 65 20 74 6f 20 73 65 74 20 74 68 69 73 20 76 61 72 69 61 62 6c 65 20 74 6f 20 6e 69 6c 20 ble.to.set.this.variable.to.nil.
22c0 28 76 69 61 0a 60 63 6f 6d 70 61 6e 79 2d 70 72 65 73 63 69 65 6e 74 2d 73 6f 72 74 2d 6c 65 6e (via.`company-prescient-sort-len
22e0 67 74 68 2d 65 6e 61 62 6c 65 27 29 20 77 68 65 6e 20 77 6f 72 6b 69 6e 67 20 77 69 74 68 20 61 gth-enable').when.working.with.a
2300 0a 43 6f 6d 70 61 6e 79 20 62 61 63 6b 65 6e 64 20 77 68 69 63 68 20 72 65 74 75 72 6e 73 20 66 .Company.backend.which.returns.f
2320 75 7a 7a 79 2d 6d 61 74 63 68 65 64 20 72 65 73 75 6c 74 73 20 74 68 61 74 20 63 61 6e 6e 6f 74 uzzy-matched.results.that.cannot
2340 0a 75 73 65 66 75 6c 6c 79 20 62 65 20 73 6f 72 74 65 64 20 62 79 20 6c 65 6e 67 74 68 20 28 70 .usefully.be.sorted.by.length.(p
2360 72 65 73 75 6d 61 62 6c 79 2c 20 74 68 65 20 62 61 63 6b 65 6e 64 20 72 65 74 75 72 6e 73 0a 74 resumably,.the.backend.returns.t
2380 68 65 73 65 20 72 65 73 75 6c 74 73 20 69 6e 20 73 6f 6d 65 20 61 6c 72 65 61 64 79 2d 73 6f 72 hese.results.in.some.already-sor
23a0 74 65 64 20 6f 72 64 65 72 29 2e 22 0a 20 20 3a 74 79 70 65 20 27 62 6f 6f 6c 65 61 6e 29 0a 0a ted.order)."...:type.'boolean)..
23c0 28 64 65 66 63 75 73 74 6f 6d 20 70 72 65 73 63 69 65 6e 74 2d 74 69 65 62 72 65 61 6b 65 72 20 (defcustom.prescient-tiebreaker.
23e0 6e 69 6c 0a 20 20 22 49 66 20 6e 6f 6e 2d 6e 69 6c 2c 20 74 68 65 20 6d 65 74 68 6f 64 20 75 73 nil..."If.non-nil,.the.method.us
2400 65 64 20 74 6f 20 62 72 65 61 6b 20 74 69 65 73 20 69 6e 73 74 65 61 64 20 6f 66 20 6c 65 6e 67 ed.to.break.ties.instead.of.leng
2420 74 68 2e 0a 54 68 65 20 76 61 6c 75 65 20 77 69 6c 6c 20 62 65 20 63 61 6c 6c 65 64 20 61 73 20 th..The.value.will.be.called.as.
2440 61 20 66 75 6e 63 74 69 6f 6e 20 77 69 74 68 20 74 77 6f 20 63 61 6e 64 69 64 61 74 65 73 20 74 a.function.with.two.candidates.t
2460 68 61 74 0a 68 61 76 65 20 74 68 65 20 73 61 6d 65 20 72 65 63 65 6e 63 79 20 61 6e 64 20 66 72 hat.have.the.same.recency.and.fr
2480 65 71 75 65 6e 63 79 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2c 20 61 6e 64 20 73 68 6f 75 6c 64 0a equency.information,.and.should.
24a0 72 65 74 75 72 6e 20 61 20 6e 75 6d 62 65 72 20 74 6f 20 69 6e 64 69 63 61 74 65 20 74 68 65 69 return.a.number.to.indicate.thei
24c0 72 20 72 65 6c 61 74 69 76 65 20 6f 72 64 65 72 20 28 6e 65 67 61 74 69 76 65 20 66 6f 72 0a 66 r.relative.order.(negative.for.f
24e0 69 72 73 74 20 3c 20 73 65 63 6f 6e 64 2c 20 7a 65 72 6f 20 66 6f 72 20 66 69 72 73 74 20 3d 20 irst.<.second,.zero.for.first.=.
2500 73 65 63 6f 6e 64 2c 20 70 6f 73 69 74 69 76 65 20 66 6f 72 20 66 69 72 73 74 20 3e 0a 73 65 63 second,.positive.for.first.>.sec
2520 6f 6e 64 29 2c 20 77 68 65 72 65 20 63 61 6e 64 69 64 61 74 65 73 20 61 72 65 20 61 73 73 75 6d ond),.where.candidates.are.assum
2540 65 64 20 74 6f 20 73 6f 72 74 20 69 6e 20 61 73 63 65 6e 64 69 6e 67 20 6f 72 64 65 72 2e 0a 59 ed.to.sort.in.ascending.order..Y
2560 6f 75 20 63 61 6e 20 61 6c 73 6f 20 75 73 65 20 74 68 65 20 76 61 72 69 61 62 6c 65 20 60 70 72 ou.can.also.use.the.variable.`pr
2580 65 73 63 69 65 6e 74 2d 71 75 65 72 79 27 20 74 6f 20 61 63 63 65 73 73 20 74 68 65 0a 6f 72 69 escient-query'.to.access.the.ori
25a0 67 69 6e 61 6c 20 71 75 65 72 79 20 66 72 6f 6d 20 74 68 65 20 75 73 65 72 20 28 62 75 74 20 73 ginal.query.from.the.user.(but.s
25c0 65 65 20 74 68 61 74 20 76 61 72 69 61 62 6c 65 20 66 6f 72 0a 63 61 76 65 61 74 73 29 2e 22 0a ee.that.variable.for.caveats).".
25e0 20 20 3a 74 79 70 65 20 27 28 63 68 6f 69 63 65 0a 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 ..:type.'(choice...........(cons
2600 74 20 3a 74 61 67 20 22 4c 65 6e 67 74 68 22 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 20 20 28 t.:tag."Length".nil)...........(
2620 66 75 6e 63 74 69 6f 6e 20 3a 74 61 67 20 22 43 75 73 74 6f 6d 20 66 75 6e 63 74 69 6f 6e 22 29 function.:tag."Custom.function")
2640 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 61 67 67 72 65 73 73 ))..(defcustom.prescient-aggress
2660 69 76 65 2d 66 69 6c 65 2d 73 61 76 65 20 6e 69 6c 0a 20 20 22 57 68 65 74 68 65 72 20 74 6f 20 ive-file-save.nil..."Whether.to.
2680 73 61 76 65 20 74 68 65 20 63 61 63 68 65 20 66 69 6c 65 20 61 67 67 72 65 73 73 69 76 65 6c 79 save.the.cache.file.aggressively
26a0 2e 0a 49 66 20 6e 6f 6e 2d 6e 69 6c 2c 20 74 68 65 6e 20 77 72 69 74 65 20 74 68 65 20 63 61 63 ..If.non-nil,.then.write.the.cac
26c0 68 65 20 64 61 74 61 20 74 6f 20 60 70 72 65 73 63 69 65 6e 74 2d 73 61 76 65 2d 66 69 6c 65 27 he.data.to.`prescient-save-file'
26e0 0a 61 66 74 65 72 20 74 68 65 20 63 61 63 68 65 20 64 61 74 61 20 69 73 20 75 70 64 61 74 65 64 .after.the.cache.data.is.updated
2700 20 62 79 20 60 70 72 65 73 63 69 65 6e 74 2d 72 65 6d 65 6d 62 65 72 27 20 77 68 65 6e 0a 60 70 .by.`prescient-remember'.when.`p
2720 72 65 73 63 69 65 6e 74 2d 70 65 72 73 69 73 74 2d 6d 6f 64 65 27 20 69 73 20 61 63 74 69 76 61 rescient-persist-mode'.is.activa
2740 74 65 64 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 ted."...:type.'boolean)..(defcus
2760 74 6f 6d 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 2d tom.prescient-sort-full-matches-
2780 66 69 72 73 74 20 6e 69 6c 0a 20 20 22 57 68 65 74 68 65 72 20 74 6f 20 73 6f 72 74 20 66 75 6c first.nil..."Whether.to.sort.ful
27a0 6c 79 20 6d 61 74 63 68 65 64 20 63 61 6e 64 69 64 61 74 65 73 20 62 65 66 6f 72 65 20 6f 74 68 ly.matched.candidates.before.oth
27c0 65 72 73 2e 0a 0a 50 72 65 73 63 69 65 6e 74 20 63 61 6e 20 73 6f 72 74 20 62 79 20 72 65 63 65 ers...Prescient.can.sort.by.rece
27e0 6e 63 79 2c 20 66 72 65 71 75 65 6e 63 79 2c 20 61 6e 64 20 63 61 6e 64 69 64 61 74 65 20 6c 65 ncy,.frequency,.and.candidate.le
2800 6e 67 74 68 2e 0a 57 69 74 68 20 74 68 69 73 20 6f 70 74 69 6f 6e 2c 20 66 75 6c 6c 79 20 6d 61 ngth..With.this.option,.fully.ma
2820 74 63 68 65 64 20 63 61 6e 64 69 64 61 74 65 73 20 77 69 6c 6c 20 62 65 20 73 6f 72 74 65 64 20 tched.candidates.will.be.sorted.
2840 62 65 66 6f 72 65 0a 70 61 72 74 69 61 6c 6c 79 20 6d 61 74 63 68 65 64 20 63 61 6e 64 69 64 61 before.partially.matched.candida
2860 74 65 73 2c 20 62 75 74 20 63 61 6e 64 69 64 61 74 65 73 20 69 6e 20 65 61 63 68 20 67 72 6f 75 tes,.but.candidates.in.each.grou
2880 70 20 77 69 6c 6c 0a 73 74 69 6c 6c 20 62 65 20 73 6f 72 74 65 64 20 6c 69 6b 65 20 6e 6f 72 6d p.will.still.be.sorted.like.norm
28a0 61 6c 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 al."...:type.'boolean)..(defcust
28c0 6f 6d 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 20 74 0a om.prescient-use-char-folding.t.
28e0 20 20 22 57 68 65 74 68 65 72 20 63 65 72 74 61 69 6e 20 6c 69 74 65 72 61 6c 20 66 69 6c 74 65 .."Whether.certain.literal.filte
2900 72 69 6e 67 20 6d 65 74 68 6f 64 73 20 75 73 65 20 63 68 61 72 61 63 74 65 72 20 66 6f 6c 64 69 ring.methods.use.character.foldi
2920 6e 67 2e 0a 0a 54 68 69 73 20 61 66 66 65 63 74 73 20 74 68 65 20 60 6c 69 74 65 72 61 6c 27 20 ng...This.affects.the.`literal'.
2940 61 6e 64 20 60 6c 69 74 65 72 61 6c 2d 70 72 65 66 69 78 27 20 66 69 6c 74 65 72 69 6e 67 20 6d and.`literal-prefix'.filtering.m
2960 65 74 68 6f 64 73 2e 0a 0a 49 6e 20 45 6d 61 63 73 20 76 65 72 73 69 6f 6e 73 20 32 37 20 6f 72 ethods...In.Emacs.versions.27.or
2980 20 67 72 65 61 74 65 72 2c 20 73 65 65 20 61 6c 73 6f 20 74 68 65 20 63 75 73 74 6f 6d 69 7a 61 .greater,.see.also.the.customiza
29a0 62 6c 65 0a 76 61 72 69 61 62 6c 65 73 20 60 63 68 61 72 2d 66 6f 6c 64 2d 69 6e 63 6c 75 64 65 ble.variables.`char-fold-include
29c0 27 2c 20 60 63 68 61 72 2d 66 6f 6c 64 2d 65 78 63 6c 75 64 65 27 2c 20 61 6e 64 0a 60 63 68 61 ',.`char-fold-exclude',.and.`cha
29e0 72 2d 66 6f 6c 64 2d 73 79 6d 6d 65 74 72 69 63 27 2e 22 0a 20 20 3a 74 79 70 65 20 27 62 6f 6f r-fold-symmetric'."...:type.'boo
2a00 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 2d lean)..(defcustom.prescient-use-
2a20 63 61 73 65 2d 66 6f 6c 64 69 6e 67 20 27 73 6d 61 72 74 0a 20 20 22 57 68 65 74 68 65 72 20 66 case-folding.'smart..."Whether.f
2a40 69 6c 74 65 72 69 6e 67 20 6d 65 74 68 6f 64 73 20 61 72 65 20 63 61 73 65 20 66 6f 6c 64 69 6e iltering.methods.are.case.foldin
2a60 67 2e 0a 0a 49 66 20 74 2c 20 61 6c 77 61 79 73 20 75 73 65 20 63 61 73 65 20 66 6f 6c 64 69 6e g...If.t,.always.use.case.foldin
2a80 67 2e 20 20 49 66 20 6e 69 6c 2c 20 6e 65 76 65 72 20 75 73 65 20 63 61 73 65 20 66 6f 6c 64 69 g...If.nil,.never.use.case.foldi
2aa0 6e 67 2e 0a 49 66 20 60 73 6d 61 72 74 27 20 28 74 68 65 20 64 65 66 61 75 6c 74 29 2c 20 75 73 ng..If.`smart'.(the.default),.us
2ac0 65 20 63 61 73 65 20 66 6f 6c 64 69 6e 67 20 6f 6e 6c 79 20 77 68 65 6e 20 74 68 65 20 71 75 65 e.case.folding.only.when.the.que
2ae0 72 79 0a 63 6f 6e 74 61 69 6e 73 20 6e 6f 20 75 70 70 65 72 2d 63 61 73 65 20 6c 65 74 74 65 72 ry.contains.no.upper-case.letter
2b00 73 2e 22 0a 20 20 3a 74 79 70 65 20 27 28 63 68 6f 69 63 65 0a 20 20 20 20 20 20 20 20 20 20 28 s."...:type.'(choice...........(
2b20 63 6f 6e 73 74 20 3a 74 61 67 20 22 41 6c 77 61 79 73 22 20 74 29 0a 20 20 20 20 20 20 20 20 20 const.:tag."Always".t)..........
2b40 20 28 63 6f 6e 73 74 20 3a 74 61 67 20 22 4e 65 76 65 72 22 20 6e 69 6c 29 0a 20 20 20 20 20 20 .(const.:tag."Never".nil).......
2b60 20 20 20 20 28 63 6f 6e 73 74 20 3a 74 61 67 20 22 55 6e 6c 65 73 73 20 75 73 69 6e 67 20 75 70 ....(const.:tag."Unless.using.up
2b80 70 65 72 2d 63 61 73 65 20 6c 65 74 74 65 72 73 22 20 73 6d 61 72 74 29 29 29 0a 0a 28 64 65 66 per-case.letters".smart)))..(def
2ba0 63 75 73 74 6f 6d 20 70 72 65 73 63 69 65 6e 74 2d 63 6f 6d 70 6c 65 74 69 6f 6e 2d 68 69 67 68 custom.prescient-completion-high
2bc0 6c 69 67 68 74 2d 6d 61 74 63 68 65 73 20 74 0a 20 20 22 57 68 65 74 68 65 72 20 74 68 65 20 60 light-matches.t..."Whether.the.`
2be0 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 20 73 68 6f 75 prescient'.completion.style.shou
2c00 6c 64 20 68 69 67 68 6c 69 67 68 74 20 6d 61 74 63 68 65 73 2e 0a 0a 49 66 20 60 63 6f 6d 70 6c ld.highlight.matches...If.`compl
2c20 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 64 20 6e etion-lazy-hilit'.is.bound.and.n
2c40 6f 6e 2d 6e 69 6c 2c 20 74 68 65 6e 20 74 68 69 73 20 75 73 65 72 0a 6f 70 74 69 6f 6e 20 69 73 on-nil,.then.this.user.option.is
2c60 20 69 67 6e 6f 72 65 64 20 69 6e 20 66 61 76 6f 72 20 6f 66 20 74 68 61 74 20 76 61 72 69 61 62 .ignored.in.favor.of.that.variab
2c80 6c 65 2e 0a 0a 53 65 65 20 61 6c 73 6f 20 74 68 65 20 66 61 63 65 73 20 60 70 72 65 73 63 69 65 le...See.also.the.faces.`prescie
2ca0 6e 74 2d 70 72 69 6d 61 72 79 2d 68 69 67 68 6c 69 67 68 74 27 20 61 6e 64 0a 60 70 72 65 73 63 nt-primary-highlight'.and.`presc
2cc0 69 65 6e 74 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 3a 74 ient-secondary-highlight'."...:t
2ce0 79 70 65 20 27 62 6f 6f 6c 65 61 6e 29 0a 0a 28 64 65 66 69 6e 65 2d 6f 62 73 6f 6c 65 74 65 2d ype.'boolean)..(define-obsolete-
2d00 66 61 63 65 2d 61 6c 69 61 73 20 27 73 65 6c 65 63 74 72 75 6d 2d 70 72 69 6d 61 72 79 2d 68 69 face-alias.'selectrum-primary-hi
2d20 67 68 6c 69 67 68 74 0a 20 20 27 70 72 65 73 63 69 65 6e 74 2d 70 72 69 6d 61 72 79 2d 68 69 67 ghlight...'prescient-primary-hig
2d40 68 6c 69 67 68 74 20 74 29 0a 28 64 65 66 69 6e 65 2d 6f 62 73 6f 6c 65 74 65 2d 66 61 63 65 2d hlight.t).(define-obsolete-face-
2d60 61 6c 69 61 73 20 27 73 65 6c 65 63 74 72 75 6d 2d 70 72 65 73 63 69 65 6e 74 2d 70 72 69 6d 61 alias.'selectrum-prescient-prima
2d80 72 79 2d 68 69 67 68 6c 69 67 68 74 0a 20 20 27 70 72 65 73 63 69 65 6e 74 2d 70 72 69 6d 61 72 ry-highlight...'prescient-primar
2da0 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 63 69 65 6e y-highlight.t).(defface.prescien
2dc0 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 77 65 69 67 t-primary-highlight...'((t.:weig
2de0 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 67 68 6c 69 ht.bold))..."Face.used.to.highli
2e00 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 74 68 61 74 ght.the.parts.of.candidates.that
2e20 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 2d 6f 62 73 .match.the.input.")..(define-obs
2e40 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 73 65 63 6f olete-face-alias.'selectrum-seco
2e60 6e 64 61 72 79 2d 68 69 67 68 6c 69 67 68 74 0a 20 20 27 70 72 65 73 63 69 65 6e 74 2d 73 65 63 ndary-highlight...'prescient-sec
2e80 6f 6e 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 ondary-highlight.t).(define-obso
2ea0 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
2ec0 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 70 72 65 73 ient-secondary-highlight...'pres
2ee0 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 20 74 29 0a 28 64 65 cient-secondary-highlight.t).(de
2f00 66 66 61 63 65 20 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 fface.prescient-secondary-highli
2f20 67 68 74 0a 20 20 27 28 28 74 20 3a 69 6e 68 65 72 69 74 20 70 72 65 73 63 69 65 6e 74 2d 70 72 ght...'((t.:inherit.prescient-pr
2f40 69 6d 61 72 79 2d 68 69 67 68 6c 69 67 68 74 20 3a 75 6e 64 65 72 6c 69 6e 65 20 74 29 29 0a 20 imary-highlight.:underline.t))..
2f60 20 22 41 64 64 69 74 69 6f 6e 61 6c 20 66 61 63 65 20 75 73 65 64 20 74 6f 20 68 69 67 68 6c 69 ."Additional.face.used.to.highli
2f80 67 68 74 20 70 61 72 74 73 20 6f 66 20 63 61 6e 64 69 64 61 74 65 73 2e 0a 0a 4d 61 79 20 62 65 ght.parts.of.candidates...May.be
2fa0 20 75 73 65 64 20 74 6f 20 68 69 67 68 6c 69 67 68 74 20 70 61 72 74 73 20 6f 66 20 63 61 6e 64 .used.to.highlight.parts.of.cand
2fc0 69 64 61 74 65 73 20 74 68 61 74 20 6d 61 74 63 68 20 73 70 65 63 69 66 69 63 0a 70 61 72 74 73 idates.that.match.specific.parts
2fe0 20 6f 66 20 74 68 65 20 69 6e 70 75 74 2e 22 29 0a 0a 3b 3b 3b 3b 20 43 61 63 68 65 73 0a 0a 28 .of.the.input.")..;;;;.Caches..(
3000 64 65 66 76 61 72 20 70 72 65 73 63 69 65 6e 74 2d 2d 68 69 73 74 6f 72 79 20 28 6d 61 6b 65 2d defvar.prescient--history.(make-
3020 68 61 73 68 2d 74 61 62 6c 65 20 3a 74 65 73 74 20 27 65 71 75 61 6c 29 0a 20 20 22 48 61 73 68 hash-table.:test.'equal)..."Hash
3040 20 74 61 62 6c 65 20 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 .table.of.recently.chosen.candid
3060 61 74 65 73 2e 0a 54 68 65 20 6b 65 79 73 20 61 72 65 20 63 61 6e 64 69 64 61 74 65 73 20 61 73 ates..The.keys.are.candidates.as
3080 20 73 74 72 69 6e 67 73 20 61 6e 64 20 74 68 65 20 76 61 6c 75 65 73 20 61 72 65 20 30 2d 62 61 .strings.and.the.values.are.0-ba
30a0 73 65 64 0a 69 6e 64 69 63 65 73 2c 20 6c 65 73 73 20 74 68 61 6e 20 60 70 72 65 73 63 69 65 6e sed.indices,.less.than.`prescien
30c0 74 2d 68 69 73 74 6f 72 79 2d 6c 65 6e 67 74 68 27 2e 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 t-history-length'..The.number.of
30e0 0a 76 61 6c 75 65 73 20 77 69 6c 6c 20 62 65 20 61 74 20 6d 6f 73 74 20 60 70 72 65 73 63 69 65 .values.will.be.at.most.`prescie
3100 6e 74 2d 68 69 73 74 6f 72 79 2d 6c 65 6e 67 74 68 27 2e 22 29 0a 0a 28 64 65 66 75 6e 20 70 72 nt-history-length'.")..(defun.pr
3120 65 73 63 69 65 6e 74 2d 2d 68 69 73 74 6f 72 79 2d 61 73 2d 6c 69 73 74 20 28 29 0a 20 20 22 52 escient--history-as-list.()..."R
3140 65 74 75 72 6e 20 61 20 6c 69 73 74 20 6f 66 20 74 68 65 20 6d 6f 73 74 20 72 65 63 65 6e 74 6c eturn.a.list.of.the.most.recentl
3160 79 20 63 68 6f 73 65 6e 20 63 61 6e 64 69 64 61 74 65 73 20 61 73 20 73 74 72 69 6e 67 73 2e 0a y.chosen.candidates.as.strings..
3180 54 68 65 20 6d 6f 73 74 20 72 65 63 65 6e 74 6c 79 20 63 68 6f 73 65 6e 20 63 61 6e 64 69 64 61 The.most.recently.chosen.candida
31a0 74 65 73 20 61 72 65 20 61 74 20 74 68 65 20 66 72 6f 6e 74 20 6f 66 20 74 68 65 0a 6c 69 73 74 tes.are.at.the.front.of.the.list
31c0 2e 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 6d 6f 73 74 6c 79 20 75 73 65 66 75 6c ..This.function.is.mostly.useful
31e0 20 66 6f 72 20 64 65 62 75 67 67 69 6e 67 2e 22 0a 20 20 28 6c 65 74 20 28 28 68 69 73 74 6f 72 .for.debugging."...(let.((histor
3200 79 20 28 6d 61 6b 65 2d 76 65 63 74 6f 72 20 70 72 65 73 63 69 65 6e 74 2d 68 69 73 74 6f 72 79 y.(make-vector.prescient-history
3220 2d 6c 65 6e 67 74 68 20 6e 69 6c 29 29 29 0a 20 20 20 20 28 6d 61 70 68 61 73 68 0a 20 20 20 20 -length.nil))).....(maphash.....
3240 20 28 6c 61 6d 62 64 61 20 28 63 61 6e 64 20 69 6e 64 65 78 29 0a 20 20 20 20 20 20 20 28 69 67 .(lambda.(cand.index)........(ig
3260 6e 6f 72 65 2d 65 72 72 6f 72 73 0a 20 20 20 20 20 20 20 20 20 28 61 73 65 74 20 68 69 73 74 6f nore-errors..........(aset.histo
3280 72 79 20 69 6e 64 65 78 20 63 61 6e 64 29 29 29 0a 20 20 20 20 20 70 72 65 73 63 69 65 6e 74 2d ry.index.cand)))......prescient-
32a0 2d 68 69 73 74 6f 72 79 29 0a 20 20 20 20 28 63 6c 2d 72 65 6d 6f 76 65 20 6e 69 6c 20 28 61 70 -history).....(cl-remove.nil.(ap
32c0 70 65 6e 64 20 68 69 73 74 6f 72 79 20 6e 69 6c 29 29 29 29 0a 0a 28 64 65 66 76 61 72 20 70 72 pend.history.nil))))..(defvar.pr
32e0 65 73 63 69 65 6e 74 2d 2d 66 72 65 71 75 65 6e 63 79 20 28 6d 61 6b 65 2d 68 61 73 68 2d 74 61 escient--frequency.(make-hash-ta
3300 62 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 ble.:test.'equal)..."Hash.table.
3320 6f 66 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 65 73 2e of.frequently.chosen.candidates.
3340 0a 54 68 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 .The.keys.are.candidates.as.stri
3360 6e 67 73 20 61 6e 64 20 74 68 65 20 76 61 6c 75 65 73 20 61 72 65 0a 66 72 65 71 75 65 6e 63 69 ngs.and.the.values.are.frequenci
3380 65 73 20 28 66 6c 6f 61 74 69 6e 67 2d 70 6f 69 6e 74 20 6e 75 6d 62 65 72 73 29 2e 20 46 72 65 es.(floating-point.numbers)..Fre
33a0 71 75 65 6e 63 69 65 73 20 77 69 6c 6c 20 62 65 20 61 74 0a 6c 65 61 73 74 20 60 70 72 65 73 63 quencies.will.be.at.least.`presc
33c0 69 65 6e 74 2d 66 72 65 71 75 65 6e 63 79 2d 74 68 72 65 73 68 6f 6c 64 27 2e 22 29 0a 0a 28 64 ient-frequency-threshold'.")..(d
33e0 65 66 76 61 72 20 70 72 65 73 63 69 65 6e 74 2d 2d 63 61 63 68 65 2d 6c 6f 61 64 65 64 20 6e 69 efvar.prescient--cache-loaded.ni
3400 6c 0a 20 20 22 4e 6f 6e 2d 6e 69 6c 20 69 66 20 70 72 65 73 63 69 65 6e 74 2e 65 6c 20 64 61 74 l..."Non-nil.if.prescient.el.dat
3420 61 20 77 61 73 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 a.was.loaded.from.`prescient-sav
3440 65 2d 66 69 6c 65 27 2e 0a 45 76 65 6e 20 69 66 20 74 68 65 20 6c 6f 61 64 20 66 61 69 6c 65 64 e-file'..Even.if.the.load.failed
3460 2c 20 74 68 69 73 20 76 61 72 69 61 62 6c 65 20 69 73 20 73 74 69 6c 6c 20 73 65 74 20 74 6f 20 ,.this.variable.is.still.set.to.
3480 6e 6f 6e 2d 6e 69 6c 0a 77 68 65 6e 20 60 70 72 65 73 63 69 65 6e 74 2d 2d 6c 6f 61 64 27 20 69 non-nil.when.`prescient--load'.i
34a0 73 20 63 61 6c 6c 65 64 2e 22 29 0a 0a 28 64 65 66 76 61 72 20 70 72 65 73 63 69 65 6e 74 2d 2d s.called.")..(defvar.prescient--
34c0 73 65 72 69 61 6c 2d 6e 75 6d 62 65 72 20 30 0a 20 20 22 4e 75 6d 62 65 72 20 6f 66 20 74 69 6d serial-number.0..."Number.of.tim
34e0 65 73 20 60 70 72 65 73 63 69 65 6e 74 2d 72 65 6d 65 6d 62 65 72 27 20 68 61 73 20 62 65 65 6e es.`prescient-remember'.has.been
3500 20 63 61 6c 6c 65 64 2e 0a 0a 54 68 69 73 20 69 73 20 75 73 65 64 20 74 6f 20 64 65 74 65 72 6d .called...This.is.used.to.determ
3520 69 6e 65 20 77 68 69 63 68 20 73 65 74 20 6f 66 20 63 68 61 6e 67 65 73 20 74 6f 20 74 68 65 20 ine.which.set.of.changes.to.the.
3540 73 61 76 65 20 66 69 6c 65 0a 73 68 6f 75 6c 64 20 5c 22 77 69 6e 5c 22 20 77 68 65 6e 20 74 77 save.file.should.\"win\".when.tw
3560 6f 20 63 6f 6e 63 75 72 72 65 6e 74 20 45 6d 61 63 73 20 73 65 73 73 69 6f 6e 73 20 77 61 6e 74 o.concurrent.Emacs.sessions.want
3580 20 74 6f 20 6d 6f 64 69 66 79 0a 69 74 2e 22 29 0a 0a 28 64 65 66 75 6e 20 70 72 65 73 63 69 65 .to.modify.it.")..(defun.prescie
35a0 6e 74 2d 66 6f 72 67 65 74 20 28 63 61 6e 64 69 64 61 74 65 29 0a 20 20 22 52 65 6d 6f 76 65 20 nt-forget.(candidate)..."Remove.
35c0 43 41 4e 44 49 44 41 54 45 20 66 72 6f 6d 20 72 65 63 65 6e 63 79 20 61 6e 64 20 66 72 65 71 75 CANDIDATE.from.recency.and.frequ
35e0 65 6e 63 79 20 72 65 63 6f 72 64 73 2e 22 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 0a 20 20 ency.records."...(interactive...
3600 20 28 6c 69 73 74 20 28 63 6f 6d 70 6c 65 74 69 6e 67 2d 72 65 61 64 20 22 46 6f 72 67 65 74 20 .(list.(completing-read."Forget.
3620 63 61 6e 64 69 64 61 74 65 3a 20 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 candidate:."....................
3640 20 20 20 20 20 20 20 3b 3b 20 53 69 6e 63 65 20 63 61 6e 64 69 64 61 74 65 73 20 61 72 65 20 73 .......;;.Since.candidates.are.s
3660 68 61 72 65 64 2c 20 73 65 6c 65 63 74 20 66 72 6f 6d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 hared,.select.from..............
3680 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 74 68 65 20 74 61 62 6c 65 20 77 69 74 68 20 74 .............;;.the.table.with.t
36a0 68 65 20 6d 6f 73 74 20 63 61 6e 64 69 64 61 74 65 73 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 he.most.candidates..............
36c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 3e 20 28 68 61 73 68 2d 74 61 62 6c 65 ..............(if.(>.(hash-table
36e0 2d 73 69 7a 65 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 20 -size.prescient--frequency).....
3700 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 68 61 .............................(ha
3720 73 68 2d 74 61 62 6c 65 2d 73 69 7a 65 20 70 72 65 73 63 69 65 6e 74 2d 2d 68 69 73 74 6f 72 79 sh-table-size.prescient--history
3740 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ))..............................
3760 20 70 72 65 73 63 69 65 6e 74 2d 2d 66 72 65 71 75 65 6e 63 79 0a 20 20 20 20 20 20 20 20 20 20 .prescient--frequency...........
3780 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 6e 74 2d 2d 68 69 73 ..................prescient--his
37a0 74 6f 72 79 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 tory)...........................
37c0 6e 69 6c 20 74 29 29 29 0a 20 20 28 72 65 6d 68 61 73 68 20 63 61 6e 64 69 64 61 74 65 20 70 72 nil.t)))...(remhash.candidate.pr
37e0 65 73 63 69 65 6e 74 2d 2d 68 69 73 74 6f 72 79 29 0a 20 20 28 72 65 6d 68 61 73 68 20 63 61 6e escient--history)...(remhash.can
3800 64 69 64 61 74 65 20 70 72 65 73 63 69 65 6e 74 2d 2d 66 72 65 71 75 65 6e 63 79 29 29 0a 0a 3b didate.prescient--frequency))..;
3820 3b 3b 3b 20 50 65 72 73 69 73 74 65 6e 63 65 0a 0a 28 64 65 66 76 61 72 20 70 72 65 73 63 69 65 ;;;.Persistence..(defvar.prescie
3840 6e 74 2d 2d 63 61 63 68 65 2d 76 65 72 73 69 6f 6e 20 35 0a 20 20 22 43 75 72 72 65 6e 74 20 76 nt--cache-version.5..."Current.v
3860 65 72 73 69 6f 6e 20 6e 75 6d 62 65 72 20 6f 66 20 60 70 72 65 73 63 69 65 6e 74 2d 73 61 76 65 ersion.number.of.`prescient-save
3880 2d 66 69 6c 65 27 20 66 6f 72 6d 61 74 2e 22 29 0a 0a 28 64 65 66 76 61 72 20 70 72 65 73 63 69 -file'.format.")..(defvar.presci
38a0 65 6e 74 2d 63 61 63 68 65 2d 63 61 6c 6c 62 61 63 6b 20 23 27 69 67 6e 6f 72 65 0a 20 20 22 43 ent-cache-callback.#'ignore..."C
38c0 61 6c 6c 62 61 63 6b 20 66 75 6e 63 74 69 6f 6e 20 63 61 6c 6c 65 64 20 62 79 20 6c 6f 61 64 69 allback.function.called.by.loadi
38e0 6e 67 20 60 70 72 65 73 63 69 65 6e 74 2d 73 61 76 65 2d 66 69 6c 65 27 2e 0a 41 20 60 66 75 6e ng.`prescient-save-file'..A.`fun
3900 63 61 6c 6c 27 20 74 6f 20 74 68 69 73 20 76 61 72 69 61 62 6c 65 20 69 73 20 77 72 69 74 74 65 call'.to.this.variable.is.writte
3920 6e 20 74 6f 20 60 70 72 65 73 63 69 65 6e 74 2d 73 61 76 65 2d 66 69 6c 65 27 2e 0a 54 68 65 20 n.to.`prescient-save-file'..The.
3940 66 75 6e 63 74 69 6f 6e 20 6d 61 79 20 70 72 6f 64 75 63 65 20 65 72 72 6f 72 73 3b 20 74 68 65 function.may.produce.errors;.the
3960 79 20 77 69 6c 6c 20 62 65 20 69 67 6e 6f 72 65 64 2e 0a 0a 55 73 75 61 6c 6c 79 20 74 68 69 73 y.will.be.ignored...Usually.this
3980 20 76 61 72 69 61 62 6c 65 20 69 73 20 64 79 6e 61 6d 69 63 61 6c 6c 79 20 62 6f 75 6e 64 20 74 .variable.is.dynamically.bound.t
39a0 6f 20 61 6e 6f 74 68 65 72 20 76 61 6c 75 65 20 77 68 69 6c 65 0a 60 70 72 65 73 63 69 65 6e 74 o.another.value.while.`prescient
39c0 2d 73 61 76 65 2d 66 69 6c 65 27 20 69 73 20 6c 6f 61 64 65 64 2e 22 29 0a 0a 28 64 65 66 75 6e -save-file'.is.loaded.")..(defun
39e0 20 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 20 28 29 0a 20 20 .prescient--load-save-file.()...
3a00 22 4c 6f 61 64 20 60 70 72 65 73 63 69 65 6e 74 2d 73 61 76 65 2d 66 69 6c 65 27 2c 20 69 67 6e "Load.`prescient-save-file',.ign
3a20 6f 72 69 6e 67 20 65 72 72 6f 72 73 2e 22 0a 20 20 28 6c 65 74 20 28 28 6c 6f 61 64 2d 73 6f 75 oring.errors."...(let.((load-sou
3a40 72 63 65 2d 66 69 6c 65 2d 66 75 6e 63 74 69 6f 6e 20 6e 69 6c 29 29 0a 20 20 20 20 28 69 67 6e rce-file-function.nil)).....(ign
3a60 6f 72 65 2d 65 72 72 6f 72 73 0a 20 20 20 20 20 20 28 6c 6f 61 64 20 70 72 65 73 63 69 65 6e 74 ore-errors.......(load.prescient
3a80 2d 73 61 76 65 2d 66 69 6c 65 20 27 6e 6f 65 72 72 6f 72 20 27 6e 6f 6d 65 73 73 61 67 29 29 29 -save-file.'noerror.'nomessag)))
3aa0 29 0a 0a 28 64 65 66 75 6e 20 70 72 65 73 63 69 65 6e 74 2d 2d 6c 6f 61 64 20 28 29 0a 20 20 22 )..(defun.prescient--load.()..."
3ac0 52 65 61 64 20 64 61 74 61 20 66 72 6f 6d 20 60 70 72 65 73 63 69 65 6e 74 2d 73 61 76 65 2d 66 Read.data.from.`prescient-save-f
3ae0 69 6c 65 27 2e 22 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 29 0a 20 20 28 63 6c 2d 6c 65 74 ile'."...(interactive)...(cl-let
3b00 66 20 28 28 70 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 f.((prescient-cache-callback....
3b20 20 20 20 20 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 ..........(lambda.(&rest.args)..
3b40 20 20 20 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 ..............(when.(equal.(plis
3b60 74 2d 67 65 74 20 61 72 67 73 20 3a 76 65 72 73 69 6f 6e 29 20 70 72 65 73 63 69 65 6e 74 2d 2d t-get.args.:version).prescient--
3b80 63 61 63 68 65 2d 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 cache-version)..................
3ba0 28 73 65 74 71 20 70 72 65 73 63 69 65 6e 74 2d 2d 68 69 73 74 6f 72 79 20 28 70 6c 69 73 74 2d (setq.prescient--history.(plist-
3bc0 67 65 74 20 61 72 67 73 20 3a 68 69 73 74 6f 72 79 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 get.args.:history)).............
3be0 20 20 20 20 20 28 73 65 74 71 20 70 72 65 73 63 69 65 6e 74 2d 2d 66 72 65 71 75 65 6e 63 79 20 .....(setq.prescient--frequency.
3c00 28 70 6c 69 73 74 2d 67 65 74 20 61 72 67 73 20 3a 66 72 65 71 75 65 6e 63 79 29 29 0a 20 20 20 (plist-get.args.:frequency))....
3c20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 70 72 65 73 63 69 65 6e 74 2d 2d 73 ..............(setq.prescient--s
3c40 65 72 69 61 6c 2d 6e 75 6d 62 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 erial-number....................
3c60 20 20 20 20 28 70 6c 69 73 74 2d 67 65 74 20 61 72 67 73 20 3a 73 65 72 69 61 6c 2d 6e 75 6d 62 ....(plist-get.args.:serial-numb
3c80 65 72 29 29 29 29 29 29 0a 20 20 20 20 28 70 72 65 73 63 69 65 6e 74 2d 2d 6c 6f 61 64 2d 73 61 er)))))).....(prescient--load-sa
3ca0 76 65 2d 66 69 6c 65 29 29 0a 20 20 28 73 65 74 71 20 70 72 65 73 63 69 65 6e 74 2d 2d 63 61 63 ve-file))...(setq.prescient--cac
3cc0 68 65 2d 6c 6f 61 64 65 64 20 74 29 29 0a 0a 28 64 65 66 75 6e 20 70 72 65 73 63 69 65 6e 74 2d he-loaded.t))..(defun.prescient-
3ce0 2d 73 61 76 65 20 28 29 0a 20 20 22 57 72 69 74 65 20 64 61 74 61 20 74 6f 20 60 70 72 65 73 63 -save.()..."Write.data.to.`presc
3d00 69 65 6e 74 2d 73 61 76 65 2d 66 69 6c 65 27 2e 22 0a 20 20 28 63 6c 2d 6c 65 74 66 2a 20 28 28 ient-save-file'."...(cl-letf*.((
3d20 73 61 76 65 64 2d 73 65 72 69 61 6c 2d 6e 75 6d 62 65 72 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 saved-serial-number.nil)........
3d40 20 20 20 20 20 20 28 70 72 65 73 63 69 65 6e 74 2d 63 61 63 68 65 2d 63 61 6c 6c 62 61 63 6b 0a ......(prescient-cache-callback.
3d60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 26 72 65 73 74 20 61 72 67 ..............(lambda.(&rest.arg
3d80 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 65 71 75 61 6c 20 s).................(when.(equal.
3da0 28 70 6c 69 73 74 2d 67 65 74 20 61 72 67 73 20 3a 76 65 72 73 69 6f 6e 29 0a 20 20 20 20 20 20 (plist-get.args.:version).......
3dc0 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 6e 74 .......................prescient
3de0 2d 2d 63 61 63 68 65 2d 76 65 72 73 69 6f 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 --cache-version)................
3e00 20 20 20 28 73 65 74 71 20 73 61 76 65 64 2d 73 65 72 69 61 6c 2d 6e 75 6d 62 65 72 0a 20 20 20 ...(setq.saved-serial-number....
3e20 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 73 74 2d 67 65 74 20 .....................(plist-get.
3e40 61 72 67 73 20 3a 73 65 72 69 61 6c 2d 6e 75 6d 62 65 72 29 29 29 29 29 0a 20 20 20 20 20 20 20 args.:serial-number)))))........
3e60 20 20 20 20 20 20 28 70 72 69 6e 74 2d 6c 65 6e 67 74 68 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 ......(print-length.nil)........
3e80 20 20 20 20 20 20 28 70 72 69 6e 74 2d 6c 65 76 65 6c 20 6e 69 6c 29 29 0a 20 20 20 20 28 70 72 ......(print-level.nil)).....(pr
3ea0 65 73 63 69 65 6e 74 2d 2d 6c 6f 61 64 2d 73 61 76 65 2d 66 69 6c 65 29 0a 20 20 20 20 28 77 68 escient--load-save-file).....(wh
3ec0 65 6e 20 28 6f 72 20 28 6e 6f 74 20 28 6e 75 6d 62 65 72 70 20 73 61 76 65 64 2d 73 65 72 69 61 en.(or.(not.(numberp.saved-seria
3ee0 6c 2d 6e 75 6d 62 65 72 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 3e 3d 20 70 72 65 l-number))...............(>=.pre
3f00 73 63 69 65 6e 74 2d 2d 73 65 72 69 61 6c 2d 6e 75 6d 62 65 72 20 73 61 76 65 64 2d 73 65 72 69 scient--serial-number.saved-seri
3f20 61 6c 2d 6e 75 6d 62 65 72 29 29 0a 20 20 20 20 20 20 28 6d 61 6b 65 2d 64 69 72 65 63 74 6f 72 al-number)).......(make-director
3f40 79 20 28 66 69 6c 65 2d 6e 61 6d 65 2d 64 69 72 65 63 74 6f 72 79 0a 20 20 20 20 20 20 20 20 20 y.(file-name-directory..........
3f60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 78 70 61 6e 64 2d 66 69 6c 65 2d 6e 61 6d 65 20 ..............(expand-file-name.
3f80 70 72 65 73 63 69 65 6e 74 2d 73 61 76 65 2d 66 69 6c 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 prescient-save-file))...........
3fa0 20 20 20 20 20 20 20 20 20 20 20 20 27 70 61 72 65 6e 74 73 29 0a 20 20 20 20 20 20 28 77 69 74 ............'parents).......(wit
3fc0 68 2d 74 65 6d 70 2d 66 69 6c 65 20 70 72 65 73 63 69 65 6e 74 2d 73 61 76 65 2d 66 69 6c 65 0a h-temp-file.prescient-save-file.
3fe0 20 20 20 20 20 20 20 20 28 70 72 69 6e 74 0a 20 20 20 20 20 20 20 20 20 60 28 66 75 6e 63 61 6c ........(print..........`(funcal
4000 6c 20 70 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 l.prescient-cache-callback......
4020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 76 65 72 73 69 6f 6e 20 27 2c 70 72 65 73 63 69 65 ..............:version.',prescie
4040 6e 74 2d 2d 63 61 63 68 65 2d 76 65 72 73 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 nt--cache-version...............
4060 20 20 20 20 20 3a 68 69 73 74 6f 72 79 20 27 2c 70 72 65 73 63 69 65 6e 74 2d 2d 68 69 73 74 6f .....:history.',prescient--histo
4080 72 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 66 72 65 71 75 65 6e 63 79 ry....................:frequency
40a0 20 27 2c 70 72 65 73 63 69 65 6e 74 2d 2d 66 72 65 71 75 65 6e 63 79 0a 20 20 20 20 20 20 20 20 .',prescient--frequency.........
40c0 20 20 20 20 20 20 20 20 20 20 20 3a 73 65 72 69 61 6c 2d 6e 75 6d 62 65 72 20 27 2c 70 72 65 73 ...........:serial-number.',pres
40e0 63 69 65 6e 74 2d 2d 73 65 72 69 61 6c 2d 6e 75 6d 62 65 72 29 0a 20 20 20 20 20 20 20 20 20 28 cient--serial-number)..........(
4100 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 29 29 29 29 29 0a 0a 28 64 65 66 69 6e 65 2d 6d 69 current-buffer))))))..(define-mi
4120 6e 6f 72 2d 6d 6f 64 65 20 70 72 65 73 63 69 65 6e 74 2d 70 65 72 73 69 73 74 2d 6d 6f 64 65 0a nor-mode.prescient-persist-mode.
4140 20 20 22 4d 69 6e 6f 72 20 6d 6f 64 65 20 74 6f 20 70 65 72 73 69 73 74 20 70 72 65 73 63 69 65 .."Minor.mode.to.persist.prescie
4160 6e 74 2e 65 6c 20 73 74 61 74 69 73 74 69 63 73 20 74 6f 20 60 70 72 65 73 63 69 65 6e 74 2d 73 nt.el.statistics.to.`prescient-s
4180 61 76 65 2d 66 69 6c 65 27 2e 22 0a 20 20 3a 67 6c 6f 62 61 6c 20 74 0a 20 20 3a 67 72 6f 75 70 ave-file'."...:global.t...:group
41a0 20 27 70 72 65 73 63 69 65 6e 74 0a 20 20 28 69 66 20 70 72 65 73 63 69 65 6e 74 2d 70 65 72 73 .'prescient...(if.prescient-pers
41c0 69 73 74 2d 6d 6f 64 65 0a 20 20 20 20 20 20 28 70 72 6f 67 6e 0a 20 20 20 20 20 20 20 20 28 70 ist-mode.......(progn.........(p
41e0 72 65 73 63 69 65 6e 74 2d 70 65 72 73 69 73 74 2d 6d 6f 64 65 20 2d 31 29 0a 20 20 20 20 20 20 rescient-persist-mode.-1).......
4200 20 20 28 73 65 74 71 20 70 72 65 73 63 69 65 6e 74 2d 70 65 72 73 69 73 74 2d 6d 6f 64 65 20 74 ..(setq.prescient-persist-mode.t
4220 29 0a 20 20 20 20 20 20 20 20 28 61 64 64 2d 68 6f 6f 6b 20 27 6b 69 6c 6c 2d 65 6d 61 63 73 2d ).........(add-hook.'kill-emacs-
4240 68 6f 6f 6b 20 23 27 70 72 65 73 63 69 65 6e 74 2d 2d 73 61 76 65 29 29 0a 20 20 20 20 28 72 65 hook.#'prescient--save)).....(re
4260 6d 6f 76 65 2d 68 6f 6f 6b 20 27 6b 69 6c 6c 2d 65 6d 61 63 73 2d 68 6f 6f 6b 20 23 27 70 72 65 move-hook.'kill-emacs-hook.#'pre
4280 73 63 69 65 6e 74 2d 2d 73 61 76 65 29 29 29 0a 0a 3b 3b 3b 3b 20 55 74 69 6c 69 74 79 20 66 75 scient--save)))..;;;;.Utility.fu
42a0 6e 63 74 69 6f 6e 73 0a 28 64 65 66 75 6e 20 70 72 65 73 63 69 65 6e 74 2d 2d 63 68 61 72 2d 66 nctions.(defun.prescient--char-f
42c0 6f 6c 64 2d 74 6f 2d 72 65 67 65 78 70 20 28 73 74 72 69 6e 67 29 0a 20 20 22 43 6f 6e 76 65 72 old-to-regexp.(string)..."Conver
42e0 74 20 53 54 52 49 4e 47 20 74 6f 20 61 20 72 65 67 65 78 70 20 74 68 61 74 20 68 61 6e 64 6c 65 t.STRING.to.a.regexp.that.handle
4300 73 20 63 68 61 72 20 66 6f 6c 64 69 6e 67 2e 0a 54 68 69 73 20 69 73 20 74 68 65 20 73 61 6d 65 s.char.folding..This.is.the.same
4320 20 61 73 20 60 63 68 61 72 2d 66 6f 6c 64 2d 74 6f 2d 72 65 67 65 78 70 27 20 62 75 74 20 69 74 .as.`char-fold-to-regexp'.but.it
4340 20 77 6f 72 6b 73 20 61 72 6f 75 6e 64 0a 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d .works.around.https://github.com
4360 2f 72 61 78 6f 64 35 30 32 2f 70 72 65 73 63 69 65 6e 74 2e 65 6c 2f 69 73 73 75 65 73 2f 37 31 /raxod502/prescient.el/issues/71
4380 2e 20 54 68 65 20 69 73 73 75 65 0a 73 68 6f 75 6c 64 20 72 65 61 6c 6c 79 20 62 65 20 66 69 78 ..The.issue.should.really.be.fix
43a0 65 64 20 75 70 73 74 72 65 61 6d 20 69 6e 20 45 6d 61 63 73 2c 20 62 75 74 20 69 74 20 6c 6f 6f ed.upstream.in.Emacs,.but.it.loo
43c0 6b 73 20 6c 69 6b 65 20 74 68 61 74 0a 69 73 20 6e 6f 74 20 68 61 70 70 65 6e 69 6e 67 20 61 6e ks.like.that.is.not.happening.an
43e0 79 74 69 6d 65 20 73 6f 6f 6e 2e 22 0a 20 20 28 6c 65 74 20 28 28 72 65 67 65 78 70 20 28 63 68 ytime.soon."...(let.((regexp.(ch
4400 61 72 2d 66 6f 6c 64 2d 74 6f 2d 72 65 67 65 78 70 20 73 74 72 69 6e 67 29 29 29 0a 20 20 20 20 ar-fold-to-regexp.string))).....
4420 28 63 6f 6e 64 69 74 69 6f 6e 2d 63 61 73 65 20 5f 0a 20 20 20 20 20 20 20 20 28 70 72 6f 67 31 (condition-case._.........(prog1
4440 20 72 65 67 65 78 70 0a 20 20 20 20 20 20 20 20 20 20 28 73 74 72 69 6e 67 2d 6d 61 74 63 68 2d .regexp...........(string-match-
4460 70 20 72 65 67 65 78 70 20 22 22 29 29 0a 20 20 20 20 20 20 28 69 6e 76 61 6c 69 64 2d 72 65 67 p.regexp."")).......(invalid-reg
4480 65 78 70 20 28 72 65 67 65 78 70 2d 71 75 6f 74 65 20 73 74 72 69 6e 67 29 29 29 29 29 0a 0a 28 exp.(regexp-quote.string)))))..(
44a0 64 65 66 75 6e 20 70 72 65 73 63 69 65 6e 74 2d 73 70 6c 69 74 2d 71 75 65 72 79 20 28 71 75 65 defun.prescient-split-query.(que
44c0 72 79 29 0a 20 20 22 53 70 6c 69 74 20 51 55 45 52 59 20 73 74 72 69 6e 67 20 69 6e 74 6f 20 73 ry)..."Split.QUERY.string.into.s
44e0 75 62 2d 71 75 65 72 69 65 73 2e 0a 54 68 65 20 71 75 65 72 79 20 69 73 20 73 70 6c 69 74 20 6f ub-queries..The.query.is.split.o
4500 6e 20 73 70 61 63 65 73 2c 20 62 75 74 20 61 20 73 65 71 75 65 6e 63 65 20 6f 66 20 74 77 6f 20 n.spaces,.but.a.sequence.of.two.
4520 6f 72 20 6d 6f 72 65 0a 73 70 61 63 65 73 20 68 61 73 20 6f 6e 65 20 73 70 61 63 65 20 72 65 6d or.more.spaces.has.one.space.rem
4540 6f 76 65 64 20 61 6e 64 20 69 73 20 74 72 65 61 74 65 64 20 6c 69 74 65 72 61 6c 6c 79 20 72 61 oved.and.is.treated.literally.ra
4560 74 68 65 72 20 74 68 61 6e 0a 61 73 20 61 20 73 75 62 2d 71 75 65 72 79 20 64 65 6c 69 6d 69 74 ther.than.as.a.sub-query.delimit
4580 65 72 2e 22 0a 20 20 28 69 66 20 28 73 74 72 69 6e 67 2d 6d 61 74 63 68 2d 70 20 22 5c 5c 60 20 er."...(if.(string-match-p."\\`.
45a0 2a 5c 5c 27 22 20 71 75 65 72 79 29 0a 20 20 20 20 20 20 3b 3b 20 49 66 20 73 74 72 69 6e 67 20 *\\'".query).......;;.If.string.
45c0 69 73 20 7a 65 72 6f 20 6f 72 20 6f 6e 65 20 73 70 61 63 65 73 2c 20 74 68 65 6e 20 77 65 20 6d is.zero.or.one.spaces,.then.we.m
45e0 61 74 63 68 20 65 76 65 72 79 74 68 69 6e 67 2e 0a 20 20 20 20 20 20 3b 3b 20 52 65 74 75 72 6e atch.everything........;;.Return
4600 20 61 6e 20 65 6d 70 74 79 20 73 75 62 71 75 65 72 79 20 6c 69 73 74 2e 0a 20 20 20 20 20 20 28 .an.empty.subquery.list........(
4620 75 6e 6c 65 73 73 20 28 3c 3d 20 28 6c 65 6e 67 74 68 20 71 75 65 72 79 29 20 31 29 0a 20 20 20 unless.(<=.(length.query).1)....
4640 20 20 20 20 20 3b 3b 20 4f 74 68 65 72 77 69 73 65 2c 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 .....;;.Otherwise,.the.number.of
4660 20 73 70 61 63 65 73 20 73 68 6f 75 6c 64 20 62 65 20 72 65 64 75 63 65 64 20 62 79 20 6f 6e 65 .spaces.should.be.reduced.by.one
4680 2e 0a 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 28 73 75 62 73 74 72 69 6e 67 20 71 75 65 72 79 ..........(list.(substring.query
46a0 20 31 29 29 29 0a 20 20 20 20 3b 3b 20 54 72 69 6d 20 6f 66 66 20 61 20 73 69 6e 67 6c 65 20 73 .1))).....;;.Trim.off.a.single.s
46c0 70 61 63 65 20 66 72 6f 6d 20 74 68 65 20 62 65 67 69 6e 6e 69 6e 67 20 61 6e 64 20 65 6e 64 2c pace.from.the.beginning.and.end,
46e0 20 69 66 20 70 72 65 73 65 6e 74 2e 0a 20 20 20 20 3b 3b 20 4f 74 68 65 72 77 69 73 65 2c 20 74 .if.present......;;.Otherwise,.t
4700 68 65 79 20 77 6f 75 6c 64 20 67 65 6e 65 72 61 74 65 20 65 6d 70 74 79 20 73 70 6c 69 74 73 20 hey.would.generate.empty.splits.
4720 61 6e 64 20 63 61 75 73 65 20 75 73 20 74 6f 0a 20 20 20 20 3b 3b 20 6d 61 74 63 68 20 6c 69 74 and.cause.us.to.....;;.match.lit
4740 65 72 61 6c 20 77 68 69 74 65 73 70 61 63 65 2e 0a 20 20 20 20 28 73 65 74 71 20 71 75 65 72 79 eral.whitespace......(setq.query
4760 20 28 72 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 .(replace-regexp-in-string......
4780 20 20 20 20 20 20 20 20 20 20 20 20 22 5c 5c 60 20 3f 5c 5c 28 2e 2a 3f 5c 5c 29 20 3f 5c 5c 27 ............"\\`.?\\(.*?\\).?\\'
47a0 22 20 22 5c 5c 31 22 20 71 75 65 72 79 20 27 66 69 78 65 64 63 61 73 65 29 29 0a 20 20 20 20 28 "."\\1".query.'fixedcase)).....(
47c0 6c 65 74 20 28 28 73 70 6c 69 74 73 20 28 73 70 6c 69 74 2d 73 74 72 69 6e 67 20 71 75 65 72 79 let.((splits.(split-string.query
47e0 20 22 20 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 73 75 62 71 75 65 72 79 20 22 22 29 0a 20 ."."))...........(subquery."")..
4800 20 20 20 20 20 20 20 20 20 28 74 6f 6b 65 6e 2d 66 6f 75 6e 64 20 6e 69 6c 29 0a 20 20 20 20 20 .........(token-found.nil)......
4820 20 20 20 20 20 28 73 75 62 71 75 65 72 69 65 73 20 6e 69 6c 29 29 0a 20 20 20 20 20 20 28 64 6f .....(subqueries.nil)).......(do
4840 6c 69 73 74 20 28 73 70 6c 69 74 20 73 70 6c 69 74 73 29 0a 20 20 20 20 20 20 20 20 3b 3b 20 43 list.(split.splits).........;;.C
4860 68 65 63 6b 20 66 6f 72 20 65 6d 70 74 79 20 73 70 6c 69 74 2c 20 6d 65 61 6e 69 6e 67 20 74 77 heck.for.empty.split,.meaning.tw
4880 6f 20 63 6f 6e 73 65 63 75 74 69 76 65 20 73 70 61 63 65 73 20 69 6e 0a 20 20 20 20 20 20 20 20 o.consecutive.spaces.in.........
48a0 3b 3b 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 71 75 65 72 79 2e 0a 20 20 20 20 20 20 20 20 28 ;;.the.original.query..........(
48c0 69 66 20 28 73 74 72 69 6e 67 2d 65 6d 70 74 79 2d 70 20 73 70 6c 69 74 29 0a 20 20 20 20 20 20 if.(string-empty-p.split).......
48e0 20 20 20 20 20 20 28 70 72 6f 67 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 43 6f ......(progn...............;;.Co
4900 6e 73 65 63 75 74 69 76 65 20 73 70 61 63 65 73 20 6d 65 61 6e 20 6c 69 74 65 72 61 6c 20 73 70 nsecutive.spaces.mean.literal.sp
4920 61 63 65 73 20 69 6e 20 74 68 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 73 75 62 aces.in.the...............;;.sub
4940 71 75 65 72 79 20 75 6e 64 65 72 20 63 6f 6e 73 74 72 75 63 74 69 6f 6e 2e 0a 20 20 20 20 20 20 query.under.construction........
4960 20 20 20 20 20 20 20 20 28 73 65 74 71 20 73 75 62 71 75 65 72 79 20 28 63 6f 6e 63 61 74 20 73 ........(setq.subquery.(concat.s
4980 75 62 71 75 65 72 79 20 22 20 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 49 ubquery."."))...............;;.I
49a0 66 20 77 65 20 67 65 74 20 61 20 6e 6f 6e 2d 65 6d 70 74 79 20 73 70 6c 69 74 2c 20 61 70 70 65 f.we.get.a.non-empty.split,.appe
49c0 6e 64 20 69 74 20 74 6f 20 74 68 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 73 75 nd.it.to.the...............;;.su
49e0 62 71 75 65 72 79 20 72 61 74 68 65 72 20 74 68 61 6e 20 70 61 72 73 69 6e 67 20 69 74 20 61 73 bquery.rather.than.parsing.it.as
4a00 20 61 6e 6f 74 68 65 72 20 73 75 62 71 75 65 72 79 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 .another.subquery...............
4a20 20 28 73 65 74 71 20 74 6f 6b 65 6e 2d 66 6f 75 6e 64 20 6e 69 6c 29 29 0a 20 20 20 20 20 20 20 .(setq.token-found.nil))........
4a40 20 20 20 3b 3b 20 50 6f 73 73 69 62 6c 79 20 61 64 64 20 74 68 65 20 63 6f 6c 6c 65 63 74 65 64 ...;;.Possibly.add.the.collected
4a60 20 73 74 72 69 6e 67 20 61 73 20 61 20 6e 65 77 20 73 75 62 71 75 65 72 79 2e 0a 20 20 20 20 20 .string.as.a.new.subquery.......
4a80 20 20 20 20 20 28 77 68 65 6e 20 74 6f 6b 65 6e 2d 66 6f 75 6e 64 0a 20 20 20 20 20 20 20 20 20 .....(when.token-found..........
4aa0 20 20 20 28 70 75 73 68 20 73 75 62 71 75 65 72 79 20 73 75 62 71 75 65 72 69 65 73 29 0a 20 20 ...(push.subquery.subqueries)...
4ac0 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 73 75 62 71 75 65 72 79 20 22 22 29 29 0a 20 20 ..........(setq.subquery.""))...
4ae0 20 20 20 20 20 20 20 20 3b 3b 20 45 69 74 68 65 72 20 73 74 61 72 74 20 61 20 6e 65 77 20 73 75 ........;;.Either.start.a.new.su
4b00 62 71 75 65 72 79 20 6f 72 20 61 70 70 65 6e 64 20 74 6f 20 74 68 65 20 65 78 69 73 74 69 6e 67 bquery.or.append.to.the.existing
4b20 20 6f 6e 65 0a 20 20 20 20 20 20 20 20 20 20 3b 3b 20 28 69 6e 20 74 68 65 20 63 61 73 65 20 6f .one...........;;.(in.the.case.o
4b40 66 20 70 72 65 76 69 6f 75 73 6c 79 20 73 65 65 69 6e 67 20 61 6e 20 65 6d 70 74 79 20 73 70 6c f.previously.seeing.an.empty.spl
4b60 69 74 29 2e 0a 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 73 75 62 71 75 65 72 79 20 28 63 it)............(setq.subquery.(c
4b80 6f 6e 63 61 74 20 73 75 62 71 75 65 72 79 20 73 70 6c 69 74 29 29 0a 20 20 20 20 20 20 20 20 20 oncat.subquery.split))..........
4ba0 20 3b 3b 20 49 66 20 61 6e 6f 74 68 65 72 20 6e 6f 6e 2d 65 6d 70 74 79 20 73 70 6c 69 74 20 69 .;;.If.another.non-empty.split.i
4bc0 73 20 66 6f 75 6e 64 2c 20 69 74 27 73 20 61 20 73 65 70 61 72 61 74 65 0a 20 20 20 20 20 20 20 s.found,.it's.a.separate........
4be0 20 20 20 3b 3b 20 73 75 62 71 75 65 72 79 2e 0a 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 ...;;.subquery............(setq.
4c00 74 6f 6b 65 6e 2d 66 6f 75 6e 64 20 74 29 29 29 0a 20 20 20 20 20 20 3b 3b 20 43 68 65 63 6b 20 token-found.t))).......;;.Check.
4c20 69 66 20 77 65 20 68 69 74 20 74 68 65 20 65 6e 64 20 6f 66 20 74 68 65 20 73 74 72 69 6e 67 20 if.we.hit.the.end.of.the.string.
4c40 77 68 69 6c 65 20 73 74 69 6c 6c 0a 20 20 20 20 20 20 3b 3b 20 63 6f 6e 73 74 72 75 63 74 69 6e while.still.......;;.constructin
4c60 67 20 61 20 73 75 62 71 75 65 72 79 2c 20 61 6e 64 20 68 61 6e 64 6c 65 2e 0a 20 20 20 20 20 20 g.a.subquery,.and.handle........
4c80 28 75 6e 6c 65 73 73 20 28 73 74 72 69 6e 67 2d 65 6d 70 74 79 2d 70 20 73 75 62 71 75 65 72 79 (unless.(string-empty-p.subquery
4ca0 29 0a 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 62 71 75 65 72 ).........(push.subquery.subquer
4cc0 69 65 73 29 29 0a 20 20 20 20 20 20 3b 3b 20 57 65 20 61 64 64 65 64 20 74 68 65 20 73 75 62 71 ies)).......;;.We.added.the.subq
4ce0 75 65 72 69 65 73 20 69 6e 20 72 65 76 65 72 73 65 20 6f 72 64 65 72 2e 0a 20 20 20 20 20 20 28 ueries.in.reverse.order........(
4d00 6e 72 65 76 65 72 73 65 20 73 75 62 71 75 65 72 69 65 73 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 nreverse.subqueries))))..(defun.
4d20 70 72 65 73 63 69 65 6e 74 2d 77 69 74 68 2d 67 72 6f 75 70 20 28 72 65 67 65 78 70 20 77 69 74 prescient-with-group.(regexp.wit
4d40 68 2d 67 72 6f 75 70 29 0a 20 20 22 57 72 61 70 20 52 45 47 45 58 50 20 69 6e 20 61 20 63 61 70 h-group)..."Wrap.REGEXP.in.a.cap
4d60 74 75 72 65 20 67 72 6f 75 70 2c 20 62 75 74 20 6f 6e 6c 79 20 69 66 20 57 49 54 48 2d 47 52 4f ture.group,.but.only.if.WITH-GRO
4d80 55 50 20 69 73 20 6e 6f 6e 2d 6e 69 6c 2e 22 0a 20 20 28 69 66 20 77 69 74 68 2d 67 72 6f 75 70 UP.is.non-nil."...(if.with-group
4da0 0a 20 20 20 20 20 20 28 66 6f 72 6d 61 74 20 22 5c 5c 28 25 73 5c 5c 29 22 20 72 65 67 65 78 70 .......(format."\\(%s\\)".regexp
4dc0 29 0a 20 20 20 20 72 65 67 65 78 70 29 29 0a 0a 28 64 65 66 75 6e 20 70 72 65 73 63 69 65 6e 74 ).....regexp))..(defun.prescient
4de0 2d 2d 70 72 65 66 69 78 2d 61 6e 64 2d 70 61 74 74 65 72 6e 20 28 73 74 72 69 6e 67 20 74 61 62 --prefix-and-pattern.(string.tab
4e00 6c 65 20 70 72 65 64 29 0a 20 20 22 53 70 6c 69 74 20 53 54 52 49 4e 47 20 69 6e 74 6f 20 70 72 le.pred)..."Split.STRING.into.pr
4e20 65 66 69 78 20 61 6e 64 20 70 61 74 74 65 72 6e 20 61 63 63 6f 72 64 69 6e 67 20 74 6f 20 54 41 efix.and.pattern.according.to.TA
4e40 42 4c 45 2e 0a 0a 54 68 65 20 70 72 65 64 69 63 61 74 65 20 50 52 45 44 20 69 73 20 75 73 65 64 BLE...The.predicate.PRED.is.used
4e60 20 74 6f 20 63 6f 6e 73 74 72 61 69 6e 20 74 68 65 20 65 6e 74 72 69 65 73 20 69 6e 20 54 41 42 .to.constrain.the.entries.in.TAB
4e80 4c 45 2e 22 0a 20 20 28 6c 65 74 20 28 28 6c 69 6d 69 74 20 28 63 61 72 20 28 63 6f 6d 70 6c 65 LE."...(let.((limit.(car.(comple
4ea0 74 69 6f 6e 2d 62 6f 75 6e 64 61 72 69 65 73 20 73 74 72 69 6e 67 20 74 61 62 6c 65 20 70 72 65 tion-boundaries.string.table.pre
4ec0 64 20 22 22 29 29 29 29 0a 20 20 20 20 28 63 6f 6e 73 20 28 73 75 62 73 74 72 69 6e 67 20 73 74 d."")))).....(cons.(substring.st
4ee0 72 69 6e 67 20 30 20 6c 69 6d 69 74 29 20 28 73 75 62 73 74 72 69 6e 67 20 73 74 72 69 6e 67 20 ring.0.limit).(substring.string.
4f00 6c 69 6d 69 74 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 70 72 65 73 63 69 65 6e 74 2d 69 67 6e 6f limit))))..(defun.prescient-igno
4f20 72 65 2d 63 61 73 65 2d 70 20 28 69 6e 70 75 74 29 0a 20 20 22 57 68 65 74 68 65 72 20 70 72 65 re-case-p.(input)..."Whether.pre
4f40 73 63 69 65 6e 74 2e 65 6c 20 73 68 6f 75 6c 64 20 69 67 6e 6f 72 65 20 63 61 73 65 20 63 6f 6e scient.el.should.ignore.case.con
4f60 73 69 64 65 72 69 6e 67 20 49 4e 50 55 54 2e 0a 0a 46 69 6c 74 65 72 69 6e 67 20 63 61 6e 20 6f sidering.INPUT...Filtering.can.o
4f80 70 74 69 6f 6e 61 6c 6c 79 20 69 67 6e 6f 72 65 20 63 61 73 65 20 69 66 20 60 70 72 65 73 63 69 ptionally.ignore.case.if.`presci
4fa0 65 6e 74 2d 75 73 65 2d 63 61 73 65 2d 66 6f 6c 64 69 6e 67 27 0a 69 73 20 6e 6f 6e 2d 6e 69 6c ent-use-case-folding'.is.non-nil
4fc0 2e 20 20 49 66 20 60 73 6d 61 72 74 27 2c 20 74 68 65 6e 20 66 69 6c 74 65 72 69 6e 67 20 77 69 ...If.`smart',.then.filtering.wi
4fe0 6c 6c 20 6e 6f 74 20 69 67 6e 6f 72 65 20 63 61 73 65 20 77 68 65 6e 0a 49 4e 50 55 54 20 63 6f ll.not.ignore.case.when.INPUT.co
5000 6e 74 61 69 6e 73 20 75 70 70 65 72 63 61 73 65 20 6c 65 74 74 65 72 73 2e 22 0a 20 20 28 69 66 ntains.uppercase.letters."...(if
5020 20 28 65 71 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 .(eq.prescient-use-case-folding.
5040 27 73 6d 61 72 74 29 0a 20 20 20 20 20 20 28 6c 65 74 20 28 28 63 61 73 65 2d 66 6f 6c 64 2d 73 'smart).......(let.((case-fold-s
5060 65 61 72 63 68 20 6e 69 6c 29 29 0a 20 20 20 20 20 20 20 20 3b 3b 20 49 66 20 75 73 69 6e 67 20 earch.nil)).........;;.If.using.
5080 75 70 70 65 72 2d 63 61 73 65 20 63 68 61 72 61 63 74 65 72 73 2c 20 74 68 65 6e 20 64 6f 6e 27 upper-case.characters,.then.don'
50a0 74 20 66 6f 6c 64 20 63 61 73 65 2e 0a 20 20 20 20 20 20 20 20 28 6e 6f 74 20 28 73 74 72 69 6e t.fold.case..........(not.(strin
50c0 67 2d 6d 61 74 63 68 2d 70 20 22 5b 5b 3a 75 70 70 65 72 3a 5d 5d 22 20 69 6e 70 75 74 29 29 29 g-match-p."[[:upper:]]".input)))
50e0 0a 20 20 20 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 29 .....prescient-use-case-folding)
5100 29 0a 0a 28 64 65 66 75 6e 20 70 72 65 73 63 69 65 6e 74 2d 2d 61 64 64 2d 73 6f 72 74 2d 69 6e )..(defun.prescient--add-sort-in
5120 66 6f 20 28 63 61 6e 64 69 64 61 74 65 73 20 26 72 65 73 74 20 70 72 6f 70 65 72 74 69 65 73 29 fo.(candidates.&rest.properties)
5140 0a 20 20 22 50 72 6f 70 65 72 74 69 7a 65 20 74 68 65 20 66 69 72 73 74 20 63 61 6e 64 69 64 61 ..."Propertize.the.first.candida
5160 74 65 20 69 6e 20 43 41 4e 44 49 44 41 54 45 53 20 74 6f 20 73 61 76 65 20 64 61 74 61 2e 0a 0a te.in.CANDIDATES.to.save.data...
5180 43 75 72 72 65 6e 74 6c 79 20 72 65 63 6f 67 6e 69 7a 65 64 20 50 52 4f 50 45 52 54 49 45 53 20 Currently.recognized.PROPERTIES.
51a0 61 72 65 3a 0a 0a 2d 20 60 3a 70 72 65 73 63 69 65 6e 74 2d 6d 61 74 63 68 2d 72 65 67 65 78 70 are:..-.`:prescient-match-regexp
51c0 73 27 3a 20 54 68 65 20 72 65 67 65 78 70 73 20 75 73 65 64 20 66 6f 72 20 66 69 6c 74 65 72 69 s':.The.regexps.used.for.filteri
51e0 6e 67 2e 0a 0a 2d 20 60 3a 70 72 65 73 63 69 65 6e 74 2d 61 6c 6c 2d 72 65 67 65 78 70 73 27 3a ng...-.`:prescient-all-regexps':
5200 20 41 6c 6c 20 72 65 67 65 78 70 73 20 6f 75 74 70 75 74 74 65 64 20 62 79 20 74 68 65 20 66 69 .All.regexps.outputted.by.the.fi
5220 6c 74 65 72 0a 20 20 6d 65 74 68 6f 64 73 2c 20 77 68 69 63 68 20 77 65 72 65 20 75 73 65 64 20 lter...methods,.which.were.used.
5240 74 6f 20 6d 61 6b 65 20 50 52 45 53 43 49 45 4e 54 2d 4d 41 54 43 48 2d 52 45 47 45 58 50 53 2e to.make.PRESCIENT-MATCH-REGEXPS.
5260 20 41 0a 20 20 72 65 67 65 78 70 20 69 6e 20 74 68 69 73 20 6c 69 73 74 20 64 6f 65 73 20 6e 6f .A...regexp.in.this.list.does.no
5280 74 20 6e 65 63 65 73 73 61 72 69 6c 79 20 6d 61 74 63 68 20 74 68 65 20 63 61 6e 64 69 64 61 74 t.necessarily.match.the.candidat
52a0 65 73 0a 20 20 62 79 20 69 74 73 65 6c 66 2e 0a 0a 2d 20 60 3a 70 72 65 73 63 69 65 6e 74 2d 69 es...by.itself...-.`:prescient-i
52c0 67 6e 6f 72 65 2d 63 61 73 65 27 3a 20 57 68 65 74 68 65 72 20 70 72 65 73 63 69 65 6e 74 20 69 gnore-case':.Whether.prescient.i
52e0 67 6e 6f 72 65 64 20 63 61 73 65 2e 0a 0a 2d 20 60 3a 70 72 65 73 63 69 65 6e 74 2d 71 75 65 72 gnored.case...-.`:prescient-quer
5300 79 27 3a 20 4f 72 69 67 69 6e 61 6c 20 73 65 61 72 63 68 20 71 75 65 72 79 20 66 72 6f 6d 20 75 y':.Original.search.query.from.u
5320 73 65 72 2e 0a 0a 54 68 65 73 65 20 70 72 6f 70 65 72 74 69 65 73 20 61 72 65 20 69 64 65 6e 74 ser...These.properties.are.ident
5340 69 66 69 65 64 20 75 73 69 6e 67 20 6b 65 79 77 6f 72 64 20 73 79 6d 62 6f 6c 73 2e 0a 0a 54 68 ified.using.keyword.symbols...Th
5360 69 73 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 69 73 20 75 73 65 64 20 62 79 20 74 68 65 20 66 75 is.information.is.used.by.the.fu
5380 6e 63 74 69 6f 6e 0a 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 nction.`prescient-sort-full-matc
53a0 68 65 73 2d 66 69 72 73 74 27 2e 22 0a 20 20 28 69 66 20 28 6e 75 6c 6c 20 63 61 6e 64 69 64 61 hes-first'."...(if.(null.candida
53c0 74 65 73 29 0a 20 20 20 20 20 20 6e 69 6c 0a 20 20 20 20 28 63 6f 6e 73 20 28 61 70 70 6c 79 20 tes).......nil.....(cons.(apply.
53e0 23 27 70 72 6f 70 65 72 74 69 7a 65 20 28 63 61 72 20 63 61 6e 64 69 64 61 74 65 73 29 0a 20 20 #'propertize.(car.candidates)...
5400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 57 68 69 6c 65 20 50 52 4f 50 45 52 54 49 ...............;;.While.PROPERTI
5420 45 53 20 63 6f 6e 74 61 69 6e 73 20 61 6c 6c 20 67 69 76 65 6e 20 6b 65 79 73 2c 20 77 65 0a 20 ES.contains.all.given.keys,.we..
5440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 65 78 70 6c 69 63 69 74 6c 79 20 73 65 ................;;.explicitly.se
5460 74 20 74 68 65 20 70 72 6f 70 65 72 74 69 65 73 20 74 68 69 73 20 77 61 79 20 73 6f 20 74 68 61 t.the.properties.this.way.so.tha
5480 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 77 65 27 72 65 20 73 75 72 65 t..................;;.we're.sure
54a0 20 74 68 61 74 20 74 68 65 20 70 72 6f 70 65 72 74 69 65 73 20 65 78 69 73 74 20 65 76 65 6e 20 .that.the.properties.exist.even.
54c0 77 68 65 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 74 68 65 79 27 72 65 when..................;;.they're
54e0 20 6e 6f 74 20 67 69 76 65 6e 2e 20 54 68 69 73 20 6d 61 6b 65 73 20 74 65 73 74 69 6e 67 20 65 .not.given..This.makes.testing.e
5500 61 73 69 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 61 6e 64 20 73 68 asier..................;;.and.sh
5520 6f 75 6c 64 20 62 65 20 68 65 6c 70 66 75 6c 20 66 6f 72 20 6f 74 68 65 72 73 20 63 72 65 61 74 ould.be.helpful.for.others.creat
5540 69 6e 67 20 74 68 65 69 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 6f 77 ing.their..................;;.ow
5560 6e 20 73 6f 72 74 69 6e 67 20 66 75 6e 63 74 69 6f 6e 73 2e 0a 20 20 20 20 20 20 20 20 20 20 20 n.sorting.functions.............
5580 20 20 20 20 20 20 3b 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 4e 6f 74 ......;;..................;;.Not
55a0 65 20 61 6c 6c 20 70 61 73 73 65 64 20 70 72 6f 70 65 72 74 69 65 73 20 77 69 6c 6c 20 73 74 69 e.all.passed.properties.will.sti
55c0 6c 6c 20 67 65 74 20 73 65 74 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 ll.get.set,..................;;.
55e0 74 68 69 73 20 6a 75 73 74 20 64 65 66 61 75 6c 74 73 20 74 68 65 20 73 74 61 6e 64 61 72 64 20 this.just.defaults.the.standard.
5600 6f 6e 65 73 20 74 6f 20 6e 69 6c 20 69 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ones.to.nil.in..................
5620 3b 3b 20 63 61 73 65 20 74 68 65 79 20 61 72 65 20 6d 69 73 73 69 6e 67 2e 0a 20 20 20 20 20 20 ;;.case.they.are.missing........
5640 20 20 20 20 20 20 20 20 20 20 20 28 63 6c 2d 66 6c 65 74 20 28 28 70 75 74 2d 67 65 74 20 28 70 ...........(cl-flet.((put-get.(p
5660 72 6f 70 73 20 73 79 6d 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 rops.sym).......................
5680 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 6f 70 73 20 73 ..............(plist-put.props.s
56a0 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 20 20 20 20 20 ym..............................
56c0 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 67 65 74 20 70 72 6f ..................(plist-get.pro
56e0 70 73 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 ps.sym))))....................(t
5700 68 72 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 hread-first.properties..........
5720 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 65 74 ........................(put-get
5740 20 3a 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 .:prescient-match-regexps)......
5760 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
5780 2d 67 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 -get.:prescient-all-regexps)....
57a0 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
57c0 75 74 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 ut-get.:prescient-ignore-case)..
57e0 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 ................................
5800 28 70 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 (put-get.:prescient-query))))...
5820 20 20 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 ........(cdr.candidates))))..(de
5840 66 75 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 fun.prescient--get-sort-info.(ca
5860 6e 64 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 ndidates)..."Return.a.property.l
5880 69 73 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 ist.of.properties.added.by.`pres
58a0 63 69 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 cient-filter'...`prescient-filte
58c0 72 27 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 r'.adds.properties.to.the.CANDID
58e0 41 54 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 ATES.that.it.filtered.for.use.by
5900 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 72 74 2d 66 75 .the.function.`prescient-sort-fu
5920 6c 6c 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 ll-matches-first'."...(cl-loop.f
5940 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 20 20 20 20 20 or.cand.in.candidates...........
5960 20 66 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 .for.props.=.(text-properties-at
5980 20 30 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 .0.cand)............until.(plist
59a0 2d 6d 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 -member.props.:prescient-match-r
59c0 65 67 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 egexps)............;;.Since.we.a
59e0 6c 6c 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 llow.other.keys.in.`prescient--a
5a00 64 64 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 dd-sort-info',............;;.jus
5a20 74 20 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 t.return.all.properties.here....
5a40 20 20 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 .........finally.return.props)).
5a60 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 68 74 2d 63 61 6e .(defun.prescient--highlight-can
5a80 64 69 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 didate.(regexps.case-fold.candid
5aa0 61 74 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 ate)..."Highlight.text.matching.
5ac0 52 45 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 REGEXPS.and.considering.CASE-FOL
5ae0 44 20 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 D.in.CANDIDATE...Returns.a.prope
5b00 72 74 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 rtized.CANDIDATE."...(setq.candi
5b20 64 61 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 date.(copy-sequence.candidate)).
5b40 20 20 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 ..(prog1.candidate.....(let.((ca
5b60 73 65 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 se-fold-search.case-fold))......
5b80 20 28 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 .(save-match-data.........(dolis
5ba0 74 20 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 t.(regexp.regexps)...........(wh
5bc0 65 6e 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 en.(string-match.regexp.candidat
5be0 65 29 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 e).............(font-lock-prepen
5c00 64 2d 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 d-text-property..............(ma
5c20 74 63 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 tch-beginning.0).(match-end.0)..
5c40 20 20 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 ............'face.'prescient-pri
5c60 6d 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 20 63 61 6e 64 mary-highlight..............cand
5c80 69 64 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 idate).............(cl-loop.....
5ca0 20 20 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 .........for.(start.end)........
5cc0 20 20 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 ......on.(cddr.(match-data))....
5ce0 20 20 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 ..........by.#'cddr.............
5d00 20 64 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 .do.(when.(and.start.end).......
5d20 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 74 ............(font-lock-prepend-t
5d40 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 20 20 20 20 20 20 ext-property....................
5d60 73 74 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 start.end....................'fa
5d80 63 65 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 ce.'prescient-secondary-highligh
5da0 74 0a 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 t....................candidate))
5dc0 29 29 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 )))))))..(defun.prescient--highl
5de0 69 67 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 ight-candidates.(input.candidate
5e00 73 29 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 s)..."According.to.INPUT,.highli
5e20 67 68 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 ght.the.matched.sections.in.CAND
5e40 49 44 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 IDATES...INPUT.is.the.string.tha
5e60 74 20 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 t.was.used.to.generate.a.list.of
5e80 20 72 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 .regexps.for.filtering..CANDIDAT
5ea0 45 53 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 ES.is.the.list.of.filtered.candi
5ec0 64 61 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 dates,.which.should.be.a.list.of
5ee0 20 73 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 .strings...Return.a.list.of.prop
5f00 65 72 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 ertized.CANDIDATES."...(cl-loop.
5f20 77 69 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 with.regexps.=.(prescient-filter
5f40 2d 72 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 -regexps.input.'with-group).....
5f60 20 20 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 .......and.case-fold-search.=.(p
5f80 72 65 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 rescient-ignore-case-p.input)...
5fa0 20 20 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 .........for.cand.in.candidates.
5fc0 20 20 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 ...........collect.(prescient--h
5fe0 69 67 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 ighlight-candidate.regexps.case-
6000 66 6f 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 fold-search.....................
6020 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 63 ...............................c
6040 61 6e 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 and)))..;;;;.Regexp.Builders..(c
6060 6c 2d 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 l-defun.prescient-literal-regexp
6080 20 28 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 .(query.&key.with-group.........
60a0 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 ................................
60c0 20 20 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 ..&allow-other-keys)..."Return.a
60e0 20 72 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 .regexp.matching.QUERY.with.opti
6100 6f 6e 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 onal.character.folding...If.WITH
6120 2d 47 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 -GROUP.is.`all',.enclose.the.mat
6140 63 68 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 ch.in.a.capture.group...See.also
6160 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 70 72 65 73 .the.customizable.variable.`pres
6180 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 28 70 72 65 cient-use-char-folding'."...(pre
61a0 73 63 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 scient-with-group....(if.prescie
61c0 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 20 28 70 72 65 73 nt-use-char-folding........(pres
61e0 63 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 71 75 65 72 79 cient--char-fold-to-regexp.query
6200 29 0a 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 )......(regexp-quote.query))....
6220 28 65 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 (eq.with-group.'all)))..(cl-defu
6240 6e 20 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 n.prescient-literal-prefix-regex
6260 70 0a 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 p.....(query.&key.with-group.sub
6280 71 75 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 query-number............&allow-o
62a0 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 6d 61 ther-keys)..."Return.a.regexp.ma
62c0 74 63 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 tching.QUERY.with.optional.chara
62e0 63 74 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 cter.folding...If.WITH-GROUP.is.
6300 60 61 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 `all',.enclose.the.match.in.a.ca
6320 70 74 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 pture.group..Anchor.the.QUERY.at
6340 20 74 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 .the.beginning.of.the.candidate.
6360 69 66 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 if.SUBQUERY-NUMBER.equals.0...Se
6380 65 20 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 e.also.the.customizable.variable
63a0 20 60 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 .`prescient-use-char-folding'.".
63c0 20 20 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 ..(prescient-with-group....(conc
63e0 61 74 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 at.(if.(=.subquery-number.0)....
6400 20 20 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 ............;;.1..subquery.=>.an
6420 63 68 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 chor.at.the.beginning.of.candida
6440 74 65 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 te................."^"..........
6460 20 20 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 ....;;.Otherwise,.just.anchor.at
6480 20 74 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 .the.beginning.of.some.word.....
64a0 20 20 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 .........;;.in.the.candidate....
64c0 20 20 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 ..........."\\b")............(if
64e0 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 0a 20 20 20 20 .prescient-use-char-folding.....
6500 20 20 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 ...........(prescient--char-fold
6520 2d 74 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 -to-regexp.query)..............(
6540 72 65 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 regexp-quote.query)))....(eq.wit
6560 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 70 72 65 73 63 h-group.'all)))..(cl-defun.presc
6580 69 65 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 ient-initials-regexp.(query.&key
65a0 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 20 20 20 .with-group.....................
65c0 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 6f 74 .......................&allow-ot
65e0 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 6d 61 74 her-keys)..."Return.a.regexp.mat
6600 63 68 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 ching.QUERY.as.an.initialism..Th
6620 69 73 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 is.means.that.the.regexp.will.on
6640 6c 79 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 ly.match.a.given.string.if.QUERY
6660 20 69 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 .is.a.substring.of.the.initials.
6680 6f 66 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 of.the.string...If.WITH-GROUP.is
66a0 20 6e 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 .non-nil,.enclose.the.parts.of.t
66c0 68 65 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 he.regexp.that.match.the.actual.
66e0 69 6e 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 initials.in.capture.groups,.so.t
6700 68 61 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 hat.the.match.data.can.be.used.t
6720 6f 20 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 o.highlight.the.initials.of.the.
6740 6d 61 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 match...To.illustrate,.if.\"fa\"
6760 20 6d 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 .matches.\"find-file-at-point\",
6780 20 74 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 .then.the.entire.match.will.be.t
67a0 68 65 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 he.text.\"file-at\",.and.there.w
67c0 69 6c 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 ill.be.two.capture.groups.matchi
67e0 6e 67 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 ng.\"f\".and.\"a\"."...(mapconca
6800 74 20 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 t.(lambda.(char)................
6820 28 6c 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 (let.((r.(regexp-quote.(char-to-
6840 73 74 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 string.char)))).................
6860 20 28 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 .(when.with-group...............
6880 20 20 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 .....(setq.r.(format."\\(%s\\)".
68a0 72 29 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 r)))..................(format."\
68c0 5c 62 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 \b%s\\w*".r)))..............quer
68e0 79 0a 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 y.............."\\W*"))..(cl-def
6900 75 6e 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 un.prescient-regexp-regexp.(quer
6920 79 20 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 y.&rest._ignore)..."Unless.using
6940 20 74 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 .the.regexp.QUERY.would.return.a
6960 6e 20 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 n.error,.return.QUERY."...(ignor
6980 65 2d 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 e-errors.....;;.Ignore.regexp.if
69a0 20 69 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 .it's.malformed......(string-mat
69c0 63 68 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 ch-p.query."").....query))..(cl-
69e0 64 65 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 defun.prescient-anchored-regexp.
6a00 28 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 (query.&key.with-group..........
6a20 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 ................................
6a40 20 20 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 ..&allow-other-keys)..."Return.a
6a60 20 72 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 .regexp.matching.QUERY.with.anch
6a80 6f 72 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 ors..This.means.uppercase.and.sy
6aa0 6d 62 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 mbols.will.be.used.as.begin.of.w
6ac0 6f 72 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 ords...If.WITH-GROUP.is.non-nil,
6ae0 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 65 78 70 .enclose.the.parts.of.the.regexp
6b00 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 69 74 69 61 6c 73 20 .that.match.the.actual.initials.
6b20 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 68 65 20 6d in.capture.groups,.so.that.the.m
6b40 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 68 6c 69 67 atch.data.can.be.used.to.highlig
6b60 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 74 63 68 2e 0a 0a 54 ht.the.initials.of.the.match...T
6b80 6f 20 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 o.illustrate,.\"FiFiAt\".matches
6ba0 20 5c 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 .\"find-file-at-point\".with.the
6bc0 0a 65 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 .entire.match.being.\"file-find-
6be0 61 74 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 at\".and.with.three.groups.\"fin
6c00 64 5c 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 d\",.\"file\",.and.\"at\"...A.si
6c20 6d 69 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 milar.match.can.be.achieve.with.
6c40 5c 22 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 \"fi-fi-at\",.or.\"FFA\",.or.\"f
6c60 69 6e 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 ind-f-a\"."...(let.((case-fold-s
6c80 65 61 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 earch.nil).........(expr.(if.wit
6ca0 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 22 5c 5c 28 5c 5c h-group..................."\\(\\
6cc0 62 25 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 b%s\\)[^\\/]*?".................
6ce0 22 5c 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 "\\b%s[^\\/]*?"))).....(replace-
6d00 72 65 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 regexp-in-string......"[[:upper:
6d20 5d 5d 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 ]][[:lower:]]*\\|\\W[[:lower:]]*
6d40 5c 5c 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 \\|[[:lower:]]+"......(lambda.(s
6d60 29 20 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 ).(format.expr.(regexp-quote.(do
6d80 77 6e 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 wncase.s))))......query......'fi
6da0 78 65 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 xed-case......'literal)))..(cl-d
6dc0 65 66 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 efun.prescient-fuzzy-regexp.(que
6de0 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 20 20 ry.&key.with-group..............
6e00 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 26 61 6c 6c 6f ...........................&allo
6e20 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 65 67 65 78 70 w-other-keys)..."Return.a.regexp
6e40 20 66 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 .for.fuzzy-matching.QUERY..This.
6e60 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 20 means.that.the.regexp.will.only.
6e80 6d 61 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 match.a.given.string.if.all.char
6ea0 61 63 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 acters.in.QUERY.are.present.anyw
6ec0 68 65 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 here.in.the.string.in.the.specif
6ee0 69 65 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 ied.order...If.WITH-GROUP.is.non
6f00 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 72 -nil,.enclose.the.parts.of.the.r
6f20 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 61 egexp.that.match.the.QUERY.chara
6f40 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 74 cters.in.capture.groups,.so.that
6f60 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 68 .the.match.data.can.be.used.to.h
6f80 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 2e ighlight.the.matched.substrings.
6fa0 22 0a 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 "...(let.((chars.(string-to-list
6fc0 20 71 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 .query))).....(concat......(pres
6fe0 63 69 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 cient-with-group.......(regexp-q
7000 75 6f 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 uote........(char-to-string.(car
7020 20 63 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 .chars))).......with-group).....
7040 20 28 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 .(mapconcat.......(lambda.(char)
7060 0a 20 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 .........(format."[^%c\n]*?%s".c
7080 68 61 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 har.................(prescient-w
70a0 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 28 72 65 67 65 ith-group..................(rege
70c0 78 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 28 63 68 61 72 xp-quote...................(char
70e0 2d 74 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 -to-string.char))...............
7100 20 20 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 ...with-group))).......(cdr.char
7120 73 29 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 s).""))))..(cl-defun.prescient-p
7140 72 65 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 refix-regexp.(query.&key.with-gr
7160 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 20 20 20 20 20 20 oup.............................
7180 20 20 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 .............&allow-other-keys).
71a0 20 20 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 .."Return.a.regexp.for.matching.
71c0 74 68 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 the.beginnings.of.words.in.QUERY
71e0 2e 0a 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 ..This.is.similar.to.the.`partia
7200 6c 2d 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 l-completion'.completion.style.p
7220 72 6f 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 rovided.by.Emacs,.except.that.no
7240 6e 2d 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 n-word.characters.are.taken.lite
7260 72 61 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 rally.(i.e.,.one.can't.glob.usin
7280 67 20 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 g.\"*\")...Prescient.already.cov
72a0 65 72 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 ers.that.case.by.separating.quer
72c0 69 65 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 ies.with.a.space...If.QUERY.cont
72e0 61 69 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 ains.non-word.characters,.then.t
7300 68 69 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 his.matches.greedily..Otherwise,
7320 20 69 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 .it.matches.non-greedily..For.ex
7340 61 6d 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 ample,..-.\"str-r\".fully.matche
7360 73 20 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 s.\"string-repeat\"..-.\"re\".do
7380 65 73 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 es.not.fully.match.the.word.\"re
73a0 70 65 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 pertoire\",.only.the...\"re\".at
73c0 20 74 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 .the.beginning.of.the.word..-.\"
73e0 2e 67 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 .g\".fully.matches.\".git\"..Thi
7400 73 20 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 s.behavior.is.meant.to.work.bett
7420 65 72 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 er.with.the.function.`prescient-
7440 73 6f 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 sort-full-matches-first'.and.to.
7460 61 76 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 avoid.interpreting.an.initialism
7480 20 61 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 .as.a.prefix...If.WITH-GROUP.is.
74a0 6e 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 non-nil,.enclose.the.parts.of.th
74c0 65 20 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 e.regexp.that.match.the.QUERY.ch
74e0 61 72 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 aracters.in.capture.groups,.so.t
7500 68 61 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 hat.the.match.data.can.be.used.t
7520 6f 20 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 o.highlight.the.matched.substrin
7540 67 73 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 gs."...(concat.(when.(eql.0.(str
7560 69 6e 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 ing-match-p."[[:word:]]".query))
7580 0a 20 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 .............;;.If.QUERY.begins.
75a0 77 69 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 with.a.word.character,.make.sure
75c0 20 74 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 .the.............;;.returned.reg
75e0 65 78 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 exp.doesn't.start.matching.in.th
7600 65 20 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 e.middle.of.............;;.a.wor
7620 64 2e 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 d.............."\\<")...........
7640 28 72 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 (replace-regexp-in-string.......
7660 20 20 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 ....."[[:word:]]+"............;;
7680 20 43 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 .Choose.whether.to.wrap.sequence
76a0 73 20 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 s.of.word.characters............
76c0 20 28 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 .(concat.(if.with-group.........
76e0 20 20 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 ..............."\\\\(\\&\\\\)[[:
7700 77 6f 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 word:]]*"......................"
7720 5c 5c 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 \\&[[:word:]]*")................
7740 20 20 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 ....(unless.(string-match-p."[^[
7760 3a 77 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 :word:]]".query)................
7780 20 20 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 ......"?"))............;;.Quote.
77a0 6e 6f 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 non-word.characters.so.that.they
77c0 27 72 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 're.taken............;;.literall
77e0 79 2e 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 y.............(replace-regexp-in
7800 2d 73 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 -string."[^[:word:]]"...........
7820 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 23 27 72 65 67 ...........................#'reg
7840 65 78 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 exp-quote.......................
7860 20 20 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 ...............query.'fixed-case
7880 20 27 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 .'literal)............'fixed-cas
78a0 65 29 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 e)))..;;;;.Sorting.and.filtering
78c0 0a 0a 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 ..(defun.prescient-filter-regexp
78e0 73 20 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 s.(query.&optional.with-group.se
7900 70 61 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 parated)..."Convert.QUERY.to.lis
7920 74 20 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 t.of.regexps..Each.regexp.must.m
7940 61 74 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 atch.the.candidate.in.order.for.
7960 61 20 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 a.candidate.to.match.the.QUERY..
7980 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 6e 63 6c 6f .If.WITH-GROUP.is.non-nil,.enclo
79a0 73 65 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 se.the.initials.in.initialisms.w
79c0 69 74 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 ith.capture.groups..If.it.is.the
79e0 20 73 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 .symbol.`all',.additionally.encl
7a00 6f 73 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 ose.literal.substrings.with.capt
7a20 75 72 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 ure.groups...By.default,.this.fu
7a40 6e 63 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 nction.returns.a.list.containing
7a60 20 6f 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 .one.regexp.for.each.space-separ
7a80 61 74 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 ated.sub-query.in.QUERY,.in.whic
7aa0 68 20 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 h.each.sub-query's.regexp.is.a.c
7ac0 6f 6d 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 ombination.of.the.regexps.produc
7ae0 65 64 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 ed.by.the.filter.methods.for.tha
7b00 74 20 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 t.sub-query,.joined.by.\"\\|\"..
7b20 49 66 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 If.SEPARATED.is.non-nil,.this.fu
7b40 6e 63 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 nction.instead.returns.a.list.of
7b60 20 61 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 .all.regexps.produced.by.the.fil
7b80 74 65 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 ter.methods,.without.combining.t
7ba0 68 65 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 hem.into.a.single.regexp.for.eac
7bc0 68 20 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 h.sub-query."...(let.((list-of-l
7be0 69 73 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 ists..........(cl-loop..........
7c00 20 77 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 .with.filter-methods...........=
7c20 20 28 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 .(pcase.(if.(functionp.prescient
7c40 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 20 20 20 20 -filter-method).................
7c60 20 20 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 .......(funcall.prescient-filter
7c80 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 20 70 72 -method)......................pr
7ca0 65 73 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 escient-filter-method)..........
7cc0 20 20 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 .....;;.We.support.`literal+init
7ce0 69 61 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 ialism'.for.backwards...........
7d00 20 20 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 ....;;.compatibility............
7d20 20 20 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 ....(`literal+initialism.'(liter
7d40 61 6c 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 al.initialism))...............((
7d60 61 6e 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 and.(pred.listp).x).x)..........
7d80 20 20 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 .....(x.(list.x)))...........for
7da0 20 73 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 .subquery.in.(prescient-split-qu
7dc0 65 72 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 ery.query)...........for.subquer
7de0 79 2d 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 y-number.from.0...........collec
7e00 74 0a 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 t...........(cl-loop.with.temp-r
7e20 65 67 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 egexp.=.nil....................f
7e40 6f 72 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 or.method.in.filter-methods.....
7e60 20 20 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 ...............for.func.=.(alist
7e80 2d 67 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 -get.method.prescient-filter-ali
7ea0 73 74 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 st)....................if.(null.
7ec0 66 75 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 func)....................do.(mes
7ee0 73 61 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 sage........................"No.
7f00 66 75 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 function.in.`prescient-filter-al
7f20 69 73 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 ist'.for.method:.%s"............
7f40 20 20 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 ............method).............
7f60 20 20 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 .......else....................;
7f80 3b 20 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 ;.Can't.use."for.=".here........
7fa0 20 20 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 .............do.(setq.temp-regex
7fc0 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 28 66 p.............................(f
7fe0 75 6e 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 uncall.func.subquery............
8000 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 3a 77 69 74 68 2d ..........................:with-
8020 67 72 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 group.with-group................
8040 20 20 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 ......................:subquery-
8060 6e 75 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 number.subquery-number))........
8080 20 20 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 ............and.if.temp-regexp.c
80a0 6f 6c 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 ollect.temp-regexp.end..........
80c0 20 20 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 ..........end)))).....(if.separa
80e0 74 65 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 ted.........(apply.#'append.list
8100 2d 6f 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 -of-lists).......(mapcar.(lambda
8120 20 28 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 .(list).(string-join.list."\\|")
8140 29 0a 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 )...............list-of-lists)))
8160 29 0a 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 )..;;;###autoload.(defun.prescie
8180 6e 74 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 nt-filter.(query.candidates.&opt
81a0 69 6f 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 ional.pred)..."Use.QUERY.to.filt
81c0 65 72 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 er.list.of.CANDIDATES...CANDIDAT
81e0 45 53 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 ES.is.a.completion.table,.such.a
8200 73 20 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 s.a.list.of.strings.or.a.functio
8220 6e 20 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 n.as.defined.in.the.Info.node.`(
8240 65 6c 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 elisp)Programmed.Completion'...Q
8260 55 45 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 UERY.is.a.string.containing.the.
8280 73 75 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 sub-queries,.which.are.gotten.us
82a0 69 6e 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 ing.`prescient-split-query'..Eac
82c0 68 20 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 h.sub-query.is.used.to.produce.a
82e0 20 72 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 .regular.expression.according.to
8300 20 74 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 .the.filter.methods.listed.in.`p
8320 72 65 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 rescient-filter-method'..A.candi
8340 64 61 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 date.must.match.every.regular.ex
8360 70 72 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 pression.made.from.the.sub-queri
8380 65 73 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 es.to.be.included.in.the.list.of
83a0 20 72 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 .returned.candidates...PRED.is.t
83c0 68 65 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 he.predicate.used.with.the.compl
83e0 65 74 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 etion.table,.as.described.in.the
8400 20 61 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 .above.Info.node...This.function
8420 20 64 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 .does.not.modify.CANDIDATES;.it.
8440 61 6c 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 always.make.a.new.copy.of.the.li
8460 73 74 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 st."...(pcase-let*.......((`(,pr
8480 65 66 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 efix...,pattern).........(presci
84a0 65 6e 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 ent--prefix-and-pattern.query.ca
84c0 6e 64 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 ndidates.pred))........(completi
84e0 6f 6e 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 on-regexp-list.(prescient-filter
8500 2d 72 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 -regexps.pattern))........(compl
8520 65 74 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 etion-ignore-case.(prescient-ign
8540 6f 72 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 ore-case-p.pattern)))......;;.Ad
8560 64 20 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 d.information.for.`prescient-sor
8580 74 2d 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 t-full-matches-first'..We.....;;
85a0 20 77 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 .want.to.add.these.properties.ev
85c0 65 6e 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 en.if.we.can't.modify.table.....
85e0 3b 3b 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 ;;.metadata,.since.a.user.might.
8600 62 65 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 be.able.to.configure.their.....;
8620 3b 20 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 ;.completion.UI.with.a.custom.so
8640 72 74 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 rting.function.that.would.use...
8660 20 20 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 ..;;.this.info......;;.....;;.Th
8680 65 72 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 ere.is.a.question.of.how.to.hand
86a0 6c 65 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 le.prefixes.for.identifying.....
86c0 3b 3b 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 ;;.fully.matched.candidates..Pre
86e0 66 69 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 fixes.are.used.in:.....;;.....;;
8700 20 2d 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 .-.`completing-read-multiple',.a
8720 73 20 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 s.the.candidates.that.have.....;
8740 3b 20 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 ;...already.been.selected.....;;
8760 0a 20 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 .....;;.-.file-name.completion,.
8780 61 73 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 as.the.directory.preceeding.the.
87a0 66 69 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 file.....;;...name,.though.this.
87c0 73 65 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 seems.to.only.happen.when.there.
87e0 69 73 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 is.no.....;;...match.in.some.UIs
8800 20 28 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 .(Icomplete,.but.not.Selectrum).
8820 20 20 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 ....;;.....;;.It.might.turn.out.
8840 74 68 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 that.for.file.names.we.need.to.a
8860 64 6a 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 djust.the.....;;.regexps.to.be."
8880 5c 28 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 \(?:QUOTED-PREFIX\)METHOD-REGEXP
88a0 22 2c 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 ",.but.this.....;;.isn't.evident
88c0 20 79 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 .yet..We.just.do.the.below.to.be
88e0 20 70 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 .proactive......(cl-flet.((maybe
8900 2d 61 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 -add-prefix.(regexps)...........
8920 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 28 61 6e 64 20 28 ......................(if.(and.(
8940 6e 6f 74 20 28 73 74 72 69 6e 67 2d 65 6d 70 74 79 2d 70 20 70 72 65 66 69 78 29 29 0a 20 20 20 not.(string-empty-p.prefix))....
8960 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 ................................
8980 20 20 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 ......minibuffer-completing-file
89a0 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 20 20 20 20 20 20 -name)..........................
89c0 20 20 20 20 20 20 20 20 20 20 20 28 63 6c 2d 6c 6f 6f 70 20 66 6f 72 20 72 65 67 65 78 70 20 69 ...........(cl-loop.for.regexp.i
89e0 6e 20 72 65 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 20 n.regexps.......................
8a00 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 74 20 28 .......................collect.(
8a20 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 20 concat..........................
8a40 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 22 5c 5c ............................."\\
8a60 28 3f 3a 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 20 (?:"............................
8a80 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 72 65 67 65 ...........................(rege
8aa0 78 70 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 xp-quote.prefix)................
8ac0 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 ................................
8ae0 20 20 20 20 20 20 20 22 5c 5c 29 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ......."\\)"....................
8b00 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 ................................
8b20 20 20 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 20 20 ...regexp)).....................
8b40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 67 65 78 70 73 29 29 29 0a 20 20 20 20 20 20 28 ..............regexps))).......(
8b60 70 72 65 73 63 69 65 6e 74 2d 2d 61 64 64 2d 73 6f 72 74 2d 69 6e 66 6f 0a 20 20 20 20 20 20 20 prescient--add-sort-info........
8b80 28 61 6c 6c 2d 63 6f 6d 70 6c 65 74 69 6f 6e 73 20 70 72 65 66 69 78 20 63 61 6e 64 69 64 61 74 (all-completions.prefix.candidat
8ba0 65 73 20 70 72 65 64 29 0a 20 20 20 20 20 20 20 3a 70 72 65 73 63 69 65 6e 74 2d 6d 61 74 63 68 es.pred)........:prescient-match
8bc0 2d 72 65 67 65 78 70 73 20 63 6f 6d 70 6c 65 74 69 6f 6e 2d 72 65 67 65 78 70 2d 6c 69 73 74 0a -regexps.completion-regexp-list.
8be0 20 20 20 20 20 20 20 3a 70 72 65 73 63 69 65 6e 74 2d 61 6c 6c 2d 72 65 67 65 78 70 73 20 28 6d .......:prescient-all-regexps.(m
8c00 61 79 62 65 2d 61 64 64 2d 70 72 65 66 69 78 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 aybe-add-prefix.................
8c20 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 66 69 6c 74 65 72 ...............(prescient-filter
8c40 2d 72 65 67 65 78 70 73 20 70 61 74 74 65 72 6e 20 6e 69 6c 20 74 29 29 0a 20 20 20 20 20 20 20 -regexps.pattern.nil.t))........
8c60 3a 70 72 65 73 63 69 65 6e 74 2d 69 67 6e 6f 72 65 2d 63 61 73 65 20 63 6f 6d 70 6c 65 74 69 6f :prescient-ignore-case.completio
8c80 6e 2d 69 67 6e 6f 72 65 2d 63 61 73 65 0a 20 20 20 20 20 20 20 3a 70 72 65 73 63 69 65 6e 74 2d n-ignore-case........:prescient-
8ca0 71 75 65 72 79 20 71 75 65 72 79 29 29 29 29 0a 0a 28 64 65 66 6d 61 63 72 6f 20 70 72 65 73 63 query.query))))..(defmacro.presc
8cc0 69 65 6e 74 2d 2d 73 6f 72 74 2d 63 6f 6d 70 61 72 65 20 28 29 0a 20 20 22 48 61 63 6b 20 75 73 ient--sort-compare.()..."Hack.us
8ce0 65 64 20 74 6f 20 63 61 75 73 65 20 74 68 65 20 62 79 74 65 2d 63 6f 6d 70 69 6c 65 72 20 74 6f ed.to.cause.the.byte-compiler.to
8d00 20 70 72 6f 64 75 63 65 20 66 61 73 74 65 72 20 63 6f 64 65 2e 0a 4e 6f 74 65 20 74 68 61 74 20 .produce.faster.code..Note.that.
8d20 74 68 69 73 20 6d 61 63 72 6f 20 6d 75 73 74 20 62 65 20 75 73 65 64 20 77 69 74 68 20 73 65 76 this.macro.must.be.used.with.sev
8d40 65 72 61 6c 20 76 61 72 69 61 62 6c 65 73 20 69 6e 0a 6c 65 78 69 63 61 6c 20 73 63 6f 70 65 2e eral.variables.in.lexical.scope.
8d60 22 0a 20 20 60 28 70 72 6f 67 6e 0a 20 20 20 20 20 28 6c 65 74 2a 20 28 28 70 31 20 28 67 65 74 "...`(progn......(let*.((p1.(get
8d80 68 61 73 68 20 63 31 20 68 69 73 74 20 6c 65 6e 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 hash.c1.hist.len)).............(
8da0 70 32 20 28 67 65 74 68 61 73 68 20 63 32 20 68 69 73 74 20 6c 65 6e 29 29 29 0a 20 20 20 20 20 p2.(gethash.c2.hist.len)))......
8dc0 20 20 28 6f 72 20 28 3c 20 70 31 20 70 32 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 61 6e 64 20 ..(or.(<.p1.p2)............(and.
8de0 28 65 71 20 70 31 20 70 32 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 2a (eq.p1.p2).................(let*
8e00 20 28 28 66 31 20 28 67 65 74 68 61 73 68 20 63 31 20 66 72 65 71 20 30 29 29 0a 20 20 20 20 20 .((f1.(gethash.c1.freq.0))......
8e20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 32 20 28 67 65 74 68 61 73 68 20 63 ..................(f2.(gethash.c
8e40 32 20 66 72 65 71 20 30 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 2.freq.0)))...................(o
8e60 72 20 28 3e 20 66 31 20 66 32 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 r.(>.f1.f2).....................
8e80 20 20 28 61 6e 64 20 28 65 71 20 66 31 20 66 32 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..(and.(eq.f1.f2)...............
8ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 74 69 65 62 72 65 61 6b 65 72 0a 20 20 20 20 .............(if.tiebreaker.....
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 3c 20 28 66 ...........................(<.(f
8ee0 75 6e 63 61 6c 6c 20 74 69 65 62 72 65 61 6b 65 72 20 63 31 20 63 32 29 20 30 29 0a 20 20 20 20 uncall.tiebreaker.c1.c2).0).....
8f00 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 61 6e 64 0a 20 20 .........................(and...
8f20 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 6c 65 6e 2d ............................len-
8f40 65 6e 61 62 6c 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 20 enable..........................
8f60 20 20 20 20 20 28 3c 20 28 6c 65 6e 67 74 68 20 63 31 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 .....(<.(length.c1).............
8f80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 6e 67 74 68 20 63 32 29 .....................(length.c2)
8fa0 29 29 29 29 29 29 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 6f )))))))))))..(defun.prescient-so
8fc0 72 74 2d 63 6f 6d 70 61 72 65 20 28 63 31 20 63 32 29 0a 20 20 22 43 6f 6d 70 61 72 65 20 63 61 rt-compare.(c1.c2)..."Compare.ca
8fe0 6e 64 69 64 61 74 65 73 20 43 31 20 61 6e 64 20 43 32 20 62 79 20 75 73 61 67 65 20 61 6e 64 20 ndidates.C1.and.C2.by.usage.and.
9000 6c 65 6e 67 74 68 2e 0a 0a 49 66 20 60 70 72 65 73 63 69 65 6e 74 2d 70 65 72 73 69 73 74 2d 6d length...If.`prescient-persist-m
9020 6f 64 65 27 20 69 73 20 65 6e 61 62 6c 65 64 2c 20 74 68 65 6e 20 65 6e 73 75 72 65 20 74 68 61 ode'.is.enabled,.then.ensure.tha
9040 74 20 75 73 61 67 65 0a 64 61 74 61 20 68 61 73 20 62 65 65 6e 20 6c 6f 61 64 65 64 20 66 72 6f t.usage.data.has.been.loaded.fro
9060 6d 20 60 70 72 65 73 63 69 65 6e 74 2d 73 61 76 65 2d 66 69 6c 65 27 20 62 65 66 6f 72 65 20 63 m.`prescient-save-file'.before.c
9080 6f 6d 70 61 72 69 6e 67 2e 0a 4c 6f 61 64 69 6e 67 20 77 69 6c 6c 20 6f 6e 6c 79 20 62 65 20 61 omparing..Loading.will.only.be.a
90a0 74 74 65 6d 70 74 65 64 20 6f 6e 63 65 2c 20 6e 6f 74 20 62 65 66 6f 72 65 20 65 76 65 72 79 0a ttempted.once,.not.before.every.
90c0 63 6f 6d 70 61 72 69 73 6f 6e 2e 0a 0a 49 66 20 60 70 72 65 73 63 69 65 6e 74 2d 73 6f 72 74 2d comparison...If.`prescient-sort-
90e0 6c 65 6e 67 74 68 2d 65 6e 61 62 6c 65 27 20 69 73 20 6e 69 6c 2c 20 74 68 65 6e 20 64 6f 20 6e length-enable'.is.nil,.then.do.n
9100 6f 74 20 73 6f 72 74 20 62 79 0a 6c 65 6e 67 74 68 2e 22 0a 20 20 28 77 68 65 6e 20 28 61 6e 64 ot.sort.by.length."...(when.(and
9120 20 70 72 65 73 63 69 65 6e 74 2d 70 65 72 73 69 73 74 2d 6d 6f 64 65 20 28 6e 6f 74 20 70 72 65 .prescient-persist-mode.(not.pre
9140 73 63 69 65 6e 74 2d 2d 63 61 63 68 65 2d 6c 6f 61 64 65 64 29 29 0a 20 20 20 20 28 70 72 65 73 scient--cache-loaded)).....(pres
9160 63 69 65 6e 74 2d 2d 6c 6f 61 64 29 29 0a 20 20 28 6c 65 74 20 28 28 68 69 73 74 20 70 72 65 73 cient--load))...(let.((hist.pres
9180 63 69 65 6e 74 2d 2d 68 69 73 74 6f 72 79 29 0a 20 20 20 20 20 20 20 20 28 6c 65 6e 20 70 72 65 cient--history).........(len.pre
91a0 73 63 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 28 scient-history-length).........(
91c0 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 0a 20 20 20 20 20 freq.prescient--frequency)......
91e0 20 20 20 28 6c 65 6e 2d 65 6e 61 62 6c 65 20 70 72 65 73 63 69 65 6e 74 2d 73 6f 72 74 2d 6c 65 ...(len-enable.prescient-sort-le
9200 6e 67 74 68 2d 65 6e 61 62 6c 65 29 0a 20 20 20 20 20 20 20 20 28 74 69 65 62 72 65 61 6b 65 72 ngth-enable).........(tiebreaker
9220 20 70 72 65 73 63 69 65 6e 74 2d 74 69 65 62 72 65 61 6b 65 72 29 29 0a 20 20 20 20 28 70 72 65 .prescient-tiebreaker)).....(pre
9240 73 63 69 65 6e 74 2d 2d 73 6f 72 74 2d 63 6f 6d 70 61 72 65 29 29 29 0a 0a 28 64 65 66 76 61 72 scient--sort-compare)))..(defvar
9260 20 70 72 65 73 63 69 65 6e 74 2d 71 75 65 72 79 20 6e 69 6c 0a 20 20 22 54 68 65 20 6f 72 69 67 .prescient-query.nil..."The.orig
9280 69 6e 61 6c 20 71 75 65 72 79 20 66 72 6f 6d 20 74 68 65 20 75 73 65 72 2c 20 69 66 20 61 76 61 inal.query.from.the.user,.if.ava
92a0 69 6c 61 62 6c 65 2e 0a 59 6f 75 20 63 61 6e 20 75 73 65 20 74 68 69 73 20 69 6e 20 79 6f 75 72 ilable..You.can.use.this.in.your
92c0 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 60 70 72 65 73 63 69 65 6e 74 2d 74 69 .implementation.of.`prescient-ti
92e0 65 62 72 65 61 6b 65 72 27 0a 74 6f 20 73 6f 72 74 20 63 61 6e 64 69 64 61 74 65 73 20 64 65 70 ebreaker'.to.sort.candidates.dep
9300 65 6e 64 69 6e 67 20 6f 6e 20 74 68 65 20 75 73 65 72 27 73 20 71 75 65 72 79 2e 20 54 68 69 73 ending.on.the.user's.query..This
9320 20 6d 69 67 68 74 20 62 65 0a 6e 69 6c 20 69 66 20 60 70 72 65 73 63 69 65 6e 74 2d 73 6f 72 74 .might.be.nil.if.`prescient-sort
9340 2d 63 6f 6d 70 61 72 65 27 20 69 73 20 69 6e 76 6f 6b 65 64 20 64 69 72 65 63 74 6c 79 2c 20 6f -compare'.is.invoked.directly,.o
9360 72 20 69 66 0a 60 70 72 65 73 63 69 65 6e 74 2d 73 6f 72 74 27 20 69 73 20 69 6e 76 6f 6b 65 64 r.if.`prescient-sort'.is.invoked
9380 20 77 69 74 68 6f 75 74 20 60 70 72 65 73 63 69 65 6e 74 2d 66 69 6c 74 65 72 27 20 68 61 76 69 .without.`prescient-filter'.havi
93a0 6e 67 0a 62 65 65 6e 20 72 75 6e 20 66 69 72 73 74 2c 20 73 6f 20 79 6f 75 20 73 68 6f 75 6c 64 ng.been.run.first,.so.you.should
93c0 20 68 61 6e 64 6c 65 20 74 68 61 74 20 63 61 73 65 20 74 6f 6f 2e 22 29 0a 0a 28 64 65 66 75 6e .handle.that.case.too.")..(defun
93e0 20 70 72 65 73 63 69 65 6e 74 2d 73 6f 72 74 20 28 63 61 6e 64 69 64 61 74 65 73 29 0a 20 20 22 .prescient-sort.(candidates)..."
9400 53 6f 72 74 20 43 41 4e 44 49 44 41 54 45 53 20 75 73 69 6e 67 20 66 72 65 71 75 65 6e 63 79 20 Sort.CANDIDATES.using.frequency.
9420 64 61 74 61 2e 0a 52 65 74 75 72 6e 20 74 68 65 20 73 6f 72 74 65 64 20 6c 69 73 74 2e 20 54 68 data..Return.the.sorted.list..Th
9440 65 20 6f 72 69 67 69 6e 61 6c 20 69 73 20 6d 6f 64 69 66 69 65 64 20 64 65 73 74 72 75 63 74 69 e.original.is.modified.destructi
9460 76 65 6c 79 2e 0a 0a 53 65 65 20 61 6c 73 6f 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 73 20 60 70 vely...See.also.the.functions.`p
9480 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 66 69 72 73 74 rescient-sort-full-matches-first
94a0 27 20 61 6e 64 0a 60 70 72 65 73 63 69 65 6e 74 2d 63 6f 6d 70 6c 65 74 69 6f 6e 2d 73 6f 72 74 '.and.`prescient-completion-sort
94c0 27 2e 20 42 6f 74 68 20 61 72 65 20 6d 65 61 6e 74 20 74 6f 20 62 65 20 75 73 65 64 20 61 66 74 '..Both.are.meant.to.be.used.aft
94e0 65 72 0a 60 70 72 65 73 63 69 65 6e 74 2d 66 69 6c 74 65 72 27 2e 22 0a 20 20 28 77 68 65 6e 20 er.`prescient-filter'."...(when.
9500 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 20 28 6e 6f 74 (and.prescient-persist-mode.(not
9520 20 70 72 65 73 63 69 65 6e 74 2d 2d 63 61 63 68 65 2d 6c 6f 61 64 65 64 29 29 0a 20 20 20 20 28 .prescient--cache-loaded)).....(
9540 70 72 65 73 63 69 65 6e 74 2d 2d 6c 6f 61 64 29 29 0a 20 20 3b 3b 20 50 65 72 66 6f 72 6d 61 6e prescient--load))...;;.Performan
9560 63 65 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 20 72 65 76 65 61 6c 65 64 20 74 68 61 74 20 72 65 ce.optimization.revealed.that.re
9580 61 64 69 6e 67 20 64 79 6e 61 6d 69 63 20 76 61 72 69 61 62 6c 65 73 0a 20 20 3b 3b 20 6d 75 6c ading.dynamic.variables...;;.mul
95a0 74 69 70 6c 65 20 74 69 6d 65 73 20 77 61 73 20 61 20 62 6f 74 74 6c 65 6e 65 63 6b 20 28 79 65 tiple.times.was.a.bottleneck.(ye
95c0 73 2c 20 72 65 61 6c 6c 79 29 2c 20 61 6e 64 20 62 79 20 72 65 61 64 69 6e 67 0a 20 20 3b 3b 20 s,.really),.and.by.reading...;;.
95e0 74 68 65 6d 20 69 6e 74 6f 20 6c 65 78 69 63 61 6c 20 76 61 72 69 61 62 6c 65 73 20 77 68 69 63 them.into.lexical.variables.whic
9600 68 20 61 72 65 20 6d 75 63 68 20 66 61 73 74 65 72 20 74 6f 20 61 63 63 65 73 73 2c 20 77 65 0a h.are.much.faster.to.access,.we.
9620 20 20 3b 3b 20 69 6d 70 72 6f 76 65 20 74 68 65 20 73 70 65 65 64 20 6f 66 20 60 70 72 65 73 63 ..;;.improve.the.speed.of.`presc
9640 69 65 6e 74 2d 73 6f 72 74 27 20 6f 6e 20 6c 61 72 67 65 20 63 61 6e 64 69 64 61 74 65 20 6c 69 ient-sort'.on.large.candidate.li
9660 73 74 73 20 62 79 0a 20 20 3b 3b 20 32 78 2e 0a 20 20 28 6c 65 74 20 28 28 68 69 73 74 20 70 72 sts.by...;;.2x....(let.((hist.pr
9680 65 73 63 69 65 6e 74 2d 2d 68 69 73 74 6f 72 79 29 0a 20 20 20 20 20 20 20 20 28 6c 65 6e 20 70 escient--history).........(len.p
96a0 72 65 73 63 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 rescient-history-length)........
96c0 20 28 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 0a 20 20 20 .(freq.prescient--frequency)....
96e0 20 20 20 20 20 28 6c 65 6e 2d 65 6e 61 62 6c 65 20 70 72 65 73 63 69 65 6e 74 2d 73 6f 72 74 2d .....(len-enable.prescient-sort-
9700 6c 65 6e 67 74 68 2d 65 6e 61 62 6c 65 29 0a 20 20 20 20 20 20 20 20 28 74 69 65 62 72 65 61 6b length-enable).........(tiebreak
9720 65 72 20 70 72 65 73 63 69 65 6e 74 2d 74 69 65 62 72 65 61 6b 65 72 29 0a 20 20 20 20 20 20 20 er.prescient-tiebreaker)........
9740 20 28 70 72 65 73 63 69 65 6e 74 2d 71 75 65 72 79 20 28 70 6c 69 73 74 2d 67 65 74 20 28 70 72 .(prescient-query.(plist-get.(pr
9760 65 73 63 69 65 6e 74 2d 2d 67 65 74 2d 73 6f 72 74 2d 69 6e 66 6f 20 63 61 6e 64 69 64 61 74 65 escient--get-sort-info.candidate
9780 73 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 s)..............................
97a0 20 20 20 20 20 20 20 3a 70 72 65 73 63 69 65 6e 74 2d 71 75 65 72 79 29 29 29 0a 20 20 20 20 28 .......:prescient-query))).....(
97c0 73 6f 72 74 0a 20 20 20 20 20 63 61 6e 64 69 64 61 74 65 73 0a 20 20 20 20 20 28 6c 61 6d 62 64 sort......candidates......(lambd
97e0 61 20 28 63 31 20 63 32 29 0a 20 20 20 20 20 20 20 28 70 72 65 73 63 69 65 6e 74 2d 2d 73 6f 72 a.(c1.c2)........(prescient--sor
9800 74 2d 63 6f 6d 70 61 72 65 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 70 72 65 73 63 69 65 6e 74 t-compare)))))..(defun.prescient
9820 2d 73 6f 72 74 2d 66 75 6c 6c 2d 6d 61 74 63 68 65 73 2d 66 69 72 73 74 20 28 63 61 6e 64 69 64 -sort-full-matches-first.(candid
9840 61 74 65 73 20 72 65 67 65 78 70 73 20 69 67 6e 6f 72 65 2d 63 61 73 65 29 0a 20 20 22 53 6f 72 ates.regexps.ignore-case)..."Sor
9860 74 20 66 75 6c 6c 79 20 6d 61 74 63 68 65 64 20 73 74 72 69 6e 67 73 20 69 6e 20 43 41 4e 44 49 t.fully.matched.strings.in.CANDI
9880 44 41 54 45 53 20 62 65 66 6f 72 65 20 6f 74 68 65 72 20 63 61 6e 64 69 64 61 74 65 73 2e 0a 0a DATES.before.other.candidates...
98a0 52 45 47 45 58 50 53 20 61 72 65 20 74 68 65 20 72 65 67 65 78 70 73 20 70 72 65 73 63 69 65 6e REGEXPS.are.the.regexps.prescien
98c0 74 2e 65 6c 20 75 73 65 64 20 74 6f 20 66 69 6c 74 65 72 20 74 68 65 20 63 61 6e 64 69 64 61 74 t.el.used.to.filter.the.candidat
98e0 65 73 2e 0a 49 47 4e 4f 52 45 2d 43 41 53 45 20 69 73 20 77 68 65 74 68 65 72 20 63 61 73 65 20 es..IGNORE-CASE.is.whether.case.
9900 77 61 73 20 69 67 6e 6f 72 65 64 20 77 68 65 6e 20 66 69 6c 74 65 72 69 6e 67 2e 0a 0a 41 73 20 was.ignored.when.filtering...As.
9920 74 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 6d 65 61 6e 74 20 74 6f 20 62 65 20 75 73 65 this.function.is.meant.to.be.use
9940 64 20 61 66 74 65 72 20 66 69 6c 74 65 72 69 6e 67 2c 20 61 6c 6c 20 6f 66 20 74 68 65 0a 63 61 d.after.filtering,.all.of.the.ca
9960 6e 64 69 64 61 74 65 73 20 69 6e 20 43 41 4e 44 49 44 41 54 45 53 20 73 68 6f 75 6c 64 20 6d 61 ndidates.in.CANDIDATES.should.ma
9980 74 63 68 20 61 6c 6c 20 6f 66 20 74 68 65 20 72 65 67 65 78 70 73 20 69 6e 0a 52 45 47 45 58 50 tch.all.of.the.regexps.in.REGEXP
99a0 53 2e 22 0a 20 20 28 63 6f 6e 64 0a 20 20 20 28 28 6e 75 6c 6c 20 63 61 6e 64 69 64 61 74 65 73 S."...(cond....((null.candidates
99c0 29 20 6e 69 6c 29 0a 20 20 20 28 28 6e 75 6c 6c 20 72 65 67 65 78 70 73 29 20 63 61 6e 64 69 64 ).nil)....((null.regexps).candid
99e0 61 74 65 73 29 0a 20 20 20 28 74 20 28 73 61 76 65 2d 6d 61 74 63 68 2d 64 61 74 61 0a 20 20 20 ates)....(t.(save-match-data....
9a00 20 20 20 20 20 28 63 6c 2d 6c 6f 6f 70 0a 20 20 20 20 20 20 20 20 20 77 69 74 68 20 70 72 69 6f .....(cl-loop..........with.prio
9a20 72 69 74 69 7a 65 64 2d 63 61 6e 64 69 64 61 74 65 73 20 3d 20 6e 69 6c 0a 20 20 20 20 20 20 20 ritized-candidates.=.nil........
9a40 20 20 61 6e 64 20 72 65 6d 61 69 6e 69 6e 67 2d 63 61 6e 64 69 64 61 74 65 73 20 3d 20 6e 69 6c ..and.remaining-candidates.=.nil
9a60 0a 20 20 20 20 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 ..........and.case-fold-search.=
9a80 20 69 67 6e 6f 72 65 2d 63 61 73 65 0a 20 20 20 20 20 20 20 20 20 66 6f 72 20 63 61 6e 64 20 69 .ignore-case..........for.cand.i
9aa0 6e 20 63 61 6e 64 69 64 61 74 65 73 0a 20 20 20 20 20 20 20 20 20 69 66 20 28 63 6c 2d 6c 6f 6f n.candidates..........if.(cl-loo
9ac0 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.........
9ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 65 72 65 69 73 20 28 61 6e 64 20 28 73 74 72 69 6e .............thereis.(and.(strin
9b00 67 2d 6d 61 74 63 68 20 72 65 67 65 78 70 20 63 61 6e 64 29 0a 20 20 20 20 20 20 20 20 20 20 20 g-match.regexp.cand)............
9b20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 3d 20 28 6c 65 6e 67 74 .......................(=.(lengt
9b40 68 20 63 61 6e 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 h.cand).........................
9b60 20 20 20 20 20 20 20 20 20 20 20 20 20 28 2d 20 28 6d 61 74 63 68 2d 65 6e 64 20 30 29 0a 20 20 .............(-.(match-end.0)...
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 20 20 20 20 20 ................................
9ba0 20 20 20 20 20 20 28 6d 61 74 63 68 2d 62 65 67 69 6e 6e 69 6e 67 20 30 29 29 29 29 29 0a 20 20 ......(match-beginning.0)))))...
9bc0 20 20 20 20 20 20 20 64 6f 20 28 70 75 73 68 20 63 61 6e 64 20 70 72 69 6f 72 69 74 69 7a 65 64 .......do.(push.cand.prioritized
9be0 2d 63 61 6e 64 69 64 61 74 65 73 29 0a 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 64 6f 20 28 70 -candidates)..........else.do.(p
9c00 75 73 68 20 63 61 6e 64 20 72 65 6d 61 69 6e 69 6e 67 2d 63 61 6e 64 69 64 61 74 65 73 29 0a 20 ush.cand.remaining-candidates)..
9c20 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 20 72 65 74 75 72 6e 20 28 6e 63 6f 6e 63 20 28 6e ........finally.return.(nconc.(n
9c40 72 65 76 65 72 73 65 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 reverse.prioritized-candidates).
9c60 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 28 ...............................(
9c80 6e 72 65 76 65 72 73 65 20 72 65 6d 61 69 6e 69 6e 67 2d 63 61 6e 64 69 64 61 74 65 73 29 29 29 nreverse.remaining-candidates)))
9ca0 29 29 29 29 0a 0a 3b 3b 3b 3b 20 43 61 6e 64 69 64 61 74 65 20 73 65 6c 65 63 74 69 6f 6e 0a 0a ))))..;;;;.Candidate.selection..
9cc0 28 64 65 66 75 6e 20 70 72 65 73 63 69 65 6e 74 2d 72 65 6d 65 6d 62 65 72 20 28 63 61 6e 64 69 (defun.prescient-remember.(candi
9ce0 64 61 74 65 29 0a 20 20 22 52 65 63 6f 72 64 20 43 41 4e 44 49 44 41 54 45 20 69 6e 20 60 70 72 date)..."Record.CANDIDATE.in.`pr
9d00 65 73 63 69 65 6e 74 2d 2d 68 69 73 74 6f 72 79 27 20 61 6e 64 20 60 70 72 65 73 63 69 65 6e 74 escient--history'.and.`prescient
9d20 2d 2d 66 72 65 71 75 65 6e 63 79 27 2e 22 0a 20 20 28 73 65 74 71 20 63 61 6e 64 69 64 61 74 65 --frequency'."...(setq.candidate
9d40 20 28 73 75 62 73 74 72 69 6e 67 2d 6e 6f 2d 70 72 6f 70 65 72 74 69 65 73 20 63 61 6e 64 69 64 .(substring-no-properties.candid
9d60 61 74 65 29 29 0a 20 20 3b 3b 20 41 64 64 20 74 6f 20 60 70 72 65 73 63 69 65 6e 74 2d 2d 68 69 ate))...;;.Add.to.`prescient--hi
9d80 73 74 6f 72 79 27 2e 0a 20 20 28 6c 65 74 20 28 28 74 68 69 73 2d 70 6f 73 20 28 67 65 74 68 61 story'....(let.((this-pos.(getha
9da0 73 68 0a 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 20 sh....................candidate.
9dc0 70 72 65 73 63 69 65 6e 74 2d 2d 68 69 73 74 6f 72 79 20 70 72 65 73 63 69 65 6e 74 2d 68 69 73 prescient--history.prescient-his
9de0 74 6f 72 79 2d 6c 65 6e 67 74 68 29 29 29 0a 20 20 20 20 3b 3b 20 49 66 20 74 68 65 20 63 61 6e tory-length))).....;;.If.the.can
9e00 64 69 64 61 74 65 20 77 61 73 20 61 6c 72 65 61 64 79 20 69 6e 20 74 68 65 20 68 69 73 74 6f 72 didate.was.already.in.the.histor
9e20 79 2c 20 74 68 65 6e 20 70 72 65 70 61 72 65 20 66 6f 72 0a 20 20 20 20 3b 3b 20 6d 6f 76 69 6e y,.then.prepare.for.....;;.movin
9e40 67 20 69 74 20 74 6f 20 74 68 65 20 66 72 6f 6e 74 20 62 79 20 69 6e 63 72 65 6d 65 6e 74 69 6e g.it.to.the.front.by.incrementin
9e60 67 20 74 68 65 20 69 6e 64 69 63 65 73 20 6f 66 20 6f 74 68 65 72 0a 20 20 20 20 3b 3b 20 63 61 g.the.indices.of.other.....;;.ca
9e80 6e 64 69 64 61 74 65 73 2e 0a 20 20 20 20 28 6d 61 70 68 61 73 68 0a 20 20 20 20 20 28 6c 61 6d ndidates......(maphash......(lam
9ea0 62 64 61 20 28 6f 74 68 65 72 2d 63 61 6e 64 69 64 61 74 65 20 6f 74 68 65 72 2d 70 6f 73 29 0a bda.(other-candidate.other-pos).
9ec0 20 20 20 20 20 20 20 28 63 6f 6e 64 0a 20 20 20 20 20 20 20 20 3b 3b 20 49 66 20 74 68 65 20 6f .......(cond.........;;.If.the.o
9ee0 74 68 65 72 20 63 61 6e 64 69 64 61 74 65 20 63 61 6d 65 20 65 61 72 6c 69 65 72 20 69 6e 20 74 ther.candidate.came.earlier.in.t
9f00 68 65 20 68 69 73 74 6f 72 79 2c 20 74 68 65 6e 0a 20 20 20 20 20 20 20 20 3b 3b 20 69 6e 63 72 he.history,.then.........;;.incr
9f20 65 6d 65 6e 74 20 69 74 73 20 69 6e 64 65 78 2e 0a 20 20 20 20 20 20 20 20 28 28 3c 20 6f 74 68 ement.its.index..........((<.oth
9f40 65 72 2d 70 6f 73 20 74 68 69 73 2d 70 6f 73 29 0a 20 20 20 20 20 20 20 20 20 28 70 75 74 68 61 er-pos.this-pos)..........(putha
9f60 73 68 20 6f 74 68 65 72 2d 63 61 6e 64 69 64 61 74 65 20 28 31 2b 20 6f 74 68 65 72 2d 70 6f 73 sh.other-candidate.(1+.other-pos
9f80 29 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 20 20 20 3b ).prescient--history)).........;
9fa0 3b 20 45 6c 73 65 2c 20 69 66 20 69 74 27 73 20 61 6c 72 65 61 64 79 20 70 61 73 74 20 74 68 65 ;.Else,.if.it's.already.past.the
9fc0 20 65 6e 64 20 6f 66 20 74 68 65 20 68 69 73 74 6f 72 79 20 28 74 68 69 73 0a 20 20 20 20 20 20 .end.of.the.history.(this.......
9fe0 20 20 3b 3b 20 77 6f 75 6c 64 20 68 61 70 70 65 6e 20 69 66 20 60 70 72 65 73 63 69 65 6e 74 2d ..;;.would.happen.if.`prescient-
a000 68 69 73 74 6f 72 79 2d 6c 65 6e 67 74 68 27 20 77 65 72 65 20 64 65 63 72 65 61 73 65 64 29 2c history-length'.were.decreased),
a020 0a 20 20 20 20 20 20 20 20 3b 3b 20 6f 72 20 69 66 20 69 74 27 73 20 61 74 20 74 68 65 20 76 65 .........;;.or.if.it's.at.the.ve
a040 72 79 20 65 6e 64 20 61 6e 64 20 61 20 6e 65 77 20 63 61 6e 64 69 64 61 74 65 20 77 61 73 20 61 ry.end.and.a.new.candidate.was.a
a060 64 64 65 64 2c 0a 20 20 20 20 20 20 20 20 3b 3b 20 74 68 65 6e 20 72 65 6d 6f 76 65 20 69 74 20 dded,.........;;.then.remove.it.
a080 66 72 6f 6d 20 74 68 65 20 68 69 73 74 6f 72 79 2e 0a 20 20 20 20 20 20 20 20 28 28 6f 72 20 28 from.the.history..........((or.(
a0a0 3e 3d 20 6f 74 68 65 72 2d 70 6f 73 20 70 72 65 73 63 69 65 6e 74 2d 68 69 73 74 6f 72 79 2d 6c >=.other-pos.prescient-history-l
a0c0 65 6e 67 74 68 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 6e 64 20 28 3d 20 6f 74 68 65 ength)..............(and.(=.othe
a0e0 72 2d 70 6f 73 20 28 31 2d 20 70 72 65 73 63 69 65 6e 74 2d 68 69 73 74 6f 72 79 2d 6c 65 6e 67 r-pos.(1-.prescient-history-leng
a100 74 68 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 3d 20 74 68 69 73 2d 70 th))...................(=.this-p
a120 6f 73 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 os.prescient-history-length)))..
a140 20 20 20 20 20 20 20 20 28 72 65 6d 68 61 73 68 20 6f 74 68 65 72 2d 63 61 6e 64 69 64 61 74 65 ........(remhash.other-candidate
a160 20 70 72 65 73 63 69 65 6e 74 2d 2d 68 69 73 74 6f 72 79 29 29 29 29 0a 20 20 20 20 20 70 72 65 .prescient--history))))......pre
a180 73 63 69 65 6e 74 2d 2d 68 69 73 74 6f 72 79 29 0a 20 20 20 20 3b 3b 20 4e 6f 77 20 61 64 64 20 scient--history).....;;.Now.add.
a1a0 74 68 65 20 6e 65 77 20 63 61 6e 64 69 64 61 74 65 20 74 6f 20 74 68 65 20 62 65 67 69 6e 6e 69 the.new.candidate.to.the.beginni
a1c0 6e 67 2e 0a 20 20 20 20 28 70 75 74 68 61 73 68 20 63 61 6e 64 69 64 61 74 65 20 30 20 70 72 65 ng......(puthash.candidate.0.pre
a1e0 73 63 69 65 6e 74 2d 2d 68 69 73 74 6f 72 79 29 29 0a 20 20 3b 3b 20 41 64 64 20 74 6f 20 60 70 scient--history))...;;.Add.to.`p
a200 72 65 73 63 69 65 6e 74 2d 2d 66 72 65 71 75 65 6e 63 79 27 2e 0a 20 20 28 70 75 74 68 61 73 68 rescient--frequency'....(puthash
a220 20 63 61 6e 64 69 64 61 74 65 20 28 31 2b 20 28 67 65 74 68 61 73 68 20 63 61 6e 64 69 64 61 74 .candidate.(1+.(gethash.candidat
a240 65 20 70 72 65 73 63 69 65 6e 74 2d 2d 66 72 65 71 75 65 6e 63 79 20 30 29 29 0a 20 20 20 20 20 e.prescient--frequency.0))......
a260 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 20 3b 3b ......prescient--frequency)...;;
a280 20 52 65 6d 6f 76 65 20 6f 6c 64 20 65 6e 74 72 69 65 73 20 66 72 6f 6d 20 60 70 72 65 73 63 69 .Remove.old.entries.from.`presci
a2a0 65 6e 74 2d 2d 66 72 65 71 75 65 6e 63 79 27 2e 0a 20 20 28 6d 61 70 68 61 73 68 20 28 6c 61 6d ent--frequency'....(maphash.(lam
a2c0 62 64 61 20 28 63 61 6e 64 20 6f 6c 64 2d 66 72 65 71 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 bda.(cand.old-freq).............
a2e0 20 28 6c 65 74 20 28 28 6e 65 77 2d 66 72 65 71 20 28 2a 20 6f 6c 64 2d 66 72 65 71 20 70 72 65 .(let.((new-freq.(*.old-freq.pre
a300 73 63 69 65 6e 74 2d 66 72 65 71 75 65 6e 63 79 2d 64 65 63 61 79 29 29 29 0a 20 20 20 20 20 20 scient-frequency-decay))).......
a320 20 20 20 20 20 20 20 20 20 28 69 66 20 28 3c 20 6e 65 77 2d 66 72 65 71 20 70 72 65 73 63 69 65 .........(if.(<.new-freq.prescie
a340 6e 74 2d 66 72 65 71 75 65 6e 63 79 2d 74 68 72 65 73 68 6f 6c 64 29 0a 20 20 20 20 20 20 20 20 nt-frequency-threshold).........
a360 20 20 20 20 20 20 20 20 20 20 20 28 72 65 6d 68 61 73 68 20 63 61 6e 64 20 70 72 65 73 63 69 65 ...........(remhash.cand.prescie
a380 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 20 20 20 20 20 nt--frequency)..................
a3a0 28 70 75 74 68 61 73 68 20 63 61 6e 64 20 6e 65 77 2d 66 72 65 71 20 70 72 65 73 63 69 65 6e 74 (puthash.cand.new-freq.prescient
a3c0 2d 2d 66 72 65 71 75 65 6e 63 79 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 70 72 65 73 63 --frequency))))............presc
a3e0 69 65 6e 74 2d 2d 66 72 65 71 75 65 6e 63 79 29 0a 20 20 3b 3b 20 55 70 64 61 74 65 20 73 65 72 ient--frequency)...;;.Update.ser
a400 69 61 6c 20 6e 75 6d 62 65 72 2e 0a 20 20 28 63 6c 2d 69 6e 63 66 20 70 72 65 73 63 69 65 6e 74 ial.number....(cl-incf.prescient
a420 2d 2d 73 65 72 69 61 6c 2d 6e 75 6d 62 65 72 29 0a 20 20 3b 3b 20 53 61 76 65 20 74 68 65 20 63 --serial-number)...;;.Save.the.c
a440 61 63 68 65 20 64 61 74 61 2e 0a 20 20 28 77 68 65 6e 20 28 61 6e 64 20 70 72 65 73 63 69 65 6e ache.data....(when.(and.prescien
a460 74 2d 70 65 72 73 69 73 74 2d 6d 6f 64 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 65 73 t-persist-mode..............pres
a480 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 29 0a 20 20 20 20 cient-aggressive-file-save).....
a4a0 28 70 72 65 73 63 69 65 6e 74 2d 2d 73 61 76 65 29 29 29 0a 0a 3b 3b 3b 3b 20 43 6f 6d 70 6c 65 (prescient--save)))..;;;;.Comple
a4c0 74 69 6f 6e 20 53 74 79 6c 65 0a 0a 3b 3b 20 54 68 69 73 20 73 65 63 74 69 6f 6e 20 63 6f 6e 74 tion.Style..;;.This.section.cont
a4e0 61 69 6e 73 20 66 75 6e 63 74 69 6f 6e 73 20 66 6f 72 20 69 6d 70 6c 65 6d 65 6e 74 69 6e 67 20 ains.functions.for.implementing.
a500 74 68 65 20 60 70 72 65 73 63 69 65 6e 74 27 0a 3b 3b 20 63 6f 6d 70 6c 65 74 69 6f 6e 20 73 74 the.`prescient'.;;.completion.st
a520 79 6c 65 2e 20 54 68 69 73 20 66 65 61 74 75 72 65 20 69 73 20 62 61 73 65 64 20 6f 6e 20 4f 72 yle..This.feature.is.based.on.Or
a540 64 65 72 6c 65 73 73 2e 65 6c 2e 0a 3b 3b 20 53 65 65 3a 20 68 74 74 70 73 3a 2f 2f 67 69 74 68 derless.el..;;.See:.https://gith
a560 75 62 2e 63 6f 6d 2f 6f 61 6e 74 6f 6c 69 6e 2f 6f 72 64 65 72 6c 65 73 73 0a 0a 28 64 65 66 76 ub.com/oantolin/orderless..(defv
a580 61 72 20 63 6f 6d 70 6c 65 74 69 6f 6e 2d 6c 61 7a 79 2d 68 69 6c 69 74 29 0a 28 64 65 66 76 61 ar.completion-lazy-hilit).(defva
a5a0 72 20 63 6f 6d 70 6c 65 74 69 6f 6e 2d 6c 61 7a 79 2d 68 69 6c 69 74 2d 66 6e 29 0a 0a 3b 3b 3b r.completion-lazy-hilit-fn)..;;;
a5c0 3b 3b 20 53 6f 72 74 69 6e 67 20 66 75 6e 63 74 69 6f 6e 73 0a 0a 3b 3b 3b 23 23 23 61 75 74 6f ;;.Sorting.functions..;;;###auto
a5e0 6c 6f 61 64 0a 28 63 6c 2d 64 65 66 75 6e 20 70 72 65 73 63 69 65 6e 74 2d 63 6f 6d 70 6c 65 74 load.(cl-defun.prescient-complet
a600 69 6f 6e 2d 73 6f 72 74 20 28 63 61 6e 64 69 64 61 74 65 73 29 0a 20 20 22 53 6f 72 74 20 74 68 ion-sort.(candidates)..."Sort.th
a620 65 20 66 69 6c 74 65 72 65 64 20 43 41 4e 44 49 44 41 54 45 53 2e 0a 0a 54 68 69 73 20 66 75 6e e.filtered.CANDIDATES...This.fun
a640 63 74 69 6f 6e 20 77 69 6c 6c 20 61 6c 77 61 79 73 20 73 6f 72 74 20 63 61 6e 64 69 64 61 74 65 ction.will.always.sort.candidate
a660 73 20 75 73 69 6e 67 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 s.using.the.function.`prescient-
a680 73 6f 72 74 27 2e 20 57 68 65 6e 20 43 41 4e 44 49 44 41 54 45 53 20 68 61 73 20 62 65 65 6e 20 sort'..When.CANDIDATES.has.been.
a6a0 66 69 6c 74 65 72 65 64 20 75 73 69 6e 67 20 74 68 65 0a 60 70 72 65 73 63 69 65 6e 74 27 20 63 filtered.using.the.`prescient'.c
a6c0 6f 6d 70 6c 65 74 69 6f 6e 20 73 74 79 6c 65 2c 20 69 74 20 63 61 6e 20 6f 70 74 69 6f 6e 61 6c ompletion.style,.it.can.optional
a6e0 6c 79 20 61 6c 73 6f 20 73 6f 72 74 20 74 68 65 6d 0a 75 73 69 6e 67 20 74 68 65 20 66 75 6e 63 ly.also.sort.them.using.the.func
a700 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 2d 6d 61 74 63 68 65 tion.`prescient-sort-full-matche
a720 73 2d 66 69 72 73 74 27 2e 0a 0a 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 63 68 65 63 6b 73 20 s-first'...This.function.checks.
a740 66 6f 72 20 74 68 65 20 70 72 6f 70 65 72 74 69 65 73 20 60 70 72 65 73 63 69 65 6e 74 2d 72 65 for.the.properties.`prescient-re
a760 67 65 78 70 73 27 20 61 6e 64 0a 60 70 72 65 73 63 69 65 6e 74 2d 69 67 6e 6f 72 65 2d 63 61 73 gexps'.and.`prescient-ignore-cas
a780 65 27 20 6f 6e 20 61 6e 79 20 63 61 6e 64 69 64 61 74 65 20 69 6e 20 43 41 4e 44 49 44 41 54 45 e'.on.any.candidate.in.CANDIDATE
a7a0 53 20 28 74 68 6f 75 67 68 0a 74 68 65 79 20 61 72 65 20 73 74 6f 72 65 64 20 6f 6e 20 74 68 65 S.(though.they.are.stored.on.the
a7c0 20 66 69 72 73 74 20 63 61 6e 64 69 64 61 74 65 20 72 65 74 75 72 6e 65 64 20 62 79 0a 60 70 72 .first.candidate.returned.by.`pr
a7e0 65 73 63 69 65 6e 74 2d 66 69 6c 74 65 72 27 29 2e 20 54 68 65 73 65 20 70 72 6f 70 65 72 74 69 escient-filter')..These.properti
a800 65 73 20 61 72 65 20 75 73 65 64 20 66 6f 72 20 69 6d 70 6c 65 6d 65 6e 74 69 6e 67 0a 74 68 65 es.are.used.for.implementing.the
a820 20 75 73 65 72 20 6f 70 74 69 6f 6e 20 60 70 72 65 73 63 69 65 6e 74 2d 73 6f 72 74 2d 66 75 6c .user.option.`prescient-sort-ful
a840 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 6e 75 6c 6c 20 63 l-matches-first'."...(if.(null.c
a860 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 3b 3b 20 60 70 72 65 andidates).......nil.....;;.`pre
a880 73 63 69 65 6e 74 2d 66 69 6c 74 65 72 27 20 61 64 64 73 20 74 68 65 20 70 72 6f 70 65 72 74 69 scient-filter'.adds.the.properti
a8a0 65 73 20 6e 65 65 64 65 64 20 66 6f 72 0a 20 20 20 20 3b 3b 20 60 70 72 65 73 63 69 65 6e 74 2d es.needed.for.....;;.`prescient-
a8c0 73 6f 72 74 2d 66 75 6c 6c 2d 6d 61 74 63 68 65 73 2d 66 69 72 73 74 27 20 74 6f 20 74 68 65 20 sort-full-matches-first'.to.the.
a8e0 66 69 72 73 74 20 63 61 6e 64 69 64 61 74 65 20 69 6e 0a 20 20 20 20 3b 3b 20 74 68 65 20 6c 69 first.candidate.in.....;;.the.li
a900 73 74 20 69 74 20 72 65 74 75 72 6e 73 2e 20 49 66 20 77 65 27 72 65 20 72 65 63 65 69 76 69 6e st.it.returns..If.we're.receivin
a920 67 20 74 68 65 20 66 69 6c 74 65 72 65 64 20 63 61 6e 64 69 64 61 74 65 73 0a 20 20 20 20 3b 3b g.the.filtered.candidates.....;;
a940 20 64 69 72 65 63 74 6c 79 20 28 73 6f 2c 20 6e 6f 74 20 69 6e 20 60 63 6f 6d 70 61 6e 79 2d 70 .directly.(so,.not.in.`company-p
a960 72 65 73 63 69 65 6e 74 2d 74 72 61 6e 73 66 6f 72 6d 65 72 27 29 20 74 68 65 6e 20 77 65 0a 20 rescient-transformer').then.we..
a980 20 20 20 3b 3b 20 73 68 6f 75 6c 64 20 62 65 20 63 68 65 63 6b 69 6e 67 20 66 6f 72 20 74 68 65 ...;;.should.be.checking.for.the
a9a0 6d 20 62 65 66 6f 72 65 20 72 75 6e 6e 69 6e 67 20 60 70 72 65 73 63 69 65 6e 74 2d 73 6f 72 74 m.before.running.`prescient-sort
a9c0 27 2c 0a 20 20 20 20 3b 3b 20 77 68 69 63 68 20 64 65 73 74 72 75 63 74 69 76 65 6c 79 20 6d 6f ',.....;;.which.destructively.mo
a9e0 64 69 66 69 65 73 20 43 41 4e 44 49 44 41 54 45 53 2e 0a 20 20 20 20 28 6c 65 74 20 28 28 72 65 difies.CANDIDATES......(let.((re
aa00 67 65 78 70 73 29 0a 20 20 20 20 20 20 20 20 20 20 28 69 67 6e 6f 72 65 2d 63 61 73 65 29 29 0a gexps)...........(ignore-case)).
aa20 20 20 20 20 20 20 28 77 68 65 6e 20 70 72 65 73 63 69 65 6e 74 2d 73 6f 72 74 2d 66 75 6c 6c 2d ......(when.prescient-sort-full-
aa40 6d 61 74 63 68 65 73 2d 66 69 72 73 74 0a 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 70 72 6f matches-first.........(let.((pro
aa60 70 73 20 28 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 63 61 6e ps.(prescient--get-sort-info.can
aa80 64 69 64 61 74 65 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 72 65 67 65 78 didates)))...........(setq.regex
aaa0 70 73 20 28 70 6c 69 73 74 2d 67 65 74 20 70 72 6f 70 73 20 3a 70 72 65 73 63 69 65 6e 74 2d 61 ps.(plist-get.props.:prescient-a
aac0 6c 6c 2d 72 65 67 65 78 70 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 67 6e 6f ll-regexps).................igno
aae0 72 65 2d 63 61 73 65 20 28 70 6c 69 73 74 2d 67 65 74 20 70 72 6f 70 73 20 3a 70 72 65 73 63 69 re-case.(plist-get.props.:presci
ab00 65 6e 74 2d 69 67 6e 6f 72 65 2d 63 61 73 65 29 29 29 29 0a 20 20 20 20 20 20 28 74 68 72 65 61 ent-ignore-case)))).......(threa
ab20 64 2d 66 69 72 73 74 0a 20 20 20 20 20 20 20 20 63 61 6e 64 69 64 61 74 65 73 0a 20 20 20 20 20 d-first.........candidates......
ab40 20 20 20 28 70 72 65 73 63 69 65 6e 74 2d 73 6f 72 74 29 0a 20 20 20 20 20 20 20 20 3b 3b 20 49 ...(prescient-sort).........;;.I
ab60 66 20 60 72 65 67 65 78 70 73 27 20 69 73 20 6e 69 6c 2c 20 74 68 69 73 20 6a 75 73 74 20 72 65 f.`regexps'.is.nil,.this.just.re
ab80 74 75 72 6e 73 20 74 68 65 20 69 6e 70 75 74 2e 0a 20 20 20 20 20 20 20 20 28 70 72 65 73 63 69 turns.the.input..........(presci
aba0 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 20 72 65 67 65 ent-sort-full-matches-first.rege
abc0 78 70 73 20 69 67 6e 6f 72 65 2d 63 61 73 65 29 29 29 29 29 0a 0a 3b 3b 3b 3b 3b 20 46 69 6c 74 xps.ignore-case)))))..;;;;;.Filt
abe0 65 72 69 6e 67 20 66 75 6e 63 74 69 6f 6e 73 0a 0a 3b 3b 3b 23 23 23 61 75 74 6f 6c 6f 61 64 0a ering.functions..;;;###autoload.
ac00 28 64 65 66 75 6e 20 70 72 65 73 63 69 65 6e 74 2d 61 6c 6c 2d 63 6f 6d 70 6c 65 74 69 6f 6e 73 (defun.prescient-all-completions
ac20 20 28 73 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 5f 70 .(string.table.&optional.pred._p
ac40 6f 69 6e 74 29 0a 20 20 22 60 61 6c 6c 2d 63 6f 6d 70 6c 65 74 69 6f 6e 73 27 20 75 73 69 6e 67 oint)..."`all-completions'.using
ac60 20 70 72 65 73 63 69 65 6e 74 2e 65 6c 2e 0a 0a 53 54 52 49 4e 47 20 69 73 20 74 68 65 20 69 6e .prescient.el...STRING.is.the.in
ac80 70 75 74 2e 20 54 41 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 put..TABLE.is.a.completion.table
aca0 2e 20 50 52 45 44 20 69 73 20 61 0a 70 72 65 64 69 63 61 74 65 20 74 68 61 74 20 66 75 72 74 68 ..PRED.is.a.predicate.that.furth
acc0 65 72 20 72 65 73 74 72 69 63 74 73 20 74 68 65 20 6d 61 74 63 68 69 6e 67 20 63 61 6e 64 69 64 er.restricts.the.matching.candid
ace0 61 74 65 73 2e 20 50 4f 49 4e 54 0a 77 6f 75 6c 64 20 62 65 20 74 68 65 20 63 75 72 72 65 6e 74 ates..POINT.would.be.the.current
ad00 20 70 6f 69 6e 74 2c 20 62 75 74 20 69 74 20 69 73 20 6e 6f 74 20 75 73 65 64 20 62 79 20 74 68 .point,.but.it.is.not.used.by.th
ad20 69 73 20 66 75 6e 63 74 69 6f 6e 2e 0a 53 65 65 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 60 61 is.function..See.the.function.`a
ad40 6c 6c 2d 63 6f 6d 70 6c 65 74 69 6f 6e 73 27 20 66 6f 72 20 6d 6f 72 65 20 69 6e 66 6f 72 6d 61 ll-completions'.for.more.informa
ad60 74 69 6f 6e 2e 0a 0a 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 61 20 6c tion...This.function.returns.a.l
ad80 69 73 74 20 6f 66 20 63 6f 6d 70 6c 65 74 69 6f 6e 73 20 77 68 6f 73 65 20 66 69 6e 61 6c 20 60 ist.of.completions.whose.final.`
ada0 63 64 72 27 20 69 73 0a 74 68 65 20 6c 65 6e 67 74 68 20 6f 66 20 74 68 65 20 70 72 65 66 69 78 cdr'.is.the.length.of.the.prefix
adc0 20 73 74 72 69 6e 67 20 75 73 65 64 20 66 6f 72 20 63 6f 6d 70 6c 65 74 69 6f 6e 20 28 77 68 69 .string.used.for.completion.(whi
ade0 63 68 20 6d 69 67 68 74 0a 62 65 20 61 6c 6c 20 6f 72 20 6a 75 73 74 20 70 61 72 74 20 6f 66 20 ch.might.be.all.or.just.part.of.
ae00 53 54 52 49 4e 47 29 2e 0a 0a 57 68 65 6e 20 60 63 6f 6d 70 6c 65 74 69 6f 6e 2d 6c 61 7a 79 2d STRING)...When.`completion-lazy-
ae20 68 69 6c 69 74 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 hilit'.is.bound.and.non-nil,.the
ae40 6e 20 74 68 69 73 0a 66 75 6e 63 74 69 6f 6e 20 73 65 74 73 20 60 63 6f 6d 70 6c 65 74 69 6f 6e n.this.function.sets.`completion
ae60 2d 6c 61 7a 79 2d 68 69 6c 69 74 2d 66 6e 27 2e 20 4f 74 68 65 72 77 69 73 65 2c 20 69 66 0a 60 -lazy-hilit-fn'..Otherwise,.if.`
ae80 70 72 65 73 63 69 65 6e 74 2d 63 6f 6d 70 6c 65 74 69 6f 6e 2d 68 69 67 68 6c 69 67 68 74 2d 6d prescient-completion-highlight-m
aea0 61 74 63 68 65 73 27 20 69 73 20 6e 6f 6e 2d 6e 69 6c 2c 20 74 68 69 73 0a 66 75 6e 63 74 69 6f atches'.is.non-nil,.this.functio
aec0 6e 20 70 72 6f 70 65 72 74 69 7a 65 73 20 61 6c 6c 20 6f 66 20 74 68 65 20 72 65 74 75 72 6e 65 n.propertizes.all.of.the.returne
aee0 64 20 63 6f 6d 70 6c 65 74 69 6f 6e 73 20 75 73 69 6e 67 20 74 68 65 0a 66 61 63 65 20 60 70 72 d.completions.using.the.face.`pr
af00 65 73 63 69 65 6e 74 2d 70 72 69 6d 61 72 79 2d 68 69 67 68 6c 69 67 68 74 27 20 61 6e 64 20 74 escient-primary-highlight'.and.t
af20 68 65 20 66 61 63 65 0a 60 70 72 65 73 63 69 65 6e 74 2d 73 65 63 6f 6e 64 61 72 79 2d 68 69 67 he.face.`prescient-secondary-hig
af40 68 6c 69 67 68 74 27 2e 22 0a 20 20 3b 3b 20 60 70 6f 69 6e 74 27 20 69 73 20 61 20 72 65 71 75 hlight'."...;;.`point'.is.a.requ
af60 69 72 65 64 20 61 72 67 75 6d 65 6e 74 2c 20 62 75 74 20 75 6e 6e 65 65 64 65 64 20 68 65 72 65 ired.argument,.but.unneeded.here
af80 2e 0a 20 20 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 ....(when-let.((completions.(pre
afa0 73 63 69 65 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 scient-filter.string.table.pred)
afc0 29 29 0a 20 20 20 20 28 70 63 61 73 65 2d 6c 65 74 2a 20 28 28 60 28 2c 70 72 65 66 69 78 20 2e )).....(pcase-let*.((`(,prefix..
afe0 20 2c 70 61 74 74 65 72 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 .,pattern)...................(pr
b000 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 20 73 74 72 69 escient--prefix-and-pattern.stri
b020 6e 67 20 74 61 62 6c 65 20 70 72 65 64 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ng.table.pred)).................
b040 20 28 6d 61 79 62 65 2d 68 69 67 68 6c 69 67 68 74 65 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 .(maybe-highlighted.............
b060 20 20 20 20 20 20 28 63 6f 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 ......(cond....................(
b080 28 62 6f 75 6e 64 2d 61 6e 64 2d 74 72 75 65 2d 70 20 63 6f 6d 70 6c 65 74 69 6f 6e 2d 6c 61 7a (bound-and-true-p.completion-laz
b0a0 79 2d 68 69 6c 69 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 y-hilit).....................(se
b0c0 74 71 20 63 6f 6d 70 6c 65 74 69 6f 6e 2d 6c 61 7a 79 2d 68 69 6c 69 74 2d 66 6e 0a 20 20 20 20 tq.completion-lazy-hilit-fn.....
b0e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 70 70 6c 79 2d 70 61 72 ......................(apply-par
b100 74 69 61 6c 6c 79 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 tially..........................
b120 20 20 23 27 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 64 61 ..#'prescient--highlight-candida
b140 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 20 20 20 28 70 te............................(p
b160 72 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 rescient-filter-regexps.pattern.
b180 27 77 69 74 68 2d 67 72 6f 75 70 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 'with-group)....................
b1a0 20 20 20 20 20 20 20 20 28 70 72 65 73 63 69 65 6e 74 2d 69 67 6e 6f 72 65 2d 63 61 73 65 2d 70 ........(prescient-ignore-case-p
b1c0 20 70 61 74 74 65 72 6e 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .pattern))).....................
b1e0 63 6f 6d 70 6c 65 74 69 6f 6e 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 completions)....................
b200 28 70 72 65 73 63 69 65 6e 74 2d 63 6f 6d 70 6c 65 74 69 6f 6e 2d 68 69 67 68 6c 69 67 68 74 2d (prescient-completion-highlight-
b220 6d 61 74 63 68 65 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 65 matches.....................(pre
b240 73 63 69 65 6e 74 2d 2d 68 69 67 68 6c 69 67 68 74 2d 63 61 6e 64 69 64 61 74 65 73 20 70 61 74 scient--highlight-candidates.pat
b260 74 65 72 6e 20 63 6f 6d 70 6c 65 74 69 6f 6e 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 tern.completions))..............
b280 20 20 20 20 20 20 28 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6d ......(t.....................com
b2a0 70 6c 65 74 69 6f 6e 73 29 29 29 29 0a 20 20 20 20 20 20 28 6e 63 6f 6e 63 20 6d 61 79 62 65 2d pletions)))).......(nconc.maybe-
b2c0 68 69 67 68 6c 69 67 68 74 65 64 20 28 6c 65 6e 67 74 68 20 70 72 65 66 69 78 29 29 29 29 29 0a highlighted.(length.prefix))))).
b2e0 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
b300 2d 74 72 79 2d 63 6f 6d 70 6c 65 74 69 6f 6e 20 28 73 74 72 69 6e 67 20 74 61 62 6c 65 20 26 6f -try-completion.(string.table.&o
b320 70 74 69 6f 6e 61 6c 20 70 72 65 64 20 70 6f 69 6e 74 29 0a 20 20 22 60 74 72 79 2d 63 6f 6d 70 ptional.pred.point)..."`try-comp
b340 6c 65 74 69 6f 6e 27 20 75 73 69 6e 67 20 50 72 65 73 63 69 65 6e 74 2e 0a 0a 53 54 52 49 4e 47 letion'.using.Prescient...STRING
b360 20 69 73 20 74 68 65 20 69 6e 70 75 74 2e 20 20 54 41 42 4c 45 20 69 73 20 61 20 63 6f 6d 70 6c .is.the.input...TABLE.is.a.compl
b380 65 74 69 6f 6e 20 74 61 62 6c 65 2e 20 20 50 52 45 44 20 69 73 20 61 0a 70 72 65 64 69 63 61 74 etion.table...PRED.is.a.predicat
b3a0 65 2e 20 20 50 4f 49 4e 54 20 69 73 20 74 68 65 20 63 75 72 72 65 6e 74 20 70 6f 69 6e 74 2e 20 e...POINT.is.the.current.point..
b3c0 20 53 65 65 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 0a 60 74 72 79 2d 63 6f 6d 70 6c 65 74 69 6f .See.the.function.`try-completio
b3e0 6e 27 20 66 6f 72 20 6d 6f 72 65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0a 0a 49 66 20 74 68 65 n'.for.more.information...If.the
b400 72 65 20 61 72 65 20 6e 6f 20 6d 61 74 63 68 65 73 2c 20 74 68 69 73 20 66 75 6e 63 74 69 6f 6e re.are.no.matches,.this.function
b420 20 72 65 74 75 72 6e 73 20 6e 69 6c 2e 20 49 66 20 74 68 65 20 6f 6e 6c 79 0a 6d 61 74 63 68 20 .returns.nil..If.the.only.match.
b440 65 71 75 61 6c 73 20 53 54 52 49 4e 47 2c 20 74 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 equals.STRING,.this.function.ret
b460 75 72 6e 73 20 74 2e 20 4f 74 68 65 72 77 69 73 65 2c 20 74 68 69 73 0a 66 75 6e 63 74 69 6f 6e urns.t..Otherwise,.this.function
b480 20 72 65 74 75 72 6e 73 20 61 20 63 6f 6e 73 20 63 65 6c 6c 20 6f 66 20 74 68 65 20 63 6f 6d 70 .returns.a.cons.cell.of.the.comp
b4a0 6c 65 74 65 64 20 73 74 72 69 6e 67 20 61 6e 64 20 69 74 73 0a 6c 65 6e 67 74 68 2e 20 49 66 20 leted.string.and.its.length..If.
b4c0 74 68 65 72 65 20 69 73 20 6d 6f 72 65 20 74 68 61 6e 20 6f 6e 65 20 6d 61 74 63 68 2c 20 74 68 there.is.more.than.one.match,.th
b4e0 61 74 20 63 6f 6d 70 6c 65 74 65 64 20 73 74 72 69 6e 67 20 69 73 0a 61 63 74 75 61 6c 6c 79 20 at.completed.string.is.actually.
b500 6a 75 73 74 20 74 68 65 20 69 6e 70 75 74 2c 20 69 6e 20 77 68 69 63 68 20 63 61 73 65 20 6e 6f just.the.input,.in.which.case.no
b520 74 68 69 6e 67 20 68 61 70 70 65 6e 73 2e 22 0a 20 20 28 77 68 65 6e 2d 6c 65 74 20 28 28 63 6f thing.happens."...(when-let.((co
b540 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
b560 6e 67 20 74 61 62 6c 65 20 70 72 65 64 29 29 29 0a 20 20 20 20 28 69 66 20 28 63 64 72 20 63 6f ng.table.pred))).....(if.(cdr.co
b580 6d 70 6c 65 74 69 6f 6e 73 29 0a 20 20 20 20 20 20 20 20 28 63 6f 6e 73 20 73 74 72 69 6e 67 20 mpletions).........(cons.string.
b5a0 70 6f 69 6e 74 29 20 3b 20 4d 75 6c 74 69 70 6c 65 20 6d 61 74 63 68 65 73 0a 20 20 20 20 20 20 point).;.Multiple.matches.......
b5c0 28 6c 65 74 20 28 28 6d 61 74 63 68 20 28 63 61 72 20 63 6f 6d 70 6c 65 74 69 6f 6e 73 29 29 29 (let.((match.(car.completions)))
b5e0 0a 20 20 20 20 20 20 20 20 28 69 66 20 28 65 71 75 61 6c 20 73 74 72 69 6e 67 20 6d 61 74 63 68 .........(if.(equal.string.match
b600 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 20 3b 20 4c 69 74 65 72 61 6c 20 69 6e 70 75 74 20 ).............t.;.Literal.input.
b620 65 71 75 61 6c 73 20 6f 6e 6c 79 20 6d 61 74 63 68 2e 0a 20 20 20 20 20 20 20 20 20 20 3b 3b 20 equals.only.match............;;.
b640 4f 74 68 65 72 77 69 73 65 2c 20 72 65 74 75 72 6e 20 74 68 65 20 6d 61 74 63 68 20 61 6e 64 20 Otherwise,.return.the.match.and.
b660 6d 6f 76 65 20 70 6f 69 6e 74 20 74 6f 20 69 74 73 20 65 6e 64 2e 0a 20 20 20 20 20 20 20 20 20 move.point.to.its.end...........
b680 20 28 6c 65 74 2a 20 28 28 70 72 65 66 69 78 20 28 63 61 72 20 28 70 72 65 73 63 69 65 6e 74 2d .(let*.((prefix.(car.(prescient-
b6a0 2d 70 72 65 66 69 78 2d 61 6e 64 2d 70 61 74 74 65 72 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 -prefix-and-pattern.............
b6c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 74 61 62 6c 65 20 ...................string.table.
b6e0 70 72 65 64 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 75 6c 6c 20 28 pred)))..................(full.(
b700 63 6f 6e 63 61 74 20 70 72 65 66 69 78 20 6d 61 74 63 68 29 29 29 0a 20 20 20 20 20 20 20 20 20 concat.prefix.match)))..........
b720 20 20 20 28 63 6f 6e 73 20 66 75 6c 6c 20 28 6c 65 6e 67 74 68 20 66 75 6c 6c 29 29 29 29 29 29 ...(cons.full.(length.full))))))
b740 29 29 0a 0a 3b 3b 3b 3b 3b 20 53 65 74 74 69 6e 67 20 75 70 20 74 68 65 20 63 6f 6d 70 6c 65 74 ))..;;;;;.Setting.up.the.complet
b760 69 6f 6e 20 73 74 79 6c 65 0a 0a 3b 3b 3b 23 23 23 61 75 74 6f 6c 6f 61 64 0a 28 61 64 64 2d 74 ion.style..;;;###autoload.(add-t
b780 6f 2d 6c 69 73 74 0a 20 27 63 6f 6d 70 6c 65 74 69 6f 6e 2d 73 74 79 6c 65 73 2d 61 6c 69 73 74 o-list..'completion-styles-alist
b7a0 0a 20 27 28 20 70 72 65 73 63 69 65 6e 74 20 70 72 65 73 63 69 65 6e 74 2d 74 72 79 2d 63 6f 6d ..'(.prescient.prescient-try-com
b7c0 70 6c 65 74 69 6f 6e 20 70 72 65 73 63 69 65 6e 74 2d 61 6c 6c 2d 63 6f 6d 70 6c 65 74 69 6f 6e pletion.prescient-all-completion
b7e0 73 0a 20 20 20 20 22 46 69 6c 74 65 72 69 6e 67 20 75 73 69 6e 67 20 70 72 65 73 63 69 65 6e 74 s....."Filtering.using.prescient
b800 2e 65 6c 2e 0a 46 6f 72 20 73 6f 72 74 69 6e 67 2c 20 73 65 65 20 74 68 65 20 66 75 6e 63 74 69 .el..For.sorting,.see.the.functi
b820 6f 6e 20 60 70 72 65 73 63 69 65 6e 74 2d 63 6f 6d 70 6c 65 74 69 6f 6e 2d 73 6f 72 74 27 2e 22 on.`prescient-completion-sort'."
b840 29 29 0a 0a 3b 3b 3b 3b 3b 20 43 6f 6d 70 6f 6e 65 6e 74 20 66 75 6e 63 74 69 6f 6e 73 20 66 6f ))..;;;;;.Component.functions.fo
b860 72 20 63 6f 6d 70 6c 65 74 69 6f 6e 2d 73 74 79 6c 65 20 6d 69 6e 6f 72 20 6d 6f 64 65 73 0a 0a r.completion-style.minor.modes..
b880 3b 3b 20 54 68 65 73 65 20 66 75 6e 63 74 69 6f 6e 73 20 61 72 65 20 75 73 65 64 20 74 6f 20 69 ;;.These.functions.are.used.to.i
b8a0 6d 70 6c 65 6d 65 6e 74 20 74 68 65 20 69 6e 74 65 67 72 61 74 69 6f 6e 20 70 61 63 6b 61 67 65 mplement.the.integration.package
b8c0 73 0a 3b 3b 20 66 6f 72 20 43 6f 72 66 75 20 61 6e 64 20 56 65 72 74 69 63 6f 2c 20 77 68 69 63 s.;;.for.Corfu.and.Vertico,.whic
b8e0 68 20 75 73 65 20 63 6f 6d 70 6c 65 74 69 6f 6e 20 73 74 79 6c 65 73 2e 0a 0a 28 64 65 66 63 6f h.use.completion.styles...(defco
b900 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 72 65 63 6f 6d 6d nst.prescient--completion-recomm
b920 65 6e 64 65 64 2d 73 74 79 6c 65 73 20 27 28 70 72 65 73 63 69 65 6e 74 20 62 61 73 69 63 29 0a ended-styles.'(prescient.basic).
b940 20 20 22 52 65 63 6f 6d 6d 65 6e 64 65 64 20 63 6f 6d 70 6c 65 74 69 6f 6e 73 20 73 74 79 6c 65 .."Recommended.completions.style
b960 73 20 66 6f 72 20 75 73 69 6e 67 20 60 70 72 65 73 63 69 65 6e 74 27 2e 22 29 0a 0a 28 64 65 66 s.for.using.`prescient'.")..(def
b980 63 6f 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 72 65 63 6f const.prescient--completion-reco
b9a0 6d 6d 65 6e 64 65 64 2d 6f 76 65 72 72 69 64 65 73 0a 20 20 27 28 3b 3b 20 49 6e 63 6c 75 64 65 mmended-overrides...'(;;.Include
b9c0 20 60 70 61 72 74 69 61 6c 2d 63 6f 6d 70 6c 65 74 69 6f 6e 27 20 74 6f 20 65 6e 61 62 6c 65 20 .`partial-completion'.to.enable.
b9e0 77 69 6c 64 63 61 72 64 73 20 61 6e 64 0a 20 20 20 20 3b 3b 20 70 61 72 74 69 61 6c 20 70 61 74 wildcards.and.....;;.partial.pat
ba00 68 73 2e 0a 20 20 20 20 28 66 69 6c 65 20 28 73 74 79 6c 65 73 20 62 61 73 69 63 20 70 61 72 74 hs......(file.(styles.basic.part
ba20 69 61 6c 2d 63 6f 6d 70 6c 65 74 69 6f 6e 29 29 0a 20 20 20 20 3b 3b 20 45 67 6c 6f 74 20 66 6f ial-completion)).....;;.Eglot.fo
ba40 72 63 65 73 20 60 66 6c 65 78 27 20 62 79 20 64 65 66 61 75 6c 74 2e 0a 20 20 20 20 28 65 67 6c rces.`flex'.by.default......(egl
ba60 6f 74 20 28 73 74 79 6c 65 73 20 70 72 65 73 63 69 65 6e 74 20 62 61 73 69 63 29 29 29 0a 20 20 ot.(styles.prescient.basic)))...
ba80 22 52 65 63 6f 6d 6d 65 6e 64 65 64 20 63 6f 6d 70 6c 65 74 69 6f 6e 2d 63 61 74 65 67 6f 72 79 "Recommended.completion-category
baa0 20 6f 76 65 72 72 69 64 65 73 20 66 6f 72 20 75 73 69 6e 67 20 70 72 65 73 63 69 65 6e 74 2e 22 .overrides.for.using.prescient."
bac0 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 6f 6d 70 6c 65 74 69 )..(defconst.prescient--completi
bae0 6f 6e 2d 73 65 74 74 69 6e 67 73 2d 76 61 72 73 0a 20 20 27 28 20 63 6f 6d 70 6c 65 74 69 6f 6e on-settings-vars...'(.completion
bb00 2d 73 74 79 6c 65 73 20 63 6f 6d 70 6c 65 74 69 6f 6e 2d 63 61 74 65 67 6f 72 79 2d 6f 76 65 72 -styles.completion-category-over
bb20 72 69 64 65 73 0a 20 20 20 20 20 63 6f 6d 70 6c 65 74 69 6f 6e 2d 63 61 74 65 67 6f 72 79 2d 64 rides......completion-category-d
bb40 65 66 61 75 6c 74 73 29 0a 20 20 22 56 61 72 69 61 62 6c 65 73 20 74 68 61 74 20 61 72 65 20 63 efaults)..."Variables.that.are.c
bb60 68 61 6e 67 65 64 20 74 6f 20 63 6f 6e 66 69 67 75 72 65 20 66 69 6c 74 65 72 69 6e 67 2e 22 29 hanged.to.configure.filtering.")
bb80 0a 0a 28 64 65 66 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 ..(defvar.prescient--completion-
bba0 6f 6c 64 2d 73 74 79 6c 65 73 20 6e 69 6c 0a 20 20 22 50 72 65 76 69 6f 75 73 20 76 61 6c 75 65 old-styles.nil..."Previous.value
bbc0 20 6f 66 20 60 63 6f 6d 70 6c 65 74 69 6f 6e 2d 73 74 79 6c 65 73 27 2e 22 29 0a 0a 28 64 65 66 .of.`completion-styles'.")..(def
bbe0 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 6f 6c 64 2d 6f 76 var.prescient--completion-old-ov
bc00 65 72 72 69 64 65 73 20 6e 69 6c 0a 20 20 22 50 72 65 76 69 6f 75 73 20 76 61 6c 75 65 20 6f 66 errides.nil..."Previous.value.of
bc20 20 60 63 6f 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 27 .`completion-category-overrides'
bc40 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 70 6c 65 74 69 .")..(defvar.prescient--completi
bc60 6f 6e 2d 6f 6c 64 2d 64 65 66 61 75 6c 74 73 20 6e 69 6c 0a 20 20 22 50 72 65 76 69 6f 75 73 20 on-old-defaults.nil..."Previous.
bc80 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 6f 72 79 2d 64 65 value.of.`completion-category-de
bca0 66 61 75 6c 74 73 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 faults'.")..(defconst.prescient-
bcc0 2d 63 6f 6d 70 6c 65 74 69 6f 6e 2d 6f 6c 64 2d 76 61 72 73 0a 20 20 27 28 20 70 72 65 73 63 69 -completion-old-vars...'(.presci
bce0 65 6e 74 2d 2d 63 6f 6d 70 6c 65 74 69 6f 6e 2d 6f 6c 64 2d 73 74 79 6c 65 73 0a 20 20 20 20 20 ent--completion-old-styles......
bd00 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 6f 76 65 72 72 69 prescient--completion-old-overri
bd20 64 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 69 6f 6e 2d 6f des......prescient--completion-o
bd40 6c 64 2d 64 65 66 61 75 6c 74 73 29 0a 20 20 22 56 61 72 69 61 62 6c 65 73 20 75 73 65 64 20 74 ld-defaults)..."Variables.used.t
bd60 6f 20 73 74 6f 72 65 20 6f 6c 64 20 73 65 74 74 69 6e 67 73 2e 22 29 0a 0a 28 63 6c 2d 64 65 66 o.store.old.settings.")..(cl-def
bd80 75 6e 20 70 72 65 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 un.prescient--completion-apply-c
bda0 6f 6d 70 6c 65 74 69 6f 6e 2d 73 65 74 74 69 6e 67 73 0a 20 20 20 20 28 26 6b 65 79 20 28 73 74 ompletion-settings.....(&key.(st
bdc0 79 6c 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 72 65 63 6f 6d yles.prescient--completion-recom
bde0 6d 65 6e 64 65 64 2d 73 74 79 6c 65 73 29 0a 20 20 20 20 20 20 20 20 20 20 28 6f 76 65 72 72 69 mended-styles)...........(overri
be00 64 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 72 65 63 6f 6d 6d des.prescient--completion-recomm
be20 65 6e 64 65 64 2d 6f 76 65 72 72 69 64 65 73 29 29 0a 20 20 22 4d 6f 64 69 66 79 20 74 68 65 20 ended-overrides))..."Modify.the.
be40 75 73 65 72 20 6f 70 74 69 6f 6e 73 20 61 6e 64 20 76 61 72 69 61 62 6c 65 73 2e 0a 0a 53 54 59 user.options.and.variables...STY
be60 4c 45 53 20 69 73 20 74 68 65 20 6e 65 77 20 60 63 6f 6d 70 6c 65 74 69 6f 6e 2d 73 74 79 6c 65 LES.is.the.new.`completion-style
be80 73 27 2e 20 4f 56 45 52 52 49 44 45 53 20 69 73 20 6e 65 77 0a 6f 76 65 72 72 69 64 65 73 20 66 s'..OVERRIDES.is.new.overrides.f
bea0 6f 72 20 60 63 6f 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 or.`completion-category-override
bec0 73 27 2e 0a 60 63 6f 6d 70 6c 65 74 69 6f 6e 2d 63 61 74 65 67 6f 72 79 2d 64 65 66 61 75 6c 74 s'..`completion-category-default
bee0 73 27 20 69 73 20 73 65 74 20 74 6f 20 6e 69 6c 2e 20 54 68 65 73 65 20 76 61 72 69 61 62 6c 65 s'.is.set.to.nil..These.variable
bf00 73 0a 61 72 65 20 6c 69 73 74 65 64 20 69 6e 20 60 70 72 65 73 63 69 65 6e 74 2d 2d 63 6f 6d 70 s.are.listed.in.`prescient--comp
bf20 6c 65 74 69 6f 6e 2d 73 65 74 74 69 6e 67 73 2d 76 61 72 73 27 2e 0a 0a 57 68 69 6c 65 20 74 68 letion-settings-vars'...While.th
bf40 65 72 65 20 61 72 65 20 72 65 63 6f 6d 6d 65 6e 64 65 64 20 73 65 74 74 69 6e 67 73 2c 20 74 68 ere.are.recommended.settings,.th
bf60 65 73 65 20 63 61 6e 20 62 65 20 6f 76 65 72 72 69 64 64 65 6e 20 62 79 0a 75 73 65 72 20 6f 70 ese.can.be.overridden.by.user.op
bf80 74 69 6f 6e 73 20 69 6e 20 74 68 65 20 65 78 74 65 6e 73 69 6f 6e 20 70 61 63 6b 61 67 65 73 2e tions.in.the.extension.packages.
bfa0 22 0a 20 20 28 73 65 74 71 20 63 6f 6d 70 6c 65 74 69 6f 6e 2d 73 74 79 6c 65 73 20 73 74 79 6c "...(setq.completion-styles.styl
bfc0 65 73 0a 20 20 20 20 20 20 20 20 63 6f 6d 70 6c 65 74 69 6f 6e 2d 63 61 74 65 67 6f 72 79 2d 64 es.........completion-category-d
bfe0 65 66 61 75 6c 74 73 20 6e 69 6c 29 0a 0a 20 20 28 63 6c 2d 73 79 6d 62 6f 6c 2d 6d 61 63 72 6f efaults.nil)....(cl-symbol-macro
c000 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 2d 6f 76 65 let.......((category-setting-ove
c020 72 72 69 64 65 73 0a 20 20 20 20 20 20 20 20 28 61 6c 69 73 74 2d 67 65 74 20 73 65 74 74 69 6e rrides.........(alist-get.settin
c040 67 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 6c 69 73 74 2d 67 65 74 20 g....................(alist-get.
c060 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 72 79 2d 6f 76 65 category.completion-category-ove
c080 72 72 69 64 65 73 29 29 29 29 0a 20 20 20 20 28 63 6c 2d 6c 6f 6f 70 20 66 6f 72 20 28 63 61 74 rrides)))).....(cl-loop.for.(cat
c0a0 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 20 20 20 20 20 egory...overrides)..............
c0c0 69 6e 20 6f 76 65 72 72 69 64 65 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 20 28 63 6c in.overrides..............do.(cl
c0e0 2d 6c 6f 6f 70 20 66 6f 72 20 28 73 65 74 74 69 6e 67 20 2e 20 76 61 6c 75 65 73 29 20 69 6e 20 -loop.for.(setting...values).in.
c100 6f 76 65 72 72 69 64 65 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 overrides.......................
c120 20 20 20 64 6f 20 28 73 65 74 66 20 63 61 74 65 67 6f 72 79 2d 73 65 74 74 69 6e 67 2d 6f 76 65 ...do.(setf.category-setting-ove
c140 72 72 69 64 65 73 20 76 61 6c 75 65 73 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 70 72 65 73 63 rrides.values)))))..(defun.presc
c160 69 65 6e 74 2d 2d 63 6f 6d 70 6c 65 74 69 6f 6e 2d 73 61 76 65 2d 63 6f 6d 70 6c 65 74 69 6f 6e ient--completion-save-completion
c180 2d 73 65 74 74 69 6e 67 73 20 28 29 0a 20 20 22 53 61 76 65 20 74 68 65 20 6f 6c 64 20 63 6f 6d -settings.()..."Save.the.old.com
c1a0 70 6c 65 74 69 6f 6e 20 66 69 6c 74 65 72 69 6e 67 20 73 65 74 74 69 6e 67 73 2e 0a 0a 56 61 6c pletion.filtering.settings...Val
c1c0 75 65 73 20 61 72 65 20 73 61 76 65 64 20 69 6e 20 60 70 72 65 73 63 69 65 6e 74 2d 2d 63 6f 6d ues.are.saved.in.`prescient--com
c1e0 70 6c 65 74 69 6f 6e 2d 6f 6c 64 2d 73 74 79 6c 65 73 27 2c 0a 60 70 72 65 73 63 69 65 6e 74 2d pletion-old-styles',.`prescient-
c200 2d 63 6f 6d 70 6c 65 74 69 6f 6e 2d 6f 6c 64 2d 64 65 66 61 75 6c 74 73 27 2c 20 61 6e 64 0a 60 -completion-old-defaults',.and.`
c220 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 6f 76 65 72 72 69 prescient--completion-old-overri
c240 64 65 73 27 2c 20 77 68 69 63 68 20 61 72 65 20 6c 69 73 74 65 64 20 69 6e 0a 60 70 72 65 73 63 des',.which.are.listed.in.`presc
c260 69 65 6e 74 2d 2d 63 6f 6d 70 6c 65 74 69 6f 6e 2d 6f 6c 64 2d 76 61 72 73 27 2e 22 0a 20 20 28 ient--completion-old-vars'."...(
c280 73 65 74 71 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 setq.prescient--completion-old-s
c2a0 74 79 6c 65 73 20 63 6f 6d 70 6c 65 74 69 6f 6e 2d 73 74 79 6c 65 73 0a 20 20 20 20 20 20 20 20 tyles.completion-styles.........
c2c0 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 64 65 66 61 75 6c prescient--completion-old-defaul
c2e0 74 73 20 63 6f 6d 70 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 ts.completion-category-defaults)
c300 0a 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 ....(cl-symbol-macrolet.......((
c320 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 0a 20 20 20 20 20 category-setting-overrides......
c340 20 20 20 28 61 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 ...(alist-get.setting...........
c360 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 6d .........(alist-get.category.com
c380 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 20 pletion-category-overrides))))..
c3a0 20 20 20 28 73 65 74 71 20 70 72 65 73 63 69 65 6e 74 2d 2d 63 6f 6d 70 6c 65 74 69 6f 6e 2d 6f ...(setq.prescient--completion-o
c3c0 6c 64 2d 6f 76 65 72 72 69 64 65 73 0a 20 20 20 20 20 20 20 20 20 20 28 63 6c 2d 6c 6f 6f 70 0a ld-overrides...........(cl-loop.
c3e0 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 28 63 61 74 65 67 6f 72 79 20 2e 20 6f 76 65 72 72 ...........for.(category...overr
c400 69 64 65 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 69 6e 20 70 72 65 73 63 69 65 6e 74 2d 2d 63 ides)............in.prescient--c
c420 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.
c440 20 20 20 20 20 20 20 20 20 20 20 63 6f 6c 6c 65 63 74 0a 20 20 20 20 20 20 20 20 20 20 20 60 28 ...........collect............`(
c460 2c 63 61 74 65 67 6f 72 79 20 2c 40 28 63 6c 2d 6c 6f 6f 70 0a 20 20 20 20 20 20 20 20 20 20 20 ,category.,@(cl-loop............
c480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 28 73 65 74 74 69 6e 67 20 2e 20 5f 29 ...............for.(setting..._)
c4a0 20 69 6e 20 6f 76 65 72 72 69 64 65 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .in.overrides...................
c4c0 20 20 20 20 20 20 20 20 63 6f 6c 6c 65 63 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ........collect.................
c4e0 20 20 20 20 20 20 20 20 20 20 60 28 2c 73 65 74 74 69 6e 67 20 2c 40 63 61 74 65 67 6f 72 79 2d ..........`(,setting.,@category-
c500 73 65 74 74 69 6e 67 2d 6f 76 65 72 72 69 64 65 73 29 29 29 29 29 29 29 0a 0a 28 63 6c 2d 64 65 setting-overrides)))))))..(cl-de
c520 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 2d 72 65 73 74 6f 72 fun.prescient--completion-restor
c540 65 2d 63 6f 6d 70 6c 65 74 69 6f 6e 2d 73 65 74 74 69 6e 67 73 0a 20 20 20 20 28 26 6b 65 79 20 e-completion-settings.....(&key.
c560 28 73 74 79 6c 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 72 65 (styles.prescient--completion-re
c580 63 6f 6d 6d 65 6e 64 65 64 2d 73 74 79 6c 65 73 29 0a 20 20 20 20 20 20 20 20 20 20 28 6f 76 65 commended-styles)...........(ove
c5a0 72 72 69 64 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 72 65 63 rrides.prescient--completion-rec
c5c0 6f 6d 6d 65 6e 64 65 64 2d 6f 76 65 72 72 69 64 65 73 29 29 0a 20 20 22 52 65 73 74 6f 72 65 20 ommended-overrides))..."Restore.
c5e0 74 68 65 20 6f 6c 64 20 73 65 74 74 69 6e 67 73 2e 0a 0a 53 54 59 4c 45 53 20 69 73 20 77 68 61 the.old.settings...STYLES.is.wha
c600 74 20 60 63 6f 6d 70 6c 65 74 69 6f 6e 2d 73 74 79 6c 65 73 27 20 77 61 73 20 63 68 61 6e 67 65 t.`completion-styles'.was.change
c620 64 20 74 6f 2e 20 4f 56 45 52 52 49 44 45 53 20 61 72 65 0a 74 68 65 20 6f 76 65 72 72 69 64 65 d.to..OVERRIDES.are.the.override
c640 73 20 74 68 61 74 20 77 65 72 65 20 63 68 61 6e 67 65 64 20 69 6e 20 60 63 6f 6d 70 6c 65 74 69 s.that.were.changed.in.`completi
c660 6f 6e 2d 63 61 74 65 67 6f 72 79 2d 6f 76 65 72 72 69 64 65 73 27 2e 0a 0a 49 66 20 74 68 65 20 on-category-overrides'...If.the.
c680 63 75 72 72 65 6e 74 20 76 61 6c 75 65 73 20 6f 66 20 74 68 65 20 73 65 74 74 69 6e 67 73 20 76 current.values.of.the.settings.v
c6a0 61 72 69 61 62 6c 65 73 20 64 6f 20 6e 6f 74 20 6d 61 74 63 68 20 74 68 65 0a 63 68 61 6e 67 65 ariables.do.not.match.the.change
c6c0 73 20 6d 61 64 65 20 62 79 20 60 70 72 65 73 63 69 65 6e 74 2d 2d 63 6f 6d 70 6c 65 74 69 6f 6e s.made.by.`prescient--completion
c6e0 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 27 2c 0a 74 68 65 -apply-completion-settings',.the
c700 6e 20 77 65 20 64 6f 6e 27 74 20 72 65 73 74 6f 72 65 20 74 68 65 20 70 72 65 76 69 6f 75 73 20 n.we.don't.restore.the.previous.
c720 76 61 6c 75 65 73 20 61 6e 64 20 69 6e 73 74 65 61 64 20 6f 6e 6c 79 20 74 72 79 20 74 6f 0a 72 values.and.instead.only.try.to.r
c740 65 6d 6f 76 65 20 75 73 61 67 65 73 20 6f 66 20 74 68 65 20 60 70 72 65 73 63 69 65 6e 74 27 20 emove.usages.of.the.`prescient'.
c760 63 6f 6d 70 6c 65 74 69 6f 6e 20 73 74 79 6c 65 2e 22 0a 20 20 3b 3b 20 54 72 79 20 74 6f 20 72 completion.style."...;;.Try.to.r
c780 65 76 65 72 74 20 62 61 63 6b 20 74 6f 20 6f 6c 64 20 73 65 74 74 69 6e 67 73 2c 20 6f 72 20 61 evert.back.to.old.settings,.or.a
c7a0 74 20 6c 65 61 73 74 20 6e 6f 74 20 75 73 65 20 74 68 65 0a 20 20 3b 3b 20 60 70 72 65 73 63 69 t.least.not.use.the...;;.`presci
c7c0 65 6e 74 27 20 73 74 79 6c 65 2e 0a 20 20 28 69 66 20 28 65 71 75 61 6c 20 63 6f 6d 70 6c 65 74 ent'.style....(if.(equal.complet
c7e0 69 6f 6e 2d 73 74 79 6c 65 73 20 73 74 79 6c 65 73 29 0a 20 20 20 20 20 20 28 73 65 74 71 20 63 ion-styles.styles).......(setq.c
c800 6f 6d 70 6c 65 74 69 6f 6e 2d 73 74 79 6c 65 73 20 70 72 65 73 63 69 65 6e 74 2d 2d 63 6f 6d 70 ompletion-styles.prescient--comp
c820 6c 65 74 69 6f 6e 2d 6f 6c 64 2d 73 74 79 6c 65 73 29 0a 20 20 20 20 28 63 6c 2d 63 61 6c 6c 66 letion-old-styles).....(cl-callf
c840 32 20 72 65 6d 71 20 27 70 72 65 73 63 69 65 6e 74 20 63 6f 6d 70 6c 65 74 69 6f 6e 2d 73 74 79 2.remq.'prescient.completion-sty
c860 6c 65 73 29 29 0a 0a 20 20 28 63 6c 2d 6c 6f 6f 70 20 66 6f 72 20 28 6b 65 79 20 2e 20 76 61 6c les))....(cl-loop.for.(key...val
c880 29 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 6f 6c 64 2d 64 ).in.prescient--completion-old-d
c8a0 65 66 61 75 6c 74 73 0a 20 20 20 20 20 20 20 20 20 20 20 75 6e 6c 65 73 73 20 28 61 6c 69 73 74 efaults............unless.(alist
c8c0 2d 67 65 74 20 6b 65 79 20 63 6f 6d 70 6c 65 74 69 6f 6e 2d 63 61 74 65 67 6f 72 79 2d 64 65 66 -get.key.completion-category-def
c8e0 61 75 6c 74 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 64 6f 20 28 73 65 74 66 20 28 61 6c 69 73 aults)............do.(setf.(alis
c900 74 2d 67 65 74 20 6b 65 79 20 63 6f 6d 70 6c 65 74 69 6f 6e 2d 63 61 74 65 67 6f 72 79 2d 64 65 t-get.key.completion-category-de
c920 66 61 75 6c 74 73 29 20 76 61 6c 29 29 0a 0a 20 20 28 63 6c 2d 73 79 6d 62 6f 6c 2d 6d 61 63 72 faults).val))....(cl-symbol-macr
c940 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 2d 6f 76 olet.......((category-setting-ov
c960 65 72 72 69 64 65 73 0a 20 20 20 20 20 20 20 20 28 61 6c 69 73 74 2d 67 65 74 0a 20 20 20 20 20 errides.........(alist-get......
c980 20 20 20 20 73 65 74 74 69 6e 67 0a 20 20 20 20 20 20 20 20 20 28 61 6c 69 73 74 2d 67 65 74 20 ....setting..........(alist-get.
c9a0 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 72 79 2d 6f 76 65 category.completion-category-ove
c9c0 72 72 69 64 65 73 29 29 29 29 0a 20 20 20 20 28 63 6c 2d 6c 6f 6f 70 0a 20 20 20 20 20 3b 3b 20 rrides)))).....(cl-loop......;;.
c9e0 54 68 65 73 65 20 74 77 6f 20 74 72 65 65 73 20 73 68 6f 75 6c 64 20 68 61 76 65 20 74 68 65 20 These.two.trees.should.have.the.
ca00 73 61 6d 65 20 73 74 72 75 63 74 75 72 65 20 62 79 20 74 68 69 73 0a 20 20 20 20 20 3b 3b 20 70 same.structure.by.this......;;.p
ca20 6f 69 6e 74 2e 20 57 65 20 77 61 6e 74 20 74 6f 20 74 72 79 20 74 6f 20 61 76 6f 69 64 20 75 6e oint..We.want.to.try.to.avoid.un
ca40 64 6f 69 6e 67 20 61 6e 79 20 63 68 61 6e 67 65 73 20 74 68 61 74 20 77 65 72 65 0a 20 20 20 20 doing.any.changes.that.were.....
ca60 20 3b 3b 20 6d 61 64 65 20 61 66 74 65 72 20 74 68 65 20 6d 6f 64 65 20 77 61 73 20 65 6e 61 62 .;;.made.after.the.mode.was.enab
ca80 6c 65 64 2e 0a 20 20 20 20 20 66 6f 72 20 28 63 61 74 65 67 6f 72 79 20 2e 20 6e 65 77 2d 6f 76 led.......for.(category...new-ov
caa0 65 72 72 69 64 65 73 29 0a 20 20 20 20 20 69 6e 20 6f 76 65 72 72 69 64 65 73 0a 20 20 20 20 20 errides)......in.overrides......
cac0 66 6f 72 20 28 5f 20 2e 20 6f 6c 64 2d 6f 76 65 72 72 69 64 65 73 29 0a 20 20 20 20 20 69 6e 20 for.(_...old-overrides)......in.
cae0 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 6f 76 65 72 72 69 prescient--completion-old-overri
cb00 64 65 73 0a 20 20 20 20 20 64 6f 20 28 63 6c 2d 6c 6f 6f 70 0a 20 20 20 20 20 20 20 20 20 66 6f des......do.(cl-loop..........fo
cb20 72 20 28 73 65 74 74 69 6e 67 20 2e 20 6e 65 77 2d 76 61 6c 75 65 73 29 20 69 6e 20 6e 65 77 2d r.(setting...new-values).in.new-
cb40 6f 76 65 72 72 69 64 65 73 0a 20 20 20 20 20 20 20 20 20 66 6f 72 20 28 5f 20 2e 20 6f 6c 64 2d overrides..........for.(_...old-
cb60 76 61 6c 75 65 73 29 20 69 6e 20 6f 6c 64 2d 6f 76 65 72 72 69 64 65 73 0a 20 20 20 20 20 20 20 values).in.old-overrides........
cb80 20 20 69 66 20 28 65 71 75 61 6c 20 63 61 74 65 67 6f 72 79 2d 73 65 74 74 69 6e 67 2d 6f 76 65 ..if.(equal.category-setting-ove
cba0 72 72 69 64 65 73 20 6e 65 77 2d 76 61 6c 75 65 73 29 0a 20 20 20 20 20 20 20 20 20 64 6f 20 28 rrides.new-values)..........do.(
cbc0 73 65 74 66 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 setf.category-setting-overrides.
cbe0 6f 6c 64 2d 76 61 6c 75 65 73 29 0a 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 64 6f 20 28 63 6c old-values)..........else.do.(cl
cc00 2d 63 61 6c 6c 66 32 20 72 65 6d 71 20 27 70 72 65 73 63 69 65 6e 74 20 63 61 74 65 67 6f 72 79 -callf2.remq.'prescient.category
cc20 2d 73 65 74 74 69 6e 67 2d 6f 76 65 72 72 69 64 65 73 29 29 29 29 29 0a 0a 28 64 65 66 76 61 72 -setting-overrides)))))..(defvar
cc40 2d 6c 6f 63 61 6c 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 -local.prescient--completion-var
cc60 73 2d 61 6c 72 65 61 64 79 2d 6c 6f 63 61 6c 20 6e 69 6c 0a 20 20 22 56 61 72 69 61 62 6c 65 73 s-already-local.nil..."Variables
cc80 20 6f 66 20 69 6e 74 65 72 65 73 74 20 74 68 61 74 20 77 65 72 65 20 61 6c 72 65 61 64 79 20 62 .of.interest.that.were.already.b
cca0 75 66 66 65 72 20 6c 6f 63 61 6c 2e 0a 0a 45 78 74 65 6e 73 69 6f 6e 20 70 61 63 6b 61 67 65 73 uffer.local...Extension.packages
ccc0 20 6d 69 67 68 74 20 77 69 73 68 20 74 6f 20 63 6f 6e 66 69 67 75 72 65 20 74 68 65 20 76 61 72 .might.wish.to.configure.the.var
cce0 69 61 62 6c 65 73 20 6c 69 73 74 65 64 0a 69 6e 20 60 70 72 65 73 63 69 65 6e 74 2d 2d 63 6f 6d iables.listed.in.`prescient--com
cd00 70 6c 65 74 69 6f 6e 2d 73 65 74 74 69 6e 67 73 2d 76 61 72 73 27 20 62 75 66 66 65 72 20 6c 6f pletion-settings-vars'.buffer.lo
cd20 63 61 6c 6c 79 2c 20 77 68 6f 73 65 0a 6c 6f 63 61 6c 6e 65 73 73 20 73 68 6f 75 6c 64 20 62 65 cally,.whose.localness.should.be
cd40 20 75 6e 64 6f 6e 65 20 77 68 65 6e 20 74 68 65 20 65 78 74 65 6e 73 69 6f 6e 20 6d 6f 64 65 20 .undone.when.the.extension.mode.
cd60 69 73 20 64 69 73 61 62 6c 65 64 2e 0a 54 68 69 73 20 6c 69 73 74 20 69 73 20 74 6f 20 70 72 65 is.disabled..This.list.is.to.pre
cd80 76 65 6e 74 20 65 78 74 65 6e 73 69 6f 6e 20 6d 6f 64 65 73 20 66 72 6f 6d 20 6b 69 6c 6c 69 6e vent.extension.modes.from.killin
cda0 67 20 76 61 72 69 61 62 6c 65 73 0a 74 68 61 74 20 77 65 72 65 20 61 6c 72 65 61 64 79 20 6c 6f g.variables.that.were.already.lo
cdc0 63 61 6c 20 77 68 65 6e 20 74 68 65 20 6d 6f 64 65 20 77 61 73 20 65 6e 61 62 6c 65 64 2e 22 29 cal.when.the.mode.was.enabled.")
cde0 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 2d 6d ..(defun.prescient--completion-m
ce00 61 6b 65 2d 76 61 72 73 2d 6c 6f 63 61 6c 20 28 29 0a 20 20 22 4d 61 6b 65 20 74 68 65 20 73 65 ake-vars-local.()..."Make.the.se
ce20 74 74 69 6e 67 73 20 61 6e 64 20 72 65 73 74 6f 72 61 74 69 6f 6e 20 76 61 72 69 61 62 6c 65 73 ttings.and.restoration.variables
ce40 20 62 75 66 66 65 72 20 6c 6f 63 61 6c 2e 0a 0a 52 65 63 6f 72 64 20 77 68 65 74 68 65 72 20 61 .buffer.local...Record.whether.a
ce60 20 73 65 74 74 69 6e 67 73 20 76 61 72 69 61 62 6c 65 20 28 66 6f 72 20 65 78 61 6d 70 6c 65 2c .settings.variable.(for.example,
ce80 0a 60 63 6f 6d 70 6c 65 74 69 6f 6e 2d 73 74 79 6c 65 73 27 29 20 77 61 73 20 61 6c 72 65 61 64 .`completion-styles').was.alread
cea0 79 20 6c 6f 63 61 6c 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 y.local.in.`prescient--completio
cec0 6e 2d 76 61 72 73 2d 61 6c 72 65 61 64 79 2d 6c 6f 63 61 6c 27 2e 0a 0a 54 68 69 73 20 6d 75 73 n-vars-already-local'...This.mus
cee0 74 20 68 61 70 70 65 6e 20 62 65 66 6f 72 65 20 73 74 6f 72 69 6e 67 20 6f 6c 64 20 76 61 6c 75 t.happen.before.storing.old.valu
cf00 65 73 2e 22 0a 20 20 28 6d 61 70 63 20 23 27 6d 61 6b 65 2d 6c 6f 63 61 6c 2d 76 61 72 69 61 62 es."...(mapc.#'make-local-variab
cf20 6c 65 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 72 le.prescient--completion-old-var
cf40 73 29 0a 20 20 28 64 6f 6c 69 73 74 20 28 76 61 72 20 70 72 65 73 63 69 65 6e 74 2d 2d 63 6f 6d s)...(dolist.(var.prescient--com
cf60 70 6c 65 74 69 6f 6e 2d 73 65 74 74 69 6e 67 73 2d 76 61 72 73 29 0a 20 20 20 20 28 69 66 20 28 pletion-settings-vars).....(if.(
cf80 6c 6f 63 61 6c 2d 76 61 72 69 61 62 6c 65 2d 70 20 76 61 72 29 0a 20 20 20 20 20 20 20 20 28 70 local-variable-p.var).........(p
cfa0 75 73 68 20 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 76 61 ush.var.prescient--completion-va
cfc0 72 73 2d 61 6c 72 65 61 64 79 2d 6c 6f 63 61 6c 29 0a 20 20 20 20 20 20 28 6d 61 6b 65 2d 6c 6f rs-already-local).......(make-lo
cfe0 63 61 6c 2d 76 61 72 69 61 62 6c 65 20 76 61 72 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 70 72 65 cal-variable.var))))..(defun.pre
d000 73 63 69 65 6e 74 2d 2d 63 6f 6d 70 6c 65 74 69 6f 6e 2d 6b 69 6c 6c 2d 6c 6f 63 61 6c 2d 76 61 scient--completion-kill-local-va
d020 72 73 20 28 29 0a 20 20 22 4b 69 6c 6c 20 6c 6f 63 61 6c 20 73 65 74 74 69 6e 67 73 20 61 6e 64 rs.()..."Kill.local.settings.and
d040 20 72 65 73 74 6f 72 61 74 69 6f 6e 20 76 61 72 69 61 62 6c 65 73 2e 0a 0a 44 6f 6e 27 74 20 6b .restoration.variables...Don't.k
d060 69 6c 6c 20 74 68 65 20 76 61 72 69 61 62 6c 65 73 20 69 66 20 74 68 65 79 20 61 72 65 20 6d 65 ill.the.variables.if.they.are.me
d080 6d 62 65 72 73 20 6f 66 0a 60 70 72 65 73 63 69 65 6e 74 2d 2d 63 6f 6d 70 6c 65 74 69 6f 6e 2d mbers.of.`prescient--completion-
d0a0 76 61 72 73 2d 61 6c 72 65 61 64 79 2d 6c 6f 63 61 6c 27 2e 0a 0a 54 68 69 73 20 6d 75 73 74 20 vars-already-local'...This.must.
d0c0 68 61 70 70 65 6e 20 61 66 74 65 72 20 72 65 73 74 6f 72 69 6e 67 20 6f 6c 64 20 76 61 6c 75 65 happen.after.restoring.old.value
d0e0 73 2e 22 0a 20 20 28 64 6f 6c 69 73 74 20 28 76 61 72 20 70 72 65 73 63 69 65 6e 74 2d 2d 63 6f s."...(dolist.(var.prescient--co
d100 6d 70 6c 65 74 69 6f 6e 2d 73 65 74 74 69 6e 67 73 2d 76 61 72 73 29 0a 20 20 20 20 28 75 6e 6c mpletion-settings-vars).....(unl
d120 65 73 73 20 28 6d 65 6d 71 20 76 61 72 20 70 72 65 73 63 69 65 6e 74 2d 2d 63 6f 6d 70 6c 65 74 ess.(memq.var.prescient--complet
d140 69 6f 6e 2d 76 61 72 73 2d 61 6c 72 65 61 64 79 2d 6c 6f 63 61 6c 29 0a 20 20 20 20 20 20 28 6b ion-vars-already-local).......(k
d160 69 6c 6c 2d 6c 6f 63 61 6c 2d 76 61 72 69 61 62 6c 65 20 76 61 72 29 29 29 0a 20 20 28 73 65 74 ill-local-variable.var)))...(set
d180 71 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 72 q.prescient--completion-vars-alr
d1a0 65 61 64 79 2d 6c 6f 63 61 6c 20 6e 69 6c 29 29 0a 0a 3b 3b 3b 3b 20 54 6f 67 67 6c 69 6e 67 20 eady-local.nil))..;;;;.Toggling.
d1c0 63 6f 6d 6d 61 6e 64 73 0a 3b 3b 20 54 68 65 73 65 20 63 6f 6d 6d 61 6e 64 73 20 61 72 65 20 6d commands.;;.These.commands.are.m
d1e0 65 61 6e 74 20 74 6f 20 62 65 20 62 6f 75 6e 64 20 69 6e 20 61 20 63 6f 6d 70 6c 65 74 69 6f 6e eant.to.be.bound.in.a.completion
d200 20 55 49 2c 20 69 6e 20 77 68 69 63 68 0a 3b 3b 20 60 70 72 65 73 63 69 65 6e 74 2d 66 69 6c 74 .UI,.in.which.;;.`prescient-filt
d220 65 72 2d 6d 65 74 68 6f 64 27 20 63 61 6e 20 62 65 20 62 6f 75 6e 64 20 62 75 66 66 65 72 20 6c er-method'.can.be.bound.buffer.l
d240 6f 63 61 6c 6c 79 2e 0a 0a 28 64 65 66 63 6f 6e 73 74 20 70 72 65 73 63 69 65 6e 74 2d 2d 74 6f ocally...(defconst.prescient--to
d260 67 67 6c 65 2d 76 61 72 73 0a 20 20 27 28 20 70 72 65 73 63 69 65 6e 74 2d 66 69 6c 74 65 72 2d ggle-vars...'(.prescient-filter-
d280 6d 65 74 68 6f 64 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 method.prescient-use-case-foldin
d2a0 67 0a 20 20 20 20 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 g......prescient-use-char-foldin
d2c0 67 29 0a 20 20 22 56 61 72 69 61 62 6c 65 73 20 74 68 61 74 20 63 61 6e 20 62 65 20 63 68 61 6e g)..."Variables.that.can.be.chan
d2e0 67 65 64 20 6c 6f 63 61 6c 6c 79 20 62 79 20 74 6f 67 67 6c 69 6e 67 20 63 6f 6d 6d 61 6e 64 73 ged.locally.by.toggling.commands
d300 2e 0a 0a 41 6e 20 65 78 70 6c 69 63 69 74 20 6c 69 73 74 20 69 73 20 6e 65 65 64 65 64 20 66 6f ...An.explicit.list.is.needed.fo
d320 72 20 43 6f 72 66 75 2e 22 29 0a 0a 28 64 65 66 76 61 72 20 70 72 65 73 63 69 65 6e 74 2d 2d 74 r.Corfu.")..(defvar.prescient--t
d340 6f 67 67 6c 65 2d 72 65 66 72 65 73 68 2d 66 75 6e 63 74 69 6f 6e 73 20 6e 69 6c 0a 20 20 22 46 oggle-refresh-functions.nil..."F
d360 75 6e 63 74 69 6f 6e 73 20 74 6f 20 72 75 6e 20 74 6f 20 66 6f 72 63 65 20 72 65 66 72 65 73 68 unctions.to.run.to.force.refresh
d380 69 6e 67 20 74 68 65 20 63 6f 6d 70 6c 65 74 69 6f 6e 20 55 49 2e 0a 46 75 6e 63 74 69 6f 6e 73 ing.the.completion.UI..Functions
d3a0 20 61 72 65 20 61 64 64 65 64 20 62 79 20 74 68 65 20 69 6e 74 65 67 72 61 74 69 6f 6e 20 70 61 .are.added.by.the.integration.pa
d3c0 63 6b 61 67 65 73 2e 22 29 0a 0a 28 64 65 66 75 6e 20 70 72 65 73 63 69 65 6e 74 2d 2d 74 6f 67 ckages.")..(defun.prescient--tog
d3e0 67 6c 65 2d 72 65 66 72 65 73 68 20 28 29 0a 20 20 22 52 75 6e 20 74 68 65 20 55 49 20 72 65 66 gle-refresh.()..."Run.the.UI.ref
d400 72 65 73 68 20 66 75 6e 63 74 69 6f 6e 73 2e 22 0a 20 20 28 72 75 6e 2d 68 6f 6f 6b 73 20 27 70 resh.functions."...(run-hooks.'p
d420 72 65 73 63 69 65 6e 74 2d 2d 74 6f 67 67 6c 65 2d 72 65 66 72 65 73 68 2d 66 75 6e 63 74 69 6f rescient--toggle-refresh-functio
d440 6e 73 29 29 0a 0a 28 64 65 66 76 61 72 20 70 72 65 73 63 69 65 6e 74 2d 74 6f 67 67 6c 65 2d 6d ns))..(defvar.prescient-toggle-m
d460 61 70 20 28 6d 61 6b 65 2d 73 70 61 72 73 65 2d 6b 65 79 6d 61 70 29 0a 20 20 22 54 6f 67 67 6c ap.(make-sparse-keymap)..."Toggl
d480 69 6e 67 20 63 6f 6d 6d 61 6e 64 73 20 66 6f 72 20 60 70 72 65 73 63 69 65 6e 74 2e 65 6c 27 20 ing.commands.for.`prescient.el'.
d4a0 66 69 6c 74 65 72 73 20 69 6e 20 6d 69 6e 69 62 75 66 66 65 72 20 63 6f 6d 70 6c 65 74 69 6f 6e filters.in.minibuffer.completion
d4c0 2e 0a 54 68 69 73 20 6d 61 70 20 69 73 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 62 6f 75 6e ..This.map.is.automatically.boun
d4e0 64 20 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 d.by.the.integration.packages.")
d500 0a 0a 3b 3b 3b 23 23 23 61 75 74 6f 6c 6f 61 64 0a 28 64 65 66 6d 61 63 72 6f 20 70 72 65 73 63 ..;;;###autoload.(defmacro.presc
d520 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 2d 63 6f 6d 6d ient-create-and-bind-toggle-comm
d540 61 6e 64 0a 20 20 20 20 28 66 69 6c 74 65 72 2d 74 79 70 65 20 6b 62 64 2d 73 74 72 69 6e 67 29 and.....(filter-type.kbd-string)
d560 0a 20 20 22 43 72 65 61 74 65 20 61 6e 64 20 62 69 6e 64 20 61 20 63 6f 6d 6d 61 6e 64 20 74 6f ..."Create.and.bind.a.command.to
d580 20 74 6f 67 67 6c 65 20 74 68 65 20 75 73 65 20 6f 66 20 61 20 66 69 6c 74 65 72 20 6d 65 74 68 .toggle.the.use.of.a.filter.meth
d5a0 6f 64 2e 0a 0a 54 68 65 20 63 72 65 61 74 65 64 20 63 6f 6d 6d 61 6e 64 20 74 6f 67 67 6c 65 73 od...The.created.command.toggles
d5c0 20 74 68 65 20 46 49 4c 54 45 52 2d 54 59 50 45 20 6d 65 74 68 6f 64 20 6f 6e 0a 6f 72 20 6f 66 .the.FILTER-TYPE.method.on.or.of
d5e0 66 20 62 75 66 66 65 72 20 6c 6f 63 61 6c 6c 79 2c 20 61 6e 64 20 64 6f 65 73 6e 27 74 20 61 66 f.buffer.locally,.and.doesn't.af
d600 66 65 63 74 20 74 68 65 20 64 65 66 61 75 6c 74 0a 62 65 68 61 76 69 6f 72 20 28 64 65 74 65 72 fect.the.default.behavior.(deter
d620 6d 69 6e 65 64 20 62 79 20 60 70 72 65 73 63 69 65 6e 74 2d 66 69 6c 74 65 72 2d 6d 65 74 68 6f mined.by.`prescient-filter-metho
d640 64 27 29 2e 0a 0a 54 68 65 20 63 72 65 61 74 65 64 20 63 6f 6d 6d 61 6e 64 20 69 73 20 62 6f 75 d')...The.created.command.is.bou
d660 6e 64 20 74 6f 20 4b 42 44 2d 53 54 52 49 4e 47 20 69 6e 0a 60 70 72 65 73 63 69 65 6e 74 2d 74 nd.to.KBD-STRING.in.`prescient-t
d680 6f 67 67 6c 65 2d 6d 61 70 27 2e 20 54 68 69 73 20 6d 61 70 20 69 73 20 69 74 73 65 6c 66 20 62 oggle-map'..This.map.is.itself.b
d6a0 6f 75 6e 64 20 74 6f 20 60 4d 2d 73 27 0a 69 6e 20 74 68 65 20 63 6f 6d 70 6c 65 74 69 6f 6e 20 ound.to.`M-s'.in.the.completion.
d6c0 62 75 66 66 65 72 20 77 68 65 6e 20 60 73 65 6c 65 63 74 72 75 6d 2d 70 72 65 73 63 69 65 6e 74 buffer.when.`selectrum-prescient
d6e0 2d 6d 6f 64 65 27 20 6f 72 0a 60 76 65 72 74 69 63 6f 2d 70 72 65 73 63 69 65 6e 74 2d 6d 6f 64 -mode'.or.`vertico-prescient-mod
d700 65 27 20 61 72 65 20 65 6e 61 62 6c 65 64 2e 0a 0a 46 49 4c 54 45 52 2d 54 59 50 45 20 69 73 20 e'.are.enabled...FILTER-TYPE.is.
d720 61 6e 20 75 6e 71 75 6f 74 65 64 20 73 79 6d 62 6f 6c 20 74 68 61 74 20 63 61 6e 20 62 65 20 75 an.unquoted.symbol.that.can.be.u
d740 73 65 64 20 69 6e 0a 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 sed.in.`prescient-filter-method'
d760 2e 20 4b 42 44 2d 53 54 52 49 4e 47 20 69 73 20 61 20 73 74 72 69 6e 67 20 74 68 61 74 20 63 61 ..KBD-STRING.is.a.string.that.ca
d780 6e 20 62 65 0a 70 61 73 73 65 64 20 74 6f 20 60 6b 62 64 27 2e 22 0a 20 20 28 6c 65 74 2a 20 28 n.be.passed.to.`kbd'."...(let*.(
d7a0 28 66 69 6c 74 65 72 2d 74 79 70 65 2d 6e 61 6d 65 20 28 73 79 6d 62 6f 6c 2d 6e 61 6d 65 20 66 (filter-type-name.(symbol-name.f
d7c0 69 6c 74 65 72 2d 74 79 70 65 29 29 29 0a 20 20 20 20 60 28 64 65 66 69 6e 65 2d 6b 65 79 20 70 ilter-type))).....`(define-key.p
d7e0 72 65 73 63 69 65 6e 74 2d 74 6f 67 67 6c 65 2d 6d 61 70 20 28 6b 62 64 20 2c 6b 62 64 2d 73 74 rescient-toggle-map.(kbd.,kbd-st
d800 72 69 6e 67 29 0a 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 ring)........(defun.,(intern.(co
d820 6e 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 ncat."prescient-toggle-".filter-
d840 74 79 70 65 2d 6e 61 6d 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 61 72 67 29 20 20 20 20 type-name))............(arg)....
d860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 20 41 72 67 20 6c 69 73 74 0a 20 20 20 20 20 ................;.Arg.list......
d880 20 20 20 20 2c 28 66 6f 72 6d 61 74 0a 20 20 20 20 20 20 20 20 20 20 20 22 54 6f 67 67 6c 65 20 ....,(format............"Toggle.
d8a0 74 68 65 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 the.\"%s\".filter.on.or.off..Wit
d8c0 68 20 41 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 h.ARG,.use.only.this.filter..Thi
d8e0 73 20 74 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 s.toggling.only.affects.filterin
d900 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 0a 62 75 66 66 g.in.the.current.completion.buff
d920 65 72 2e 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 er..It.does.not.affect.the.defau
d940 6c 74 20 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 lt.behavior.(determined.by.`pres
d960 63 69 65 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 cient-filter-method')."..filter-
d980 74 79 70 65 2d 6e 61 6d 65 29 0a 20 20 20 20 20 20 20 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 type-name)..........(interactive
d9a0 20 22 50 22 29 0a 0a 20 20 20 20 20 20 20 20 20 3b 3b 20 4d 61 6b 65 20 60 70 72 65 73 63 69 65 ."P")...........;;.Make.`prescie
d9c0 6e 74 2d 66 69 6c 74 65 72 2d 6d 65 74 68 6f 64 27 20 62 75 66 66 65 72 2d 6c 6f 63 61 6c 20 69 nt-filter-method'.buffer-local.i
d9e0 6e 20 74 68 65 0a 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 n.the..........;;.completion.buf
da00 66 65 72 2e 20 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 fer..We.don't.want.to.accidental
da20 6c 79 20 63 68 61 6e 67 65 20 74 68 65 0a 20 20 20 20 20 20 20 20 20 3b 3b 20 75 73 65 72 27 73 ly.change.the..........;;.user's
da40 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 20 28 6d 61 6b .default.behavior...........(mak
da60 65 2d 6c 6f 63 61 6c 2d 76 61 72 69 61 62 6c 65 20 27 70 72 65 73 63 69 65 6e 74 2d 66 69 6c 74 e-local-variable.'prescient-filt
da80 65 72 2d 6d 65 74 68 6f 64 29 0a 0a 20 20 20 20 20 20 20 20 20 28 69 66 20 61 72 67 0a 20 20 20 er-method)...........(if.arg....
daa0 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 20 61 20 ..........;;.If.user.provides.a.
dac0 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 67 20 74 prefix.argument,.set.filtering.t
dae0 6f 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 62 65 20 61 20 6c 69 73 74 20 6f 66 20 6f o..............;;.be.a.list.of.o
db00 6e 6c 79 20 6f 6e 65 20 66 69 6c 74 65 72 20 74 79 70 65 2e 0a 20 20 20 20 20 20 20 20 20 20 20 nly.one.filter.type.............
db20 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 20 ..(setq.prescient-filter-method.
db40 27 28 2c 66 69 6c 74 65 72 2d 74 79 70 65 29 29 0a 0a 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 '(,filter-type)).............;;.
db60 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 6e Otherwise,.if.the.current.settin
db80 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 3b 3b 20 65 g.is.a.function,............;;.e
dba0 76 61 6c 75 61 74 65 20 69 74 20 74 6f 20 67 65 74 20 74 68 65 20 76 61 6c 75 65 2e 0a 20 20 20 valuate.it.to.get.the.value.....
dbc0 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 66 75 6e 63 74 69 6f 6e 70 20 70 72 65 73 63 69 65 ........(when.(functionp.prescie
dbe0 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 20 28 nt-filter-method)..............(
dc00 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 0a 20 20 20 setq.prescient-filter-method....
dc20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 70 72 65 73 63 69 65 ................(funcall.prescie
dc40 6e 74 2d 66 69 6c 74 65 72 2d 6d 65 74 68 6f 64 29 29 29 0a 0a 20 20 20 20 20 20 20 20 20 20 20 nt-filter-method))).............
dc60 3b 3b 20 49 66 20 77 65 20 6e 65 65 64 20 74 6f 20 61 64 64 20 6f 72 20 72 65 6d 6f 76 65 20 66 ;;.If.we.need.to.add.or.remove.f
dc80 72 6f 6d 20 74 68 65 20 6c 69 73 74 2c 20 6d 61 6b 65 20 73 75 72 65 0a 20 20 20 20 20 20 20 20 rom.the.list,.make.sure.........
dca0 20 20 20 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 ...;;.it's.actually.a.list.and.n
dcc0 6f 74 20 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 28 77 68 ot.just.a.symbol.............(wh
dce0 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 74 65 72 2d 6d 65 74 en.(symbolp.prescient-filter-met
dd00 68 6f 64 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 70 72 65 73 63 69 65 6e hod)..............(setq.prescien
dd20 74 2d 66 69 6c 74 65 72 2d 6d 65 74 68 6f 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 t-filter-method.................
dd40 20 20 20 28 6c 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 ...(list.prescient-filter-method
dd60 29 29 29 0a 0a 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 65 71 75 61 6c 20 70 72 65 73 63 ))).............(if.(equal.presc
dd80 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 2d 74 79 70 ient-filter-method.'(,filter-typ
dda0 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 4d 61 6b 65 20 73 75 72 65 20 e))................;;.Make.sure.
ddc0 74 68 65 20 75 73 65 72 20 64 6f 65 73 6e 27 74 20 61 63 63 69 64 65 6e 74 61 6c 6c 79 20 64 69 the.user.doesn't.accidentally.di
dde0 73 61 62 6c 65 20 61 6c 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 66 69 6c 74 sable.all................;;.filt
de00 65 72 69 6e 67 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 75 73 65 72 2d 65 72 72 6f ering.................(user-erro
de20 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2c 28 63 6f 6e 63 61 74 0a 20 20 20 20 20 r.................,(concat......
de40 20 20 20 20 20 20 20 20 20 20 20 20 20 22 50 72 65 73 63 69 65 6e 74 2e 65 6c 3a 20 43 61 6e 27 ............."Prescient.el:.Can'
de60 74 20 74 6f 67 67 6c 65 20 6f 66 66 20 6f 6e 6c 79 20 61 63 74 69 76 65 20 66 69 6c 74 65 72 20 t.toggle.off.only.active.filter.
de80 6d 65 74 68 6f 64 3a 20 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6c 74 method:."...................filt
dea0 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 28 73 65 er-type-name))...............(se
dec0 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 20 tq.prescient-filter-method......
dee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 6d 65 6d 71 20 27 2c 66 69 6c 74 65 72 ..............(if.(memq.',filter
df00 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 64 29 0a 20 -type.prescient-filter-method)..
df20 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 45 76 65 6e 20 77 68 ......................;;.Even.wh
df40 65 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 en.running.`make-local-variable'
df60 2c 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 69 74 20 73 ,........................;;.it.s
df80 65 65 6d 73 20 60 64 65 6c 71 27 20 6d 69 67 68 74 20 73 74 69 6c 6c 20 6d 6f 64 69 66 79 20 74 eems.`delq'.might.still.modify.t
dfa0 68 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 3b 3b 20 67 6c 6f he........................;;.glo
dfc0 62 61 6c 20 76 61 6c 75 65 2c 20 73 6f 20 77 65 20 75 73 65 20 60 72 65 6d 71 27 20 68 65 72 65 bal.value,.so.we.use.`remq'.here
dfe0 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 72 65 6d 71 20 27 .........................(remq.'
e000 2c 66 69 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 ,filter-type.prescient-filter-me
e020 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 28 63 6f 6e 73 thod)......................(cons
e040 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 66 69 6c 74 65 72 2d .',filter-type.prescient-filter-
e060 6d 65 74 68 6f 64 29 29 29 29 29 0a 0a 20 20 20 20 20 20 20 20 20 3b 3b 20 41 66 74 65 72 20 63 method)))))...........;;.After.c
e080 68 61 6e 67 69 6e 67 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 hanging.`prescient-filter-method
e0a0 27 2c 20 74 65 6c 6c 20 74 68 65 20 75 73 65 72 0a 20 20 20 20 20 20 20 20 20 3b 3b 20 74 68 65 ',.tell.the.user..........;;.the
e0c0 20 6e 65 77 20 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 .new.value.and.update.the.UI's.d
e0e0 69 73 70 6c 61 79 2e 0a 20 20 20 20 20 20 20 20 20 28 6d 65 73 73 61 67 65 20 22 50 72 65 73 63 isplay...........(message."Presc
e100 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 20 20 20 20 20 ient.el.filter.is.now.%s".......
e120 20 20 20 20 20 20 20 20 20 20 20 20 70 72 65 73 63 69 65 6e 74 2d 66 69 6c 74 65 72 2d 6d 65 74 ............prescient-filter-met
e140 68 6f 64 29 0a 0a 20 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 hod)...........;;.Call."exhibit"
e160 20 66 75 6e 63 74 69 6f 6e 2e 0a 20 20 20 20 20 20 20 20 20 28 70 72 65 73 63 69 65 6e 74 2d 2d .function...........(prescient--
e180 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 6e 74 2d toggle-refresh)))))..(prescient-
e1a0 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 61 create-and-bind-toggle-command.a
e1c0 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 65 2d 61 nchored."a").(prescient-create-a
e1e0 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 22 66 22 nd-bind-toggle-command.fuzzy."f"
e200 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 74 6f 67 ).(prescient-create-and-bind-tog
e220 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 70 72 65 gle-command.initialism."i").(pre
e240 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 2d 63 6f scient-create-and-bind-toggle-co
e260 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 2d 63 72 mmand.literal."l").(prescient-cr
e280 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 6c 69 74 eate-and-bind-toggle-command.lit
e2a0 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 72 65 61 eral-prefix."P").(prescient-crea
e2c0 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 65 66 69 te-and-bind-toggle-command.prefi
e2e0 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 62 69 6e x."p").(prescient-create-and-bin
e300 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 0a 28 64 d-toggle-command.regexp."r")..(d
e320 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 6c 64 20 efun.prescient-toggle-char-fold.
e340 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 67 20 69 ()..."Toggle.character.folding.i
e360 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 65 72 2e n.the.current.completion.buffer.
e380 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 65 6e 74 ..See.the.user.option.`prescient
e3a0 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 61 63 74 -use-char-folding'."...(interact
e3c0 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 75 73 65 ive)...(setq-local.prescient-use
e3e0 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 6e 6f 74 -char-folding...............(not
e400 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 0a 20 20 .prescient-use-char-folding))...
e420 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 6f 67 67 (message."Character.folding.togg
e440 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 65 6e 74 led.%s"............(if.prescient
e460 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 29 0a 20 -use-char-folding."on"."off"))..
e480 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 0a 0a 3b .(prescient--toggle-refresh))..;
e4a0 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 65 64 20 ;.This.is.the.same.binding.used.
e4c0 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 2e 0a 28 by.`isearch-toggle-char-fold'..(
e4e0 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 61 70 20 define-key.prescient-toggle-map.
e500 28 6b 62 64 20 22 27 22 29 0a 20 20 23 27 70 72 65 73 63 69 65 6e 74 2d 74 6f 67 67 6c 65 2d 63 (kbd."'")...#'prescient-toggle-c
e520 68 61 72 2d 66 6f 6c 64 29 0a 0a 28 64 65 66 75 6e 20 70 72 65 73 63 69 65 6e 74 2d 74 6f 67 67 har-fold)..(defun.prescient-togg
e540 6c 65 2d 63 61 73 65 2d 66 6f 6c 64 20 28 29 0a 20 20 22 54 6f 67 67 6c 65 20 63 61 73 65 20 66 le-case-fold.()..."Toggle.case.f
e560 6f 6c 64 69 6e 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 olding.in.the.current.completion
e580 20 62 75 66 66 65 72 2e 0a 0a 49 66 20 60 70 72 65 73 63 69 65 6e 74 2d 75 73 65 2d 63 61 73 65 .buffer...If.`prescient-use-case
e5a0 2d 66 6f 6c 64 69 6e 67 27 20 69 73 20 73 65 74 20 74 6f 20 60 73 6d 61 72 74 27 2c 20 74 68 65 -folding'.is.set.to.`smart',.the
e5c0 6e 20 74 68 69 73 0a 74 6f 67 67 6c 65 73 20 77 68 65 74 68 65 72 20 74 6f 20 75 73 65 20 73 6d n.this.toggles.whether.to.use.sm
e5e0 61 72 74 20 63 61 73 65 20 66 6f 6c 64 69 6e 67 20 6f 72 20 6e 6f 20 63 61 73 65 20 66 6f 6c 64 art.case.folding.or.no.case.fold
e600 69 6e 67 2e 0a 4f 74 68 65 72 77 69 73 65 2c 20 74 68 69 73 20 74 6f 67 67 6c 65 73 20 62 65 74 ing..Otherwise,.this.toggles.bet
e620 77 65 65 6e 20 6e 6f 72 6d 61 6c 20 63 61 73 65 20 66 6f 6c 64 69 6e 67 20 61 6e 64 20 6e 6f 20 ween.normal.case.folding.and.no.
e640 63 61 73 65 0a 66 6f 6c 64 69 6e 67 2e 22 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 29 0a 20 case.folding."...(interactive)..
e660 20 28 73 65 74 71 2d 6c 6f 63 61 6c 20 70 72 65 73 63 69 65 6e 74 2d 75 73 65 2d 63 61 73 65 2d .(setq-local.prescient-use-case-
e680 66 6f 6c 64 69 6e 67 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 64 0a 20 20 20 20 folding...............(cond.....
e6a0 20 20 20 20 20 20 20 20 20 20 20 28 70 72 65 73 63 69 65 6e 74 2d 75 73 65 2d 63 61 73 65 2d 66 ...........(prescient-use-case-f
e6c0 6f 6c 64 69 6e 67 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 olding.................(message.
e6e0 22 43 61 73 65 20 66 6f 6c 64 69 6e 67 20 74 6f 67 67 6c 65 64 20 6f 66 66 22 29 0a 20 20 20 20 "Case.folding.toggled.off").....
e700 20 20 20 20 20 20 20 20 20 20 20 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ............nil)................
e720 28 28 65 71 20 28 64 65 66 61 75 6c 74 2d 74 6f 70 6c 65 76 65 6c 2d 76 61 6c 75 65 20 27 70 72 ((eq.(default-toplevel-value.'pr
e740 65 73 63 69 65 6e 74 2d 75 73 65 2d 63 61 73 65 2d 66 6f 6c 64 69 6e 67 29 0a 20 20 20 20 20 20 escient-use-case-folding).......
e760 20 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 ..............'smart)...........
e780 20 20 20 20 20 20 28 6d 65 73 73 61 67 65 20 22 53 6d 61 72 74 20 63 61 73 65 20 66 6f 6c 64 69 ......(message."Smart.case.foldi
e7a0 6e 67 20 74 6f 67 67 6c 65 64 20 6f 6e 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ng.toggled.on").................
e7c0 27 73 6d 61 72 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 0a 20 20 20 20 20 20 'smart)................(t.......
e7e0 20 20 20 20 20 20 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 ..........(message."Case.folding
e800 20 74 6f 67 67 6c 65 64 20 6f 6e 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 29 .toggled.on").................t)
e820 29 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 ))...(prescient--toggle-refresh)
e840 29 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 )..;;.This.is.the.same.binding.u
e860 73 65 64 20 62 79 20 60 69 73 65 61 72 63 68 2d 74 6f 67 67 6c 65 2d 63 61 73 65 2d 66 6f 6c 64 sed.by.`isearch-toggle-case-fold
e880 27 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 '..(define-key.prescient-toggle-
e8a0 6d 61 70 20 28 6b 62 64 20 22 63 22 29 0a 20 20 23 27 70 72 65 73 63 69 65 6e 74 2d 74 6f 67 67 map.(kbd."c")...#'prescient-togg
e8c0 6c 65 2d 63 61 73 65 2d 66 6f 6c 64 29 0a 0a 0a 3b 3b 3b 3b 20 43 6c 6f 73 69 6e 67 20 72 65 6d le-case-fold)...;;;;.Closing.rem
e8e0 61 72 6b 73 0a 28 70 72 6f 76 69 64 65 20 27 70 72 65 73 63 69 65 6e 74 29 0a 0a 3b 3b 3b 20 70 arks.(provide.'prescient)..;;;.p
e900 72 65 73 63 69 65 6e 74 2e 65 6c 20 65 6e 64 73 20 68 65 72 65 0a 00 00 00 00 00 00 00 00 00 00 rescient.el.ends.here...........
e920 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e9a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e9c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e9e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ea00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ea20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ea40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ea60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ea80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
eaa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
eac0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
eae0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
eb00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
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 ................................