@@ -480,10 +480,6 @@ fn goto_window_bottom(cx: &mut Context) {
480 goto_window(cx, Align::Bottom)
480 goto_window(cx, Align::Bottom)
483−// TODO: move vs extend could take an extra type Extend/Move that would
484−// Range::new(if Move { pos } if Extend { range.anchor }, pos)
485−// since these all really do the same thing
487fn move_next_word_start(cx: &mut Context) {
483fn move_next_word_start(cx: &mut Context) {
488 let count = cx.count();
484 let count = cx.count();
489 let (view, doc) = current!(cx.editor);
485 let (view, doc) = current!(cx.editor);
@@ -2320,7 +2316,7 @@ fn apply_workspace_edit(
2322fn last_picker(cx: &mut Context) {
2318fn last_picker(cx: &mut Context) {
2323− // TODO: last picker does not seemed to work well with buffer_picker
2319+ // TODO: last picker does not seem to work well with buffer_picker
2324 cx.callback = Some(Box::new(|compositor: &mut Compositor| {
2320 cx.callback = Some(Box::new(|compositor: &mut Compositor| {
2325 if let Some(picker) = compositor.last_picker.take() {
2321 if let Some(picker) = compositor.last_picker.take() {
2326 compositor.push(picker);
2322 compositor.push(picker);
@@ -2653,7 +2649,6 @@ fn goto_definition(cx: &mut Context) {
2653 offset_encoding,
2649 offset_encoding,
2656− // TODO: handle fails
2657 let future = language_server.goto_definition(doc.identifier(), pos, None);
2652 let future = language_server.goto_definition(doc.identifier(), pos, None);
2659 cx.callback(
2654 cx.callback(
@@ -2696,7 +2691,6 @@ fn goto_type_definition(cx: &mut Context) {
2696 offset_encoding,
2691 offset_encoding,
2699− // TODO: handle fails
2700 let future = language_server.goto_type_definition(doc.identifier(), pos, None);
2694 let future = language_server.goto_type_definition(doc.identifier(), pos, None);
2702 cx.callback(
2696 cx.callback(
@@ -2739,7 +2733,6 @@ fn goto_implementation(cx: &mut Context) {
2739 offset_encoding,
2733 offset_encoding,
2742− // TODO: handle fails
2743 let future = language_server.goto_implementation(doc.identifier(), pos, None);
2736 let future = language_server.goto_implementation(doc.identifier(), pos, None);
2745 cx.callback(
2738 cx.callback(
@@ -2782,7 +2775,6 @@ fn goto_reference(cx: &mut Context) {
2782 offset_encoding,
2775 offset_encoding,
2785− // TODO: handle fails
2786 let future = language_server.goto_reference(doc.identifier(), pos, None);
2778 let future = language_server.goto_reference(doc.identifier(), pos, None);
2788 cx.callback(
2780 cx.callback(
@@ -2900,7 +2892,6 @@ fn signature_help(cx: &mut Context) {
2900 language_server.offset_encoding(),
2892 language_server.offset_encoding(),
2903− // TODO: handle fails
2904 let future = language_server.text_document_signature_help(doc.identifier(), pos, None);
2895 let future = language_server.text_document_signature_help(doc.identifier(), pos, None);
2906 cx.callback(
2897 cx.callback(
@@ -3646,7 +3637,6 @@ fn completion(cx: &mut Context) {
3647 let pos = pos_to_lsp_pos(doc.text(), cursor, offset_encoding);
3638 let pos = pos_to_lsp_pos(doc.text(), cursor, offset_encoding);
3649− // TODO: handle fails
3650 let future = language_server.completion(doc.identifier(), pos, None);
3640 let future = language_server.completion(doc.identifier(), pos, None);
3652 let trigger_offset = cursor;
3642 let trigger_offset = cursor;
@@ -3672,8 +3662,8 @@ fn completion(cx: &mut Context) {
3672 None => Vec::new(),
3662 None => Vec::new(),
3675− // TODO: if no completion, show some message or something
3676 if items.is_empty() {
3665 if items.is_empty() {
3666+ editor.set_error("No completion available".to_string());
3679 let size = compositor.size();
3669 let size = compositor.size();
@@ -3705,7 +3695,6 @@ fn hover(cx: &mut Context) {
3705 language_server.offset_encoding(),
3695 language_server.offset_encoding(),
3708− // TODO: handle fails
3709 let future = language_server.text_document_hover(doc.identifier(), pos, None);
3698 let future = language_server.text_document_hover(doc.identifier(), pos, None);
3711 cx.callback(
3700 cx.callback(