You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
koreader/frontend
Aleksa Sarai 7c5243667b reader: implement language-support plugin system
This creates a new plugin system which hooks into a handful of reader
operations in order to allow plugins to add language-specific support
where the default reader falls short. The two hooks added are:

 * During hold-without-pan taps, language plugins can modify the
   selection in order to better match what users expect koreader to
   highlight when selecting a single word.

   The vast majority of CJK language words are more than one character,
   but KOReader treats all CJK characters as a single word by default,
   so adding this hook means that readers no longer need to manually
   select the whole word every time they need to look something.

 * During dictionary lookup, language plugins can propose alternative
   candidate words to look up if the selected word could not be found in
   the dictionary.

   This is pretty necessary for Japanese and Korean, both of which are
   highly agglutinative languages and the fuzzy searching system of
   StarDict is simply not usable because often the inflection of the
   word is so much longer than the dictionary form that sdcv decides to
   chop off the actual word and search for the inflection (which yields
   useless results).

This system is of particular interest for readers of CJK languages
(without this, looking up words using KOReader was fairly painful) but
this system is designed to be minimal and language-agnostic enough that
other languages could make use of it by creating their own plugins if
the default "whole word" highlight and fuzzy-search system doesn't match
their needs.

Signed-off-by: Aleksa Sarai <cyphar@cyphar.com>
3 years ago
..
apps reader: implement language-support plugin system 3 years ago
device Add initial support for Kobo Sage (Cadmus) (#8361) 3 years ago
document kopt: add fallbacks for cases where kctx is not in cache 3 years ago
ui reader: implement language-support plugin system 3 years ago
cache.lua DocCache: Allow disabling it (again) (#8198) 3 years ago
cacheitem.lua Cache: Some more tweaks after #7624 3 years ago
configurable.lua KOPTInterface: Minor optimization when hashing the configurable status 3 years ago
dbg.lua [doc] Documentation stub for Dbg module (#7677) 3 years ago
depgraph.lua Tame a few tests that relied on `pairs` being somewhat deterministic (#6371) 4 years ago
device.lua Truly silence the attempt at loading SDL2 3 years ago
dispatcher.lua Dispatcher: fix horizontal margins (#8344) 3 years ago
docsettings.lua DocSettings/Purge .sdr: reword, don't purge other books (#8348) 3 years ago
dump.lua Order keys in settings.reader.lua (#6868) 4 years ago
fontlist.lua fontlist: disable/enable some Kindle fonts (#8233) 3 years ago
gettext.lua [fix] Always initiate empty context table (#6874) 4 years ago
httpclient.lua build: enforce luacheck in travis build 8 years ago
languagesupport.lua reader: implement language-support plugin system 3 years ago
logger.lua use android log categories 5 years ago
luadata.lua Use fsync() for more robust setting files saving 5 years ago
luasettings.lua LuaSettings: Add a method to initialize a setting properly (#7371) 3 years ago
luxl.lua [fix] Don't break OPDS parsing on HR tags (#5949) 4 years ago
optmath.lua [[doc] Add documentation to optmath (#6258) 4 years ago
persist.lua Cache: Fix a whole lot of things. 3 years ago
pluginloader.lua crash.log: write plugin regular information only in debug mode (#8230) 3 years ago
pluginshare.lua Move PluginShare.backgroundJobs into PluginShare module (#3128) 7 years ago
random.lua Faster blitting @ BB8/BBRGB32 when no processing is needed (#4847) 5 years ago
readcollection.lua Minor util & ffi/util cleanups (#6657) 4 years ago
readhistory.lua ReadHistory: nil guard a Document instance access 3 years ago
socketutil.lua Unify LuaSocket usage (#7405) 3 years ago
util.lua util.utf8: improve CJK character detection 3 years ago
version.lua Centralize one time migration code after updates (#7531) 3 years ago