<commit_before>#+TITLE: :ui hl-todo

This module adds syntax highlighting for TODO/FIXME/NOTE tags in programming major-modes.

What keywords are highlighted (and their color) can be customized through ~hl-todo-keyword-faces~.

#+BEGIN_SRC emacs-lisp
;; the default
(setq hl-todo-keyword-faces
      `(("TODO"  . ,(face-foreground 'warning))
        ("FIXME" . ,(face-foreground 'error))
        ("NOTE"  . ,(face-foreground 'success))))
#+END_SRC<commit_msg>Redoing ui/hl-todo README<commit_after>#+TITLE: :ui hl-todo

* Table of Contents :TOC_3:noexport:
- [[#description][Description]]
  - [[#module-flags][Module Flags]]
  - [[#plugins][Plugins]]
- [[#prerequisites][Prerequisites]]
- [[#features][Features]]
  - [[#making-items][Making Items]]
  - [[#using-items][Using Items]]
- [[#configuration][Configuration]]
- [[#troubleshooting][Troubleshooting]]

* Description
This module adds syntax highlighting for TODO/FIXME/NOTE tags in programming
major-modes.

** Module Flags
This module provides no flags
** Plugins
[[https://github.com/tarius/hl-todo][hl-todo]]
* Prerequisites
This module has no prerequisites
* Features
** Making Items
You can make a TODO item by simply writing
+ =TODO=
  For things that need to be done, just not today.
+ =HACK=
  For tidbits that are unconventional and not intended uses of the
  constituent parts, and may break in a future update.
+ =FIXME=
  For problems that will become bigger problems later if not fixed ASAP.
+ =REVIEW=
  for things that were done hastily and/or hasn't been thoroughly
  tested. it may not even be necessary!
+ =NOTE=
  For especially important gotchas with a given implementation,
  directed at another user other than the author.
+ =DEPRECATED=
  For things that just gotta go and will soon be gone.
+ =BUG=
  For a known bug that needs a workaround
+ =XXX=
  For warning about a problematic or misguiding code
** Using Items
To see all of the TODO items in a project you can use
=SPC p t=
This will bring up a buffer you can use to quickly jump to the item
* Configuration
To add your own ITEMS you would need to configure them using
~hl-todo-keyword-faces~
#+BEGIN_SRC emacs-lisp :tangle no
;; the default
(setq hl-todo-keyword-faces
      `(("FOO"  . ,(face-foreground "MY COLOUR HEX CODE"))
        ("BAR" . ,(face-foreground 'my-colour-var))))
#+END_SRC

You can also add keybindings to jump and configure the next TODO item in the buffer using
| function           | description                       | proposed binding |
|--------------------+-----------------------------------+------------------|
| ~hl-todo-previous~ | move to the last TODO item        | =C-c t p=        |
| ~hl-todo-next~     | move to the next TODO item        | =C-c t n=        |
| ~hl-todo-occur~    | list all TODO items in the buffer | =C-c t o=        |
| ~hl-todo-insert~   | make a new TODO item              | =C-c t i=        |

this can be mapped like this
#+BEGIN_SRC emacs-lisp :tangle no
(map! :prefix "C-c t"
    "p"#'hl-todo-previous
    "n"#'hl-todo-next
    "o"#'hl-todo-occur
    "i"#'hl-todo-insert)

#+END_SRC

* Troubleshooting
If you have any problems with this module do get in touch!
{'fraction_non_alphanumeric': 0.1360759493670886, 'fraction_numerical': 0.00031645569620253165, 'mean_word_length': 3.0787096774193548, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 1, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4713141', 'n_tokens_mistral': 1043, 'n_tokens_neox': 993, 'n_words': 370}