#+title: Emacs Lexical Information Viewer #+author: tecosaur #+html:

#+html:

It's nice to know more about the words you're using. Online dictionaries have proliferated and become quite useful, and there are some nice packages available like [[https://github.com/abo-abo/define-word][define-word]] which make use of such online resources. However, the quicker I can know more about the words I'm using, the better! Offline dictionaries are obviously the way to go then, and the Console implementation of StarDict already has a package or two for Emacs which I can build off. However, I'd like to really focus on the words, and making it easy and intuitive as possible to gain a greater understanding of the words and phrases we use. Thus, I wanted the focus here to not be on the specific backend used (though only =sdcv= has been implemented as of yet). A near-term goal is to rewrite the implementation to abstract away the specific tool used, allowing for online tools among other backends (such as any future GoldenDict CLI). From there it could be nice to allow for combination of multiple tools (e.g. =sdcv= + online service). This has rich support for the following dictionaries: + [[http://download.huzheng.org/dict.org/stardict-dictd-web1913-2.4.2.tar.bz2][Webster's Revised Unabridged Dictionary (1913)]] + [[https://packages.debian.org/sid/dict-gcide][GCIDE]] (with conversion from dict to StarDict) + [[http://download.huzheng.org/bigdict/stardict-Soule_s_Dictionary_of_English_Synonyms-2.4.2.tar.bz2][Soule's Dictionary of English Synonyms]] + [[http://download.huzheng.org/dict.org/stardict-dictd_www.dict.org_elements-2.4.2.tar.bz2][Elements Database]] + [[https://github.com/tuxor1337/dictmaster][Douglas Harper's Online Etymology Dictionary]] If there's something you feel is missing, feel free to make an issue --- or even better, a PR! * Requirements + The command line stardict tool =sdcv= (support for other backends is planned) + (/optional/) ~visual-fill-column-mode~ * Configuration If you happen to use Doom, you may find [[https://tecosaur.github.io/emacs-config/config.html#dictionary][this section]] of my config interesting. In order to recognise format one of the supported dictionaries, Lexic matches the =bookname== parameter from the StarDict =.ifo= file against the entries in ~lexic-dictionary-specs~. Lexic needs to do this, because formatting is inconsistent, and so must be implemented on a per-dictionary basis. For example, if I downloaded a copy of /Soule's English Synonyms/, I'd need to make sure that the =SoulesSynonymns.ifo= file contains the line ~bookname=Soule's Dictionary of English Synonyms~. Check the value of ~lexic-dictionary-specs~ to see what it expects for other dictionaries supported by default. Then, if I open a new Emacs session, and look for a synonym I should see it formatted nicely 🙂. * Demo [[https://tecosaur.com/lfs/lexic/lexic.gif]]