gnovelist-mode.el design notes
=============================

This mode is primarily inspired by Scrivener, and iAWriter on MacOS.
Emacs _should_ be able to do all the things these editors do, give
enough configuration.  The following document outlines the design and
usability of novelist-mode.


 Design adjustments
+------------------+

Emacs by default is very code-oriented.  To change this novelist-mode
should set some things.

+ Make colour theme configurable (light or dark)
+ Set a non-monospace font (bundle Literata by default?)
+ Increase line spacing and text size
+ Change cursor to a line, control max size (because of line spacing)
+ Add text margins on the sides.  Disable fringe or style correctly
+ Enable line wrapping (word wrapped)


 Project management
+------------------+

Up to this point, libreoffice would suffice for prose writing.
Instead novelist-mode should add a lot of project management
functionality.

+ novelist-project-actions

  Bring up a transient menu to expose various functions implemented as
  their separate functions.  It's possible to call them directly (or
  create keybindings), but using this menu is the recommended way.


+ novelist-project-create (name, path, &optional universe)

  Create a new project folder and basic metadata.  Allow linking of
  external "universe" collection.  Bundle treemacs to display the
  project overview.


+ novelist-add (type, name, path)

  Add a new resource to the project.  This can either be a chapter, a
  scene, or some other metadata template.  Templates can be defined in
  a project or a universe.


+ novelist-delete (path, &optional purge)

  Remove a resource from the project.  By default it will only be
  moved into the hidden trash.  With the optional "purge" parameter it
  can also be immediately deleted.


+ novelist-path-overview

  Toggle the vilibility of the project overview (tree bar on the left).


+ novelist-path-notes (&optional path)

  Bring up a hidden buffer that contains structured notes for a
  particular path


+ novelist-path metadata (&optional path)

  Bring up a special menu to manage key-value metadata for a
  particular path.  A few default entries are included by default,
  such as scene revision, group colours, and labels.