Skip to content

Commit e8ba847

Browse files
Temporarily remove LanguageClient dependency
1 parent 43e2bc6 commit e8ba847

File tree

3 files changed

+148
-194
lines changed

3 files changed

+148
-194
lines changed

Package.resolved

Lines changed: 4 additions & 49 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Package.swift

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ let package = Package(
1515
],
1616
dependencies: [
1717
.package(url: "https://github.com/ChimeHQ/ConcurrencyPlus", from: "0.4.1"),
18-
.package(url: "https://github.com/ChimeHQ/LanguageClient", from: "0.5.0"),
1918
.package(url: "https://github.com/ChimeHQ/ProcessService", from: "0.2.6"),
2019
.package(
2120
url: "https://github.com/lukepistrol/SwiftLintPlugin",
@@ -29,7 +28,7 @@ let package = Package(
2928
targets: [
3029
.target(
3130
name: "CodeEditKit",
32-
dependencies: ["AnyCodable", "ConcurrencyPlus", "LanguageClient", .product(name: "ProcessServiceClient", package: "ProcessService")],
31+
dependencies: ["AnyCodable", "ConcurrencyPlus", .product(name: "ProcessServiceClient", package: "ProcessService")],
3332
plugins: [.plugin(name: "SwiftLint", package: "SwiftLintPlugin")]
3433
),
3534
.testTarget(

Sources/CodeEditKit/NonUIExtensions/LSP/LanguageExtension.swift

Lines changed: 143 additions & 143 deletions
Original file line numberDiff line numberDiff line change
@@ -5,146 +5,146 @@
55
// Created by Wouter Hennen on 27/03/2023.
66
//
77

8-
import Foundation
9-
import LanguageClient
10-
import Combine
11-
import OSLog
12-
import ProcessServiceClient
13-
import ConcurrencyPlus
14-
import LanguageServerProtocol
15-
import ProcessEnv
16-
import JSONRPC
17-
18-
protocol LanguageExtension {
19-
var client: RemoteLanguageServer { get }
20-
21-
}
22-
23-
final class UnrestrictedProcessTransport {
24-
private var readHandler: ReadHandler = { _ in }
25-
private let process: HostedProcess
26-
private let taskQueue = TaskQueue()
27-
private var subscription: AnyCancellable?
28-
private let logger = Logger(subsystem: "com.chimehq.ChimeKit", category: "UnrestrictedProcessTransport")
29-
30-
init(process: HostedProcess) {
31-
self.process = process
32-
}
33-
34-
func beginMonitoringProcess() async throws {
35-
let task = taskQueue.addOperation {
36-
self.subscription = try await self.process.processEventPublisher
37-
.sink(receiveCompletion: { _ in
38-
}, receiveValue: { [weak self] event in
39-
switch event {
40-
case .stdout(let data):
41-
self?.readHandler(data)
42-
case .stderr(let data):
43-
let output = String(data: data, encoding: .utf8) ?? ""
44-
45-
self?.logger.info("stderr: \(output, privacy: .public)")
46-
default:
47-
break
48-
}
49-
})
50-
}
51-
52-
try await task.value
53-
}
54-
}
55-
56-
extension UnrestrictedProcessTransport: DataTransport {
57-
func write(_ data: Data) {
58-
taskQueue.addOperation {
59-
try await self.process.write(data)
60-
}
61-
}
62-
63-
func setReaderHandler(_ handler: @escaping ReadHandler) {
64-
self.readHandler = handler
65-
}
66-
67-
func close() {
68-
subscription?.cancel()
69-
}
70-
}
71-
72-
/// Provides an interface to a LSP language server hosted by an intermediary process.
73-
public class RemoteLanguageServer {
74-
private let wrappedServer: JSONRPCLanguageServer
75-
private var subscription: AnyCancellable?
76-
private let logger = Logger(subsystem: "com.chimehq.ChimeKit", category: "RemoteLanguageServer")
77-
78-
private let process: HostedProcess
79-
private let taskQueue = TaskQueue()
80-
public var terminationHandler: (() -> Void)?
81-
82-
init(named serviceName: String, parameters: Process.ExecutionParameters) throws {
83-
self.process = HostedProcess(named: serviceName, parameters: parameters)
84-
let transport = UnrestrictedProcessTransport(process: process)
85-
self.wrappedServer = JSONRPCLanguageServer(dataTransport: transport)
86-
87-
taskQueue.addOperation {
88-
self.logger.debug("launching remote server")
89-
90-
do {
91-
try await self.process.launch()
92-
93-
self.subscription = try await self.process.processEventPublisher
94-
.sink(receiveCompletion: { _ in
95-
96-
}, receiveValue: { event in
97-
switch event {
98-
case .terminated:
99-
self.terminationHandler?()
100-
default:
101-
break
102-
}
103-
})
104-
105-
try await transport.beginMonitoringProcess()
106-
} catch {
107-
self.logger.error("failed to launch: \(String(describing: error), privacy: .public)")
108-
}
109-
}
110-
}
111-
112-
private func stopProcess() {
113-
self.taskQueue.addOperation {
114-
do {
115-
try await self.process.terminate()
116-
} catch {
117-
self.logger.error("failed to terminate: \(String(describing: error), privacy: .public)")
118-
}
119-
}
120-
}
121-
122-
public var logMessages: Bool {
123-
get { return wrappedServer.logMessages }
124-
set { wrappedServer.logMessages = newValue }
125-
}
126-
}
127-
128-
extension RemoteLanguageServer: LanguageServerProtocol.Server {
129-
public func setHandlers(_ handlers: ServerHandlers, completionHandler: @escaping (ServerError?) -> Void) {
130-
wrappedServer.setHandlers(handlers, completionHandler: completionHandler)
131-
}
132-
133-
public func sendNotification(_ notif: ClientNotification, completionHandler: @escaping (ServerError?) -> Void) {
134-
taskQueue.addOperation {
135-
self.wrappedServer.sendNotification(notif, completionHandler: completionHandler)
136-
}
137-
}
138-
139-
public func sendRequest<Response: Codable>(_ request: ClientRequest, completionHandler: @escaping (ServerResult<Response>) -> Void) {
140-
taskQueue.addOperation {
141-
self.wrappedServer.sendRequest(request, completionHandler: { (result: ServerResult<Response>) in
142-
if case .success = result, case .shutdown = request {
143-
self.stopProcess()
144-
}
145-
146-
completionHandler(result)
147-
})
148-
}
149-
}
150-
}
8+
//import Foundation
9+
//import LanguageClient
10+
//import Combine
11+
//import OSLog
12+
//import ProcessServiceClient
13+
//import ConcurrencyPlus
14+
//import LanguageServerProtocol
15+
//import ProcessEnv
16+
//import JSONRPC
17+
//
18+
//protocol LanguageExtension {
19+
// var client: RemoteLanguageServer { get }
20+
//
21+
//}
22+
//
23+
//final class UnrestrictedProcessTransport {
24+
// private var readHandler: ReadHandler = { _ in }
25+
// private let process: HostedProcess
26+
// private let taskQueue = TaskQueue()
27+
// private var subscription: AnyCancellable?
28+
// private let logger = Logger(subsystem: "com.chimehq.ChimeKit", category: "UnrestrictedProcessTransport")
29+
//
30+
// init(process: HostedProcess) {
31+
// self.process = process
32+
// }
33+
//
34+
// func beginMonitoringProcess() async throws {
35+
// let task = taskQueue.addOperation {
36+
// self.subscription = try await self.process.processEventPublisher
37+
// .sink(receiveCompletion: { _ in
38+
// }, receiveValue: { [weak self] event in
39+
// switch event {
40+
// case .stdout(let data):
41+
// self?.readHandler(data)
42+
// case .stderr(let data):
43+
// let output = String(data: data, encoding: .utf8) ?? ""
44+
//
45+
// self?.logger.info("stderr: \(output, privacy: .public)")
46+
// default:
47+
// break
48+
// }
49+
// })
50+
// }
51+
//
52+
// try await task.value
53+
// }
54+
//}
55+
//
56+
//extension UnrestrictedProcessTransport: DataTransport {
57+
// func write(_ data: Data) {
58+
// taskQueue.addOperation {
59+
// try await self.process.write(data)
60+
// }
61+
// }
62+
//
63+
// func setReaderHandler(_ handler: @escaping ReadHandler) {
64+
// self.readHandler = handler
65+
// }
66+
//
67+
// func close() {
68+
// subscription?.cancel()
69+
// }
70+
//}
71+
//
72+
///// Provides an interface to a LSP language server hosted by an intermediary process.
73+
//public class RemoteLanguageServer {
74+
// private let wrappedServer: JSONRPCLanguageServer
75+
// private var subscription: AnyCancellable?
76+
// private let logger = Logger(subsystem: "com.chimehq.ChimeKit", category: "RemoteLanguageServer")
77+
//
78+
// private let process: HostedProcess
79+
// private let taskQueue = TaskQueue()
80+
// public var terminationHandler: (() -> Void)?
81+
//
82+
// init(named serviceName: String, parameters: Process.ExecutionParameters) throws {
83+
// self.process = HostedProcess(named: serviceName, parameters: parameters)
84+
// let transport = UnrestrictedProcessTransport(process: process)
85+
// self.wrappedServer = JSONRPCLanguageServer(dataTransport: transport)
86+
//
87+
// taskQueue.addOperation {
88+
// self.logger.debug("launching remote server")
89+
//
90+
// do {
91+
// try await self.process.launch()
92+
//
93+
// self.subscription = try await self.process.processEventPublisher
94+
// .sink(receiveCompletion: { _ in
95+
//
96+
// }, receiveValue: { event in
97+
// switch event {
98+
// case .terminated:
99+
// self.terminationHandler?()
100+
// default:
101+
// break
102+
// }
103+
// })
104+
//
105+
// try await transport.beginMonitoringProcess()
106+
// } catch {
107+
// self.logger.error("failed to launch: \(String(describing: error), privacy: .public)")
108+
// }
109+
// }
110+
// }
111+
//
112+
// private func stopProcess() {
113+
// self.taskQueue.addOperation {
114+
// do {
115+
// try await self.process.terminate()
116+
// } catch {
117+
// self.logger.error("failed to terminate: \(String(describing: error), privacy: .public)")
118+
// }
119+
// }
120+
// }
121+
//
122+
// public var logMessages: Bool {
123+
// get { return wrappedServer.logMessages }
124+
// set { wrappedServer.logMessages = newValue }
125+
// }
126+
//}
127+
//
128+
//extension RemoteLanguageServer: LanguageServerProtocol.Server {
129+
// public func setHandlers(_ handlers: ServerHandlers, completionHandler: @escaping (ServerError?) -> Void) {
130+
// wrappedServer.setHandlers(handlers, completionHandler: completionHandler)
131+
// }
132+
//
133+
// public func sendNotification(_ notif: ClientNotification, completionHandler: @escaping (ServerError?) -> Void) {
134+
// taskQueue.addOperation {
135+
// self.wrappedServer.sendNotification(notif, completionHandler: completionHandler)
136+
// }
137+
// }
138+
//
139+
// public func sendRequest<Response: Codable>(_ request: ClientRequest, completionHandler: @escaping (ServerResult<Response>) -> Void) {
140+
// taskQueue.addOperation {
141+
// self.wrappedServer.sendRequest(request, completionHandler: { (result: ServerResult<Response>) in
142+
// if case .success = result, case .shutdown = request {
143+
// self.stopProcess()
144+
// }
145+
//
146+
// completionHandler(result)
147+
// })
148+
// }
149+
// }
150+
//}

0 commit comments

Comments
 (0)