# 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.cdt.ui.CPerspective

# 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

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

#------------------------------------------------------------------------------
# Embedded CPP customizations.

org.eclipse.ui.ide/SAVE_ALL_BEFORE_BUILD=true

# Disable build all
org.eclipse.core.resources/description.autobuilding=false

# Disable some auto-builds.
org.eclipse.cdt.core/build.all.configs.enabled=false
org.eclipse.cdt.core/build.proj.ref.configs.enabled=false
org.eclipse.cdt.make.core/org.eclipse.cdt.make.core.enableAutoBuild=false

# Use Doxygen for documentation.
org.eclipse.cdt.core/doctool/workspace.default=org.eclipse.cdt.ui.doxygen
# org.eclipse.cdt.core/doxygen/doxygen_new_line_after_brief=true
# org.eclipse.cdt.core/doxygen/doxygen_use_brief_tag=false
# org.eclipse.cdt.core/doxygen/doxygen_use_javadoc_tags=true
# org.eclipse.cdt.core/doxygen/doxygen_use_pre_tag=false
# org.eclipse.cdt.core/doxygen/doxygen_use_structural_commands=false

# Always launch the previous debug config.
org.eclipse.cdt.debug.core/BreakpointActionManager.actionData=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?>\n<breakpointActionData/>\n

# ?
org.eclipse.cdt.dsf.ui/useAnnotationsPrefPage=true

org.eclipse.cdt.ui/buildConsoleWrapLinesMax=50000
org.eclipse.cdt.ui/buildConsoleLines=50000
org.eclipse.cdt.ui/buildConsoleWrapLines=true
org.eclipse.cdt.ui/formatter_profile=org.eclipse.cdt.ui.default.gnu_profile
org.eclipse.cdt.ui/formatter_settings_version=1
org.eclipse.cdt.ui/sourceHoverBackgroundColor=255,255,255

org.eclipse.core.resources/encoding=UTF-8

org.eclipse.debug.ui/Console.highWaterMark=88000
org.eclipse.debug.ui/Console.limitConsoleOutput=false
org.eclipse.debug.ui/org.eclipse.debug.ui.UseContextualLaunch=false

# Disable the Arduinish launch bar
org.eclipse.launchbar.ui.controls/enableLaunchBar=false

org.eclipse.ui.editors/printMargin=true

# Store settings in project, not in workspace
org.eclipse.cdt.core/language.settings.providers.workspace.prefs.toggle=false

# enable GDB trace.
org.eclipse.cdt.dsf.gdb/tracesEnable=true
org.eclipse.cdt.dsf.gdb/maxGdbTraces=500000

# Debug console
org.eclipse.cdt.dsf.gdb/org.eclipse.cdt.dsf.gdb.consoleBufferLines=50000

# (not effective) C/C++ -> Indexer -> Use active build config
org.eclipse.cdt.core/indexer/indexAllFiles=false
org.eclipse.cdt.core/indexer/indexAllHeaderVersions=false
org.eclipse.cdt.core/indexer/indexAllVersionsSpecificHeaders=
org.eclipse.cdt.core/indexer/indexOnOpen=false
org.eclipse.cdt.core/indexer/indexUnusedHeadersWithDefaultLang=false
org.eclipse.cdt.core/indexer/indexerId=org.eclipse.cdt.core.fastIndexer
org.eclipse.cdt.core/indexer/skipFilesLargerThanMB=8
org.eclipse.cdt.core/indexer/skipImplicitReferences=false
org.eclipse.cdt.core/indexer/skipIncludedFilesLargerThanMB=16
org.eclipse.cdt.core/indexer/skipMacroReferences=false
org.eclipse.cdt.core/indexer/skipReferences=false
org.eclipse.cdt.core/indexer/skipTypeReferences=false
org.eclipse.cdt.core/indexer/updatePolicy=0
org.eclipse.cdt.core/indexer/useHeuristicIncludeResolution=true

# (not effective) Show source roots
org.eclipse.cdt.core/org.eclipse.cdt.core.showSourceRootsAtTopLevelOfProject=false

