<?xml version="1.0"?>

<!DOCTYPE SERVICES SYSTEM "services.dtd">

<SERVICES>
	<!-- Virtual file systems -->
	<SERVICE CLASS="org.gjt.sp.jedit.io.VFS" NAME="favorites">
		new FavoritesVFS();
	</SERVICE>
	<SERVICE CLASS="org.gjt.sp.jedit.io.VFS" NAME="roots">
		new FileRootsVFS();
	</SERVICE>

	<!-- Fold handlers -->
	<SERVICE CLASS="org.gjt.sp.jedit.buffer.FoldHandler" NAME="explicit">
		new ExplicitFoldHandler();
	</SERVICE>
	<SERVICE CLASS="org.gjt.sp.jedit.buffer.FoldHandler" NAME="indent">
		new IndentFoldHandler();
	</SERVICE>
	<SERVICE CLASS="org.gjt.sp.jedit.buffer.FoldHandler" NAME="none">
		new DummyFoldHandler();
	</SERVICE>

	<!-- Fold painters -->
	<SERVICE CLASS="org.gjt.sp.jedit.textarea.FoldPainter" NAME="Triangle">
		new TriangleFoldPainter();
	</SERVICE>
	<SERVICE CLASS="org.gjt.sp.jedit.textarea.FoldPainter" NAME="Square">
		new SquareFoldPainter();
	</SERVICE>
	<SERVICE CLASS="org.gjt.sp.jedit.textarea.FoldPainter" NAME="Circle">
		new CircleFoldPainter();
	</SERVICE>

	<!-- Extended encodings -->
	<!-- Not supported by Java -->
	<SERVICE CLASS="org.gjt.sp.jedit.io.Encoding" NAME="UTF-8Y">
		new EncodingWithBOM("UTF-8");
	</SERVICE>
	<!-- Supported by Oracle Java SE 6.
		The followings are workarounds (and used only) for other
		environments with fewer set of encodings. -->
	<SERVICE CLASS="org.gjt.sp.jedit.io.Encoding" NAME="x-UTF-16LE-BOM">
		new EncodingWithBOM("UTF-16LE");
	</SERVICE>
	<SERVICE CLASS="org.gjt.sp.jedit.io.Encoding" NAME="X-UTF-32LE-BOM">
		new EncodingWithBOM("UTF-32LE");
	</SERVICE>
	<SERVICE CLASS="org.gjt.sp.jedit.io.Encoding" NAME="X-UTF-32BE-BOM">
		new EncodingWithBOM("UTF-32BE");
	</SERVICE>
	<SERVICE CLASS="org.gjt.sp.jedit.io.Encoding" NAME="Native2ASCII">
		new Native2ASCIIEncoding();
	</SERVICE>

	<!-- Encoding detectors -->
	<SERVICE CLASS="org.gjt.sp.jedit.io.EncodingDetector" NAME="BOM">
		new EncodingWithBOM.Detector();
	</SERVICE>
	<SERVICE CLASS="org.gjt.sp.jedit.io.EncodingDetector" NAME="XML-PI">
		new XMLEncodingDetector();
	</SERVICE>
	<SERVICE CLASS="org.gjt.sp.jedit.io.EncodingDetector" NAME="buffer-local-property">
		new RegexEncodingDetector(":encoding=([^:]+):", "$1");
	</SERVICE>
	<SERVICE CLASS="org.gjt.sp.jedit.io.EncodingDetector" NAME="html">
		new RegexEncodingDetector(
			"\\bcharset=(" + RegexEncodingDetector.VALID_ENCODING_PATTERN + ")",
			"$1");
	</SERVICE>
	<SERVICE CLASS="org.gjt.sp.jedit.io.EncodingDetector" NAME="python">
		new RegexEncodingDetector(
			"coding[=:]\\s*(" + RegexEncodingDetector.VALID_ENCODING_PATTERN + ")",
			"$1");
	</SERVICE>


	<!-- {{{ Status Bar widgets -->
	<SERVICE CLASS="org.gjt.sp.jedit.gui.statusbar.StatusWidgetFactory" NAME="mode">
		import org.gjt.sp.jedit.gui.statusbar.*;
		new ModeWidgetFactory();
	</SERVICE>

	<SERVICE CLASS="org.gjt.sp.jedit.gui.statusbar.StatusWidgetFactory" NAME="fold">
		import org.gjt.sp.jedit.gui.statusbar.*;
		new FoldWidgetFactory();
	</SERVICE>

	<SERVICE CLASS="org.gjt.sp.jedit.gui.statusbar.StatusWidgetFactory" NAME="encoding">
		import org.gjt.sp.jedit.gui.statusbar.*;
		new EncodingWidgetFactory();
	</SERVICE>

	<SERVICE CLASS="org.gjt.sp.jedit.gui.statusbar.StatusWidgetFactory" NAME="wrap">
		import org.gjt.sp.jedit.gui.statusbar.*;
		new WrapWidgetFactory();
	</SERVICE>

	<SERVICE CLASS="org.gjt.sp.jedit.gui.statusbar.StatusWidgetFactory" NAME="multiSelect">
		import org.gjt.sp.jedit.gui.statusbar.*;
		new MultiSelectWidgetFactory();
	</SERVICE>

	<SERVICE CLASS="org.gjt.sp.jedit.gui.statusbar.StatusWidgetFactory" NAME="rectSelect">
		import org.gjt.sp.jedit.gui.statusbar.*;
		new RectSelectWidgetFactory();
	</SERVICE>

	<SERVICE CLASS="org.gjt.sp.jedit.gui.statusbar.StatusWidgetFactory" NAME="overwrite">
		import org.gjt.sp.jedit.gui.statusbar.*;
		new OverwriteWidgetFactory();
	</SERVICE>
	
	<SERVICE CLASS="org.gjt.sp.jedit.gui.statusbar.StatusWidgetFactory" NAME="indent">
		import org.gjt.sp.jedit.gui.statusbar.*;
		new IndentWidgetFactory();
	</SERVICE>

	<SERVICE CLASS="org.gjt.sp.jedit.gui.statusbar.StatusWidgetFactory" NAME="lineSep">
		import org.gjt.sp.jedit.gui.statusbar.*;
		new LineSepWidgetFactory();
	</SERVICE>

	<SERVICE CLASS="org.gjt.sp.jedit.gui.statusbar.StatusWidgetFactory" NAME="locked">
		import org.gjt.sp.jedit.gui.statusbar.*;
		new LockedWidgetFactory();
	</SERVICE>


	<SERVICE CLASS="org.gjt.sp.jedit.gui.statusbar.StatusWidgetFactory" NAME="memory-status">
		import org.gjt.sp.jedit.gui.statusbar.*;
		new MemoryStatusWidgetFactory();
	</SERVICE>

	<SERVICE CLASS="org.gjt.sp.jedit.gui.statusbar.StatusWidgetFactory" NAME="clock">
		import org.gjt.sp.jedit.gui.statusbar.*;
		new ClockWidgetFactory();
	</SERVICE>

	<SERVICE CLASS="org.gjt.sp.jedit.gui.statusbar.StatusWidgetFactory" NAME="errors">
		import org.gjt.sp.jedit.gui.statusbar.*;
		new ErrorsWidgetFactory();
	</SERVICE>

	<SERVICE CLASS="org.gjt.sp.jedit.gui.statusbar.StatusWidgetFactory" NAME="buffersets">
		import org.gjt.sp.jedit.gui.statusbar.*;
		new BufferSetWidgetFactory();
	</SERVICE>
	<SERVICE CLASS="org.gjt.sp.jedit.gui.statusbar.StatusWidgetFactory" NAME="selection-length">
		import org.gjt.sp.jedit.gui.statusbar.*;
		new SelectionLengthWidgetFactory();
	</SERVICE>
	<SERVICE CLASS="org.gjt.sp.jedit.gui.statusbar.StatusWidgetFactory" NAME="last-modified">
		import org.gjt.sp.jedit.gui.statusbar.*;
		new LastModifiedWidgetFactory();
	</SERVICE>
	<SERVICE CLASS="org.gjt.sp.jedit.gui.statusbar.StatusWidgetFactory" NAME="task-monitor">
		import org.gjt.sp.jedit.gui.statusbar.*;
		new TaskMonitorWidgetFactory();
	</SERVICE>
	<SERVICE CLASS="org.gjt.sp.jedit.gui.statusbar.StatusWidgetFactory" NAME="caret-status">
		import org.gjt.sp.jedit.gui.statusbar.*;
		new CaretStatusWidgetFactory();
	</SERVICE>
	<!-- }}} -->
	<!--jEdit.setProperty("view.status"," mode , fold , encoding ) wrap multiSelect rectSelect overwrite lineSep memory-status clock")-->

	<!-- Docking framework -->
	<SERVICE CLASS="org.gjt.sp.jedit.gui.DockingFrameworkProvider" NAME="Original">
		new org.gjt.sp.jedit.gui.DockableWindowManagerProvider();
	</SERVICE>

	<SERVICE CLASS="org.gjt.sp.jedit.datatransfer.JEditTransferableService" NAME="string">
		new org.gjt.sp.jedit.datatransfer.StringTransferableService();
	</SERVICE>

	<SERVICE CLASS="org.gjt.sp.jedit.datatransfer.JEditTransferableService" NAME="application/x-java-jEdit-rich-text">
		new org.gjt.sp.jedit.datatransfer.RichJEditTextTransferableService();
	</SERVICE>

	<SERVICE CLASS="org.gjt.sp.jedit.gui.tray.JEditTrayIcon" NAME="swing">
		new org.gjt.sp.jedit.gui.tray.JEditSwingTrayIcon();
	</SERVICE>

	<SERVICE CLASS="org.jedit.core.MigrationService" NAME="keymap">
		new org.jedit.migration.KeymapMigration();
	</SERVICE>
	
	<SERVICE CLASS="org.jedit.migration.OneTimeMigrationService" NAME="checkFileStatus" >
	  new org.jedit.migration.CheckFileStatus();
	</SERVICE>
	
</SERVICES>
