Autosave a file.

        Do nothing if the `changed_since_autosave` flag is not set or the file
        is newly created (and thus not named by the user). Otherwise, save a
        copy of the file with the name given by `self.get_autosave_filename()`
        and clear the `changed_since_autosave` flag. Errors raised when saving
        are silently ignored.

        Args:
            index (int): index into self.stack.data

def autosave(self, index):
        """
        Autosave a file.

        Do nothing if the `changed_since_autosave` flag is not set or the file
        is newly created (and thus not named by the user). Otherwise, save a
        copy of the file with the name given by `self.get_autosave_filename()`
        and clear the `changed_since_autosave` flag. Errors raised when saving
        are silently ignored.

        Args:
            index (int): index into self.stack.data
        """
        finfo = self.stack.data[index]
        document = finfo.editor.document()
        if not document.changed_since_autosave or finfo.newly_created:
            return
        autosave_filename = self.get_autosave_filename(finfo.filename)
        logger.debug('Autosaving %s to %s', finfo.filename, autosave_filename)
        try:
            self.stack._write_to_file(finfo, autosave_filename)
            document.changed_since_autosave = False
        except EnvironmentError as error:
            action = (_('Error while autosaving {} to {}')
                      .format(finfo.filename, autosave_filename))
            msgbox = AutosaveErrorDialog(action, error)
            msgbox.exec_if_enabled()