init commit

This commit is contained in:
unknown
2025-08-19 08:06:37 -04:00
commit 2957b5515a
743 changed files with 45495 additions and 0 deletions
+677
View File
@@ -0,0 +1,677 @@
Aaron,Erin
able,Abel
acclamation,acclimation
acts,ax
Adam,atom
add,ad
addition,edition
adds,ads,adz
adduce,educe
adherence,adherents
ado,adieu
aerial,ariel
affected,effected
afterward,afterword
aid,aide
air,heir,err
ale,ail
align,a line,aline
all,awl
allowed,aloud
alluded,eluded
alter,altar
analyst,annalist
appetite,apatite
apprize,apprise
arc,ark
ascent,assent
assistance,assistants
attendance,attendants
augur,auger
aunt,ant
away,aweigh
axis,axes
axle,axel
Babel,babble
bad,bade,bed
bah,baa
bail,bale,baal
bait,bate
baited,bated
bald,balled,bawled
ball,bawl
band,banned
baron,barren
barred,bard
barrel,beryl
base,bass
based,baste
baseline,bassline
basil,basal
basis,bases
basque,bask
be,bee
beach,beech
bear,bare
beat,beet
been,bin
beer,bier
beetle,beatle
bell,belle
better,bettor
bib,bibb
bird,burred
birth,berth
bite,byte,bight
bizarre,bazaar
block,bloc
blue,blew
board,bored
bold,bowled
bomb,balm,bombe
booty,bootie
border,boarder
bore,boar
born,borne
borough,burrow,burro
bought,bot
boulder,bolder
bow,beau
bow,bough
bowed,bode
boy,buoy
braid,brayed
brays,braise
breach,breech
bread,bred
break,brake
brewed,brood
brews,bruise
bridal,bridle
broach,brooch
browse,brows
brute,brut
build,billed
bullion,bouillon,boolean
burger,burgher
bury,berry
bust,bussed
but,butt
by,buy,bye
cached,cashed
caches,cashes
caching,cashing
caddy,caddie
Cain,cane
calendar,calender
callous,callus
cannon,canon
cantor,canter
canvas,canvass
capital,capitol
carol,carrel
carrot,carat,caret,karat
cash,cache
cast,caste
caster,castor
cause,caws
cedar,seeder
ceiling,sealing
chance,chants
chased,chaste
chauffeur,shofar
cheap,cheep
check,Czech
chic,sheik
Chile,chili,chilly
choir,quire
choose,chews
cited,sided,sighted
clack,claque
clammer,clamor,clamber
clause,claws
click,clique
climb,clime
close,clothes,cloze
clue,clew
coal,cole
coarser,courser
coat,cote
coax,cokes
collared,collard
complacent,complaisant
complement,compliment
conceded,conceited
consonants,consonance
consul,console,consol
continents,continence
cops,copse
coral,choral
cord,chord,cored
core,corps
coughers,coffers
coulee,coolie
council,counsel
coup,coo
coupe,coop
course,coarse
cousin,cozen
coward,cowered
coy,koi
craft,kraft
crawl,kraal
creek,creak
crepe,crape
cruel,crewel
cruise,crews
current,currant
cursor,curser
Cyprus,cypress
damn,dam
Dane,deign
days,daze
dear,deer
dense,dents
descent,dissent
die,dye
diffused,defused
discrete,discreet
disperse,disburse
do,dough,doe
do,due,dew
doc,dock
does,doze
done,dun
draft,draught
dual,duel
ducked,duct
ducks,ducts
dying,dyeing
earn,urn
effect,affect
effects,affects
eight,ate
eke,eek
elude,allude
elusive,illusive,allusive
emend,amend
end,and
ensure,insure
errant,arrant
eve,eave
exceed,accede
except,accept
excepting,accepting
exercise,exorcise
eyes,ayes
facts,fax
faint,feint
fair,fare
fairy,ferry
fawn,faun
feet,feat
fens,fends
fete,fate
few,phew
find,fined
finish,Finnish
fish,phish
fished,phished
fisher,fissure
fishing,phishing
flare,flair
flee,flea
flew,flu,flue
flocks,phlox
flow,floe
flower,flour
flyer,flier
foe,faux
fold,foaled
for,four,fore
foregone,forgone
fort,forte
forward,foreword
foul,fowl
fourth,forth
frank,franc
freeze,frees,frieze
friar,fryer
fur,fir
gaffe,gaff
gale,Gail
gamble,gambol
gate,gait
gator,gaiter
gauge,gage
gel,jell
gene,Jean
gilder,guilder
gnome,Nome
gopher,gofer
gorilla,guerilla
gourd,gored
grade,grayed
graft,graphed
graham,gram
graze,grays
great,grate
greater,grater
Greece,grease
grill,grille
grizzly,grisly
grown,groan
guest,guessed
guild,gild
guilt,gilt
hail,hale
hair,hare
hall,haul
handmade,handmaid
handsome,hansom
hangar,hanger
have,halve
haze,hays
he'd,heed
he'll,heal,heel
heard,herd
heart,hart
here,hear
heroin,heroine
hey,hay
high,hi
higher,hire
him,hymn
ho,hoe
hold,holed
holy,wholly,holey
hoop,whoop
horde,hoard
horse,hoarse
hose,hoes
hostile,hostel
Hugh,hue,hew
humorous,humerus
hurts,hertz
I,eye,aye
I'd,eyed
I'll,aisle,isle
idle,idol,idyll
illicit,elicit
illusion,allusion
imminent,immanent
impassable,impassible
in,inn
innocence,innocents
innumerable,enumerable
insight,incite
instance,instants
intense,intents
islet,eyelet
its,it's
jam,jamb
jibe,gibe
Jim,gym
jinx,jinks
json,jason
kernel,colonel
knickers,nickers
knit,nit
knock,nock
knows,nose
lacks,lax
laid,lade
lama,llama
lane,lain
laps,lapse,Lapps
latter,ladder
lay,lei
lays,leis,laze
leach,leech
lead,led
leak,leek
lean,lien
least,leased
lee,lea
lens,lends
lesson,lessen
let's,lets
levy,levee
liar,lyre,lier
lie,lye
light,lite
liken,lichen
links,lynx
literal,littoral
load,lode,lowed
loan,lone
loathe,loath
loch,lock
lochs,locks,lox
loot,lute
Lou,lieu
low,lo
lumber,lumbar
made,maid
main,Maine,mane
male,mail
mall,maul
manner,manor
mantle,mantel
mark,marc
martial,marshal
martin,marten
Mary,marry,merry
mast,massed
mat,matte
matter,madder
mayor,mare
maze,maize
mean,mien
meet,meat,mete
metal,medal,meddle,mettle
meteor,meatier
might,mite
mill,mil
mince,mints
mind,mined
minor,miner
missed,mist
missile,missal
moan,mown
moat,mote
mode,mowed
mood,mooed
moose,mousse
morning,mourning
mourn,morn
Mrs,misses
mucus,mucous
mule,mewl
muscle,mussel
muse,mews
must,mussed
mustard,mustered
nap,knap
naval,navel
nave,knave
nay,neigh
need,knead,kneed
new,knew,gnu
nice,gneiss
Nice,niece
night,knight
no,know
none,nun
not,knot
oh,owe
one,won
or,ore,oar
oral,aural
oriole,aureole
our,hour
ours,hours
outcast,outcaste
overdue,overdo
overseas,oversees
owed,ode
packed,pact
paean,peon,paeon
pain,pane
pair,pear,pare
pale,pail
palette,palate,pallet
parish,perish
parley,parlay
past,passed
paste,paced
patients,patience
patted,padded
Paul,pall
pause,paws
peak,peek,pique
peas,pees
pedal,peddle,petal
pee,pea
peel,peal
peer,pier
penance,pennants
per,purr
perl,pearl,purl
pervade,purveyed
Pete,peat
petrol,petrel
pew,pugh
phase,faze
Phil,fill
phrase,frays
picot,pekoe
pie,pi
piece,peace
pigeon,pidgin
pilot,Pilate
pistol,pistil
plane,plain
plaque,plack
plate,plait
please,pleas
plum,plumb
poll,pole
pour,pore
praise,prays,preys
pray,prey
precedence,precedents
premier,premiere
presence,presents
pride,pried
primer,primmer
prince,prints
principle,principal
profit,prophet
pros,prose
pull,pool
quartz,quarts
queue,cue
queues,cues
quince,quints
rabbit,rabbet
rack,wrack
rain,reign,rein
raise,rays,raze
read,red
read,reed
real,reel
residents,residence
rest,wrest
review,revue
right,write,rite
rights,writes,rites
rigor,rigger
ring,wring
road,rode,rowed
roads,rhodes
role,roll
Rome,roam
room,rheum
rose,rows
rot,wrought
rough,ruff
route,root
row,roe
rude,rued
rue,roux
rumor,roomer
rung,wrung
Russell,rustle
rye,wry
sachet,sashay
sack,sac
sacks,sax
sale,sail
sane,seine
saver,savor
scalar,scaler
see,sea
seed,cede
seem,seam
seen,scene
seer,sear,sere
sees,seize,seas
sell,cell
seller,cellar
sense,cents,scents
sensor,censor
sent,cent,scent
serial,cereal
series,Ceres
session,cession
sewing,sowing
sheer,shear
shoe,shoo
shoot,chute
shown,shone
sick,sic
side,sighed
signet,cygnet
sink,sync
sinking,syncing
site,sight,cite
size,sighs
skull,scull
slay,sleigh
slew,slough,slue
slight,sleight
slow,sloe
so,sow,sew
sold,soled
some,sum
son,sun
sore,soar
sorry,sari
soul,sole
spade,spayed
stake,steak
stare,stair
stationary,stationery
stayed,staid
steel,steal
step,steppe
straight,strait
straightened,straitened
style,stile
sue,Sioux
suit,soot
summary,summery
Sunday,sundae
surf,serf
surge,serge
swayed,suede
sweet,suite
sword,soared
symbol,cymbal
tacked,tact
tale,tail
talk,tock
taper,tapir
taught,taut
taupe,tope
tax,tacks
tea,tee
team,teem
tear,tare
tear,tier
tease,teas,tees
tens,tends
tense,tents
terry,tarry
than,then
the,thee
their,there,they're
there's,theirs
through,threw
thrown,throne
throws,throes
tick,tic
tie,Thai
tied,tide
Tigris,tigress
timber,timbre
time,thyme
to,two,too
toe,tow
told,tolled
tool,tulle
tort,torte
torturous,tortuous
towed,toad,toed
tracked,tract
trader,traitor
troop,troupe
trust,trussed
tucks,tux
turbine,turban
turn,tern
tutor,Tudor,tooter
undo,undue
use,ewes,yews
utter,udder
vain,vein,vane
valence,valance
variants,variance
veil,vale
vein,vane
Venus,venous
versus,verses
very,vary
vice,vise
vile,vial
wade,weighed
wait,weight
waiter,wader
Wales,whales,wails
walk,wok
want,wont
war,wore
ward,word
waste,waist
wave,waive
wax,whacks
way,weigh,whey
Wayne,wane,wain
ways,weighs
we,wee
we'd,weed
we'll,wheel
we've,weave
wears,where's,wares
week,weak
weekly,weakly
were,whir,we're
wet,whet
whale,wail,wale
wheeled,wield
where,wear,ware
whether,weather,wether
whether,weather
which,witch
while,wile
whoa,woe
whole,hole
whose,who's
wind,whined,wined
wine,whine
with,width
word,whirred
world,whirled,whorled
worn,warn
would,wood
wrap,rap
wrapped,rapped,rapt
wrapper,rapper
wreak,reek
wretch,retch
wrote,rote
yoke,yolk
you,yew,ewe
you'll,Yule
your,you're,yore
1 Aaron,Erin
2 able,Abel
3 acclamation,acclimation
4 acts,ax
5 Adam,atom
6 add,ad
7 addition,edition
8 adds,ads,adz
9 adduce,educe
10 adherence,adherents
11 ado,adieu
12 aerial,ariel
13 affected,effected
14 afterward,afterword
15 aid,aide
16 air,heir,err
17 ale,ail
18 align,a line,aline
19 all,awl
20 allowed,aloud
21 alluded,eluded
22 alter,altar
23 analyst,annalist
24 appetite,apatite
25 apprize,apprise
26 arc,ark
27 ascent,assent
28 assistance,assistants
29 attendance,attendants
30 augur,auger
31 aunt,ant
32 away,aweigh
33 axis,axes
34 axle,axel
35 Babel,babble
36 bad,bade,bed
37 bah,baa
38 bail,bale,baal
39 bait,bate
40 baited,bated
41 bald,balled,bawled
42 ball,bawl
43 band,banned
44 baron,barren
45 barred,bard
46 barrel,beryl
47 base,bass
48 based,baste
49 baseline,bassline
50 basil,basal
51 basis,bases
52 basque,bask
53 be,bee
54 beach,beech
55 bear,bare
56 beat,beet
57 been,bin
58 beer,bier
59 beetle,beatle
60 bell,belle
61 better,bettor
62 bib,bibb
63 bird,burred
64 birth,berth
65 bite,byte,bight
66 bizarre,bazaar
67 block,bloc
68 blue,blew
69 board,bored
70 bold,bowled
71 bomb,balm,bombe
72 booty,bootie
73 border,boarder
74 bore,boar
75 born,borne
76 borough,burrow,burro
77 bought,bot
78 boulder,bolder
79 bow,beau
80 bow,bough
81 bowed,bode
82 boy,buoy
83 braid,brayed
84 brays,braise
85 breach,breech
86 bread,bred
87 break,brake
88 brewed,brood
89 brews,bruise
90 bridal,bridle
91 broach,brooch
92 browse,brows
93 brute,brut
94 build,billed
95 bullion,bouillon,boolean
96 burger,burgher
97 bury,berry
98 bust,bussed
99 but,butt
100 by,buy,bye
101 cached,cashed
102 caches,cashes
103 caching,cashing
104 caddy,caddie
105 Cain,cane
106 calendar,calender
107 callous,callus
108 cannon,canon
109 cantor,canter
110 canvas,canvass
111 capital,capitol
112 carol,carrel
113 carrot,carat,caret,karat
114 cash,cache
115 cast,caste
116 caster,castor
117 cause,caws
118 cedar,seeder
119 ceiling,sealing
120 chance,chants
121 chased,chaste
122 chauffeur,shofar
123 cheap,cheep
124 check,Czech
125 chic,sheik
126 Chile,chili,chilly
127 choir,quire
128 choose,chews
129 cited,sided,sighted
130 clack,claque
131 clammer,clamor,clamber
132 clause,claws
133 click,clique
134 climb,clime
135 close,clothes,cloze
136 clue,clew
137 coal,cole
138 coarser,courser
139 coat,cote
140 coax,cokes
141 collared,collard
142 complacent,complaisant
143 complement,compliment
144 conceded,conceited
145 consonants,consonance
146 consul,console,consol
147 continents,continence
148 cops,copse
149 coral,choral
150 cord,chord,cored
151 core,corps
152 coughers,coffers
153 coulee,coolie
154 council,counsel
155 coup,coo
156 coupe,coop
157 course,coarse
158 cousin,cozen
159 coward,cowered
160 coy,koi
161 craft,kraft
162 crawl,kraal
163 creek,creak
164 crepe,crape
165 cruel,crewel
166 cruise,crews
167 current,currant
168 cursor,curser
169 Cyprus,cypress
170 damn,dam
171 Dane,deign
172 days,daze
173 dear,deer
174 dense,dents
175 descent,dissent
176 die,dye
177 diffused,defused
178 discrete,discreet
179 disperse,disburse
180 do,dough,doe
181 do,due,dew
182 doc,dock
183 does,doze
184 done,dun
185 draft,draught
186 dual,duel
187 ducked,duct
188 ducks,ducts
189 dying,dyeing
190 earn,urn
191 effect,affect
192 effects,affects
193 eight,ate
194 eke,eek
195 elude,allude
196 elusive,illusive,allusive
197 emend,amend
198 end,and
199 ensure,insure
200 errant,arrant
201 eve,eave
202 exceed,accede
203 except,accept
204 excepting,accepting
205 exercise,exorcise
206 eyes,ayes
207 facts,fax
208 faint,feint
209 fair,fare
210 fairy,ferry
211 fawn,faun
212 feet,feat
213 fens,fends
214 fete,fate
215 few,phew
216 find,fined
217 finish,Finnish
218 fish,phish
219 fished,phished
220 fisher,fissure
221 fishing,phishing
222 flare,flair
223 flee,flea
224 flew,flu,flue
225 flocks,phlox
226 flow,floe
227 flower,flour
228 flyer,flier
229 foe,faux
230 fold,foaled
231 for,four,fore
232 foregone,forgone
233 fort,forte
234 forward,foreword
235 foul,fowl
236 fourth,forth
237 frank,franc
238 freeze,frees,frieze
239 friar,fryer
240 fur,fir
241 gaffe,gaff
242 gale,Gail
243 gamble,gambol
244 gate,gait
245 gator,gaiter
246 gauge,gage
247 gel,jell
248 gene,Jean
249 gilder,guilder
250 gnome,Nome
251 gopher,gofer
252 gorilla,guerilla
253 gourd,gored
254 grade,grayed
255 graft,graphed
256 graham,gram
257 graze,grays
258 great,grate
259 greater,grater
260 Greece,grease
261 grill,grille
262 grizzly,grisly
263 grown,groan
264 guest,guessed
265 guild,gild
266 guilt,gilt
267 hail,hale
268 hair,hare
269 hall,haul
270 handmade,handmaid
271 handsome,hansom
272 hangar,hanger
273 have,halve
274 haze,hays
275 he'd,heed
276 he'll,heal,heel
277 heard,herd
278 heart,hart
279 here,hear
280 heroin,heroine
281 hey,hay
282 high,hi
283 higher,hire
284 him,hymn
285 ho,hoe
286 hold,holed
287 holy,wholly,holey
288 hoop,whoop
289 horde,hoard
290 horse,hoarse
291 hose,hoes
292 hostile,hostel
293 Hugh,hue,hew
294 humorous,humerus
295 hurts,hertz
296 I,eye,aye
297 I'd,eyed
298 I'll,aisle,isle
299 idle,idol,idyll
300 illicit,elicit
301 illusion,allusion
302 imminent,immanent
303 impassable,impassible
304 in,inn
305 innocence,innocents
306 innumerable,enumerable
307 insight,incite
308 instance,instants
309 intense,intents
310 islet,eyelet
311 its,it's
312 jam,jamb
313 jibe,gibe
314 Jim,gym
315 jinx,jinks
316 json,jason
317 kernel,colonel
318 knickers,nickers
319 knit,nit
320 knock,nock
321 knows,nose
322 lacks,lax
323 laid,lade
324 lama,llama
325 lane,lain
326 laps,lapse,Lapps
327 latter,ladder
328 lay,lei
329 lays,leis,laze
330 leach,leech
331 lead,led
332 leak,leek
333 lean,lien
334 least,leased
335 lee,lea
336 lens,lends
337 lesson,lessen
338 let's,lets
339 levy,levee
340 liar,lyre,lier
341 lie,lye
342 light,lite
343 liken,lichen
344 links,lynx
345 literal,littoral
346 load,lode,lowed
347 loan,lone
348 loathe,loath
349 loch,lock
350 lochs,locks,lox
351 loot,lute
352 Lou,lieu
353 low,lo
354 lumber,lumbar
355 made,maid
356 main,Maine,mane
357 male,mail
358 mall,maul
359 manner,manor
360 mantle,mantel
361 mark,marc
362 martial,marshal
363 martin,marten
364 Mary,marry,merry
365 mast,massed
366 mat,matte
367 matter,madder
368 mayor,mare
369 maze,maize
370 mean,mien
371 meet,meat,mete
372 metal,medal,meddle,mettle
373 meteor,meatier
374 might,mite
375 mill,mil
376 mince,mints
377 mind,mined
378 minor,miner
379 missed,mist
380 missile,missal
381 moan,mown
382 moat,mote
383 mode,mowed
384 mood,mooed
385 moose,mousse
386 morning,mourning
387 mourn,morn
388 Mrs,misses
389 mucus,mucous
390 mule,mewl
391 muscle,mussel
392 muse,mews
393 must,mussed
394 mustard,mustered
395 nap,knap
396 naval,navel
397 nave,knave
398 nay,neigh
399 need,knead,kneed
400 new,knew,gnu
401 nice,gneiss
402 Nice,niece
403 night,knight
404 no,know
405 none,nun
406 not,knot
407 oh,owe
408 one,won
409 or,ore,oar
410 oral,aural
411 oriole,aureole
412 our,hour
413 ours,hours
414 outcast,outcaste
415 overdue,overdo
416 overseas,oversees
417 owed,ode
418 packed,pact
419 paean,peon,paeon
420 pain,pane
421 pair,pear,pare
422 pale,pail
423 palette,palate,pallet
424 parish,perish
425 parley,parlay
426 past,passed
427 paste,paced
428 patients,patience
429 patted,padded
430 Paul,pall
431 pause,paws
432 peak,peek,pique
433 peas,pees
434 pedal,peddle,petal
435 pee,pea
436 peel,peal
437 peer,pier
438 penance,pennants
439 per,purr
440 perl,pearl,purl
441 pervade,purveyed
442 Pete,peat
443 petrol,petrel
444 pew,pugh
445 phase,faze
446 Phil,fill
447 phrase,frays
448 picot,pekoe
449 pie,pi
450 piece,peace
451 pigeon,pidgin
452 pilot,Pilate
453 pistol,pistil
454 plane,plain
455 plaque,plack
456 plate,plait
457 please,pleas
458 plum,plumb
459 poll,pole
460 pour,pore
461 praise,prays,preys
462 pray,prey
463 precedence,precedents
464 premier,premiere
465 presence,presents
466 pride,pried
467 primer,primmer
468 prince,prints
469 principle,principal
470 profit,prophet
471 pros,prose
472 pull,pool
473 quartz,quarts
474 queue,cue
475 queues,cues
476 quince,quints
477 rabbit,rabbet
478 rack,wrack
479 rain,reign,rein
480 raise,rays,raze
481 read,red
482 read,reed
483 real,reel
484 residents,residence
485 rest,wrest
486 review,revue
487 right,write,rite
488 rights,writes,rites
489 rigor,rigger
490 ring,wring
491 road,rode,rowed
492 roads,rhodes
493 role,roll
494 Rome,roam
495 room,rheum
496 rose,rows
497 rot,wrought
498 rough,ruff
499 route,root
500 row,roe
501 rude,rued
502 rue,roux
503 rumor,roomer
504 rung,wrung
505 Russell,rustle
506 rye,wry
507 sachet,sashay
508 sack,sac
509 sacks,sax
510 sale,sail
511 sane,seine
512 saver,savor
513 scalar,scaler
514 see,sea
515 seed,cede
516 seem,seam
517 seen,scene
518 seer,sear,sere
519 sees,seize,seas
520 sell,cell
521 seller,cellar
522 sense,cents,scents
523 sensor,censor
524 sent,cent,scent
525 serial,cereal
526 series,Ceres
527 session,cession
528 sewing,sowing
529 sheer,shear
530 shoe,shoo
531 shoot,chute
532 shown,shone
533 sick,sic
534 side,sighed
535 signet,cygnet
536 sink,sync
537 sinking,syncing
538 site,sight,cite
539 size,sighs
540 skull,scull
541 slay,sleigh
542 slew,slough,slue
543 slight,sleight
544 slow,sloe
545 so,sow,sew
546 sold,soled
547 some,sum
548 son,sun
549 sore,soar
550 sorry,sari
551 soul,sole
552 spade,spayed
553 stake,steak
554 stare,stair
555 stationary,stationery
556 stayed,staid
557 steel,steal
558 step,steppe
559 straight,strait
560 straightened,straitened
561 style,stile
562 sue,Sioux
563 suit,soot
564 summary,summery
565 Sunday,sundae
566 surf,serf
567 surge,serge
568 swayed,suede
569 sweet,suite
570 sword,soared
571 symbol,cymbal
572 tacked,tact
573 tale,tail
574 talk,tock
575 taper,tapir
576 taught,taut
577 taupe,tope
578 tax,tacks
579 tea,tee
580 team,teem
581 tear,tare
582 tear,tier
583 tease,teas,tees
584 tens,tends
585 tense,tents
586 terry,tarry
587 than,then
588 the,thee
589 their,there,they're
590 there's,theirs
591 through,threw
592 thrown,throne
593 throws,throes
594 tick,tic
595 tie,Thai
596 tied,tide
597 Tigris,tigress
598 timber,timbre
599 time,thyme
600 to,two,too
601 toe,tow
602 told,tolled
603 tool,tulle
604 tort,torte
605 torturous,tortuous
606 towed,toad,toed
607 tracked,tract
608 trader,traitor
609 troop,troupe
610 trust,trussed
611 tucks,tux
612 turbine,turban
613 turn,tern
614 tutor,Tudor,tooter
615 undo,undue
616 use,ewes,yews
617 utter,udder
618 vain,vein,vane
619 valence,valance
620 variants,variance
621 veil,vale
622 vein,vane
623 Venus,venous
624 versus,verses
625 very,vary
626 vice,vise
627 vile,vial
628 wade,weighed
629 wait,weight
630 waiter,wader
631 Wales,whales,wails
632 walk,wok
633 want,wont
634 war,wore
635 ward,word
636 waste,waist
637 wave,waive
638 wax,whacks
639 way,weigh,whey
640 Wayne,wane,wain
641 ways,weighs
642 we,wee
643 we'd,weed
644 we'll,wheel
645 we've,weave
646 wears,where's,wares
647 week,weak
648 weekly,weakly
649 were,whir,we're
650 wet,whet
651 whale,wail,wale
652 wheeled,wield
653 where,wear,ware
654 whether,weather,wether
655 whether,weather
656 which,witch
657 while,wile
658 whoa,woe
659 whole,hole
660 whose,who's
661 wind,whined,wined
662 wine,whine
663 with,width
664 word,whirred
665 world,whirled,whorled
666 worn,warn
667 would,wood
668 wrap,rap
669 wrapped,rapped,rapt
670 wrapper,rapper
671 wreak,reek
672 wretch,retch
673 wrote,rote
674 yoke,yolk
675 you,yew,ewe
676 you'll,Yule
677 your,you're,yore
+243
View File
@@ -0,0 +1,243 @@
import os
from talon import Context, Module, actions, app, clip, fs, imgui, ui
########################################################################
# global settings
########################################################################
# a list of homophones where each line is a comma separated list
# e.g. where,wear,ware
# a suitable one can be found here:
# https://github.com/pimentel/homophones
cwd = os.path.dirname(os.path.realpath(__file__))
homophones_file = os.path.join(cwd, "homophones.csv")
# if quick_replace, then when a word is selected and only one homophone exists,
# replace it without bringing up the options
quick_replace = True
show_help = False
########################################################################
ctx = Context()
mod = Module()
mod.list("homophones_canonicals", desc="list of words ")
mod.tag(
"homophones_open",
desc="Tag for enabling homophones commands when the associated gui is open",
)
main_screen = ui.main_screen()
def update_homophones(name, flags):
if name != homophones_file:
return
phones = {}
canonical_list = []
with open(homophones_file) as f:
for line in f:
words = line.rstrip().split(",")
words = [x for x in words if x.strip() != ""]
canonical_list.append(words[0])
merged_words = set(words)
for word in words:
old_words = phones.get(word.lower(), [])
merged_words.update(old_words)
merged_words = sorted(merged_words)
for word in merged_words:
phones[word.lower()] = merged_words
global all_homophones
all_homophones = phones
ctx.lists["self.homophones_canonicals"] = canonical_list
update_homophones(homophones_file, None)
fs.watch(cwd, update_homophones)
active_word_list = None
is_selection = False
def close_homophones():
gui.hide()
ctx.tags = []
PHONES_FORMATTERS = [
lambda word: word.capitalize(),
lambda word: word.upper(),
]
def find_matching_format_function(word_with_formatting, format_functions):
"""Finds the formatter function from a list of formatter functions which transforms a word into itself.
Returns an identity function if none exists"""
for formatter in format_functions:
formatted_word = formatter(word_with_formatting)
if word_with_formatting == formatted_word:
return formatter
return lambda word: word
def raise_homophones(word_to_find_homophones_for, forced=False, selection=False):
global quick_replace
global active_word_list
global show_help
global force_raise
global is_selection
force_raise = forced
is_selection = selection
if is_selection:
word_to_find_homophones_for = word_to_find_homophones_for.strip()
formatter = find_matching_format_function(
word_to_find_homophones_for, PHONES_FORMATTERS
)
word_to_find_homophones_for = word_to_find_homophones_for.lower()
# We support plurals, but very naively. If we can't find your word but your word ends in an s, presume its plural
# and attempt to find the singular, then present the presumed plurals back. This could be improved!
if word_to_find_homophones_for in all_homophones:
valid_homophones = all_homophones[word_to_find_homophones_for]
elif (
word_to_find_homophones_for.endswith("s")
and word_to_find_homophones_for[:-1] in all_homophones
):
valid_homophones = map(
lambda w: w + "s", all_homophones[word_to_find_homophones_for[:-1]]
)
else:
app.notify(
"homophones.py", f'"{word_to_find_homophones_for}" not in homophones list'
)
return
# Move current word to end of list to reduce searcher's cognitive load
valid_homophones_reordered = list(
filter(
lambda word_from_list: word_from_list.lower()
!= word_to_find_homophones_for,
valid_homophones,
)
) + [word_to_find_homophones_for]
active_word_list = list(map(formatter, valid_homophones_reordered))
if (
is_selection
and len(active_word_list) == 2
and quick_replace
and not force_raise
):
if word_to_find_homophones_for == active_word_list[0].lower():
new = active_word_list[1]
else:
new = active_word_list[0]
clip.set(new)
actions.edit.paste()
return
ctx.tags = ["user.homophones_open"]
show_help = False
gui.show()
@imgui.open(x=main_screen.x + main_screen.width / 2.6, y=main_screen.y)
def gui(gui: imgui.GUI):
global active_word_list
if show_help:
gui.text("Homophone help - todo")
else:
gui.text("Select a homophone")
gui.line()
index = 1
for word in active_word_list:
if gui.button(f"Choose {index}: {word}"):
actions.insert(actions.user.homophones_select(index))
actions.user.homophones_hide()
index = index + 1
if gui.button("Phones (hide | exit)"):
actions.user.homophones_hide()
def show_help_gui():
global show_help
show_help = True
gui.show()
@mod.capture(rule="{self.homophones_canonicals}")
def homophones_canonical(m) -> str:
"Returns a single string"
return m.homophones_canonicals
@mod.action_class
class Actions:
def homophones_hide():
"""Hides the homophones display"""
close_homophones()
def homophones_show(m: str):
"""Show the homophones display"""
raise_homophones(m, False, False)
def homophones_show_auto():
"""Show homophones for selection, or current word if selection is empty."""
text = actions.edit.selected_text()
if text:
raise_homophones(text, False, True)
else:
actions.edit.select_word()
actions.user.homophones_show_selection()
def homophones_show_selection():
"""Show the homophones display for the selected text"""
raise_homophones(actions.edit.selected_text(), False, True)
def homophones_force_show(m: str):
"""Show the homophones display forcibly"""
raise_homophones(m, True, False)
def homophones_force_show_selection():
"""Show the homophones display for the selected text forcibly"""
raise_homophones(actions.edit.selected_text(), True, True)
def homophones_select(number: int) -> str:
"""selects the homophone by number"""
if number <= len(active_word_list) and number > 0:
return active_word_list[number - 1]
error = "homophones.py index {} is out of range (1-{})".format(
number, len(active_word_list)
)
app.notify(error)
raise error
def homophones_get(word: str) -> [str] or None:
"""Get homophones for the given word"""
word = word.lower()
if word in all_homophones:
return all_homophones[word]
return None
ctx_homophones_open = Context()
ctx_homophones_open.matches = """
tag: user.homophones_open
"""
@ctx_homophones_open.action_class("user")
class UserActions:
def choose(number_small: int):
"""Choose the nth homophone"""
result = actions.user.homophones_select(number_small)
actions.insert(result)
actions.user.homophones_hide()
@@ -0,0 +1,19 @@
phones <user.homophones_canonical>: user.homophones_show(homophones_canonical)
phones that: user.homophones_show_auto()
phones force <user.homophones_canonical>:
user.homophones_force_show(homophones_canonical)
phones force: user.homophones_force_show_selection()
phones (hide | exit): user.homophones_hide()
phones word:
edit.select_word()
user.homophones_show_selection()
phones [<user.ordinals>] word left:
n = ordinals or 1
user.words_left(n - 1)
edit.extend_word_left()
user.homophones_show_selection()
phones [<user.ordinals>] word right:
n = ordinals or 1
user.words_right(n - 1)
edit.extend_word_right()
user.homophones_show_selection()
@@ -0,0 +1,7 @@
tag: user.homophones_open
-
choose <user.formatters> <number_small>:
result = user.homophones_select(number_small)
insert(user.formatted_text(result, formatters))
user.homophones_hide()