From ddfd5df84b4b7871ea16d76e233c11c8b45738d9 Mon Sep 17 00:00:00 2001 From: Ulf Magnusson Date: Sun, 26 Aug 2018 02:34:23 +0200 Subject: Improve menu structure for promptless choices Promptless choices can appear "legitimately" if you define a named choice in multiple locations to add on some symbols (which is broken in the C tools though). Prior to this fix, the promptless choice would get flattened, with the choice symbols appearing in the same menu as the (invisible) choice. This looks confusing. Skip flattening promptless choices to fix it. --- kconfiglib.py | 9 ++++++++- menuconfig.py | 3 +++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/kconfiglib.py b/kconfiglib.py index 38bdff2..3d2c82a 100644 --- a/kconfiglib.py +++ b/kconfiglib.py @@ -5389,9 +5389,16 @@ def _flatten(node): # symbols with children from automatic menu creation) so that their # children appear after them instead. This gives a clean menu structure # with no unexpected "jumps" in the indentation. + # + # Do not flatten promptless choices (which can appear "legitimitely" if a + # named choice is defined in multiple locations to add on symbols). It + # looks confusing, and the menuconfig already shows all choice symbols if + # you enter the choice at some location with a prompt. while node: - if node.list and not node.prompt: + if node.list and not node.prompt and \ + not isinstance(node.item, Choice): + last_node = node.list while 1: last_node.parent = node.parent diff --git a/menuconfig.py b/menuconfig.py index 25047f3..2166787 100755 --- a/menuconfig.py +++ b/menuconfig.py @@ -1000,6 +1000,9 @@ def _shown_nodes(menu): # Choices can contain non-symbol items (people do all sorts of weird # stuff with them), hence the generality here. We really need to # preserve the menu tree at each choice location. + # + # Note: Named choices are pretty broken in the C tools, and this is + # super obscure, so you probably won't find much that relies on this. for node in menu.item.nodes: rec(node.list) else: -- cgit v1.2.3