Do not add extra spaces to hints
This commit is contained in:
parent
e017d62e92
commit
43d4f04331
2 changed files with 90 additions and 10 deletions
|
@ -49,6 +49,19 @@ pub struct InlayProperties<T> {
|
|||
pub text: T,
|
||||
}
|
||||
|
||||
impl InlayProperties<String> {
|
||||
pub fn new(position: Anchor, hint: &project::InlayHint) -> Self {
|
||||
let mut text = hint.text();
|
||||
if hint.padding_right && !text.ends_with(' ') {
|
||||
text.push(' ');
|
||||
}
|
||||
if hint.padding_left && !text.starts_with(' ') {
|
||||
text.insert(0, ' ');
|
||||
}
|
||||
Self { position, text }
|
||||
}
|
||||
}
|
||||
|
||||
impl sum_tree::Item for Transform {
|
||||
type Summary = TransformSummary;
|
||||
|
||||
|
@ -1095,6 +1108,7 @@ mod tests {
|
|||
use super::*;
|
||||
use crate::{InlayId, MultiBuffer};
|
||||
use gpui::AppContext;
|
||||
use project::{InlayHint, InlayHintLabel};
|
||||
use rand::prelude::*;
|
||||
use settings::SettingsStore;
|
||||
use std::{cmp::Reverse, env, sync::Arc};
|
||||
|
@ -1102,6 +1116,81 @@ mod tests {
|
|||
use text::Patch;
|
||||
use util::post_inc;
|
||||
|
||||
#[test]
|
||||
fn test_inlay_properties_label_padding() {
|
||||
assert_eq!(
|
||||
InlayProperties::new(
|
||||
Anchor::min(),
|
||||
&InlayHint {
|
||||
label: InlayHintLabel::String("a".to_string()),
|
||||
buffer_id: 0,
|
||||
position: text::Anchor::default(),
|
||||
padding_left: false,
|
||||
padding_right: false,
|
||||
tooltip: None,
|
||||
kind: None,
|
||||
},
|
||||
)
|
||||
.text,
|
||||
"a",
|
||||
"Should not pad label if not requested"
|
||||
);
|
||||
|
||||
assert_eq!(
|
||||
InlayProperties::new(
|
||||
Anchor::min(),
|
||||
&InlayHint {
|
||||
label: InlayHintLabel::String("a".to_string()),
|
||||
buffer_id: 0,
|
||||
position: text::Anchor::default(),
|
||||
padding_left: true,
|
||||
padding_right: true,
|
||||
tooltip: None,
|
||||
kind: None,
|
||||
},
|
||||
)
|
||||
.text,
|
||||
" a ",
|
||||
"Should pad label for every side requested"
|
||||
);
|
||||
|
||||
assert_eq!(
|
||||
InlayProperties::new(
|
||||
Anchor::min(),
|
||||
&InlayHint {
|
||||
label: InlayHintLabel::String(" a ".to_string()),
|
||||
buffer_id: 0,
|
||||
position: text::Anchor::default(),
|
||||
padding_left: false,
|
||||
padding_right: false,
|
||||
tooltip: None,
|
||||
kind: None,
|
||||
},
|
||||
)
|
||||
.text,
|
||||
" a ",
|
||||
"Should not change already padded label"
|
||||
);
|
||||
|
||||
assert_eq!(
|
||||
InlayProperties::new(
|
||||
Anchor::min(),
|
||||
&InlayHint {
|
||||
label: InlayHintLabel::String(" a ".to_string()),
|
||||
buffer_id: 0,
|
||||
position: text::Anchor::default(),
|
||||
padding_left: true,
|
||||
padding_right: true,
|
||||
tooltip: None,
|
||||
kind: None,
|
||||
},
|
||||
)
|
||||
.text,
|
||||
" a ",
|
||||
"Should not change already padded label"
|
||||
);
|
||||
}
|
||||
|
||||
#[gpui::test]
|
||||
fn test_basic_inlays(cx: &mut AppContext) {
|
||||
let buffer = MultiBuffer::build_simple("abcdefghi", cx);
|
||||
|
|
|
@ -2712,16 +2712,7 @@ impl Editor {
|
|||
let buffer = self.buffer.read(cx).read(cx);
|
||||
let new_inlays = to_insert
|
||||
.into_iter()
|
||||
.map(|(position, id, hint)| {
|
||||
let mut text = hint.text();
|
||||
if hint.padding_right {
|
||||
text.push(' ');
|
||||
}
|
||||
if hint.padding_left {
|
||||
text.insert(0, ' ');
|
||||
}
|
||||
(id, InlayProperties { position, text })
|
||||
})
|
||||
.map(|(position, id, hint)| (id, InlayProperties::new(position, &hint)))
|
||||
.collect();
|
||||
drop(buffer);
|
||||
self.display_map.update(cx, |display_map, cx| {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue