diff --git a/Cargo.lock b/Cargo.lock index 032c60af..40e1549b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2559,7 +2559,6 @@ dependencies = [ "pgt_console", "pgt_diagnostics", "pgt_fs", - "pgt_lsp_converters", "pgt_test_utils", "pgt_text_edit", "pgt_text_size", @@ -2575,16 +2574,6 @@ dependencies = [ "tracing", ] -[[package]] -name = "pgt_lsp_converters" -version = "0.0.0" -dependencies = [ - "anyhow", - "pgt_text_size", - "rustc-hash 2.1.0", - "tower-lsp", -] - [[package]] name = "pgt_markup" version = "0.0.0" diff --git a/crates/pgt_lsp/Cargo.toml b/crates/pgt_lsp/Cargo.toml index 4fafc27f..ff3d00dc 100644 --- a/crates/pgt_lsp/Cargo.toml +++ b/crates/pgt_lsp/Cargo.toml @@ -21,7 +21,6 @@ pgt_configuration = { workspace = true } pgt_console = { workspace = true } pgt_diagnostics = { workspace = true } pgt_fs = { workspace = true } -pgt_lsp_converters = { workspace = true } pgt_text_edit = { workspace = true } pgt_text_size.workspace = true pgt_workspace = { workspace = true } diff --git a/crates/pgt_lsp_converters/src/from_proto.rs b/crates/pgt_lsp/src/adapters/from_lsp.rs similarity index 91% rename from crates/pgt_lsp_converters/src/from_proto.rs rename to crates/pgt_lsp/src/adapters/from_lsp.rs index 3968073d..ce764a9e 100644 --- a/crates/pgt_lsp_converters/src/from_proto.rs +++ b/crates/pgt_lsp/src/adapters/from_lsp.rs @@ -1,5 +1,5 @@ -use crate::line_index::LineIndex; -use crate::{LineCol, PositionEncoding, WideLineCol}; +use crate::adapters::line_index::LineIndex; +use crate::adapters::{LineCol, PositionEncoding, WideLineCol}; use anyhow::{Context, Result}; use pgt_text_size::{TextRange, TextSize}; use tower_lsp::lsp_types; diff --git a/crates/pgt_lsp_converters/src/line_index.rs b/crates/pgt_lsp/src/adapters/line_index.rs similarity index 98% rename from crates/pgt_lsp_converters/src/line_index.rs rename to crates/pgt_lsp/src/adapters/line_index.rs index d1ae6289..88b1351a 100644 --- a/crates/pgt_lsp_converters/src/line_index.rs +++ b/crates/pgt_lsp/src/adapters/line_index.rs @@ -6,7 +6,7 @@ use std::mem; use pgt_text_size::TextSize; use rustc_hash::FxHashMap; -use crate::{LineCol, WideChar, WideEncoding, WideLineCol}; +use crate::adapters::{LineCol, WideChar, WideEncoding, WideLineCol}; #[derive(Clone, Debug, PartialEq, Eq)] pub struct LineIndex { diff --git a/crates/pgt_lsp_converters/src/lib.rs b/crates/pgt_lsp/src/adapters/mod.rs similarity index 95% rename from crates/pgt_lsp_converters/src/lib.rs rename to crates/pgt_lsp/src/adapters/mod.rs index fe0495ae..af1f10c2 100644 --- a/crates/pgt_lsp_converters/src/lib.rs +++ b/crates/pgt_lsp/src/adapters/mod.rs @@ -3,9 +3,9 @@ use pgt_text_size::TextSize; use tower_lsp::lsp_types::{ClientCapabilities, PositionEncodingKind}; -pub mod from_proto; +pub mod from_lsp; pub mod line_index; -pub mod to_proto; +pub mod to_lsp; pub fn negotiated_encoding(capabilities: &ClientCapabilities) -> PositionEncoding { let client_encodings = match &capabilities.general { @@ -86,11 +86,11 @@ impl WideChar { #[cfg(test)] mod tests { - use crate::WideEncoding::{Utf16, Utf32}; - use crate::from_proto::offset; - use crate::line_index::LineIndex; - use crate::to_proto::position; - use crate::{LineCol, PositionEncoding, WideEncoding}; + use crate::adapters::WideEncoding::{Utf16, Utf32}; + use crate::adapters::from_lsp::offset; + use crate::adapters::line_index::LineIndex; + use crate::adapters::to_lsp::position; + use crate::adapters::{LineCol, PositionEncoding, WideEncoding}; use pgt_text_size::TextSize; use tower_lsp::lsp_types::Position; diff --git a/crates/pgt_lsp_converters/src/to_proto.rs b/crates/pgt_lsp/src/adapters/to_lsp.rs similarity index 94% rename from crates/pgt_lsp_converters/src/to_proto.rs rename to crates/pgt_lsp/src/adapters/to_lsp.rs index ea5f5869..71a6b3c4 100644 --- a/crates/pgt_lsp_converters/src/to_proto.rs +++ b/crates/pgt_lsp/src/adapters/to_lsp.rs @@ -1,5 +1,5 @@ -use crate::PositionEncoding; -use crate::line_index::LineIndex; +use crate::adapters::PositionEncoding; +use crate::adapters::line_index::LineIndex; use anyhow::{Context, Result}; use pgt_text_size::{TextRange, TextSize}; use tower_lsp::lsp_types; diff --git a/crates/pgt_lsp/src/capabilities.rs b/crates/pgt_lsp/src/capabilities.rs index 6bc81084..0b64788e 100644 --- a/crates/pgt_lsp/src/capabilities.rs +++ b/crates/pgt_lsp/src/capabilities.rs @@ -1,11 +1,10 @@ -use pgt_lsp_converters::{PositionEncoding, WideEncoding, negotiated_encoding}; +use crate::adapters::{PositionEncoding, WideEncoding, negotiated_encoding}; use pgt_workspace::code_actions::{CommandActionCategory, CommandActionCategoryIter}; use strum::{EnumIter, IntoEnumIterator}; use tower_lsp::lsp_types::{ - ClientCapabilities, CodeActionOptions, CompletionOptions, ExecuteCommandOptions, - PositionEncodingKind, SaveOptions, ServerCapabilities, TextDocumentSyncCapability, - TextDocumentSyncKind, TextDocumentSyncOptions, TextDocumentSyncSaveOptions, - WorkDoneProgressOptions, + ClientCapabilities, CompletionOptions, ExecuteCommandOptions, PositionEncodingKind, + SaveOptions, ServerCapabilities, TextDocumentSyncCapability, TextDocumentSyncKind, + TextDocumentSyncOptions, TextDocumentSyncSaveOptions, WorkDoneProgressOptions, }; use crate::handlers::code_actions::command_id; diff --git a/crates/pgt_lsp/src/documents.rs b/crates/pgt_lsp/src/documents.rs index f5a2c72c..c0cf85f9 100644 --- a/crates/pgt_lsp/src/documents.rs +++ b/crates/pgt_lsp/src/documents.rs @@ -1,4 +1,4 @@ -use pgt_lsp_converters::line_index::LineIndex; +use crate::adapters::line_index::LineIndex; /// Represents an open [`textDocument`]. Can be cheaply cloned. /// diff --git a/crates/pgt_lsp/src/handlers/helper.rs b/crates/pgt_lsp/src/handlers/helper.rs index 99de22f1..1fe01036 100644 --- a/crates/pgt_lsp/src/handlers/helper.rs +++ b/crates/pgt_lsp/src/handlers/helper.rs @@ -1,4 +1,7 @@ -use crate::session::Session; +use crate::{ + adapters::{self, from_lsp}, + session::Session, +}; use pgt_text_size::TextSize; use tower_lsp::lsp_types; @@ -16,10 +19,10 @@ pub fn get_cursor_position( .map(|doc| doc.line_index) .map_err(|_| anyhow::anyhow!("Document not found."))?; - let cursor_pos = pgt_lsp_converters::from_proto::offset( + let cursor_pos = from_lsp::offset( &line_index, position, - pgt_lsp_converters::negotiated_encoding(client_capabilities), + adapters::negotiated_encoding(client_capabilities), )?; Ok(cursor_pos) diff --git a/crates/pgt_lsp/src/handlers/text_document.rs b/crates/pgt_lsp/src/handlers/text_document.rs index 2dadcf02..63250ef5 100644 --- a/crates/pgt_lsp/src/handlers/text_document.rs +++ b/crates/pgt_lsp/src/handlers/text_document.rs @@ -1,8 +1,8 @@ +use crate::adapters::from_lsp; use crate::{ diagnostics::LspError, documents::Document, session::Session, utils::apply_document_changes, }; use anyhow::Result; -use pgt_lsp_converters::from_proto::text_range; use pgt_workspace::workspace::{ ChangeFileParams, ChangeParams, CloseFileParams, GetFileContentParams, OpenFileParams, }; @@ -73,7 +73,7 @@ pub(crate) async fn did_change( .iter() .map(|c| ChangeParams { range: c.range.and_then(|r| { - text_range(&old_doc.line_index, r, session.position_encoding()).ok() + from_lsp::text_range(&old_doc.line_index, r, session.position_encoding()).ok() }), text: c.text.clone(), }) diff --git a/crates/pgt_lsp/src/lib.rs b/crates/pgt_lsp/src/lib.rs index 99db526f..cc014313 100644 --- a/crates/pgt_lsp/src/lib.rs +++ b/crates/pgt_lsp/src/lib.rs @@ -1,3 +1,4 @@ +mod adapters; mod capabilities; mod diagnostics; mod documents; diff --git a/crates/pgt_lsp/src/session.rs b/crates/pgt_lsp/src/session.rs index 70f9ac88..add71c92 100644 --- a/crates/pgt_lsp/src/session.rs +++ b/crates/pgt_lsp/src/session.rs @@ -1,3 +1,4 @@ +use crate::adapters::{PositionEncoding, WideEncoding, negotiated_encoding}; use crate::diagnostics::LspError; use crate::documents::Document; use crate::utils; @@ -8,7 +9,6 @@ use pgt_analyse::RuleCategoriesBuilder; use pgt_configuration::ConfigurationPathHint; use pgt_diagnostics::{DiagnosticExt, Error}; use pgt_fs::{FileSystem, PgTPath}; -use pgt_lsp_converters::{PositionEncoding, WideEncoding, negotiated_encoding}; use pgt_workspace::Workspace; use pgt_workspace::configuration::{LoadedConfiguration, load_configuration}; use pgt_workspace::settings::PartialConfigurationExt; diff --git a/crates/pgt_lsp/src/utils.rs b/crates/pgt_lsp/src/utils.rs index 638b4d57..a27dfecb 100644 --- a/crates/pgt_lsp/src/utils.rs +++ b/crates/pgt_lsp/src/utils.rs @@ -1,11 +1,11 @@ +use crate::adapters::line_index::LineIndex; +use crate::adapters::{PositionEncoding, from_lsp, to_lsp}; use anyhow::{Context, Result, ensure}; use pgt_console::MarkupBuf; use pgt_console::fmt::Termcolor; use pgt_console::fmt::{self, Formatter}; use pgt_diagnostics::termcolor::NoColor; use pgt_diagnostics::{Diagnostic, DiagnosticTags, Location, PrintDescription, Severity, Visit}; -use pgt_lsp_converters::line_index::LineIndex; -use pgt_lsp_converters::{PositionEncoding, from_proto, to_proto}; use pgt_text_edit::{CompressedOp, DiffOp, TextEdit}; use pgt_text_size::{TextRange, TextSize}; use std::any::Any; @@ -37,7 +37,7 @@ pub(crate) fn text_edit( offset += range.len(); } CompressedOp::DiffOp(DiffOp::Insert { range }) => { - let start = to_proto::position(line_index, offset, position_encoding)?; + let start = to_lsp::position(line_index, offset, position_encoding)?; // Merge with a previous delete operation if possible let last_edit = result.last_mut().filter(|text_edit| { @@ -54,9 +54,9 @@ pub(crate) fn text_edit( } } CompressedOp::DiffOp(DiffOp::Delete { range }) => { - let start = to_proto::position(line_index, offset, position_encoding)?; + let start = to_lsp::position(line_index, offset, position_encoding)?; offset += range.len(); - let end = to_proto::position(line_index, offset, position_encoding)?; + let end = to_lsp::position(line_index, offset, position_encoding)?; result.push(lsp::TextEdit { range: lsp::Range::new(start, end), @@ -108,7 +108,7 @@ pub(crate) fn diagnostic_to_lsp( } else { span }; - let span = to_proto::range(line_index, span, position_encoding) + let span = to_lsp::range(line_index, span, position_encoding) .context("failed to convert diagnostic span to LSP range")?; let severity = match diagnostic.severity() { @@ -189,7 +189,7 @@ impl Visit for RelatedInformationVisitor<'_> { None => return Ok(()), }; - let range = match to_proto::range(self.line_index, span, self.position_encoding) { + let range = match to_lsp::range(self.line_index, span, self.position_encoding) { Ok(range) => range, Err(_) => return Ok(()), }; @@ -293,7 +293,7 @@ pub(crate) fn apply_document_changes( line_index = LineIndex::new(&text); } index_valid = range.start.line; - if let Ok(range) = from_proto::text_range(&line_index, range, position_encoding) { + if let Ok(range) = from_lsp::text_range(&line_index, range, position_encoding) { text.replace_range(Range::::from(range), &change.text); } } @@ -304,9 +304,8 @@ pub(crate) fn apply_document_changes( #[cfg(test)] mod tests { - - use pgt_lsp_converters::PositionEncoding; - use pgt_lsp_converters::line_index::LineIndex; + use crate::adapters::PositionEncoding; + use crate::adapters::line_index::LineIndex; use pgt_text_edit::TextEdit; use tower_lsp::lsp_types as lsp; diff --git a/crates/pgt_lsp_converters/Cargo.toml b/crates/pgt_lsp_converters/Cargo.toml deleted file mode 100644 index ce3415f3..00000000 --- a/crates/pgt_lsp_converters/Cargo.toml +++ /dev/null @@ -1,23 +0,0 @@ -[package] -authors.workspace = true -categories.workspace = true -description = "" -edition.workspace = true -homepage.workspace = true -keywords.workspace = true -license.workspace = true -name = "pgt_lsp_converters" -repository.workspace = true -version = "0.0.0" - - -[dependencies] -anyhow = { workspace = true } -pgt_text_size.workspace = true -rustc-hash = { workspace = true } -tower-lsp = { version = "0.20.0" } - -[dev-dependencies] - -[lib] -doctest = false