;ELC ;;; Compiled ;;; in Emacs version 28.0.50 ;;; with all optimizations. (byte-code "\300\301!\210\300\302!\210\300\303!\210\300\304!\210\300\305!\210\300\306!\207" [require outline dash visual-fill-column cl-lib subr-x display-line-numbers] 2) #@34 The name of the buffer of lexic. (defvar lexic-buffer-name "*lexic*" (#$ . 259)) #@211 A list of dictionaries to use. Each entry is a string denoting the name of a dictionary, which is then passed to lexic through the '-u' command line option. Any non-list value means using all the dictionaries. (defvar lexic-dictionary-list t (#$ . 347)) #@225 An alist of dictionaries, used to interactively form the dictionary list. It has the form: (("full" . t) ("group1" "dict1" "dict2" ...) ("group2" "dict2" "dict3")) Any cons cell here means using all dictionaries. (defvar lexic-dictionary-alist nil (#$ . 608)) #@28 The path of lexic program. (defvar lexic-program-path (executable-find "sdcv") (#$ . 885)) #@31 The path to the dictionaries. (defvar lexic-dictionary-path nil (#$ . 982)) #@627 This is the function that take a word (stirng) and return a word or a list of words for lookup by `lexic-search'. All lookup result(s) will finally be concatenated together. nil value means do nothing with the original word. The following is an example. This function takes the original word and compare whether simplified and traditional form of the word are the same. If not, look up both of the words. (lambda (word) (let ((sim (chinese-conv word "simplified")) (tra (chinese-conv word "traditional"))) (if (not (string= sim tra)) (list sim tra) word)))  (defvar lexic-word-processor nil (#$ . 1065)) #@168 A list of dictionaries to use in searches. Either entries from `lexic-dictionary-alist', or any non-list value, which will cause all avalible dictionaries to be used. (defvar lexic-current-dictionary-list nil (#$ . 1744)) #@81 The max time (in seconds) to wait for the lexic process to produce some output. (defvar lexic-wait-timeout 2 (#$ . 1972)) #@74 The interval (in seconds) to sleep each time to wait for lexic's output. (defvar lexic-wait-interval 0.1 (#$ . 2100)) (defconst lexic-process-name "%lexic-mode-process%") (defconst lexic-process-buffer-name "*lexic-mode-process*") #@54 A list of prompts that lexic use to prompt for word. (defvar lexic-word-prompts '("Enter word or phrase: ") (#$ . 2337)) #@81 A list of prompts that lexic use to prompt for a choice of multiple candidates. (defvar lexic-choice-prompts '("Your choice[-1 to abort]: ") (#$ . 2464)) #@86 A list of patterns to extract result word of lexic. Special characters are stripped. (defvar lexic-result-patterns '("^Found [0-9]+ items, similar to [*?/|]*\\(.+?\\)[*?]*\\.") (#$ . 2624)) (defvar lexic--search-history nil) (defvar lexic--search-history-position -1) #@73 Whether or not to try to expand abbreviations, where they are expected. (defvar lexic-expand-abbreviations t (#$ . 2898)) #@1240 Search WORD through the command line tool lexic. The result will be displayed in buffer named with `lexic-buffer-name' with `lexic-mode' if called interactively. When provided with DICT-LIST-NAME, query `lexic-dictionary-alist' to get the new dictionary list before search. Alternatively, dictionary list can be specified directly by DICT-LIST. Any non-list value of it means using all dictionaries. When called interactively, prompt for the word. Prefix argument have the following meaning: If `lexic-dictionary-alist' is defined, use prefix argument to select a new DICT-LIST-NAME. Otherwise, prefix argument means using all dictionaries. When INTERACTIVE-P is non-nil, a buffer displaying the result(s) is shown. Otherwise, the result is returned as a string. When NO-HISTORY-P is non-nil, the search is not added to the session history. Word may contain some special characters: * match zero or more characters ? match zero or one character / used at the beginning, for fuzzy search | used at the beginning, for data search escape the character right after TODO decouple the tool from the general method. (fn WORD &optional DICT-LIST-NAME DICT-LIST INTERACTIVE-P NO-HISTORY-P) (defalias 'lexic-search #[1281 "\204 \204\203\n\204\306\307!\210\310\n\"A\262\203B\232\204B\311 !\2035\312\311 !!\210\311 !\203B\313\314!\210\2025\315\316\f\203\\\f!\211<\203U\211\202W\211C\262\202_C\317#\204\200 #8\230\204\200\320\321#\322 T#C\"\211#GS\204\205\207r\323$!q\210\324%\325 \210\211c\210)\326 \210\327 \210\330 \210\331\332 !\333!\334ed\"\335V\203\264\336\202\277\337V\203\276\340\202\277\341\262\211V\205\315\342\336Z\"\207" [lexic-current-dictionary-list lexic-dictionary-list lexic-dictionary-alist lexic-process-name lexic-word-processor lexic--search-history-position error "`lexic-dictionary-alist' not defined" assoc get-process kill-process sleep-for 0.01 mapconcat #[257 "\300!\207" [lexic-do-lookup] 3 "\n\n(fn W)"] "" append cl-subseq 0 get-buffer-create nil erase-buffer lexic-goto-lexic lexic-mode lexic-mode-reinit get-buffer-window lexic-get-buffer window-height count-lines 50 12 100 16 20 window-resize lexic--search-history lexic-buffer-name buffer-read-only] 14 (#$ . 3028) (byte-code "\205 \205\304\305 \306\307$\205 ?\n\203% \203%\310\311 \312 \"\206)\313\306\307\"\314\315\316\"\306\211$\211\307F\207" [current-prefix-arg lexic-dictionary-alist transient-mark-mode mark-active completing-read "Select dictionary list: " nil t buffer-substring-no-properties region-beginning region-end current-word read-string format "Search dict (default: %s): "] 8)]) #@54 Perform `lexic-search' on the word at or near point. (defalias 'lexic-search-word-at-point #[0 "\302\203 \203\303\304 \305 \"\206\306\307\310\"\227\307\211\310$\207" [transient-mark-mode mark-active lexic-search buffer-substring-no-properties region-beginning region-end current-word nil t] 5 (#$ . 5736) nil]) #@30 Show available dictionaries. (defalias 'lexic-list-dictionary #[0 "\303\304 \305P\n\")\207" [resize-mini-windows lexic-program-path lexic-buffer-name nil shell-command " -l"] 3 (#$ . 6060) nil]) #@119 Generate the appropriate stcv dictionary argument. Using `lexic-current-dictionary-list' and `lexic-dictionary-path'. (defalias 'lexic-generate-dictionary-argument #[0 "\302\205\n\303\304!D <\205\305\306 \"\"\207" [lexic-dictionary-path lexic-current-dictionary-list append "--data-dir" expand-file-name mapcan #[257 "\300D\207" ["-u"] 3 "\n\n(fn DICT)"]] 5 (#$ . 6263)]) #@34 Show the previous word searched. (defalias 'lexic-search-history-backwards #[0 "\302V\203\303S\211 8\304\211\305\211%\207\306\307!\207" [lexic--search-history-position lexic--search-history 0 lexic-search nil t message "At start of search history."] 6 (#$ . 6647) nil]) #@30 Show the next word searched. (defalias 'lexic-search-history-forwards #[0 "G V\203\302 T\2118\303\211\304\211%\207\305\306!\207" [lexic--search-history lexic--search-history-position lexic-search nil t message "At end of search history."] 6 (#$ . 6928) nil]) #@56 Window configuration before switching to lexic buffer. (defvar lexic-previous-window-conf nil (#$ . 7198)) #@41 Switch to lexic buffer in other window. (defalias 'lexic-goto-lexic #[0 "p\301 =\204\n\302 \301 \303!\211\204\304!\207\305!\207" [lexic-previous-window-conf lexic-get-buffer current-window-configuration get-buffer-window switch-to-buffer-other-window select-window] 4 (#$ . 7311) nil]) #@66 Bury lexic buffer and restore the previous window configuration. (defalias 'lexic-return-from-lexic #[0 "\301!\203\302!\210\303\304\305 !\207\304 \207" [lexic-previous-window-conf window-configuration-p set-window-configuration nil bury-buffer lexic-get-buffer] 2 (#$ . 7610) nil]) #@51 Get the lexic buffer. Create one if there's none. (defalias 'lexic-get-buffer #[0 "\302!r\211q\210 \303=\204\303 \210)\207" [lexic-buffer-name major-mode get-buffer-create lexic-mode] 3 (#$ . 7903)]) #@26 Keymap for `lexic-mode'. (defvar lexic-mode-map (byte-code "\300 \301\302\303#\210\301\304\305#\210\301\306\307#\210\301\310\311#\210\301\312\313#\210\301\314\313#\210\301\315\316#\210\301\317\320#\210\301\321\322#\210\301\323\324#\210\301\325\326#\210\301\327\330#\210\207" [make-sparse-keymap define-key "q" lexic-return-from-lexic " " lexic-search-word-at-point "a" outline-show-all "h" outline-hide-body "o" lexic-toggle-entry " " "n" lexic-next-entry "N" #[0 "\300\301!\207" [lexic-next-entry t] 2 nil nil] "p" lexic-previous-entry "P" #[0 "\300\301!\207" [lexic-previous-entry t] 2 nil nil] "b" lexic-search-history-backwards "f" lexic-search-history-forwards] 5) (#$ . 8112)) (defvar lexic-mode-hook nil) (byte-code "\300\301N\204\f\302\300\301\303#\210\304\305!\204\302\305\306\307#\210\300\207" [lexic-mode-hook variable-documentation put "Hook run after entering lexic mode.\nNo problems result if this variable is not bound.\n`add-hook' automatically binds it. (This is true for all hook variables.)" boundp lexic-mode-map definition-name lexic-mode] 4) (defvar lexic-mode-map (make-sparse-keymap)) (byte-code "\301\302N\204\303\301\302\304\305!#\210\306\307!\204\303\307\310\311#\210\312\313 !\210\307\302N\204-\303\307\302\304\314!#\210\306\300!\204B\303\300\310\311#\210\315\316\300\317\"\210!\210\300\302N\204P\303\300\302\304\320!#\210\303\311\321\322#\207" [lexic-mode-abbrev-table lexic-mode-map variable-documentation put purecopy "Keymap for `lexic-mode'." boundp lexic-mode-syntax-table definition-name lexic-mode (lambda (#1=#:def-tmp-var) (defvar lexic-mode-syntax-table #1#)) make-syntax-table "Syntax table for `lexic-mode'." (lambda (#1#) (defvar lexic-mode-abbrev-table #1#)) define-abbrev-table nil "Abbrev table for `lexic-mode'." derived-mode-parent text-mode] 5) #@348 Major mode to look up word through lexic. \{lexic-mode-map} Turning on lexic mode runs the normal hook `lexic-mode-hook'. This mode locally removes any `spell-fu-mode' or `flyspell-mode' entries in `text-mode-hook', but won't catch any other spell-checking initialisation. Consider resolving any edge cases with an addition to `lexic-mode-hook'. (defalias 'lexic-mode #[0 "\306\300!\210\307\310 \210\311\312\310\313N\203\314\311\313\310\313N#\210\315 !\204'\316 \317 \"\210\320\f!\211\2035\211\321 =\203;\322\f\323 \"\210\210\324 \325\"\204R (=\204R\326 \325(C#\210\327 !\210\330\f!\210 (\306\331!\210\332\333\332\334\"\"\307)\306\335!\210\336\306\337!\210\340\306\341!\210\307!\342\343!\210\306\344!\210\345$)\346\347!\207" [delay-mode-hooks major-mode mode-name lexic-mode-map lexic-mode-syntax-table lexic-mode-abbrev-table make-local-variable t text-mode lexic-mode "lexic" mode-class put keymap-parent set-keymap-parent current-local-map char-table-parent standard-syntax-table set-char-table-parent syntax-table abbrev-table-get :parents abbrev-table-put use-local-map set-syntax-table text-mode-hook remove spell-fu-mode flyspell-mode outline-regexp "​+" outline-heading-end-regexp " " visual-fill-column-center-text visual-fill-column-mode 1 display-line-numbers-type nil run-mode-hooks lexic-mode-hook local-abbrev-table buffer-read-only] 5 (#$ . 9937) nil]) #@95 Re-initialize buffer. Hide all entrys but the first one and goto the beginning of the buffer. (defalias 'lexic-mode-reinit #[0 "\30112\302\303 \210\304\305\306 !\307!\310ed\"\311\312!\245V\203$\313\314!\210\266eb\210\315\316!\210\317\320!0\207\210\302\207" [buffer-read-only (error) nil lexic-parse-failed t get-buffer-window lexic-get-buffer window-height count-lines 0.5 float outline-hide-sublevels 3 search-forward "​​" left-char 1] 6 (#$ . 11340)]) #@62 Determine if the search failed, and if so parse the failure. (defalias 'lexic-parse-failed #[0 "eb\210\300\301\302\300\303#\205(\304\305!\230\204$\211\262\306\307\300\303#\210\310\311\"c\210\210\202\207" [nil re-search-forward "^[0-9]+).*-->\\(.*\\)$" t match-string-no-properties 1 re-search-backward "^\\(.\\)" format "\n==>%s\n"] 6 (#$ . 11812)]) #@71 Show the children of the current entry, or subtree if there are none. (defalias 'lexic-expand-entry #[0 "\300 \210\301\212\302 \210`)\212\303 \210`)ZX\205\304 \207" [outline-show-children 0 outline-next-heading outline-end-of-subtree outline-show-subtree] 3 (#$ . 12176)]) #@95 Move to the next entry, targeting the same level unless LINEAR is set. (fn &optional LINEAR) (defalias 'lexic-next-entry #[256 "\300\301 W\203\n\302 \210\211\203\303 \210\2029\3041 \305\300!0\210\2029\210\30612\307\300\310\"\210\305\300!0\210\2029\210\303 \210\311 \210\311 \210\312\300!\210\313\314\315 \"\207" [1 lexic-outline-level outline-hide-subtree outline-next-heading (error) outline-forward-same-level (error) outline-up-heading t lexic-expand-entry recenter-top-bottom message "%s" lexic-get-outline-path] 4 (#$ . 12457) nil]) #@99 Move to the previous entry, targeting the same level unless LINEAR is set. (fn &optional LINEAR) (defalias 'lexic-previous-entry #[256 "\300 \210\301 \302U\203\303\304!\210\202@\211\203\305 \210\2029\3061'\307\310!0\210\2029\210\31115\312\310\313\"0\210\2029\210\305 \210\314 \210\303\302!\210\315\316\317 \"\207" [outline-hide-subtree line-number-at-pos 2 recenter-top-bottom -1 outline-previous-heading (error) outline-backward-same-level 1 (error) outline-up-heading t lexic-expand-entry message "%s" lexic-get-outline-path] 4 (#$ . 13010) nil]) #@64 Toggle the folding of the lexic entry point currently lies in. (defalias 'lexic-toggle-entry #[0 "\212\300 \210\212\301 \210\302 \303\206`\304\"\305=\262)\204\306 \202!\307 )\207" [outline-back-to-heading outline-end-of-heading line-end-position get-char-property invisible outline outline-hide-subtree outline-show-subtree] 4 (#$ . 13576) nil]) #@165 Send the WORD to the lexic process and return the result. Optional argument RAW-P signals whether the result should be formatted or not. (fn WORD &optional RAW-P) (defalias 'lexic-do-lookup #[513 "\304 \305\306P\"\210r\307!q\210\310\311\211\211\204FW\203F\312 !\203+\313ed\"\262\314\262\312\n!\2036\305\315\"\210\211\204\316 !\210 \\\262\202W\204T\317!\210\320\321!\210\322 \210\203a\266\203\202f\323!\266\203)\207" [lexic-wait-timeout lexic-word-prompts lexic-choice-prompts lexic-wait-interval lexic-get-process process-send-string "\n" process-buffer 0 nil lexic-match-tail buffer-substring-no-properties t "-1\n" sleep-for kill-process error "ERROR: timeout waiting for lexic" erase-buffer lexic-format-result] 9 (#$ . 13936)]) #@172 Use a oneshot stcv process just to look up WORD, with ARGS. Optional argument RAW-P signals whether the result should be formatted or not. (fn WORD &optional RAW-P ARGS) (defalias 'lexic-oneshot-lookup #[769 "\301\302\303\304\305\306\n#\305\260!\203\207\307!\207" [lexic-program-path shell-command-to-string " -n " " '" replace-regexp-in-string "'" "\\'" lexic-format-result] 12 (#$ . 14703)]) #@34 Get or create the lexic process. (defalias 'lexic-get-process #[0 "\306!\211\204Tr\307 !q\210\310 \210\311\312 \n\313 %\262\314\315\"\210\316\317\320!\210\321 !\204=\211\fW\203=\322 \323\"\210\211 \\\262\202$\211\fW\204K\324!\210\325\326!\210\310 \266\317\327!\210)\207" [lexic-process-name lexic-process-buffer-name lexic-program-path lexic-word-prompts lexic-wait-timeout lexic-wait-interval get-process get-buffer-create erase-buffer apply start-process lexic-generate-dictionary-argument set-process-query-on-exit-flag nil 0 message "starting lexic..." lexic-match-tail sit-for t kill-process error "ERROR: timeout waiting for lexic" ""] 7 (#$ . 15112)]) #@77 Get a substring of length LENGTH at the end of current buffer. (fn LENGTH) (defalias 'lexic-buffer-tail #[257 "dZdeW\203 e\262\300\"\207" [buffer-substring-no-properties] 6 (#$ . 15789)]) #@141 Look for a sdcv prompt from PROMPTS in the tail of the current buffer. Remove it and return t if found. Return nil otherwise. (fn PROMPTS) (defalias 'lexic-match-tail #[257 "\300\211\204(\203(@\262A\262\211\301G!\230\203dGZd|\210\302\262\202\207" [nil lexic-buffer-tail t] 6 (#$ . 15991)]) #@240 For a RESULT from lexic, test for failure and format accordingly. Entries are sorted by their :priority in `lexic-dictionary-specs' then formatted by `lexic-format-result' in successful case, `cases-format-failure' otherwise. (fn RESULT) (defalias 'lexic-format-result #[257 "\300!\203\n\301!\207\302\303!\304\"\305 \306\307\"\216\310\311\"\210\312\313\"\227)\262\314\315\316!\317\320#\321\322\323\324\306\325\"\"\"R\207" [lexic-failed-p lexic-format-failure sort lexic-parse-results #[514 "\300\301\302\"\303\"\206 \304\300\301\302\"\303\"\206\304W\207" [lexic-dictionary-spec plist-get :dict :priority 1] 7 "\n\n(fn A B)"] match-data make-closure #[0 "\301\300\302\"\207" [V0 set-match-data evaporate] 3] string-match "\\`Found.* similar to \\(\\w+\\)\\." match-string 1 "​" propertize capitalize face outline-1 " " apply concat mapcar #[257 "\301\300\"\207" [V0 lexic-format-entry] 4 "\n\n(fn E)"]] 12 (#$ . 16305)]) #@129 Loop through every entry in RESULT and parse each one. Returns a list of plists with keys :word, :dict, and :info. (fn RESULT) (defalias 'lexic-parse-results #[257 "\300\211\211\211\211\301\302\303\"r\211q\210\304\305\"\216c\210eb\210\306\307\300\303#\211\262\203Q\203A\310y\210\311\312\313\314\n`{\257C\"\262\315y\210\262\316\317!\262\316\320!\262\202\205i\311\312\313\314\nd{\257C\"\211\262*\207" [nil generate-new-buffer " *temp*" t make-closure #[0 "\301\300!\205 \302\300!\207" [V0 buffer-name kill-buffer] 2] re-search-forward "-->\\([^\n]+\\)\n-->\\(.+\\)\n\n" -3 append :word :dict :info 3 match-string 1 2] 16 (#$ . 17256)]) #@72 Whether the RESULTS match the hardcoded failure pattern. (fn RESULTS) (defalias 'lexic-failed-p #[257 "\301\302\303\304#)\266\203\205\303\207" [inhibit-changing-match-data "Found [0-9]+ items, similar to [^.]+\\.\n0)" nil t string-match] 8 (#$ . 17929)]) #@87 When lexic failed to match the word, format the suggestions in RESULTS. (fn RESULTS) (defalias 'lexic-format-failure #[257 "\300\211\301\302\205 T#\211\262\203F\303\304\"\303\305\"\306\"\2037\306\"\307\306\"A@C\"C\241\266\202\307CDC\"\262\266\202\310\311\312\313\314\301\315\n\"O#\316\317#\315\320\321\322\323\"\315#Q\207" [nil string-match "^[0-9]+)\\(.*\\)-->\\([A-Za-z]+\\)" match-string 1 2 assoc append propertize replace-regexp-in-string "items" "entries" 0 "\n" face warning mapconcat #[257 "\300\301\302\303@\304\"\206 @\305\306#\302\307\310A@\311#\305\312##\207" [format "​​%s\n​​​%s" propertize lexic-dictionary-spec :short face outline-3 mapconcat identity "\n​​​" font-lock-keyword-face] 9 "\n\n(fn DICT-SUGGESTIONS)"] sort #[514 "\300@\301\"\206 \302\300@\301\"\206\302W\207" [lexic-dictionary-spec :priority 1] 6 "\n\n(fn A B)"]] 12 (#$ . 18198)]) #@296 Format a given ENTRY, a plist with :word :dict and :info. If the DICT has a :short value in `lexic-dictionary-specs' that is used as the display name. Likewise if present, :formatter is used to generate the entry. EXPECTED-WORD is the word expected in ENTRY. (fn ENTRY &optional EXPECTED-WORD) (defalias 'lexic-format-entry #[513 "\301\302\"\303\304\305\306\"\206\307\310#\311\305\312\"\211\203(\313\314\"!)\202-\301\315\"\262\316\260\207" [case-fold-search plist-get :dict "\n​​" propertize lexic-dictionary-spec :short face outline-3 "\n \n" :formatter nil string-trim :info "\n"] 11 (#$ . 19126)]) #@69 Return a string giving the structural path to the current position. (defalias 'lexic-get-outline-path #[0 "\300\301\302\211\211\212\303 \210\304 \262`U\204s\304 \262`\212\305\306!\210`){\262\307\267\202<\310\202=\311\202=\312\202=\313\202=\314\202=\315\262\316\317\320\321#\322 \323\324\"\216\325\"\210\326\327\")\262Q\262`\262\3301k\331\327!0\210\202 \210\202 \210\202 \332\302O)\207" ["" 0 nil outline-back-to-heading lexic-outline-level search-forward " " #s(hash-table size 5 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (1 40 2 44 3 48 4 52 5 56)) "^\\([^\n]+\\)" "^\\([^ \n]+\\)" "^​​*\\([^,]+\\(?:, [ &.;a-z]+\\)?\\)" "\\([0-9]+\\.\\( ?([^)]+)\\)?\\( \\w+\\)\\{0,4\\}\\)" "\\(([a-z])\\( ?([^)]+)\\)?\\( \\w+\\)\\{0,4\\}\\)" "^​​*\\([^ ]+\\)" propertize " → " face bold match-data make-closure #[0 "\301\300\302\"\207" [V0 set-match-data evaporate] 3] string-match match-string 1 (error) outline-up-heading 2] 10 (#$ . 19758)]) #@65 It seems that while (outline-level) should work, it has issues. (defalias 'lexic-outline-level #[0 "\212\300 \210\301\302!)`Z\207" [outline-back-to-heading search-forward-regexp "​+"] 2 (#$ . 20758)]) #@324 List of dictionary specifications. In each entry the car is the name according to lexic, and the cdr is a plist whith the following options: :short - a (usually) shorter display name for the dictionary :formatter - a function with signature (ENTRY WORD) that returns a string :priority - sort priority, defaults to 1 (defvar lexic-dictionary-specs '(("Webster's Revised Unabridged Dictionary (1913)" :formatter lexic-format-webster :priority 1) ("Elements database" :short "Element" :formatter lexic-format-element :priority 2) ("Hitchcock's Bible Names Dictionary" :short "Hitcchcock's Bible Names" :priority 3) ("Online Etymology Dictionary" :short "Etymology" :formatter lexic-format-online-etym :priority 4) ("Soule's Dictionary of English Synonyms" :short "Synonyms" :formatter lexic-format-soule :priority 5)) (#$ . 20968)) #@65 Helper function to get a :SPEC of a given DICT. (fn DICT SPEC) (defalias 'lexic-dictionary-spec #[514 "\301\302\"A\"\207" [lexic-dictionary-specs plist-get assoc] 6 (#$ . 21810)]) #@280 Make a Webster's dictionary ENTRY for WORD look nice. Designed for Webster's Revised Unabridged Dictionary (1913),as found at http://download.huzheng.org/dict.org/stardict-dictd-web1913-2.4.2.tar.bz2. This should also work nicely with GCIDE. (fn ENTRY &optional EXPECTED-WORD) (defalias 'lexic-format-webster #[513 "\300\301\302\300\303\304\305\306\307\310#\305\311\312\313#\306R\300\314\315\300\316\317\300\320\321\300\322\323\300\324\325\300\326\327\300\330\331\300\332\333\300\334\335\300\336\337\340&\341\"\"\342\343\340'\344\"!############\207" [replace-regexp-in-string " \\(\\w+\\): " #[257 "\300\301\302\303\"\304Q\305\306#\207" [propertize " " match-string 1 ": " face bold] 6 "\n\n(fn MATCH)"] " Note: " " " propertize " " display (space :width 0.55) "☞" face font-lock-function-name-face " \\(?:\\([0-9]+\\.\\)\\|\\( ([a-z])\\)\\) \\(?: ?(\\([^)]+\\)) \\)?\\(.*\\)" #[257 "\301\302\"\301\303\"\301\304\"\301\305\"\205\306\307\205 \310\311\312#\205*\310\311\313#\205B\310\314\315\203<\316 !\202>\"\311\317#\320\321\260\207" [lexic-expand-abbreviations match-string 1 2 3 4 "​" "​​​​ " propertize face (bold font-lock-string-face) font-lock-string-face format " (%s)" lexic-format-expand-abbreviations font-lock-constant-face " " " "] 14 "\n\n(fn MATCH)"] " -- " " ─── " "''" "”" "``" "“" " --\\([A-Z][A-Za-z. ]+\n? *[A-Za-z0-9. ]*\\)" #[257 "\300\301\302\303\"P\304\305#\207" [propertize " ──" match-string 1 face (italic font-lock-type-face)] 6 "\n\n(fn MATCH)"] "^\n +\\(\\w[[:ascii:]]+?\\)\\(\n? *--[A-Za-z0-9. ]+\n? *[A-Za-z0-9. ]*\\)" #[257 "\300\301\"\300\302\"\303\304\305\306\"\307\310#\311R\207" [match-string 1 2 "\n " propertize format "❝%s❞" face font-lock-doc-face "\n"] 8 "\n\n(fn MATCH)"] "{\\([^}]+?\\)}" #[257 "\300\301\"\302\303\304#\260\207" [match-string 1 propertize face font-lock-keyword-face] 6 "\n\n(fn MATCH)"] "{\\([^}]+?\\)}\\(.?\\) (\\([^)]+?\\))" #[257 "\301\302\"\301\303\"\301\304\"\305\306\307#\305\310\311\203 \312!\202!\"\306\313#Q\207" [lexic-expand-abbreviations match-string 1 2 3 propertize face font-lock-keyword-face format " (%s)" lexic-format-expand-abbreviations font-lock-constant-face] 11 "\n\n(fn MATCH)"] "^\\(?1:[A-Z][a-z]+\\)\\(?: \\\\\\(?2:[^\\]+\\)\\\\\\)?\\(?: (\\(?3:[^)]+\\))\\)?, \\(?4:[ &.;A-Za-z]+\\)\\(?:\\[\\(?5:\\(?:[^][]+\\|\\[[^][]+]\\)+\\)]\\)?\\(?:[\n ]+\\[\\(?6:\\(?:[^][]+\\|\\[[^][]+]\\)+\\)]\\)?\\(?: (\\(?7:[^)]+\\))\\)?" #[257 "\300\301\"\300\302\"\303\304\305\306\300\307\"#!\300\310\"\205!\303\300\311\"!\303\300\203+\310\202,\311\"!\303\300\312\"!\313\314\315\316\317#\205M\315\320\321\n\"\316\322#\323\315 \316\324#\205\202\325\320\326 \"\327\330\302\203k\331\202l\332\\\nQ!\\\333%\262 \315 \316\334#\205\262\325\320\326 \"\327\330\302\203\231\331\202\232\332\\ R!\\\333%\262 \315 \316\335#\205\300\315\320\336 \"\316\337#\340\260 \207" [match-string 2 3 lexic-format-expand-abbreviations replace-regexp-in-string " \\'" "" 4 6 5 7 #[257 "\211G\300 \301\302\"\216\303\304\")\262\206\305Z\207" [match-data make-closure #[0 "\301\300\302\"\207" [V0 set-match-data evaporate] 3] string-match "\n[^\n]*\\'" 0] 6 "\n\n(fn TEXT)"] "​​​" propertize face bold format " %s" font-lock-type-face ", " (bold font-lock-keyword-face) lexic-format-reflow-text " [%s]" 80 10 1 0 " " diff-context font-lock-comment-face " (%s)" font-lock-constant-face " "] 24 "\n\n(fn MATCH)"] format "\n\n\\(%s\\)" plist-get :word "\n ━━━━━━━━━ ■ ━━━━━━━━━\n\n\\1" lexic-format-webster-diacritics :info] 42 (#$ . 22001)]) #@136 Expand certain standard abbreviations in CONTENT when `lexic-expand-abbreviations' or FORCE are non-nil. (fn CONTENT &optional FORCE) (defalias 'lexic-format-expand-abbreviations #[513 "\205-\204\f\211\203,\301\211\211\203*\211@\302\303@\304QA@\305$\262A\266\202\202\266\207" [lexic-expand-abbreviations (("adj" "adjective") ("a" "adjective") ("abbrev" "abbreviated") ("abl" "ablative") ("Abp" "Archbishop") ("acc" "Acoustics") ("act" "active") ("adv" "adverb") ("Agric" "Agriculture") ("Alban" "Albanian") ("Alg" "Algebra") ("Am" "America") ("Amer" "American") ("Am" "Amos") ("Am\\. Cyc" "Appleton's American Cyclopedia") ("Anal. Geom" "Analytical Geometry") ("Anat" "Anatomy") ("Anc" "Ancient") ("Angl\\. Ch" "Anglican Church") ("aor" "aorist") ("Ar" "Arabic") ("Arch" "Architecture") ("Arch\\. Pub\\. Soc" "Architectural Pub. Society") ("Arith" "Arithmetic") ("Arm\\., Armor" "Armorican") ("AS" "Anglo-Saxon") ("Astrol" "Astrology") ("Astron" "Astronomy") ("aug" "augmentative") ("Bank" "Banking") ("Beau\\. & Fl" "Beaumont & Fletcher") ("B\\. & Fl" "Beaumont & Fletcher") ("Bib\\. Sacra" "Bibliotheca Sacra") ("Bib" "Biblical") ("Bibliog" "Bibliography") ("Biol" "Biology") ("Bisc" "Biscayan") ("B\\. Jon" "Ben Jonson") ("Bk\\. of Com\\. Prayer " "Book of Common Prayer") ("Blackw\\. Mag" "Blackwood's Magazine") ("Bohem" "Bohemian") ("Bot" "Botany") ("Bp" "Bishop") ("Brande & C" "Brande & Cox") ("Braz" "Brazilian") ("Brit\\. Critic" "British Critic") ("Brit\\. Quar\\. Rev" "British Quarterly Review") ("Burl" "Burlesque") ("C" "Centigrade") ("Cant" "Canticles") ("Carp" "Carpentry") ("Catal" "Catalan") ("Cath\\. Dict" "Catholic Dictionary") ("Celt" "Celtic") ("cf" "confer") ("Cf" "Confer") ("Ch" "Church") ("Chald" "Chaldee") ("Chem" "Chemistry") ("Ch\\. Hist" "Church History") ("Chron" "Chronology, Chronicles") ("Civ" "Civil") ("Class" "Classical") ("Class\\. Myth" "Classical Mythology") ("Col" "Colossians") ("colloq\\., coll" "colloquial, colloquially") ("Com" "Commerce, Common") ("comp" "compound, compounded, composition") ("compar" "comparative") ("conj" "conjunction") ("Con\\. Sect" "Conic Sections") ("contr" "contracted, contraction") ("Copt" "Coptic") ("Corn" "Cornish") ("corrupt" "corrupted, corruption") ("Cotgr" "Cotgrave") ("Cyc\\. Med" "Cyclopedia of Practical Medicine") ("Crim\\. Law" "Criminal Law") ("Crystallog" "Crystallography") ("Cyc" "Cyclopedia") ("D" "Dutch (sometimes Daniel)") ("Dan" "Danish") ("dat" "dative") ("def" "definitions") ("Deut" "Deuteronomy") ("Dial" "Dialectic") ("dim" "diminutive") ("Diosc" "dioscorides") ("Disp" "Dispensatory") ("Disus" "Disused") ("Dom\\. Econ" "Domestic Economy") ("Dublin Univ\\. Mag" "Dublin University Magazine") ("Dyn" "Dynamics") ("E" "English") ("Eccl" "Ecclesiastical, Ecclesiastes") ("Eccl\\. Hist" "Ecclesiastical History") ("Ecclus" "Ecclesiasticus") ("Eclec\\. Rev" "Eclectic Review") ("Ed\\. Rev" "Edinburgh Review") ("Egypt" "Egyptian") ("Elect" "Electricity") ("Elec" "Electrical") ("emph" "emphatic") ("Encyc\\. Amer" "Encyclopedia Americana") ("Encyc\\. Crit" "Encyclopedia Britannica") ("Encyc\\. Dict" "Hunter's Encyclopedic Dictionary") ("Encyc" "Encyclopedia") ("Eng\\. Cyc" "English Cyclopedia") ("Eng" "English") ("Engin" "Engineering") ("Eol" "Eolic") ("Eph\\., Ephes" "Ephesians") ("equiv" "equivalent") ("Esd" "Esdras") ("esp" "especially") ("Etch\\. & Eng" "Etching & Engraving") ("Ethnol" "Ethnology") ("etym\\., etymol" "etymology") ("Ex\\., Exod" "Exodus") ("Ezek" "Ezekiel") ("F" "French") ("f" "feminine") ("fem" "feminine") ("Fahr" "Fahrenheit") ("Far" "Farriery") ("Feud" "Feudal") ("Fig" "Figurative, figuratively") ("Fin" "Finnish") ("For\\. Quart\\. Rev" "Foreign Quarterly Review") ("Fort" "Fortification") ("Fr" "French") ("fr" "from") ("freq" "frequentative") ("Fries" "Friesic") ("fut" "future") ("G" "German") ("Gael" "Gaelic") ("Gal" "Galen") ("Gal" "Galatians") ("Galv" "Galvanism") ("gen" "generally, genitive") ("Geneal" "Genealogy") ("Gent\\. Mag" "Gentleman's Magazine") ("Geog" "Geography") ("Geol" "Geology") ("Geom" "Geometry") ("Ger" "Germanic or German") ("Gk" "Greek") ("Goth" "Gothic") ("Gov\\. of Tongue" "Government of the Tongue") ("Gr" "Greek") ("Gram" "Grammar") ("Gris" "Grisons") ("Gun" "Gunnery") ("H" "High") ("Hab" "Habakkuk") ("Hag" "Haggai") ("Ham\\. Nav\\. Encyc" "Hamersly's Naval Encyclopedia") ("Heb" "Hebrew") ("Her" "Heraldry") ("Hind" "Hindostanee") ("Hipp" "Hippocrates") ("Hist" "History") ("Horol" "Horology") ("Hort" "Horticulture") ("Hung" "Hungarian") ("Hydraul" "Hydraulics") ("Hydros" "Hydrostatics") ("hypoth" "hypothetical") ("Icel" "Icelandic") ("Illust" "Illustration, Illustrated") ("imp" "imperfect") ("Imp\\. Dict" "Imperial Dictionary") ("incho" "inchoative") ("ind" "indicative") ("indef" "indefinite") ("inf" "infinitive") ("intens" "intensive") ("interj" "interjection") ("Internat\\. Cyc" "International Cyclopeia") ("Ion" "Ionic") ("i\\. q" "idem quod") ("Ir" "Irish") ("Is" "Isaiah") ("Isa" "Isaiah") ("It" "Italian") ("Jap" "Japanese") ("Jas" "James") ("Jav" "Javanese") ("Jer" "Jeremiah") ("Join" "Joinery") ("Josh" "Joshua") ("Judg" "Judges") ("K" "Kings") ("L" "Latin") ("Lam" "Lamentations") ("Lapp" "Lappish") ("Lat" "Latin") ("LD" "Low Dutch") ("Lett" "Lettish") ("Lev" "Leviticus") ("LG" "Low German") ("LGr" "Low Greek") ("Linn" "Linnæus") ("Lit" "Literally") ("lit" "literally") ("Lit" "Literature") ("Lith" "Lithuanian") ("LL" "Late Latin") ("M" "Middle") ("m" "masculine") ("masc" "masculine") ("Maced" "Macedonian") ("Mach" "Machinery") ("Mad" "Madam") ("Mag" "Magazine") ("Mal" "Malachi") ("Malay" "Malayan") ("Man" "Manège") ("Manuf" "Manufacturing") ("Mar" "Maritime") ("Math" "Mathematics") ("Matt" "Matthew") ("ME" "Middle English") ("Mech" "Mechanic") ("Med" "Medicine") ("Metal" "Metallurgy") ("Metaph" "Metaphysics") ("Meteor" "Meteorolgy") ("mgr" "milligrams") ("MHG" "Middle High German") ("Micros" "Microscopy") ("Mil" "Military") ("Min" "Mineralogy") ("Mir\\. for Mag" "Mirror for Magistrates") ("MLG" "Middle Low German") ("Moham" "Mohammedan") ("Mozley & W" "Mozley & Whiteley") ("Mus" "Music") ("Myst" "Mysteries") ("Myth" "Mythology") ("Nat\\. Hist" "Natural History") ("Nat\\. ord" "Natural order") ("Naut" "Nautical") ("Nav" "Navy") ("Navig" "Navigation") ("N\\. Brit\\. Rev" "North British Review") ("Neh" "Nehemiah") ("neut" "neuter") ("New Am\\. Cyc" "New American Cyclopedia") ("New Month\\. Mag" "New Monthly Magazine") ("NF" "New French") ("NGr" "Mew Greek") ("NHeb" "New Hebrew") ("NL" "New Latin") ("nom" "nominative") ("Norm\\. F" "Norman French") ("North Am\\. Rev" "North American Review") ("Norw" "Norwegian") ("Num" "Numbers") ("Numis" "Numismatics") ("N" "New") ("O" "Old") ("Ob" "Obadiah") ("obs" "obsolete") ("Obsoles" "Obsolescent") ("OCelt" "Old Celtic") ("OD" "Old Dutch") ("ODan" "Old Danish") ("OE" "Old English") ("OF" "Old French") ("OFelm" "Old Flemish") ("OFris" "Old Frisian") ("OFries" "Old Friesic") ("OGael" "Old Gaelic") ("OGr" "Old Greek") ("OHG" "Old High German") ("OIcel" "Old Icelandic") ("OIt" "Old Italian") ("OL" "Old Latin") ("OIr" "Old Irish") ("ON" "Old Norse") ("OLG" "Old Low German") ("OPer" "Old Persian") ("OPg" "Old Portuguese") ("OPol" "Old Polish") ("Opt" "Optics") ("orig" "original") ("Ornith" "Ornithology") ("OS" "Old Saxon") ("OSlav" "Old Slavic") ("OSp" "Old Spanish") ("Oxf\\. Gloss" "Oxford Glossary of Architecture") ("p\\.[\n ]*a" "participial adjective") ("Paint" "Painting") ("Paleon" "Paleontology") ("pass" "passive") ("Pathol" "Pathology") ("P\\. Cyc" "Penny Cyclopedia") ("Per" "Persian") ("perh" "perhaps") ("pers" "person") ("Persp" "Perspective") ("Pert" "Pertaining") ("Peruv" "Peruvian") ("Pet" "Peter") ("Pg" "Portuguese") ("Pharm" "Pharmacy, Pharmacopœia") ("Phil" "Phillipians") ("Philem" "Philemon") ("Philol" "Philology") ("Philos" "Philosophy") ("Phon" "Phonetics") ("Photog" "Photography") ("Photom" "Photometry") ("Phren" "Phrenology") ("Phys" "Physics") ("Phys\\. Sci" "Physical Science") ("Physiol" "Physiology") ("pl" "plural") ("Poet" "Poetry, Poetical") ("Pol" "Polish") ("Pol\\. Econ" "Political Economy") ("Polit\\. Econ" "Political Economy") ("Pop\\. Sci\\. Monthly" "Polular Science Monthly") ("Poss" "Possessive") ("pp" "pages") ("P\\. Plowman" "Piers Plowman") ("p\\.[\n ]*p" "past participle") ("p\\.[\n ]*pr" "present participle") ("p\\.[\n ]*ple" "present participle") ("Pr" "Provençal") ("Pref" "Preface") ("pref" "prefix") ("prep" "preposition") ("pres" "present") ("pret" "preterit") ("prin" "principally") ("Print" "Printing") ("priv" "privative") ("prob" "probably") ("pron" "pronoun") ("prop" "properly") ("Pros" "Prosody") ("prov" "provincial") ("Prov" "Provincial") ("Prov" "Proverbs") ("Ps\\., Psa" "Psalms") ("Pyro\\.-elect" "Pyro-electricity") ("p" "participle") ("Quart\\. Rev" "Quarterly Review") ("q\\. v" "quod vide (which see)") ("R\\. C" "Roman Catholic") ("R\\. C\\. Ch" "Roman Catholic Church") ("Rep\\. Sec\\. of War" "Report of Secretary of War") ("Rev" "Revelation") ("Rev" "Review") ("Rev\\. Ver" "Revised Version (of the Bible)") ("Rhet" "Rhetoric") ("R\\. of Brunne" "Robert of Brunne") ("R\\. of Gl" "Robert of Gloucester") ("Rom" "Roman, Romans") ("Rom\\. Cath" "Roman Catholic") ("Rom\\. of R" "Romaunt of the Rose") ("Rpts" "reports") ("Russ" "Russian") ("R" "Rare") ("Sam" "Samaritan") ("Sam" "Samuel") ("Sat\\. Rev" "Saturday Review") ("Sax" "Saxon") ("sc" "scilicet (being understood)") ("Scand" "Scandinavian") ("Sci" "Science") ("Sci\\. Am" "Scientific American") ("Scot" "Scotland, Scottish") ("Script" "Scripture, Scriptural") ("Sculp" "Sculpture") ("Serb" "Serbian") ("Serv" "Servian") ("Shak" "Shakespeare") ("sing" "singular") ("Skr" "Sanskrit") ("Slav" "Slavonic") ("Sp" "Spanish") ("Specif" "Specifically") ("Stat" "Statuary") ("subj" "subjunctive") ("superl" "superlative") ("Surg" "Surgery") ("Surv" "Surveying") ("Sw" "Swedish") ("Syd\\. Soc\\. Lex" "Sydenham Society Lexicon") ("Syn" "Synonyms") ("Synop" "Synopsis") ("Syr" "Syriac") ("Tart" "Tartaric") ("Teleg" "Telegraphy") ("term" "termination") ("Test" "Testament") ("Theol" "Theology") ("Thes" "Thessalonians") ("Tim" "Timothy") ("Todd & B" "Todd & Bowman") ("Trans" "Translation") ("Treas" "Treasury") ("Trig" "Trigonometry") ("Turk" "Turkish") ("Typog" "Typography") ("Univ" "University") ("Up" "Upper") ("U\\. ?S" "United States") ("U\\. ?S\\. Disp" "United States Dispensatory") ("U\\. ?S\\. Pharm" "United States Pharmacopœia") ("U\\. ?S\\. Int\\. Rev\\. Statutes" "United States Internal Revenue Statutes") ("usu" "usually") ("v\\.[\n ]*i" "intransitive verb") ("v\\.[\n ]*t" "transitive verb") ("var" "variety") ("vb\\.[\n ]*n" "verbal noun") ("Veter" "Veterinary") ("Vitr" "Vitruvius") ("W" "Welsh") ("Wall" "Wallachian") ("Westm\\. Cat" "Westminster Catechism") ("Westm\\. Rev" "Westminster Review") ("Zech" "Zechariah") ("Zeph" "Zephaniah") ("Zoöl" "Zoölogy") ("n" "noun") ("v" "verb")) replace-regexp-in-string "\\b" "\\." t] 10 (#$ . 25732)]) #@101 Replace ascii pronounciation symbols in PRONUNCIATION with unicode equivalents. (fn PRONUNCIATION) (defalias 'lexic-format-webster-diacritics #[257 "\300\301\302\303\301\304\305##\262\211\211\203*\211@\301\306@\307QA@\310$\262A\266\202\202\210\207" [(("[,C]" "Ç") ("\"u" "ü") ("'e" "é") ("\\^a" "â") ("\"a" "ä") ("`a" "à") ("\\*a" "å") ("\\*u" "ů") (",c" "ç") ("cced" "ç") ("\\^e" "ê") ("\"e" "ë") ("`e" "è") ("\"i" "ï") ("\\^i" "î") ("`i" "ì") ("\"A" "Ä") ("\\*A" "Å") ("'E" "È") ("ae" "æ") ("AE" "Æ") ("\\^o" "ô") ("\"o" "ö") ("`o" "ò") ("'o" "ó") ("Oacute" "Ó") ("\\^u" "û") ("`u" "ù") ("'u" "ú") ("\"y" "ÿ") ("\"O" "Ö") ("\"U" "Ü") ("pound" "£") ("'a" "á") ("'i" "í") ("frac23" "⅔") ("frac13" "⅓") ("frac12" "½") ("frac14" "¼") ("\\?" "�") ("hand" "☞") ("\\.\\.\\." "…") ("\\*\\*\\*\\*\\*\\*\\*\\*" "✶") ("sect" "§") ("=a" "ā") ("ng" "ṉ") ("sharp" "♯") ("flat" "♭") ("th" "th") ("=i" "ī") ("imac" "ī") ("=e" "ē") ("\\.d" "ḍ") ("\\.n" "ṇ") ("\\.t" "ṭ") ("a\\^" "ă") ("e\\^" "ĕ") ("i\\^" "ĭ") ("o\\^" "ŏ") ("!o" "ǒ") ("OE" "Œ") ("oe" "œ") ("=O" "Ō") ("=o" "ō") ("=u" "ū") ("ocar" "ǒ") ("=ae" "ǣ") ("u\\^" "ŭ") ("a\\^" "ă") ("=y" "ȳ") ("asl" "a") ("-e" "e") ("-i" "i") ("-o" "o") ("-u" "u") ("-n" "ṉ") ("\\.a" "ȧ") ("\\.c" "ċ") ("\\.h" "ḥ") ("\\.m" "ṃ") ("\\.u" "ụ") ("\\.z" "ẓ") ("Eth" "Ð") ("eth" "ð") ("thorn" "þ") ("~a" "ã") ("~e" "ẽ") ("itil" "ĩ") ("otil" "õ") ("util" "ũ") ("~n" "ñ") ("Atil" "Ã") ("Etil" "Ẽ") ("Itil" "Ĩ") ("Otil" "Õ") ("Util" "Ũ") ("~N" "Ñ") ("\\.n" "ṅ") ("\\.r" "ṛ") ("yogh" "ȝ") ("deg" "°") ("middot" "•") ("root" "√") ("alpha" "α") ("beta" "β") ("gamma" "γ") ("delta" "δ") ("epsilon" "ε") ("zeta" "ζ") ("eta" "η") ("theta" "θ") ("iota" "ι") ("approx" "κ") ("lambda" "λ") ("mu" "μ") ("nu" "ν") ("xi" "ξ") ("omicron" "ο") ("pi" "π") ("rho" "ρ") ("sigma" "σ") ("sigmat" "ς") ("tau" "τ") ("upsilon" "υ") ("phi" "φ") ("chi" "χ") ("psi" "ψ") ("omega" "ω") ("digamma" "ϝ") ("ALPHA" "Α") ("BETA" "Β") ("Gamma" "Γ") ("Delta" "Δ") ("EPSILON" "Ε") ("ZETA" "Ζ") ("ETA" "Η") ("Theta" "Θ") ("IOTA" "Ι") ("KAPPA" "Κ") ("Lambda" "Λ") ("MU" "Μ") ("NU" "Ν") ("XI" "Ξ") ("Omicron" "Ο") ("Pi" "Π") ("RHO" "Ρ") ("Sigma" "Σ") ("Tau" "Τ") ("Upsilon" "Υ") ("PHI" "Φ") ("Chi" "Χ") ("PSI" "Ψ") ("Omega" "Ω") ("add" "a") ("udd" "u") ("ADD" "A") ("UDD" "U") ("dagger" "†") ("dag" "†") ("u\\^" "§") ("and" "and") ("or" "or") ("sec" "˝") ("[,C]" "Ç") ("\"u" "ü") ("'e" "é") ("\\^a" "â") ("\"a" "ä") ("`a" "à") ("\\*a" "å") ("\\*u" "ů") (",c" "ç") ("cced" "ç") ("\\^e" "ê") ("\"e" "ë") ("`e" "è") ("\"i" "ï") ("\\^i" "î") ("`i" "ì") ("\"A" "Ä") ("\\*A" "Å") ("'E" "È") ("ae" "æ") ("AE" "Æ") ("\\^o" "ô") ("\"o" "ö") ("`o" "ò") ("'o" "ó") ("Oacute" "Ó") ("\\^u" "û") ("`u" "ù") ("'u" "ú") ("\"y" "ÿ") ("\"O" "Ö") ("\"U" "Ü") ("pound" "£") ("'a" "á") ("'i" "í") ("frac23" "⅔") ("frac13" "⅓") ("frac12" "½") ("frac14" "¼") ("hand" "☞") ("sect" "§") ("=a" "ā") ("ng" "ṉ") ("sharp" "♯") ("flat" "♭") ("th" "th") ("=i" "ī") ("=e" "ē") ("\\.d" "ḍ") ("\\.n" "ṇ") ("\\.t" "ṭ") ("a\\^" "ă") ("e\\^" "ĕ") ("i\\^" "ĭ") ("o\\^" "ŏ") ("!o" "ǒ") ("OE" "Œ") ("oe" "œ") ("=O" "Ō") ("=o" "ō") ("=u" "ū") ("ocar" "ǒ") ("=ae" "ǣ") ("u\\^" "ŭ") ("a\\^" "ă") ("=y" "ȳ") ("asl" "a") ("-e" "e") ("-i" "i") ("-o" "o") ("-u" "u") ("-n" "ṉ") ("\\.a" "ȧ") ("\\.c" "ċ") ("\\.h" "ḥ") ("\\.m" "ṃ") ("\\.u" "ụ") ("\\.z" "ẓ") ("Eth" "Ð") ("eth" "ð") ("thorn" "þ") ("~a" "ã") ("~e" "ẽ") ("itil" "ĩ") ("otil" "õ") ("util" "ũ") ("~n" "ñ") ("Atil" "Ã") ("Etil" "Ẽ") ("Itil" "Ĩ") ("Otil" "Õ") ("Util" "Ũ") ("~N" "Ñ") ("\\.n" "ṅ") ("\\.r" "ṛ") ("yogh" "ȝ") ("deg" "°") ("middot" "•") ("root" "√") ("alpha" "α") ("beta" "β") ("gamma" "γ") ("delta" "δ") ("epsilon" "ε") ("zeta" "ζ") ("eta" "η") ("theta" "θ") ("iota" "ι") ("approx" "κ") ("lambda" "λ") ("mu" "μ") ("nu" "ν") ("xi" "ξ") ("omicron" "ο") ("pi" "π") ("rho" "ρ") ("sigma" "σ") ("sigmat" "ς") ("tau" "τ") ("upsilon" "υ") ("phi" "φ") ("chi" "χ") ("psi" "ψ") ("omega" "ω") ("digamma" "ϝ") ("ALPHA" "Α") ("BETA" "Β") ("Gamma" "Γ") ("Delta" "Δ") ("EPSILON" "Ε") ("ZETA" "Ζ") ("ETA" "Η") ("Theta" "Θ") ("IOTA" "Ι") ("KAPPA" "Κ") ("Lambda" "Λ") ("MU" "Μ") ("NU" "Ν") ("XI" "Ξ") ("Omicron" "Ο") ("Pi" "Π") ("RHO" "Ρ") ("Sigma" "Σ") ("Tau" "Τ") ("Upsilon" "Υ") ("PHI" "Φ") ("Chi" "Χ") ("PSI" "Ψ") ("Omega" "Ω") ("add" "a") ("udd" "u") ("ADD" "A") ("UDD" "U") ("dagger" "†") ("dag" "†") ("u\\^" "§") ("and" "and") ("or" "or") ("times" "×") ("sec" "˝")) replace-regexp-in-string "\\.\\.\\." "…" "\\*\\*\\*\\*\\*\\*\\*\\*" "✶" "\\[" "\\]" t] 9 (#$ . 36718)]) #@425 Add newlines as required to ensure that TEXT never exceeds MAX-WIDTH columns. Can also set a MIN-WIDTH for new lines of text created by a line break, an INITIAL-COLUNM that the text starts at, and an INDENT string to be inserted after every line break. When regex SEPREGEX is provided, it is used to detect word separators. It is "[ ,.]" by default. (fn TEXT MAX-WIDTH &optional MIN-WIDTH INITIAL-COLUNM INDENT SEPREGEX) (defalias 'lexic-format-reflow-text #[1538 "\206\300\206\n\301\206\302\206\303\304\305 GZGZ&\306C\307\310\311#\262\f V\203A\307\312\302#\202]\307\304\313\nZ^\nZ\n%\314\315\"#\262\f \211\302\230\262\204\235 G X\203\215\211\242\242\211\302\230\262?\205\204\316PQ\240\210\302\202\230\307\314\317##\262\f\202_\211\242\207" [0 1 #1="" "[ ,.]" format "\\(\\`.\\{%d,%d\\}\\(?:%s\\(?:.\\{1,%d\\}\\'\\)?\\|\\'\\)\\|.\\{%d\\}\\)\\(.*\\)" nil replace-regexp-in-string "[[:space:]]+" " " "\\` " "\\`.\\{%d,%d\\}%s\\(?:.\\{1,%d\\}\\'\\)?\\|\\`" make-closure #[257 "\300\240\210\301\207" [V0 #1#] 3 "\n\n(fn MATCH)"] "\n" #[257 "\301\211\242\302\300\303\304\"R\240\210\303\305\"\207" [V0 V1 "\n" match-string 1 2] 8 "\n\n(fn MATCH)"]] 19 (#$ . 41553)]) #@198 Make an html ENTRY look nice. Designed for an export of Douglas Harper's Online Etymology Dictionary, collected using https://framagit.org/tuxor1337/dictmaster. (fn ENTRY &optional EXPECTED-WORD) (defalias 'lexic-format-online-etym #[513 "\300\301\302\300\303\304\300\305\306\300\307\310\300\311\312\300\313\314\300\315\316\300\317\320\300\321\322\300\323\324\300\325\326\300\327\330\300\331\332\333\334\335\336\337-\"\340\341\300\342\343\3442\345\"#\346\347\350\300\351\352\3446\353\"#\"#!\"\"\354\355\356#\266\202#############\207" [replace-regexp-in-string "^.\\{86,\\}" #[257 "\300\301\302#\207" [lexic-format-reflow-text 80 5] 5 "\n\n(fn MATCH)"] "" "" "

