# Set up IDEA_PROPERTIES environment variable to specify custom location of this properties file like
# SET IDEA_PROPERTIES=c:\ideaconfig\idea.properties
# before launching idea.
# If not specified it is searched according following sequence (first successful is used).
# 1. ${user.home}
# 2. ${idea.home}/bin

# Use ${idea.home} macro to specify location relative to IDEA installation home
# Also use ${xxx} where xxx is any java property (including defined in previous lines of this file) to refer to its value
# Note for Windows users: please make sure you're using forward slashes. I.e. c:/idea/system

#---------------------------------------------------------------------
# Uncomment this option if you want to customize path to IDEA config folder. Make sure you're using forward slashes
#---------------------------------------------------------------------
idea.config.path=${idea.home}/config

#---------------------------------------------------------------------
# Uncomment this option if you want to customize path to IDEA system folder. Make sure you're using forward slashes
#---------------------------------------------------------------------
idea.system.path=${idea.home}/system

#---------------------------------------------------------------------
# Uncomment this option if you want to customize path to user installed plugins folder. Make sure you're using forward slashes
#---------------------------------------------------------------------
idea.plugins.path=${idea.home}/config/plugins

#---------------------------------------------------------------------
# Maximum file size (kilobytes) IDEA should provide intellisense for.
# The larger file is the slower its editor works and higher overall system memory requirements are
# if intellisense is enabled. Remove this property or set to very large number if you need
# intellisense for any files available regardless their size.
# Please note this option doesn't operate with Java files. Regardless of the option value intellisense will anyway stay there.
#---------------------------------------------------------------------
idea.max.intellisense.filesize=2048

#---------------------------------------------------------------------
# There are two possible values of idea.popup.weight property: "heavy" and "medium".
# If you have WM configured as "Focus follows mouse with Auto Raise" then you have to
# set this property to "medium". It prevents problems with popup menus on some
# configurations.
# ---------------------------------------------------------------------
idea.popup.weight=heavy

#----------------------------------------------------------------------
# Disabling this property may lead to visual glitches like blinking and fail to repaint
# on certain display adapter cards.
#----------------------------------------------------------------------
sun.java2d.noddraw=true

#----------------------------------------------------------------------
# Removing this property may lead to editor performance degradation under Windows.
#----------------------------------------------------------------------
sun.java2d.d3d=false

#-----------------------------------------------------------------------
# IDEA copies library jars to prevent their locking. If copying is not desirable, specify "true"
#-----------------------------------------------------------------------
idea.jars.nocopy=false

#----------------------------------------------------------------------
# Configure if a special launcher should be used when running processes from within IDEA.
# Using Launcher enables "soft exit" and "thread dump" features
#----------------------------------------------------------------------
idea.no.launcher=false

#-----------------------------------------------------------------------
# The VM option value to be used start the JVM in debug mode.
# Some environments define it in a different way (-XXdebug in Oracle VM)
#-----------------------------------------------------------------------
idea.xdebug.key=-Xdebug

#-----------------------------------------------------------------------
# Switch into JMX 1.0 compatible mode
# Uncomment this option to be able to run IDEA using J2SDK 1.5 while working
# with application servers (like WebLogic) running 1.4
#-----------------------------------------------------------------------
#jmx.serial.form=1.0

#-----------------------------------------------------------------------
# Uncomment this option if you don't like to receive notifications about
# fatal errors that happen to IDEA or plugins installed.
#-----------------------------------------------------------------------
idea.fatal.error.notification=disabled

# Workaround for slow scrolling in JDK6
swing.bufferPerWindow=false

#-----------------------------------------------------------------------
# Uncomment this property to prevent IDEA from throwing ProcessCanceledException when user activity
# detected. This option is only useful for plugin developers, while debugging PSI related activities
# performed in background error analysis thread.
# DO NOT UNCOMMENT THIS UNLESS YOU'RE DEBUGGING IDEA ITSELF. Significant slowdowns and lockups will happen otherwise.
#-----------------------------------------------------------------------
#idea.ProcessCanceledException=disabled

#----------------------------------------------------------------------
# Removing this property may lead to editor performance degradation under X-Windows.
#----------------------------------------------------------------------
sun.java2d.pmoffscreen=false

#---------------------------------------------------------------------
# Maximum size (kilobytes) IDEA will load for showing past file contents -
# in Show Diff or when calculating Digest Diff
#---------------------------------------------------------------------
#idea.max.vcs.loaded.size.kb=20480