From 7f3e1fa826d51bba80bddd71a68fff25f03fdbac Mon Sep 17 00:00:00 2001 From: AnotherTest Date: Sun, 4 Oct 2020 10:51:28 +0330 Subject: [PATCH] Shell: Fix closest command node detection in Pipes and Sequences This makes --option completions work for pipes and sequences too. --- Shell/AST.cpp | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/Shell/AST.cpp b/Shell/AST.cpp index 1ec8e1411f..6f13e1572a 100644 --- a/Shell/AST.cpp +++ b/Shell/AST.cpp @@ -1617,10 +1617,16 @@ HitTestResult Pipe::hit_test_position(size_t offset) return {}; auto result = m_left->hit_test_position(offset); - if (result.matching_node) + if (result.matching_node) { + if (!result.closest_command_node) + result.closest_command_node = m_right; return result; + } - return m_right->hit_test_position(offset); + result = m_right->hit_test_position(offset); + if (!result.closest_command_node) + result.closest_command_node = m_right; + return result; } Pipe::Pipe(Position position, NonnullRefPtr left, NonnullRefPtr right) @@ -1801,9 +1807,16 @@ HitTestResult Sequence::hit_test_position(size_t offset) return {}; auto result = m_left->hit_test_position(offset); - if (result.matching_node) + if (result.matching_node) { + if (!result.closest_command_node) + result.closest_command_node = m_right; return result; - return m_right->hit_test_position(offset); + } + + result = m_right->hit_test_position(offset); + if (!result.closest_command_node) + result.closest_command_node = m_right; + return result; } Sequence::Sequence(Position position, NonnullRefPtr left, NonnullRefPtr right, Position separator_position)