# ChangeLog for app-editors/scite
# Copyright 1999-2010 Gentoo Foundation; Distributed under the GPL v2
# $Header: /var/cvsroot/gentoo-x86/app-editors/scite/ChangeLog,v 1.89 2010/02/27 11:53:15 nelchael Exp $

*scite-2.03 (27 Feb 2010)

  27 Feb 2010; Krzysiek Pawlik <nelchael@gentoo.org> +scite-2.03.ebuild:
  Version bump.

*scite-2.01 (12 Dec 2009)

  12 Dec 2009; Krzysiek Pawlik <nelchael@gentoo.org> +scite-2.01.ebuild:
  Version bump.

*scite-2.00 (01 Sep 2009)

  01 Sep 2009; Patrick Lauer <patrick@gentoo.org> +scite-2.00.ebuild:
  Bump to 2.00, fixes #281298

*scite-1.79 (02 Aug 2009)

  02 Aug 2009; Krzysiek Pawlik <nelchael@gentoo.org> +scite-1.79.ebuild,
  +files/scite-1.79-install.patch, +files/scite-1.79-no-lua.patch:
  Version bump.

  25 Jul 2009; Krzysiek Pawlik <nelchael@gentoo.org> -scite-1.76.ebuild,
  -files/scite-1.76-install.patch, -files/scite-1.76-no-lua.patch,
  -scite-1.77.ebuild, -files/scite-1.77-install.patch,
  -files/scite-1.77-no-lua.patch:
  Remove old versions.

  20 Jul 2009; Jeremy Olexa <darkside@gentoo.org> scite-1.78.ebuild:
  amd64 stable, bug 275673

  19 Jul 2009; nixnut <nixnut@gentoo.org> scite-1.78.ebuild:
  ppc stable #275673

  30 Jun 2009; Christian Faulhammer <fauli@gentoo.org> scite-1.78.ebuild:
  stable x86, bug 275673

  29 Jun 2009; Ferris McCormick <fmccor@gentoo.org> scite-1.78.ebuild:
  Sparc stable, bug #275673.

  28 Jun 2009; Krzysiek Pawlik <nelchael@gentoo.org> scite-1.78.ebuild:
  Remove -Os from makefiles.

*scite-1.78 (15 May 2009)

  15 May 2009; Krzysiek Pawlik <nelchael@gentoo.org> +scite-1.78.ebuild,
  +files/scite-1.78-install.patch, +files/scite-1.78-no-lua.patch:
  Version bump.

  02 Feb 2009; Krzysiek Pawlik <nelchael@gentoo.org> ChangeLog:
  Fix ChangeLog entries.

*scite-1.77 (08 Jan 2009)

  08 Jan 2009; Krzysiek Pawlik <nelchael@gentoo.org>
  +files/scite-1.77-install.patch, +files/scite-1.77-no-lua.patch,
  +scite-1.77.ebuild:
  Version bump.

  12 Nov 2008; Jeremy Olexa <darkside@gentoo.org>
  files/scite-1.76-install.patch:
  minor permission change on /usr/share/pixmaps to allow unpriv'd users to
  complete compilation. bug #245564

  14 Jul 2008; Javier Villavicencio <the_paya@gentoo.org> scite-1.76.ebuild:
  Keyworded ~x86-fbsd wrt #231715.

  20 Jun 2008; Krzysiek Pawlik <nelchael@gentoo.org>
  -files/scite-1.72-install.patch, -files/scite-1.74-install.patch,
  -scite-1.72.ebuild, -scite-1.74.ebuild:
  Remove old versions.

  18 Jun 2008; Christian Faulhammer <opfer@gentoo.org> scite-1.76.ebuild:
  stable x86, bug 225663

  14 Jun 2008; nixnut <nixnut@gentoo.org> scite-1.76.ebuild:
  Stable on ppc wrt bug 225663

  11 Jun 2008; Friedrich Oslage <bluebird@gentoo.org> scite-1.76.ebuild:
  stable on sparc, bug #225663

  09 Jun 2008; Krzysiek Pawlik <nelchael@gentoo.org> scite-1.76.ebuild:
  Stable on amd64.

*scite-1.76 (05 Apr 2008)

  05 Apr 2008; Krzysiek Pawlik <nelchael@gentoo.org>
  +files/scite-1.76-install.patch, +files/scite-1.76-no-lua.patch,
  +scite-1.76.ebuild:
  Version bump.

  10 Nov 2007; Krzysiek Pawlik <nelchael@gentoo.org>
  -files/scite-1.73-install.patch, -scite-1.73.ebuild, scite-1.74.ebuild:
  Fix quoting in 1.74, remove obsolete 1.73.

*scite-1.74 (25 Jun 2007)

  25 Jun 2007; Krzysiek Pawlik <nelchael@gentoo.org>
  +files/scite-1.74-install.patch, +scite-1.74.ebuild:
  Version bump.

  21 Apr 2007; Krzysiek Pawlik <nelchael@gentoo.org>
  -files/scite-1.73-iconv.patch, scite-1.73.ebuild:
  Remove iconv patch for now, as it breaks builds.

  19 Apr 2007; Krzysiek Pawlik <nelchael@gentoo.org>
  +files/scite-1.73-iconv.patch, scite-1.73.ebuild:
  Fix linking with iconv, see bug #175259, patch by Moonz
  <simon.lipp@insa-lyon.fr>.

  18 Apr 2007; Krzysiek Pawlik <nelchael@gentoo.org>
  -files/scite-1.71-install.patch, -scite-1.71.ebuild:
  Remove old version.

  18 Apr 2007; nixnut <nixnut@gentoo.org> scite-1.72.ebuild:
  Stable on ppc wrt bug 174886

  18 Apr 2007; Christian Faulhammer <opfer@gentoo.org> scite-1.72.ebuild:
  stable x86/amd64, bug 174886

*scite-1.73 (17 Apr 2007)

  17 Apr 2007; Krzysiek Pawlik <nelchael@gentoo.org>
  +files/scite-1.73-install.patch, +scite-1.73.ebuild:
  Version bump.

  13 Mar 2007; Gustavo Zacarias <gustavoz@gentoo.org> scite-1.72.ebuild:
  Stable on sparc

