PY-32109 Use the latest supported language version for the example in colorscheme settings

This commit is contained in:
Mikhail Golubev
2018-11-21 18:46:03 +03:00
parent 8e95e3f951
commit 84aa9b4bf5
2 changed files with 16 additions and 5 deletions
@@ -34,6 +34,14 @@ public class PySyntaxHighlighterFactory extends SyntaxHighlighterFactory {
final LanguageLevel level = project != null && virtualFile != null ?
PyUtil.getLanguageLevelForVirtualFile(project, virtualFile) :
LanguageLevel.getDefault();
return myMap.get(level);
return getSyntaxHighlighterForLanguageLevel(level);
}
/**
* Returns a syntax highlighter targeting the specified version of Python.
*/
@NotNull
public SyntaxHighlighter getSyntaxHighlighterForLanguageLevel(@NotNull LanguageLevel version) {
return myMap.get(version);
}
}
@@ -17,6 +17,7 @@ import com.intellij.psi.codeStyle.DisplayPrioritySortable;
import com.intellij.util.PlatformUtils;
import com.jetbrains.python.PythonFileType;
import com.jetbrains.python.PythonLanguage;
import com.jetbrains.python.psi.LanguageLevel;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -114,9 +115,11 @@ public class PythonColorsPage implements RainbowColorSettingsPage, InspectionCol
@Override
@NotNull
public SyntaxHighlighter getHighlighter() {
final SyntaxHighlighter highlighter = SyntaxHighlighterFactory.getSyntaxHighlighter(PythonFileType.INSTANCE, null, null);
assert highlighter != null;
return highlighter;
final SyntaxHighlighterFactory factory = SyntaxHighlighterFactory.LANGUAGE_FACTORY.forLanguage(PythonLanguage.getInstance());
if (factory instanceof PySyntaxHighlighterFactory) {
return ((PySyntaxHighlighterFactory)factory).getSyntaxHighlighterForLanguageLevel(LanguageLevel.getLatest());
}
return factory.getSyntaxHighlighter(null, null);
}
@Override
@@ -136,7 +139,7 @@ public class PythonColorsPage implements RainbowColorSettingsPage, InspectionCol
"class <classDef>Foo</classDef>:\n" +
" tags: <annotation>List[<builtin>str</builtin>]</annotation>\n" +
" def <predefined>__init__</predefined>(<self>self</self>: <annotation>Foo</annotation>):\n" +
" <localVar>byte_string</localVar>: <annotation><builtin>str</builtin></annotation> = 'newline:\\n also newline:\\x0a'\n" +
" <localVar>byte_string</localVar>: <annotation><builtin>bytes</builtin></annotation> = b'newline:\\n also newline:\\x0a'\n" +
" <localVar>text_string</localVar> = u\"Cyrillic Я is \\u042f. Oops: \\u042g\"\n" +
" <self>self</self>.<mcall>makeSense</mcall>(<kwarg>whatever</kwarg>=1)\n" +
" \n" +