\\(.*?\\)

" #[257 "\300\301\302\"\303\304#\305P\207" [lexic-format-reflow-text match-string 1 80 5 "\n"] 5 "\n\n(fn MATCH)"] "
\n?
" "\n" "
\\(.+?\\) ?\\[\\(.+\\)\\]
" #[257 "\300\301\302\303\304\"\305\306\304\307%\310\311#\312\301\313\302\303\314\"\315\306\316\317%P\310\320#R\207" ["❝" propertize lexic-format-reflow-text match-string 1 80 5 " " face diff-context "❞\n" " ──" 2 75 3 " " (italic font-lock-type-face)] 12 "\n\n(fn MATCH)"] "\\(.*?\\)\\( (.+?)\\)?" #[257 "\300\301\"\302\300\303\"!\304\305\306#\205\304\307\310\311#\305\312#P\207" [match-string 1 lexic-format-expand-abbreviations 2 propertize face font-lock-keyword-face replace-regexp-in-string "\\([0-9]+\\))" " \\1)" (bold diff-context)] 9 "\n\n(fn MATCH)"] "[0-9]\\{4\\}s?\\|[0-9]+c\\." #[257 "\300\301\302#\207" [propertize face font-lock-string-face] 5 "\n\n(fn MATCH)"] "\\(.*?\\)" #[257 "\300\301\302\"\303\304#\207" [propertize match-string 1 face font-lock-doc-face] 5 "\n\n(fn MATCH)"] "\\(.*?\\)" #[257 "\300\301\302\"\303\304#\207" [propertize match-string 1 face font-lock-keyword-face] 5 "\n\n(fn MATCH)"] "\\(.*?\\)" #[257 "\300\301\302\"\303\304#\207" [propertize match-string 1 face font-lock-constant-face] 5 "\n\n(fn MATCH)"] "\\(.*?\\)" #[257 "\300\301\302\"\303\304#\207" [propertize match-string 1 face bold] 5 "\n\n(fn MATCH)"] "\\(.*?\\)" #[257 "\300\301\302\"\303\304#\207" [propertize match-string 1 face italic] 5 "\n\n(fn MATCH)"] "\\(?:\\`\\|\n\n\\)\\(.+?\\) (\\(.+?\\)\\([0-9]+\\)?) ?" #[257 "\300\301\"\302\300\303\"!\300\304\"\305\306\307\310#\311\306\307\312#\205&\306\311P\307\313#\314\260\207" [match-string 1 lexic-format-expand-abbreviations 2 3 "\n\n​​​" propertize face bold " " (bold font-lock-keyword-face) (italic font-lock-doc-face) " \n\n"] 12 "\n\n(fn MATCH)"] mapcar #[257 "\300\301\"\207" [plist-get :info] 4 "\n\n(fn E)"] -filter make-closure #[257 "\301\302\"\301\300\302\"\230\207" [V0 plist-get :dict] 5 "\n\n(fn E)"] lexic-parse-results lexic-oneshot-lookup " ?(.*)" " (*)" plist-get :word t format "-0 -u '%s'" "'" "\\'" :dict nil mapconcat identity] 57 (#$ . 42793)]) #@175 Make an ENTRY for an element Look nice. Based on http://download.huzheng.org/dict.org/stardict-dictd_www.dict.org_elements-2.4.2.tar.bz2. (fn ENTRY &optional EXPECTED-WORD) (defalias 'lexic-format-element #[513 "\300\301\302\303\304\"#\207" [replace-regexp-in-string "^\\([a-z]+\\)\nSymbol: \\([A-Za-z]+\\)\nAtomic number: \\([0-9]+\\)\nAtomic weight: \\((?[0-9.]+)?\\)" #[257 "\300\301\"\300\302\"\300\303\"\300\304\"\305\306\307\310\311#\307\310\312#\307\310\313#\307 \310\314#%\207" [match-string 1 2 3 4 format "┌────────────────┐\n│ %-3s %10s │\n│ %s %11s │\n└────────────────┘\n" propertize face font-lock-function-name-face font-lock-comment-face (bold font-lock-keyword-face) font-lock-string-face] 14 "\n\n(fn MATCH)"] plist-get :info] 8 (#$ . 45743)]) #@219 Format an ENTRY for WORD in Soule's Dictionary of English Synonyms. Designed using http://download.huzheng.org/bigdict/stardict-Soule_s_Dictionary_of_English_Synonyms-2.4.2.tar.bz2. (fn ENTRY &optional EXPECTED-WORD) (defalias 'lexic-format-soule #[513 "\300\301\302\301\303\304#\300\305\306\300\307\310\300\311\312\313\314\"####\207" [replace-regexp-in-string "," propertize face font-lock-type-face "^\\(.\\{81\\}\\)" #[257 "\300\301\302\303\304\305&\207" [lexic-format-reflow-text 80 1 0 " " "[, ]"] 8 "\n\n(fn MATCH)"] "^\\([0-9]+\\.\\) \n\\([^,.]*,?\\)" #[257 "\300\301\302\303\"\304\305#\306\302\307\"\310\260\207" ["​​​​" propertize match-string 1 face (bold font-lock-string-face) " " 2 " "] 7 "\n\n(fn MATCH)"] "^\\([IVX]+\\. \\)?\\([a-z.;& ]+\\)" #[257 "\301\205 \302\303\304\"\302\305\306\307\"!\303\310#\311R\207" [case-fold-search "​​​" propertize face (bold font-lock-constant-face) lexic-format-expand-abbreviations match-string 2 (bold font-lock-keyword-face) " "] 8 "\n\n(fn MATCH)"] plist-get :info] 17 (#$ . 46603)]) (provide 'lexic)