<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Lua Development Tools, an IDE for the Lua programming language</title>
<meta name="description"
	content="Lua Development Tools, is a open-source IDE for editing and debugging Lua files">
<meta name="author" content="Eclipse.org">

<!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
<!--[if lt IE 9]>
          <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
        <![endif]-->

<!-- Le styles -->
<link href="/ldt/bootstrap/css/bootstrap.css" rel="stylesheet" />
<link href="/ldt/bootstrap/css/bootstrap-responsive.css" rel="stylesheet" />
<link href="https://fonts.googleapis.com/css?family=Open+Sans:400,700,300,600,100" rel="stylesheet" />
<link href="/ldt/css/theme.css" rel="stylesheet" />
<link rel="icon" type="image/png" href="images/LDT_16.png" />
</head>

<body>


	<div id="title">
		<div class="container">
			<div class="row">
				<div class="span10">
					<img src="/ldt/images/Ldt_logo.png" alt="Lua Development Tools"></img>
				</div>
				<div class="span2">
					<div id="buildon" class="pull-right">
						<a href="../">
						  <img src="/ldt/images/buildonEclipse.png" alt="Build on Eclipse"></img>
					  </a>
				  </div>
				</div>
			</div>
		</div>
		</div>
		<!-- /title -->

		<div id="menu">
			<div class="container">
			<div class="row">
				<div class="span12">
						<ul class="nav nav-pills">
						<li ><a href="#documentation">Documentation</a></li>
						<li><a href="#installation" >Installation</a></li>
						<li><a href="#newandnoteworthy">New and Noteworthy</a></li>
						<li><a href="#source">Source Code</a></li>
						<li><a href="#support">Support</a></li>
						</ul>
					</div>
				</div>
			</div>
		</div>
		<!-- /menu -->

			<div id="intro">
				<div class="container">
			<div class="row">
				<div class="span6">
					<h2>Introduction</h2>
					<p><strong>Lua Development Tools (LDT)</strong> is about providing Lua developers with an IDE providing
						the user experience developers expect from any other tool dedicated
						to a static programming language.</p>
					<p>
						Like many other dynamic languages, Lua is so flexible that it is
						hard to analyze enough to provide relevant and powerful tooling.<br>
						LDT is using <strong>Metalua</strong>, to analyze Lua source code
						and provide nice user assistance.
					</p>
					<p>LDT is an Open Source tool, licensed under the EPL.</p>
				</div>
				<div class="span6">
					<img src="/ldt/images/allOsSplash.png" alt="LDT screen shots on several OS">
				</div>
			</div>
		</div>
	</div>
	<!--/intro-->

	<!--container-->
	<div class="container">
		<div class="row">
			<div class="span10">
				<div id="feature-carousel" class="carousel slide">
					<!-- Carousel items -->
					<div class="carousel-inner">
						<div class="item active">
							<img alt="Code assistance screenshot" src="/ldt/images/carousel/screenCodeCompletion.png">
							<div class="carousel-caption">
								<b>Code Assistance</b> &mdash; Still writing code, but quicker.
							</div>
						</div>
						<div class="item">
							<img alt="Debugger screenshot" src="/ldt/images/carousel/screenDebugger.png">
							<div class="carousel-caption">
								<b>Debugger</b> &mdash; Finally a tool enabling to watch what is going on in your application.
							</div>
						</div>
						<div class="item">
							<img alt="Code template screenshot" src="/ldt/images/carousel/screenTemplate.png">
							<div class="carousel-caption">
								<b>Code Template</b> &mdash; Use common statements quicker.
							</div>
						</div>
						<div class="item">
							<img alt="Syntax color screenshot" src="/ldt/images/carousel/screenSyntaxColoring.png">
							<div class="carousel-caption">
								<b>Syntax Coloring</b> &mdash;
								Just for getting code nicer to write and to read. Notice, <em>locals</em> in clear and <em>globals</em> in bold.
							</div>
						</div>
						<div class="item">
							<img alt="Error marker screenshot" src="/ldt/images/carousel/screenErrorMarker.png">
							<div class="carousel-caption">
								<b>Error Marker</b> &mdash; Where is my mistake? Let the editor show you.
							</div>
						</div>
						<div class="item">
							<img alt="Outline screenshot" src="/ldt/images/carousel/screenOutline.png">
							<div class="carousel-caption">
								<b>Outline</b> &mdash; Tired of scrolling?
							</div>
						</div>
						<div class="item">
							<img alt="Variable Highlight screenshot"
								src="/ldt/images/carousel/screenVariableHighlight.png">
							<div class="carousel-caption">
								<b>Variable Highlight</b> &mdash; Shows you all references to one variable.
							</div>
						</div>
						<div class="item">
							<img alt="Code formatter screenshot"
								src="/ldt/images/carousel/screenFormatter.png">
							<div class="carousel-caption">
								<strong>Code Formatter</strong> &mdash; You code, we indent.
							</div>
						</div>
						<div class="item">
							<img alt="Code Folding screenshot" src="/ldt/images/carousel/screenCodeFolding.png">
							<div class="carousel-caption">
								<strong>Code folding</strong> &mdash; File is too big, comments are too long? Here is a feature for you.
							</div>
						</div>
						<div class="item">
							<img alt="Go to Definition screenshot" src="/ldt/images/carousel/screenCodeNavigation.png">
							<div class="carousel-caption">
								<strong>Goto definition</strong> &mdash; Code navigation finally brought to Lua.
							</div>
						</div>
						<div class="item">
							<img alt="LDT running under Linux, Windows and Mac OSX" src="/ldt/images/carousel/screenCrossPlatform.png">
							<div class="carousel-caption">
								<strong>Cross-platform</strong> &mdash; <em>LDT</em> runs on Linux, OSX and Windows.
							</div>
						</div>
					</div>
					<!-- Carousel nav -->
					<a class="carousel-control left" href="#feature-carousel"
						data-slide="prev">&lsaquo;</a> <a class="carousel-control right"
						href="#feature-carousel" data-slide="next">&rsaquo;</a>
				</div>
			</div>
			<div class="span2">
			<h2>Features</h2>
				<ul id="features-list" onmouseover="">
					<li class="active-feature"><a onclick="carousel_go_to(0)">Code
							Assistance</a></li>
					<li><a onclick="carousel_go_to(1)">Debugger</a></li>
					<li><a onclick="carousel_go_to(2)">Code Template</a></li>
					<li><a onclick="carousel_go_to(3)">Syntax Coloring</a></li>
					<li><a onclick="carousel_go_to(4)">Error Markers</a></li>
					<li><a onclick="carousel_go_to(5)">Outline</a></li>
					<li><a onclick="carousel_go_to(6)">Variable Highlight</a></li>
					<li><a onclick="carousel_go_to(7)">Code Formatter</a></li>
					<li><a onclick="carousel_go_to(8)">Code Folding</a></li>
					<li><a onclick="carousel_go_to(9)">Goto Definition</a></li>
					<li><a onclick="carousel_go_to(10)">Cross Platform</a></li>
				</ul>
			</div>
		</div>

		<div class="row">
			<div class="span12">
				<h2 id="documentation">Documentation</h2>
				<p>
					All Documentation is available on the <a
						href="https://wiki.eclipse.org/LDT"
						target="_blank">Eclipse Wiki</a>, so feel free to contribute to
					improving it by fixing spelling mistakes, errors, or providing new
					content!
				</p>
				<p>
					LDT User Guide can be accessed directly from the Eclipse Help ("<strong>Help
						&gt; Help Content</strong>" menu).
				</p>
				<p>
					It is also available directly on the <a
						href="https://wiki.eclipse.org/LDT/User_Area/User_Guide"
						target="_blank">Eclipse Wiki</a>.
				</p>
			</div>
		</div>

		<div class="row">
			<div class="span12">
				<h2 id="installation">Installation</h2>
				<div class="row">
					<div class="span6">
						<h3>Standalone product</h3>
						<p>
							The no-brainer option, all at once, download ~60 MB
							and be all set.
						</p>
						<table class="table table-bordered table-condensed download-table">
							<thead>
								<tr>
									<th>Version</th>
									<th>Windows</th>
									<th>Mac OS X</th>
									<th>Linux</th>
								</tr>
							</thead>
							<tbody>
								<tr>
									<th rowspan="2">Stable release (1.4.1)</th>
									<td><a
										href="http://eclipse.org/downloads/download.php?file=/ldt/products/stable/1.4/1/org.eclipse.ldt.product-win32.win32.x86.zip">32-bit</a>
									</td>
									<td><strong>-</strong></td>
									<td><a
										href="http://eclipse.org/downloads/download.php?file=/ldt/products/stable/1.4.1/org.eclipse.ldt.product-linux.gtk.x86.tar.gz">32-bit</a>
									</td>
								</tr>
								<tr>
									<td><a
										href="http://eclipse.org/downloads/download.php?file=/ldt/products/stable/1.4.1/org.eclipse.ldt.product-win32.win32.x86_64.zip">64-bit</a>
									</td>
									<td><a
										href="http://eclipse.org/downloads/download.php?file=/ldt/products/stable/1.4.1/org.eclipse.ldt.product-macosx.cocoa.x86_64.tar.gz">64-bit</a>
									</td>
									<td><a
										href="http://eclipse.org/downloads/download.php?file=/ldt/products/stable/1.4.1/org.eclipse.ldt.product-linux.gtk.x86_64.tar.gz">64-bit</a>
									</td>
								</tr>
								<tr>
									<th rowspan="2">Current milestone (1.4.2RC1)</th>
									<td><a
										href="https://eclipse.org/downloads/download.php?file=/ldt/products/milestones/1.4.1RC2/org.eclipse.ldt.product-win32.win32.x86.zip">32-bit</a>
									</td>
									<td><strong>-</strong></td>
									<td><a
										href="https://eclipse.org/downloads/download.php?file=/ldt/products/milestones/1.4.1RC2/org.eclipse.ldt.product-linux.gtk.x86.tar.gz">32-bit</a>
									</td>
								</tr>
								<tr>
									<td><a
										href="https://eclipse.org/downloads/download.php?file=/ldt/products/milestones/1.4.1RC2/org.eclipse.ldt.product-win32.win32.x86_64.zip">64-bit</a>
									</td>
									<td><a
										href="https://eclipse.org/downloads/download.php?file=/ldt/products/milestones/1.4.1RC2/org.eclipse.ldt.product-macosx.cocoa.x86_64.tar.gz">64-bit</a>
									</td>
									<td><a
										href="https://eclipse.org/downloads/download.php?file=/ldt/products/milestones/1.4.1RC2/org.eclipse.ldt.product-linux.gtk.x86_64.tar.gz">64-bit</a>
									</td>
								</tr>
							</tbody>
						</table>
						<p>
							<strong>Note:</strong> Milestone versions are
							unstable. In case of bug, <a
							href="https://bugs.eclipse.org/bugs/enter_bug.cgi?product=LDT;component=LuaDevelopmentTools"
							target="_blank">tell us</a>. We fix them.
						</p>
					</div>
					<div class="span6">
						<h3>Existing Eclipse installation</h3>
						<p>
							So far only <em>milestones release and nightly builds</em> are available.
							<ul>
								<li>In your Eclipse 4.3+ go to <em>Help &gt; Install New Software...</em></li>
								<li>Add the following repository:</li>
									<ul><li>http://download.eclipse.org/ldt/releases/milestones/</li></ul>
								<li>Now you can install the <em>Lua Development Tools</em>.</li>
							</ul>
						</p>
						<p>
							<strong>Note:</strong> Our wiki explains everything about
							<a href="https://wiki.eclipse.org/LDT/User_Area/updatesites">our update-sites</a>.
						</p>
						<!--p>
							Add the following repository: <strong>http://download.eclipse.org/ldt/releases/stable</strong>
							from the "<strong>Help &gt; Install New Software...</strong>"
							menu of your Eclipse 4.3+ workbench, and then check the "Lua
							Development Tools" feature.<br> Should you want
							to install a different version than the latest stable one, check
							<a href="https://wiki.eclipse.org/LDT/User_Area/updatesites">on the
								wiki</a> the other update repositories available.
						</p>
						<p>
							Alternatively, you can install LDT using the Eclipse Marketplace.<br>
							Just drag and drop the following button into your running Eclipse
							workbench, and the installation will begin! <a
								href="http://marketplace.eclipse.org/marketplace-client-intro?mpc_install=150453"
								title="Drag and drop into a running Eclipse workspace to install Lua Development Tools">
								<img src="https://marketplace.eclipse.org/misc/installbutton.png">
							</a>
						</p-->
					</div>
				</div>
			</div>
		</div>

		<div class="row">

			<div class="span4">
				<h2 id="newandnoteworthy">New and noteworthy</h2>
				<p>Choose a version in the following list to see the new
					features added from the previous release.</p>
				<ul>
					<li><a href="https://wiki.eclipse.org/LDT/User_Area/New_Noteworthy/New_Noteworthy_1.3">Version 1.3.1</a></li>
					<li><a href="https://wiki.eclipse.org/LDT/User_Area/New_Noteworthy/New_Noteworthy_1.2">Version 1.2.0</a></li>
					<li><a href="https://wiki.eclipse.org/LDT/User_Area/New_Noteworthy/New_Noteworthy_1.1">Version 1.1.0</a></li>
					<li><a href="https://wiki.eclipse.org/LDT/User_Area/New_Noteworthy/New_Noteworthy_1.0">Version 1.0.2</a></li>
					<li><a href="https://wiki.eclipse.org/LDT/User_Area/New_Noteworthy/New_Noteworthy_0.9">Version 0.9.0</a></li>
					<li><a href="https://wiki.eclipse.org/LDT/User_Area/New_Noteworthy/New_Noteworthy_0.8">Version 0.8.2</a></li>
				</ul>
			</div>

			<div class="span4">
				<h2 id="support">Support</h2>
				<p>
					If you run into trouble while installing or using LDT, you are
					encouraged to explain your issue on the <a
						href="https://www.eclipse.org/forums/eclipse.ldt"
						target="_blank">LDT forum</a>.
				</p>
				<p>
					If you encounter a bug, or want to make the development team aware
					of a feature request you have, you can <a
						href="https://bugs.eclipse.org/bugs/enter_bug.cgi?product=LDT;component=LuaDevelopmentTools"
						target="_blank">open a bug</a> against LDT.
				</p>
			</div>

			<div class="span4">
				<h2 id="source">Source code</h2>
				<p>
					<a href="https://git.eclipse.org/c/ldt/org.eclipse.ldt.git/"
					target="_blank">The git repository of LDT is available</a>.
					For building, check
					<a href="https://wiki.eclipse.org/LDT/Developer_Area/Building_LDT_from_source">
					   instructions</a>.
				</p>
			</div>
		</div>
	</div>
		<!--/container-->

<div class="footer">
	<div class="container">
		<ul class="nav nav-pills row">
			<li><a href="http://www.eclipse.org/legal/privacy.php"
				target="_blank">Privacy Policy</a></li>
			<li><a href="http://www.eclipse.org/legal/termsofuse.php"
				target="_blank">Terms of Use</a></li>
			<li><a href="http://www.eclipse.org/legal/copyright.php"
				target="_blank">Copyright Agent</a></li>
			<li><a href="http://www.eclipse.org/legal/" target="_blank">Legal</a></li>
			<li><a
				href="http://www.eclipse.org/forums/eclipse.ldt"
				target="_blank">Ask Questions</a></li>
			<li class="pull-right">Copyright © 2014 The Eclipse Foundation.
				All Rights Reserved.</li>
		</ul>
	</div>
</div>


	<!-- JS is at the end of the document so the pages load faster -->
	<script src="/ldt/js/jquery.js"></script>
	<script src="/ldt/bootstrap/js/bootstrap.min.js"></script>

	<!-- Carousel script -->
	<script type="text/javascript">
		// initialize carousel
		$('#feature-carousel').carousel({
			interval : 0
		});

		var pause = true

		// define utilities function
		function carousel_go_to(index) {
			$('#feature-carousel').carousel('pause');
			pause = true

			console.log(carousel_get_activefeature_index() + " " + index)
			if (carousel_get_activefeature_index() != index) {
				carousel_highlight_activefeature(index);
				$('#feature-carousel').carousel(index);
			}
		};

		function carousel_highlight_activefeature(currentindex) {
			$('#features-list li').each(function(index, domEle) {
				if (index == currentindex)
					domEle.className = "active-feature";
				else
					domEle.className = "";
			});
		};

		function carousel_get_activefeature_index() {
			var res = -1
			$('#features-list li').each(function(index, domEle) {
				if (domEle.className == "active-feature")
					res = index
			});
			return res;
		};

		// add listener
		$('#features-list').hover(null, function() {
			pause = false
			$('#feature-carousel').carousel('cycle')
		});

		$('#features-list li').click(function() {
			var index = $("#features-list li").index(this);
			carousel_go_to(index);
		});

		$('#feature-carousel').bind(
				'slid',
				function(e) {
					var currentindex = ($('#feature-carousel .active')
								.index('#feature-carousel .item'));

					// change class
					carousel_highlight_activefeature(currentindex);
				});
	</script>
</body>
</html>
