writegood-mode icon indicating copy to clipboard operation
writegood-mode copied to clipboard

Minor mode for Emacs to improve English writing

  • Writegood Mode

    This is a minor mode to aid in finding common writing problems. [[http://matt.might.net/articles/shell-scripts-for-passive-voice-weasel-words-duplicates/][Matt Might's weaselwords scripts]] inspired this mode.

    It highlights text based on a set of weasel-words, passive-voice and duplicate words.

  • Basic Usage

    First, load in the mode.

: (add-to-list 'load-path "path/to/writegood-mode") : (require 'writegood-mode) : (global-set-key "\C-cg" 'writegood-mode)

I use the command key above to start the mode when I wish to check my writing.

Alternatively, this package is also available on MELPA. If installed through the package manager, then only the global key customization would be necessary.

  • Readability tests

    There are now two functions to perform [[http://en.wikipedia.org/wiki/Flesch%E2%80%93Kincaid_readability_tests][Flesch-Kincaid scoring]] and grade-level estimation. These follow the known algorithms, but may differ from other implementations due to the syllable estimation.

    I use these global keys to get to the readability tests:

: (global-set-key "\C-c\C-gg" 'writegood-grade-level) : (global-set-key "\C-c\C-ge" 'writegood-reading-ease)

  • Customization

The user is free to customize three main portions of the mode.

** Faces

The three faces used pull from the default warning face and add subtle backgrounds. There is a separate face for each check performed.

  • Weasel words (~writegood-weasels-face~)
  • Passive voice (~writegood-passive-voice-face~)
  • Duplicate words (~writegood-duplicates-face~)

** Weasel Words

There is a large list of included weasel words, but you may have your own. See the ~write-good-weasel-words~ variable to modify this list.

Additionally, if you require more than a list of words to mark up your content, then there is a custom variable, ~writegood-weasel-words-additional-regexp~ that allows a custom regular expression for matching whatever you heart desires (expressed as a regex).

** Passive Voice Irregulars

There is also a list of irregular passive voice verbs. These are the verbs that do not end in 'ed' to signify past tense. This variable allow the user to modify the list as needed.

Similar to weasel words, the custom variable ~writegood-passive-voice-irregulars-additional-regexp~ allows the use of an additional regular expression to highlight passive voice irregulars.

  • Alternatives

    [[https://github.com/sachac/artbollocks-mode][Artbollocks]] looks to be an alternative mode to this one.