method cvs_lastdiff_file =
      match selection with
        [] ->
          ()
      |        f :: _ ->
          try
            let cvsi = behav#cvs_info_of_t f in
            match cvsi.Ocvs_types.cvs_status with
              Ocvs_types.Up_to_date
            | Ocvs_types.Locally_added
            | Ocvs_types.Locally_removed
            | Ocvs_types.Needs_checkout
            | Ocvs_types.Needs_Patch
            | Ocvs_types.Unknown ->
                raise (Failure Ocvs_messages.no_diff_to_display)

            | Ocvs_types.Conflicts_on_merge ->
                raise (Failure Ocvs_messages.resolve_conflicts_first)

            | Ocvs_types.Locally_modified
            | Ocvs_types.Needs_Merge ->
                let filename = cvsi.Ocvs_types.cvs_file in
                let (diffs, _ ) = behav#cvs_diff_file filename in
                let w = Odiff_gui.diffs_window
                    ~title: (filename^" : "^Ocvs_messages.m_last_diff)
                    ~file: filename
                    diffs
                in
                w#window#show ()
          with
            Failure s ->
              GToolbox.message_box Ocvs_messages.error s