<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html lang="en">
<head>
<meta name="copyright" content="Copyright (c) IBM Corporation and others 2006, 2013. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript" type="text/javascript" src="PLUGINS_ROOT/org.eclipse.help/livehelp.js"></script>
<title>General Plug-in Development Preferences</title>
<link href="../../book.css" rel="stylesheet" type="text/css">
</head>
<body>
<h1>General Plug-in Development Preferences</h1>
<p><img src="../../images/preferences/plugin_development.png" alt="Main Preference Page" ></p>

<h2>General Settings</h2>
<p><strong>Prompt before overwriting build.xml files while exporting</strong> - 
When selected, a dialog will be opened before deleting your build.xml files when an export operation starts.
</p>

<p><strong>Update stale manifest files prior to launching</strong> - 
This option only affects manifest files using automated management of dependencies.  Prior to launching, the manifest files will be updated with any necessary dependency changes.  This option is off by default as it decreases launch performance.
</p>

<p><strong>Prompt before deleting a target definition file</strong> - 
When selected, a dialog will be opened before deleting a target definition file when a target definition is removed from the <a href="target_platform.htm">Target Platform</a> preference page.
</p>

<p><strong>Include all plug-ins from target in Java workspace scope</strong> - 
When selected, all the plug-ins from the active target platform will be added to the Java search scope.  Adding plug-ins to the java search scope will allow the plug-in contents to show up when doing Java searches and using the Open Type Dialog.  When this option is on, if any plug-in is removed from Java search, the preference will be turned off.
</p>

<p><strong>Show current target platform in status bar</strong> - 
When selected, adds a new item to the window status bar displaying the name of the current target platform. The tooltip displayed when hovering over the text will display any errors in the target and double clicking on it will open the <b>Target Platform</b> preference page.
</p>
<p><img src="../../images/preferences/target_statusbar.png" alt="Target platform status line item" ></p>  

<p><strong>Workspace plug-ins override target platform plug-ins with the same id</strong> - 
When selected, workspace plug-ins override target platform plug-ins. If one or more versions of a plug-in is open in the workspace, then all plug-ins with the same plug-in id get removed from the target platform. When this option is off, all plug-in versions from workspace and target platform are being used.
</p>

<p><strong>Disable API analysis builder</strong> - 
When selected, it disables API analysis builder totally.
</p>

<p><strong>Enable SWT reporting of non-disposed resources when creating a new launch configuration</strong> - 
Add <a href="PLUGINS_ROOT/org.eclipse.platform.doc.isv/reference/misc/runtime-options.html#swtreportNonDisposed"><code>-Dorg.eclipse.swt.graphics.Resource.reportNonDisposed=true</code></a> to VM arguments when creating a new launch configuration.
</p>

<h2>Test plug-in detection</h2>
<p>If the regular expression specified here is not empty, it is applied to the plug-in project's name when creating a plug-in project or when using <a href="../pde_actions/update_classpaths.htm">Update Classpath</a>, and 
if it matches, the source folders will be marked to contain test sources in the project's <a href="PLUGINS_ROOT/org.eclipse.jdt.doc.user/reference/ref-properties-build-path.htm#warn">Java Build Path</a> settings.</p>
<p>The default value for this setting matches if the project's name ends with "<code>.test</code>" or "<code>.tests</code>" or if it contains "<code>.tests.</code>"</p>
<p>A documentation of the regular expression syntax can be found in the Javadoc of <code>java.util.regex.Pattern</code>.</p>
<h2>Plug-in presentation</h2>
<p>By default, whenever a plug-in or a feature is presented in the UI (i.e. in the outline view, Plug-ins view, editors, etc.), the label shows the plug-in or feature ID followed by the plug-in or feature version. </p>
<p>The <strong>Plug-in presentation</strong> preference is a global setting that allows you to show an alternate label for plug-ins and features composed of the (translated) name of the plug-in or feature followed by the plug-in or feature version. Source plug-in are filtered from views by default.  Selecting <strong>Show source plug-ins</strong> will make them visible in the UI.</p>
  
<h2>Workspace location for new Eclipse Application launch configurations</h2>
<p>When a new Eclipse Application launch configuration is created a workspace location is chosen for you.  This preference allows a different default setting to be chosen.  Selecting <strong>Use as workspace location</strong> will make whatever is written the default location.  If <strong>Append launch configuration name to this location</strong> is selected the launch configuration name will be appended to the location.</p>

<h2>Workspace location for new JUnit Plug-in Test launch configurations</h2>
<p>When a new JUnit Plug-in Test launch configuration is created a workspace location is chosen for you.  This preference allows a different default setting to be chosen.  Selecting <strong>Use as workspace location</strong> will make whatever is written the default location.  If <strong>Append launch configuration name to this location</strong> is selected the launch configuration name will be appended to the location.</p>

<h3 class="related">Related references</h3>
  <a href="preferences.htm">PDE Preferences</a>

</body>
</html>
