@@ -5511,6 +5511,11 @@ impl Editor {
let has_completion = self.active_inline_completion.is_some();
+ let is_move = self
+ .active_inline_completion
+ .as_ref()
+ .map_or(false, |c| c.is_move());
+
Some(
h_flex()
.h(self.edit_prediction_cursor_popover_height())
@@ -5539,23 +5544,18 @@ impl Editor {
} else {
None
},
+ !is_move,
)),
)
.opacity(if has_completion { 1.0 } else { 0.1 })
- .child(
- if self
- .active_inline_completion
- .as_ref()
- .map_or(false, |c| c.is_move())
- {
- div()
- .child(ui::Key::new(&accept_keystroke.key, None))
- .font(buffer_font.clone())
- .into_any()
- } else {
- Label::new("Preview").color(Color::Muted).into_any_element()
- },
- ),
+ .child(if is_move {
+ div()
+ .child(ui::Key::new(&accept_keystroke.key, None))
+ .font(buffer_font.clone())
+ .into_any()
+ } else {
+ Label::new("Preview").color(Color::Muted).into_any_element()
+ }),
)
.into_any(),
)
@@ -5869,6 +5869,7 @@ fn inline_completion_accept_indicator(
&accept_keystroke.modifiers,
PlatformStyle::platform(),
Some(Color::Default),
+ false,
))
})
.child(accept_keystroke.key.clone());
@@ -83,6 +83,7 @@ impl RenderOnce for KeyBinding {
&keystroke.modifiers,
self.platform_style,
None,
+ false,
))
.map(|el| el.child(render_key(&keystroke, self.platform_style, None)))
}))
@@ -129,6 +130,7 @@ pub fn render_modifiers(
modifiers: &Modifiers,
platform_style: PlatformStyle,
color: Option<Color>,
+ standalone: bool,
) -> impl Iterator<Item = AnyElement> {
enum KeyOrIcon {
Key(&'static str),
@@ -179,18 +181,23 @@ pub fn render_modifiers(
]
};
- table
+ let filtered = table
.into_iter()
- .flat_map(move |modifier| {
- if modifier.enabled {
- match platform_style {
- PlatformStyle::Mac => vec![modifier.mac],
- PlatformStyle::Linux => vec![modifier.linux, KeyOrIcon::Key("+")],
- PlatformStyle::Windows => vec![modifier.windows, KeyOrIcon::Key("+")],
- }
- } else {
- vec![]
+ .filter(|modifier| modifier.enabled)
+ .collect::<Vec<_>>();
+ let last_ix = filtered.len().saturating_sub(1);
+
+ filtered
+ .into_iter()
+ .enumerate()
+ .flat_map(move |(ix, modifier)| match platform_style {
+ PlatformStyle::Mac => vec![modifier.mac],
+ PlatformStyle::Linux if standalone && ix == last_ix => vec![modifier.linux],
+ PlatformStyle::Linux => vec![modifier.linux, KeyOrIcon::Key("+")],
+ PlatformStyle::Windows if standalone && ix == last_ix => {
+ vec![modifier.windows]
}
+ PlatformStyle::Windows => vec![modifier.windows, KeyOrIcon::Key("+")],
})
.map(move |key_or_icon| match key_or_icon {
KeyOrIcon::Key(key) => Key::new(key, color).into_any_element(),