#+TITLE:   app/write
#+DATE:    October 10, 2019
#+SINCE:   v1.3
#+STARTUP: inlineimages

* Table of Contents :TOC_3:noexport:
- [[#description][Description]]
  - [[#module-flags][Module Flags]]
  - [[#plugins][Plugins]]
- [[#prerequisites][Prerequisites]]
  - [[#language-tool][Language Tool]]
  - [[#wordnut][Wordnut]]
- [[#features][Features]]
  - [[#m-x-write-mode][~M-x +write-mode~]]
  - [[#language-tool-langtool][Language Tool ~+langtool~]]
    - [[#commands][Commands]]
  - [[#wordnut-wordnut][Wordnut ~+wordnut~]]
    - [[#commands-1][Commands]]
  - [[#synosaurus][Synosaurus]]
    - [[#commands-2][Commands]]
- [[#configuration][Configuration]]
  - [[#mixed-pitch-mode][mixed-pitch-mode]]
- [[#appendix][Appendix]]
  - [[#minor-modes][Minor modes]]
  - [[#commands-3][Commands]]

* Description
Adds word processing tools and the ~+write-mode~ minor mode, which converts
Emacs into a more comfortable writing environment.

** Module Flags
This module provides two module flags:

- ~+langtool~ Enables language tool integration.
- ~+wordnut~ Enables wordnet integration.

** Plugins
+ [[https://github.com/hpdeifel/synosaurus][synosaurus]]
+ [[https://gitlab.com/jabranham/mixed-pitch][mixed-pitch]]
+ [[https://github.com/joostkremers/visual-fill-column][visual-fill-column]]
+ [[https://github.com/mhayashi1120/Emacs-langtool][langtool]]* (=+langtool=)
+ [[https://github.com/gromnitsky/wordnut][wordnut]]* (=+wordnut=)

* Prerequisites
** Language Tool
Either download and deploy it from https://languagetool.org/ or install it
through your OS package manager:

#+BEGIN_SRC sh
# MacOS/Homebrew users:
brew install languagetool

# Arch Linux users:
sudo pacman -S languagetool
#+END_SRC

This module tries to guess the location of languagetool-commandline.jar. If you
get a warning that Doom =couldn't find languagetool-commandline.jar=, you will
need to find langaugetool-commandline.jar and set ~langtool-language-tool-jar~
to its path.

** Wordnut
This requires =wordnet= to be installed, which should be available through your
OS package manager:

#+BEGIN_SRC sh
# MacOS/Homebrew users:
brew install wordnet

# Arch Linux users:
sudo pacaur -S wordnet  # on the AUR
#+END_SRC

* Features
** ~M-x +write-mode~
Write mode makes Emacs a more comfortable writing environment by:

- Centering the buffer (with ~visual-fill-column-mode~), ala distraction-free
  mode from other text editors.
- Soft-wrapping long text lines with ~visual-line-mode~.
- Enabling ~mixed-pitch-mode~, allowing fixed-width and variable-pitch fonts to
  co-exist in one buffer. For example, a monospace font for SRC blocks and Arial
  for everything else.
- In org-mode:
  - Turns on ~org-indent-mode~
  - Turns on ~+org-pretty-mode~

** Language Tool ~+langtool~
[[https://www.languagetool.org/][Language Tool]] is a polyglot proofreader service that checks for grammar and
stylistic issues in your writing. This requires Java 1.8+.

#+begin_quote
This requires Java 1.8+
#+end_quote

*** Commands
- ~langtool-check~
- ~langtool-correct-buffer~

** Wordnut ~+wordnut~
Wordnut provides a searchable dictionary frontend for Emacs. This requires
~wordnet~, which should be available in your OS's package manager.

*** Commands
- ~wordnut-search~
- ~wordnut-lookup-curent-word~

** Synosaurus
Synosaurus provides a service for looking up synonyms. It requires an internet
connection.

*** Commands
- ~synosaurus-lookup~
- ~synosaurus-choose-and-replace~

* Configuration
** mixed-pitch-mode
To configure which faces are displayed with fixed-pitch fonts in
~mixed-pitch-mode~, look into ~mixed-pitch-fixed-pitch-faces~.

* Appendix
** Minor modes
- ~+write-mode~
- ~mixed-pitch-mode~
** Commands
- ~langtool-check~
- ~langtool-correct-buffer~
- ~synosaurus-choose-and-replace~
- ~synosaurus-lookup~
- ~wordnut-lookup-curent-word~
- ~wordnut-search~
