diff -r 35bd7c766760 web.indent/nbproject/project.xml --- a/web.indent/nbproject/project.xml Thu Jul 10 10:45:30 2014 +0200 +++ b/web.indent/nbproject/project.xml Thu Jul 10 12:34:37 2014 +0200 @@ -24,6 +24,15 @@ + org.netbeans.modules.editor.settings + + + + 1 + 1.53 + + + org.netbeans.modules.editor.util diff -r 35bd7c766760 web.indent/src/org/netbeans/modules/web/indent/api/support/AbstractIndenter.java --- a/web.indent/src/org/netbeans/modules/web/indent/api/support/AbstractIndenter.java Thu Jul 10 10:45:30 2014 +0200 +++ b/web.indent/src/org/netbeans/modules/web/indent/api/support/AbstractIndenter.java Thu Jul 10 12:34:37 2014 +0200 @@ -55,7 +55,10 @@ import java.util.TreeSet; import java.util.logging.Level; import java.util.logging.Logger; +import java.util.prefs.Preferences; import javax.swing.text.BadLocationException; +import javax.swing.text.Document; +import org.netbeans.api.editor.settings.SimpleValueNames; import org.netbeans.api.lexer.Language; import org.netbeans.api.lexer.Token; import org.netbeans.api.lexer.TokenId; @@ -66,6 +69,7 @@ import org.netbeans.modules.web.indent.api.embedding.JoinedTokenSequence; import org.netbeans.modules.web.indent.api.embedding.VirtualSource; import org.netbeans.modules.editor.indent.api.IndentUtils; +import org.netbeans.modules.editor.indent.spi.CodeStylePreferences; import org.netbeans.modules.editor.indent.spi.Context; import org.netbeans.modules.web.indent.api.LexUtilities; import org.openide.util.Exceptions; @@ -97,9 +101,29 @@ public AbstractIndenter(Language language, Context context) { this.language = language; this.context = context; - indentationSize = IndentUtils.indentLevelSize(getDocument()); + indentationSize = indentLevelSize(getDocument(), language.mimeType()); formattingContext = new IndenterFormattingContext(getDocument()); } + + //copied from org.netbeans.modules.editor.indent.api.IndentUtils as we need + //to pass a second parameter to the CodeStylePreferences.get(doc) method. + private static int indentLevelSize(Document doc, String mimeType) { + Preferences prefs = CodeStylePreferences.get(doc, mimeType).getPreferences(); + int indentLevel = prefs.getInt(SimpleValueNames.INDENT_SHIFT_WIDTH, -1); + + if (indentLevel < 0) { + boolean expandTabs = prefs.getBoolean(SimpleValueNames.EXPAND_TABS, true); + if (expandTabs) { + indentLevel = prefs.getInt(SimpleValueNames.SPACES_PER_TAB, 4); + } else { + indentLevel = prefs.getInt(SimpleValueNames.TAB_SIZE, 8); + } + } + + assert indentLevel >= 0 : "Invalid indentLevelSize " + indentLevel + " for " + doc; //NOI18N + return indentLevel; + } + public final IndenterFormattingContext createFormattingContext() { return formattingContext;