mirror of https://github.com/helix-editor/helix
Add :fmt (formats the whole file).
parent
4eabb8d054
commit
e4ff75b4d4
|
@ -20,6 +20,8 @@ use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
use tokio_stream::wrappers::UnboundedReceiverStream;
|
use tokio_stream::wrappers::UnboundedReceiverStream;
|
||||||
|
|
||||||
|
pub use futures_executor::block_on;
|
||||||
|
|
||||||
#[derive(Error, Debug)]
|
#[derive(Error, Debug)]
|
||||||
pub enum Error {
|
pub enum Error {
|
||||||
#[error("protocol error: {0}")]
|
#[error("protocol error: {0}")]
|
||||||
|
|
|
@ -888,10 +888,34 @@ mod cmd {
|
||||||
}
|
}
|
||||||
tokio::spawn(doc.save());
|
tokio::spawn(doc.save());
|
||||||
}
|
}
|
||||||
|
|
||||||
fn new_file(editor: &mut Editor, args: &[&str], event: PromptEvent) {
|
fn new_file(editor: &mut Editor, args: &[&str], event: PromptEvent) {
|
||||||
editor.new_file(Action::Replace);
|
editor.new_file(Action::Replace);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn format(editor: &mut Editor, args: &[&str], event: PromptEvent) {
|
||||||
|
let (view, doc) = editor.current();
|
||||||
|
|
||||||
|
if let Some(language_server) = doc.language_server() {
|
||||||
|
// TODO: await, no blocking
|
||||||
|
let transaction = helix_lsp::block_on(
|
||||||
|
language_server
|
||||||
|
.text_document_formatting(doc.identifier(), lsp::FormattingOptions::default()),
|
||||||
|
)
|
||||||
|
.map(|edits| {
|
||||||
|
helix_lsp::util::generate_transaction_from_edits(
|
||||||
|
doc.text(),
|
||||||
|
edits,
|
||||||
|
language_server.offset_encoding(),
|
||||||
|
)
|
||||||
|
});
|
||||||
|
|
||||||
|
if let Ok(transaction) = transaction {
|
||||||
|
doc.apply(&transaction, view.id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
pub const COMMAND_LIST: &[Command] = &[
|
pub const COMMAND_LIST: &[Command] = &[
|
||||||
Command {
|
Command {
|
||||||
name: "quit",
|
name: "quit",
|
||||||
|
@ -928,6 +952,13 @@ mod cmd {
|
||||||
fun: new_file,
|
fun: new_file,
|
||||||
completer: Some(completers::filename),
|
completer: Some(completers::filename),
|
||||||
},
|
},
|
||||||
|
Command {
|
||||||
|
name: "format",
|
||||||
|
alias: Some("fmt"),
|
||||||
|
doc: "Format the file using a formatter.",
|
||||||
|
fun: format,
|
||||||
|
completer: None,
|
||||||
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
pub static COMMANDS: Lazy<HashMap<&'static str, &'static Command>> = Lazy::new(|| {
|
pub static COMMANDS: Lazy<HashMap<&'static str, &'static Command>> = Lazy::new(|| {
|
||||||
|
|
Loading…
Reference in New Issue