diff --git a/platform/lang-api/src/com/intellij/psi/codeStyle/CodeStyleSettings.java b/platform/lang-api/src/com/intellij/psi/codeStyle/CodeStyleSettings.java
index 2b2b110514a6..3e874736a04b 100644
--- a/platform/lang-api/src/com/intellij/psi/codeStyle/CodeStyleSettings.java
+++ b/platform/lang-api/src/com/intellij/psi/codeStyle/CodeStyleSettings.java
@@ -266,6 +266,12 @@ public class CodeStyleSettings extends CommonCodeStyleSettings implements Clonea
*/
@Deprecated
public int RIGHT_MARGIN = 120;
+ /**
+ * Do not use this field directly since it doesn't reflect a setting for a specific language which may
+ * overwrite this one. Call {@link #isWrapOnTyping(Language)} method instead.
+ *
+ * @see #WRAP_ON_TYPING
+ */
public boolean WRAP_WHEN_TYPING_REACHES_RIGHT_MARGIN = false;
@@ -957,4 +963,23 @@ public class CodeStyleSettings extends CommonCodeStyleSettings implements Clonea
public void setDefaultRightMargin(int rightMargin) {
RIGHT_MARGIN = rightMargin;
}
+
+ /**
+ * Defines whether or not wrapping should occur when typing reaches right margin.
+ * @param language The language to check the option for or null for a global option.
+ * @return True if wrapping on right margin is enabled.
+ */
+ public boolean isWrapOnTyping(@Nullable Language language) {
+ if (language != null) {
+ CommonCodeStyleSettings langSettings = getCommonSettings(language);
+ if (langSettings != null) {
+ if (langSettings.WRAP_ON_TYPING != WrapOnTyping.DEFAULT.intValue) {
+ return langSettings.WRAP_ON_TYPING == WrapOnTyping.WRAP.intValue;
+ }
+ }
+ }
+ //noinspection deprecation
+ return WRAP_WHEN_TYPING_REACHES_RIGHT_MARGIN;
+ }
+
}
diff --git a/platform/lang-api/src/com/intellij/psi/codeStyle/CodeStyleSettingsCustomizable.java b/platform/lang-api/src/com/intellij/psi/codeStyle/CodeStyleSettingsCustomizable.java
index 5ddf99d92b58..f639a607bb3c 100644
--- a/platform/lang-api/src/com/intellij/psi/codeStyle/CodeStyleSettingsCustomizable.java
+++ b/platform/lang-api/src/com/intellij/psi/codeStyle/CodeStyleSettingsCustomizable.java
@@ -113,6 +113,7 @@ public interface CodeStyleSettingsCustomizable {
enum WrappingOrBraceOption {
RIGHT_MARGIN,
+ WRAP_ON_TYPING,
KEEP_CONTROL_STATEMENT_IN_ONE_LINE,
LINE_COMMENT_AT_FIRST_COLUMN,
BLOCK_COMMENT_AT_FIRST_COLUMN,
@@ -287,6 +288,17 @@ public interface CodeStyleSettingsCustomizable {
CommonCodeStyleSettings.NEXT_LINE_SHIFTED2
};
+ String[] WRAP_ON_TYPING_OPTIONS = {
+ ApplicationBundle.message("wrapping.wrap.on.typing.no.wrap"),
+ ApplicationBundle.message("wrapping.wrap.on.typing.wrap"),
+ ApplicationBundle.message("wrapping.wrap.on.typing.default")
+ };
+ int [] WRAP_ON_TYPING_VALUES = {
+ CommonCodeStyleSettings.WrapOnTyping.NO_WRAP.intValue,
+ CommonCodeStyleSettings.WrapOnTyping.WRAP.intValue,
+ CommonCodeStyleSettings.WrapOnTyping.DEFAULT.intValue
+ };
+
void showAllStandardOptions();
void showStandardOptions(String... optionNames);
diff --git a/platform/lang-api/src/com/intellij/psi/codeStyle/CommonCodeStyleSettings.java b/platform/lang-api/src/com/intellij/psi/codeStyle/CommonCodeStyleSettings.java
index 6c01003b365d..f90ddcaf56c3 100644
--- a/platform/lang-api/src/com/intellij/psi/codeStyle/CommonCodeStyleSettings.java
+++ b/platform/lang-api/src/com/intellij/psi/codeStyle/CommonCodeStyleSettings.java
@@ -890,6 +890,23 @@ public class CommonCodeStyleSettings {
public int FORCE_REARRANGE_MODE = REARRANGE_ACCORDIND_TO_DIALOG;
+ public enum WrapOnTyping {
+ DEFAULT(-1),
+ NO_WRAP (0),
+ WRAP (1);
+
+ public int intValue;
+
+ WrapOnTyping(int i) {
+ this.intValue = i;
+ }
+ }
+
+ /**
+ * Defines if wrapping should occur when typing reaches right margin. Do not use a value of this field directly, call
+ * {@link CodeStyleSettings#isWrapOnTyping(Language)} method instead.
+ */
+ public int WRAP_ON_TYPING = WrapOnTyping.DEFAULT.intValue;
//-------------------------Indent options-------------------------------------------------
public static class IndentOptions implements JDOMExternalizable, Cloneable {
diff --git a/platform/lang-impl/src/com/intellij/application/options/codeStyle/WrappingAndBracesPanel.java b/platform/lang-impl/src/com/intellij/application/options/codeStyle/WrappingAndBracesPanel.java
index 098bd5b5f7aa..66b398a83250 100644
--- a/platform/lang-impl/src/com/intellij/application/options/codeStyle/WrappingAndBracesPanel.java
+++ b/platform/lang-impl/src/com/intellij/application/options/codeStyle/WrappingAndBracesPanel.java
@@ -61,6 +61,7 @@ public class WrappingAndBracesPanel extends OptionTableWithPreviewPanel {
@Override
protected void initTables() {
addOption("RIGHT_MARGIN", ApplicationBundle.message("editbox.right.margin.columns"), null, 0, 999, -1, ApplicationBundle.message("settings.code.style.default.general"));
+ addOption("WRAP_ON_TYPING", ApplicationBundle.message("wrapping.wrap.on.typing"), null, WRAP_ON_TYPING_OPTIONS, WRAP_ON_TYPING_VALUES);
addOption("KEEP_LINE_BREAKS", ApplicationBundle.message("wrapping.keep.line.breaks"), WRAPPING_KEEP);
addOption("KEEP_FIRST_COLUMN_COMMENT", ApplicationBundle.message("wrapping.keep.comment.at.first.column"), WRAPPING_KEEP);
diff --git a/platform/lang-impl/src/com/intellij/codeInsight/editorActions/AutoHardWrapHandler.java b/platform/lang-impl/src/com/intellij/codeInsight/editorActions/AutoHardWrapHandler.java
index 6184c6741236..04916af5377f 100644
--- a/platform/lang-impl/src/com/intellij/codeInsight/editorActions/AutoHardWrapHandler.java
+++ b/platform/lang-impl/src/com/intellij/codeInsight/editorActions/AutoHardWrapHandler.java
@@ -17,6 +17,7 @@ package com.intellij.codeInsight.editorActions;
import com.intellij.codeInsight.template.TemplateManager;
import com.intellij.formatting.FormatConstants;
+import com.intellij.lang.Language;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.psi.formatter.WhiteSpaceFormattingStrategy;
import com.intellij.ide.DataManager;
@@ -47,7 +48,7 @@ public class AutoHardWrapHandler {
/**
* This key is used as a flag that indicates if 'auto wrap line on typing' activity is performed now.
*
- * @see CodeStyleSettings#WRAP_WHEN_TYPING_REACHES_RIGHT_MARGIN
+ * @see CodeStyleSettings#isWrapOnTyping(Language)
*/
public static final Key AUTO_WRAP_LINE_IN_PROGRESS_KEY = new Key("AUTO_WRAP_LINE_IN_PROGRESS");
diff --git a/platform/lang-impl/src/com/intellij/psi/impl/source/codeStyle/CodeStyleFacadeImpl.java b/platform/lang-impl/src/com/intellij/psi/impl/source/codeStyle/CodeStyleFacadeImpl.java
index 81eda35222dd..914d225f802b 100644
--- a/platform/lang-impl/src/com/intellij/psi/impl/source/codeStyle/CodeStyleFacadeImpl.java
+++ b/platform/lang-impl/src/com/intellij/psi/impl/source/codeStyle/CodeStyleFacadeImpl.java
@@ -74,10 +74,16 @@ public class CodeStyleFacadeImpl extends CodeStyleFacade {
}
@Override
+ @Deprecated
public boolean isWrapWhenTypingReachesRightMargin() {
return CodeStyleSettingsManager.getSettings(myProject).WRAP_WHEN_TYPING_REACHES_RIGHT_MARGIN;
}
+ @Override
+ public boolean isWrapOnTyping(@Nullable Language language) {
+ return CodeStyleSettingsManager.getSettings(myProject).isWrapOnTyping(language);
+ }
+
@Override
public int getTabSize(final FileType fileType) {
return CodeStyleSettingsManager.getSettings(myProject).getTabSize(fileType);
diff --git a/platform/platform-api/src/com/intellij/codeStyle/CodeStyleFacade.java b/platform/platform-api/src/com/intellij/codeStyle/CodeStyleFacade.java
index 0bc7ed42febb..c3c4c36ac0ad 100644
--- a/platform/platform-api/src/com/intellij/codeStyle/CodeStyleFacade.java
+++ b/platform/platform-api/src/com/intellij/codeStyle/CodeStyleFacade.java
@@ -56,8 +56,17 @@ public abstract class CodeStyleFacade {
public abstract int getRightMargin(Language language);
+ /**
+ * @return True if wrap on typing is enabled
+ * @deprecated Use isWrapOnTyping(language) instead
+ */
public abstract boolean isWrapWhenTypingReachesRightMargin();
+ @SuppressWarnings("deprecation")
+ public boolean isWrapOnTyping(@Nullable Language language) {
+ return isWrapWhenTypingReachesRightMargin();
+ }
+
public abstract int getTabSize(final FileType fileType);
public abstract boolean useTabCharacter(final FileType fileType);
diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/impl/SettingsImpl.java b/platform/platform-impl/src/com/intellij/openapi/editor/impl/SettingsImpl.java
index ed14e128a804..3ab014cb4344 100644
--- a/platform/platform-impl/src/com/intellij/openapi/editor/impl/SettingsImpl.java
+++ b/platform/platform-impl/src/com/intellij/openapi/editor/impl/SettingsImpl.java
@@ -213,7 +213,7 @@ public class SettingsImpl implements EditorSettings {
public boolean isWrapWhenTypingReachesRightMargin(Project project) {
return myWrapWhenTypingReachesRightMargin != null ?
myWrapWhenTypingReachesRightMargin.booleanValue() :
- CodeStyleFacade.getInstance(project).isWrapWhenTypingReachesRightMargin();
+ CodeStyleFacade.getInstance(project).isWrapOnTyping(myLanguage);
}
@Override
diff --git a/platform/platform-resources-en/src/messages/ApplicationBundle.properties b/platform/platform-resources-en/src/messages/ApplicationBundle.properties
index 813ce4e8b6a7..1e55dc90d1d4 100644
--- a/platform/platform-resources-en/src/messages/ApplicationBundle.properties
+++ b/platform/platform-resources-en/src/messages/ApplicationBundle.properties
@@ -136,6 +136,11 @@ button.remove.r=&Remove
wrapping.and.braces=Wrapping and Braces
+wrapping.wrap.on.typing=Wrap on typing
+wrapping.wrap.on.typing.no.wrap=No
+wrapping.wrap.on.typing.wrap=Yes
+wrapping.wrap.on.typing.default=Default
+
wrapping.keep.when.reformatting=Keep when reformatting
wrapping.keep.line.breaks=Line breaks
wrapping.keep.comment.at.first.column=Comment at first column