aboutsummaryrefslogtreecommitdiff
path: root/helix-core/src/doc_formatter
diff options
context:
space:
mode:
authorPoliorcetics2023-03-11 02:32:14 +0000
committerGitHub2023-03-11 02:32:14 +0000
commitbdcd4d9411655ab69245d803e88f88cc278127da (patch)
tree3131cca198bec2520a2fccc7d4c47cd3d4eddedf /helix-core/src/doc_formatter
parent3d230e701d4771377a6b3f3b8c68527af29ee066 (diff)
Feat: LSP Type Hints (#5934)
* misc: missing inline, outdated link * doc: Add new theme keys and config option to book * fix: don't panic in Tree::try_get(view_id) Necessary for later, where we could be receiving an LSP response for a closed window, in which case we don't want to crash while checking for its existence * fix: reset idle timer on all mouse events * refacto: Introduce Overlay::new and InlineAnnotation::new * refacto: extract make_job_callback from Context::callback * feat: add LSP display_inlay_hint option to config * feat: communicate inlay hints support capabilities of helix to LSP server * feat: Add function to request range of inlay hint from LSP * feat: Save inlay hints in document, per view * feat: Update inlay hints on document changes * feat: Compute inlay hints on idle timeout * nit: Add todo's about inlay hints for later * fix: compute text annotations for current view in view.rs, not document.rs * doc: Improve Document::text_annotations() description * nit: getters don't use 'get_' in front * fix: Drop inlay hints annotations on config refresh if necessary * fix: padding theming for LSP inlay hints * fix: tracking of outdated inlay hints should not be dependant on document revision (because of undos and such) * fix: follow LSP spec and don't highlight padding as virtual text * config: add some LSP inlay hint configs
Diffstat (limited to 'helix-core/src/doc_formatter')
-rw-r--r--helix-core/src/doc_formatter/test.rs56
1 files changed, 8 insertions, 48 deletions
diff --git a/helix-core/src/doc_formatter/test.rs b/helix-core/src/doc_formatter/test.rs
index e68b31fd..ac8918bb 100644
--- a/helix-core/src/doc_formatter/test.rs
+++ b/helix-core/src/doc_formatter/test.rs
@@ -119,16 +119,7 @@ fn overlay() {
"foobar",
0,
false,
- &[
- Overlay {
- char_idx: 0,
- grapheme: "X".into(),
- },
- Overlay {
- char_idx: 2,
- grapheme: "\t".into(),
- },
- ]
+ &[Overlay::new(0, "X"), Overlay::new(2, "\t")],
),
"Xo bar "
);
@@ -138,18 +129,9 @@ fn overlay() {
0,
true,
&[
- Overlay {
- char_idx: 2,
- grapheme: "\t".into(),
- },
- Overlay {
- char_idx: 5,
- grapheme: "\t".into(),
- },
- Overlay {
- char_idx: 16,
- grapheme: "X".into(),
- },
+ Overlay::new(2, "\t"),
+ Overlay::new(5, "\t"),
+ Overlay::new(16, "X"),
]
),
"fo f o foo \n.foo Xoo foo foo \n.foo foo foo "
@@ -170,24 +152,14 @@ fn annotate_text(text: &str, softwrap: bool, annotations: &[InlineAnnotation]) -
#[test]
fn annotation() {
assert_eq!(
- annotate_text(
- "bar",
- false,
- &[InlineAnnotation {
- char_idx: 0,
- text: "foo".into(),
- }]
- ),
+ annotate_text("bar", false, &[InlineAnnotation::new(0, "foo")]),
"foobar "
);
assert_eq!(
annotate_text(
&"foo ".repeat(10),
true,
- &[InlineAnnotation {
- char_idx: 0,
- text: "foo ".into(),
- }]
+ &[InlineAnnotation::new(0, "foo ")]
),
"foo foo foo foo \n.foo foo foo foo \n.foo foo foo "
);
@@ -199,20 +171,8 @@ fn annotation_and_overlay() {
"bbar".into(),
&TextFormat::new_test(false),
TextAnnotations::default()
- .add_inline_annotations(
- Rc::new([InlineAnnotation {
- char_idx: 0,
- text: "fooo".into(),
- }]),
- None
- )
- .add_overlay(
- Rc::new([Overlay {
- char_idx: 0,
- grapheme: "\t".into(),
- }]),
- None
- ),
+ .add_inline_annotations(Rc::new([InlineAnnotation::new(0, "fooo")]), None)
+ .add_overlay(Rc::new([Overlay::new(0, "\t")]), None),
0,
)
.0