language_selector: Fix debug_assert firing off on context menu creation for LSP view (#19854)

Piotr Osiewicz created

Closes #ISSUE

Release Notes:

- N/A

Change summary

crates/language_tools/src/lsp_log.rs | 24 ++++++++++++++++--------
1 file changed, 16 insertions(+), 8 deletions(-)

Detailed changes

crates/language_tools/src/lsp_log.rs 🔗

@@ -1237,21 +1237,29 @@ impl Render for LspLogToolbarItemView {
                                     view.show_rpc_trace_for_server(row.server_id, cx);
                                 }),
                             );
-                            menu = menu.entry(
-                                SERVER_CAPABILITIES,
-                                None,
-                                cx.handler_for(&log_view, move |view, cx| {
-                                    view.show_capabilities_for_server(row.server_id, cx);
-                                }),
-                            );
                             if server_selected && row.selected_entry == LogKind::Rpc {
                                 let selected_ix = menu.select_last();
+                                // Each language server has:
+                                // 1. A title.
+                                // 2. Server logs.
+                                // 3. Server trace.
+                                // 4. RPC messages.
+                                // 5. Server capabilities
+                                // Thus, if nth server's RPC is selected, the index of selected entry should match this formula
+                                let _expected_index = ix * 5 + 3;
                                 debug_assert_eq!(
-                                    Some(ix * 4 + 3),
+                                    Some(_expected_index),
                                     selected_ix,
                                     "Could not scroll to a just added LSP menu item"
                                 );
                             }
+                            menu = menu.entry(
+                                SERVER_CAPABILITIES,
+                                None,
+                                cx.handler_for(&log_view, move |view, cx| {
+                                    view.show_capabilities_for_server(row.server_id, cx);
+                                }),
+                            );
                         }
                         menu
                     })