# 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.ui.resourcePerspective

# 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

# 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
