Skip to content

Commit

Permalink
Re-enable format_selections for a single selection range
Browse files Browse the repository at this point in the history
  • Loading branch information
archseer committed Nov 9, 2022
1 parent dee5b2a commit d4f5cab
Showing 1 changed file with 25 additions and 24 deletions.
49 changes: 25 additions & 24 deletions helix-term/src/commands.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3748,7 +3748,7 @@ fn format_selections(cx: &mut Context) {
let (view, doc) = current!(cx.editor);

// via lsp if available
// else via tree-sitter indentation calculations
// TODO: else via tree-sitter indentation calculations

let language_server = match doc.language_server() {
Some(language_server) => language_server,
Expand All @@ -3761,33 +3761,34 @@ fn format_selections(cx: &mut Context) {
.map(|range| range_to_lsp_range(doc.text(), *range, language_server.offset_encoding()))
.collect();

// TODO: all of the TODO's and commented code inside the loop,
// to make this actually work.
for _range in ranges {
let _language_server = match doc.language_server() {
Some(language_server) => language_server,
None => return,
};
// TODO: handle fails
// TODO: concurrent map
if ranges.len() != 1 {
cx.editor
.set_error("format_selections only supports a single selection for now");
return;
}

// TODO: need to block to get the formatting
// TODO: handle fails
// TODO: concurrent map over all ranges

// let edits = block_on(language_server.text_document_range_formatting(
// doc.identifier(),
// range,
// lsp::FormattingOptions::default(),
// ))
// .unwrap_or_default();
let range = ranges[0];

// let transaction = helix_lsp::util::generate_transaction_from_edits(
// doc.text(),
// edits,
// language_server.offset_encoding(),
// );
let edits = tokio::task::block_in_place(|| {
helix_lsp::block_on(language_server.text_document_range_formatting(
doc.identifier(),
range,
lsp::FormattingOptions::default(),
None,
))
})
.unwrap_or_default();

// apply_transaction(&transaction, doc, view);
}
let transaction = helix_lsp::util::generate_transaction_from_edits(
doc.text(),
edits,
language_server.offset_encoding(),
);

apply_transaction(&transaction, doc, view);
}

fn join_selections_inner(cx: &mut Context, select_space: bool) {
Expand Down

0 comments on commit d4f5cab

Please sign in to comment.