*scite-1.72 (24 Jan 2007)

  24 Jan 2007; Krzysiek Pawlik <nelchael@gentoo.org>
  +files/scite-1.72-install.patch, +scite-1.72.ebuild:
  Version bump.

  27 Dec 2006; Krzysiek Pawlik <nelchael@gentoo.org>
  +files/scite-1.71-install.patch, scite-1.71.ebuild:
  Add patches needed for BSD, see bug #150550.

  04 Nov 2006; Krzysiek Pawlik <nelchael@gentoo.org> -scite-1.70.ebuild:
  Remove old version.

  31 Oct 2006; Danny van Dyk <kugelfang@gentoo.org> scite-1.71.ebuild:
  Marked stable on amd64.

  13 Oct 2006; Krzysiek Pawlik <nelchael@gentoo.org> scite-1.71.ebuild:
  Add missing dev-util/pkgconfig to DEPEND.

  12 Oct 2006; Gustavo Zacarias <gustavoz@gentoo.org> scite-1.71.ebuild:
  Stable on sparc wrt #150913

  11 Oct 2006; Stephanie Lockwood-Childs <wormo@gentoo.org> scite-1.71.ebuild:
  stable on ppc (Bug #150913)

  11 Oct 2006; Krzysiek Pawlik <nelchael@gentoo.org> scite-1.71.ebuild:
  Stable on x86.

  30 Sep 2006; Krzysiek Pawlik <nelchael@gentoo.org> -scite-1.62.ebuild:
  Remove old version.

  04 Sep 2006; Stephanie Lockwood-Childs <wormo@gentoo.org> scite-1.70.ebuild:
  stable on ppc (Bug #146155)

  04 Sep 2006; Jason Wever <weeve@gentoo.org> scite-1.70.ebuild:
  Stable on SPARC wrt bug #146155.

  03 Sep 2006; <blubb@gentoo.org> scite-1.70.ebuild:
  stable on amd64

  03 Sep 2006; Krzysiek Pawlik <nelchael@gentoo.org> scite-1.70.ebuild:
  Stable on x86.

*scite-1.71 (03 Sep 2006)

  03 Sep 2006; Krzysiek Pawlik <nelchael@gentoo.org> metadata.xml,
  -scite-1.66.ebuild, -scite-1.67.ebuild, -scite-1.68.ebuild,
  -scite-1.69.ebuild, +scite-1.71.ebuild:
  Version bump, see bug #145494.

*scite-1.70 (26 Jun 2006)
*scite-1.69 (26 Jun 2006)

  26 Jun 2006; Rob Cakebread <pythonhead@gentoo.org> scite-1.62.ebuild,
  scite-1.66.ebuild, scite-1.67.ebuild, scite-1.68.ebuild,
  +scite-1.69.ebuild, +scite-1.70.ebuild:
  Version bumps. Fix lua support bug #130085 Thank you <basic@mozdev.org>

  19 Mar 2006; Mark Loeser <halcy0n@gentoo.org> scite-1.68.ebuild:
  Add DEPEND on app-arch/unzip

*scite-1.68 (15 Mar 2006)
*scite-1.67 (15 Mar 2006)

  15 Mar 2006; Rob Cakebread <pythonhead@gentoo.org> +scite-1.67.ebuild,
  +scite-1.68.ebuild:
  Version bumps. bug# 117811

  03 Nov 2005; Alastair Tse <liquidx@gentoo.org> -scite-1.61.ebuild,
  scite-1.62.ebuild, -scite-1.63.ebuild, -scite-1.64.ebuild,
  -scite-1.65.ebuild, scite-1.66.ebuild:
  removed gtk2 use flag. defaults to gtk2 only. (#106560)

*scite-1.66 (29 Aug 2005)

  29 Aug 2005; Rob Cakebread <pythonhead@gentoo.org> +scite-1.66.ebuild:
  Version bump.

*scite-1.65 (04 Aug 2005)
*scite-1.64 (04 Aug 2005)
*scite-1.63 (04 Aug 2005)
*scite-1.62 (04 Aug 2005)
*scite-1.61 (04 Aug 2005)

  04 Aug 2005; Rob Cakebread <pythonhead@gentoo.org> -scite-1.6.1.ebuild,
  -scite-1.6.2.ebuild, -scite-1.6.3.ebuild, +scite-1.61.ebuild,
  +scite-1.62.ebuild, +scite-1.63.ebuild, +scite-1.64.ebuild,
  +scite-1.65.ebuild:
  Changed to correct license. Switched to upstream versioning. Version bumps.

  21 Apr 2005; Simon Stelling <blubb@gentoo.org> scite-1.6.2.ebuild:
  stable on amd64

  18 Apr 2005; Michael Hanselmann <hansmi@gentoo.org> scite-1.6.2.ebuild:
  Stable on ppc.

  06 Apr 2005; Rob Cakebread <pythonhead@gentoo.org> scite-1.6.3.ebuild:
  Fixed digest - upstream changed tarball. Good news is I removed the renaming
  of xpm to XPM files which they fixed. bug# 88100

*scite-1.6.3 (05 Apr 2005)

  05 Apr 2005; Rob Cakebread <pythonhead@gentoo.org> +scite-1.6.3.ebuild:
  Version bump.

  14 Mar 2005; Gustavo Zacarias <gustavoz@gentoo.org> scite-1.6.2.ebuild:
  Stable on sparc

  11 Mar 2005; Rob Cakebread <pythonhead@gentoo.org> scite-1.6.2.ebuild:
  Marked x86

  29 Dec 2004; Tom Martin <slarti@gentoo.org> scite-1.6.2.ebuild:
  Marked ~amd64, resolves bug 75831.

*scite-1.6.2 (13 Dec 2004)

  13 Dec 2004; Rob Cakebread <pythonhead@gentoo.org> +scite-1.6.2.ebuild:
  Version bump closes #74254

  26 Oct 2004; Rob Cakebread <pythonhead@gentoo.org> -scite-1.4.9.ebuild,
  scite-1.5.6.ebuild, scite-1.5.7.ebuild, scite-1.5.8.ebuild,
  scite-1.5.9.ebuild, scite-1.6.0.ebuild, scite-1.6.1.ebuild:
  Use toolchain-funcs eclass to get ${CXX}, removed ancient version. Closes bug# 68979

  05 Oct 2004; Pieter Van den Abeele <pvdabeel@gentoo.org> scite-1.5.6.ebuild,
  scite-1.5.7.ebuild, scite-1.5.8.ebuild, scite-1.5.9.ebuild,
  scite-1.6.1.ebuild:
  Masked scite-1.6.1.ebuild stable for ppc

  05 Oct 2004; Pieter Van den Abeele <pvdabeel@gentoo.org> scite-1.5.6.ebuild,
  scite-1.5.7.ebuild, scite-1.5.8.ebuild, scite-1.5.9.ebuild:
  Masked scite-1.5.9.ebuild stable for ppc

  05 Oct 2004; Pieter Van den Abeele <pvdabeel@gentoo.org> scite-1.5.6.ebuild,
  scite-1.5.7.ebuild, scite-1.5.8.ebuild:
  Masked scite-1.5.8.ebuild stable for ppc

  05 Oct 2004; Pieter Van den Abeele <pvdabeel@gentoo.org> scite-1.5.6.ebuild,
  scite-1.5.7.ebuild:
  Masked scite-1.5.7.ebuild stable for ppc

  05 Oct 2004; Pieter Van den Abeele <pvdabeel@gentoo.org> scite-1.5.6.ebuild:
  Masked scite-1.5.6.ebuild stable for ppc

  25 Sep 2004; Jason Wever <weeve@gentoo.org> scite-1.6.1.ebuild:
  Stable on sparc.

  21 Sep 2004; Rob Cakebread <pythonhead@gentoo.org> scite-1.4.9.ebuild,
  scite-1.5.6.ebuild, scite-1.5.7.ebuild, scite-1.5.8.ebuild,
  scite-1.5.9.ebuild, scite-1.6.0.ebuild, scite-1.6.1.ebuild:
  Removed sed from global scope, Marked x86 stable

  08 Jul 2004; Rob Cakebread <pythonhead@gentoo.org> scite-1.6.1.ebuild:
  Added DEPEND for dev-lang/lua scripting support

  08 Jul 2004; Rob Cakebread <pythonhead@gentoo.org> scite-1.6.0.ebuild:
  Fixed IUSE for lua

  08 Jul 2004; Rob Cakebread <pythonhead@gentoo.org> scite-1.6.0.ebuild:
  Added DEPEND for dev-lang/lua scripting support

  29 Jun 2004; Aron Griffis <agriffis@gentoo.org> scite-1.4.9.ebuild,
  scite-1.5.6.ebuild, scite-1.5.7.ebuild, scite-1.5.8.ebuild,
  scite-1.5.9.ebuild, scite-1.6.0.ebuild, scite-1.6.1.ebuild:
  sync IUSE (+gnome, -gnome), trim trailing whitespace

*scite-1.6.1 (16 Jun 2004)

  16 Jun 2004; Rob Cakebread <pythonhead@gentoo.org> +scite-1.6.1.ebuild:
  Version bump #53127

*scite-1.6.0 (16 Jun 2004)

  16 Jun 2004; Rob Cakebread <pythonhead@gentoo.org> +scite-1.6.0.ebuild:
  Version bump #50653

*scite-1.5.9 (16 Jun 2004)

  16 Jun 2004; Rob Cakebread <pythonhead@gentoo.org> metadata.xml,
  +scite-1.5.9.ebuild:
  Version bump #46858

  24 Mar 2004; Michael Sterrett <mr_bones_@gentoo.org> scite-1.5.6.ebuild,
  scite-1.5.7.ebuild:
  don't use deprecated ? : use syntax

  23 Feb 2004; Sven Blumenstein <bazik@gentoo.org> scite-1.5.8.ebuild:
  Stable on sparc.

*scite-1.5.8 (11 Feb 2004)

  11 Feb 2004; Alastair Tse <liquidx@gentoo.org> scite-1.5.1.ebuild,
  scite-1.5.4.ebuild, scite-1.5.8.ebuild:
  version bump. fixes GTK1 default thanks to Piotr Piasny <p1t3r05 os.pl> and
  khai <khai turbonet.com> (#40866) (#40668)

*scite-1.5.7 (09 Jan 2004)

  09 Jan 2004; Alastair Tse <liquidx@gentoo.org> scite-1.5.7.ebuild:
  version bump. modified ebuild submitted by Adam Chodorowski
  <adam@chodorowski.com> (bug #35493)

*scite-1.5.6 (08 Nov 2003)

  08 Nov 2003; Alastair Tse <liquidx@gentoo.org> scite-1.5.6.ebuild:
  version bump (#32984)

  13 Oct 2003; Alastair Tse <liquidx@gentoo.org> scite-1.5.4.ebuild:
  make it foolproof to CXX not being set

  11 Sep 2003; Alastair Tse <liquidx@gentoo.org> scite-1.5.4.ebuild:
  really fix .desktop issue

*scite-1.5.4 (31 Aug 2003)

  31 Aug 2003; Alastair Tse <liquidx@gentoo.org> scite-1.5.4.ebuild:
  rewrote ebuild. added gtk2 support, respects CXXFLAGS and CXX, desktop
  shortcut entry in right directory, dynamic version number generation, fixed
  SRC_URI. (#19122,#22362,#26832)

*scite-1.5.1 (26 Feb 2003)

  26 Feb 2003; Matthew Kennedy <mkennedy@gentoo.org> scite-1.5.1.ebuild:
  Version bump

*scite-1.4.9 (08 Jan 2002)

  08 Jan 2002; Matthew Kennedy <mkennedy@gentoo.org> scite-1.4.9.ebuild,
  ChangeLog, files/digest-scite-1.4.9 :

  Version bump and bug fix (resolves #13328)

  06 Dec 2002; Rodney Rees <manson@gentoo.org> : changed sparc ~sparc keywords
 
*scite-1.4.5-r1 (29 May 2002)
 
  11 Feb 2003; Seemant Kulleen <seemant@gentoo.org> scite-1.4.5-r1.ebuild
  files/SciTEGTK.cxx :

  Moved files/SciTEGTK.cxx to a bzip2 on the mirrors.  Reflected change
  in the ebuild.

  06 Aug 2002; Mark Guertin <gerk@gentoo.org> :
  Added ppc to keywords

  29 May 2002; Matthew Kennedy <mkennedy@gentoo.org> ChangeLog,
  scite-1.4.5-r1.ebuild, files/digest-scite-1.4.5-r1,
  files/SciTEGTK.cxx :

  C++ code fixed to support gcc3.1.

*scite-1.4.5 (10 Apr 2002)

  10 Apr 2002; Matthew Kennedy <mkennedy@gentoo.org> ChangeLog,
  scite-1.4.5.ebuild, files/digest-scite-1.4.5 :

  Fixed dependencies (gnome is not required). Fixed .desktop item
  placement/command name/install issues. Updated version,

*scite-1.4.1 (1 Feb 2002)

  1 Feb 2002; G.Bevin <gbevin@gentoo.org> ChangeLog :
  
  Added initial ChangeLog which should be updated whenever the package is
  updated in any way. This changelog is targetted to users. This means that the
  comments should well explained and written in clean English. The details about
  writing correct changelogs are explained in the skel.ChangeLog file which you
  can find in the root directory of the portage repository.
