#+TITLE:   ui/fill-column
#+DATE:    August 23, 2020
#+SINCE:   2.0.9
#+STARTUP: inlineimages nofold

* Table of Contents :TOC_3:noexport:
- [[#description][Description]]
  - [[#maintainers][Maintainers]]
  - [[#module-flags][Module Flags]]
  - [[#plugins][Plugins]]
- [[#prerequisites][Prerequisites]]
- [[#features][Features]]
- [[#configuration][Configuration]]
  - [[#setting-fill-column-globally][Setting fill-column globally]]
  - [[#setting-fill-column-for-the-current-buffer-or-mode][Setting fill-column for the current buffer or mode]]
  - [[#hl-fill-column-only-configuring-the-look-of-the-indicator][(hl-fill-column only) Configuring the look of the indicator]]
- [[#troubleshooting][Troubleshooting]]

* Description
This module provides a fill column indicator to make it obvious when a line
reaches or surpasses the 80th column. This serves as a reminder to keep lines
short for accessibility and/or convenience. [[https://www.emacswiki.org/emacs/EightyColumnRule][Read more about this on the Emacs
Wiki page]].

#+begin_quote
This module is deprecated and will be removed once Doom drops Emacs 26.x
support. This is because the built-in ~display-fill-column-indicator-mode~ (in
27 and newer) replaces it, and enabling it is a trivial one-liner, which doesn't
warrant a module: ~(global-display-fill-column-indicator-mode +1)~
#+end_quote

** Maintainers
This module has no dedicated maintainers.

** Module Flags
This module provides no flags.

** Plugins
+ [[https://github.com/laishulu/hl-fill-column][hl-fill-column]]* (unless Emacs >=27)

* Prerequisites
This module has no prerequisites.

* Features
The behavior of this module varies slightly depending on your version of Emacs:

+ In Emacs 26.x, text beyond ~fill-column~ will be highlighted.
+ In Emacs 27 and newer, a line is drawn down the right side at column 80.

* Configuration
** Setting fill-column globally
This column limit is controlled by the ~fill-column~ variable (default: ~80~).

This variable is buffer-local, therefore, to change this globally, you must use
~setq-default~:

#+BEGIN_SRC emacs-lisp
(setq-default fill-column 100)
#+END_SRC

~hl-fill-column-mode~ (or ~display-fill-column-indicator-mode~ on Emacs 27+)
must be restarted to see the change.

** Setting fill-column for the current buffer or mode
The ~setq-hook!~ convenience macro makes settings ~fill-column~ for a particular
mode (or modes) easy:

#+BEGIN_SRC emacs-lisp
(setq-hook! 'org-mode-hook fill-column 100)
(setq-hook! 'python-mode-hook fill-column 72)
(setq-hook! js2-mode fill-column 72)
(setq-hook! '(ruby-mode rustic-mode python-mode-hook) fill-column 80)
#+END_SRC

Any open buffers in these modes must be restarted to see the change.

** (hl-fill-column only) Configuring the look of the indicator
To change the appears of hl-fill-column's highlight, change the
~hl-fill-column-face~ face. Doom provides the ~custom-set-faces!~ macro to help
you do this:

#+BEGIN_SRC emacs-lisp
(custom-set-faces!
  '(hl-fill-column-face :background "red"
                        :foreground "blue"
                        :inverse-video t))
#+END_SRC

See =M-x helpful-function RET custom-set-faces\!= for demos and documentation
for this macro.

* TODO Troubleshooting
