# ChangeLog for app-emacs/yc
# Copyright 2002-2009 Gentoo Foundation; Distributed under the GPL v2
# $Header: /var/cvsroot/gentoo-x86/app-emacs/yc/ChangeLog,v 1.31 2009/06/06 15:44:02 ulm Exp $

  06 Jun 2009; Ulrich Mueller <ulm@gentoo.org> yc-4.0.13.ebuild:
  Fix elog message, bug 272899.

  05 May 2009; Christian Faulhammer <fauli@gentoo.org> yc-4.0.13.ebuild:
  set explicit RDEPEND

  22 Oct 2007; Ulrich Mueller <ulm@gentoo.org> -files/sample.dot.emacs,
  metadata.xml:
  Add to emacs herd, too. Remove unused file.

  07 Oct 2007; Ulrich Mueller <ulm@gentoo.org> yc-4.0.13.ebuild:
  Remove redundant virtual/emacs dependency. Quote FILESDIR variable.

  28 Jan 2007; Marius Mauch <genone@gentoo.org> yc-4.0.13.ebuild:
  Replacing einfo with elog

  09 Jan 2007; Christian Faulhammer <opfer@gentoo.org> -yc-3.5.8.ebuild:
  clean up

  10 Oct 2004; Mamoru KOMACHI <usata@gentoo.org> yc-4.0.13.ebuild:
  Marked as stable.

*yc-4.0.13 (15 Aug 2004)

  15 Aug 2004; Mamoru KOMACHI <usata@gentoo.org> yc-4.0.11.ebuild,
  +yc-4.0.13.ebuild, -yc-4.0.8.ebuild:
  Version bumped.

*yc-4.0.11 (30 Jun 2004)

  30 Jun 2004; Mamoru KOMACHI <usata@gentoo.org> +yc-4.0.11.ebuild:
  Version bumped

  26 Apr 2004; Mamoru KOMACHI <usata@gentoo.org> yc-4.0.7.ebuild,
  yc-4.0.8.ebuild:
  Marked stable on x86 and alpha. Don't assign default to S

*yc-4.0.8 (17 Mar 2004)

  17 Mar 2004; Mamoru KOMACHI <usata@gentoo.org> yc-4.0.3.ebuild,
  yc-4.0.5.ebuild, yc-4.0.7.ebuild, yc-4.0.8.ebuild:
  Version bumped. Marked previous version stable on x86 and alpha.
  Removed old ebuilds.

*yc-4.0.7 (27 Feb 2004)

  27 Feb 2004; Mamoru KOMACHI <usata@gentoo.org> yc-4.0.7.ebuild:
  Version bumped

*yc-4.0.5 (08 Jan 2004)

  08 Jan 2004; <usata@gentoo.org> yc-4.0.3.ebuild, yc-4.0.5.ebuild:
  Version bumped.

  24 Dec 2003; Mamoru KOMACHI <usata@gentoo.org> yc-4.0.0.ebuild,
  yc-4.0.1.ebuild, yc-4.0.2.ebuild, yc-4.0.3.ebuild:
  Marked as stable. Removed old ebuilds

*yc-4.0.3 (11 Dec 2003)

  11 Dec 2003; Mamoru KOMACHI <usata@gentoo.org> yc-4.0.3.ebuild,
  files/50yc-gentoo.el:
  Version bumped

  27 Nov 2003; MATSUU Takuto <matsuu@gentoo.org> yc-4.0.1.ebuild:
  Marked as stable for x86.

*yc-4.0.2 (27 Nov 2003)

  27 Nov 2003; MATSUU Takuto <matsuu@gentoo.org> yc-4.0.2.ebuild:
  Version bumped.

*yc-4.0.1 (21 Nov 2003)

  21 Nov 2003; MATSUU Takuto <matsuu@gentoo.org> yc-4.0.1.ebuild:
  version bump.
  mark ~amd64.

  06 Nov 2003; Mamoru KOMACHI <usata@gentoo.org> yc-3.5.0.ebuild,
  yc-3.5.1.ebuild, yc-3.5.2.ebuild, yc-3.5.7.ebuild, yc-3.5.8.ebuild,
  yc-4.0.0.ebuild:
  Cleaned out old ebuilds. Marked 4.0.0 as stable.

*yc-4.0.0 (13 Oct 2003)

  13 Oct 2003; Masatomo Nakano <nakano@gentoo.org> yc-3.5.8.ebuild,
  yc-4.0.0.ebuild, files/sample.dot.emacs-4:
  Version bump.

*yc-3.5.8 (02 Jun 2003)

  16 Jun 2003; Masatomo Nakano <nakano@gentoo.org> yc-3.5.8.ebuild:
  Marked as stable.

  02 Jun 2003; Masatomo Nakano <nakano@gentoo.org> yc-3.5.8.ebuild:
  Version bump as unstable.

*yc-3.5.7 (11 May 2003)

  18 May 2003; <nakano@gentoo.org> yc-3.5.7.ebuild:
  Marked as stable.

  11 May 2003; Masatomo Nakano <nakano@gentoo.org> ChangeLog, yc-3.5.7.ebuild,
  files/sample.hosts.canna:

  Version bump.

*yc-3.5.2 (31 Mar 2003)

  31 Mar 2003; Masatomo Nakano <nakano@gentoo.org> ChangeLog, yc-3.5.2.ebuild:

  Version bump.

*yc-3.5.1 (27 Mar 2003)

  27 Mar 2003; Masatomo Nakano <nakano@gentoo.org> ChangeLog, yc-3.5.1.ebuild:

  Version bump.

*yc-3.5.0 (20 Dec 2002)

  24 Dec 2002; Masatomo Nakano <nakano@gentoo.org> ChangeLog,
  yc-3.5.0.ebuild:

  Changed Keywords from ~x86 to x86.

  20 Dec 2002; Masatomo Nakano <nakano@gentoo.org> ChangeLog,
  yc-3.5.0.ebuild, files/30yc-gentoo.el, files/sample.dot.emacs, 
  files/sample.hosts.canna, files/digest-yc-3.5.0 :

  Initial import. Ebuild submitted by ni_naoto@ybb.ne.jp (Nishimura Naoto).

