mirror of
https://github.com/zed-industries/zed.git
synced 2024-12-24 17:28:40 +00:00
Get started with a prettier server package
Co-Authored-By: Antonio Scandurra <antonio@zed.dev>
This commit is contained in:
parent
76191fe47d
commit
eced842dfc
7 changed files with 102 additions and 0 deletions
4
Cargo.lock
generated
4
Cargo.lock
generated
|
@ -5517,6 +5517,10 @@ version = "0.2.17"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
|
||||
|
||||
[[package]]
|
||||
name = "prettier"
|
||||
version = "0.1.0"
|
||||
|
||||
[[package]]
|
||||
name = "pretty_assertions"
|
||||
version = "1.4.0"
|
||||
|
|
|
@ -52,6 +52,7 @@ members = [
|
|||
"crates/plugin",
|
||||
"crates/plugin_macros",
|
||||
"crates/plugin_runtime",
|
||||
"crates/prettier",
|
||||
"crates/project",
|
||||
"crates/project_panel",
|
||||
"crates/project_symbols",
|
||||
|
|
9
crates/prettier/Cargo.toml
Normal file
9
crates/prettier/Cargo.toml
Normal file
|
@ -0,0 +1,9 @@
|
|||
[package]
|
||||
name = "prettier"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
|
||||
[dependencies]
|
||||
|
||||
[lib]
|
||||
path = "src/prettier.rs"
|
7
crates/prettier/prettier_server/.zed/settings.json
Normal file
7
crates/prettier/prettier_server/.zed/settings.json
Normal file
|
@ -0,0 +1,7 @@
|
|||
{
|
||||
"languages": {
|
||||
"JavaScript": {
|
||||
"tab_size": 4
|
||||
}
|
||||
}
|
||||
}
|
11
crates/prettier/prettier_server/package.json
Normal file
11
crates/prettier/prettier_server/package.json
Normal file
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
"name": "prettier_server",
|
||||
"version": "1.0.0",
|
||||
"description": "",
|
||||
"main": "src/index.js",
|
||||
"scripts": {
|
||||
"start": "node src/index.js",
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
},
|
||||
"author": "Zed Industries"
|
||||
}
|
56
crates/prettier/prettier_server/src/index.js
Normal file
56
crates/prettier/prettier_server/src/index.js
Normal file
|
@ -0,0 +1,56 @@
|
|||
const { Buffer } = require('buffer');
|
||||
|
||||
let buffer = Buffer.alloc(0);
|
||||
process.stdin.resume();
|
||||
process.stdin.on('data', (data) => {
|
||||
buffer = Buffer.concat([buffer, data]);
|
||||
handleData();
|
||||
});
|
||||
process.stdin.on('end', () => {
|
||||
handleData();
|
||||
});
|
||||
|
||||
function handleData() {
|
||||
if (buffer.length < 4) {
|
||||
return;
|
||||
}
|
||||
|
||||
const length = buffer.readUInt32LE(0);
|
||||
console.log(length);
|
||||
if (buffer.length < 4 + length) {
|
||||
return;
|
||||
}
|
||||
|
||||
const bytes = buffer.subarray(4, 4 + length);
|
||||
buffer = buffer.subarray(4 + length);
|
||||
|
||||
try {
|
||||
const message = JSON.parse(bytes);
|
||||
handleMessage(message);
|
||||
} catch (_) {
|
||||
sendResponse(makeError("Request JSON parse error"));
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// format
|
||||
// clear_cache
|
||||
// shutdown
|
||||
// error
|
||||
|
||||
function handleMessage(message) {
|
||||
console.log(message);
|
||||
sendResponse({ method: "hi", result: null });
|
||||
}
|
||||
|
||||
function makeError(message) {
|
||||
return { method: "error", message };
|
||||
}
|
||||
|
||||
function sendResponse(response) {
|
||||
let message = Buffer.from(JSON.stringify(response));
|
||||
let length = Buffer.alloc(4);
|
||||
length.writeUInt32LE(message.length);
|
||||
process.stdout.write(length);
|
||||
process.stdout.write(message);
|
||||
}
|
14
crates/prettier/src/prettier.rs
Normal file
14
crates/prettier/src/prettier.rs
Normal file
|
@ -0,0 +1,14 @@
|
|||
pub fn add(left: usize, right: usize) -> usize {
|
||||
left + right
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
fn it_works() {
|
||||
let result = add(2, 2);
|
||||
assert_eq!(result, 4);
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue