├── .github └── workflows │ └── build.yml ├── .gitignore ├── .gitmodules ├── README.md ├── build.sh ├── colors └── word.lua ├── docs ├── .nojekyll ├── CNAME ├── index.html ├── logo.png └── screenshot1.png ├── manifest.json ├── plugins ├── autocorrect.lua ├── chapters.lua ├── formatting.lua ├── gitsave.lua ├── sessionclock.lua ├── synonyms │ ├── init.lua │ └── synonyms ├── tag_highlight.lua └── write-xl.lua ├── resources └── icons │ ├── icon.ico │ ├── icon.inl │ ├── icon.png │ ├── icon.rc │ └── icon.res ├── scripts ├── convert-to-md.pl └── dictionary │ ├── DA.json │ ├── DB.json │ ├── DC.json │ ├── DD.json │ ├── DE.json │ ├── DF.json │ ├── DG.json │ ├── DH.json │ ├── DI.json │ ├── DJ.json │ ├── DK.json │ ├── DL.json │ ├── DM.json │ ├── DN.json │ ├── DO.json │ ├── DP.json │ ├── DQ.json │ ├── DR.json │ ├── DS.json │ ├── DT.json │ ├── DU.json │ ├── DV.json │ ├── DW.json │ ├── DX.json │ ├── DY.json │ └── DZ.json └── template └── app ├── build.gradle └── src └── main ├── AndroidManifest.xml ├── java └── com │ └── litexl │ └── writexl │ └── writexlActivity.java └── res ├── mipmap-hdpi └── ic_launcher.png ├── mipmap-mdpi └── ic_launcher.png ├── mipmap-xhdpi └── ic_launcher.png ├── mipmap-xxhdpi └── ic_launcher.png ├── mipmap-xxxhdpi └── ic_launcher.png └── values └── strings.xml /.github/workflows/build.yml: -------------------------------------------------------------------------------- 1 | name: CI 2 | on: { push: { branches: [main] } } 3 | permissions: 4 | contents: write 5 | jobs: 6 | build: 7 | runs-on: ubuntu-latest 8 | defaults: { run: { shell: bash } } 9 | env: { DEFAULT_FLAGS: '-DLITE_NAME="write-xl"', LPM_CACHE: "/tmp/lpm" } 10 | steps: 11 | - name: Checkout Code 12 | uses: actions/checkout@v3 13 | with: { fetch-depth: 0 } 14 | - uses: actions/setup-java@v3 15 | with: 16 | distribution: 'temurin' 17 | java-version: '11' 18 | - name: Clone Submodules 19 | run: git submodule update --init --depth=1 --recursive 20 | - name: Startup 21 | run: | 22 | sudo apt-get install mingw-w64 libc6-dev-i386 wamerican 23 | export VERSION=`git describe HEAD --tags` && echo "VERSION=$VERSION" >> $GITHUB_ENV 24 | curl -L https://github.com/lite-xl/lite-xl-plugin-manager/releases/download/latest/lpm.x86_64-linux > lpm && chmod +x lpm 25 | ./lpm init --quiet && ./lpm add . https://github.com/adamharrison/lite-xl-libgit2 --quiet 26 | cp -r resources lib/lite-xl-android/lib/lite-xl-simplified && cp /usr/share/dict/words lib/lite-xl-android/lib/lite-xl-simplified/data/words 27 | - name: Build Linux 28 | env: { PLATFORM: "x86_64-linux", BIN: "write-xl" } 29 | run: | 30 | mkdir scratchpad && cp -rL lib/lite-xl-android/lib/lite-xl-simplified scratchpad/lite-xl && ./lpm install write-xl --datadir scratchpad/lite-xl/data --userdir scratchpad/lite-xl/data --arch $PLATFORM --quiet && cd scratchpad/lite-xl 31 | ./build.sh -DLITE_VERSION='"'$VERSION-$PLATFORM'"' -DLITE_ALL_IN_ONE $DEFAULT_FLAGS && tar -czvf ../../write-xl-$PLATFORM.tar.gz $BIN && cd ../.. && rm -rf scratchpad 32 | - name: Build Windows 33 | env: { PLATFORM: "x86_64-windows", CC: "x86_64-w64-mingw32-gcc", AR: "x86_64-w64-mingw32-gcc-ar", SDL_CONFIGURE: "--host=x86_64-w64-mingw32", BIN: "write-xl.exe" } 34 | run: | 35 | mkdir scratchpad && cp -rL lib/lite-xl-android/lib/lite-xl-simplified scratchpad/lite-xl && ./lpm install write-xl --datadir scratchpad/lite-xl/data --userdir scratchpad/lite-xl/data --arch $PLATFORM --quiet && cd scratchpad/lite-xl 36 | ./build.sh -DLITE_VERSION='"'$VERSION-$PLATFORM'"' -DLITE_ALL_IN_ONE $DEFAULT_FLAGS && zip ../../write-xl-$PLATFORM.zip $BIN && cd ../.. && rm -rf scratchpad 37 | - name: Build APK 38 | run: | 39 | ./build.sh $DEFAULT_FLAGS 40 | - name: Create Release 41 | env: { GITHUB_TOKEN: "${{ github.token }}" } 42 | run: | 43 | git config --global user.name "Github Actions" && git config --global user.email "adamdharrison@gmail.com" 44 | gh release delete -y continuous || true; gh release create -t 'Continuous Release' -n 'A continuous release of write-xl. See the README for more details.' continuous *.zip *.tar.gz *.apk 45 | if [[ `git tag --points-at HEAD | head -c 1` == "v" ]]; then 46 | gh release delete -y $VERSION || true; 47 | gh release create -t $VERSION $VERSION *.apk *.zip *.tar.gz 48 | gh release delete -y latest || true; 49 | gh release create -t latest latest *.apk *.zip *.tar.gz 50 | git branch -f latest HEAD 51 | git tag -f latest 52 | git push -f origin refs/heads/latest 53 | git push -f origin refs/tags/latest 54 | fi 55 | 56 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | user 2 | *.so 3 | *.a 4 | write-xl.apk 5 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "lib/lite-xl-android"] 2 | path = lib/lite-xl-android 3 | url = https://github.com/adamharrison/lite-xl-android.git 4 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # write-xl 2 | 3 | `write-xl` is a set of plugins that operates overtop of lite-xl. It's designed to make the text editor more appealing to use for writing and reading fiction, in markdown. 4 | 5 | ## Features 6 | 7 | * A more word-like **color** scheme. 8 | * An automatic configuration of line wrapping and document setup to be more word-like. 9 | * Keybinds for standard stuff like bolding, italicizing, and underlining (`ctrl`+`b`, `ctrl`+`i`, `ctrl`+`u`). 10 | * Spellchecker 11 | * Synonyms 12 | * Jump to Chapter 13 | * Ability use git quicly and easily to track changes, and to provide a method of remote synchroniation. 14 | * Word Counter 15 | * Small clock in the bottom right corner. 16 | * Small clock that tracks current session time. 17 | * Small clock that tracks actual writing time. 18 | * Autocorrect plugin that corrects-as-you-type to a preset list of words, or to a dictionary. 19 | 20 | ## TODO 21 | 22 | * Chapter Navigation, via sidebar. 23 | * Chapter wordcount in parentheses on sidebar. 24 | * Automatic Chapter Summaries as a view, by running chapter through an automatic summarizer library. 25 | * Side-by-Side Outline Reading 26 | * A plugin to detect whether you're overusing a particular phrase. 27 | * Character Registry, with Minimap 28 | * Ability to have a view of a chapter as an individual document (`ChapterView`, inherited from DocView). 29 | 30 | ## Install 31 | 32 | To install, simply use [`lpm`](https://github.com/lite-xl/lite-xl-plugin-manager): 33 | 34 | ``` 35 | lpm install write-xl 36 | ``` 37 | 38 | Or, alternatively, simply copy the plugins in the `plugins` folder, and the colors from the `colors` folder into your local copies of both, and install a few extra plugins from lite-xl-plugins. 39 | 40 | Or, you can simply pull an all-in-one-release from the [releases](https://github.com/adamharrison/write-xl/releases) page. 41 | 42 | ### Releases 43 | 44 | The non-mobile releases for `write-xl` are pre-built with [`lite-xl-simplified`](https://github.com/adamharrison/lite-xl-simplified)'s all-in-one mode, meaning that it will be created as a single executable, 45 | that uses `~/.config/write-xl` as its user directory, with the `write-xl` plugin installed. 46 | 47 | The mobile releases for `write-xl` are built with [`lite-xl-android`](https://github.com/adamharrison/lite-xl-android), for `x86`, `x86_64`, `arm64` and `armv7`, and should function out of the box on most 48 | android phones. 49 | -------------------------------------------------------------------------------- /build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Build script for write-xl. Only runs on linux. Builds android. 4 | 5 | export BIN=`pwd`/write-xl.apk 6 | export LITEXL_REPOS="file://`pwd`:main https://github.com/adamharrison/lite-xl-libgit2.git" 7 | export LITEXL_PLUGINS="write-xl" 8 | cp -r template lib/lite-xl-android && cd lib/lite-xl-android && ./build.sh $@ 9 | 10 | 11 | -------------------------------------------------------------------------------- /colors/word.lua: -------------------------------------------------------------------------------- 1 | local style = require "core.style" 2 | local common = require "core.common" 3 | 4 | style.background = { common.color "#fbfbfb" } 5 | style.background2 = { common.color "#f2f2f2" } 6 | style.background3 = { common.color "#f2f2f2" } 7 | style.text = { common.color "#000000" } 8 | style.caret = { common.color "#178c17" } 9 | style.accent = { common.color "#178c17" } 10 | style.dim = { common.color "#b0b0b0" } 11 | style.divider = { common.color "#e8e8e8" } 12 | style.selection = { common.color "#b7dce8" } 13 | style.line_number = { common.color "#d0d0d0" } 14 | style.line_number2 = { common.color "#808080" } 15 | style.line_highlight = { common.color "#f2f2f2" } 16 | style.scrollbar = { common.color "#e0e0e0" } 17 | style.scrollbar2 = { common.color "#c0c0c0" } 18 | 19 | style.syntax["normal"] = { common.color "#181818" } 20 | style.syntax["symbol"] = { common.color "#181818" } 21 | style.syntax["comment"] = { common.color "#22a21f" } 22 | style.syntax["keyword"] = { common.color "#36ab20" } 23 | style.syntax["keyword2"] = { common.color "#178c17" } 24 | style.syntax["number"] = { common.color "#1586d2" } 25 | style.syntax["literal"] = { common.color "#1586d2" } 26 | style.syntax["string"] = { common.color "#1586d2" } 27 | style.syntax["operator"] = { common.color "#fb6620" } 28 | 29 | -------------------------------------------------------------------------------- /docs/.nojekyll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adamharrison/write-xl/45546f5e897a4f6d9f775eedabbb7a0acf1adc0c/docs/.nojekyll -------------------------------------------------------------------------------- /docs/CNAME: -------------------------------------------------------------------------------- 1 | write.lite-xl.com -------------------------------------------------------------------------------- /docs/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Write XL 4 | 5 | 6 | 7 | 8 | 234 | 235 | 236 | 237 |
238 | 239 | 240 | 241 |

Write XL

242 |
243 |
244 | 245 | 246 | 247 | Download 248 | Features 249 | Why? 250 | Source 251 | 252 |
253 | 254 |
255 | 256 |

Write XL

257 |

258 | Write XL is an MIT-licensed suite of plugins for the lite-xl 259 | text editor, that convert the editor from a code editor, to one better suited to creative writing. 260 |

261 |

262 | Its target audience is at least the semi-technical user, that is comfortable working with 263 | text, rather than a rich document editor. It is meant to be open-source, 264 | small, hackable, functional, performant, and extremely portable. 265 | It uses git to keep track of changes, and to save your work. 266 |

267 | 268 | 269 | 270 | 271 |
272 | 273 | A screenshot showing the write-xl editor in action. 274 | 275 |
276 |
277 | 278 | 279 | 280 | 281 | 282 |

Highly Featured

283 |

284 | Comes integrate with spellcheck, synonym detection, automatic git integration, chapter understanding 285 | and navigation, an easy outliner, split pane views, and subpixel text rendering. 286 |

287 | 288 |
289 | 290 | 291 | 292 | 293 | 294 |

Highly Efficient

295 |

296 | Only a few megabytes in size, and starts up instantaneously. Uses no CPU when not focused, and 297 | only allocates 30 megabytes of memory, most of which is the graphically necessary framebuffer. 298 | Only 7 megabytes is acutally used by the editor itself. 299 |

300 | 301 |
302 | 303 | 304 | 305 | 306 | 307 |

Highly Expandible

308 |

309 | Piggy-backs off the lite-xl plugin ecosystem, 310 | allowing easy access to an ever-growing number of plugins that can easily change how the editor works. 311 |

312 | 313 |
314 | 315 | 316 | 317 | 318 | 319 | 320 | 321 | 322 | 323 |

Highly Portable

324 |

325 | Runs on almost any operating system, as it has no unbundled dependencies, and is statically linked. 326 | Runs on Mac OSX, any Linux (with musl), FreeBSD, Windows, and Android 8.0+. A single executable, that 327 | contains everything you need. 328 |

329 | 330 |
331 |
332 |
333 |

Why?

334 | 335 |

What's the point of this editor? Why not just Word, or Google Docs, or another word processor?

336 |

337 | I'm glad you asked! It's mainly because write-xl uses a number of well-supported technologies which make editing any 338 | sort of text document easier; whether that's a novel, a piece of code, or a business proposal. In particular, these are: 339 | git, markdown, and lite-xl. 340 |

341 |
342 | 343 |

Why use git?

344 |

345 | Git is one the most used pieces of software on the planet. It's primarily used by people who use write text 346 | every day for a living (programmers), who also happen to the ability to contribute to that piece of software. 347 |

348 |

349 | This virtuous cycle has led to an incredibly advanced program that is able to deal with multiple versions of text 350 | files extremely well. It works with creative writing too; every version of your text that you save is 351 | remembered by git, and you can revert, compare, merge, and branch off old version of your text in a way that is way 352 | more complex than any sort of track changes that Word, or Google Docs offers. 353 |

354 |

355 | It means you'll never lose anything; it can be published anywhere, and hook up with any number of programmable systems, 356 | and just have generally much finer-grained control over anything you write, any version you write of it, than pretty much 357 | any of the word processors you've ever used. 358 |

359 |

360 | Not only that, but git also handles writing changes to somewhere that's not your local tablet or computer, meaning 361 | that you can seamlessly back up all your changes, and your entire text. Because git is so common, there are a ton of 362 | free services that provide this; no worries about having to deal with dropbox's paid limitations, or handling any of 363 | google drive's crap; you can always just back things up without having to worry about nonsenical restrictions. 364 |

365 |
366 | 367 |

Why use Markdown?

368 |

369 | So, one of the many issues with Microsoft Word, Google Docs, and pretty much any other rich document editor is that 370 | while it does allow you to do things like bold things, make margins a particular size, deal with paragraph 371 | spacing, and things like that, fundamentally, all these things are details. 372 |

373 |

374 | The unfortunate thing is that these details can change depending on your publishing context. In the end, 375 | as you write, you don't actually need to be concerned with the actual look of your text, you really just need to 376 | be conerned about your intent. 377 |

378 |

379 | When you use a plain-text editor, like this one, you can make your intent extremely explicit, without actually worrying 380 | about the actual formatting until you go through the export process. Because Write XL uses 381 | markdown, you're able to use asterisks, underscores, backticks, 382 | and various other syntax to state your intent, and then choose how to export that 383 | exactly how you want to, based on the context; you don't have to go back through and painstakingly edit your document. 384 |

385 |

386 | For example, if you have epigraphs in your novel 387 | that are formatted a particular way, you can just tag the epigraph with backticks, as per the normal markdown syntax, and just specify 388 | a single way for the editor to export things with those particular annotated backticks. No need to go back and fix the margins, font, 389 | and everything associated with each instance; the explicit tagged intent allows easy, unambiguous processing of those blocks; way 390 | easier than dealing with it through Word. 391 |

392 | It's kind of like LaTeX, except without figuring out a ton of bullshit. 393 | It's a lot more natural. 394 |

395 |
396 | 397 |

Why use lite-xl?

398 |

It's Simple

399 |

400 | lite-xl is one of the very few full-featured graphical editors that has a very small amount of code associated with it. 401 |

402 |

403 | Some of the more popular text editors these days, such as Visual Studio Code are likely million of lines code, depending on a 404 | an incredible amount of other pieces of software that create a truly mind-bending web of computer code that is pretty much incomprehensible to almost anyone who looks at it, with 405 | the exception of those who've spent a significant amount of time familiarizing themselves with their codebase. Such experience can take years to gather. 406 |

407 |

408 | lite-xl, conversely, has only about 4,000 lines of code in C, and 13,000 in 409 | lua, with almost no other pieces of code, making it an incredibly 410 | small editor; meaning it's totally possible for a normal programmer who knows these very well known languages to look at the editor in a day, 411 | and understand what's going on, and how to modify it. 412 |

413 |

It's Extensible

414 |

415 | It has an extremely extensible plugin system, meaning that you can modify the editor very easily; by just downloading simple text files, instead of things like .exes; meaning 416 | that if there is something you want to change about the editor, chances are, you can; by just downloading some text. All in all, it makes lite-xl be able to be developed insanely 417 | quicker than almost any other piece of text-editing software. 418 |

419 |

It's Portable

420 |

421 | In addition to all these qualities; lite-xl also doesn't have any bullshit associated with it. You know when you install microsoft word, it installs a fuckton of shit all over the place, 422 | and insists you use it for everything? 423 |

424 |

425 | lite-xl is basically the opposite. It is a single .exe that lives in a single folder. If you want to, you can create a shortcut to it, but other than that, it basically doesn't put its shit anywhere 426 | else. It also means that if you want to plop it on a USB key, or something else, you can absolutely just do that; and it'll work totally fine. It doesn't need anything else other than itself, 427 | and should basically work on any computer immediately. 428 |

429 |

It's Quick

430 |

431 | No matter how old your tablet, or PC is you should be able to run it without any issue, and startup instanteously. No more 10 second startup times when you want to just open word. 432 |

433 |

It's Free

434 |

435 | It's free as in speech, and free as in beer. This means you can download it without paying anything, and modify it without having to tithe to Microsoft or Apple. 436 |

437 |
438 |
439 |
440 |
441 | 463 | 464 | 465 | -------------------------------------------------------------------------------- /docs/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adamharrison/write-xl/45546f5e897a4f6d9f775eedabbb7a0acf1adc0c/docs/logo.png -------------------------------------------------------------------------------- /docs/screenshot1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adamharrison/write-xl/45546f5e897a4f6d9f775eedabbb7a0acf1adc0c/docs/screenshot1.png -------------------------------------------------------------------------------- /manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "addons": [ 3 | { 4 | "id": "write-xl", 5 | "tags": ["total conversion"], 6 | "path": "plugins/write-xl.lua", 7 | "description": "A total conversion for lite-xl that transforms lite-xl into a word-processor like text-editor for creative writing.", 8 | "dependencies": [ 9 | "gitsave", 10 | "smallclock", 11 | "spellcheck", 12 | "synonyms", 13 | "chapters", 14 | "wordcount", 15 | "formatting", 16 | "sessionclock", 17 | "autocorrect", 18 | "word" 19 | ] 20 | }, 21 | { 22 | "id": "sessionclock", 23 | "description": "Displays the time of your current session, and active time of your current session in the status bar." 24 | }, 25 | { 26 | "id": "autocorrect", 27 | "description": "Checks for words as you type, and replaces them with other words, based on a list you provide." 28 | }, 29 | { 30 | "id": "word", 31 | "type": "color", 32 | "description": "A word-like color scheme, designed to be used for creative-writing of markdown files. Part of the write-xl project." 33 | }, 34 | { 35 | "id": "chapters", 36 | "description": "A plugin used to navigate through, and parse chapter information in creative writing markdown files. Part of the write-xl project." 37 | }, 38 | { 39 | "id": "gitsave", 40 | "description": "A simple git plugin that allows for easy fetch/save of repos anchored at the project root. Part of the write-xl project.", 41 | "dependencies": ["libgit2"] 42 | }, 43 | { 44 | "id": "synonyms", 45 | "description": "A plugin similar to spellcheck which uses a thesaurus to provide alternate words. Part of the write-xl project." 46 | }, 47 | { 48 | "id": "formatting", 49 | "description": "Provides automatic shortcuts, and a toolbar to manage the formatting of a markdown docview. Part of the write-xl project." 50 | } 51 | ], 52 | "remotes": [ 53 | "https://github.com/adamharrison/lite-xl-libgit2.git:main" 54 | ] 55 | } 56 | -------------------------------------------------------------------------------- /plugins/autocorrect.lua: -------------------------------------------------------------------------------- 1 | -- mod-version:3 -- lite-xl 2.1 2 | 3 | local core = require "core" 4 | local config = require "core.config" 5 | local common = require "core.common" 6 | local command = require "core.command" 7 | local Doc = require "core.doc" 8 | local DocView = require "core.docview" 9 | local translate = require "core.doc.translate" 10 | 11 | config.plugins.autocorrect = common.merge({ 12 | map_file = USERDIR .. PATHSEP .. "autocorrect", 13 | word_end_trigger = "[^'%a%d]$" 14 | }, config.plugins.autocorrect) 15 | 16 | local autocorrect_map = {} 17 | if system.get_file_info(config.plugins.autocorrect.map_file) then 18 | core.add_thread(function() 19 | local word_correct_from = nil 20 | for line in io.lines(config.plugins.autocorrect.map_file) do 21 | local word = line:gsub("\n$", line) 22 | if word_correct_from then 23 | autocorrect_map[word_correct_from] = word 24 | word_correct_from = nil 25 | else 26 | word_correct_from = word 27 | end 28 | end 29 | core.log("Successfully loaded autocorrect map %s.", config.plugins.autocorrect.map_file) 30 | end) 31 | end 32 | 33 | local function autocorrect_word(word) 34 | local autocorrected = autocorrect_map[word:lower()] 35 | if autocorrected then 36 | if word:find("^[A-Z]+$") then 37 | return autocorrected:upper() 38 | elseif word:find("^[A-Z]$") then 39 | return autocorrected:sub(1,1):upper() .. autocorrected:sub(2) 40 | end 41 | return autocorrected 42 | end 43 | return nil; 44 | end 45 | 46 | local function get_word_information(doc, line, col) 47 | if not line and not col then 48 | for sidx, line1, col1, line2, col2 in doc:get_selections(true) do 49 | if line1 == line2 and col1 == col2 then 50 | return get_word_information(doc, line1, col1) 51 | end 52 | end 53 | end 54 | local word_start_line, word_start_col = translate.previous_word_start(doc, line, col) 55 | local word_end_line, word_end_col = translate.end_of_word(doc, word_start_line, word_start_col) 56 | if word_start_line == word_end_line then 57 | local word = doc.lines[word_start_line]:sub(word_start_col, word_end_col - 1) 58 | return word, word_start_line, word_start_col, word_end_line, word_end_col, line, col 59 | end 60 | return nil 61 | end 62 | 63 | local old_text_input = Doc.text_input 64 | function Doc:text_input(text, idx) 65 | old_text_input(self, text, idx) 66 | if text:find(config.plugins.autocorrect.word_end_trigger) then 67 | local word, line1, col1, line2, col2, selline, selcol = get_word_information(self) 68 | if word then 69 | local autocorrected = autocorrect_word(word) 70 | if autocorrected then 71 | self:remove(line1, col1, line2, col2) 72 | self:insert(line1, col1, autocorrected) 73 | self:set_selection(line2, col1 + #autocorrected + (selcol - col2)) 74 | end 75 | end 76 | end 77 | end 78 | 79 | local function save_autocorrect_map() 80 | local f = io.open(config.plugins.autocorrect.map_file, "wb") 81 | for k,v in pairs(autocorrect_map) do 82 | if v ~= nil then 83 | f:write(k .. "\n") 84 | f:write(v .. "\n") 85 | end 86 | end 87 | f:close() 88 | end 89 | 90 | command.add(DocView, { 91 | ["autocorrect:add-word"] = function() 92 | local word 93 | if core.active_view.doc:has_selection() then 94 | word = core.active_view.doc:get_text(core.active_view.doc:get_selection()) 95 | else 96 | word = get_word_information(core.active_view.doc) 97 | end 98 | core.command_view:enter("Enter Word to be Autocorrected", { 99 | text = word, 100 | submit = function(autocorrect_from_word) 101 | core.command_view:enter("Enter Word to Autocorrect '" .. autocorrect_from_word .. "' to", { 102 | text = word, 103 | submit = function(autocorrect_to_word) 104 | autocorrect_map[autocorrect_from_word:lower()] = autocorrect_to_word 105 | save_autocorrect_map() 106 | end 107 | }) 108 | end 109 | }) 110 | end, 111 | ["autocorrect:remove-word"] = function() 112 | local word 113 | if core.active_view.doc:has_selection() then 114 | word = core.active_view.doc:get_text(core.active_view.doc:get_selection()) 115 | else 116 | word = get_word_information(core.active_view.doc) 117 | end 118 | local words_to_correct_from = {} 119 | for k,v in pairs(autocorrect_map) do table.insert(words_to_correct_from, k) end 120 | core.command_view:enter("Enter Word to Remove from Autocorrection", { 121 | text = word, 122 | submit = function(autocorrect_word) 123 | local lower = autocorrect_word:lower() 124 | if autocorrect_map[lower] then 125 | autocorrect_map[lower] = nil 126 | save_autocorrect_map() 127 | else 128 | core.error("Can't find autocorrect word '%s'.", autocorrect_word) 129 | end 130 | end, 131 | suggest = function(word) 132 | return common.fuzzy_match(words_to_correct_from, word:lower()) 133 | end 134 | }) 135 | end 136 | }) 137 | command.add(nil, { 138 | ["autocorrect:open-list"] = function() 139 | core.root_view:open_doc(core.open_doc(config.plugins.autocorrect.map_file)) 140 | end 141 | }) 142 | -------------------------------------------------------------------------------- /plugins/chapters.lua: -------------------------------------------------------------------------------- 1 | -- mod-version:3 -- lite-xl 2.1 2 | 3 | local core = require "core" 4 | local style = require "core.style" 5 | local command = require "core.command" 6 | local keymap = require "core.keymap" 7 | local config = require "core.config" 8 | local common = require "core.common" 9 | local DocView = require "core.docview" 10 | local StatusView = require "core.statusview" 11 | local CommandView = require "core.commandview" 12 | local Doc = require "core.doc" 13 | 14 | 15 | local chapters = common.merge({ 16 | 17 | }, config.plugins.chapters) 18 | 19 | 20 | local function compute_locations(doc, minline, maxline) 21 | minline = minline or 1 22 | maxline = maxline or #doc.lines 23 | for i = minline, maxline do 24 | local has, _, idx = doc.lines[i]:find("^%s*#*%s*Chapter%s+(%d+)") 25 | if has then 26 | doc.chapter_lines[tonumber(idx)] = i 27 | end 28 | end 29 | end 30 | 31 | local function get_chapter(doc, line) 32 | if not doc.chaper_lines or (not line and doc.chapter_current) then return doc.chapter_current end 33 | line = line or doc:get_selection() 34 | for i, v in ipairs(doc.chapter_lines) do 35 | if line < v then return math.max(i - 1, 1) end 36 | end 37 | return #doc.chapter_lines 38 | end 39 | 40 | local old_new = DocView.new 41 | function DocView:new(doc, ...) 42 | old_new(self, doc, ...) 43 | doc.chapter_lines = {} 44 | compute_locations(doc) 45 | end 46 | 47 | local old_set_selections = Doc.set_selections 48 | function Doc:set_selections(idx, line1, col1, ...) 49 | old_set_selections(self, idx, line1, col1, ...) 50 | self.chapter_current = get_chapter(self, line1) 51 | end 52 | 53 | function chapters.jump_to(docview, chapter) 54 | if docview.doc.chapter_lines[chapter] then 55 | docview.doc:set_selection(docview.doc.chapter_lines[chapter], #docview.doc.lines[docview.doc.chapter_lines[chapter]]) 56 | docview:update() 57 | local ox, oy = docview:get_content_offset() 58 | local x, y = docview:get_line_screen_position(docview.doc.chapter_lines[chapter]) 59 | docview.scroll.to.y = math.max(0, y - oy) 60 | end 61 | end 62 | 63 | 64 | local old_doc_insert = Doc.raw_insert 65 | function Doc:raw_insert(line, col, text, undo_stack, time) 66 | local old_lines = #self.lines 67 | old_doc_insert(self, line, col, text, undo_stack, time) 68 | if old_lines ~= #self.lines then 69 | local start = get_chapter(self, line) 70 | if start then 71 | for i = start + 1, #self.chapter_lines do 72 | self.chapter_lines[i] = self.chapter_lines[i] + (#self.lines - old_lines) 73 | end 74 | end 75 | end 76 | end 77 | 78 | local old_doc_remove = Doc.raw_remove 79 | function Doc:raw_remove(line1, col1, line2, col2, undo_stack, time) 80 | local old_lines = #self.lines 81 | old_doc_remove(self, line1, col1, line2, col2, undo_stack, time) 82 | if old_lines ~= #self.lines then 83 | local start = get_chapter(self, line1) 84 | if start then 85 | for i = start + 1, #self.chapter_lines do 86 | self.chapter_lines[i] = self.chapter_lines[i] + (#self.lines - old_lines) 87 | end 88 | end 89 | end 90 | end 91 | 92 | 93 | local function predicate_docview() 94 | return core.active_view:is(DocView) 95 | and not core.active_view:is(CommandView) 96 | end 97 | 98 | core.status_view:add_item({ 99 | predicate = predicate_docview, 100 | name = "chapters:display", 101 | alignment = StatusView.Item.RIGHT, 102 | get_item = function() 103 | local dv = core.active_view 104 | local chapter = get_chapter(core.active_view.doc) 105 | if not chapter then return {} end 106 | return { "Chapter " .. chapter } 107 | end 108 | }) 109 | 110 | 111 | command.add("core.docview", { 112 | ["chapters:jump"] = function() 113 | core.command_view:enter("Jump to Chapter", function(text) 114 | chapters.jump_to(core.active_view, tonumber(text)) 115 | end) 116 | end, 117 | ["chapters:previous"] = function() 118 | chapters.jump_to(core.active_view, get_chapter(core.active_view.doc) - 1) 119 | end, 120 | ["chapters:current"] = function() 121 | chapters.jump_to(core.active_view, get_chapter(core.active_view.doc)) 122 | end, 123 | ["chapters:next"] = function() 124 | chapters.jump_to(core.active_view, get_chapter(core.active_view.doc) + 1) 125 | end 126 | }) 127 | 128 | keymap.add { 129 | ["alt+pagedown"] = "chapters:next", 130 | ["alt+pageup"] = "chapters:previous", 131 | ["alt+home"] = "chapters:current" 132 | } 133 | 134 | return chapters 135 | -------------------------------------------------------------------------------- /plugins/formatting.lua: -------------------------------------------------------------------------------- 1 | -- mod-version:3 -- lite-xl 2.1 2 | 3 | local core = require "core" 4 | local keymap = require "core.keymap" 5 | local config = require "core.config" 6 | local style = require "core.style" 7 | local common = require "core.common" 8 | local command = require "core.command" 9 | local DocView = require "core.docview" 10 | 11 | local function doc() return core.active_view.doc end 12 | 13 | local function toggle_selection(delimiter, idx, line1, col1, line2, col2) 14 | local inverted, remove, fline, fcol, lline, lcol = line1 > line2 or (line1 == line2 and col1 > col2) 15 | if inverted then 16 | fline, fcol = inverted and line2 or line1, inverted and col2 or col1 17 | lline, lcol = inverted and line1 or line2, inverted and col1 or col2 18 | remove = 19 | doc().lines[fline]:sub(fcol, fcol + #delimiter - 1) == delimiter and 20 | lcol >= #delimiter and doc().lines[lline]:sub(lcol - #delimiter, lcol - 1) == delimiter 21 | local shift = #delimiter * (remove and -2 or 2) 22 | print("SHIFT", shift) 23 | if remove then 24 | doc():remove(lline, lcol - #delimiter, lline, lcol) 25 | doc():remove(fline, fcol, #delimiter, fline, fcol + #delimiter) 26 | else 27 | doc():insert(lline, lcol, delimiter) 28 | doc():insert(fline, fcol, delimiter) 29 | end 30 | if inverted then 31 | doc():set_selections(idx, line1, col1+shift, line2, col2) 32 | else 33 | doc():set_selections(idx, line1, col1, line2, col2+shift) 34 | end 35 | end 36 | end 37 | 38 | command.add(DocView, { 39 | ["write-xl:bold"] = function() 40 | for idx, line1, col1, line2, col2 in doc():get_selections(false) do 41 | toggle_selection("**", idx, line1, col1, line2, col2) 42 | end 43 | end, 44 | ["write-xl:italicize"] = function() 45 | for idx, line1, col1, line2, col2 in doc():get_selections(false) do 46 | toggle_selection("*", idx, line1, col1, line2, col2) 47 | end 48 | end 49 | }) 50 | 51 | keymap.add { 52 | ["ctrl+b"] = "write-xl:bold", 53 | ["ctrl+i"] = "write-xl:italicize" 54 | } 55 | -------------------------------------------------------------------------------- /plugins/gitsave.lua: -------------------------------------------------------------------------------- 1 | -- mod-version:3 --lite-xl 2.1 2 | -- Plugin designed to make it easy to edit single files, push them, and load them from multiple machines. 3 | -- Designed as part of the write-xl project. 4 | 5 | local core = require "core" 6 | local keymap = require "core.keymap" 7 | local command = require "core.command" 8 | local common = require "core.common" 9 | local config = require "core.config" 10 | local DocView = require "core.docview" 11 | 12 | local git = require "libraries.libgit2" 13 | 14 | config.plugins.gitsave = common.merge({ 15 | -- if true, checks on startup to see if the primary project is a git repo, and if so, perform a fetch and merge. 16 | auto_pull = false, 17 | -- the username to authenticate with 18 | username = nil, 19 | -- the password to authenticate with 20 | password = nil, 21 | -- the email to use on commits 22 | email = nil, 23 | -- the name to use on commits 24 | name = nil 25 | }, config.plugins.gitsave) 26 | 27 | local function fetch_and_merge(repo, options) 28 | options = options or {} 29 | if not config.plugins.gitsave.username or not config.plugins.gitsave.password then 30 | error("Requires a username and password, please set them with config.plugins.gitsave.username and config.plugins.gitsave.password.") 31 | end 32 | local remote_url = options.remote_url 33 | local remote_name = options.remote_name or "origin" 34 | local remote_branch_name = options.remote_branch_name or "master" 35 | local local_branch_name = options.local_branch_name or "master" 36 | local remote = repo:remote(remote_name, remote_url) 37 | core.add_thread(function() 38 | core.log("Fetching git remote origin...") 39 | remote:fetch() 40 | core.log("Successfully fetched git remote origin.") 41 | if not repo:branch(local_branch_name, "refs/remotes/origin/" .. remote_branch_name) then 42 | local merged = repo:merge("refs/remotes/origin/" .. remote_branch_name) 43 | if merged and type(merged) == "string" then 44 | core.log("Performed fast-forward to " .. merged .. ".") 45 | repo:reset(merged, "hard") 46 | elseif merged then 47 | local commit_id = repo:commit("Merged remote.") 48 | repo:reset(commit_id, "hard") 49 | core.log("Performed merge, committed, and reset to " .. commit_id .. ".") 50 | else 51 | core.log("No merge required, up-to-date.") 52 | end 53 | else 54 | core.log("Set HEAD to origin HEAD.") 55 | repo:reset("HEAD", "hard") 56 | end 57 | end) 58 | end 59 | 60 | local extant_gits = {} 61 | 62 | local function load_repo_for_directory(directory) 63 | if system.get_file_info(directory .. PATHSEP .. ".git") then 64 | extant_gits[directory] = extant_gits[directory] or git.open(directory, config.plugins.gitsave) 65 | return extant_gits[directory] 66 | else 67 | local dir = common.dirname(directory) 68 | if dir then return load_repo_for_directory(dir) end 69 | end 70 | return nil 71 | end 72 | 73 | if config.plugins.gitsave.auto_pull then 74 | local repo = load_repo_for_directory(system.absolute_path(".")) 75 | if repo then fetch_and_merge(repo) end 76 | end 77 | 78 | local function suggest_directory(text) 79 | text = common.home_expand(text) 80 | local basedir = common.dirname(core.project_dir) 81 | return common.home_encode_list((basedir and text == basedir .. PATHSEP or text == "") and 82 | core.recent_projects or common.dir_path_suggest(text)) 83 | end 84 | 85 | local function ask_repo_for_directory(clone) 86 | local file = core.active_view and core.active_view:is(DocView) and core.active_view.filename 87 | core.command_view:enter("Directory to initialize?", { 88 | text = file and common.dirname(docview.filename) or "", 89 | submit = function(directory) 90 | local info = system.get_file_info(directory) 91 | if not info or info.type ~= "dir" then error("Please select a directory.") end 92 | if system.get_file_info(directory .. PATHSEP .. ".git") then error("This directory already has a git repository.") end 93 | if not clone and load_repo_for_directory(directory) then error("This directory is inside an existing git repository.") end 94 | core.command_view:enter("Remote to add?", { 95 | submit = function(remote_url) 96 | extant_gits[directory] = git.open(directory, config.plugins.gitsave) 97 | if clone then 98 | fetch_and_merge(extant_gits[directory], { remote_url = remote_url }) 99 | else 100 | extant_gits[directory]:remote("origin", remote_url) 101 | end 102 | core.log("Succesfully added repository to %s.", directory) 103 | end 104 | }) 105 | end, 106 | suggest = suggest_directory 107 | }) 108 | end 109 | 110 | command.add(nil, { 111 | ["gitsave:init"] = function() 112 | ask_repo_for_directory() 113 | end, 114 | ["gitsave:clone"] = function() 115 | ask_repo_for_directory(true) 116 | end 117 | }) 118 | 119 | 120 | command.add(function() 121 | local file = core.active_view and core.active_view.doc and core.active_view.doc.abs_filename 122 | if not file then 123 | local repo = load_repo_for_directory(system.absolute_path(".")) 124 | return true, repo 125 | end 126 | local repo = load_repo_for_directory(common.dirname(file)) 127 | return file and repo, repo 128 | end, { 129 | ["gitsave:push"] = function(repo) 130 | local doc = core.active_view and core.active_view.doc 131 | if not config.plugins.gitsave.name or not config.plugins.gitsave.email then 132 | error("Requires a name and email, please set them with config.plugins.gitsave.name and config.plugins.gitsave.email") 133 | end 134 | if repo:add(doc.filename) then 135 | core.command_view:enter("Commit message? (blank is OK)", { 136 | submit = function(text) 137 | local remote = repo:remote("origin") 138 | repo:commit(text or ("Automatic GitSave Commit " + os.date("%Y-%m-%dT%H:%M:%S"))) 139 | core.log("Pushing to remote for %s.", doc.filename .. "...") 140 | local local_branch_name = config.plugins.gitsave.local_branch_name or "master" 141 | core.add_thread(function() 142 | remote:push("refs/heads/" .. local_branch_name) 143 | core.log("Pushed changes to remote for %s.", doc.filename) 144 | end) 145 | end 146 | }) 147 | else 148 | core.log("No changes detected on %s.", doc.filename) 149 | end 150 | end, 151 | ["gitsave:fetch"] = function(repo) 152 | fetch_and_merge(repo) 153 | end, 154 | ["gitsave:save"] = function() 155 | local doc = core.active_view and core.active_view.doc 156 | if doc then 157 | command.perform((not doc.filename or doc:is_dirty()) and "doc:save" or "gitsave:push") 158 | end 159 | end 160 | }) 161 | 162 | keymap.add_direct { 163 | ["ctrl+s"] = { "gitsave:save", "doc:save" } 164 | } 165 | -------------------------------------------------------------------------------- /plugins/sessionclock.lua: -------------------------------------------------------------------------------- 1 | -- mod-version:3 -- lite-xl 2.1 2 | local core = require "core" 3 | local config = require "core.config" 4 | local common = require "core.common" 5 | local style = require "core.style" 6 | local keymap = require "core.keymap" 7 | local StatusView = require "core.statusview" 8 | 9 | config.plugins.sessionclock = common.merge({ 10 | inactive_time = 30 11 | }, config.plugins.sessionclock) 12 | 13 | local time = "" 14 | 15 | local start_time = os.time() 16 | local total_active_time = 0 17 | 18 | local last_action = system.get_time() 19 | 20 | local old_on_event = core.on_event 21 | function core.on_event(type, ...) 22 | if type == "keypressed" or type == "mousepressed" or type == "mousewheel" then 23 | if last_action then 24 | total_active_time = total_active_time + system.get_time() - last_action 25 | end 26 | last_action = system.get_time() 27 | end 28 | return old_on_event(type, ...) 29 | end 30 | 31 | local session_clock_display = nil 32 | local active_session_clock_display = nil 33 | 34 | local function format_duration(duration) 35 | return string.format("%02d:%02d", math.floor(duration / 3600), math.floor(duration / 60) % 60) 36 | end 37 | 38 | local function update_clocks() 39 | session_clock_display = format_duration(os.time() - start_time) 40 | active_session_clock_display = format_duration((last_action and (system.get_time() - last_action) or 0) + total_active_time) 41 | end 42 | 43 | update_clocks() 44 | 45 | core.add_thread(function() 46 | while true do 47 | if last_action and (system.get_time() - last_action > config.plugins.sessionclock.inactive_time) then 48 | total_active_time = total_active_time + math.min(system.get_time() - last_action, config.plugins.sessionclock.inactive_time) 49 | last_action = nil 50 | end 51 | update_clocks() 52 | coroutine.yield(1) 53 | end 54 | end) 55 | 56 | 57 | core.status_view:add_item({ 58 | name = "status:session-clock", 59 | alignment = StatusView.Item.RIGHT, 60 | get_item = function() 61 | return {style.accent, active_session_clock_display .. " / " .. session_clock_display} 62 | end, 63 | position = -1, 64 | separator = core.status_view.separator2 65 | }) 66 | -------------------------------------------------------------------------------- /plugins/synonyms/init.lua: -------------------------------------------------------------------------------- 1 | -- mod-version:3 --lite-xl 2.1 2 | local core = require "core" 3 | local style = require "core.style" 4 | local config = require "core.config" 5 | local command = require "core.command" 6 | local common = require "core.common" 7 | local DocView = require "core.docview" 8 | local Doc = require "core.doc" 9 | 10 | -- Generated the synonym file from the supplied dictionary, with the following string. 11 | -- perl -e 'use File::Slurp; use JSON qw(encode_json from_json); my %words = (); map { my $json = from_json(scalar(read_file($_))); for (keys(%$json)) { $words{lc($_)} = [map { lc($_) } @{$json->{$_}->{SYNONYMS}}] } } (glob("*.json")); for my $key (grep { int(@{$words{$_}}) > 0 && $words{$_}->[0] ne $_ } sort(keys(%words))) { print $key . ":" . join(",", grep { $_ ne $key } @{$words{$key}}) . "\n"; }' > ../user/synonyms 12 | 13 | local synonym_file_locations = { USERDIR .. PATHSEP .. "synonyms", USERDIR .. PATHSEP .. "plugins" .. PATHSEP .. "synonyms" .. PATHSEP .. "synonyms" } 14 | local autodetected_synonym_file = nil 15 | for i,v in ipairs(synonym_file_locations) do if system.get_file_info(v) then autodetected_synonym_file = v break end end 16 | 17 | config.plugins.synonyms = common.merge({ 18 | synonym_file = autodetected_synonym_file 19 | }, config.plugins.synonyms) 20 | 21 | local synonyms = {} 22 | local word_pattern = "%a+" 23 | 24 | if config.plugins.synonyms.synonym_file and system.get_file_info(config.plugins.synonyms.synonym_file) then 25 | core.add_thread(function() 26 | local i = 0 27 | for line in io.lines(config.plugins.synonyms.synonym_file) do 28 | local s = line:find(":") 29 | local n = s 30 | local word = line:sub(1, s - 1) 31 | local t = {} 32 | while true do 33 | n = line:find(",", s + 1) 34 | if n then 35 | table.insert(t, line:sub(s + 1, n - 1)) 36 | s = n 37 | else 38 | table.insert(t, line:sub(s + 1, #line)) 39 | break 40 | end 41 | end 42 | synonyms[word] = t 43 | i = i + 1 44 | if i % 1000 == 0 then coroutine.yield() end 45 | end 46 | core.redraw = true 47 | core.log_quiet( 48 | "Finished loading synonym file: \"%s\"", 49 | config.plugins.synonyms.synonym_file 50 | ) 51 | end) 52 | else 53 | error("can't find synonyms list; please supply one with config.plugins.synonyms.synonym_file") 54 | end 55 | 56 | local function get_word_at_caret() 57 | local doc = core.active_view.doc 58 | local l, c = doc:get_selection() 59 | local s, e = 0, 0 60 | local text = doc.lines[l] 61 | while true do 62 | s, e = text:find(word_pattern, e + 1) 63 | if c >= s and c <= e + 1 then 64 | return text:sub(s, e):lower(), s, e 65 | end 66 | end 67 | end 68 | 69 | 70 | command.add("core.docview", { 71 | 72 | ["synonyms:replace"] = function() 73 | local word, s, e = get_word_at_caret() 74 | 75 | -- find suggestions 76 | local suggestions = synonyms[word] 77 | if not suggestions or #suggestions == 0 then 78 | core.error("Could not find any suggestions for \"%s\"", word) 79 | return 80 | end 81 | 82 | local doc = core.active_view.doc 83 | local line = doc:get_selection() 84 | local has_upper = doc.lines[line]:sub(s, s):match("[A-Z]") 85 | local transformed_suggestions = {} 86 | for k, v in ipairs(suggestions) do 87 | if has_upper then 88 | v = v:gsub("^.", string.upper) 89 | end 90 | table.insert(transformed_suggestions, v) 91 | end 92 | 93 | -- select word and init replacement selector 94 | local label = string.format("Replace \"%s\" With", word) 95 | doc:set_selection(line, e + 1, line, s) 96 | core.command_view:enter(label, function(text, item) 97 | text = item or text 98 | doc:replace(function() return text end) 99 | end, function(text) 100 | local t = {} 101 | for _, w in ipairs(transformed_suggestions) do 102 | if w:lower():find(text:lower(), 1, true) then 103 | table.insert(t, w) 104 | end 105 | end 106 | return t 107 | end) 108 | end, 109 | 110 | }) 111 | 112 | local contextmenu = require "plugins.contextmenu" 113 | contextmenu:register("core.docview", { 114 | contextmenu.DIVIDER, 115 | { text = "View Synonyms", command = "synonyms:replace" } 116 | }) 117 | -------------------------------------------------------------------------------- /plugins/tag_highlight.lua: -------------------------------------------------------------------------------- 1 | -- mod-version:3 -- lite-xl 2.1 2 | local doc = require "core.doc" 3 | local common = require "core.common" 4 | local DocView = require "core.docview" 5 | 6 | local tag_color_list = { 7 | { common.color "#ff0000" }, 8 | { common.color "#00ff00" }, 9 | { common.color "#0000ff" }, 10 | { common.color "#ffff00" }, 11 | { common.color "#00ffff" } 12 | } 13 | 14 | local function compute_tags(doc, text) 15 | doc.tag_cache = doc.tag_cache or {} 16 | if not text then 17 | text = "" 18 | for i = 1, math.min(#doc.lines, 100) do 19 | text = text .. doc.lines[i] 20 | end 21 | end 22 | local s, e = 0 23 | while s and s < #text do 24 | s, e = text:find("%[([^%]]+)%]", s + 1) 25 | if s then 26 | local tag = text:sub(s + 1, e - 1) 27 | if not doc.tag_cache[tag] then 28 | local total = 0 29 | for i, v in pairs(doc.tag_cache) do total = total + 1 end 30 | doc.tag_cache[tag] = tag_color_list[total] or { math.random(255), math.random(255), math.random(255) } 31 | end 32 | end 33 | end 34 | end 35 | 36 | 37 | local old_draw_line_body = DocView.draw_line_body 38 | function DocView:draw_line_body(line, x, y) 39 | local s, e = 0 40 | local color = nil 41 | while s and s < #self.doc.lines[line] do 42 | s, e = self.doc.lines[line]:find("%[([^%]]+)%]", s + 1) 43 | if s then 44 | local tag = self.doc.lines[line]:sub(s + 1, e - 1) 45 | if self.doc.tag_cache[tag] then 46 | color = self.doc.tag_cache[tag] 47 | break 48 | end 49 | end 50 | end 51 | renderer.draw_rect(x, y, self:get_col_x_offset(line, #self.doc.lines[line]), self:get_line_height(line), color) 52 | old_draw_line_body(self, line, x, y) 53 | end 54 | 55 | local old_on_text_input = DocView.on_text_input 56 | function DocView:on_text_input(text) 57 | old_on_text_input(self, text) 58 | compute_tags(doc, text) 59 | end 60 | 61 | local old_new = DocView.new 62 | function DocView:new(doc) 63 | old_new(self, doc) 64 | compute_tags(doc) 65 | end 66 | -------------------------------------------------------------------------------- /plugins/write-xl.lua: -------------------------------------------------------------------------------- 1 | -- mod-version:3 --lite-xl 2.1 --priority:10 2 | 3 | -- these are write-xl's basic startup settings. 4 | -- you can modify these how you wish. 5 | 6 | local core = require "core" 7 | local keymap = require "core.keymap" 8 | local config = require "core.config" 9 | local style = require "core.style" 10 | local syntax = require "core.syntax" 11 | local common = require "core.common" 12 | local DocView = require "core.docview" 13 | local command = require "core.command" 14 | local TreeView = require "plugins.treeview" 15 | local keymap = require "core.keymap" 16 | local EmptyView = require "core.emptyview" 17 | local Doc = require "core.doc" 18 | 19 | 20 | local function draw_text(x, y, color) 21 | local th = style.big_font:get_height() 22 | local dh = 2 * th + style.padding.y * 2 23 | local x1, y1 = x, y + (dh - th) / 2 24 | local xv = x1 25 | local title = "Write XL" 26 | local version = "version git" 27 | local title_width = style.big_font:get_width(title) 28 | local version_width = style.font:get_width(version) 29 | if version_width > title_width then 30 | version = VERSION 31 | version_width = style.font:get_width(version) 32 | xv = x1 - (version_width - title_width) 33 | end 34 | x = renderer.draw_text(style.big_font, title, x1, y1, color) 35 | renderer.draw_text(style.font, version, xv, y1 + th, color) 36 | x = x + style.padding.x 37 | renderer.draw_rect(x, y, math.ceil(1 * SCALE), dh, color) 38 | local lines = { 39 | { fmt = "%s to run a command", cmd = "core:find-command" }, 40 | { fmt = "%s to open a file from the project", cmd = "core:find-file" }, 41 | { fmt = "%s to change project folder", cmd = "core:change-project-folder" }, 42 | { fmt = "%s to open a project folder", cmd = "core:open-project-folder" }, 43 | } 44 | th = style.font:get_height() 45 | y = y + (dh - (th + style.padding.y) * #lines) / 2 46 | local w = 0 47 | for _, line in ipairs(lines) do 48 | local text = string.format(line.fmt, keymap.get_binding(line.cmd)) 49 | w = math.max(w, renderer.draw_text(style.font, text, x + style.padding.x, y, color)) 50 | y = y + th + style.padding.y 51 | end 52 | return w, dh 53 | end 54 | 55 | function EmptyView:draw() 56 | self:draw_background(style.background) 57 | local w, h = draw_text(0, 0, { 0, 0, 0, 0 }) 58 | local x = self.position.x + math.max(style.padding.x, (self.size.x - w) / 2) 59 | local y = self.position.y + (self.size.y - h) / 2 60 | draw_text(x, y, { 0, 0, 0, 255 }) 61 | end 62 | 63 | local document_width = 900 * SCALE 64 | 65 | core.reload_module('colors.word') 66 | 67 | config.plugins.autocomplete = false 68 | TreeView.visible = false 69 | config.highlight_current_line = false 70 | if system.get_file_info(USERDIR .. "/words") then 71 | config.plugins.spellcheck.dictionary_file = USERDIR .. "/words" 72 | elseif system.get_file_info(DATADIR .. "/words") then 73 | config.plugins.spellcheck.dictionary_file = DATADIR .. "/words" 74 | end 75 | config.plugins.language_c = false 76 | config.plugins.language_cpp = false 77 | config.plugins.language_css = false 78 | config.plugins.language_html = false 79 | config.plugins.language_js = false 80 | config.plugins.language_python = false 81 | config.plugins.language_xml = false 82 | config.plugins.linewrapping = { 83 | enable_by_default = true, 84 | mode = "word", 85 | guide = false, 86 | indent = false, 87 | width_override = function(docview) return math.min(document_width, docview.size.x) end 88 | } 89 | config.plugins.tag_highlight = false 90 | config.transitions = false 91 | -- override reset syntax to force all docs to be markdown. 92 | Doc.reset_syntax = function(self) 93 | local header = self:get_text(1, 1, self:position_offset(1, 1, 128)) 94 | local syn = syntax.get(self.filename or ".md", header) 95 | if self.syntax ~= syn then 96 | self.syntax = syn 97 | self.highlighter:soft_reset() 98 | end 99 | end 100 | local old_doc_new = Doc.new 101 | Doc.new = function(self, ...) 102 | local result = old_doc_new(self, ...) 103 | self:reset_syntax() 104 | return result 105 | end 106 | 107 | function DocView:draw_line_gutter(line, x, y, width) 108 | if self.size.x > document_width then 109 | renderer.draw_rect(x + width - style.padding.x, y, 1, self.size.y, style.scrollbar2) 110 | renderer.draw_rect(x + width + style.padding.x + document_width, y, 1, self.size.y, style.scrollbar2) 111 | end 112 | end 113 | function DocView:get_gutter_width() return math.max(self.size.x - document_width, 0) / 2 end 114 | 115 | command.add(nil, { 116 | ["files:delete"] = function() 117 | core.command_view:enter("Delete file path", function(text) 118 | local success, err, path = common.rm(text) 119 | if not success then 120 | core.error("cannot delete file %q: %s", path, err) 121 | end 122 | end) 123 | end 124 | }) 125 | 126 | keymap.add { 127 | ["ctrl+h"] = "core:open-log", 128 | ["ctrl+shift+y"] = "synonyms:replace", 129 | ["ctrl+shift+t"] = "spell-check:replace", 130 | ["ctrl+q"] = { "command:escape", "doc:select-none", "dialog:select-no" } 131 | } 132 | -------------------------------------------------------------------------------- /resources/icons/icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adamharrison/write-xl/45546f5e897a4f6d9f775eedabbb7a0acf1adc0c/resources/icons/icon.ico -------------------------------------------------------------------------------- /resources/icons/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adamharrison/write-xl/45546f5e897a4f6d9f775eedabbb7a0acf1adc0c/resources/icons/icon.png -------------------------------------------------------------------------------- /resources/icons/icon.rc: -------------------------------------------------------------------------------- 1 | id ICON "icon.ico" 2 | 3 | -------------------------------------------------------------------------------- /resources/icons/icon.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adamharrison/write-xl/45546f5e897a4f6d9f775eedabbb7a0acf1adc0c/resources/icons/icon.res -------------------------------------------------------------------------------- /scripts/convert-to-md.pl: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env perl 2 | 3 | use strict; 4 | use warnings; 5 | use utf8; 6 | use Encode; 7 | use File::Slurp; 8 | 9 | my $text = decode("UTF-8", scalar(read_file($ARGV[0]))); 10 | 11 | sub strip_newlines { $_[0] =~ s/\n/ /rg } 12 | 13 | $text =~ s/(.*?)<\/font>/"# " . strip_newlines($1)/gems; 14 | $text =~ s/(.*?)<\/font>/"## " . strip_newlines($1)/gems; 15 | $text =~ s/]+>(.*?)<\/h2>/"#### " . strip_newlines($1)/gems; 16 | $text =~ s/]+>(.*?)<\/h3>/"##### " . strip_newlines($1)/gems; 17 | $text =~ s/\s*(.*?)\s*<\/b>/ **$1** /g; 18 | $text =~ s/\s*(.*?)\s*<\/i>/ *$1* /g; 19 | $text =~ s/\n/ /g; 20 | $text =~ s/ / /g; 21 | $text =~ s//\n/g; 22 | $text =~ s/<\/p>/\n/g; 23 | $text =~ s/<[^>]+>//g; 24 | $text =~ s/^ +//gms; 25 | $text =~ s/[“”]/"/g; 26 | $text =~ s/’/'/g; 27 | $text =~ s/(#+)/\n\n$1/g; 28 | 29 | print encode("UTF-8",$text); 30 | -------------------------------------------------------------------------------- /scripts/dictionary/DX.json: -------------------------------------------------------------------------------- 1 | {"X": {"MEANINGS": {"2": ["Noun", "the 24th letter of the Roman alphabet", ["Letter", "Letter of the alphabet", "Alphabetic character"], []]}, "ANTONYMS": [], "SYNONYMS": ["Tenner", "Adam", "Ecstasy", "Xtc", "Disco biscuit"]}, "XANTHATE": {"MEANINGS": {"1": ["Noun", "a salt or ester of xanthic acid", ["Salt"], []]}, "ANTONYMS": [], "SYNONYMS": ["Xanthate"]}, "XANTHATES": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Xanthate"]}, "XANTHELASMA": {"MEANINGS": {"1": ["Noun", "xanthoma of the eyelids; occurs chiefly in the elderly", ["Xanthoma"], []]}, "ANTONYMS": [], "SYNONYMS": ["Xanthelasma"]}, "XANTHINE": {"MEANINGS": {"1": ["Noun", "crystalline oxidation product of the metabolism of nucleoproteins; precursor of uric acid; found in many organs and in urine", ["Organic compound"], []]}, "ANTONYMS": [], "SYNONYMS": ["Xanthine"]}, "XANTHINES": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Xanthine"]}, "XANTHIUM": {"MEANINGS": {"1": ["Noun", "coarse herbs having small heads of greenish flowers followed by burrs with hooked bristles", ["Asterid dicot genus"], []]}, "ANTONYMS": [], "SYNONYMS": ["Genus xanthium", "Xanthium"]}, "XANTHOMA": {"MEANINGS": {"1": ["Noun", "a skin problem marked by the development (on the eyelids and neck and back) of irregular yellow nodules; sometimes attributable to disturbances of cholesterol metabolism", ["Skin disease", "Disease of the skin", "Skin disorder"], []]}, "ANTONYMS": [], "SYNONYMS": ["Xanthoma"]}, "XANTHOMAS": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Xanthoma"]}, "XANTHOMATOSIS": {"MEANINGS": {"1": ["Noun", "widespread xanthomas (especially on elbows and knees); often associated with a disorder of lipid metabolism", ["Xanthoma"], []]}, "ANTONYMS": [], "SYNONYMS": ["Xanthomatosis", "Cholesterosis cutis", "Xanthoma multiplex", "Lipid granulomatosis", "Lipoid granulomatosis"]}, "XANTHOMONAS": {"MEANINGS": {"1": ["Noun", "a genus of bacteria similar to Pseudomonas but producing a yellow pigment that is not soluble in water", ["Bacteria genus"], []]}, "ANTONYMS": [], "SYNONYMS": ["Genus xanthomonas", "Xanthomonas"]}, "XANTHOPHYCEAE": {"MEANINGS": {"1": ["Noun", "yellow-green algae", ["Class"], []]}, "ANTONYMS": [], "SYNONYMS": ["Class xanthophyceae", "Xanthophyceae"]}, "XANTHOPHYL": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Xanthophyll", "Xanthophyl", "Lutein"]}, "XANTHOPHYLL": {"MEANINGS": {"1": ["Noun", "yellow carotenoid pigments in plants and animal fats and egg yolks", ["Carotenoid"], []]}, "ANTONYMS": [], "SYNONYMS": ["Xanthophyll", "Xanthophyl", "Lutein"]}, "XANTHOPSIA": {"MEANINGS": {"1": ["Noun", "visual defect in which objects appear to have a yellowish hue; sometimes occurs in cases of jaundice", ["Visual impairment", "Visual defect", "Vision defect", "Visual disorder"], []]}, "ANTONYMS": [], "SYNONYMS": ["Xanthopsia"]}, "XANTHOSIS": {"MEANINGS": {"1": ["Noun", "an abnormal yellow discoloration of the skin", ["Skin disease", "Disease of the skin", "Skin disorder"], []]}, "ANTONYMS": [], "SYNONYMS": ["Xanthosis"]}, "XANTHOSOMA": {"MEANINGS": {"1": ["Noun", "tropical American tuberous perennials", ["Monocot genus", "Liliopsid genus"], []]}, "ANTONYMS": [], "SYNONYMS": ["Genus xanthosoma", "Xanthosoma"]}, "XANTHOUS": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Yellow", "Xanthous", "Yellowish"]}, "XAVIER": {"MEANINGS": {"1": ["Noun", "Spanish missionary and Jesuit who establish missionaries in Japan and Ceylon and the East Indies (1506-1552)", [], []]}, "ANTONYMS": [], "SYNONYMS": ["Xavier", "Saint francis xavier"]}, "X-AXIS": {"MEANINGS": {"1": ["Noun", "the horizontal axis in a plane coordinate system", ["Coordinate axis"], []]}, "ANTONYMS": [], "SYNONYMS": ["X-axis"]}, "XC": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Ninety", "90", "Xc"]}, "XCL": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["190", "One hundred ninety", "Xcl"]}, "XE": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Xenon", "Xe", "Atomic number 54"]}, "XENARTHRA": {"MEANINGS": {"1": ["Noun", "armadillos; American anteaters; sloths", ["Animal order"], []]}, "ANTONYMS": [], "SYNONYMS": ["Suborder xenarthra", "Xenarthra"]}, "XENICIDAE": {"MEANINGS": {"1": ["Noun", "alternative names for the family comprising the New Zealand wrens", ["Bird family"], []]}, "ANTONYMS": [], "SYNONYMS": ["Family xenicidae", "Xenicidae", "Family acanthisittidae", "Acanthisittidae"]}, "XENICUS": {"MEANINGS": {"1": ["Noun", "type genus for the Xenicidae", ["Bird genus"], []]}, "ANTONYMS": [], "SYNONYMS": ["Xenicus", "Genus xenicus"]}, "XENOGENEIC": {"MEANINGS": {"1": ["Adjective", "denoting or relating to cells or tissues from individuals belonging to different species", [], []]}, "ANTONYMS": ["allogeneic"], "SYNONYMS": ["Xenogeneic"]}, "XENOGENESIS": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Heterogenesis", "Alternation of generations", "Xenogenesis"]}, "XENOGRAFT": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Xenograft", "Heterograft"]}, "XENOLITH": {"MEANINGS": {"1": ["Noun", "(geology) a piece of rock of different origin from the igneous rock in which it is embedded", ["Rock", "Stone"], []]}, "ANTONYMS": [], "SYNONYMS": ["Xenolith"]}, "XENOLITHS": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Xenolith"]}, "XENON": {"MEANINGS": {"1": ["Noun", "a colorless odorless inert gaseous element occurring in the earth's atmosphere in trace amounts", ["Chemical element", "Element", "Noble gas", "Inert gas", "Argonon"], []]}, "ANTONYMS": [], "SYNONYMS": ["Xenon", "Xe", "Atomic number 54"]}, "XENONS": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Xenon", "Xe", "Atomic number 54"]}, "XENOPHANES": {"MEANINGS": {"1": ["Noun", "Greek philosopher (560-478 BC)", [], []]}, "ANTONYMS": [], "SYNONYMS": ["Xenophanes"]}, "XENOPHOBIA": {"MEANINGS": {"1": ["Noun", "a fear of foreigners or strangers", ["Social phobia"], []]}, "ANTONYMS": [], "SYNONYMS": ["Xenophobia"]}, "XENOPHOBIC": {"MEANINGS": {"1": ["Adjective", "suffering from xenophobia; having abnormal fear or hatred of the strange or foreign", [], []]}, "ANTONYMS": [], "SYNONYMS": ["Xenophobic"]}, "XENOPHON": {"MEANINGS": {"1": ["Noun", "Greek general and historian; student of Socrates (430-355 BC)", [], []]}, "ANTONYMS": [], "SYNONYMS": ["Xenophon"]}, "XENOPODIDAE": {"MEANINGS": {"1": ["Noun", "in some classifications the family of the genus Xenopus which is otherwise included in the family Pipidae", ["Amphibian family"], []]}, "ANTONYMS": [], "SYNONYMS": ["Family xenopodidae", "Xenopodidae"]}, "XENOPUS": {"MEANINGS": {"1": ["Noun", "an African clawed frog; in some classifications made the type genus of a separate family Xenopodidae", ["Amphibian genus"], []]}, "ANTONYMS": [], "SYNONYMS": ["Genus xenopus", "Xenopus"]}, "XENOSAURIDAE": {"MEANINGS": {"1": ["Noun", "monotypic family of Mexican lizards", ["Reptile family"], []]}, "ANTONYMS": [], "SYNONYMS": ["Family xenosauridae", "Xenosauridae"]}, "XENOSAURUS": {"MEANINGS": {"1": ["Noun", "type and sole genus of Xenosauridae: slender-bodied Mexican lizards having the upper surface covered with tiny granules and tubercles", ["Reptile genus"], []]}, "ANTONYMS": [], "SYNONYMS": ["Genus xenosaurus", "Xenosaurus"]}, "XENOTIME": {"MEANINGS": {"1": ["Noun", "a brown-to-yellow mineral that is a phosphate of yttrium in crystalline form", ["Mineral"], []]}, "ANTONYMS": [], "SYNONYMS": ["Xenotime"]}, "XERANTHEMUM": {"MEANINGS": {"1": ["Noun", "any plant of the genus Xeranthemum native to southern Europe having chaffy or silvery flower heads with purplish tubular flowers", ["Flower"], []]}, "ANTONYMS": [], "SYNONYMS": ["Xeranthemum"]}, "XERIC": {"MEANINGS": {"1": ["Adjective", "being deficient in moisture", [], ["deserts provide xeric environments"]]}, "ANTONYMS": ["hydric"], "SYNONYMS": ["Xeric"]}, "XERODERMA": {"MEANINGS": {"1": ["Noun", "a mild form of ichthyosis characterized by abnormal dryness and roughness of the skin", ["Ichthyosis"], []]}, "ANTONYMS": [], "SYNONYMS": ["Xerodermia", "Xeroderma"]}, "XERODERMIA": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Xerodermia", "Xeroderma"]}, "XEROGRAPHY": {"MEANINGS": {"1": ["Noun", "forming an image by the action of light on a specially coated charged plate; the latent image is developed with powders that adhere only to electrically charged areas", ["Photography", "Picture taking"], ["edge enhancement is intrinsic in xerography"]]}, "ANTONYMS": [], "SYNONYMS": ["Xerography"]}, "XEROGRAPHIC": {"MEANINGS": {"1": ["Adjective", "of or relating to xerography", [], []]}, "ANTONYMS": [], "SYNONYMS": ["Xerographic"]}, "XEROMA": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Xeroma", "Xerophthalmus", "Conjunctivitis arida", "Xerophthalmia"]}, "XEROPHILE": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Xerophyte", "Xerophytic plant", "Xerophile", "Xerophilous plant", "Desert plant"]}, "XEROPHYLLUM": {"MEANINGS": {"1": ["Noun", "small genus of North American herbs having grasslike basal leaves: squaw grass; sometimes placed in family Melanthiaceae", ["Liliid monocot genus"], []]}, "ANTONYMS": [], "SYNONYMS": ["Genus xerophyllum", "Xerophyllum"]}, "XEROPHYTE": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Xerophyte", "Xerophytic plant", "Xerophile", "Xerophilous plant", "Desert plant"]}, "XEROPHYTIC": {"MEANINGS": {"1": ["Adjective", "adapted to a xeric (or dry) environment", [], ["cacti are xerophytic plants", "xerophytic adaptations"]]}, "ANTONYMS": [], "SYNONYMS": ["Xerophytic"]}, "XEROPHTHALMIA": {"MEANINGS": {"1": ["Noun", "abnormal dryness of the conjunctiva and cornea of the eyes; may be due to a systemic deficiency of vitamin A", ["Dryness", "Waterlessness", "Xerotes"], []]}, "ANTONYMS": [], "SYNONYMS": ["Xeroma", "Xerophthalmus", "Conjunctivitis arida", "Xerophthalmia"]}, "XEROSTOMIA": {"MEANINGS": {"1": ["Noun", "abnormal dryness of the mouth resulting from decreased secretion of saliva", ["Dryness", "Waterlessness", "Xerotes"], []]}, "ANTONYMS": [], "SYNONYMS": ["Dry mouth", "Xerostomia"]}, "XEROTES": {"MEANINGS": {}, "ANTONYMS": ["wetness"], "SYNONYMS": ["Dryness", "Waterlessness", "Xerotes"]}, "XEROX": {"MEANINGS": {"1": ["Noun", "a copy made by a xerographic printer", ["Copy"], []], "2": ["Noun", "a duplicator (trade mark Xerox) that copies graphic matter by the action of light on an electrically charged photoconductive insulating surface in which the latent image is developed with a resinous powder", ["Duplicator", "Copier"], []]}, "ANTONYMS": [], "SYNONYMS": ["Xerox copy", "Run off", "Xerographic copier", "Photocopy", "Xerox machine"]}, "XEROXED": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Photocopy", "Run off", "Xerox"]}, "XEROXES": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Xerox copy", "Run off", "Xerographic copier", "Photocopy", "Xerox machine"]}, "XEROXING": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Photocopy", "Run off", "Xerox"]}, "XHOSA": {"MEANINGS": {"1": ["Noun", "a member of the Negroid people of southern South Africa", ["African"], []], "2": ["Noun", "a community of Negroid people in southern South Africa", [], []], "3": ["Noun", "a Bantu language closely related to Zulu", ["Nguni"], []]}, "ANTONYMS": [], "SYNONYMS": ["Xhosa"]}, "XI": {"MEANINGS": {"2": ["Noun", "the 14th letter of the Greek alphabet", ["Letter", "Letter of the alphabet", "Alphabetic character"], []]}, "ANTONYMS": [], "SYNONYMS": ["Xi", "11", "Eleven"]}, "XIAN": {"MEANINGS": {"1": ["Noun", "a city of central China; capital of ancient Chinese empire 221-206 BC", [], []]}, "ANTONYMS": [], "SYNONYMS": ["Changan", "Xian", "Sian", "Singan", "Hsian"]}, "XII": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Dozen", "12", "Xii", "Twelve"]}, "XIII": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Thirteen", "13", "Xiii", "Baker's dozen", "Long dozen"]}, "XYLARIA": {"MEANINGS": {"1": ["Noun", "type genus of Xylariaceae; fungi with perithecia in the upper part of erect black woody stromata", ["Fungus genus"], []]}, "ANTONYMS": [], "SYNONYMS": ["Xylaria", "Genus xylaria"]}, "XYLARIACEAE": {"MEANINGS": {"1": ["Noun", "family of fungi characterized by dark brown to black spores", ["Fungus family"], []]}, "ANTONYMS": [], "SYNONYMS": ["Xylariaceae", "Family xylariaceae"]}, "XYLEM": {"MEANINGS": {"1": ["Noun", "the woody part of plants: the supporting and water-conducting tissue, consisting primarily of tracheids and vessels", ["Vascular tissue"], []]}, "ANTONYMS": [], "SYNONYMS": ["Xylem"]}, "XYLEMS": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Xylem"]}, "XYLENE": {"MEANINGS": {"1": ["Noun", "a colorless flammable volatile liquid hydrocarbon used as a solvent", ["Solvent", "Dissolvent", "Dissolver", "Dissolving agent", "Resolvent"], []]}, "ANTONYMS": [], "SYNONYMS": ["Xylol", "Xylene"]}, "XYLENES": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Xylol", "Xylene"]}, "XYLOCOPA": {"MEANINGS": {"1": ["Noun", "carpenter bees", ["Arthropod genus"], []]}, "ANTONYMS": [], "SYNONYMS": ["Xylocopa", "Genus xylocopa"]}, "XYLOL": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Xylol", "Xylene"]}, "XYLOLS": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Xylol", "Xylene"]}, "XYLOPHONE": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Xylophone", "Marimba"]}, "XYLOPHONES": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Xylophone", "Marimba"]}, "XYLOPHONIST": {"MEANINGS": {"1": ["Noun", "someone who plays a xylophone", ["Percussionist"], []]}, "ANTONYMS": [], "SYNONYMS": ["Xylophonist"]}, "XYLOPHONISTS": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Xylophonist"]}, "XYLOPIA": {"MEANINGS": {"1": ["Noun", "tropical evergreen trees or shrubs; chiefly African", ["Magnoliid dicot genus"], []]}, "ANTONYMS": [], "SYNONYMS": ["Xylopia", "Genus xylopia"]}, "XYLOSE": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Xylose", "Wood sugar"]}, "XYLOSES": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Xylose", "Wood sugar"]}, "XYLOSMA": {"MEANINGS": {"1": ["Noun", "shrub or small tree grown as an ornamental in mild climates for its neat evergreen foliage and fragrant late flowers; native of China", ["Shrub", "Bush"], []]}, "ANTONYMS": [], "SYNONYMS": ["Xylosma congestum", "Xylosma"]}, "XIPHIAS": {"MEANINGS": {"1": ["Noun", "type genus of the Xiphiidae", ["Fish genus"], []]}, "ANTONYMS": [], "SYNONYMS": ["Genus xiphias", "Xiphias"]}, "XIPHIIDAE": {"MEANINGS": {"1": ["Noun", "comprising the common swordfishes", ["Fish family"], []]}, "ANTONYMS": [], "SYNONYMS": ["Family xiphiidae", "Xiphiidae"]}, "XIPHOSURA": {"MEANINGS": {"1": ["Noun", "horseshoe crabs and extinct forms", ["Animal order"], []]}, "ANTONYMS": [], "SYNONYMS": ["Order xiphosura", "Xiphosura"]}, "XYRIDACEAE": {"MEANINGS": {"1": ["Noun", "plants of tropical to temperate regions; usually in wet places", ["Monocot family", "Liliopsid family"], []]}, "ANTONYMS": [], "SYNONYMS": ["Family xyridaceae", "Xyridaceae", "Yellow-eyed grass family"]}, "XYRIDALES": {"MEANINGS": {"1": ["Noun", "an order of monocotyledonous herbs", ["Plant order"], []]}, "ANTONYMS": [], "SYNONYMS": ["Xyridales", "Order commelinales", "Order xyridales", "Commelinales"]}, "XYRIS": {"MEANINGS": {"1": ["Noun", "chiefly American marsh plants, having usually yellow flowers", ["Monocot genus", "Liliopsid genus"], []]}, "ANTONYMS": [], "SYNONYMS": ["Genus xyris", "Xyris"]}, "XIS": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Xi", "11", "Eleven"]}, "XIV": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Fourteen", "14", "Xiv"]}, "XIX": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Xix", "Nineteen", "19"]}, "XL": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Twoscore", "Xl", "Forty", "40"]}, "XMAS": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Xmas", "Christmas", "Christmas day", "Dec 25"]}, "XMASES": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Xmas", "Christmas", "Christmas day", "Dec 25"]}, "X-RADIATION": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Roentgen ray", "X ray", "X-radiation", "X-ray", "X-raying"]}, "X-RAY": {"MEANINGS": {"1": ["Verb", "examine by taking x-rays", ["Examine", "See"], []], "2": ["Verb", "take an x-ray of something or somebody", ["Photograph", "Snap", "Shoot"], ["The doctor x-rayed my chest"]]}, "ANTONYMS": [], "SYNONYMS": ["Roentgen ray", "X-ray picture", "X ray", "X-radiation", "X-ray"]}, "XS": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Tenner", "Adam", "Ecstasy", "Xtc", "Disco biscuit"]}, "XT": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Xt", "Crosstalk"]}, "XTC": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Adam", "Ecstasy", "Xtc", "Disco biscuit", "Hug drug"]}, "XVI": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Sixteen", "Xvi", "16"]}, "XVII": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Seventeen", "Xvii", "17"]}, "XVIII": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Xviii", "18", "Eighteen"]}, "XX": {"MEANINGS": {"2": ["Noun", "(genetics) normal complement of sex chromosomes in a female", ["Sex chromosome"], []]}, "ANTONYMS": [], "SYNONYMS": ["Xx", "Twenty", "20"]}, "XXI": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Twenty-one", "Xxi", "21"]}, "XXII": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Xxii", "Twenty-two", "22"]}, "XXIII": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Xxiii", "23", "Twenty-three"]}, "XXIV": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Twenty-four", "Two dozen", "24", "Xxiv"]}, "XXV": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Xxv", "Twenty-five", "25"]}, "XXX": {"MEANINGS": {"2": ["Noun", "(genetics) abnormal complement of three X chromosomes in a female", ["Sex chromosome"], []]}, "ANTONYMS": [], "SYNONYMS": ["Xxx", "Thirty", "30"]}} -------------------------------------------------------------------------------- /scripts/dictionary/DZ.json: -------------------------------------------------------------------------------- 1 | {"Z": {"MEANINGS": {"2": ["Noun", "the 26th letter of the Roman alphabet", ["Letter", "Letter of the alphabet", "Alphabetic character"], ["the British call Z zed and the Scots call it ezed but Americans call it zee", "he doesn't know A from izzard"]]}, "ANTONYMS": [], "SYNONYMS": ["Omega", "Izzard", "Zed", "Zee", "Ezed"]}, "ZABAGLIONE": {"MEANINGS": {"1": ["Noun", "light foamy custard-like dessert served hot or chilled", ["Dessert", "Sweet", "Afters"], []]}, "ANTONYMS": [], "SYNONYMS": ["Zabaglione", "Sabayon"]}, "ZABRZE": {"MEANINGS": {"1": ["Noun", "an industrial city in southern Poland", [], []]}, "ANTONYMS": [], "SYNONYMS": ["Zabrze"]}, "ZACHARIAS": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Book of zachariah", "Zechariah", "Zacharias"]}, "ZAFTIG": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Zaftig", "Zoftig", "Buxom"]}, "ZAG": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Zag", "Zigzag", "Zig"]}, "ZAGLOSSUS": {"MEANINGS": {"1": ["Noun", "a genus of Tachyglossidae", ["Mammal genus"], []]}, "ANTONYMS": [], "SYNONYMS": ["Genus zaglossus", "Zaglossus"]}, "ZAGREB": {"MEANINGS": {"1": ["Noun", "the capital of Croatia", [], []]}, "ANTONYMS": [], "SYNONYMS": ["Zagreb"]}, "ZAGS": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Zag", "Zigzag", "Zig"]}, "ZAYIN": {"MEANINGS": {"1": ["Noun", "the 7th letter of the Hebrew alphabet", ["Letter", "Letter of the alphabet", "Alphabetic character"], []]}, "ANTONYMS": [], "SYNONYMS": ["Zayin"]}, "ZAYINS": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Zayin"]}, "ZAIRE": {"MEANINGS": {"1": ["Noun", "the basic unit of money in Zaire", ["Zairese monetary unit"], []]}, "ANTONYMS": [], "SYNONYMS": ["Zaire", "Belgian congo", "Congo", "Democratic republic of the congo"]}, "ZAIREAN": {"MEANINGS": {"1": ["Adjective", "of or relating to or characteristic of Zaire or its people", [], ["Zairean elections"]]}, "ANTONYMS": [], "SYNONYMS": ["Zairese", "Zairean"]}, "ZAIRES": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Zaire", "Belgian congo", "Congo", "Democratic republic of the congo"]}, "ZAKAT": {"MEANINGS": {"1": ["Noun", "the fourth pillar of Islam is almsgiving as an act of worship", ["Charity", "Pillar of islam"], ["the zakat is earmarked for the poor and disabled"]]}, "ANTONYMS": [], "SYNONYMS": ["Zakat"]}, "ZALOPHUS": {"MEANINGS": {"1": ["Noun", "sea lions", ["Mammal genus"], []]}, "ANTONYMS": [], "SYNONYMS": ["Zalophus", "Genus zalophus"]}, "ZAMA": {"MEANINGS": {"1": ["Noun", "the battle in 202 BC in which Scipio decisively defeated Hannibal at the end of the second Punic War", [], []]}, "ANTONYMS": [], "SYNONYMS": ["Zama", "Battle of zama"]}, "ZAMAN": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Zaman", "Albizia saman", "Zamang", "Monkey pod", "Saman"]}, "ZAMANG": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Zaman", "Albizia saman", "Zamang", "Monkey pod", "Saman"]}, "ZAMBEZI": {"MEANINGS": {"1": ["Noun", "an African river; flows into the Indian Ocean", [], []]}, "ANTONYMS": [], "SYNONYMS": ["Zambezi", "Zambezi river"]}, "ZAMBIA": {"MEANINGS": {"1": ["Noun", "a republic in central Africa; formerly controlled by Great Britain and called Northern Rhodesia until it gained independence within the commonwealth in 1964", [], []]}, "ANTONYMS": [], "SYNONYMS": ["Zambia", "Northern rhodesia", "Republic of zambia"]}, "ZAMBIAN": {"MEANINGS": {"1": ["Adjective", "of or relating to or characteristic of Zambia or its people", [], []]}, "ANTONYMS": [], "SYNONYMS": ["Zambian"]}, "ZAMBIANS": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Zambian"]}, "ZAMIA": {"MEANINGS": {"1": ["Noun", "any of various cycads of the genus Zamia; among the smallest and most verdant cycads", ["Cycad"], []]}, "ANTONYMS": [], "SYNONYMS": ["Zamia"]}, "ZAMIACEAE": {"MEANINGS": {"1": ["Noun", "a family of cycads often included in the family Cycadaceae: zamias", ["Gymnosperm family"], []]}, "ANTONYMS": [], "SYNONYMS": ["Family zamiaceae", "Zamiaceae", "Zamia family"]}, "ZAMIAS": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Zamia"]}, "ZANY": {"MEANINGS": {"1": ["Noun", "a buffoon in one of the old comedies; imitates others for ludicrous effect", ["Clown", "Buffoon", "Goof", "Goofball", "Merry andrew"], []]}, "ANTONYMS": [], "SYNONYMS": ["Cockamamie", "Wacky", "Cuckoo", "Goof", "Clownlike"]}, "ZANIER": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Silly", "Buffoonish", "Cockamamy", "Zany", "Clownlike"]}, "ZANIES": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Jackass", "Twat", "Goof", "Zany", "Goofball"]}, "ZANIEST": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Silly", "Buffoonish", "Cockamamy", "Zany", "Clownlike"]}, "ZANNICHELLIA": {"MEANINGS": {"1": ["Noun", "horned pondweed: completely submerged herbs; in some classifications included in Potamogetonaceae", ["Monocot genus", "Liliopsid genus"], []]}, "ANTONYMS": [], "SYNONYMS": ["Genus zannichellia", "Zannichellia"]}, "ZANNICHELLIACEAE": {"MEANINGS": {"1": ["Noun", "alternative classification for some genera included in Potamogetonaceae; one species", ["Monocot family", "Liliopsid family"], []]}, "ANTONYMS": [], "SYNONYMS": ["Family zannichelliaceae", "Zannichelliaceae"]}, "ZANTEDESCHIA": {"MEANINGS": {"1": ["Noun", "calla lily", ["Monocot genus", "Liliopsid genus"], []]}, "ANTONYMS": [], "SYNONYMS": ["Genus zantedeschia", "Zantedeschia"]}, "ZANTHOXYLUM": {"MEANINGS": {"1": ["Noun", "deciduous or evergreen trees or shrubs: prickly ash", ["Rosid dicot genus"], []]}, "ANTONYMS": [], "SYNONYMS": ["Zanthoxylum", "Genus zanthoxylum"]}, "ZANUCK": {"MEANINGS": {"1": ["Noun", "United States filmmaker whose works include the first full-length feature film with sound sequences (1902-1979)", [], []]}, "ANTONYMS": [], "SYNONYMS": ["Zanuck", "Darryl zanuck", "Darryl francis zanuck"]}, "ZANZIBAR": {"MEANINGS": {"1": ["Noun", "an island in the Indian Ocean off the east coast of Africa; part of the United Republic of Tanzania", [], []]}, "ANTONYMS": [], "SYNONYMS": ["Zanzibar"]}, "ZAP": {"MEANINGS": {"1": ["Verb", "strike suddenly and with force", ["Affect", "Impress", "Move", "Strike"], ["This show zaps the viewers with some shocking scenes"]], "2": ["Verb", "kill with or as if with a burst of gunfire or electric current or as if by shooting", ["Kill"], ["in this computer game, space travellers are vaporized by aliens"]]}, "ANTONYMS": [], "SYNONYMS": ["Atomise", "Nuke", "Atomize", "Vaporize", "Zap"]}, "ZAPATA": {"MEANINGS": {"1": ["Noun", "Mexican revolutionary who led a revolt for agrarian reforms (1879-1919)", [], []]}, "ANTONYMS": [], "SYNONYMS": ["Emiliano zapata", "Zapata"]}, "ZAPODIDAE": {"MEANINGS": {"1": ["Noun", "jumping mice", ["Mammal family"], []]}, "ANTONYMS": [], "SYNONYMS": ["Family zapodidae", "Zapodidae"]}, "ZAPOTEC": {"MEANINGS": {"1": ["Adjective", "of or relating to the language or culture of the Zapotec people", [], []], "2": ["Noun", "the language of the Zapotec", ["Uto-aztecan", "Uto-aztecan language"], []]}, "ANTONYMS": [], "SYNONYMS": ["Zapotec", "Zapotecan"]}, "ZAPOTECAN": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Zapotec", "Zapotecan"]}, "ZAPPED": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Atomise", "Nuke", "Atomize", "Vaporize", "Zap"]}, "ZAPPER": {"MEANINGS": {"1": ["Noun", "an electrical device that can injure or kill by means of electric currents", ["Electrical device"], ["a bug zapper"]]}, "ANTONYMS": [], "SYNONYMS": ["Zapper"]}, "ZAPPERS": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Zapper"]}, "ZAPPING": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Atomise", "Nuke", "Atomize", "Vaporize", "Zap"]}, "ZAPS": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Atomise", "Nuke", "Atomize", "Vaporize", "Zap"]}, "ZAPUS": {"MEANINGS": {"1": ["Noun", "type genus of the Zapodidae", ["Mammal genus"], []]}, "ANTONYMS": [], "SYNONYMS": ["Zapus", "Genus zapus"]}, "ZARAGOZA": {"MEANINGS": {"1": ["Noun", "an ancient city on the Ebro River in northeastern Spain; formerly the capital of Aragon", [], []]}, "ANTONYMS": [], "SYNONYMS": ["Zaragoza", "Saragossa"]}, "ZARATHUSTRA": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Zoroaster", "Zarathustra"]}, "ZARF": {"MEANINGS": {"1": ["Noun", "an ornamental metal cup-shaped holder for a hot coffee cup", ["Holder"], []]}, "ANTONYMS": [], "SYNONYMS": ["Zarf"]}, "ZARFS": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Zarf"]}, "ZARIA": {"MEANINGS": {"1": ["Noun", "a city in north central Nigeria; agricultural trading center", [], []]}, "ANTONYMS": [], "SYNONYMS": ["Zaria"]}, "ZARPANIT": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Sarpanitu", "Zirbanit", "Zarpanit"]}, "Z-AXIS": {"MEANINGS": {"1": ["Noun", "the third axis in a 3-dimensional coordinate system", ["Coordinate axis"], []]}, "ANTONYMS": [], "SYNONYMS": ["Z-axis"]}, "ZB": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Zbit", "Zib", "Zettabyte", "Zebibyte", "Zb"]}, "ZEA": {"MEANINGS": {"1": ["Noun", "corn", ["Monocot genus", "Liliopsid genus"], []]}, "ANTONYMS": [], "SYNONYMS": ["Genus zea", "Zea"]}, "ZEAL": {"MEANINGS": {"2": ["Noun", "excessive fervor to do something or accomplish some end", ["Ardor", "Ardour", "Fervor", "Fervour", "Fervency", "Fire", "Fervidness"], ["he had an absolute zeal for litigation"]]}, "ANTONYMS": [], "SYNONYMS": ["Readiness", "Eagerness", "Zeal", "Ardour", "Ardor"]}, "ZEALAND": {"MEANINGS": {"1": ["Noun", "the largest island of Denmark and the site of Copenhagen", [], []]}, "ANTONYMS": [], "SYNONYMS": ["Sjaelland", "Zealand", "Seeland"]}, "ZEALANDER": {"MEANINGS": {"1": ["Noun", "a native or inhabitant of Zealand", ["Dane"], []]}, "ANTONYMS": [], "SYNONYMS": ["Zealander"]}, "ZEALANDERS": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Zealander"]}, "ZEALOT": {"MEANINGS": {"1": ["Noun", "a member of an ancient Jewish sect in Judea in the first century who fought to the death against the Romans and who killed or persecuted Jews who collaborated with the Romans", ["Jew", "Hebrew", "Israelite"], []]}, "ANTONYMS": ["nonpartisan"], "SYNONYMS": ["Zealot", "Drumbeater", "Partisan"]}, "ZEALOTRY": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Fanatism", "Zealotry", "Fanaticism"]}, "ZEALOTRIES": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Fanatism", "Zealotry", "Fanaticism"]}, "ZEALOTS": {"MEANINGS": {}, "ANTONYMS": ["nonpartisan"], "SYNONYMS": ["Zealot", "Drumbeater", "Partisan"]}, "ZEALOUS": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Avid", "Zealous"]}, "ZEALOUSLY": {"MEANINGS": {"1": ["Adverb", "in a zealous manner", [], ["she worked zealously to raise funds for the literacy project"]]}, "ANTONYMS": [], "SYNONYMS": ["Zealously"]}, "ZEALS": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Readiness", "Eagerness", "Zeal", "Ardour", "Ardor"]}, "ZEAXANTHIN": {"MEANINGS": {"1": ["Noun", "yellow carotenoid (isomeric with lutein and occurs widely with it) that is the main pigment in yellow Indian corn", ["Carotenoid"], []]}, "ANTONYMS": [], "SYNONYMS": ["Zeaxanthin"]}, "ZEBRA": {"MEANINGS": {"1": ["Noun", "any of several fleet black-and-white striped African equines", ["Equine", "Equid"], []]}, "ANTONYMS": [], "SYNONYMS": ["Zebra"]}, "ZEBRAS": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Zebra"]}, "ZEBRASS": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Zebra"]}, "ZEBRASSES": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Zebra"]}, "ZEBRAWOOD": {"MEANINGS": {"1": ["Noun", "handsomely striped or mottled wood of the zebrawood tree; used especially for cabinetwork", ["Wood"], []], "2": ["Noun", "any of various trees or shrubs having mottled or striped wood", ["Tree"], []]}, "ANTONYMS": [], "SYNONYMS": ["Zebrawood tree", "Zebrawood"]}, "ZEBU": {"MEANINGS": {"1": ["Noun", "domesticated ox having a humped back and long horns and a large dewlap; used chiefly as a draft animal in India and east Asia", ["Brahman", "Brahma", "Brahmin", "Bos indicus"], []]}, "ANTONYMS": [], "SYNONYMS": ["Zebu"]}, "ZEBUS": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Zebu"]}, "ZECHARIAH": {"MEANINGS": {"1": ["Noun", "a Hebrew minor prophet of the late 6th century BC", [], []], "2": ["Noun", "an Old Testament book telling the prophecies of Zechariah which are concerned mainly with the renewal of Israel after the Babylonian Captivity", [], []]}, "ANTONYMS": [], "SYNONYMS": ["Book of zachariah", "Zechariah", "Zacharias"]}, "ZED": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Z", "Izzard", "Zed", "Zee", "Ezed"]}, "ZEDS": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Z", "Izzard", "Zed", "Zee", "Ezed"]}, "ZEE": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Z", "Izzard", "Zed", "Zee", "Ezed"]}, "ZEEMAN": {"MEANINGS": {"1": ["Noun", "Dutch physicist honored for his research on the influence of magnetism on radiation which showed that light is radiated by the motion of charged particles in an atom (1865-1943)", [], []]}, "ANTONYMS": [], "SYNONYMS": ["Zeeman", "Pieter zeeman"]}, "ZEES": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Z", "Izzard", "Zed", "Zee", "Ezed"]}, "ZEIDAE": {"MEANINGS": {"1": ["Noun", "a family of fish in the order Zeomorphi", ["Fish family"], []]}, "ANTONYMS": [], "SYNONYMS": ["Family zeidae", "Zeidae"]}, "ZEITGEIST": {"MEANINGS": {"1": ["Noun", "the spirit of the time; the spirit characteristic of an age or generation", ["Spirit", "Tone", "Feel", "Feeling", "Flavor", "Flavour", "Look", "Smell"], []]}, "ANTONYMS": [], "SYNONYMS": ["Zeitgeist"]}, "ZEITGEISTS": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Zeitgeist"]}, "ZEN": {"MEANINGS": {"1": ["Noun", "school of Mahayana Buddhism asserting that enlightenment can come through meditation and intuition rather than faith; China and Japan", ["Buddhism"], []], "2": ["Noun", "a Buddhist doctrine that enlightenment can be attained through direct intuitive insight", ["Buddhism"], []]}, "ANTONYMS": [], "SYNONYMS": ["Battery-acid", "Superman", "Loony toons", "Pane", "Zen"]}, "ZENAIDURA": {"MEANINGS": {"1": ["Noun", "mourning doves", ["Bird genus"], []]}, "ANTONYMS": [], "SYNONYMS": ["Zenaidura", "Genus zenaidura"]}, "ZEND": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Zend", "Avestan"]}, "ZEND-AVESTA": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Avesta", "Zend-avesta"]}, "ZENITH": {"MEANINGS": {"1": ["Noun", "the point above the observer that is directly opposite the nadir on the imaginary sphere against which celestial bodies appear to be projected", ["Celestial point"], []]}, "ANTONYMS": ["nadir"], "SYNONYMS": ["Zenith"]}, "ZENITHAL": {"MEANINGS": {"1": ["Adjective", "relating to or located at or near the zenith", [], []]}, "ANTONYMS": [], "SYNONYMS": ["Zenithal"]}, "ZENITHS": {"MEANINGS": {}, "ANTONYMS": ["nadir"], "SYNONYMS": ["Zenith"]}, "ZENO": {"MEANINGS": {"1": ["Noun", "ancient Greek philosopher who formulated paradoxes that defended the belief that motion and change are illusory (circa 495-430 BC)", [], []], "2": ["Noun", "ancient Greek philosopher who founded the Stoic school (circa 335-263 BC)", [], []]}, "ANTONYMS": [], "SYNONYMS": ["Zeno of citium", "Zeno", "Zeno of elea"]}, "ZEOLITE": {"MEANINGS": {"1": ["Noun", "any of a family of glassy minerals analogous to feldspar containing hydrated aluminum silicates of calcium or sodium or potassium; formed in cavities in lava flows and in plutonic rocks", ["Mineral", "Water softener"], []]}, "ANTONYMS": [], "SYNONYMS": ["Zeolite"]}, "ZEOLITES": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Zeolite"]}, "ZEP": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Hoagie", "Hoagy", "Italian sandwich", "Zep", "Wedge"]}, "ZEPHANIAH": {"MEANINGS": {"1": ["Noun", "a Hebrew minor prophet of the late 7th century BC", [], []], "2": ["Noun", "an Old Testament book telling the prophecies of Zephaniah which are concerned mainly with the approaching judgment by God upon the sinners of Judah", [], []]}, "ANTONYMS": [], "SYNONYMS": ["Sophonias", "Book of zephaniah", "Zephaniah"]}, "ZEPHYR": {"MEANINGS": {"2": ["Noun", "(Greek mythology) the Greek god of the west wind", [], []]}, "ANTONYMS": [], "SYNONYMS": ["Zephyr", "Air", "Gentle wind", "Breeze"]}, "ZEPHYRS": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Zephyr", "Air", "Gentle wind", "Breeze"]}, "ZEPPELIN": {"MEANINGS": {"1": ["Noun", "German inventor who designed and built the first rigid motorized dirigible (1838-1917)", [], []], "2": ["Noun", "a large rigid dirigible designed to carry passengers or bombs", [], []]}, "ANTONYMS": [], "SYNONYMS": ["Graf zeppelin", "Count ferdinand von zeppelin", "Zeppelin"]}, "ZEPPELINS": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Graf zeppelin", "Count ferdinand von zeppelin", "Zeppelin"]}, "ZERO": {"MEANINGS": {"2": ["Adjective", "having no measurable or otherwise determinable value", [], ["the goal is zero population growth"]], "3": ["Adjective", "indicating an initial point or origin", [], []], "4": ["Adjective", "of or relating to the null set (a set with no members)", [], []], "1": ["Adjective", "indicating the absence of any or all units under consideration", [], ["a zero score"]]}, "ANTONYMS": [], "SYNONYMS": ["Nada", "Naught", "Goose egg", "Cipher", "Cypher"]}, "ZEROED": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Zero", "Zero in"]}, "ZEROES": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Nada", "Naught", "Goose egg", "Cipher", "Cypher"]}, "ZEROING": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Zero", "Zero in"]}, "ZEROS": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Nada", "Naught", "Goose egg", "Cipher", "Cypher"]}, "ZEROTH": {"MEANINGS": {"1": ["Adjective", "preceding even the first", [], []]}, "ANTONYMS": [], "SYNONYMS": ["Zeroth"]}, "ZEST": {"MEANINGS": {"1": ["Verb", "add herbs or spices to", ["Season", "Flavor", "Flavour"], []]}, "ANTONYMS": [], "SYNONYMS": ["Tang", "Piquance", "Gusto", "Piquantness", "Tanginess"]}, "ZESTED": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Zest", "Spice", "Spice up"]}, "ZESTFUL": {"MEANINGS": {"1": ["Adjective", "marked by spirited enjoyment", [], []]}, "ANTONYMS": [], "SYNONYMS": ["Zestful", "Yeasty", "Zesty", "Barmy"]}, "ZESTFULLY": {"MEANINGS": {"1": ["Adverb", "with zest", [], ["she scrubbed the floors of the new apartment zestfully"]]}, "ANTONYMS": [], "SYNONYMS": ["Zestily", "Zestfully"]}, "ZESTFULNESS": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Zest", "Zestfulness", "Gusto", "Relish"]}, "ZESTFULNESSES": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Zest", "Zestfulness", "Gusto", "Relish"]}, "ZESTY": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Zestful", "Spicy", "Piquant", "Savoury", "Savory"]}, "ZESTING": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Zest", "Spice", "Spice up"]}, "ZESTS": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Tang", "Piquance", "Gusto", "Piquantness", "Tanginess"]}, "ZETA": {"MEANINGS": {"1": ["Noun", "the 6th letter of the Greek alphabet", ["Letter", "Letter of the alphabet", "Alphabetic character"], []]}, "ANTONYMS": [], "SYNONYMS": ["Zeta"]}, "ZETAS": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Zeta"]}, "ZETLAND": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Shetland islands", "Shetland", "Zetland"]}, "ZEUGMA": {"MEANINGS": {"1": ["Noun", "use of a word to govern two or more words though appropriate to only one", ["Trope", "Figure of speech", "Figure", "Image"], ["`Mr. Pickwick took his hat and his leave' is an example of zeugma"]]}, "ANTONYMS": [], "SYNONYMS": ["Zeugma"]}, "ZEUGMAS": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Zeugma"]}, "ZEUS": {"MEANINGS": {"1": ["Noun", "(Greek mythology) the supreme god of ancient Greek mythology; son of Rhea and Cronus whom he dethroned; husband and brother of Hera; brother of Poseidon and Hades; father of many gods; counterpart of Roman Jupiter", [], []], "2": ["Noun", "type genus of the family Zeidae", ["Fish genus"], []]}, "ANTONYMS": [], "SYNONYMS": ["Zeus", "Genus zeus"]}, "ZHUKOV": {"MEANINGS": {"1": ["Noun", "Soviet general who during World Warr II directed the counteroffensive at Stalingrad and relieved Leningrad and captured Berlin (1896-1974)", [], []]}, "ANTONYMS": [], "SYNONYMS": ["Zhukov", "Georgi zhukov", "Georgi konstantinovich zhukov"]}, "ZYDECO": {"MEANINGS": {"1": ["Noun", "music of southern Louisiana that combines French dance melodies with Caribbean music and blues", ["Country music", "Country and western", "C and w"], []]}, "ANTONYMS": [], "SYNONYMS": ["Zydeco"]}, "ZYDECOS": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Zydeco"]}, "ZIEGFELD": {"MEANINGS": {"1": ["Noun", "United States theatrical producer noted for a series of extravagant revues known as the Ziegfeld Follies (1869-1932)", [], []]}, "ANTONYMS": [], "SYNONYMS": ["Florenz ziegfeld", "Flo ziegfeld", "Ziegfeld"]}, "ZIEGLER": {"MEANINGS": {"1": ["Noun", "German chemist honored for his research on polymers (1898-1973)", [], []]}, "ANTONYMS": [], "SYNONYMS": ["Ziegler", "Karl waldemar ziegler"]}, "ZIG": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Zag", "Zigzag", "Zig"]}, "ZIGGURAT": {"MEANINGS": {"1": ["Noun", "a rectangular tiered temple or terraced mound erected by the ancient Assyrians and Babylonians", ["Temple"], []]}, "ANTONYMS": [], "SYNONYMS": ["Ziggurat", "Zikkurat", "Zikurat"]}, "ZIGGURATS": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Ziggurat", "Zikkurat", "Zikurat"]}, "ZYGNEMA": {"MEANINGS": {"1": ["Noun", "type genus of the family Zygnemataceae", ["Protoctist genus"], []]}, "ANTONYMS": [], "SYNONYMS": ["Zygnema", "Genus zygnema"]}, "ZYGNEMALES": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Zygnematales", "Order zygnematales", "Order zygnemales", "Zygnemales"]}, "ZYGNEMATACEAE": {"MEANINGS": {"1": ["Noun", "pond scums: common freshwater algae forming green slimy masses", ["Protoctist family"], []]}, "ANTONYMS": [], "SYNONYMS": ["Zygnemataceae", "Family zygnemataceae"]}, "ZYGNEMATALES": {"MEANINGS": {"1": ["Noun", "pond scums; desmids", ["Animal order"], []]}, "ANTONYMS": [], "SYNONYMS": ["Zygnematales", "Order zygnematales", "Order zygnemales", "Zygnemales"]}, "ZYGOCACTUS": {"MEANINGS": {"1": ["Noun", "small genus of Brazilian cacti having flat fleshy usually branched joints and showy red or pink flowers followed by red fleshy fruits", ["Caryophylloid dicot genus"], []]}, "ANTONYMS": [], "SYNONYMS": ["Genus zygocactus", "Zygocactus"]}, "ZYGODACTYL": {"MEANINGS": {"1": ["Adjective", "(of bird feet) having the first and fourth toes directed backward the second and third forward", [], []]}, "ANTONYMS": ["heterodactyl"], "SYNONYMS": ["Zygodactyl"]}, "ZYGOMA": {"MEANINGS": {"1": ["Noun", "the slender arch formed by the temporal process of the cheekbone that bridges to the zygomatic process of the temporal bone", ["Bone", "Os"], []]}, "ANTONYMS": [], "SYNONYMS": ["Arcus zygomaticus", "Zygomatic arch", "Zygoma"]}, "ZYGOMAS": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Arcus zygomaticus", "Zygomatic arch", "Zygoma"]}, "ZYGOMATIC": {"MEANINGS": {"1": ["Adjective", "of or relating to the cheek region of the face", [], []]}, "ANTONYMS": [], "SYNONYMS": ["Malar", "Zygomatic bone", "Cheekbone", "Malar bone", "Os zygomaticum"]}, "ZYGOMYCETES": {"MEANINGS": {"1": ["Noun", "class of fungi coextensive with subdivision Zygomycota", ["Class"], []]}, "ANTONYMS": [], "SYNONYMS": ["Class zygomycetes", "Zygomycetes"]}, "ZYGOMORPHIC": {"MEANINGS": {"1": ["Adjective", "capable of division into symmetrical halves by only one longitudinal plane passing through the axis", [], []]}, "ANTONYMS": ["actinomorphic"], "SYNONYMS": ["Zygomorphous", "Bilaterally symmetrical", "Zygomorphic"]}, "ZYGOMORPHOUS": {"MEANINGS": {}, "ANTONYMS": ["actinomorphic"], "SYNONYMS": ["Zygomorphous", "Bilaterally symmetrical", "Zygomorphic"]}, "ZYGOPHYLLACEAE": {"MEANINGS": {"1": ["Noun", "small trees, shrubs, and herbs of warm arid and saline regions; often resinous; some poisonous: genera Zygophyllum, Tribulus, Guaiacum, Larrea", ["Rosid dicot family"], []]}, "ANTONYMS": [], "SYNONYMS": ["Zygophyllaceae", "Bean-caper family", "Family zygophyllaceae"]}, "ZYGOPHYLLUM": {"MEANINGS": {"1": ["Noun", "usually tropical herbs or shrubs having ill-smelling foliage and flower buds that are used as capers: bean capers", ["Rosid dicot genus"], []]}, "ANTONYMS": [], "SYNONYMS": ["Zygophyllum", "Genus zygophyllum"]}, "ZYGOPTERA": {"MEANINGS": {"1": ["Noun", "damselflies", ["Animal order"], []]}, "ANTONYMS": [], "SYNONYMS": ["Suborder zygoptera", "Zygoptera"]}, "ZYGOSPORE": {"MEANINGS": {"1": ["Noun", "a plant spore formed by two similar sexual cells", ["Spore"], []]}, "ANTONYMS": [], "SYNONYMS": ["Zygospore"]}, "ZYGOTE": {"MEANINGS": {"1": ["Noun", "(genetics) the diploid cell resulting from the union of a haploid spermatozoon and ovum (including the organism that develops from that cell)", ["Cell"], []]}, "ANTONYMS": [], "SYNONYMS": ["Fertilized ovum", "Zygote"]}, "ZYGOTENE": {"MEANINGS": {"1": ["Noun", "the second stage of the prophase of meiosis", ["Phase", "Stage"], []]}, "ANTONYMS": [], "SYNONYMS": ["Zygotene"]}, "ZYGOTENES": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Zygotene"]}, "ZYGOTES": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Fertilized ovum", "Zygote"]}, "ZYGOTIC": {"MEANINGS": {"1": ["Adjective", "of or relating to a zygote", [], []]}, "ANTONYMS": [], "SYNONYMS": ["Zygotic"]}, "ZIGS": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Zag", "Zigzag", "Zig"]}, "ZIGZAG": {"MEANINGS": {"1": ["Adverb", "in a zigzag course or on a zigzag path", [], ["birds flew zigzag across the blue sky"]]}, "ANTONYMS": [], "SYNONYMS": ["Crank", "Zag", "Zig", "Zigzag", "Zig-zag"]}, "ZIGZAGGED": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Zigzag", "Crank"]}, "ZIGZAGGING": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Zigzag", "Crank"]}, "ZIGZAGS": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Zag", "Zigzag", "Crank", "Zig"]}, "ZIKKURAT": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Ziggurat", "Zikkurat", "Zikurat"]}, "ZIKKURATS": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Ziggurat", "Zikkurat", "Zikurat"]}, "ZIKURAT": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Ziggurat", "Zikkurat", "Zikurat"]}, "ZIKURATS": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Ziggurat", "Zikkurat", "Zikurat"]}, "ZILCH": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Nada", "Naught", "Goose egg", "Cipher", "Cypher"]}, "ZILCHES": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Nada", "Naught", "Goose egg", "Cipher", "Cypher"]}, "ZILL": {"MEANINGS": {"1": ["Noun", "one of a pair of small metallic cymbals worn on the thumb and middle finger; used in belly dancing in rhythm with the dance", ["Cymbal"], []]}, "ANTONYMS": [], "SYNONYMS": ["Zill"]}, "ZILLION": {"MEANINGS": {"1": ["Adjective", "very large indeterminate number", [], ["a zillion people were there"]]}, "ANTONYMS": [], "SYNONYMS": ["Trillion", "Billion", "Zillion", "Gazillion", "Jillion"]}, "ZILLIONS": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Trillion", "Billion", "Zillion", "Gazillion", "Jillion"]}, "ZILLS": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Zill"]}, "ZYMASE": {"MEANINGS": {"1": ["Noun", "a complex of enzymes that cause glycolysis; originally found in yeast but also present in higher organisms", ["Enzyme"], []]}, "ANTONYMS": [], "SYNONYMS": ["Zymase"]}, "ZYMASES": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Zymase"]}, "ZIMBABWE": {"MEANINGS": {"1": ["Noun", "a landlocked republic in south central Africa formerly called Rhodesia; achieved independence from the United Kingdom in 1980", [], []]}, "ANTONYMS": [], "SYNONYMS": ["Southern rhodesia", "Rhodesia", "Zimbabwe", "Republic of zimbabwe"]}, "ZIMBALIST": {"MEANINGS": {"1": ["Noun", "United States violinist (born in Russia) (1889-1985)", [], []]}, "ANTONYMS": [], "SYNONYMS": ["Zimbalist", "Efrem zimbalist"]}, "ZIMMER": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Zimmer", "Walker", "Zimmer frame"]}, "ZYMOGEN": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Zymogen", "Proenzyme"]}, "ZYMOGENS": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Zymogen", "Proenzyme"]}, "ZYMOID": {"MEANINGS": {"1": ["Adjective", "resembling an enzyme", [], []]}, "ANTONYMS": [], "SYNONYMS": ["Zymoid"]}, "ZYMOLYSIS": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Zymosis", "Fermenting", "Ferment", "Fermentation", "Zymolysis"]}, "ZYMOLYTIC": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Zymolytic", "Zymotic"]}, "ZYMOLOGY": {"MEANINGS": {"1": ["Noun", "the branch of chemistry concerned with fermentation (as in making wine or brewing or distilling)", ["Biochemistry"], []]}, "ANTONYMS": [], "SYNONYMS": ["Zymology", "Zymurgy"]}, "ZYMOLOGIES": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Zymology", "Zymurgy"]}, "ZYMOSIS": {"MEANINGS": {"1": ["Noun", "a process in which an agent causes an organic substance to break down into simpler substances; especially, the anaerobic breakdown of sugar into alcohol", ["Chemical process", "Chemical change", "Chemical action"], []], "2": ["Noun", "(medicine) the development and spread of an infectious disease (especially one caused by a fungus)", ["Infection"], []]}, "ANTONYMS": [], "SYNONYMS": ["Zymosis", "Fermenting", "Ferment", "Fermentation", "Zymolysis"]}, "ZYMOTIC": {"MEANINGS": {"1": ["Adjective", "of or relating to or causing fermentation", [], []], "2": ["Adjective", "relating to or caused by infection", [], []]}, "ANTONYMS": [], "SYNONYMS": ["Zymolytic", "Zymotic"]}, "ZYMURGY": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Zymology", "Zymurgy"]}, "ZYMURGIES": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Zymology", "Zymurgy"]}, "ZINC": {"MEANINGS": {"1": ["Verb", "coat or cover with zinc", ["Coat", "Surface"], []]}, "ANTONYMS": [], "SYNONYMS": ["Zn", "Atomic number 30", "Zinc"]}, "ZINCED": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Zinc"]}, "ZINCING": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Zinc"]}, "ZINCS": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Zn", "Atomic number 30", "Zinc"]}, "ZINFANDEL": {"MEANINGS": {"1": ["Noun", "small black grape grown chiefly in California; transplanted from Europe", ["Vinifera", "Vinifera grape", "Common grape vine", "Vitis vinifera"], []], "2": ["Noun", "dry fruity red wine from California", ["Red wine"], []]}, "ANTONYMS": [], "SYNONYMS": ["Zinfandel"]}, "ZING": {"MEANINGS": {"1": ["Noun", "a brief high-pitched buzzing or humming sound", ["Sound"], ["the zing of the passing bullet"]]}, "ANTONYMS": [], "SYNONYMS": ["Pizzazz", "Oomph", "Dynamism", "Zing", "Pizzaz"]}, "ZINGER": {"MEANINGS": {"1": ["Noun", "a striking or amusing or caustic remark", ["Remark", "Comment", "Input"], ["he always greeted me with a new zinger", "she tried to think of some killer of an argument, a real zinger that would disarm all opposition"]]}, "ANTONYMS": [], "SYNONYMS": ["Zinger"]}, "ZINGERS": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Zinger"]}, "ZINGIBER": {"MEANINGS": {"1": ["Noun", "tropical Asiatic and Polynesian perennial plants: ginger", ["Monocot genus", "Liliopsid genus"], []]}, "ANTONYMS": [], "SYNONYMS": ["Genus zingiber", "Zingiber"]}, "ZINGIBERACEAE": {"MEANINGS": {"1": ["Noun", "a family of tropical monocotyledonous plants of order Musales", ["Monocot family", "Liliopsid family"], []]}, "ANTONYMS": [], "SYNONYMS": ["Zingiberaceae", "Family zingiberaceae", "Ginger family"]}, "ZINGS": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Pizzazz", "Oomph", "Dynamism", "Zing", "Pizzaz"]}, "ZINJANTHROPUS": {"MEANINGS": {"1": ["Noun", "genus to which Australopithecus boisei was formerly assigned", ["Australopithecine"], []]}, "ANTONYMS": [], "SYNONYMS": ["Zinjanthropus", "Genus zinjanthropus"]}, "ZINKENITE": {"MEANINGS": {"1": ["Noun", "a steel grey metallic mineral (a sulphide of lead and antimony)", ["Mineral"], []]}, "ANTONYMS": [], "SYNONYMS": ["Zinkenite"]}, "ZINNIA": {"MEANINGS": {"1": ["Noun", "any of various plants of the genus Zinnia cultivated for their variously and brightly colored flower heads", ["Flower"], []]}, "ANTONYMS": [], "SYNONYMS": ["Old maid flower", "Zinnia", "Old maid"]}, "ZINNIAS": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Old maid flower", "Zinnia", "Old maid"]}, "ZINNWALDITE": {"MEANINGS": {"1": ["Noun", "a mica containing iron and lithium", ["Mica", "Isinglass"], []]}, "ANTONYMS": [], "SYNONYMS": ["Zinnwaldite"]}, "ZINSSER": {"MEANINGS": {"1": ["Noun", "United States bacteriologist who helped develop immunization against typhus fever (1878-1940)", [], []]}, "ANTONYMS": [], "SYNONYMS": ["Zinsser", "Hans zinsser"]}, "ZINZENDORF": {"MEANINGS": {"1": ["Noun", "German theologian (1700-1760)", [], []]}, "ANTONYMS": [], "SYNONYMS": ["Count nikolaus ludwig von zinzendorf", "Zinzendorf"]}, "ZION": {"MEANINGS": {"1": ["Noun", "originally a stronghold captured by David (the 2nd king of the Israelites); above it was built a temple and later the name extended to the whole hill; finally it became a synonym for the city of Jerusalem", [], ["the inhabitants of Jerusalem are personified as `the daughter of Zion'"]]}, "ANTONYMS": [], "SYNONYMS": ["Utopia", "Sion", "Yisrael", "Zion", "Israel"]}, "ZIONISM": {"MEANINGS": {"1": ["Noun", "a policy for establishing and developing a national homeland for Jews in Palestine", ["Policy"], []], "2": ["Noun", "a movement of world Jewry that arose late in the 19th century with the aim of creating a Jewish state in Palestine", ["Movement", "Social movement", "Front"], []]}, "ANTONYMS": [], "SYNONYMS": ["Zionism", "Zionist movement"]}, "ZIONIST": {"MEANINGS": {"1": ["Adjective", "relating to or characteristic of Zionism", [], ["the Zionist movement"]], "2": ["Adjective", "relating to or characteristic of a supporter of Zionism", [], ["the Zionist leader Theodor Herzl"]]}, "ANTONYMS": [], "SYNONYMS": ["Zionist"]}, "ZIONISTS": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Zionist"]}, "ZIP": {"MEANINGS": {}, "ANTONYMS": ["unzip"], "SYNONYMS": ["Nada", "Zip fastener", "Speed", "Aught", "Nix"]}, "ZIPHIIDAE": {"MEANINGS": {"1": ["Noun", "beaked whales; in some especially former classifications included in the family Physeteridae", ["Mammal family"], []]}, "ANTONYMS": [], "SYNONYMS": ["Family hyperodontidae", "Ziphiidae", "Family ziphiidae", "Hyperodontidae"]}, "ZIPPED": {"MEANINGS": {}, "ANTONYMS": ["unzip"], "SYNONYMS": ["Zip up", "Speed", "Zip", "Zipper", "Hurry"]}, "ZIPPER": {"MEANINGS": {}, "ANTONYMS": ["unzip"], "SYNONYMS": ["Zip fastener", "Zip up", "Slide fastener", "Zip", "Zipper"]}, "ZIPPERED": {"MEANINGS": {}, "ANTONYMS": ["unzip"], "SYNONYMS": ["Zip", "Zipper", "Zip up"]}, "ZIPPERING": {"MEANINGS": {}, "ANTONYMS": ["unzip"], "SYNONYMS": ["Zip", "Zipper", "Zip up"]}, "ZIPPERS": {"MEANINGS": {}, "ANTONYMS": ["unzip"], "SYNONYMS": ["Zip fastener", "Zip up", "Slide fastener", "Zip", "Zipper"]}, "ZIPPY": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Merry", "Snappy", "Bouncing", "Spirited", "Rattling"]}, "ZIPPIER": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Merry", "Snappy", "Bouncing", "Spirited", "Rattling"]}, "ZIPPIEST": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Merry", "Snappy", "Bouncing", "Spirited", "Rattling"]}, "ZIPPING": {"MEANINGS": {}, "ANTONYMS": ["unzip"], "SYNONYMS": ["Zip up", "Speed", "Zip", "Zipper", "Hurry"]}, "ZIPS": {"MEANINGS": {}, "ANTONYMS": ["unzip"], "SYNONYMS": ["Nada", "Zip fastener", "Speed", "Aught", "Nix"]}, "ZIRBANIT": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Sarpanitu", "Zirbanit", "Zarpanit"]}, "ZIRCON": {"MEANINGS": {"1": ["Noun", "a common mineral occurring in small crystals; chief source of zirconium; used as a refractory when opaque and as a gem when transparent", ["Mineral"], []]}, "ANTONYMS": [], "SYNONYMS": ["Zirconium silicate", "Zircon"]}, "ZIRCONIA": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Zirconia", "Zirconium oxide", "Zirconium dioxide"]}, "ZIRCONIAS": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Zirconia", "Zirconium oxide", "Zirconium dioxide"]}, "ZIRCONIUM": {"MEANINGS": {"1": ["Noun", "a lustrous grey strong metallic element resembling titanium; it is used in nuclear reactors as a neutron absorber; it occurs in baddeleyite but is obtained chiefly from zircon", ["Metallic element", "Metal"], []]}, "ANTONYMS": [], "SYNONYMS": ["Atomic number 40", "Zr", "Zirconium"]}, "ZIRCONIUMS": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Atomic number 40", "Zr", "Zirconium"]}, "ZIRCONS": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Zirconium silicate", "Zircon"]}, "ZYRIAN": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Zyrian", "Komi"]}, "ZIT": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Zit", "Hickey", "Pimple"]}, "ZITHER": {"MEANINGS": {"1": ["Noun", "a musical stringed instrument with strings stretched over a flat sounding board; it is laid flat and played with a plectrum and with fingers", ["Stringed instrument"], []]}, "ANTONYMS": [], "SYNONYMS": ["Cither", "Zithern", "Zither"]}, "ZITHERN": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Cither", "Zithern", "Zither"]}, "ZITHERNS": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Cither", "Zithern", "Zither"]}, "ZITHERS": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Cither", "Zithern", "Zither"]}, "ZITI": {"MEANINGS": {"1": ["Noun", "medium-sized tubular pasta in short pieces", ["Pasta", "Alimentary paste"], []]}, "ANTONYMS": [], "SYNONYMS": ["Ziti"]}, "ZITIS": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Ziti"]}, "ZITS": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Zit", "Hickey", "Pimple"]}, "ZIZANIA": {"MEANINGS": {"1": ["Noun", "wild rice", ["Monocot genus", "Liliopsid genus"], []]}, "ANTONYMS": [], "SYNONYMS": ["Genus zizania", "Zizania"]}, "ZIZZ": {"MEANINGS": {"1": ["Noun", "a buzzing or whizzing sound", ["Sound"], ["a nasty zizz in the engine"]], "2": ["Noun", "a nap", ["Nap", "Catnap", "Cat sleep", "Forty winks", "Short sleep", "Snooze"], ["Arthur's taking a short zizz"]]}, "ANTONYMS": [], "SYNONYMS": ["Zizz"]}, "ZLOTY": {"MEANINGS": {"1": ["Noun", "the basic unit of money in Poland", ["Polish monetary unit"], []]}, "ANTONYMS": [], "SYNONYMS": ["Zloty"]}, "ZLOTIES": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Zloty"]}, "ZLOTYS": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Zloty"]}, "ZN": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Zn", "Atomic number 30", "Zinc"]}, "ZOANTHROPY": {"MEANINGS": {"1": ["Noun", "the delusion that you have assumed the form of an animal", ["Delusion", "Psychotic belief"], []]}, "ANTONYMS": [], "SYNONYMS": ["Zoanthropy"]}, "ZOARCES": {"MEANINGS": {"1": ["Noun", "type genus of the Zoarcidae", ["Fish genus"], []]}, "ANTONYMS": [], "SYNONYMS": ["Zoarces", "Genus zoarces"]}, "ZOARCIDAE": {"MEANINGS": {"1": ["Noun", "eelpouts", ["Fish family"], []]}, "ANTONYMS": [], "SYNONYMS": ["Family zoarcidae", "Zoarcidae"]}, "ZODIAC": {"MEANINGS": {"1": ["Noun", "a belt-shaped region in the heavens on either side to the ecliptic; divided into 12 constellations or signs for astrological purposes", ["Region", "Part"], []], "2": ["Noun", "(astrology) a circular diagram representing the 12 zodiacal constellations and showing their signs", ["Diagram"], []]}, "ANTONYMS": [], "SYNONYMS": ["Zodiac"]}, "ZODIACAL": {"MEANINGS": {"1": ["Adjective", "relating to or included in the zodiac", [], ["zodiacal constellations"]]}, "ANTONYMS": [], "SYNONYMS": ["Zodiacal"]}, "ZODIACS": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Zodiac"]}, "ZOFTIG": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Zaftig", "Zoftig", "Buxom"]}, "ZOIC": {"MEANINGS": {"1": ["Adjective", "pertaining to animals or animal life or action", [], []]}, "ANTONYMS": [], "SYNONYMS": ["Zoic"]}, "ZOYSIA": {"MEANINGS": {"1": ["Noun", "any of several creeping grasses of the genus Zoysia", ["Grass"], []]}, "ANTONYMS": [], "SYNONYMS": ["Zoysia"]}, "ZOYSIAS": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Zoysia"]}, "ZOLA": {"MEANINGS": {"1": ["Noun", "French novelist and critic; defender of Dreyfus (1840-1902)", [], []]}, "ANTONYMS": [], "SYNONYMS": ["Zola", "Emile zola"]}, "ZOLAESQUE": {"MEANINGS": {"1": ["Adjective", "in the manner of Emile Zola", [], []]}, "ANTONYMS": [], "SYNONYMS": ["Zolaesque"]}, "ZOMBA": {"MEANINGS": {"1": ["Noun", "a city in southern Malawi; was the capital until 1971", [], []]}, "ANTONYMS": [], "SYNONYMS": ["Zomba"]}, "ZOMBI": {"MEANINGS": {"1": ["Noun", "(voodooism) a spirit or supernatural force that reanimates a dead body", ["Spirit", "Disembodied spirit"], []], "2": ["Noun", "a god of voodoo cults of African origin worshipped especially in West Indies", ["Deity", "Divinity", "God", "Immortal"], []], "3": ["Noun", "a dead body that has been brought back to life by a supernatural force", ["Dead person", "Dead soul", "Deceased person", "Deceased", "Decedent", "Departed"], []]}, "ANTONYMS": [], "SYNONYMS": ["Living dead", "Zombie spirit", "Zombi", "Snake god", "Zombi spirit"]}, "ZOMBIE": {"MEANINGS": {"5": ["Noun", "several kinds of rum with fruit juice and usually apricot liqueur", ["Highball"], []]}, "ANTONYMS": [], "SYNONYMS": ["Living dead", "Zombie spirit", "Zombi", "Snake god", "Zombi spirit"]}, "ZOMBIES": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Living dead", "Zombie spirit", "Zombi", "Snake god", "Zombi spirit"]}, "ZOMBIS": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Living dead", "Zombie spirit", "Zombi", "Snake god", "Zombi spirit"]}, "ZONA": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Zone", "Zona"]}, "ZONAL": {"MEANINGS": {"1": ["Adjective", "relating to or of the nature of a zone", [], ["the zonal frontier"]], "2": ["Adjective", "associated with or divided into zones", [], ["a zonal pattern of cell structure", "zonal division"]]}, "ANTONYMS": ["azonal"], "SYNONYMS": ["Zonary", "Zonal"]}, "ZONARY": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Zonary", "Zonal"]}, "ZONE": {"MEANINGS": {"1": ["Verb", "regulate housing in; of certain areas of towns", ["Regulate", "Regularize", "Regularise", "Order", "Govern"], []], "2": ["Noun", "any of the regions of the surface of the Earth loosely divided according to latitude or longitude", ["Geographical area", "Geographic area", "Geographical region", "Geographic region"], []], "3": ["Noun", "an area or region distinguished from adjacent parts by a distinctive feature or characteristic", ["Region", "Part"], []], "4": ["Noun", "(anatomy) any encircling or beltlike structure", ["Structure", "Anatomical structure", "Complex body part", "Bodily structure", "Body structure"], []]}, "ANTONYMS": [], "SYNONYMS": ["Zona", "District", "Zone", "Partition", "Geographical zone"]}, "ZONED": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["District", "Zone", "Partition"]}, "ZONES": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Zona", "District", "Zone", "Partition", "Geographical zone"]}, "ZONING": {"MEANINGS": {"1": ["Noun", "dividing an area into zones or sections reserved for different purposes such as residence and business and manufacturing etc", ["Division", "Partition", "Partitioning", "Segmentation", "Sectionalization", "Sectionalisation"], []]}, "ANTONYMS": [], "SYNONYMS": ["Zoning", "Zone", "District", "Partition"]}, "ZONOTRICHIA": {"MEANINGS": {"1": ["Noun", "large New World sparrows", ["Bird genus"], []]}, "ANTONYMS": [], "SYNONYMS": ["Genus zonotrichia", "Zonotrichia"]}, "ZONULA": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Zonula", "Zonule"]}, "ZONULAS": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Zonula", "Zonule"]}, "ZONULE": {"MEANINGS": {"1": ["Noun", "small beltlike zone", ["Zone", "Zona"], []]}, "ANTONYMS": [], "SYNONYMS": ["Zonula", "Zonule"]}, "ZONULES": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Zonula", "Zonule"]}, "ZOO": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Zoological garden", "Menagerie", "Zoo"]}, "ZOOERASTIA": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Bestiality", "Zooerastia", "Zooerasty"]}, "ZOOFLAGELLATE": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Zooflagellate", "Zoomastigote"]}, "ZOOID": {"MEANINGS": {"1": ["Noun", "one of the distinct individuals forming a colonial animal such as a bryozoan or hydrozoan", ["Organism", "Being"], []]}, "ANTONYMS": [], "SYNONYMS": ["Zooid"]}, "ZOOIDS": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Zooid"]}, "ZOOLATRY": {"MEANINGS": {"1": ["Noun", "the worship of animals", ["Worship"], []]}, "ANTONYMS": [], "SYNONYMS": ["Zoolatry", "Animal-worship"]}, "ZOOLATRIES": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Zoolatry", "Animal-worship"]}, "ZOOLOGY": {"MEANINGS": {"2": ["Noun", "the branch of biology that studies animals", ["Biology", "Biological science"], []]}, "ANTONYMS": ["flora"], "SYNONYMS": ["Zoology", "Fauna", "Zoological science"]}, "ZOOLOGICAL": {"MEANINGS": {"1": ["Adjective", "concerning the study of animals and their classification and properties", [], ["zoological research"]], "2": ["Adjective", "of or relating to animals or animal groups", [], ["zoological garden"]]}, "ANTONYMS": [], "SYNONYMS": ["Zoological"]}, "ZOOLOGIES": {"MEANINGS": {}, "ANTONYMS": ["flora"], "SYNONYMS": ["Zoology", "Fauna", "Zoological science"]}, "ZOOLOGIST": {"MEANINGS": {"1": ["Noun", "a specialist in the branch of biology dealing with animals", ["Biologist", "Life scientist"], []]}, "ANTONYMS": [], "SYNONYMS": ["Animal scientist", "Zoologist"]}, "ZOOLOGISTS": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Animal scientist", "Zoologist"]}, "ZOOM": {"MEANINGS": {"1": ["Verb", "move along very quickly", ["Travel rapidly", "Speed", "Hurry", "Zip"], []], "2": ["Verb", "move with a low humming noise", ["Travel", "Go", "Move", "Locomote"], []]}, "ANTONYMS": [], "SYNONYMS": ["Soar up", "Rapid climb", "Soar", "Rapid growth", "Soar upwards"]}, "ZOOMASTIGINA": {"MEANINGS": {"1": ["Noun", "in some classifications considered a phylum of the kingdom Protista; holozoic or saprozoic flagellates", ["Class"], []]}, "ANTONYMS": [], "SYNONYMS": ["Subclass zoomastigina", "Zoomastigina"]}, "ZOOMED": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Soar up", "Soar", "Soar upwards", "Zoom along", "Whizz along"]}, "ZOOMING": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Soar up", "Soar", "Soar upwards", "Zoom along", "Whizz along"]}, "ZOOMORPHISM": {"MEANINGS": {"1": ["Noun", "the attribution of animal forms or qualities to a god", ["Attribution", "Ascription"], []]}, "ANTONYMS": [], "SYNONYMS": ["Zoomorphism"]}, "ZOOMS": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Soar up", "Rapid climb", "Soar", "Rapid growth", "Soar upwards"]}, "ZOONOSES": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Zoonosis", "Zoonotic disease"]}, "ZOONOSIS": {"MEANINGS": {"1": ["Noun", "an animal disease that can be transmitted to humans", ["Animal disease"], []]}, "ANTONYMS": [], "SYNONYMS": ["Zoonosis", "Zoonotic disease"]}, "ZOONOTIC": {"MEANINGS": {"1": ["Adjective", "of or relating to or constituting zoonosis", [], ["the Ebola virus is believed to be zoonotic"]]}, "ANTONYMS": [], "SYNONYMS": ["Zoonotic"]}, "ZOOPHAGOUS": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Meat-eating", "Flesh-eating", "Zoophagous"]}, "ZOOPHILIA": {"MEANINGS": {"1": ["Noun", "a sexual attraction to animals", ["Paraphilia"], []]}, "ANTONYMS": [], "SYNONYMS": ["Zoophilia", "Zoophilism"]}, "ZOOPHILISM": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Zoophilia", "Zoophilism"]}, "ZOOPHYTE": {"MEANINGS": {"1": ["Noun", "any of various invertebrate animals resembling a plant such as a sea anemone or coral or sponge", ["Invertebrate"], []]}, "ANTONYMS": [], "SYNONYMS": ["Zoophyte"]}, "ZOOPHYTES": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Zoophyte"]}, "ZOOPHOBIA": {"MEANINGS": {"1": ["Noun", "a morbid fear of animals", ["Simple phobia"], []]}, "ANTONYMS": [], "SYNONYMS": ["Zoophobia"]}, "ZOOPLANKTON": {"MEANINGS": {"1": ["Noun", "animal constituent of plankton; mainly small crustaceans and fish larvae", ["Animal", "Animate being", "Beast", "Brute", "Creature", "Fauna"], []]}, "ANTONYMS": [], "SYNONYMS": ["Zooplankton"]}, "ZOOPSIA": {"MEANINGS": {"1": ["Noun", "visual hallucination of animals; sometimes occurring in delirium tremens", ["Visual hallucination"], []]}, "ANTONYMS": [], "SYNONYMS": ["Zoopsia"]}, "ZOOS": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Zoological garden", "Menagerie", "Zoo"]}, "ZOOSPORE": {"MEANINGS": {"1": ["Noun", "an asexual spore of some algae and fungi that moves by means of flagella", ["Spore"], []]}, "ANTONYMS": [], "SYNONYMS": ["Zoospore"]}, "ZOOSPORES": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Zoospore"]}, "ZOOTOXIN": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Animal toxin", "Zootoxin"]}, "ZORI": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Pusher", "Zori"]}, "ZORIL": {"MEANINGS": {"1": ["Noun", "muishond of northern Africa", ["Muishond"], []]}, "ANTONYMS": [], "SYNONYMS": ["Zoril", "Ictonyx frenata"]}, "ZORILS": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Zoril", "Ictonyx frenata"]}, "ZORIS": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Pusher", "Zori"]}, "ZOROASTER": {"MEANINGS": {"1": ["Noun", "Persian prophet who founded Zoroastrianism (circa 628-551 BC)", [], []]}, "ANTONYMS": [], "SYNONYMS": ["Zoroaster", "Zarathustra"]}, "ZOROASTRIAN": {"MEANINGS": {"1": ["Adjective", "of or pertaining to Zoroaster or the religion he founded", [], []]}, "ANTONYMS": [], "SYNONYMS": ["Zoroastrian"]}, "ZOROASTRIANISM": {"MEANINGS": {"1": ["Noun", "system of religion founded in Persia in the 6th century BC by Zoroaster; set forth in the Zend-Avesta; based on concept of struggle between light (good) and dark (evil)", ["Religion", "Faith", "Religious belief"], []]}, "ANTONYMS": [], "SYNONYMS": ["Zoroastrianism", "Mazdaism"]}, "ZOROASTRIANS": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Zoroastrian"]}, "ZOSTER": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Shingles", "Herpes zoster", "Zoster"]}, "ZOSTERA": {"MEANINGS": {"1": ["Noun", "(or in some classifications family Zosteraceae) small genus of widely distributed marine plants", ["Monocot genus", "Liliopsid genus"], []]}, "ANTONYMS": [], "SYNONYMS": ["Zostera", "Genus zostera"]}, "ZOSTERACEAE": {"MEANINGS": {"1": ["Noun", "used in some classifications: essentially equivalent to Potamogetonaceae", ["Monocot family", "Liliopsid family"], []]}, "ANTONYMS": [], "SYNONYMS": ["Eelgrass family", "Zosteraceae", "Family zosteraceae"]}, "ZOSTERS": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Shingles", "Herpes zoster", "Zoster"]}, "ZR": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Atomic number 40", "Zr", "Zirconium"]}, "ZS": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Omega", "Z", "Izzard", "Zed", "Zee"]}, "ZSIGMONDY": {"MEANINGS": {"1": ["Noun", "German chemist (born in Austria) honored for his research on colloidal solutions (1865-1929)", [], []]}, "ANTONYMS": [], "SYNONYMS": ["Zsigmondy", "Richard adolph zsigmondy"]}, "ZUBIRD": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Zubird", "Zu"]}, "ZUCCHINI": {"MEANINGS": {"1": ["Noun", "marrow squash plant whose fruit are eaten when small", ["Marrow", "Marrow squash", "Vegetable marrow"], []], "2": ["Noun", "small cucumber-shaped vegetable marrow; typically dark green", ["Summer squash"], []]}, "ANTONYMS": [], "SYNONYMS": ["Courgette", "Zucchini"]}, "ZUCCHINIS": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Courgette", "Zucchini"]}, "ZULU": {"MEANINGS": {"1": ["Noun", "a member of the tall Negroid people of eastern South Africa; some live in KwaZulu-Natal under the traditional clan system but many now work in the cities", ["African"], []], "2": ["Noun", "a community of Negroid people in eastern South Africa", [], []], "3": ["Noun", "a Bantu language of considerable literary importance in southeastern Africa", ["Nguni"], []]}, "ANTONYMS": [], "SYNONYMS": ["Zulu"]}, "ZULUS": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Zulu"]}, "ZUNI": {"MEANINGS": {"1": ["Noun", "a member of the Pueblo people living in western New Mexico", ["Pueblo"], []]}, "ANTONYMS": [], "SYNONYMS": ["Zuni"]}, "ZUNIS": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Zuni"]}, "ZURICH": {"MEANINGS": {"1": ["Noun", "the largest city in Switzerland; located in the northern part of the country", [], ["Zurich is the center of the German-speaking part of Switzerland"]]}, "ANTONYMS": [], "SYNONYMS": ["Zurich"]}, "ZURVAN": {"MEANINGS": {"1": ["Noun", "the Zoroastrian god of time", [], []]}, "ANTONYMS": [], "SYNONYMS": ["Zurvan"]}, "ZWEIG": {"MEANINGS": {"1": ["Noun", "Austrian writer (1881-1942)", [], []]}, "ANTONYMS": [], "SYNONYMS": ["Stefan zweig", "Zweig"]}, "ZWIEBACK": {"MEANINGS": {"1": ["Noun", "slice of sweet raised bread baked again until it is brown and hard and crisp", ["Toast"], []]}, "ANTONYMS": [], "SYNONYMS": ["Rusk", "Brussels biscuit", "Zwieback", "Twice-baked bread"]}, "ZWIEBACKS": {"MEANINGS": {}, "ANTONYMS": [], "SYNONYMS": ["Rusk", "Brussels biscuit", "Zwieback", "Twice-baked bread"]}, "ZWINGLI": {"MEANINGS": {"1": ["Noun", "Swiss theologian whose sermons began the Reformation in Switzerland (1484-1531)", [], []]}, "ANTONYMS": [], "SYNONYMS": ["Huldreich zwingli", "Ulrich zwingli", "Zwingli"]}, "ZWORYKIN": {"MEANINGS": {"1": ["Noun", "United States physicist who invented the iconoscope (1889-1982)", [], []]}, "ANTONYMS": [], "SYNONYMS": ["Vladimir kosma zworykin", "Zworykin"]}} -------------------------------------------------------------------------------- /template/app/build.gradle: -------------------------------------------------------------------------------- 1 | def buildAsLibrary = project.hasProperty('BUILD_AS_LIBRARY'); 2 | def buildAsApplication = !buildAsLibrary 3 | if (buildAsApplication) { 4 | apply plugin: 'com.android.application' 5 | } 6 | else { 7 | apply plugin: 'com.android.library' 8 | } 9 | 10 | android { 11 | compileSdkVersion 31 12 | defaultConfig { 13 | if (buildAsApplication) { 14 | applicationId "com.litexl.writexl" 15 | } 16 | minSdkVersion 26 17 | targetSdkVersion 31 18 | versionCode 1 19 | versionName "1.0" 20 | externalNativeBuild { 21 | ndkBuild { 22 | arguments "APP_PLATFORM=android-26" 23 | abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64' 24 | } 25 | } 26 | } 27 | buildTypes { 28 | release { 29 | minifyEnabled false 30 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 31 | } 32 | } 33 | applicationVariants.all { variant -> 34 | tasks["merge${variant.name.capitalize()}Assets"] 35 | .dependsOn("externalNativeBuild${variant.name.capitalize()}") 36 | } 37 | if (!project.hasProperty('EXCLUDE_NATIVE_LIBS')) { 38 | sourceSets.main { 39 | jniLibs.srcDir 'libs' 40 | } 41 | externalNativeBuild { 42 | ndkBuild { 43 | path 'jni/Android.mk' 44 | } 45 | } 46 | 47 | } 48 | packagingOptions { 49 | jniLibs { 50 | useLegacyPackaging true 51 | } 52 | } 53 | lintOptions { 54 | abortOnError false 55 | } 56 | 57 | if (buildAsLibrary) { 58 | libraryVariants.all { variant -> 59 | variant.outputs.each { output -> 60 | def outputFile = output.outputFile 61 | if (outputFile != null && outputFile.name.endsWith(".aar")) { 62 | def fileName = "org.libsdl.app.aar"; 63 | output.outputFile = new File(outputFile.parent, fileName); 64 | } 65 | } 66 | } 67 | } 68 | } 69 | 70 | dependencies { 71 | implementation fileTree(include: ['*.jar'], dir: 'libs') 72 | } 73 | -------------------------------------------------------------------------------- /template/app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 9 | 12 | 13 | 14 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 30 | 31 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /template/app/src/main/java/com/litexl/writexl/writexlActivity.java: -------------------------------------------------------------------------------- 1 | package com.litexl.writexl; 2 | 3 | import com.litexl.litexl.litexlActivity; 4 | 5 | public class writexlActivity extends litexlActivity { 6 | 7 | } 8 | -------------------------------------------------------------------------------- /template/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adamharrison/write-xl/45546f5e897a4f6d9f775eedabbb7a0acf1adc0c/template/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /template/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adamharrison/write-xl/45546f5e897a4f6d9f775eedabbb7a0acf1adc0c/template/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /template/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adamharrison/write-xl/45546f5e897a4f6d9f775eedabbb7a0acf1adc0c/template/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /template/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adamharrison/write-xl/45546f5e897a4f6d9f775eedabbb7a0acf1adc0c/template/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /template/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adamharrison/write-xl/45546f5e897a4f6d9f775eedabbb7a0acf1adc0c/template/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /template/app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Write XL 3 | 4 | --------------------------------------------------------------------------------