# plugin_customization.ini 
# sets default values for plug-in-specific preferences
# keys are qualified by plug-in id
# e.g., com.example.acmeplugin/myproperty=myvalue
# java.io.Properties file (ISO 8859-1 with "\" escapes)
# "%key" are externalized strings defined in plugin_customization.properties
# This file does not need to be translated.

# Property "org.eclipse.ui/defaultPerspectiveId" controls the 
# perspective that the workbench opens initially
org.eclipse.ui/defaultPerspectiveId=org.eclipse.php.perspective

# new-style tabs by default
org.eclipse.ui/SHOW_TRADITIONAL_STYLE_TABS=false

# put the perspective switcher on the top right
org.eclipse.ui/DOCK_PERSPECTIVE_BAR=topRight

# show progress on startup
org.eclipse.ui/SHOW_PROGRESS_ON_STARTUP=true

# show build id in the splash - only for nightly, integration, and milestone builds
org.eclipse.ui.workbench/SHOW_BUILDID_ON_STARTUP=false

# use the window set by default
org.eclipse.ui/USE_WINDOW_WORKING_SET_BY_DEFAULT=true

# lightweight auto-refresh on access by default
org.eclipse.core.resources/refresh.lightweight.enabled=true

# enable line number ruler in all textual editors by default
org.eclipse.ui.editors/lineNumberRuler=true

# When opening an unassociated file or file type, Marketplace is checked for compatible extensions
org.eclipse.ui.ide/unassociatedEditorStrategy=org.eclipse.epp.internal.mpc.ui.askMarketPlace

# Intro-related preferences (since 3.2)

# Welcome theme to use
org.eclipse.ui.intro/INTRO_THEME = org.eclipse.ui.intro.universal.solstice

# Root page links to show in the Universal Welcome
org.eclipse.ui.intro.universal/INTRO_ROOT_PAGES = overview,tutorials,samples,whatsnew
# Use quadrant root page with quicklinks
org.eclipse.ui.intro/INTRO_START_PAGE = qroot
org.eclipse.ui.intro/INTRO_HOME_PAGE = qroot

# Initial page layout of the Universal Welcome
org.eclipse.ui.intro.universal/INTRO_DATA = product:introData.xml

# Order help books in table of contents
org.eclipse.help/HELP_DATA = helpData.xml

# check for updates once a week
# https://bugs.eclipse.org/bugs/show_bug.cgi?id=421779
# https://bugs.eclipse.org/bugs/show_bug.cgi?id=498116
org.eclipse.equinox.p2.ui.sdk.scheduler/enabled=true
org.eclipse.equinox.p2.ui.sdk.scheduler/schedule=on-fuzzy-schedule
org.eclipse.equinox.p2.ui.sdk.scheduler/fuzzy_recurrence=Once a week
org.eclipse.equinox.p2.ui.sdk.scheduler/download=true

# disable the Oomph preference recorder - bug 470654, bug 470430
# https://bugs.eclipse.org/bugs/show_bug.cgi?id=470654
# https://bugs.eclipse.org/bugs/show_bug.cgi?id=470430
org.eclipse.oomph.setup.ui/enable.preference.recorder=false

# Ensure that the Lucene indexer is the active one if multiple indexers are available
org.eclipse.dltk.core/org.eclipse.dltk.core.indexer.id=org.eclipse.dltk.core.index.lucene.indexer

# Invert colors in terminal, i.e. black background
org.eclipse.tm.terminal.control/TerminalPrefInvertColors=true

# Add .buildpath to the default file filtering of synchronized projects
org.eclipse.ptp.rdt.sync.core/pattern/0/rule=-/.project
org.eclipse.ptp.rdt.sync.core/pattern/1/rule=-/.cproject
org.eclipse.ptp.rdt.sync.core/pattern/2/rule=-/.buildpath
org.eclipse.ptp.rdt.sync.core/pattern/3/rule=-/.settings/
org.eclipse.ptp.rdt.sync.core/pattern/4/rule=-coredir.[0-9]*/
org.eclipse.ptp.rdt.sync.core/pattern/5/rule=-core
org.eclipse.ptp.rdt.sync.core/pattern/6/rule=-\!core/
org.eclipse.ptp.rdt.sync.core/pattern/7/rule=-core.[0-9]*
org.eclipse.ptp.rdt.sync.core/pattern/8/rule=-\!core.[0-9]*/
org.eclipse.ptp.rdt.sync.core/pattern/9/rule=-CVS/
org.eclipse.ptp.rdt.sync.core/pattern/num-patterns=10
