Create a controlled vocabulary for keywords
Denote has two ways to know about keywords: the predefined list of strings specified in the user option denote-known-keywords as well as all the keywords it finds in the files of the denote-directory when the user option denote-infer-keywords is set to a non-nil value (Exclude certain keywords from being inferred).
While this is a viable setup, users may prefer to implement a “controlled vocabulary”. This is a predefined set of keywords whose purpose is to avoid the creation of overly specific or inconsistent keywords.
To establish such a controlled vocabulary, users need only have something like this in their configuration:
;; Do not read keywords from files. The only source is the `denote-known-keywords'.
(setq denote-infer-keywords nil)
;; Define the list of keywords. Each keyword is a string.
(setq denote-known-keywords (list "politics" "economics" "emacs" "philosophy"))Setting denote-infer-keywords to nil also makes the denote-keywords-prompt demand that the input matches one of the keywords in denote-known-keywords. In previous versions, the prompt would accept arbitrary text.