From 5aa0bfa0c686c5146f0e6b29a0b8c63fb662256b Mon Sep 17 00:00:00 2001 From: Andrey Vlasovskikh Date: Tue, 5 Jul 2011 18:59:38 +0400 Subject: [PATCH] Show Python underscored variables in structure view as protected --- .../structureView/PyStructureViewElement.java | 22 +++++++++++++------ 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/python/src/com/jetbrains/python/structureView/PyStructureViewElement.java b/python/src/com/jetbrains/python/structureView/PyStructureViewElement.java index a285357192c4..9ecb0eb5b8a3 100644 --- a/python/src/com/jetbrains/python/structureView/PyStructureViewElement.java +++ b/python/src/com/jetbrains/python/structureView/PyStructureViewElement.java @@ -32,6 +32,7 @@ public class PyStructureViewElement implements StructureViewTreeElement { NORMAL, // visible INVISIBLE, // not visible: e.g. local to function PRIVATE, // "__foo" in a class + PROTECTED, // "_foo" PREDEFINED // like "__init__"; only if really visible } @@ -132,12 +133,17 @@ public class PyStructureViewElement implements StructureViewTreeElement { } private static Visibility getVisibilityByName(@Nullable String name) { - if (name != null && name.startsWith("__")) { - if (PyNames.UnderscoredAttributes.contains(name)) { - return Visibility.PREDEFINED; + if (name != null) { + if (name.startsWith("__")) { + if (PyNames.UnderscoredAttributes.contains(name)) { + return Visibility.PREDEFINED; + } + else { + return Visibility.PRIVATE; + } } - else { - return Visibility.PRIVATE; + else if (name.startsWith("_")) { + return Visibility.PROTECTED; } } return Visibility.NORMAL; @@ -211,13 +217,15 @@ public class PyStructureViewElement implements StructureViewTreeElement { LayeredIcon icon = new LayeredIcon(2); icon.setIcon(normal_icon, 0); Icon overlay = null; - if (myVisibility == Visibility.PRIVATE) { + if (myVisibility == Visibility.PRIVATE || myVisibility == Visibility.PROTECTED) { overlay = PyIcons.PRIVATE; } else if (myVisibility == Visibility.PREDEFINED) { overlay = PyIcons.PREDEFINED; } - else if (myVisibility == Visibility.INVISIBLE) overlay = PyIcons.INVISIBLE; + else if (myVisibility == Visibility.INVISIBLE) { + overlay = PyIcons.INVISIBLE; + } if (overlay != null) { icon.setIcon(overlay, 1); }