#+TITLE:   ui/zen
#+DATE:    December 20, 2019
#+SINCE:   v3.0.0
#+STARTUP: inlineimages

* Table of Contents :TOC_3:noexport:
- [[#description][Description]]
  - [[#usage][Usage]]
  - [[#module-flags][Module Flags]]
  - [[#plugins][Plugins]]
  - [[#hacks][Hacks]]
- [[#prerequisites][Prerequisites]]
- [[#features][Features]]
  - [[#distractions-free-mode][Distractions-free mode]]
- [[#configuration][Configuration]]
  - [[#enable-fullscreen-on-activation][Enable fullscreen on activation]]

* Description
This module provides two minor modes that make Emacs into a more comfortable
writing or coding environment. Folks familiar with "distraction-free" or "zen"
modes from other editors -- or [[https://github.com/rnkn/olivetti][olivetti]], [[https://github.com/zk-phi/sublimity][sublimity]], and [[https://github.com/IdoMagal/Tabula-Rasa][tabula-rasa]] (Emacs
plugins) -- will feel right at home.

These modes are:

+ ~mixed-pitch-mode~ :: Which renders (most) text in a variable pitch font (see
  ~doom-variable-pitch-font~). Unlike ~variable-pitch-mode~, this will not
  affect segments of text that are intended to remain in a fixed pitch font,
  such as code blocks or ASCII tables.
+ ~writeroom-mode~ :: Our all-in-one "zen" mode that will:
  1. Center the current buffer.
  2. Remove superfluous UI elements (like the modeline).
  3. Activate ~mixed-pitch-mode~.
  4. Scale up the buffer's text slightly (see ~+zen-text-scale~).
  5. And make the window's borders slightly thicker (see
     ~+zen-window-divider-size~).
     
** Usage
This module provides two entry points:

+ ~M-x +zen/toggle~ :: toggles ~writeroom-mode~ (restricted to the current
  buffer).
+ ~M-x +zen/toggle-fullscreen~ :: toggles zen mode in full-screen mode (deletes
  other windows and full screens the Emacs frame).

Invoke either command again to undo the change.

** Module Flags
This module provides no flags.

** Plugins
+ [[https://github.com/joostkremers/writeroom-mode][writeroom-mode]]
+ [[https://gitlab.com/jabranham/mixed-pitch][mixed-pitch]]

** Hacks
+ Doom has disabled all of writeroom-mode's "global" effects
  (~writeroom-global-effects~ and ~writeroom-maximize-window~ are set to ~nil~),
  and encapsulated them into the ~+zen/toggle-fullscreen~ command, whereas
  ~+zen/toggle~ will only operate on the current buffer. This way, the user may
  choose how far-reaching they want its effect to be.
+ ~text-scale~ has been advised to adjust ~visual-fill-column~'s margins, so its
  text won't "squeeze" as you scale it up (or "spill" when scaled down).

* Prerequisites
This module has no prerequisites.

* Features
** Distractions-free mode
This can be activated with =SPC t z= for evil users.
Non-evil users can use =C-c t z= or 'M-x writeroom-mode'.

* Configuration
** Enable fullscreen on activation
#+BEGIN_SRC elisp
(setq writeroom-fullscreen-effect t)
#+END_SRC

Or fullscreen manually with =SPC t F= (or =F11= for non-evil users).
