# Dialogue History

Ren'Py includes a dialogue history system that stores each line of dialogue after it has been shown to the player. This stored dialogue can then be retrieved and re-shown to the player.

The dialogue history system is controlled by two variables. The `config.history_length` variable controls the maximum number of history entries that are stored, and must be set to enable history at all. The `_history` variable can be used to disable and re-enable history storage.

Finally, the `_history_list` variable stores the actual history, as a list of HistoryEntry objects. HistoryEntry objects contain data in their fields, as defined below.

class HistoryEntry
  kind

    The kind of character that created this history. Ren'Py sets this to "current" while a line of dialogue is displaying, and then to either "adv" or "nvl".

  who

    A string giving the name of the character that is speaking, or None if no such string exists.

  what

    A string giving the dialogue text.

  who_args

    A dictionary giving the properties that were supplied to the who text widget when the dialogue was originally shown.

  what_args

    A dictionary giving the properties that were supplied to the what text widget when the dialogue was originally shown.

  window_args

    A dictionary giving the properties that were supplied to the dialogue window when the dialogue was originally shown.

  show_args

    A dictionary giving the properties that were supplied to the say screen when the dialogue was originally shown.

  image_tag

    The image tag given to the `Character()`, or None if no such tag was given.

  voice

    This is the object returned from `_get_voice_info()`, storing information about the voice that is being played.

  rollback_identifier

    This is an identifier that can be passed to the `RollbackToIdentifier()` action, to cause a rollback to the line of script that generated this history entry. The rollback only occurs if the location is still in the script log, otherwise the action is insensitive.

Once a HistoryEntry has been created, it is passed to each of the callbacks in `config.history_callbacks`, which allows creator-written code to add new fields.