commit 29e8b1da321793cb5d9c5397381d03d5be57d481 Author: Matěj Cepl Date: Wed Sep 14 10:19:13 2022 +0200 Before git conversion diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..088f816 --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +.osc +build.specials.obscpio +series +*.obscpio +neovim/ diff --git a/20131-hunspell.patch b/20131-hunspell.patch new file mode 100644 index 0000000..ca9d1c2 --- /dev/null +++ b/20131-hunspell.patch @@ -0,0 +1,5165 @@ +From cc86173b2d3f505ff2d08313e500301ebe65cee0 Mon Sep 17 00:00:00 2001 +From: Thomas Vigouroux +Date: Fri, 9 Sep 2022 15:21:17 +0200 +Subject: [PATCH 1/5] fixup! add benchmark data + +--- + CMakeLists.txt | 7 + cmake/FindHunspell.cmake | 11 + nvim_hunspell/builtin.lua | 57 + nvim_hunspell/words | 4291 ++++++++++++++++++++++++++++++++++++++ + src/hunspell/hunspell_wrapper.cpp | 78 + src/hunspell/hunspell_wrapper.h | 39 + src/nvim/CMakeLists.txt | 5 + src/nvim/buffer_defs.h | 5 + src/nvim/optionstr.c | 4 + src/nvim/spell.c | 161 + + src/nvim/spell_defs.h | 10 + src/nvim/spellfile.c | 86 + src/nvim/spellsuggest.c | 147 - + 14 files changed, 4778 insertions(+), 124 deletions(-) + create mode 100644 nvim_hunspell/builtin.lua + create mode 100644 nvim_hunspell/words + +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -4,7 +4,7 @@ + + # Version should match the tested CMAKE_URL in .github/workflows/ci.yml. + cmake_minimum_required(VERSION 3.10) +-project(nvim C) ++project(nvim C CXX) + + if(POLICY CMP0075) + cmake_policy(SET CMP0075 NEW) +@@ -504,6 +504,11 @@ endif() + find_package(LIBVTERM 0.1 REQUIRED) + include_directories(SYSTEM ${LIBVTERM_INCLUDE_DIRS}) + ++find_package(Hunspell REQUIRED) ++include_directories(SYSTEM ${Hunspell_INCLUDE_DIRS}) ++list(APPEND CMAKE_REQUIRED_INCLUDES "${Hunspell_INCLUDE_DIRS}") ++list(APPEND CMAKE_REQUIRED_LIBRARIES "${Hunspell_LIBRARIES}") ++ + option(CLANG_ASAN_UBSAN "Enable Clang address & undefined behavior sanitizer for nvim binary." OFF) + option(CLANG_MSAN "Enable Clang memory sanitizer for nvim binary." OFF) + option(CLANG_TSAN "Enable Clang thread sanitizer for nvim binary." OFF) +--- /dev/null ++++ b/cmake/FindHunspell.cmake +@@ -0,0 +1,11 @@ ++# - Try to find hunspell ++# Once done, this will define ++# ++# Hunspell_FOUND - system has hunspell ++# Hunspell_INCLUDE_DIRS - the hunspell include directories ++# Hunspell_LIBRARIES - link these to use hunspell ++ ++include(LibFindMacros) ++ ++libfind_pkg_detect(Hunspell hunspell FIND_PATH hunspell/hunspell.h FIND_LIBRARY hunspell) ++libfind_process(Hunspell) +--- /dev/null ++++ b/nvim_hunspell/builtin.lua +@@ -0,0 +1,57 @@ ++vim.o.spelloptions = "" ++vim.o.spelllang = "en" ++vim.o.spell = true ++ ++local spell_time = 0 ++local sugg_time = 0 ++local ITERATIONS = 10 ++ ++local function time(func, ...) ++ local start_time = vim.loop.hrtime() ++ local res = func(...) ++ return vim.loop.hrtime() - start_time, res ++end ++ ++local spell_errors = 0 ++local sugg_errors = 0 ++for i = 1, ITERATIONS do ++ local file = io.open("words", "r") ++ if not file then ++ error "Could not open wordlist" ++ end ++ ++ print(i) ++ spell_errors = 0 ++ for line in function() return file:read "*l" end do ++ local bad, suggs_plain = unpack(vim.split(line, "\t", { plain = true })) ++ print(bad) ++ ++ local suggs = vim.split(suggs_plain, ', ', { plain = true, trimempty = true }) ++ ++ local stime, bad_spell = time(vim.spell.check, bad) ++ spell_time = spell_time + stime ++ bad_spell = bad_spell[1] ++ ++ if bad_spell and bad ~= bad_spell[1] then ++ if #suggs > 0 then ++ spell_errors = spell_errors + 1 ++ end ++ end ++ ++ local sug_dtime, ret_suggs = time(vim.fn.spellsuggest, bad) ++ sugg_time = sugg_time + sug_dtime ++ ++ for _, s in ipairs(suggs) do ++ if not vim.tbl_contains(ret_suggs, s) then ++ sugg_errors = spell_errors + 1 ++ end ++ end ++ end ++end ++ ++-- nr iterations + conversion from nanos to millis ++local factor = ITERATIONS * 1000 * 1000 ++print(spell_errors, spell_time / factor) ++print(sugg_errors, sugg_time / factor) ++ ++vim.cmd.quit() +--- /dev/null ++++ b/nvim_hunspell/words +@@ -0,0 +1,4291 @@ ++abandonned abandoned ++aberation aberration ++abilityes abilities ++abilties abilities ++abilty ability ++abondon abandon ++abbout about ++abotu about ++abouta about a ++aboutit about it ++aboutthe about the ++abscence absence ++abondoned abandoned ++abondoning abandoning ++abondons abandons ++aborigene aborigine ++accesories accessories ++accidant accident ++abortificant abortifacient ++abreviate abbreviate ++abreviated abbreviated ++abreviation abbreviation ++abritrary arbitrary ++absail abseil ++absailing abseiling ++absense absence ++absolutly absolutely ++absorbsion absorption ++absorbtion absorption ++abudance abundance ++abundacies abundances ++abundancies abundances ++abundunt abundant ++abutts abuts ++acadamy academy ++acadmic academic ++accademic academic ++accademy academy ++acccused accused ++accelleration acceleration ++accension accession, ascension ++acceptence acceptance ++acceptible acceptable ++accessable accessible ++acident accident ++accidentaly accidentally ++accidently accidentally ++acclimitization acclimatization ++accomadate accommodate ++accomadated accommodated ++accomadates accommodates ++accomadating accommodating ++accomadation accommodation ++accomadations accommodations ++accomdate accommodate ++accomodate accommodate ++accomodated accommodated ++accomodates accommodates ++accomodating accommodating ++accomodation accommodation ++accomodations accommodations ++accompanyed accompanied ++accordeon accordion ++accordian accordion ++accoring according ++accoustic acoustic ++accquainted acquainted ++accrediation accreditation ++accredidation accreditation ++accross across ++accussed accused ++acedemic academic ++acheive achieve ++acheived achieved ++acheivement achievement ++acheivements achievements ++acheives achieves ++acheiving achieving ++acheivment achievement ++acheivments achievements ++achievment achievement ++achievments achievements ++achive achieve, archive ++achived achieved, archived ++achivement achievement ++achivements achievements ++acknowldeged acknowledged ++acknowledgeing acknowledging ++ackward awkward, backward ++acommodate accommodate ++acomplish accomplish ++acomplished accomplished ++acomplishment accomplishment ++acomplishments accomplishments ++acording according ++acordingly accordingly ++acquaintence acquaintance ++acquaintences acquaintances ++acquiantence acquaintance ++acquiantences acquaintances ++acquited acquitted ++activites activities ++activly actively ++actualy actually ++acuracy accuracy ++acused accused ++acustom accustom ++acustommed accustomed ++adavanced advanced ++adbandon abandon ++addional additional ++addionally additionally ++additinally additionally ++additionaly additionally ++additonal additional ++additonally additionally ++addmission admission ++addopt adopt ++addopted adopted ++addoptive adoptive ++addres address, adders ++addresable addressable ++addresed addressed ++addresing addressing ++addressess addresses ++addtion addition ++addtional additional ++adecuate adequate ++adequit adequate ++adhearing adhering ++adherance adherence ++admendment amendment ++admininistrative administrative ++adminstered administered ++adminstrate administrate ++adminstration administration ++adminstrative administrative ++adminstrator administrator ++admissability admissibility ++admissable admissible ++admited admitted ++admitedly admittedly ++adolecent adolescent ++adquire acquire ++adquired acquired ++adquires acquires ++adquiring acquiring ++adres address ++adresable addressable ++adresing addressing ++adress address ++adressable addressable ++adressed addressed ++adressing addressing, dressing ++adventrous adventurous ++advertisment advertisement ++advertisments advertisements ++advesary adversary ++adviced advised ++aeriel aerial ++aeriels aerials ++afair affair ++afficianados aficionados ++afficionado aficionado ++afficionados aficionados ++affilate affiliate ++affilliate affiliate ++affort afford, effort ++aforememtioned aforementioned ++againnst against ++agains against ++agaisnt against ++aganist against ++aggaravates aggravates ++aggreed agreed ++aggreement agreement ++aggregious egregious ++aggregrator aggregator ++aggresive aggressive ++agian again ++agianst against ++agin again ++agina again, angina ++aginst against ++agravate aggravate ++agre agree ++agred agreed ++agreeement agreement ++agreemnt agreement ++agregate aggregate ++agregates aggregates ++agreing agreeing ++agression aggression ++agressive aggressive ++agressively aggressively ++agressor aggressor ++agricultue agriculture ++agriculure agriculture ++agricuture agriculture ++agrieved aggrieved ++ahev have ++ahppen happen ++ahve have ++aicraft aircraft ++aiport airport ++airbourne airborne ++aircaft aircraft ++aircrafts aircraft ++airporta airports ++airrcraft aircraft ++aisian asian ++albiet albeit ++alchohol alcohol ++alchoholic alcoholic ++alchol alcohol ++alcholic alcoholic ++alcohal alcohol ++alcoholical alcoholic ++aledge allege ++aledged alleged ++aledges alleges ++alege allege ++aleged alleged ++alegience allegiance ++algebraical algebraic ++algorhitms algorithms ++algoritm algorithm ++algoritms algorithms ++alientating alienating ++alledge allege ++alledged alleged ++alledgedly allegedly ++alledges alleges ++allegedely allegedly ++allegedy allegedly ++allegely allegedly ++allegence allegiance ++allegience allegiance ++allign align ++alligned aligned ++alliviate alleviate ++allopone allophone ++allopones allophones ++allready already ++allthough although ++alltogether altogether ++almsot almost ++alochol alcohol ++alomst almost ++alot a lot, allot ++alotted allotted ++alowed allowed ++alowing allowing ++alreayd already ++alse else ++alsot also ++alternitives alternatives ++altho although ++althought although ++altough although ++alusion allusion, illusion ++alwasy always ++alwyas always ++amalgomated amalgamated ++amatuer amateur ++amature armature, amateur ++amendmant amendment ++Amercia America ++amerliorate ameliorate ++amke make ++amking making ++ammend amend ++ammended amended ++ammendment amendment ++ammendments amendments ++ammount amount ++ammused amused ++amoung among ++amoungst amongst ++amung among ++amunition ammunition ++analagous analogous ++analitic analytic ++analogeous analogous ++anarchim anarchism ++anarchistm anarchism ++anbd and ++ancestory ancestry ++ancilliary ancillary ++andd and ++androgenous androgynous ++androgeny androgyny ++anihilation annihilation ++aniversary anniversary ++annoint anoint ++annointed anointed ++annointing anointing ++annoints anoints ++annouced announced ++annualy annually ++annuled annulled ++anohter another ++anomolies anomalies ++anomolous anomalous ++anomoly anomaly ++anonimity anonymity ++anounced announced ++anouncement announcement ++ansalisation nasalisation ++ansalization nasalization ++ansestors ancestors ++antartic antarctic ++anthromorphization anthropomorphization ++anthropolgist anthropologist ++anthropolgy anthropology ++anual annual ++anulled annulled ++anwsered answered ++anyhwere anywhere ++anyother any other ++anytying anything ++aparent apparent ++aparment apartment ++apenines apennines, Apennines ++aplication application ++aplied applied ++apolegetics apologetics ++apon upon, apron ++apparant apparent ++apparantly apparently ++appart apart ++appartment apartment ++appartments apartments ++appealling appealing, appalling ++appeareance appearance ++appearence appearance ++appearences appearances ++appenines apennines, Apennines ++apperance appearance ++apperances appearances ++appereance appearance ++appereances appearances ++applicaiton application ++applicaitons applications ++appologies apologies ++appology apology ++apprearance appearance ++apprieciate appreciate ++approachs approaches ++appropiate appropriate ++appropraite appropriate ++appropropiate appropriate ++approproximate approximate ++approxamately approximately ++approxiately approximately ++approximitely approximately ++aprehensive apprehensive ++apropriate appropriate ++aproval approval ++aproximate approximate ++aproximately approximately ++aquaduct aqueduct ++aquaintance acquaintance ++aquainted acquainted ++aquiantance acquaintance ++aquire acquire ++aquired acquired ++aquiring acquiring ++aquisition acquisition ++aquitted acquitted ++aranged arranged ++arangement arrangement ++arbitarily arbitrarily ++arbitary arbitrary ++archaelogical archaeological ++archaelogists archaeologists ++archaelogy archaeology ++archaoelogy archeology, archaeology ++archaology archeology, archaeology ++archeaologist archeologist, archaeologist ++archeaologists archeologists, archaeologists ++archetect architect ++archetects architects ++archetectural architectural ++archetecturally architecturally ++archetecture architecture ++archiac archaic ++archictect architect ++archimedian archimedean ++architecht architect ++architechturally architecturally ++architechture architecture ++architechtures architectures ++architectual architectural ++archtype archetype ++archtypes archetypes ++aready already ++areodynamics aerodynamics ++argubly arguably ++arguement argument ++arguements arguments ++arised arose ++arival arrival ++armamant armament ++armistace armistice ++arogant arrogant ++arogent arrogant ++aroud around ++arrangment arrangement ++arrangments arrangements ++arrengement arrangement ++arrengements arrangements ++arround around ++artcile article ++artical article ++artice article ++articel article ++artifical artificial ++artifically artificially ++artillary artillery ++arund around ++asetic ascetic ++asfar as far ++asign assign ++aslo also ++asociated associated ++asorbed absorbed ++asphyxation asphyxiation ++assasin assassin ++assasinate assassinate ++assasinated assassinated ++assasinates assassinates ++assasination assassination ++assasinations assassinations ++assasined assassinated ++assasins assassins ++assassintation assassination ++assemple assemble ++assertation assertion ++asside aside ++assisnate assassinate ++assit assist ++assitant assistant ++assocation association ++assoicate associate ++assoicated associated ++assoicates associates ++assosication assassination ++asssassans assassins ++assualt assault ++assualted assaulted ++assymetric asymmetric ++assymetrical asymmetrical ++asteriod asteroid ++asthetic aesthetic ++asthetical aesthetical ++asthetically aesthetically ++asume assume ++aswell as well ++atain attain ++atempting attempting ++atheistical atheistic ++athenean athenian ++atheneans athenians ++athiesm atheism ++athiest atheist ++atorney attorney ++atribute attribute ++atributed attributed ++atributes attributes ++attaindre attainder, attained ++attemp attempt ++attemped attempted ++attemt attempt ++attemted attempted ++attemting attempting ++attemts attempts ++attendence attendance ++attendent attendant ++attendents attendants ++attened attended ++attension attention ++attitide attitude ++attributred attributed ++attrocities atrocities ++audeince audience ++auromated automated ++austrailia Australia ++austrailian Australian ++auther author ++authobiographic autobiographic ++authobiography autobiography ++authorative authoritative ++authorites authorities ++authorithy authority ++authoritiers authorities ++authoritive authoritative ++authrorities authorities ++autochtonous autochthonous ++autoctonous autochthonous ++automaticly automatically ++automibile automobile ++automonomous autonomous ++autor author ++autority authority ++auxilary auxiliary ++auxillaries auxiliaries ++auxillary auxiliary ++auxilliaries auxiliaries ++auxilliary auxiliary ++availabe available ++availablity availability ++availaible available ++availble available ++availiable available ++availible available ++avalable available ++avalance avalanche ++avaliable available ++avation aviation ++avengence a vengeance ++averageed averaged ++avilable available ++awared awarded ++awya away ++bacame became ++baceause because ++backgorund background ++backrounds backgrounds ++bakc back ++banannas bananas ++bandwith bandwidth ++bankrupcy bankruptcy ++banruptcy bankruptcy ++baout about, bout ++basicaly basically ++basicly basically ++bcak back ++beachead beachhead ++beacuse because ++beastiality bestiality ++beatiful beautiful ++beaurocracy bureaucracy ++beaurocratic bureaucratic ++beautyfull beautiful ++becamae became ++becames becomes, became ++becasue because ++beccause because ++becomeing becoming ++becomming becoming ++becouse because ++becuase because ++bedore before ++beeing being ++befoer before ++beggin begin, begging ++begginer beginner ++begginers beginners ++beggining beginning ++begginings beginnings ++beggins begins ++begining beginning ++beginnig beginning ++behavour behavior, behaviour ++beleagured beleaguered ++beleif belief ++beleive believe ++beleived believed ++beleives believes ++beleiving believing ++beligum belgium ++belive believe ++belived believed, beloved ++belives believes, beliefs ++belligerant belligerent ++bellweather bellwether ++bemusemnt bemusement ++beneficary beneficiary ++beng being ++benificial beneficial ++benifit benefit ++benifits benefits ++bergamont bergamot ++Bernouilli Bernoulli ++beseige besiege ++beseiged besieged ++beseiging besieging ++beteen between ++betwen between ++beween between ++bewteen between ++bigining beginning ++biginning beginning ++bilateraly bilaterally ++billingualism bilingualism ++binominal binomial ++bizzare bizarre ++blaim blame ++blaimed blamed ++blessure blessing ++Blitzkreig Blitzkrieg ++boaut bout, boat, about ++bodydbuilder bodybuilder ++bombardement bombardment ++bombarment bombardment ++bondary boundary ++Bonnano Bonanno ++boook book ++borke broke ++boundry boundary ++bouyancy buoyancy ++bouyant buoyant ++boyant buoyant ++bradcast broadcast ++Brasillian Brazilian ++breakthough breakthrough ++breakthroughts breakthroughs ++breif brief ++breifly briefly ++brethen brethren ++bretheren brethren ++briliant brilliant ++brillant brilliant ++brimestone brimstone ++Britian Britain ++Brittish British ++broacasted broadcast ++broadacasting broadcasting ++broady broadly ++Buddah Buddha ++Buddist Buddhist ++buisness business ++buisnessman businessman ++buoancy buoyancy ++buring burying, burning, burin, during ++burried buried ++busines business ++busineses business, businesses ++busness business ++bussiness business ++caculater calculator ++cacuses caucuses ++cahracters characters ++calaber caliber ++calander calendar, calender, colander ++calculater calculator ++calculs calculus ++calenders calendars ++caligraphy calligraphy ++caluclate calculate ++caluclated calculated ++caluculate calculate ++caluculated calculated ++calulate calculate ++calulated calculated ++calulater calculator ++Cambrige Cambridge ++camoflage camouflage ++campagin campaign ++campain campaign ++campains campaigns ++candadate candidate ++candiate candidate ++candidiate candidate ++cannister canister ++cannisters canisters ++cannnot cannot ++cannonical canonical ++cannotation connotation ++cannotations connotations ++caost coast ++caperbility capability ++Capetown Cape Town ++capible capable ++captial capital ++captued captured ++capturd captured ++carachter character ++caracterized characterized ++carcas carcass, Caracas ++carefull careful ++careing caring ++carismatic charismatic ++Carmalite Carmelite ++Carnagie Carnegie ++Carnagie-Mellon Carnegie-Mellon ++carnege carnage, Carnegie ++carnige carnage, Carnegie ++Carnigie Carnegie ++Carnigie-Mellon Carnegie-Mellon ++carreer career ++carrers careers ++Carribbean Caribbean ++Carribean Caribbean ++carryng carrying ++cartdridge cartridge ++Carthagian Carthaginian ++carthographer cartographer ++cartilege cartilage ++cartilidge cartilage ++cartrige cartridge ++casette cassette ++casion caisson ++cassawory cassowary ++cassowarry cassowary ++casue cause ++casued caused ++casues causes ++casuing causing ++casulaties casualties ++casulaty casualty ++catagories categories ++catagorized categorized ++catagory category ++Cataline Catiline, Catalina ++catapillar caterpillar ++catapillars caterpillars ++catapiller caterpillar ++catapillers caterpillars ++catepillar caterpillar ++catepillars caterpillars ++catergorize categorize ++catergorized categorized ++caterpilar caterpillar ++caterpilars caterpillars ++caterpiller caterpillar ++caterpillers caterpillars ++cathlic catholic ++catholocism catholicism ++catterpilar caterpillar ++catterpilars caterpillars ++catterpillar caterpillar ++catterpillars caterpillars ++cattleship battleship ++causalities casualties ++Ceasar Caesar ++Celcius Celsius ++cellpading cellpadding ++cementary cemetery ++cemetarey cemetery ++cemetaries cemeteries ++cemetary cemetery ++cencus census ++censur censor, censure ++cententenial centennial ++centruies centuries ++centruy century ++centuties centuries ++centuty century ++ceratin certain, keratin ++cerimonial ceremonial ++cerimonies ceremonies ++cerimonious ceremonious ++cerimony ceremony ++ceromony ceremony ++certaintly certainly ++certainity certainty ++certian certain ++cervial cervical, servile, serval ++chalenging challenging ++challange challenge ++challanged challenged ++challege challenge ++Champange Champagne ++changable changeable ++charachter character ++charachters characters ++charactersistic characteristic ++charactor character ++charactors characters ++charasmatic charismatic ++charaterized characterized ++chariman chairman ++charistics characteristics ++chasr chaser, chase ++cheif chief ++cheifs chiefs ++chemcial chemical ++chemcially chemically ++chemestry chemistry ++chemicaly chemically ++childbird childbirth ++childen children ++choclate chocolate ++choosen chosen ++chracter character ++chuch church ++churchs churches ++Cincinatti Cincinnati ++Cincinnatti Cincinnati ++circulaton circulation ++circumsicion circumcision ++circut circuit ++ciricuit circuit ++ciriculum curriculum ++civillian civilian ++claer clear ++claerer clearer ++claerly clearly ++claimes claims ++clas class ++clasic classic ++clasical classical ++clasically classically ++cleareance clearance ++clera clear, sclera ++clincial clinical ++clinicaly clinically ++cmo com ++cmoputer computer ++coctail cocktail ++coform conform ++cognizent cognizant ++coincedentally coincidentally ++colaborations collaborations ++colateral collateral ++colelctive collective ++collaberative collaborative ++collecton collection ++collegue colleague ++collegues colleagues ++collonade colonnade ++collonies colonies ++collony colony ++collosal colossal ++colonizators colonizers ++comander commander, commandeer ++comando commando ++comandos commandos ++comany company ++comapany company ++comback comeback ++combanations combinations ++combinatins combinations ++combusion combustion ++comdemnation condemnation ++comemmorates commemorates ++comemoretion commemoration ++comision commission ++comisioned commissioned ++comisioner commissioner ++comisioning commissioning ++comisions commissions ++comission commission ++comissioned commissioned ++comissioner commissioner ++comissioning commissioning ++comissions commissions ++comited committed ++comiting committing ++comitted committed ++comittee committee ++comitting committing ++commandoes commandos ++commedic comedic ++commemerative commemorative ++commemmorate commemorate ++commemmorating commemorating ++commerical commercial ++commerically commercially ++commericial commercial ++commericially commercially ++commerorative commemorative ++comming coming ++comminication communication ++commision commission ++commisioned commissioned ++commisioner commissioner ++commisioning commissioning ++commisions commissions ++commited committed ++commitee committee ++commiting committing ++committe committee ++committment commitment ++committments commitments ++commmemorated commemorated ++commongly commonly ++commonweath commonwealth ++commuications communications ++commuinications communications ++communciation communication ++communiation communication ++communites communities ++compability compatibility ++comparision comparison ++comparisions comparisons ++comparitive comparative ++comparitively comparatively ++compatabilities compatibilities ++compatability compatibility ++compatable compatible ++compatablities compatibilities ++compatablity compatibility ++compatiable compatible ++compatiblities compatibilities ++compatiblity compatibility ++compeitions competitions ++compensantion compensation ++competance competence ++competant competent ++competative competitive ++competion competition, completion ++competitiion competition ++competive competitive ++competiveness competitiveness ++comphrehensive comprehensive ++compitent competent ++completedthe completed the ++completelyl completely ++completetion completion ++complier compiler ++componant component ++comprable comparable ++comprimise compromise ++compulsary compulsory ++compulsery compulsory ++computarized computerized ++concensus consensus ++concider consider ++concidered considered ++concidering considering ++conciders considers ++concieted conceited ++concieved conceived ++concious conscious ++conciously consciously ++conciousness consciousness ++condamned condemned ++condemmed condemned ++condidtion condition ++condidtions conditions ++conditionsof conditions of ++conected connected ++conection connection ++conesencus consensus ++confidental confidential ++confidentally confidentially ++confids confides ++configureable configurable ++confortable comfortable ++congradulations congratulations ++congresional congressional ++conived connived ++conjecutre conjecture ++conjuction conjunction ++Conneticut Connecticut ++conotations connotations ++conquerd conquered ++conquerer conqueror ++conquerers conquerors ++conqured conquered ++conscent consent ++consciouness consciousness ++consdider consider ++consdidered considered ++consdiered considered ++consectutive consecutive ++consenquently consequently ++consentrate concentrate ++consentrated concentrated ++consentrates concentrates ++consept concept ++consequentually consequently ++consequeseces consequences ++consern concern ++conserned concerned ++conserning concerning ++conservitive conservative ++consiciousness consciousness ++consicousness consciousness ++considerd considered ++consideres considered ++consious conscious ++consistant consistent ++consistantly consistently ++consituencies constituencies ++consituency constituency ++consituted constituted ++consitution constitution ++consitutional constitutional ++consolodate consolidate ++consolodated consolidated ++consonent consonant ++consonents consonants ++consorcium consortium ++conspiracys conspiracies ++conspiriator conspirator ++constaints constraints ++constanly constantly ++constarnation consternation ++constatn constant ++constinually continually ++constituant constituent ++constituants constituents ++constituion constitution ++constituional constitutional ++consttruction construction ++constuction construction ++contstruction construction ++consulant consultant ++consumate consummate ++consumated consummated ++contaiminate contaminate ++containes contains ++contamporaries contemporaries ++contamporary contemporary ++contempoary contemporary ++contemporaneus contemporaneous ++contempory contemporary ++contendor contender ++contian contain ++contians contains ++contibute contribute ++contibuted contributed ++contibutes contributes ++contigent contingent ++contined continued ++continential continental ++continous continuous ++continously continuously ++continueing continuing ++contravercial controversial ++contraversy controversy ++contributer contributor ++contributers contributors ++contritutions contributions ++controled controlled ++controling controlling ++controll control ++controlls controls ++controvercial controversial ++controvercy controversy ++controveries controversies ++controversal controversial ++controversey controversy ++controvertial controversial ++controvery controversy ++contruction construction ++conveinent convenient ++convenant covenant ++convential conventional ++convertables convertibles ++convertion conversion ++conviced convinced ++convienient convenient ++coordiantion coordination ++coorperation cooperation, corporation ++coorperations corporations ++copmetitors competitors ++coputer computer ++copywrite copyright ++coridal cordial ++cornmitted committed ++corosion corrosion ++corparate corporate ++corperations corporations ++correcters correctors ++correponding corresponding ++correposding corresponding ++correspondant correspondent ++correspondants correspondents ++corridoors corridors ++corrispond correspond ++corrispondant correspondent ++corrispondants correspondents ++corrisponded corresponded ++corrisponding corresponding ++corrisponds corresponds ++costitution constitution ++coucil council ++coudl could, cloud ++councellor councillor, counselor, councilor ++councellors councillors, counselors, councilors ++counries countries ++countains contains ++countires countries ++coururier courier, couturier ++coverted converted, covered, coveted ++cpoy coy, copy ++creaeted created ++creche crèche ++creedence credence ++critereon criterion ++criterias criteria ++criticists critics ++critising criticising, criticizing ++critisising criticising ++critisism criticism ++critisisms criticisms ++critisize criticise, criticize ++critisized criticised, criticized ++critisizes criticises, criticizes ++critisizing criticising, criticizing ++critized criticized ++critizing criticizing ++crockodiles crocodiles ++crowm crown ++crtical critical ++crticised criticised ++crucifiction crucifixion ++crusies cruises ++crutial crucial ++crystalisation crystallisation ++culiminating culminating ++cumulatative cumulative ++curch church ++curcuit circuit ++currenly currently ++curriculem curriculum ++cxan cyan ++cyclinder cylinder ++dacquiri daiquiri ++daed dead ++dael deal, dial, dahl ++dalmation dalmatian ++damenor demeanor ++dammage damage ++Dardenelles Dardanelles ++daugher daughter ++debateable debatable ++decendant descendant ++decendants descendants ++decendent descendant ++decendents descendants ++decideable decidable ++decidely decidedly ++decieved deceived ++decison decision ++decomissioned decommissioned ++decomposit decompose ++decomposited decomposed ++decompositing decomposing ++decomposits decomposes ++decress decrees ++decribe describe ++decribed described ++decribes describes ++decribing describing ++dectect detect ++defendent defendant ++defendents defendants ++deffensively defensively ++deffine define ++deffined defined ++definance defiance ++definate definite ++definately definitely ++definatly definitely ++definetly definitely ++definining defining ++definit definite ++definitly definitely ++definiton definition ++defintion definition ++degrate degrade ++delagates delegates ++delapidated dilapidated ++delerious delirious ++delevopment development ++deliberatly deliberately ++delusionally delusively ++demenor demeanor ++demographical demographic ++demolision demolition ++demorcracy democracy ++demostration demonstration ++denegrating denigrating ++densly densely ++deparment department ++deparmental departmental ++deparments departments ++dependance dependence ++dependancy dependency ++deram dram, dream ++deriviated derived ++derivitive derivative ++derogitory derogatory ++descendands descendants ++descibed described ++descision decision ++descisions decisions ++descriibes describes ++descripters descriptors ++descripton description ++desctruction destruction ++descuss discuss ++desgined designed ++deside decide ++desigining designing ++desinations destinations ++desintegrated disintegrated ++desintegration disintegration ++desireable desirable ++desitned destined ++desktiop desktop ++desorder disorder ++desoriented disoriented ++desparate desperate, disparate ++despict depict ++despiration desperation ++dessicated desiccated ++dessigned designed ++destablized destabilized ++destory destroy ++detailled detailed ++detatched detached ++deteoriated deteriorated ++deteriate deteriorate ++deterioriating deteriorating ++determinining determining ++detremental detrimental ++devasted devastated ++develope develop ++developement development ++developped developed ++develpment development ++devels delves ++devestated devastated ++devestating devastating ++devide divide ++devided divided ++devistating devastating ++devolopement development ++diablical diabolical ++diamons diamonds ++diaster disaster ++dichtomy dichotomy ++diconnects disconnects ++dicover discover ++dicovered discovered ++dicovering discovering ++dicovers discovers ++dicovery discovery ++dictionarys dictionaries ++dicussed discussed ++diea idea, die ++dieing dying, dyeing ++dieties deities ++diety deity ++diferent different ++diferrent different ++differentiatiations differentiations ++differnt different ++difficulity difficulty ++diffrent different ++dificulties difficulties ++dificulty difficulty ++dimenions dimensions ++dimention dimension ++dimentional dimensional ++dimentions dimensions ++dimesnional dimensional ++diminuitive diminutive ++dimunitive diminutive ++diosese diocese ++diphtong diphthong ++diphtongs diphthongs ++diplomancy diplomacy ++dipthong diphthong ++dipthongs diphthongs ++directoty directory ++dirived derived ++disagreeed disagreed ++disapeared disappeared ++disapointing disappointing ++disappearred disappeared ++disaproval disapproval ++disasterous disastrous ++disatisfaction dissatisfaction ++disatisfied dissatisfied ++disatrous disastrous ++discontentment discontent ++discribe describe ++discribed described ++discribes describes ++discribing describing ++disctinction distinction ++disctinctive distinctive ++disemination dissemination ++disenchanged disenchanted ++disiplined disciplined ++disobediance disobedience ++disobediant disobedient ++disolved dissolved ++disover discover ++dispair despair ++disparingly disparagingly ++dispence dispense ++dispenced dispensed ++dispencing dispensing ++dispicable despicable ++dispite despite ++dispostion disposition ++disproportiate disproportionate ++disputandem disputandum ++disricts districts ++dissagreement disagreement ++dissapear disappear ++dissapearance disappearance ++dissapeared disappeared ++dissapearing disappearing ++dissapears disappears ++dissappear disappear ++dissappears disappears ++dissappointed disappointed ++dissarray disarray ++dissobediance disobedience ++dissobediant disobedient ++dissobedience disobedience ++dissobedient disobedient ++distiction distinction ++distingish distinguish ++distingished distinguished ++distingishes distinguishes ++distingishing distinguishing ++distingquished distinguished ++distrubution distribution ++distruction destruction ++distructive destructive ++ditributed distributed ++diversed diverse, diverged ++divice device ++divinition divination ++divison division ++divisons divisions ++dum dumb ++doccument document ++doccumented documented ++doccuments documents ++docrines doctrines ++doctines doctrines ++documenatry documentary ++doens does ++doign doing ++dominaton domination ++dominent dominant ++dominiant dominant ++donig doing ++doub doubt, daub ++doulbe double ++dowloads downloads ++dramtic dramatic ++draughtman draughtsman ++Dravadian Dravidian ++dreasm dreams ++driectly directly ++drnik drink ++druming drumming ++drummless drumless ++dupicate duplicate ++durig during ++durring during ++duting during ++dyas dryas ++eahc each ++ealier earlier ++earlies earliest ++earnt earned ++ecclectic eclectic ++eceonomy economy ++ecidious deciduous ++eclispe eclipse ++ecomonic economic ++econoımic economic ++econoimic economic ++ect etc ++eearly early ++efel evil ++effeciency efficiency ++effecient efficient ++effeciently efficiently ++efficency efficiency ++efficent efficient ++efficently efficiently ++efford effort, afford ++effords efforts, affords ++effulence effluence ++eigth eighth, eight ++eiter either ++elction election ++electic eclectic, electric ++electon election, electron ++electrial electrical ++electricly electrically ++electricty electricity ++elementay elementary ++eleminated eliminated ++eleminating eliminating ++eles eels ++eletricity electricity ++elicided elicited ++eligable eligible ++elimentary elementary ++ellected elected ++elphant elephant ++embarass embarrass ++embarassed embarrassed ++embarassing embarrassing ++embarassment embarrassment ++embargos embargoes ++embarras embarrass ++embarrased embarrassed ++embarrasing embarrassing ++embarrasment embarrassment ++embezelled embezzled ++emblamatic emblematic ++eminate emanate ++eminated emanated ++emision emission ++emited emitted ++emiting emitting ++emition emission, emotion ++emmediately immediately ++emmigrated emigrated, immigrated ++emminent eminent, imminent ++emminently eminently ++emmisaries emissaries ++emmisarries emissaries ++emmisarry emissary ++emmisary emissary ++emmision emission ++emmisions emissions ++emmited emitted ++emmiting emitting ++emmitted emitted ++emmitting emitting ++emnity enmity ++emperical empirical ++emphaised emphasised ++emphsis emphasis ++emphysyma emphysema ++empirial empirical, imperial ++emporer emperor ++emprisoned imprisoned ++enameld enameled ++enchancement enhancement ++encouraing encouraging ++encryptiion encryption ++encylopedia encyclopedia ++endevors endeavors ++endevour endeavour ++endig ending ++endolithes endoliths ++enduce induce ++ened need ++enforceing enforcing ++engagment engagement ++engeneer engineer ++engeneering engineering ++engieneer engineer ++engieneers engineers ++enlargment enlargement ++enlargments enlargements ++Enlish English, enlist ++enourmous enormous ++enourmously enormously ++ensconsed ensconced ++entaglements entanglements ++enteratinment entertainment ++enthusiatic enthusiastic ++entitity entity ++entitlied entitled ++entrepeneur entrepreneur ++entrepeneurs entrepreneurs ++enviorment environment ++enviormental environmental ++enviormentally environmentally ++enviorments environments ++enviornment environment ++enviornmental environmental ++enviornmentalist environmentalist ++enviornmentally environmentally ++enviornments environments ++enviroment environment ++enviromental environmental ++enviromentalist environmentalist ++enviromentally environmentally ++enviroments environments ++envolutionary evolutionary ++envrionments environments ++enxt next ++epidsodes episodes ++epsiode episode ++equialent equivalent ++equalibrium equilibrium ++equelibrium equilibrium ++equilibium equilibrium ++equilibrum equilibrium ++equiped equipped ++equippment equipment ++equitorial equatorial ++equivelant equivalent ++equivelent equivalent ++equivilant equivalent ++equivilent equivalent ++equivlalent equivalent ++erally orally, really ++eratic erratic ++eratically erratically ++eraticly erratically ++erested arrested, erected ++errupted erupted ++esential essential ++esitmated estimated ++esle else ++especialy especially ++essencial essential ++essense essence ++essentail essential ++essentialy essentially ++essentual essential ++essesital essential ++estabishes establishes ++establising establishing ++ethnocentricm ethnocentrism ++ethose those, ethos ++Europian European ++Europians Europeans ++Eurpean European ++Eurpoean European ++evenhtually eventually ++eventally eventually ++eventhough even though ++eventially eventually ++eventualy eventually ++everthing everything ++everytime every time ++everyting everything ++eveyr every ++evidentally evidently ++exagerate exaggerate ++exagerated exaggerated ++exagerates exaggerates ++exagerating exaggerating ++exagerrate exaggerate ++exagerrated exaggerated ++exagerrates exaggerates ++exagerrating exaggerating ++examinated examined ++exampt exempt ++exapansion expansion ++excact exact ++excange exchange ++excecute execute ++excecuted executed ++excecutes executes ++excecuting executing ++excecution execution ++excedded exceeded ++excelent excellent ++excell excel ++excellance excellence ++excellant excellent ++excells excels ++excercise exercise ++exchanching exchanging ++excisted existed ++exculsivly exclusively ++execising exercising ++exection execution ++exectued executed ++exeedingly exceedingly ++exelent excellent ++exellent excellent ++exemple example ++exept except ++exeptional exceptional ++exerbate exacerbate ++exerbated exacerbated ++exerciese exercises ++exerpt excerpt ++exerpts excerpts ++exersize exercise ++exerternal external ++exhalted exalted ++exhibtion exhibition ++exibition exhibition ++exibitions exhibitions ++exicting exciting ++exinct extinct ++existance existence ++existant existent ++existince existence ++exliled exiled ++exludes excludes ++exmaple example ++exonorate exonerate ++exoskelaton exoskeleton ++expalin explain ++expatriot expatriate ++expeced expected ++expecially especially ++expeditonary expeditionary ++expeiments experiments ++expell expel ++expells expels ++experiance experience ++experianced experienced ++expiditions expeditions ++expierence experience ++explaination explanation ++explaning explaining ++explictly explicitly ++exploititive exploitative ++explotation exploitation ++expropiated expropriated ++expropiation expropriation ++exressed expressed ++extemely extremely ++extention extension ++extentions extensions ++extered exerted ++extermist extremist ++extint extinct, extant ++extradiction extradition ++extraterrestial extraterrestrial ++extraterrestials extraterrestrials ++extravagent extravagant ++extrememly extremely ++extremeophile extremophile ++extremly extremely ++extrordinarily extraordinarily ++extrordinary extraordinary ++eyar year, eyas ++eyars years, eyas ++eyasr years, eyas ++faciliate facilitate ++faciliated facilitated ++faciliates facilitates ++facilites facilities ++facillitate facilitate ++facinated fascinated ++facist fascist ++familes families ++familliar familiar ++famoust famous ++fanatism fanaticism ++Farenheit Fahrenheit ++fatc fact ++faught fought ++favoutrable favourable ++feasable feasible ++Febuary February ++Feburary February ++fedreally federally ++femminist feminist ++feromone pheromone ++fertily fertility ++fianite finite ++fianlly finally ++ficticious fictitious ++fictious fictitious ++fidn find ++fiel feel, field, file, phial ++fiels feels, fields, files, phials ++fiercly fiercely ++fightings fighting ++filiament filament ++fimilies families ++finacial financial ++finaly finally ++financialy financially ++firends friends ++firts flirts, first ++fisionable fissionable ++flamable flammable ++flawess flawless ++fleed fled, freed ++Flemmish Flemish ++florescent fluorescent ++flourescent fluorescent ++flourine fluorine ++fluorish flourish ++flourishment flourishing ++follwoing following ++folowing following ++fomed formed ++fomr from, form ++fonetic phonetic ++fontrier fontier ++foootball football ++forbad forbade ++forbiden forbidden ++foreward foreword ++forfiet forfeit ++forhead forehead ++foriegn foreign ++Formalhaut Fomalhaut ++formallize formalize ++formallized formalized ++formaly formally, formerly ++formelly formerly ++formidible formidable ++formost foremost ++forsaw foresaw ++forseeable foreseeable ++fortelling foretelling ++forunner forerunner ++foucs focus ++foudn found ++fougth fought ++foundaries foundries ++foundary foundry ++Foundland Newfoundland ++fourties forties ++fourty forty ++fouth fourth ++foward forward ++Fransiscan Franciscan ++Fransiscans Franciscans ++freind friend ++freindly friendly ++frequentily frequently ++frome from ++fromed formed ++froniter frontier ++fucntion function ++fucntioning functioning ++fufill fulfill ++fufilled fulfilled ++fulfiled fulfilled ++fullfill fulfill ++fullfilled fulfilled ++fundametal fundamental ++fundametals fundamentals ++funguses fungi ++funtion function ++furuther further ++futher further ++futhermore furthermore ++futhroc futhark, futhorc ++gae game, Gael, gale ++galatic galactic ++Galations Galatians ++gallaxies galaxies ++galvinized galvanized ++Gameboy Game Boy ++ganerate generate ++ganes games ++ganster gangster ++garantee guarantee ++garanteed guaranteed ++garantees guarantees ++gardai gardaí ++garnison garrison ++gauarana guaraná ++gaurantee guarantee ++gauranteed guaranteed ++gaurantees guarantees ++gaurd guard, gourd ++gaurentee guarantee ++gaurenteed guaranteed ++gaurentees guarantees ++geneological genealogical ++geneologies genealogies ++geneology genealogy ++generaly generally ++generatting generating ++genialia genitalia ++geographicial geographical ++geometrician geometer ++geometricians geometers ++gerat great ++Ghandi Gandhi ++glamourous glamorous ++glight flight ++gnawwed gnawed ++godess goddess ++godesses goddesses ++Godounov Godunov ++gogin going, Gauguin ++goign going ++gonig going ++Gothenberg Gothenburg ++Gottleib Gottlieb ++gouvener governor ++govement government ++govenment government ++govenrment government ++goverance governance ++goverment government ++govermental governmental ++governer governor ++governmnet government ++govorment government ++govormental governmental ++govornment government ++gracefull graceful ++graet great ++grafitti graffiti ++gramatically grammatically ++grammaticaly grammatically ++grammer grammar ++grat great ++gratuitious gratuitous ++greatful grateful ++greatfully gratefully ++greif grief ++gridles griddles ++gropu group ++grwo grow ++Guaduloupe Guadalupe, Guadeloupe ++Guadulupe Guadalupe, Guadeloupe ++guage gauge ++guarentee guarantee ++guarenteed guaranteed ++guarentees guarantees ++Guatamala Guatemala ++Guatamalan Guatemalan ++guerrila guerrilla ++guerrilas guerrillas ++guidence guidance ++Guilia Giulia ++Guilio Giulio ++Guiness Guinness ++Guiseppe Giuseppe ++gunanine guanine ++gurantee guarantee ++guranteed guaranteed ++gurantees guarantees ++guttaral guttural ++gutteral guttural ++habaeus habeas ++habeus habeas ++Habsbourg Habsburg ++haemorrage haemorrhage ++haev have, heave ++halarious hilarious ++halp help ++hapen happen ++hapened happened ++hapening happening ++happend happened ++happended happened ++happenned happened ++harased harassed ++harases harasses ++harasment harassment ++harasments harassments ++harassement harassment ++harras harass ++harrased harassed ++harrases harasses ++harrasing harassing ++harrasment harassment ++harrasments harassments ++harrassed harassed ++harrasses harassed ++harrassing harassing ++harrassment harassment ++harrassments harassments ++Hatian Haitian ++haviest heaviest ++headquarer headquarter ++headquater headquarter ++headquatered headquartered ++headquaters headquarters ++healthercare healthcare ++heared heard ++heathy healthy ++Heidelburg Heidelberg ++heigher higher ++heirarchy hierarchy ++heiroglyphics hieroglyphics ++helment helmet ++helpfull helpful ++helpped helped ++hemmorhage hemorrhage ++herad heard, Hera ++heridity heredity ++heroe hero ++heros heroes ++hertiage heritage ++hertzs hertz ++hesistant hesitant ++heterogenous heterogeneous ++hieght height ++hierachical hierarchical ++hierachies hierarchies ++hierachy hierarchy ++hierarcical hierarchical ++hierarcy hierarchy ++hieroglph hieroglyph ++hieroglphs hieroglyphs ++higer higher ++higest highest ++higway highway ++hillarious hilarious ++himselv himself ++hinderance hindrance ++hinderence hindrance ++hindrence hindrance ++hipopotamus hippopotamus ++hismelf himself ++histocompatability histocompatibility ++historicians historians ++hitsingles hit singles ++holf hold ++holliday holiday ++homestate home state ++homogeneize homogenize ++homogeneized homogenized ++honory honorary ++horrifing horrifying ++hosited hoisted ++hospitible hospitable ++hounour honour ++housr hours, house ++howver however ++hsitorians historians ++hstory history ++hten then, hen, the ++htere there, here ++htey they ++htikn think ++hting thing ++htink think ++htis this ++humer humor, humour ++humerous humorous, humerus ++huminoid humanoid ++humoural humoral ++humurous humorous ++husban husband ++hvae have ++hvaing having ++hvea have, heave ++hwihc which ++hwile while ++hwole whole ++hydogen hydrogen ++hydropile hydrophile ++hydropilic hydrophilic ++hydropobe hydrophobe ++hydropobic hydrophobic ++hygeine hygiene ++hyjack hijack ++hyjacking hijacking ++hypocracy hypocrisy ++hypocrasy hypocrisy ++hypocricy hypocrisy ++hypocrit hypocrite ++hypocrits hypocrites ++iconclastic iconoclastic ++idaeidae idea ++idaes ideas ++idealogies ideologies ++idealogy ideology ++identicial identical ++identifers identifiers ++ideosyncratic idiosyncratic ++idesa ideas, ides ++idiosyncracy idiosyncrasy ++Ihaca Ithaca ++illegimacy illegitimacy ++illegitmate illegitimate ++illess illness ++illiegal illegal ++illution illusion ++ilness illness ++ilogical illogical ++imagenary imaginary ++imagin imagine ++imaginery imaginary, imagery ++imanent eminent, imminent ++imcomplete incomplete ++imediately immediately ++imense immense ++imigrant emigrant, immigrant ++imigrated emigrated, immigrated ++imigration emigration, immigration ++iminent eminent, imminent, immanent ++immediatley immediately ++immediatly immediately ++immidately immediately ++immidiately immediately ++immitate imitate ++immitated imitated ++immitating imitating ++immitator imitator ++immunosupressant immunosuppressant ++impecabbly impeccably ++impedence impedance ++implamenting implementing ++impliment implement ++implimented implemented ++imploys employs ++importamt important ++impressario impresario ++imprioned imprisoned ++imprisonned imprisoned ++improvision improvisation ++improvments improvements ++inablility inability ++inaccessable inaccessible ++inadiquate inadequate ++inadquate inadequate ++inadvertant inadvertent ++inadvertantly inadvertently ++inagurated inaugurated ++inaguration inauguration ++inappropiate inappropriate ++inaugures inaugurates ++inbalance imbalance ++inbalanced imbalanced ++inbetween between ++incarcirated incarcerated ++incidentially incidentally ++incidently incidentally ++inclreased increased ++includ include ++includng including ++incompatabilities incompatibilities ++incompatability incompatibility ++incompatable incompatible ++incompatablities incompatibilities ++incompatablity incompatibility ++incompatiblities incompatibilities ++incompatiblity incompatibility ++incompetance incompetence ++incompetant incompetent ++incomptable incompatible ++incomptetent incompetent ++inconsistant inconsistent ++incoroporated incorporated ++incorperation incorporation ++incorportaed incorporated ++incorprates incorporates ++incorruptable incorruptible ++incramentally incrementally ++increadible incredible ++incredable incredible ++inctroduce introduce ++inctroduced introduced ++incuding including ++incunabla incunabula ++indefinately indefinitely ++indefineable undefinable ++indefinitly indefinitely ++indentical identical ++indepedantly independently ++indepedence independence ++independance independence ++independant independent ++independantly independently ++independece independence ++independendet independent ++indespensable indispensable ++indespensible indispensable ++indictement indictment ++indigineous indigenous ++indipendence independence ++indipendent independent ++indipendently independently ++indispensible indispensable ++indisputible indisputable ++indisputibly indisputably ++indite indict ++individualy individually ++indpendent independent ++indpendently independently ++indulgue indulge ++indutrial industrial ++indviduals individuals ++inefficienty inefficiently ++inevatible inevitable ++inevitible inevitable ++inevititably inevitably ++infalability infallibility ++infallable infallible ++infectuous infectious ++infered inferred ++infilitrate infiltrate ++infilitrated infiltrated ++infilitration infiltration ++infinit infinite ++inflamation inflammation ++influencial influential ++influented influenced ++infomation information ++informtion information ++infrantryman infantryman ++infrigement infringement ++ingenius ingenious ++ingreediants ingredients ++inhabitans inhabitants ++inherantly inherently ++inheritage heritage, inheritance ++inheritence inheritance ++inital initial ++initally initially ++initation initiation ++initiaitive initiative ++inlcuding including ++inmigrant immigrant ++inmigrants immigrants ++innoculated inoculated ++inocence innocence ++inofficial unofficial ++inot into ++inpeach impeach ++inpending impending ++inpenetrable impenetrable ++inpolite impolite ++inprisonment imprisonment ++inproving improving ++insectiverous insectivorous ++insensative insensitive ++inseperable inseparable ++insistance insistence ++insitution institution ++insitutions institutions ++inspite in spite, inspire ++instade instead ++instatance instance ++institue institute ++instuction instruction ++instuments instruments ++instutionalized institutionalized ++instutions institutions, intuitions ++insurence insurance ++intelectual intellectual ++inteligence intelligence ++inteligent intelligent ++intenational international ++intented intended, indented ++intepretation interpretation ++intepretator interpretor ++interational international ++interbread interbreed, interbred ++interchangable interchangeable ++interchangably interchangeably ++intercontinential intercontinental ++intercontinetal intercontinental ++intered interred, interned ++interelated interrelated ++interferance interference ++interfereing interfering ++intergrated integrated ++intergration integration ++interm interim ++internation international ++interpet interpret ++interrim interim ++interrugum interregnum ++intertaining entertaining ++interupt interrupt ++intervines intervenes ++intevene intervene ++intial initial ++intially initially ++intrduced introduced ++intrest interest ++introdued introduced ++intruduced introduced ++intrument instrument ++intrumental instrumental ++intruments instruments ++intrusted entrusted ++intutive intuitive ++intutively intuitively ++inudstry industry ++inumerable enumerable, innumerable ++inventer inventor ++invertibrates invertebrates ++investingate investigate ++involvment involvement ++irelevent irrelevant ++iresistable irresistible ++iresistably irresistibly ++iresistible irresistible ++iresistibly irresistibly ++iritable irritable ++iritated irritated ++ironicly ironically ++irregardless regardless ++irrelevent irrelevant ++irreplacable irreplaceable ++irresistable irresistible ++irresistably irresistibly ++Israelies Israelis ++issueing issuing ++itnroduced introduced ++iunior junior ++iwll will ++iwth with ++Janurary January ++Januray January ++Japanes Japanese ++jeapardy jeopardy ++jewllery jewellery ++Johanine Johannine ++jorunal journal ++Jospeh Joseph ++jouney journey ++journied journeyed ++journies journeys ++jstu just ++jsut just ++Juadaism Judaism ++Juadism Judaism ++judical judicial ++judisuary judiciary ++juducial judicial ++juristiction jurisdiction ++juristictions jurisdictions ++kindergarden kindergarten ++klenex kleenex ++knifes knives ++knive knife ++knowlege knowledge ++knowlegeable knowledgeable ++knwo know ++knwos knows ++konw know ++konws knows ++kwno know ++labatory lavatory, laboratory ++labled labelled, labeled ++labratory laboratory ++laguage language ++laguages languages ++laparascopic laparoscopic ++larg large ++largst largest ++larrry larry ++lastr last ++lattitude latitude ++launchs launch, launches ++launhed launched ++lavae larvae ++layed laid ++lazyness laziness ++leage league ++leanr lean, learn, leaner ++leathal lethal ++lefted left ++legitamate legitimate ++legitmate legitimate ++leibnitz leibniz ++lenght length ++leran learn ++lerans learns ++leutenant lieutenant ++levetate levitate ++levetated levitated ++levetates levitates ++levetating levitating ++levle level ++liasion liaison ++liason liaison ++liasons liaisons ++libary library ++libell libel ++libguistic linguistic ++libguistics linguistics ++libitarianisn libertarianism ++lible libel, liable ++lieing lying ++liek like ++liekd liked ++liesure leisure ++lieuenant lieutenant ++lieved lived ++liftime lifetime ++lightyear light year ++lightyears light years ++likelyhood likelihood ++linnaena linnaean ++lippizaner lipizzaner ++liquify liquefy ++liscense license, licence ++lisence license, licence ++lisense license, licence ++listners listeners ++litature literature ++literaly literally ++literture literature ++littel little ++litterally literally ++liuke like ++livley lively ++lmits limits ++loev love ++lonelyness loneliness ++longitudonal longitudinal ++lonley lonely ++lonly lonely, only ++loosing losing ++lotharingen lothringen ++lsat last ++lukid likud ++lveo love ++lvoe love ++Lybia Libya ++maching machine, marching, matching ++mackeral mackerel ++magasine magazine ++magizine magazine ++magisine magazine ++magincian magician ++magnificient magnificent ++magolia magnolia ++mailny mainly ++maintainance maintenance ++maintainence maintenance ++maintance maintenance ++maintenence maintenance ++maintinaing maintaining ++maintioned mentioned ++majoroty majority ++maked marked, made ++makse makes ++Malcom Malcolm ++maltesian Maltese ++mamal mammal ++mamalian mammalian ++managable manageable, manageably ++managment management ++maneouvre manoeuvre ++maneouvred manoeuvred ++maneouvres manoeuvres ++maneouvring manoeuvring ++manisfestations manifestations ++manoeuverability maneuverability ++manouver maneuver, manoeuvre ++manouverability maneuverability, manoeuvrability, manoeuverability ++manouverable maneuverable, manoeuvrable ++manouvers maneuvers, manoeuvres ++mantained maintained ++manuever maneuver, manoeuvre ++manuevers maneuvers, manoeuvres ++manufacturedd manufactured ++manufature manufacture ++manufatured manufactured ++manufaturing manufacturing ++manuver maneuver ++mariage marriage ++marjority majority ++markes marks ++marketting marketing ++marmelade marmalade ++marrage marriage ++marraige marriage ++marrtyred martyred ++marryied married ++Massachussets Massachusetts ++Massachussetts Massachusetts ++massmedia mass media ++masterbation masturbation ++mataphysical metaphysical ++materalists materialist ++mathamatics mathematics ++mathematican mathematician ++mathematicas mathematics ++matheticians mathematicians ++mathmatically mathematically ++mathmatician mathematician ++mathmaticians mathematicians ++mccarthyst mccarthyist ++mchanics mechanics ++meaing meaning ++meaninng meaning ++mear wear, mere, mare ++mechandise merchandise ++medacine medicine ++medeival medieval ++medevial medieval ++mediciney mediciny ++medievel medieval ++mediterainnean mediterranean ++Mediteranean Mediterranean ++meerkrat meerkat ++melieux milieux ++membranaphone membranophone ++memeber member ++menally mentally ++meranda veranda, Miranda ++mercentile mercantile ++messanger messenger ++messenging messaging ++metalic metallic ++metalurgic metallurgic ++metalurgical metallurgical ++metalurgy metallurgy ++metamorphysis metamorphosis ++metaphoricial metaphorical ++meterologist meteorologist ++meterology meteorology ++methaphor metaphor ++methaphors metaphors ++Michagan Michigan ++micoscopy microscopy ++midwifes midwives ++mileau milieu ++milennia millennia ++milennium millennium ++mileu milieu ++miliary military ++miligram milligram ++milion million ++miliraty military ++millenia millennia ++millenial millennial ++millenialism millennialism ++millenium millennium ++millepede millipede ++millioniare millionaire ++millitant militant ++millitary military ++millon million ++miltary military ++minature miniature ++minerial mineral ++ministery ministry ++minsitry ministry ++minstries ministries ++minstry ministry ++minumum minimum ++mirrorred mirrored ++miscelaneous miscellaneous ++miscellanious miscellaneous ++miscellanous miscellaneous ++mischeivous mischievous ++mischevious mischievous ++mischievious mischievous ++misdameanor misdemeanor ++misdameanors misdemeanors ++misdemenor misdemeanor ++misdemenors misdemeanors ++misfourtunes misfortunes ++misile missile ++Misouri Missouri ++mispell misspell ++mispelled misspelled ++mispelling misspelling ++missen mizzen ++Missisipi Mississippi ++Missisippi Mississippi ++missle missile ++missonary missionary ++misterious mysterious ++mistery mystery ++misteryous mysterious ++mkae make ++mkaes makes ++mkaing making ++mkea make ++moderm modem ++modle model ++moent moment ++moeny money ++mohammedans muslims ++moleclues molecules ++momento memento ++monestaries monasteries ++monestary monastery, monetary ++monickers monikers ++monolite monolithic ++Monserrat Montserrat ++montains mountains ++montanous mountainous ++Montnana Montana ++monts months ++montypic monotypic ++moreso more, more so ++morgage mortgage ++Morisette Morissette ++Morrisette Morissette ++morroccan moroccan ++morrocco morocco ++morroco morocco ++mortage mortgage ++mosture moisture ++motiviated motivated ++mounth month ++movei movie ++movment movement ++mroe more ++mucuous mucous ++muder murder ++mudering murdering ++muhammadan muslim ++multicultralism multiculturalism ++multipled multiplied ++multiplers multipliers ++munbers numbers ++muncipalities municipalities ++muncipality municipality ++munnicipality municipality ++muscels mussels, muscles ++muscial musical ++muscician musician ++muscicians musicians ++mutiliated mutilated ++myraid myriad ++mysef myself ++mysogynist misogynist ++mysogyny misogyny ++mysterous mysterious ++Mythraic Mithraic ++naieve naive ++Naploeon Napoleon ++Napolean Napoleon ++Napoleonian Napoleonic ++naturaly naturally ++naturely naturally ++naturual natural ++naturually naturally ++Nazereth Nazareth ++neccesarily necessarily ++neccesary necessary ++neccessarily necessarily ++neccessary necessary ++neccessities necessities ++necesarily necessarily ++necesary necessary ++necessiate necessitate ++neglible negligible ++negligable negligible ++negociate negotiate ++negociation negotiation ++negociations negotiations ++negotation negotiation ++neice niece, nice ++neigborhood neighborhood ++neigbour neighbour, neighbor ++neigbourhood neighbourhood ++neigbouring neighbouring, neighboring ++neigbours neighbours, neighbors ++neolitic neolithic ++nessasarily necessarily ++nessecary necessary ++nestin nesting ++neverthless nevertheless ++newletters newsletters ++nickle nickel ++nightime nighttime ++nineth ninth ++ninteenth nineteenth ++ninties 1990s ++ninty ninety ++nkow know ++nkwo know ++nmae name ++noncombatents noncombatants ++nonsence nonsense ++nontheless nonetheless ++noone no one ++norhern northern ++northen northern ++northereastern northeastern ++notabley notably ++noteable notable ++noteably notably ++noteriety notoriety ++noth north ++nothern northern ++noticable noticeable ++noticably noticeably ++noticeing noticing ++noticible noticeable ++notwhithstanding notwithstanding ++noveau nouveau ++Novermber November ++nowdays nowadays ++nowe now ++nto not ++nucular nuclear ++nuculear nuclear ++nuisanse nuisance ++Nullabour Nullarbor ++numberous numerous ++Nuremburg Nuremberg ++nusance nuisance ++nutritent nutrient ++nutritents nutrients ++nuturing nurturing ++obediance obedience ++obediant obedient ++obession obsession ++obssessed obsessed ++obstacal obstacle ++obstancles obstacles ++obstruced obstructed ++ocasion occasion ++ocasional occasional ++ocasionally occasionally ++ocasionaly occasionally ++ocasioned occasioned ++ocasions occasions ++ocassion occasion ++ocassional occasional ++ocassionally occasionally ++ocassionaly occasionally ++ocassioned occasioned ++ocassions occasions ++occaison occasion ++occassion occasion ++occassional occasional ++occassionally occasionally ++occassionaly occasionally ++occassioned occasioned ++occassions occasions ++occationally occasionally ++occour occur ++occurance occurrence ++occurances occurrences ++occured occurred ++occurence occurrence ++occurences occurrences ++occuring occurring ++occurr occur ++occurrance occurrence ++occurrances occurrences ++octohedra octahedra ++octohedral octahedral ++octohedron octahedron ++ocuntries countries ++ocuntry country ++ocurr occur ++ocurrance occurrence ++ocurred occurred ++ocurrence occurrence ++offcers officers ++offcially officially ++offereings offerings ++offical official ++offically officially ++officals officials ++officaly officially ++officialy officially ++offred offered ++oftenly often ++oging going, ogling ++olther other ++omision omission ++omited omitted ++omiting omitting ++omlette omelette ++ommision omission ++ommited omitted ++ommiting omitting ++ommitted omitted ++ommitting omitting ++omniverous omnivorous ++omniverously omnivorously ++omre more ++onot note, not ++onyl only ++openess openness ++oponent opponent ++oportunity opportunity ++opose oppose ++oposite opposite ++oposition opposition ++oppenly openly ++oppinion opinion ++opponant opponent ++oppononent opponent ++oppositition opposition ++oppossed opposed ++opprotunity opportunity ++opression oppression ++opressive oppressive ++opthalmic ophthalmic ++opthalmologist ophthalmologist ++opthalmology ophthalmology ++opthamologist ophthalmologist ++optmizations optimizations ++optomism optimism ++orded ordered ++organim organism ++organistion organisation ++organiztion organization ++orgin origin, organ ++orginal original ++orginally originally ++orginize organise ++oridinarily ordinarily ++origanaly originally ++originall original, originally ++originaly originally ++originially originally ++originnally originally ++origional original ++orignally originally ++orignially originally ++otehr other ++otherwordly otherworldly ++oublisher publisher ++ouevre oeuvre ++oustanding outstanding ++overshaddowed overshadowed ++overthere over there ++overwelming overwhelming ++overwheliming overwhelming ++owrk work ++owudl would ++oxigen oxygen ++oximoron oxymoron ++paide paid ++paitience patience ++palce place, palace ++paleolitic paleolithic ++paliamentarian parliamentarian ++Palistian Palestinian ++Palistinian Palestinian ++Palistinians Palestinians ++pallete palette ++pamflet pamphlet ++pamplet pamphlet ++pantomine pantomime ++Papanicalou Papanicolaou ++paralel parallel ++paralell parallel ++paralelly parallelly ++paralely parallelly ++parallely parallelly ++paranthesis parenthesis ++paraphenalia paraphernalia ++parellels parallels ++parisitic parasitic ++parituclar particular ++parliment parliament ++parrakeets parakeets ++parralel parallel ++parrallel parallel ++parrallell parallel ++parrallelly parallelly ++parrallely parallelly ++partialy partially ++particually particularly ++particualr particular ++particuarly particularly ++particularily particularly ++particulary particularly ++pary party ++pased passed ++pasengers passengers ++passerbys passersby ++pasttime pastime ++pastural pastoral ++paticular particular ++pattented patented ++pavillion pavilion ++payed paid ++pblisher publisher ++pbulisher publisher ++peacefuland peaceful and ++peageant pageant ++peaple people ++peaples peoples ++peculure peculiar ++pedestrain pedestrian ++peformed performed ++peice piece ++Peloponnes Peloponnesus ++penatly penalty ++penerator penetrator ++penisula peninsula ++penisular peninsular ++penninsula peninsula ++penninsular peninsular ++pennisula peninsula ++Pennyslvania Pennsylvania ++pensle pencil ++pensinula peninsula ++peom poem ++peoms poems ++peopel people ++peopels peoples ++peotry poetry ++perade parade ++percepted perceived ++percieve perceive ++percieved perceived ++pereguine peregrine ++perenially perennially ++peretrator perpetrator ++perfomance performance ++perfomers performers ++performence performance ++performes performed, performs ++perhasp perhaps ++perheaps perhaps ++perhpas perhaps ++peripathetic peripatetic ++peristent persistent ++perjery perjury ++perjorative pejorative ++permanant permanent ++permenant permanent ++permenantly permanently ++permissable permissible ++perogative prerogative ++peronal personal ++perpertrated perpetrated ++perosnality personality ++perphas perhaps ++perpindicular perpendicular ++persan person ++perseverence perseverance ++persistance persistence ++persistant persistent ++personel personnel, personal ++personell personnel ++personnell personnel ++persuded persuaded ++persue pursue ++persued pursued ++persuing pursuing ++persuit pursuit ++persuits pursuits ++pertubation perturbation ++pertubations perturbations ++pessiary pessary ++petetion petition ++Pharoah Pharaoh ++phenomenom phenomenon ++phenomenonal phenomenal ++phenomenonly phenomenally ++phenomonenon phenomenon ++phenomonon phenomenon ++phenonmena phenomena ++Philipines Philippines ++philisopher philosopher ++philisophical philosophical ++philisophy philosophy ++Phillipine Philippine ++Phillipines Philippines ++Phillippines Philippines ++phillosophically philosophically ++philospher philosopher ++philosphies philosophies ++philosphy philosophy ++Phonecian Phoenecian ++phongraph phonograph ++phylosophical philosophical ++physicaly physically ++piblisher publisher ++pich pitch ++pilgrimmage pilgrimage ++pilgrimmages pilgrimages ++pinapple pineapple ++pinnaple pineapple ++pinoneered pioneered ++plagarism plagiarism ++planation plantation ++planed planned ++plantiff plaintiff ++plateu plateau ++plausable plausible ++playright playwright ++playwrite playwright ++playwrites playwrights ++pleasent pleasant ++plebicite plebiscite ++plesant pleasant ++poenis penis ++poeoples peoples ++poety poetry ++poisin poison ++polical political ++polinator pollinator ++polinators pollinators ++politican politician ++politicans politicians ++poltical political ++polute pollute ++poluted polluted ++polutes pollutes ++poluting polluting ++polution pollution ++polyphonyic polyphonic ++polysaccaride polysaccharide ++polysaccharid polysaccharide ++pomegranite pomegranate ++pomotion promotion ++poportional proportional ++popoulation population ++popularaty popularity ++populare popular ++populer popular ++porshan portion ++porshon portion ++portait portrait ++portayed portrayed ++portraing portraying ++Portugese Portuguese ++portuguease portuguese ++portugues Portuguese ++posess possess ++posessed possessed ++posesses possesses ++posessing possessing ++posession possession ++posessions possessions ++posion poison ++positon position, positron ++possable possible ++possably possibly ++posseses possesses ++possesing possessing ++possesion possession ++possessess possesses ++possibile possible ++possibilty possibility ++possiblility possibility ++possiblilty possibility ++possiblities possibilities ++possiblity possibility ++possition position ++Postdam Potsdam ++posthomous posthumous ++postion position ++postive positive ++potatos potatoes ++potrait portrait ++potrayed portrayed ++poulations populations ++poverful powerful ++poweful powerful ++powerfull powerful ++ppublisher publisher ++practial practical ++practially practically ++practicaly practically ++practicioner practitioner ++practicioners practitioners ++practicly practically ++practioner practitioner ++practioners practitioners ++prairy prairie ++prarie prairie ++praries prairies ++pratice practice ++preample preamble ++precedessor predecessor ++preceed precede ++preceeded preceded ++preceeding preceding ++preceeds precedes ++precentage percentage ++precice precise ++precisly precisely ++precurser precursor ++predecesors predecessors ++predicatble predictable ++predicitons predictions ++predomiantly predominately ++prefered preferred ++prefering preferring ++preferrably preferably ++pregancies pregnancies ++preiod period ++preliferation proliferation ++premeire premiere ++premeired premiered ++premillenial premillennial ++preminence preeminence ++premission permission ++Premonasterians Premonstratensians ++preocupation preoccupation ++prepair prepare ++prepartion preparation ++prepatory preparatory ++preperation preparation ++preperations preparations ++preriod period ++presedential presidential ++presense presence ++presidenital presidential ++presidental presidential ++presitgious prestigious ++prespective perspective ++prestigeous prestigious ++prestigous prestigious ++presumabely presumably ++presumibly presumably ++pretection protection ++prevelant prevalent ++preverse perverse ++previvous previous ++pricipal principal ++priciple principle ++priestood priesthood ++primarly primarily ++primative primitive ++primatively primitively ++primatives primitives ++primordal primordial ++principlaity principality ++principaly principality ++principial principal ++principly principally ++prinicipal principal ++privalege privilege ++privaleges privileges ++priveledges privileges ++privelege privilege ++priveleged privileged ++priveleges privileges ++privelige privilege ++priveliged privileged ++priveliges privileges ++privelleges privileges ++privilage privilege ++priviledge privilege ++priviledges privileges ++privledge privilege ++privte private ++probabilaty probability ++probablistic probabilistic ++probablly probably ++probalibity probability ++probaly probably ++probelm problem ++proccess process ++proccessing processing ++procede proceed, precede ++proceded proceeded, preceded ++procedes proceeds, precedes ++procedger procedure ++proceding proceeding, preceding ++procedings proceedings ++proceedure procedure ++proces process ++processer processor ++proclaimation proclamation ++proclamed proclaimed ++proclaming proclaiming ++proclomation proclamation ++profesion profusion, profession ++profesor professor ++professer professor ++proffesed professed ++proffesion profession ++proffesional professional ++proffesor professor ++proffession profession ++proffessional professional ++proffessor professor ++profilic prolific ++progessed progressed ++progidy prodigy ++programable programmable ++progrom pogrom, program ++progroms pogroms, programs ++prohabition prohibition ++prologomena prolegomena ++prominance prominence ++prominant prominent ++prominantly prominently ++prominately prominently, predominately ++promiscous promiscuous ++promotted promoted ++pronomial pronominal ++pronouced pronounced ++pronounched pronounced ++pronounciation pronunciation ++proove prove ++prooved proved ++prophacy prophecy ++propietary proprietary ++propmted prompted ++propoganda propaganda ++propogate propagate ++propogates propagates ++propogation propagation ++propostion proposition ++propotions proportions ++propper proper ++propperly properly ++proprietory proprietary ++proseletyzing proselytizing ++protaganist protagonist ++protaganists protagonists ++protocal protocol ++protoganist protagonist ++protrayed portrayed ++protruberance protuberance ++protruberances protuberances ++prouncements pronouncements ++provacative provocative ++provded provided ++provicial provincial ++provinicial provincial ++provisiosn provision ++provisonal provisional ++proximty proximity ++pseudononymous pseudonymous ++pseudonyn pseudonym ++psuedo pseudo ++psycology psychology ++psyhic psychic ++pubilsher publisher ++pubisher publisher ++publiaher publisher ++publically publicly ++publicaly publicly ++publicher publisher ++publihser publisher ++publisehr publisher ++publiser publisher ++publisger publisher ++publisheed published ++publisherr publisher ++publishher publisher ++publishor publisher ++publishre publisher ++publissher publisher ++publlisher publisher ++publsiher publisher ++publusher publisher ++puchasing purchasing ++Pucini Puccini ++Puertorrican Puerto Rican ++Puertorricans Puerto Ricans ++pulisher publisher ++pumkin pumpkin ++puplisher publisher ++puritannical puritanical ++purposedly purposely ++purpotedly purportedly ++pursuade persuade ++pursuaded persuaded ++pursuades persuades ++pususading persuading ++puting putting ++pwoer power ++pyscic psychic ++qtuie quite, quiet ++quantaty quantity ++quantitiy quantity ++quarantaine quarantine ++Queenland Queensland ++questonable questionable ++quicklyu quickly ++quinessential quintessential ++quitted quit ++quizes quizzes ++qutie quite, quiet ++rabinnical rabbinical ++racaus raucous ++radiactive radioactive ++radify ratify ++raelly really ++rarified rarefied ++reaccurring recurring ++reacing reaching ++reacll recall ++readmition readmission ++realitvely relatively ++realsitic realistic ++realtions relations ++realy really ++realyl really ++reasearch research ++rebiulding rebuilding ++rebllions rebellions ++rebounce rebound ++reccomend recommend ++reccomendations recommendations ++reccomended recommended ++reccomending recommending ++reccommend recommend ++reccommended recommended ++reccommending recommending ++reccuring recurring ++receeded receded ++receeding receding ++receivedfrom received from ++recepient recipient ++recepients recipients ++receving receiving ++rechargable rechargeable ++reched reached ++recide reside ++recided resided ++recident resident ++recidents residents ++reciding residing ++reciepents recipients ++reciept receipt ++recieve receive ++recieved received ++reciever receiver ++recievers receivers ++recieves receives ++recieving receiving ++recipiant recipient ++recipiants recipients ++recived received ++recivership receivership ++recogise recognise ++recogize recognize ++recomend recommend ++recomended recommended ++recomending recommending ++recomends recommends ++recommedations recommendations ++recompence recompense ++reconaissance reconnaissance ++reconcilation reconciliation ++reconized recognized ++reconnaisance reconnaissance ++reconnaissence reconnaissance ++recontructed reconstructed ++recordproducer record producer ++recquired required ++recrational recreational ++recrod record ++recuiting recruiting ++recuring recurring ++recurrance recurrence ++rediculous ridiculous ++reedeming redeeming ++reenforced reinforced ++refect reflect ++refedendum referendum ++referal referral ++referece reference ++refereces references ++refered referred ++referemce reference ++referemces references ++referencs references ++referenece reference ++refereneced referenced ++refereneces references ++referiang referring ++refering referring ++refernce reference, references ++refernces references ++referrence reference ++referrences references ++referrs refers ++reffered referred ++refference reference ++reffering referring ++refrence reference ++refrences references ++refrers refers ++refridgeration refrigeration ++refridgerator refrigerator ++refromist reformist ++refusla refusal ++regardes regards ++regluar regular ++reguarly regularly ++regulaion regulation ++regulaotrs regulators ++regularily regularly ++rehersal rehearsal ++reicarnation reincarnation ++reigining reigning ++reknown renown ++reknowned renowned ++rela real ++relaly really ++relatiopnship relationship ++relativly relatively ++relected reelected ++releive relieve ++releived relieved ++releiver reliever ++releses releases ++relevence relevance ++relevent relevant ++reliablity reliability ++relient reliant ++religeous religious ++religous religious ++religously religiously ++relinqushment relinquishment ++relitavely relatively ++relized realised, realized ++relpacement replacement ++remaing remaining ++remeber remember ++rememberable memorable ++rememberance remembrance ++remembrence remembrance ++remenant remnant ++remenicent reminiscent ++reminent remnant ++reminescent reminiscent ++reminscent reminiscent ++reminsicent reminiscent ++rendevous rendezvous ++rendezous rendezvous ++renedered rende ++renewl renewal ++rennovate renovate ++rennovated renovated ++rennovating renovating ++rennovation renovation ++rentors renters ++reoccurrence recurrence ++reorganision reorganisation ++repatition repetition, repartition ++repblic republic ++repblican republican ++repblicans republicans ++repblics republics ++repectively respectively ++repeition repetition ++repentence repentance ++repentent repentant ++repeteadly repeatedly ++repetion repetition ++repid rapid ++reponse response ++reponsible responsible ++reportadly reportedly ++represantative representative ++representive representative ++representives representatives ++reproducable reproducible ++reprtoire repertoire ++repsectively respectively ++reptition repetition ++repubic republic ++repubican republican ++repubicans republicans ++repubics republics ++republi republic ++republian republican ++republians republicans ++republis republics ++repulic republic ++repulican republican ++repulicans republicans ++repulics republics ++requirment requirement ++requred required ++resaurant restaurant ++resembelance resemblance ++resembes resembles ++resemblence resemblance ++resevoir reservoir ++residental residential ++resignement resignment ++resistable resistible ++resistence resistance ++resistent resistant ++respectivly respectively ++responce response ++responibilities responsibilities ++responisble responsible ++responnsibilty responsibility ++responsability responsibility ++responsibile responsible ++responsibilites responsibilities ++responsiblities responsibilities ++responsiblity responsibility ++ressemblance resemblance ++ressemble resemble ++ressembled resembled ++ressemblence resemblance ++ressembling resembling ++resssurecting resurrecting ++ressurect resurrect ++ressurected resurrected ++ressurection resurrection ++ressurrection resurrection ++restarant restaurant ++restarants restaurants ++restaraunt restaurant ++restaraunteur restaurateur ++restaraunteurs restaurateurs ++restaraunts restaurants ++restauranteurs restaurateurs ++restauration restoration ++restauraunt restaurant ++resteraunt restaurant ++resteraunts restaurants ++resticted restricted ++restraunt restraint, restaurant ++resturant restaurant ++resturants restaurants ++resturaunt restaurant ++resturaunts restaurants ++resurecting resurrecting ++retalitated retaliated ++retalitation retaliation ++retreive retrieve ++returnd returned ++revaluated reevaluated ++reveiw review ++reveral reversal ++reversable reversible ++revolutionar revolutionary ++rewitten rewritten ++rewriet rewrite ++rference reference ++rferences references ++rhymme rhyme ++rhythem rhythm ++rhythim rhythm ++rhytmic rhythmic ++rigeur rigueur, rigour, rigor ++rigourous rigorous ++rininging ringing ++rised raised, rose ++Rockerfeller Rockefeller ++rococco rococo ++rocord record ++roomate roommate ++rougly roughly ++rucuperate recuperate ++rudimentatry rudimentary ++rulle rule ++runing running ++runnung running ++russina Russian ++Russion Russian ++rwite write ++rythem rhythm ++rythim rhythm ++rythm rhythm ++rythmic rhythmic ++rythyms rhythms ++sacrafice sacrifice ++sacreligious sacrilegious ++Sacremento Sacramento ++sacrifical sacrificial ++saftey safety ++safty safety ++salery salary ++sanctionning sanctioning ++sandwhich sandwich ++Sanhedrim Sanhedrin ++santioned sanctioned ++sargant sergeant ++sargeant sergeant ++sasy says, sassy ++satelite satellite ++satelites satellites ++Saterday Saturday ++Saterdays Saturdays ++satisfactority satisfactorily ++satric satiric ++satrical satirical ++satrically satirically ++sattelite satellite ++sattelites satellites ++saught sought ++saveing saving ++saxaphone saxophone ++scaleable scalable ++scandanavia Scandinavia ++scaricity scarcity ++scavanged scavenged ++schedual schedule ++scholarhip scholarship ++scholarstic scholastic, scholarly ++scientfic scientific ++scientifc scientific ++scientis scientist ++scince science ++scinece science ++scirpt script ++scoll scroll ++screenwrighter screenwriter ++scrutinity scrutiny ++scuptures sculptures ++seach search ++seached searched ++seaches searches ++secceeded seceded, succeeded ++seceed succeed, secede ++seceeded succeeded, seceded ++secratary secretary ++secretery secretary ++sedereal sidereal ++seeked sought ++segementation segmentation ++seguoys segues ++seige siege ++seing seeing ++seinor senior ++seldomly seldom ++senarios scenarios ++sence sense, since ++senstive sensitive ++sensure censure ++seperate separate ++seperated separated ++seperately separately ++seperates separates ++seperating separating ++seperation separation ++seperatism separatism ++seperatist separatist ++sepina subpoena ++sepulchure sepulchre, sepulcher ++sepulcre sepulchre, sepulcher ++sergent sergeant ++settelement settlement ++settlment settlement ++severeal several ++severley severely ++severly severely ++sevice service ++shadasloo shadaloo ++shaddow shadow ++shadoloo shadaloo ++shamen shaman, shamans ++sheat sheath, sheet, cheat ++sheild shield ++sherif sheriff ++shineing shining ++shiped shipped ++shiping shipping ++shopkeeepers shopkeepers ++shorly shortly ++shortwhile short while ++shoudl should ++shouldnt should not ++shreak shriek ++shrinked shrunk ++sicne since ++sideral sidereal ++sieze seize, size ++siezed seized, sized ++siezing seizing, sizing ++siezure seizure ++siezures seizures ++siginificant significant ++signficant significant ++signficiant significant ++signfies signifies ++signifantly significantly ++significently significantly ++signifigant significant ++signifigantly significantly ++signitories signatories ++signitory signatory ++similarily similarly ++similiar similar ++similiarity similarity ++similiarly similarly ++simmilar similar ++simpley simply ++simplier simpler ++simultanous simultaneous ++simultanously simultaneously ++sincerley sincerely ++singsog singsong ++sinse sines, since ++Sionist Zionist ++Sionists Zionists ++Sixtin Sistine ++Skagerak Skagerrak ++skateing skating ++slaugterhouses slaughterhouses ++slighly slightly ++slippy slippery ++slowy slowly ++smae same ++smealting smelting ++smoe some ++sneeks sneaks ++snese sneeze ++socalism socialism ++socities societies ++soem some ++sofware software ++sohw show ++soilders soldiers ++solatary solitary ++soley solely ++soliders soldiers ++soliliquy soliloquy ++soluable soluble ++somene someone ++somtimes sometimes ++somwhere somewhere ++sophicated sophisticated ++sophmore sophomore ++sorceror sorcerer ++sorrounding surrounding ++sotry story ++sotyr satyr, story ++soudn sound ++soudns sounds ++sould could, should, sold, soul ++sountrack soundtrack ++sourth south ++sourthern southern ++souvenier souvenir ++souveniers souvenirs ++soveits soviets ++sovereignity sovereignty ++soverign sovereign ++soverignity sovereignty ++soverignty sovereignty ++spainish Spanish ++speach speech ++specfic specific ++speciallized specialised, specialized ++specif specific, specify ++specifiying specifying ++speciman specimen ++spectauclar spectacular ++spectaulars spectaculars ++spects aspects, expects ++spectum spectrum ++speices species ++spendour splendour ++spermatozoan spermatozoon ++spoace space ++sponser sponsor ++sponsered sponsored ++spontanous spontaneous ++sponzored sponsored ++spoonfulls spoonfuls ++sppeches speeches ++spreaded spread ++sprech speech ++spred spread ++spriritual spiritual ++spritual spiritual ++sqaure square ++stablility stability ++stainlees stainless ++staion station ++standars standards ++stange strange ++startegic strategic ++startegies strategies ++startegy strategy ++stateman statesman ++statememts statements ++statment statement ++steriods steroids ++sterotypes stereotypes ++stilus stylus ++stingent stringent ++stiring stirring ++stirrs stirs ++stlye style ++stomache stomach ++stong strong ++stopry story ++storeis stories ++storise stories ++stornegst strongest ++stoyr story ++stpo stop ++stradegies strategies ++stradegy strategy ++strat start, strata ++stratagically strategically ++streemlining streamlining ++stregth strength ++strenghen strengthen ++strenghened strengthened ++strenghening strengthening ++strenght strength ++strenghten strengthen ++strenghtened strengthened ++strenghtening strengthening ++strengtened strengthened ++strenous strenuous ++strictist strictest ++strikely strikingly ++strnad strand ++stroy story, destroy ++structual structural ++stubborness stubbornness ++stucture structure ++stuctured structured ++studdy study ++studing studying ++stuggling struggling ++sturcture structure ++subcatagories subcategories ++subcatagory subcategory ++subconsiously subconsciously ++subdivisio subdivision ++subjudgation subjugation ++submachne submachine ++subpecies subspecies ++subsidary subsidiary ++subsiduary subsidiary ++subsquent subsequent ++subsquently subsequently ++substace substance ++substancial substantial ++substatial substantial ++substituded substituted ++substract subtract ++substracted subtracted ++substracting subtracting ++substraction subtraction ++substracts subtracts ++subtances substances ++subterranian subterranean ++suburburban suburban ++succceeded succeeded ++succcesses successes ++succedded succeeded ++succeded succeeded ++succeds succeeds ++succesful successful ++succesfully successfully ++succesfuly successfully ++succesion succession ++succesive successive ++successfull successful ++successully successfully ++succsess success ++succsessfull successful ++suceed succeed ++suceeded succeeded ++suceeding succeeding ++suceeds succeeds ++sucesful successful ++sucesfully successfully ++sucesfuly successfully ++sucesion succession ++sucess success ++sucesses successes ++sucessful successful ++sucessfull successful ++sucessfully successfully ++sucessfuly successfully ++sucession succession ++sucessive successive ++sucessor successor ++sucessot successor ++sucide suicide ++sucidial suicidal ++sudent student ++sudents students ++sufferage suffrage ++sufferred suffered ++sufferring suffering ++sufficent sufficient ++sufficently sufficiently ++sumary summary ++sunglases sunglasses ++suop soup ++superceeded superseded ++superintendant superintendent ++suphisticated sophisticated ++suplimented supplemented ++supose suppose ++suposed supposed ++suposedly supposedly ++suposes supposes ++suposing supposing ++supplamented supplemented ++suppliementing supplementing ++suppoed supposed ++supposingly supposedly ++suppy supply ++suprassing surpassing ++supress suppress ++supressed suppressed ++supresses suppresses ++supressing suppressing ++suprise surprise ++suprised surprised ++suprising surprising ++suprisingly surprisingly ++suprize surprise ++suprized surprised ++suprizing surprising ++suprizingly surprisingly ++surfce surface ++surley surly, surely ++suround surround ++surounded surrounded ++surounding surrounding ++suroundings surroundings ++surounds surrounds ++surplanted supplanted ++surpress suppress ++surpressed suppressed ++surprize surprise ++surprized surprised ++surprizing surprising ++surprizingly surprisingly ++surrended surrounded, surrendered ++surrepetitious surreptitious ++surrepetitiously surreptitiously ++surreptious surreptitious ++surreptiously surreptitiously ++surronded surrounded ++surrouded surrounded ++surrouding surrounding ++surrundering surrendering ++surveilence surveillance ++surveill surveil ++surveyer surveyor ++surviver survivor ++survivers survivors ++survivied survived ++suseptable susceptible ++suseptible susceptible ++suspention suspension ++swaer swear ++swaers swears ++swepth swept ++swiming swimming ++syas says ++symetrical symmetrical ++symetrically symmetrically ++symetry symmetry ++symettric symmetric ++symmetral symmetric ++symmetricaly symmetrically ++synagouge synagogue ++syncronization synchronization ++synonomous synonymous ++synonymns synonyms ++synphony symphony ++syphyllis syphilis ++sypmtoms symptoms ++syrap syrup ++sysmatically systematically ++sytem system ++sytle style ++tabacco tobacco ++tahn than ++taht that ++talekd talked ++targetted targeted ++targetting targeting ++tast taste ++tath that ++tatoo tattoo ++tattooes tattoos ++taxanomic taxonomic ++taxanomy taxonomy ++teached taught ++techician technician ++techicians technicians ++techiniques techniques ++technitian technician ++technnology technology ++technolgy technology ++teh the ++tehy they ++telelevision television ++televsion television ++telphony telephony ++temerature temperature ++tempalte template ++tempaltes templates ++temparate temperate ++temperarily temporarily ++temperment temperament ++tempertaure temperature ++temperture temperature ++temprary temporary ++tenacle tentacle ++tenacles tentacles ++tendacy tendency ++tendancies tendencies ++tendancy tendency ++tennisplayer tennis player ++tepmorarily temporarily ++terrestial terrestrial ++terriories territories ++terriory territory ++territorist terrorist ++territoy territory ++terroist terrorist ++testiclular testicular ++testomony testimony ++tghe the ++theather theater ++theese these ++theif thief ++theives thieves ++themselfs themselves ++themslves themselves ++ther there, their, the ++therafter thereafter ++therby thereby ++theri their ++thgat that ++thge the ++thier their ++thign thing ++thigns things ++thigsn things ++thikn think ++thikning thinking, thickening ++thikns thinks ++thiunk think ++thn then ++thna than ++thne then ++thnig thing ++thnigs things ++thoughout throughout ++threatend threatened ++threatning threatening ++threee three ++threshhold threshold ++thrid third ++throrough thorough ++throughly thoroughly ++throught thought, through, throughout ++througout throughout ++thru through ++thsi this ++thsoe those ++thta that ++thyat that ++tiem time, Tim ++tihkn think ++tihs this ++timeschedule time schedule ++timne time ++tiome time, tome ++tje the ++tjhe the ++tjpanishad upanishad ++tkae take ++tkaes takes ++tkaing taking ++tlaking talking ++tobbaco tobacco ++todya today ++toghether together ++toke took ++tolerence tolerance ++Tolkein Tolkien ++tomatos tomatoes ++tommorow tomorrow ++tommorrow tomorrow ++tongiht tonight ++toriodal toroidal ++tormenters tormentors ++tornadoe tornado ++torpeados torpedoes ++torpedos torpedoes ++tortise tortoise ++tothe to the ++toubles troubles ++tounge tongue ++tourch torch, touch ++towords towards ++towrad toward ++tradionally traditionally ++traditionaly traditionally ++traditionnal traditional ++traditition tradition ++tradtionally traditionally ++trafficed trafficked ++trafficing trafficking ++trafic traffic ++trancendent transcendent ++trancending transcending ++tranform transform ++tranformed transformed ++transcendance transcendence ++transcendant transcendent ++transcendentational transcendental ++transcripting transcribing, transcription ++transending transcending ++transesxuals transsexuals ++transfered transferred ++transfering transferring ++transformaton transformation ++transistion transition ++translater translator ++translaters translators ++transmissable transmissible ++transporation transportation ++tremelo tremolo ++tremelos tremolos ++trigered triggered ++triguered triggered ++triology trilogy ++troling trolling ++troup troupe ++troups troupes, troops ++truely truly ++trustworthyness trustworthiness ++turnk turnkey, trunk ++Tuscon Tucson ++tust trust ++tution tuition ++twelth twelfth ++twon town ++twpo two ++tyhat that ++tyhe they ++typcial typical ++typicaly typically ++tyranies tyrannies ++tyrany tyranny ++tyrranies tyrannies ++tyrrany tyranny ++ubiquitious ubiquitous ++ublisher publisher ++uise use ++Ukranian Ukrainian ++ultimely ultimately ++unacompanied unaccompanied ++unahppy unhappy ++unanymous unanimous ++unathorised unauthorised ++unavailible unavailable ++unballance unbalance ++unbeknowst unbeknownst ++unbeleivable unbelievable ++uncertainity uncertainty ++unchallengable unchallengeable ++unchangable unchangeable ++uncompetive uncompetitive ++unconcious unconscious ++unconciousness unconsciousness ++unconfortability discomfort ++uncontitutional unconstitutional ++unconvential unconventional ++undecideable undecidable ++understoon understood ++undesireable undesirable ++undetecable undetectable ++undoubtely undoubtedly ++undreground underground ++uneccesary unnecessary ++unecessary unnecessary ++unequalities inequalities ++unforseen unforeseen ++unforetunately unfortunately ++unforgetable unforgettable ++unforgiveable unforgivable ++unfortunatley unfortunately ++unfortunatly unfortunately ++unfourtunately unfortunately ++unihabited uninhabited ++unilateraly unilaterally ++unilatreal unilateral ++unilatreally unilaterally ++uninterruped uninterrupted ++uninterupted uninterrupted ++UnitesStates UnitedStates ++univeral universal ++univeristies universities ++univeristy university ++univerity university ++universtiy university ++univesities universities ++univesity university ++unkown unknown ++unlikey unlikely ++unmanouverable unmaneuverable, unmanoeuvrable ++unmistakeably unmistakably ++unneccesarily unnecessarily ++unneccesary unnecessary ++unneccessarily unnecessarily ++unneccessary unnecessary ++unnecesarily unnecessarily ++unnecesary unnecessary ++unoffical unofficial ++unoperational nonoperational ++unoticeable unnoticeable ++unplease displease ++unplesant unpleasant ++unprecendented unprecedented ++unprecidented unprecedented ++unrepentent unrepentant ++unrepetant unrepentant ++unrepetent unrepentant ++unsed used, unused, unsaid ++unsubstanciated unsubstantiated ++unsuccesful unsuccessful ++unsuccesfully unsuccessfully ++unsuccessfull unsuccessful ++unsucesful unsuccessful ++unsucesfuly unsuccessfully ++unsucessful unsuccessful ++unsucessfull unsuccessful ++unsucessfully unsuccessfully ++unsuprised unsurprised ++unsuprising unsurprising ++unsuprisingly unsurprisingly ++unsuprized unsurprised ++unsuprizing unsurprising ++unsuprizingly unsurprisingly ++unsurprized unsurprised ++unsurprizing unsurprising ++unsurprizingly unsurprisingly ++untill until ++untranslateable untranslatable ++unuseable unusable ++unusuable unusable ++unviersity university ++unwarrented unwarranted ++unweildly unwieldy ++unwieldly unwieldy ++upcomming upcoming ++upgradded upgraded ++upto up to ++usally usually ++useage usage ++usefull useful ++usefuly usefully ++useing using ++usualy usually ++ususally usually ++vaccum vacuum ++vaccume vacuum ++vacinity vicinity ++vaguaries vagaries ++vaieties varieties ++vailidty validity ++valetta valletta ++valuble valuable ++valueable valuable ++varations variations ++varient variant ++variey variety ++varing varying ++varities varieties ++varity variety ++vasall vassal ++vasalls vassals ++vegatarian vegetarian ++vegitable vegetable ++vegitables vegetables ++vegtable vegetable ++vehicule vehicle ++vell well ++venemous venomous ++vengance vengeance ++vengence vengeance ++verfication verification ++verison version ++verisons versions ++vermillion vermilion ++versitilaty versatility ++versitlity versatility ++vetween between ++veyr very ++vigeur vigueur, vigour, vigor ++vigilence vigilance ++vigourous vigorous ++villian villain ++villification vilification ++villify vilify ++villin villi, villain, villein ++vincinity vicinity ++violentce violence ++virtualy virtually ++virutal virtual ++virutally virtually ++visable visible ++visably visibly ++visting visiting ++vistors visitors ++vitories victories ++volcanoe volcano ++voleyball volleyball ++volontary voluntary ++volonteer volunteer ++volonteered volunteered ++volonteering volunteering ++volonteers volunteers ++volounteer volunteer ++volounteered volunteered ++volounteering volunteering ++volounteers volunteers ++volumne volume ++vreity variety ++vrey very ++vriety variety ++vulnerablility vulnerability ++vyer very ++vyre very ++waht what ++warantee warranty ++wardobe wardrobe ++warrent warrant ++warrriors warriors ++wass was ++watn want ++wayword wayward ++weaponary weaponry ++weas was ++wehn when ++weild wield, wild ++weilded wielded ++wendsay Wednesday ++wensday Wednesday ++wereabouts whereabouts ++whant want ++whants wants ++whcih which ++wheras whereas ++wherease whereas ++whereever wherever ++whic which ++whihc which ++whith with ++whlch which ++whn when ++wholey wholly ++wholy wholly, holy ++whta what ++whther whether ++wich which, witch ++widesread widespread ++wief wife ++wierd weird ++wiew view ++wih with ++wiht with ++wille will ++willk will ++willingless willingness ++wirting writing ++withdrawl withdrawal, withdraw ++witheld withheld ++withh with ++withing within ++withold withhold ++witht with ++witn with ++wiull will ++wnat want ++wnated wanted ++wnats wants ++wohle whole ++wokr work ++wokring working ++wonderfull wonderful ++wordlwide worldwide ++workststion workstation ++worls world ++worstened worsened ++woudl would ++wresters wrestlers ++wriet write ++writen written ++wroet wrote ++wrok work ++wroking working ++wtih with ++wupport support ++xenophoby xenophobia ++yaching yachting ++yaer year ++yaerly yearly ++yaers years ++yatch yacht ++yearm year ++yeasr years ++yeild yield ++yeilding yielding ++Yementite Yemenite, Yemeni ++yera year ++yrea year ++yeras years ++yersa years ++yotube youtube ++youseff yousef ++youself yourself ++ytou you ++yuo you ++zeebra zebra ++adn and ++alltime all-time ++antiapartheid anti-apartheid ++Coca Cola Coca-Cola ++co-incided coincided ++aircrafts' aircraft's ++countrie's countries, countries', country's ++didnt didn't ++doesnt doesn't ++dosen't doesn't ++Hallowean Hallowe'en, Halloween ++hasnt hasn't ++isnt isn't ++shoudln should, shouldn't ++thast that, that's ++theyre they're ++todays today's ++wasnt wasn't +--- /dev/null ++++ b/src/hunspell/hunspell_wrapper.cpp +@@ -0,0 +1,78 @@ ++#include ++#include ++#include ++ ++using std::string; ++using std::vector; ++ ++#include "hunspell_wrapper.h" ++ ++hunspell_T * hunspell_create(const char *affpath, const char *dpath) { ++ return reinterpret_cast(new Hunspell(affpath, dpath)); ++} ++ ++ ++void hunspell_destroy(hunspell_T *pHunspell) { ++ delete reinterpret_cast(pHunspell); ++} ++ ++void hunspell_add_dic(hunspell_T *pHunspell, const char *dicpath) ++{ ++ reinterpret_cast(pHunspell)->add_dic(dicpath); ++} ++ ++void hunspell_add_word(hunspell_T *pHunspell, const char *word) ++{ ++ reinterpret_cast(pHunspell)->add(string(word)); ++} ++ ++bool hunspell_is_wordchar(hunspell_T *handle, const char *p) ++{ ++ if (!handle || !p) { ++ return false; ++ } ++ ++ Hunspell * h = reinterpret_cast(handle); ++ const string &wordchars = h->get_wordchars_cpp(); ++ ++ return wordchars.find(*p) != string::npos; ++} ++ ++bool hunspell_spell_flags(hunspell_T* handle, const char *p, size_t len, int *flags) ++{ ++ string tospell(p, len); ++ Hunspell *h = reinterpret_cast(handle); ++ ++ return h->spell(tospell, flags); ++} ++ ++size_t hunspell_suggest(hunspell_T *handle, const char *word, size_t len, char ***ret) ++{ ++ string tosugg(word, len); ++ Hunspell *h = reinterpret_cast(handle); ++ ++ char ** suggtab = NULL; ++ size_t suglen = 0; ++ ++ if (ret == NULL) { ++ return 0; ++ } ++ ++ vector suggestions = h->suggest(tosugg); ++ suglen = suggestions.size(); ++ if (suglen == 0) { ++ goto theend; ++ } ++ ++ suggtab = (char **)calloc(suglen, sizeof(char *)); ++ ++ for (size_t i = 0; i < suglen; i++) { ++ suggtab[i] = strdup(suggestions[i].c_str()); ++ } ++ ++theend: ++ if (ret != NULL) { ++ *ret = suggtab; ++ } ++ return suglen; ++} +--- /dev/null ++++ b/src/hunspell/hunspell_wrapper.h +@@ -0,0 +1,39 @@ ++#ifndef HUNSPELL_WRAPPER_H ++#define HUNSPELL_WRAPPER_H ++ ++#ifdef __cplusplus ++extern "C" { ++#endif // __cplusplus ++ ++#include ++#include ++#include ++ ++#define HSPELL_COMPOUND (1 << 0) ++#define HSPELL_FORBIDDEN (1 << 1) ++#define HSPELL_ALLCAP (1 << 2) ++#define HSPELL_NOCAP (1 << 3) ++#define HSPELL_INITCAP (1 << 4) ++#define HSPELL_ORIGCAP (1 << 5) ++#define HSPELL_WARN (1 << 6) ++ ++typedef struct hunspell_S hunspell_T; ++ ++hunspell_T * hunspell_create(const char *affpath, const char *dicpath); ++ ++void hunspell_destroy(hunspell_T *pHunspell); ++ ++void hunspell_add_dic(hunspell_T *pHunspell, const char *dicpath); ++void hunspell_add_word(hunspell_T *pHunspell, const char *word); ++ ++bool hunspell_is_wordchar(hunspell_T *handle, const char *p); ++ ++bool hunspell_spell_flags(hunspell_T *handle, const char *word, size_t len, int *flags); ++ ++size_t hunspell_suggest(hunspell_T *handle, const char *word, size_t len, char ***ret); ++ ++#ifdef __cplusplus ++} ++#endif // __cplusplus ++ ++#endif // HUNSPELL_WRAPPER_H +--- a/src/nvim/CMakeLists.txt ++++ b/src/nvim/CMakeLists.txt +@@ -96,8 +96,8 @@ file(MAKE_DIRECTORY ${LINT_SUPPRESSES_RO + + glob_wrapper(NVIM_SOURCES *.c) + glob_wrapper(NVIM_HEADERS *.h) +-glob_wrapper(EXTERNAL_SOURCES ../xdiff/*.c ../mpack/*.c ../cjson/*.c) +-glob_wrapper(EXTERNAL_HEADERS ../xdiff/*.h ../mpack/*.h ../cjson/*.h) ++glob_wrapper(EXTERNAL_SOURCES ../xdiff/*.c ../mpack/*.c ../cjson/*.c ../hunspell/*.cpp) ++glob_wrapper(EXTERNAL_HEADERS ../xdiff/*.h ../mpack/*.h ../cjson/*.h ../hunspell/*.h) + + foreach(subdir + os +@@ -429,6 +429,7 @@ list(APPEND NVIM_LINK_LIBRARIES + ${UNIBILIUM_LIBRARIES} + ${UTF8PROC_LIBRARIES} + ${TreeSitter_LIBRARIES} ++ ${Hunspell_LIBRARIES} + ${CMAKE_THREAD_LIBS_INIT} + ) + +--- a/src/nvim/buffer_defs.h ++++ b/src/nvim/buffer_defs.h +@@ -462,8 +462,9 @@ typedef struct { + char *b_p_spf; // 'spellfile' + char *b_p_spl; // 'spelllang' + char *b_p_spo; // 'spelloptions' +-#define SPO_CAMEL 0x1 +-#define SPO_NPBUFFER 0x2 ++#define SPO_CAMEL (1 << 0) ++#define SPO_NPBUFFER (1 << 1) ++#define SPO_HUNSPELL (1 << 2) + unsigned b_p_spo_flags; // 'spelloptions' flags + int b_cjk; // all CJK letters as OK + uint8_t b_syn_chartab[32]; // syntax iskeyword option +--- a/src/nvim/optionstr.c ++++ b/src/nvim/optionstr.c +@@ -107,7 +107,7 @@ static char *(p_fdc_values[]) = { "auto" + "auto:6", "auto:7", "auto:8", "auto:9", "0", "1", "2", "3", "4", + "5", "6", "7", "8", "9", NULL }; + static char *(p_cb_values[]) = { "unnamed", "unnamedplus", NULL }; +-static char *(p_spo_values[]) = { "camel", "noplainbuffer", NULL }; ++static char *(p_spo_values[]) = { "camel", "noplainbuffer", "hunspell", NULL }; + static char *(p_icm_values[]) = { "nosplit", "split", NULL }; + static char *(p_jop_values[]) = { "stack", "view", NULL }; + static char *(p_tpf_values[]) = { "BS", "HT", "FF", "ESC", "DEL", "C0", "C1", NULL }; +@@ -1129,6 +1129,8 @@ char *did_set_string_option(int opt_idx, + if (opt_strings_flags(curwin->w_s->b_p_spo, p_spo_values, &(curwin->w_s->b_p_spo_flags), + true) != OK) { + errmsg = e_invarg; ++ } else { ++ spell_reload(); + } + } else if (varp == &p_sps) { // 'spellsuggest' + if (spell_check_sps() != OK) { +--- a/src/nvim/spell.c ++++ b/src/nvim/spell.c +@@ -63,7 +63,9 @@ + #include // for NULL, size_t, ptrdiff_t + #include // for snprintf + #include // for memmove, strstr, memcpy, memset ++#include + ++#include "hunspell/hunspell_wrapper.h" + #include "nvim/ascii.h" // for NUL, ascii_isdigit, ascii_iswhite + #include "nvim/autocmd.h" // for apply_autocmds + #include "nvim/buffer.h" // for bufref_valid, set_bufref, buf_is_empty +@@ -321,32 +323,45 @@ size_t spell_check(win_T *wp, char_u *pt + + // If reloading fails the language is still in the list but everything + // has been cleared. +- if (mi.mi_lp->lp_slang->sl_fidxs == NULL) { +- continue; +- } +- +- // Check for a matching word in case-folded words. +- find_word(&mi, FIND_FOLDWORD); +- +- // Check for a matching word in keep-case words. +- find_word(&mi, FIND_KEEPWORD); +- +- // Check for matching prefixes. +- find_prefix(&mi, FIND_FOLDWORD); ++ if (mi.mi_lp->lp_slang->sl_hunspell != NULL ++ && wp->w_s->b_p_spo_flags & SPO_HUNSPELL) { ++ if (mi.mi_end == mi.mi_word) { ++ MB_PTR_ADV(mi.mi_end); ++ } + +- // For a NOBREAK language, may want to use a word without a following +- // word as a backup. +- if (mi.mi_lp->lp_slang->sl_nobreak && mi.mi_result == SP_BAD +- && mi.mi_result2 != SP_BAD) { +- mi.mi_result = mi.mi_result2; +- mi.mi_end = mi.mi_end2; +- } +- +- // Count the word in the first language where it's found to be OK. +- if (count_word && mi.mi_result == SP_OK) { +- count_common_word(mi.mi_lp->lp_slang, ptr, +- (int)(mi.mi_end - ptr), 1); +- count_word = false; ++ int spell_flags = 0; ++ if (hunspell_spell_flags(mi.mi_lp->lp_slang->sl_hunspell, (char *)mi.mi_word, ++ (size_t)(mi.mi_end - mi.mi_word), &spell_flags)) { ++ mi.mi_result = ++ (spell_flags & HSPELL_FORBIDDEN) ? SP_BANNED : ++ (spell_flags & HSPELL_WARN) ? SP_RARE : SP_OK; ++ } else { ++ mi.mi_result = SP_BAD; ++ } ++ } else if (mi.mi_lp->lp_slang->sl_fidxs != NULL) { ++ // Check for a matching word in case-folded words. ++ find_word(&mi, FIND_FOLDWORD); ++ ++ // Check for a matching word in keep-case words. ++ find_word(&mi, FIND_KEEPWORD); ++ ++ // Check for matching prefixes. ++ find_prefix(&mi, FIND_FOLDWORD); ++ ++ // For a NOBREAK language, may want to use a word without a following ++ // word as a backup. ++ if (mi.mi_lp->lp_slang->sl_nobreak && mi.mi_result == SP_BAD ++ && mi.mi_result2 != SP_BAD) { ++ mi.mi_result = mi.mi_result2; ++ mi.mi_end = mi.mi_end2; ++ } ++ ++ // Count the word in the first language where it's found to be OK. ++ if (count_word && mi.mi_result == SP_OK) { ++ count_common_word(mi.mi_lp->lp_slang, ptr, ++ (int)(mi.mi_end - ptr), 1); ++ count_word = false; ++ } + } + } + +@@ -1497,9 +1512,35 @@ void spell_cat_line(char_u *buf, char_u + } + } + ++static void spell_hunspell_cb(char *path, void *ud) ++{ ++ spelload_T *sl = (spelload_T *)ud; ++ ++ char *aff_path = xstrdup(path); ++ STRCPY(aff_path + STRLEN(path) - 3, "aff"); ++ ++ hunspell_T *h = hunspell_create(aff_path, path); ++ if (h != NULL) { ++ sl->sl_slang = slang_alloc((char *)sl->sl_lang); ++ sl->sl_slang->sl_hunspell = h; ++ sl->sl_slang->sl_fname = xstrdup(aff_path); ++ } ++ ++ xfree(aff_path); ++} ++ ++static void spell_hunspell_add_cb(char *path, void *ud) ++{ ++ spelload_T *sl = (spelload_T *)ud; ++ if (sl->sl_slang->sl_hunspell != NULL) { ++ DLOG("Adding %s", path); ++ hunspell_add_dic(sl->sl_slang->sl_hunspell, path); ++ } ++} ++ + // Load word list(s) for "lang" from Vim spell file(s). + // "lang" must be the language without the region: e.g., "en". +-static void spell_load_lang(char_u *lang) ++static void spell_load_lang(win_T *wp, char_u *lang) + { + char fname_enc[85]; + int r; +@@ -1515,22 +1556,25 @@ static void spell_load_lang(char_u *lang + // autocommand may load it then. + for (int round = 1; round <= 2; round++) { + // Find the first spell file for "lang" in 'runtimepath' and load it. +- vim_snprintf((char *)fname_enc, sizeof(fname_enc) - 5, +- "spell/%s.%s.spl", lang, spell_enc()); +- r = do_in_runtimepath((char *)fname_enc, 0, spell_load_cb, &sl); +- +- if (r == FAIL && *sl.sl_lang != NUL) { +- // Try loading the ASCII version. ++ if (wp->w_s->b_p_spo_flags & SPO_HUNSPELL) { ++ vim_snprintf((char *)fname_enc, sizeof(fname_enc) - 5, "spell/%s.dic", lang); ++ r = do_in_runtimepath((char *)fname_enc, 0, spell_hunspell_cb, &sl); ++ } else { + vim_snprintf((char *)fname_enc, sizeof(fname_enc) - 5, +- "spell/%s.ascii.spl", lang); ++ "spell/%s.%s.spl", lang, spell_enc()); + r = do_in_runtimepath((char *)fname_enc, 0, spell_load_cb, &sl); +- +- if (r == FAIL && *sl.sl_lang != NUL && round == 1 +- && apply_autocmds(EVENT_SPELLFILEMISSING, (char *)lang, +- curbuf->b_fname, false, curbuf)) { +- continue; ++ if (r == FAIL && *sl.sl_lang != NUL) { ++ // Try loading the ASCII version. ++ vim_snprintf((char *)fname_enc, sizeof(fname_enc) - 5, ++ "spell/%s.ascii.spl", lang); ++ r = do_in_runtimepath((char *)fname_enc, 0, spell_load_cb, &sl); + } +- break; ++ } ++ ++ if (r == FAIL && *sl.sl_lang != NUL && round == 1 ++ && apply_autocmds(EVENT_SPELLFILEMISSING, (char *)lang, ++ curbuf->b_fname, false, curbuf)) { ++ continue; + } + break; + } +@@ -1550,8 +1594,17 @@ static void spell_load_lang(char_u *lang + } + } else if (sl.sl_slang != NULL) { + // At least one file was loaded, now load ALL the additions. +- STRCPY(fname_enc + STRLEN(fname_enc) - 3, "add.spl"); +- do_in_runtimepath((char *)fname_enc, DIP_ALL, spell_load_cb, &sl); ++ if (wp->w_s->b_p_spo_flags & SPO_HUNSPELL) { ++ // TODO(vigoux): probably not right and we'll have to load the .add files ++ STRCPY(fname_enc + STRLEN(fname_enc) - 3, "add"); ++ DLOG("Will try to load %s", fname_enc); ++ do_in_runtimepath((char *)fname_enc, DIP_ALL, spell_hunspell_add_cb, &sl); ++ sl.sl_slang->sl_next = first_lang; ++ first_lang = sl.sl_slang; ++ } else { ++ STRCPY(fname_enc + STRLEN(fname_enc) - 3, "add.spl"); ++ do_in_runtimepath((char *)fname_enc, DIP_ALL, spell_load_cb, &sl); ++ } + } + } + +@@ -1675,6 +1728,8 @@ void slang_clear(slang_T *lp) + lp->sl_compminlen = 0; + lp->sl_compsylmax = MAXWLEN; + lp->sl_regions[0] = NUL; ++ ++ hunspell_destroy(lp->sl_hunspell); + } + + // Clear the info from the .sug file in "lp". +@@ -1954,7 +2009,7 @@ char *did_set_spelllang(win_T *wp) + if (filename) { + (void)spell_load_file((char *)lang, (char *)lang, NULL, false); + } else { +- spell_load_lang((char_u *)lang); ++ spell_load_lang(wp, (char_u *)lang); + // SpellFileMissing autocommands may do anything, including + // destroying the buffer we are using... + if (!bufref_valid(&bufref)) { +@@ -2391,6 +2446,24 @@ bool spell_iswordp(const char_u *p, cons + { + const int l = utfc_ptr2len((char *)p); + const char_u *s = p; ++ ++ // TODO(vigoux): there is a lot more variants of iswordp ++ if (wp->w_s->b_p_spo_flags & SPO_HUNSPELL) { ++ for (int lpi = 0; lpi < wp->w_s->b_langp.ga_len; lpi++) { ++ langp_T *lp = LANGP_ENTRY(wp->w_s->b_langp, lpi); ++ ++ if (lp->lp_slang->sl_hunspell != NULL) { ++ // TODO(vigoux): correctly handle multibyte characters here ++ if (hunspell_is_wordchar(lp->lp_slang->sl_hunspell, (const char *)s)) { ++ return true; ++ } ++ } ++ } ++ int c = utf_ptr2char((char *)p); ++ // TODO(vigoux): that's certainly not right ++ return iswalnum(c); ++ } ++ + if (l == 1) { + // be quick for ASCII + if (wp->w_s->b_spell_ismw[*p]) { +@@ -2418,6 +2491,10 @@ bool spell_iswordp(const char_u *p, cons + bool spell_iswordp_nmw(const char_u *p, win_T *wp) + { + int c = utf_ptr2char((char *)p); ++ if (wp->w_s->b_p_spo_flags & SPO_HUNSPELL) { ++ return iswalnum(c); ++ } ++ + if (c > 255) { + return spell_mb_isword_class(mb_get_class(p), wp); + } +--- a/src/nvim/spell_defs.h ++++ b/src/nvim/spell_defs.h +@@ -4,6 +4,7 @@ + #include + #include + ++#include "hunspell/hunspell_wrapper.h" + #include "nvim/buffer_defs.h" + #include "nvim/garray.h" + #include "nvim/regexp_defs.h" +@@ -111,10 +112,8 @@ typedef int salfirst_T; + // Exception: when the byte is zero, the word may end here and "idxs" holds + // the flags, region mask and affixID for the word. There may be several + // zeros in sequence for alternative flag/region/affixID combinations. +-typedef struct slang_S slang_T; +- +-struct slang_S { +- slang_T *sl_next; // next language ++typedef struct slang_S { ++ struct slang_S *sl_next; // next language + char *sl_name; // language name "en", "en.rare", "nl", etc. + char *sl_fname; // name of .spl file + bool sl_add; // true if it's a .add file. +@@ -183,7 +182,8 @@ struct slang_S { + int sl_map_array[256]; // MAP for first 256 chars + hashtab_T sl_sounddone; // table with soundfolded words that have + // handled, see add_sound_suggest() +-}; ++ hunspell_T *sl_hunspell; ++} slang_T; + + // Structure used in "b_langp", filled from 'spelllang'. + typedef struct langp_S { +--- a/src/nvim/spellfile.c ++++ b/src/nvim/spellfile.c +@@ -226,17 +226,22 @@ + // stored as an offset to the previous number in as + // few bytes as possible, see offset2bytes()) + ++#include + #include + #include + #include + ++#include "hunspell/hunspell_wrapper.h" + #include "nvim/arglist.h" + #include "nvim/ascii.h" + #include "nvim/buffer.h" ++#include "nvim/buffer_defs.h" + #include "nvim/charset.h" + #include "nvim/drawscreen.h" + #include "nvim/ex_cmds2.h" + #include "nvim/fileio.h" ++#include "nvim/globals.h" ++#include "nvim/lib/kvec.h" + #include "nvim/memline.h" + #include "nvim/memory.h" + #include "nvim/option.h" +@@ -5506,6 +5511,41 @@ void ex_spell(exarg_T *eap) + eap->cmdidx == CMD_spellundo); + } + ++void spell_hunspell_format_dic(const char *path) ++{ ++ kvec_t(char *) words = KV_INITIAL_VALUE; ++ char line[MAXWLEN * 2]; ++ FILE *fd = os_fopen(path, "r+"); ++ ++ bool first_line = true; ++ if (fd != NULL) { ++ // First read the amount of lines ++ while (!vim_fgets((char_u *)line, MAXWLEN * 2, fd)) { ++ if (first_line && *line >= '0' && *line <= '9') { ++ // Ignore the first line ++ // TODO(vigoux): maybe use that to reserve the correct amount of memory ++ // for the words array ? ++ first_line = false; ++ } else if (STRLEN(line) > 1 && *line != '#') { ++ kv_push(words, xstrdup(line)); ++ } ++ } ++ ++ if (fseek(fd, 0, SEEK_SET) != 0) { ++ PERROR(_("Seek error in spellfile")); ++ return; ++ } ++ fprintf(fd, "%lu\n", kv_size(words)); ++ for (size_t i = 0; i < kv_size(words); i++) { ++ fprintf(fd, "%s", kv_A(words, i)); ++ xfree(kv_A(words, i)); ++ } ++ ++ fclose(fd); ++ kv_destroy(words); ++ } ++} ++ + /// Add "word[len]" to 'spellfile' as a good or bad word. + /// + /// @param what SPELL_ADD_ values +@@ -5640,6 +5680,8 @@ void spell_add_word(char_u *word, int le + if (fd == NULL) { + semsg(_(e_notopen), fname); + } else { ++ // TODO(vigoux): for spo=hunspell the ?/! is recognized only if it is set ++ // accordingly in the affix file. So either we'll have to + if (what == SPELL_ADD_BAD) { + fprintf(fd, "%.*s/!\n", len, word); + } else if (what == SPELL_ADD_RARE) { +@@ -5655,8 +5697,28 @@ void spell_add_word(char_u *word, int le + } + + if (fd != NULL) { +- // Update the .add.spl file. +- mkspell(1, &fname, false, true, true); ++ // Update the spellchecking ++ // For hunspell, just add the word to the runtime session to save time ++ // For legacy engine, perform mkspell, which reloads all the spellchecking ++ if (curwin->w_s->b_p_spo_flags & SPO_HUNSPELL) { ++ if (idx == 0) { ++ // When `zG` or `zW` add the word to the internal word list ++ for (int lpi = 0; lpi < curwin->w_s->b_langp.ga_len; lpi++) { ++ langp_T *lp = LANGP_ENTRY(curwin->w_s->b_langp, lpi); ++ if (lp->lp_slang->sl_hunspell != NULL) { ++ // TODO(vigoux): When adding a bad word, we'll have to remove ++ // instead of add ++ hunspell_add_word(lp->lp_slang->sl_hunspell, (char *)word); ++ } ++ } ++ } else { ++ spell_hunspell_format_dic(fname); ++ spell_reload(); ++ } ++ } else { ++ // Update the .add.spl file. ++ mkspell(1, &fname, false, true, true); ++ } + + // If the .add file is edited somewhere, reload it. + if (buf != NULL) { +@@ -5722,13 +5784,19 @@ static void init_spellfile(void) + "/%.*s", (int)(lend - lstart), lstart); + } + l = (int)STRLEN(buf); +- fname = (char_u *)LANGP_ENTRY(curwin->w_s->b_langp, 0) +- ->lp_slang->sl_fname; +- vim_snprintf((char *)buf + l, MAXPATHL - (size_t)l, ".%s.add", +- ((fname != NULL +- && strstr(path_tail((char *)fname), ".ascii.") != NULL) +- ? "ascii" +- : (const char *)spell_enc())); ++ slang_T *sl = LANGP_ENTRY(curwin->w_s->b_langp, 0) ++ ->lp_slang; ++ if (sl->sl_hunspell != NULL && curwin->w_s->b_p_spo_flags & SPO_HUNSPELL) { ++ // When using hunspell, only output the word on .add ++ vim_snprintf((char *)buf + l, MAXPATHL - (size_t)l, ".add"); ++ } else { ++ fname = (char_u *)sl->sl_fname; ++ vim_snprintf((char *)buf + l, MAXPATHL - (size_t)l, ".%s.add", ++ ((fname != NULL ++ && strstr(path_tail((char *)fname), ".ascii.") != NULL) ++ ? "ascii" ++ : (const char *)spell_enc())); ++ } + set_option_value_give_err("spellfile", 0L, (const char *)buf, OPT_LOCAL); + break; + } +--- a/src/nvim/spellsuggest.c ++++ b/src/nvim/spellsuggest.c +@@ -3,7 +3,9 @@ + + // spellsuggest.c: functions for spelling suggestions + ++#include "hunspell/hunspell_wrapper.h" + #include "nvim/ascii.h" ++#include "nvim/buffer_defs.h" + #include "nvim/change.h" + #include "nvim/charset.h" + #include "nvim/cursor.h" +@@ -879,77 +881,98 @@ static void spell_suggest_file(suginfo_T + /// Find suggestions for the internal method indicated by "sps_flags". + static void spell_suggest_intern(suginfo_T *su, bool interactive) + { +- // Load the .sug file(s) that are available and not done yet. +- suggest_load_files(); ++ if (curbuf->b_s.b_p_spo_flags & SPO_HUNSPELL) { ++ for (int i = 0; i < curbuf->b_s.b_langp.ga_len; i++) { ++ langp_T *lp = LANGP_ENTRY(curbuf->b_s.b_langp, i); ++ if (lp->lp_slang != NULL && lp->lp_slang->sl_hunspell != NULL) { ++ char **suggestions = NULL; ++ size_t nsuggs = ++ hunspell_suggest(lp->lp_slang->sl_hunspell, (const char *)su->su_badptr, ++ (size_t)su->su_badlen, &suggestions); ++ ++ for (size_t j = 0; j < nsuggs; j++) { ++ add_suggestion(su, &su->su_ga, suggestions[j], su->su_badlen, ++ SCORE_FILE + (int)j, 0, true, su->su_sallang, false); ++ } + +- // 1. Try special cases, such as repeating a word: "the the" -> "the". +- // +- // Set a maximum score to limit the combination of operations that is +- // tried. +- suggest_try_special(su); +- +- // 2. Try inserting/deleting/swapping/changing a letter, use REP entries +- // from the .aff file and inserting a space (split the word). +- suggest_try_change(su); +- +- // For the resulting top-scorers compute the sound-a-like score. +- if (sps_flags & SPS_DOUBLE) { +- score_comp_sal(su); +- } +- +- // 3. Try finding sound-a-like words. +- if ((sps_flags & SPS_FAST) == 0) { +- if (sps_flags & SPS_BEST) { +- // Adjust the word score for the suggestions found so far for how +- // they sounds like. +- rescore_suggestions(su); +- } +- +- // While going through the soundfold tree "su_maxscore" is the score +- // for the soundfold word, limits the changes that are being tried, +- // and "su_sfmaxscore" the rescored score, which is set by +- // cleanup_suggestions(). +- // First find words with a small edit distance, because this is much +- // faster and often already finds the top-N suggestions. If we didn't +- // find many suggestions try again with a higher edit distance. +- // "sl_sounddone" is used to avoid doing the same word twice. +- suggest_try_soundalike_prep(); +- su->su_maxscore = SCORE_SFMAX1; +- su->su_sfmaxscore = SCORE_MAXINIT * 3; +- suggest_try_soundalike(su); +- if (su->su_ga.ga_len < SUG_CLEAN_COUNT(su)) { +- // We didn't find enough matches, try again, allowing more +- // changes to the soundfold word. +- su->su_maxscore = SCORE_SFMAX2; ++ if (nsuggs > 0) { ++ xfree(suggestions); ++ } ++ } ++ } ++ } else { ++ // Load the .sug file(s) that are available and not done yet. ++ suggest_load_files(); ++ ++ // 1. Try special cases, such as repeating a word: "the the" -> "the". ++ // ++ // Set a maximum score to limit the combination of operations that is ++ // tried. ++ suggest_try_special(su); ++ ++ // 2. Try inserting/deleting/swapping/changing a letter, use REP entries ++ // from the .aff file and inserting a space (split the word). ++ suggest_try_change(su); ++ ++ // For the resulting top-scorers compute the sound-a-like score. ++ if (sps_flags & SPS_DOUBLE) { ++ score_comp_sal(su); ++ } ++ ++ // 3. Try finding sound-a-like words. ++ if ((sps_flags & SPS_FAST) == 0) { ++ if (sps_flags & SPS_BEST) { ++ // Adjust the word score for the suggestions found so far for how ++ // they sounds like. ++ rescore_suggestions(su); ++ } ++ ++ // While going through the soundfold tree "su_maxscore" is the score ++ // for the soundfold word, limits the changes that are being tried, ++ // and "su_sfmaxscore" the rescored score, which is set by ++ // cleanup_suggestions(). ++ // First find words with a small edit distance, because this is much ++ // faster and often already finds the top-N suggestions. If we didn't ++ // find many suggestions try again with a higher edit distance. ++ // "sl_sounddone" is used to avoid doing the same word twice. ++ suggest_try_soundalike_prep(); ++ su->su_maxscore = SCORE_SFMAX1; ++ su->su_sfmaxscore = SCORE_MAXINIT * 3; + suggest_try_soundalike(su); + if (su->su_ga.ga_len < SUG_CLEAN_COUNT(su)) { +- // Still didn't find enough matches, try again, allowing even +- // more changes to the soundfold word. +- su->su_maxscore = SCORE_SFMAX3; ++ // We didn't find enough matches, try again, allowing more ++ // changes to the soundfold word. ++ su->su_maxscore = SCORE_SFMAX2; + suggest_try_soundalike(su); ++ if (su->su_ga.ga_len < SUG_CLEAN_COUNT(su)) { ++ // Still didn't find enough matches, try again, allowing even ++ // more changes to the soundfold word. ++ su->su_maxscore = SCORE_SFMAX3; ++ suggest_try_soundalike(su); ++ } + } ++ su->su_maxscore = su->su_sfmaxscore; ++ suggest_try_soundalike_finish(); + } +- su->su_maxscore = su->su_sfmaxscore; +- suggest_try_soundalike_finish(); +- } +- +- // When CTRL-C was hit while searching do show the results. Only clear +- // got_int when using a command, not for spellsuggest(). +- os_breakcheck(); +- if (interactive && got_int) { +- (void)vgetc(); +- got_int = false; +- } + +- if ((sps_flags & SPS_DOUBLE) == 0 && su->su_ga.ga_len != 0) { +- if (sps_flags & SPS_BEST) { +- // Adjust the word score for how it sounds like. +- rescore_suggestions(su); ++ // When CTRL-C was hit while searching do show the results. Only clear ++ // got_int when using a command, not for spellsuggest(). ++ os_breakcheck(); ++ if (interactive && got_int) { ++ (void)vgetc(); ++ got_int = false; + } + +- // Remove bogus suggestions, sort and truncate at "maxcount". +- check_suggestions(su, &su->su_ga); +- (void)cleanup_suggestions(&su->su_ga, su->su_maxscore, su->su_maxcount); ++ if ((sps_flags & SPS_DOUBLE) == 0 && su->su_ga.ga_len != 0) { ++ if (sps_flags & SPS_BEST) { ++ // Adjust the word score for how it sounds like. ++ rescore_suggestions(su); ++ } ++ ++ // Remove bogus suggestions, sort and truncate at "maxcount". ++ check_suggestions(su, &su->su_ga); ++ (void)cleanup_suggestions(&su->su_ga, su->su_maxscore, su->su_maxcount); ++ } + } + } + diff --git a/7423-run-tests-aarch64.patch b/7423-run-tests-aarch64.patch new file mode 100644 index 0000000..bdfe7a7 --- /dev/null +++ b/7423-run-tests-aarch64.patch @@ -0,0 +1,39 @@ +From 59f4bd435c6754f475dfb61bb6c881ce914b17e6 Mon Sep 17 00:00:00 2001 +From: James McCoy +Date: Wed, 29 Nov 2017 10:07:12 -0500 +Subject: [PATCH] unittest: Ignore _Float128 types in ffi + +When building with certain GCC versions, a _Float128 type is present +when setting up the ffi for unit tests. + + ./test/unit/helpers.lua:256: declaration specifier expected near '_Float128' at line 396 + /usr/bin/luajit: /usr/share/lua/5.1/busted/runner.lua:99: attempt to concatenate local 'message' (a table value) + stack traceback: + /usr/share/lua/5.1/busted/runner.lua:99: in function 'fn' + /usr/share/lua/5.1/mediator.lua:103: in function 'publish' + /usr/share/lua/5.1/busted/modules/helper_loader.lua:21: in function 'helperLoader' + /usr/share/lua/5.1/busted/runner.lua:147: in function + /usr/bin/busted:3: in main chunk + [C]: at 0x004044a0 + + CMake Error at /<>/cmake/RunTests.cmake:53 (message): + Running unit tests failed with error: 1. + +Since this is being pulled in by a dependency, not directly used by +nvim, just ignore the type. + +Closes #7423 +--- + test/unit/helpers.lua | 1 + + 1 file changed, 1 insertion(+) + +--- a/test/unit/helpers.lua ++++ b/test/unit/helpers.lua +@@ -136,6 +136,7 @@ local function filter_complex_blocks(bod + if not (string.find(line, "(^)", 1, true) ~= nil + or string.find(line, "_ISwupper", 1, true) + or string.find(line, "_Float") ++ or string.find(line, "_Float128") + or string.find(line, "msgpack_zone_push_finalizer") + or string.find(line, "msgpack_unpacker_reserve_buffer") + or string.find(line, "UUID_NULL") -- static const uuid_t UUID_NULL = {...} diff --git a/_service b/_service new file mode 100644 index 0000000..b0fff14 --- /dev/null +++ b/_service @@ -0,0 +1,16 @@ + + + 0.8.0~git + https://github.com/neovim/neovim + git + .git* + enable + mcepl@cepl.eu + + + + xz + *.tar + + + diff --git a/_servicedata b/_servicedata new file mode 100644 index 0000000..ace9c51 --- /dev/null +++ b/_servicedata @@ -0,0 +1,6 @@ + + + https://github.com/neovim/neovim + f98cff9575e75a050d2bde01ad950c0c72bcfc3e + + \ No newline at end of file diff --git a/lj-busted.sh b/lj-busted.sh new file mode 100755 index 0000000..e29698f --- /dev/null +++ b/lj-busted.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -xeu + +/usr/bin/luajit /usr/bin/busted "$@" diff --git a/neovim-0.1.7-bitop.patch b/neovim-0.1.7-bitop.patch new file mode 100644 index 0000000..6c1b947 --- /dev/null +++ b/neovim-0.1.7-bitop.patch @@ -0,0 +1,36 @@ +--- + CMakeLists.txt | 2 +- + src/nvim/ex_cmds.lua | 2 +- + src/nvim/generators/gen_ex_cmds.lua | 2 +- + 3 files changed, 3 insertions(+), 3 deletions(-) + +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -547,7 +547,7 @@ endforeach() + + # Find Lua interpreter + include(LuaHelpers) +-set(LUA_DEPENDENCIES lpeg mpack bit) ++set(LUA_DEPENDENCIES lpeg mpack bit32) + if(NOT LUA_PRG) + foreach(CURRENT_LUA_PRG luajit lua5.1 lua5.2 lua) + unset(_CHECK_LUA_PRG CACHE) +--- a/src/nvim/ex_cmds.lua ++++ b/src/nvim/ex_cmds.lua +@@ -1,4 +1,4 @@ +-local bit = require 'bit' ++local bit = require 'bit32' + + local module = {} + +--- a/src/nvim/generators/gen_ex_cmds.lua ++++ b/src/nvim/generators/gen_ex_cmds.lua +@@ -22,7 +22,7 @@ local defsfname = autodir .. '/ex_cmds_d + local enumfile = io.open(enumfname, 'w') + local defsfile = io.open(defsfname, 'w') + +-local bit = require 'bit' ++local bit = require 'bit32' + local ex_cmds = require('ex_cmds') + local defs = ex_cmds.cmds + local flags = ex_cmds.flags diff --git a/neovim-rpmlintrc b/neovim-rpmlintrc new file mode 100644 index 0000000..e69de29 diff --git a/neovim.changes b/neovim.changes new file mode 100644 index 0000000..649fb44 --- /dev/null +++ b/neovim.changes @@ -0,0 +1,10335 @@ +------------------------------------------------------------------- +Sun Sep 11 20:15:46 UTC 2022 - mcepl@cepl.eu + +- Add 20131-hunspell.patch to allow optional use of hunspell backend. +- Remove neovim-0.2.0-gcc-prototype.patch as it is not needed + anymore, prototypes are apparently automatically generated. +- Update to version 0.8.0~git.1662905274.f98cff957: + * vim-patch:9.0.0443: blueprint files are not recognized (#20155) + * fix(lsp): schedule removal of client object (#20148) + * vim-patch:71b6d3397649 (#20144) + * build: ensure version generation always succeeds (#19515) + * vim-patch:9.0.0434: gitignore files are not recognized (#20143) + * refactor: replace char_u with char + * ci: add more reviewers based on label (#17975) + * docs: removed outdated coverage link + * refactor: replace char_u with char + * vim-patch:9.0.0427: Drupal theme files are not recognized (#20138) + * vim-patch:9.0.0424: gitattributes files are not recognized (#20134) + * build(deps): bump Luv to 1.44.2-1 (#20128) + * ci: move BSD jobs from sourcehut to Cirrus CI #19616 + * ci(labeler): add treesitter label for query changes (#20122) + * build(deps): bump tree-sitter-viml to 0.2.0 (#20121) + * docs(lsp): update rpc.start stdio limitations (#20120) + * fix(lsp): when buffer detach remove buffer from client attached buffers (#20081) + * vim-patch:9.0.0417: Jsonnet files are not recognized (#20119) + * build: remove unnecessary build functions + * build: replace deprecated CMAKE_COMPILER_IS_GNUCC variable + * build: remove unnecessary policy related code + * build: remove ARGS from add_custom_command + * feat(lsp): add range option to lsp.buf.format (#19998) + * fix(treesitter): use the right loading order for base queries (#20117) + * feat(treesitter)!: do not merge queries by default (#20105) + * fix(docs): remove duplicate word + * docs(treesitter): fix doxygen + * vim-patch:9.0.0412: compiler warning for unused argument + * vim-patch:9.0.0410: struct member cts_lnum is unused + * vim-patch:9.0.0409: #{g:x} was seen as a curly-braces expression + * vim-patch:8.2.3702: first key in dict is seen as curly expression and fails + * vim-patch:9.0.0403: 'equalalways' may be off when 'laststatus' is zero (#20109) + * fix(options): mark `winhighlight` as list style (#19477) + * vim-patch:9.0.0402: javascript module files are not recoginzed (#20108) + * Use weak tables in tree-sitter code (#17117) + * fix(diagnostic): remove buf from cache on `BufWipeout` (#20099) + * refactor(typval): change FC_CFUNC abstraction into FC_LUAREF + * build(treesitter): set CMAKE_C_STANDARD to C99 + * fix(terminal): adopt altscreen test for libvterm 0.2 changes + * build(deps): use libvterm 0.3-rc1 + * feat(term): add support for libvterm >= 0.2 + * fix(ts): do not clobber spelloptions (#20095) + * fix(treesitter): don't support legacy syntax in start() + * build: consistently set build type regardless of generator or platform #19760 + * refactor: replace char_u with char + * fix(cmdheight=0): various issues part3 #19816 + * refactor: migrate comment style 2 #20080 + * refactor(term): use const for title and add len to buf_set_term_title() + * feat(extmarks,ts,spell): full support for spelling + * refactor(treesitter): get_{nodes,captures}_at_{position,cursor} + * feat(treesitter): upstream get_node_at_cursor() + * vim-patch:partial 0daafaa7d99e (#20083) + * docs: update .mailmap (#20086) + * feat(treesitter): add vim.treesitter.start(), enable for Lua + * fix(treesitter): do not link @error by default + * feat(treesitter): add injections + * feat(treesitter): add viml parser and queries + * ci(tests): don't skip parsers on functionaltest + * feat(treesitter): bundle Lua parser and queries + * refactor(ex_cd): add an early return to fix clint warning + * vim-patch:9.0.0386: some code blocks are nested too deep + * docs(contributing): fix broken link (#20044) + * feat(pum): pretend 'mousemoveevent' is set when showing right-click menu + * feat(api): add "move" to nvim_input_mouse + * feat(tui): support 'mousemoveevent' + * feat(ui-ext): make 'mousemoveevent' a ui_option + * vim-patch:8.2.4674: cannot force getting MouseMove events + * vim-patch:088e8e344352 + * vim-patch:7.4.{1578,1624} + * build(deps): bump tree-sitter-c to v0.20.2 (#20079) + * ci: remove gpanders from api reviewers (#20074) + * fix(filetype): run filetype.match on StdinReadPost (#20070) + * feat(treesitter): include language in invalid query error (#14053) + * ci(clint): remove "Inner expression indentation should be 4" rule (#20047) + * build(deps): bump tree-sitter to v0.20.7 (#20067) + * docs: update .git-blame-ignore-revs (#20066) + * vim-patch:9.0.0362: expanding ":e %" does not work for remote files + * vim-patch:9.0.0360: crash when invalid line number on :for is ignored + * vim-patch:8.2.1505: not all file read and writecode is tested + * refactor: migrate comment style (#20012) + * fix(api)!: correctly deal with number before :tab + * feat(Man): port to Lua (#19912) + * fix(ui): ui compositor does not correctly free event callbacks + * vim-patch:9.0.0349: filetype of *.sil files not well detected (#20050) + * feat(api): add support for :horizontal modifier + * vim-patch:9.0.0346: :horizontal modifier not fully supported + * vim-patch:9.0.0342: ":wincmd =" equalizes in two directions + * refactor: replace char_u with char + * fix(lua): make ui_attach()/ui_detach() take effect immediately (#20037) + * perf(messages): don't call ui_flush() per message line in various places + * fix(maparg): remove double allocation (#20033) + * vim-patch:9.0.0343: ColorScheme autocommand triggered when colorscheme not found (#20032) + * feat(mapset): support restoring Lua callback (#20024) + * refactor: replace char_u with char + * refactor(highlight): make hlattrs2dict always use pre-allocated dict + * feat(lua): vim.ui_attach to get ui events from lua + * refactor(mappings)!: mapblock_fill_dict() use API Dictionary (#20020) + * refactor: replace char_u with char + * fix(api): nvim_set_hl bail out on invalid group name (#20021) + * vim-patch:9b03d3e75b42 (#20013) + * vim-patch:8.2.3102: test for crash fix does not fail without the fix (#20018) + * vim-patch:8.2.0301: insufficient testing for exception handling (#20016) + * vim-patch:8.1.2037: can call win_gotoid() in cmdline window (#20015) + * vim-patch:9.0.0332: overwrite check may block BufWriteCmd (#20014) + * fix(exceptions): restore `did_throw` (#20000) + * Vim 9.0.{0314,0319}: some filetypes are not recognized (#20005) + * refactor: replace char_u with char 4 (#19987) + * docs(lua): present vim.o as default and vim.opt as special-purpose #19982 + * fix(docs): update lsp.rpc.start docs to match return value changes (#20003) + * docs(lsp): replace formatting_sync example in lsp-faq (#19994) + * fix(highlight): set the window namespace when redrawing statusline + * feat(tui): recognize sidescroll events (#19992) + * vim-patch:9.0.0320: command line type of CmdlineChange differs from getcmdtype() + * refactor: move cmdline functions to ex_getln.c + * vim-patch:9.0.0318: clearing screen causes flicker (#19993) + * fix(redraw): handle switching to a tabpage with larger p_ch value + * fix(lsp): clean the diagnostic cache when buffer delete (#19449) + * refactor: replace char_u with char + * vim-patch:9.0.0316: screen flickers when 'cmdheight' is zero (#19991) + * refactor(plines): use a struct for chartabsize state + * vim-patch:9.0.0285: it is not easy to change the command line from a plugin (#19979) + * fix(events): triggered WinScrolled when only skipcol changed (#19972) + * fix(keywordprg): default to :help if set to empty string (#19983) + * feat(lsp): add tcp support + * refactor(lsp): extract rpc client from rpc.start + * refactor(lsp): encapsulate rpc uv handle + * refactor(lsp): factor out read_loop function + * fix(l10n): improve zh_CN and zh_TW translations (#19969) + * vim-patch:8.2.3813: confusing error when using :cc without error list (#19978) + * refactor: replace char_u with char + * refactor: remove redundant casts + * docs: fix typos (#19798) + * vim-patch:8.2.1269: language and locale code spread out (#19964) + * vim-patch:8.2.0660: the search.c file is a bit big (#19963) + * vim-patch:9.0.0284: using static buffer for multiple completion functions + * vim-patch:9.0.0283: cannot complete "syn list @cluster" + * vim-patch:9.0.0279: the tiny version has the popup menu but not 'wildmenu' + * vim-patch:9.0.0278: the +wildignore feature is nearly always available + * vim-patch:9.0.0276: 'buftype' values not sufficiently tested + * vim-patch:9.0.0275: BufEnter not triggered when using ":edit" in "nofile" buffer + * vim-patch:9.0.0274: netrw plugin does not show remote files + * vim-patch:9.0.0272: BufReadCmd not triggered when loading a "nofile" buffer + * refactor: replace char_u with char + * vim-patch:7dd543246a4c (#19960) + * vim-patch:8.2.0674: some source files are too big (#19959) + * fix(treesitter): make it get_captures_at_position + * feat(treesitter): upstream get_hl_groups_at_position() + * feat(treesitter)!: use @foo.bar style highlight groups + * feat(highlight): support scoped @spam.eggs.baked_beans groups + * vim-patch:8.1.2331: the option.c file is still very big (#19954) + * refactor: change FALSE/TRUE to false/true + * vim-patch:9.0.0040: use of set_chars_option() is confusing + * refactor: set_chars_option() + * vim-patch:9.0.0038: 'listchars' test fails + * vim-patch:9.0.0036: 'fillchars' cannot have window-local values + * vim-patch:8.2.2524: cannot change the characters displayed in the foldcolumn + * vim-patch:9.0.0270: some values of 'path' and 'tags' invalid in the tiny version + * vim-patch:9.0.0263: too many #ifdefs + * fix(tests): use pending_c_parser when needed + * refactor: replace char_u with char + * fix(treesitter): more efficient node:root() + * fix(docs): update auto-generated documentation + * feat(treesitter): clarify similar 'get_node_range' functions + * feat(treesitter): upstream node_contains() + * feat(treesitter): upstream node_length() as a node method + * feat(treesitter): upstream get_root_for_node() as a node method + * feat(treesitter): upstream get_named_children() as a node method + * feat(treesitter): add ability to retreive a tree/node given a range + * feat(treesitter): add opts.concat to query.get_text_node + * feat(treesitter): upstream is_parent() + * vim-patch:8.2.0923: cmdline test is slow + * vim-patch:8.2.0911: crash when opening a buffer for the cmdline window fails + * vim-patch:9.0.0261: bufload() reads a file even if the name is not a file name (#19944) + * refactor: pre-incr to post-incr + * vim-patch:8.2.4356: command line completion functions are very long (#19943) + * fix(usercmd): also check for whitespace after escaped character (#19942) + * refactor: suppress clang and PVS warnings (#19940) + * docs(contributing): add documenting guidelines from wiki (#19924) + * vim-patch:8.2.4289: warnings reported by MSVC + * vim-patch:8.2.2826: compiler warnings for int to size_t conversion + * vim-patch:8.2.1960: warning for uninitialized variable + * vim-patch:8.2.1728: compiler warning for using uninitialized variable + * vim-patch:8.1.1085: compiler warning for possibly uninitialized variable + * refactor: ins_compl_show_pum() (#19938) + * vim-patch:partial:8.2.4001: insert complete code uses global variables + * vim-patch:8.2.3942: Coverity reports a possible memory leak + * vim-patch:8.2.4037: Insert mode completion is insufficiently tested + * vim-patch:8.2.3989: some insert completion code is not tested + * vim-patch:8.2.2534: missing test coverage + * vim-patch:9.0.0102: reading past end of line with insert mode completion + * vim-patch:9.0.0060: accessing uninitialized memory when completing long line + * vim-patch:9.0.0046: reading past end of completion with duplicate match + * vim-patch:9.0.0045: reading past end of completion with a long line + * vim-patch:fd999452adaf (#19929) + * fix(treesitter): free memory on removing parser (#19933) + * feat(highlight)!: error on invalid names and allow '.' and '@' + * test(treesitter): make internal lang test pending when necessary + * feat(lua): add vim.iconv (#18286) + * feat(eval)!: make Vim functions return inner window width and height (#19743) + * vim-patch:partial:8.2.3953: insert completion code is too complicated (#19923) + * refactor(api): provide a temporary copy solution for nvim_call_atomic + * refactor(arena): use a shared block freelist + * vim-patch:9.0.0020: with some completion reading past end of string (#19922) + * vim-patch:8.2.3944: insert mode completion functions are too long + * vim-patch:8.2.3937: Insert mode completion function is too long + * fix(path): path_is_url returns false for "foo:/" #19797 + * fix(cmdline): do not trigger completion at wrong time (#19920) + * vim-patch:9.0.0248: duplicate code in finding a script in the execution stack (#19917) + * perf(api): allow to use an arena for return values + * vim-patch:9.0.0206: redraw flags are not named specifically (#19913) + * refactor(spell.c): resolve clint errors (#19875) + * doc(CONTRIBUTING): update #19891 + * fix(inspect): escape identifiers that are lua keywords (#19898) + * vim-patch:8.2.4842: expand("%:p") is not empty when there is no buffer name + * vim-patch:8.2.4841: empty string considered an error for expand() + * vim-patch:8.2.4749: