solargraph 0.43.1 → 0.43.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 48b532bf77bb72b9d2d111605cc86e97a21c372319a041ef5c4dfbd03a2b98d1
4
- data.tar.gz: da953eea90b1215a794783723898277abe33a4b74e585eeb710f231b824321b7
3
+ metadata.gz: e671eddad2fe717ad573954a63154bd89adbc12c9899c3f8762bf38a93160657
4
+ data.tar.gz: 2224d1457b9e8f7279bfa89b2777fe3d60a0a2283de4047930bebb79034a1ac4
5
5
  SHA512:
6
- metadata.gz: c3f55a7eb1f0b08247d70f7a2c28422b6444e5102a96c7c9da88b5b9b5f558732f97dc186e6dc53650bd5af20747066dbf53272a15527f000607fca17583e6da
7
- data.tar.gz: 7224059b6b2c757049bf27c4140c54063b035b13eeaf93f30c521393c5e8c863b72843c28edbfb9cbe2980fe28f79006195926f9c8bf79b204dd08a9895ec1e8
6
+ metadata.gz: 76ffe1331d8020eed92c39d2c4886ce7d01e4143a8b8264ac1bf4011335fabfd32a48f16a7099f889fed2e7c485e2e9cbf09714f677cd6e9396381032522f67a
7
+ data.tar.gz: 9c6da25c26ed209af38be4a0bc8d7a6ce826fb3012bce650089e982f829f4c8b14807ed0f7d1ecdeacd9b737bedd9d682440a9701a864313a83e60182771ade0
data/CHANGELOG.md CHANGED
@@ -1,4 +1,7 @@
1
- ## 0.43.1
1
+ ## 0.43.2 - September 23, 2021
2
+ - Synchronize server requests (#461)
3
+
4
+ ## 0.43.1 - September 20, 2021
2
5
  - Complete nested namespaces in open gates
3
6
  - SourceMap::Mapper reports filename for encoding errors (#474)
4
7
  - Handle request on a specific thread, and cancel completion when there has newer completion request (#459)
@@ -23,16 +23,18 @@ module Solargraph
23
23
  def stopped?
24
24
  @stopped
25
25
  end
26
+
26
27
  def stop
27
28
  @stopped = true
28
29
  end
29
30
 
30
- # @param message the message should be handle. will pass back to Host#receive
31
+ # @param message [Hash] The message should be handle. will pass back to Host#receive
32
+ # @return [void]
31
33
  def queue(message)
32
- @mutex.synchronize {
34
+ @mutex.synchronize do
33
35
  messages.push(message)
34
36
  @resource.signal
35
- }
37
+ end
36
38
  end
37
39
 
38
40
  def start
@@ -42,13 +44,14 @@ module Solargraph
42
44
  tick until stopped?
43
45
  end
44
46
  end
47
+
45
48
  def tick
46
- message = @mutex.synchronize {
49
+ message = @mutex.synchronize do
47
50
  @resource.wait(@mutex) if messages.empty?
48
51
  messages.shift
49
- }
50
- message = @host.receive(message)
51
- message && message.send_response
52
+ end
53
+ handler = @host.receive(message)
54
+ handler && handler.send_response
52
55
  end
53
56
  end
54
57
  end
@@ -29,7 +29,7 @@ module Solargraph
29
29
  def initialize
30
30
  @cancel_semaphore = Mutex.new
31
31
  @buffer_semaphore = Mutex.new
32
- @register_semaphore = Mutex.new
32
+ @request_mutex = Mutex.new
33
33
  @cancel = []
34
34
  @buffer = String.new
35
35
  @stopped = true
@@ -92,7 +92,9 @@ module Solargraph
92
92
  @cancel_semaphore.synchronize { @cancel.delete id }
93
93
  end
94
94
 
95
- # called by adapter, to handle the request
95
+ # Called by adapter, to handle the request
96
+ # @param request [Hash]
97
+ # @return [void]
96
98
  def process request
97
99
  message_worker.queue(request)
98
100
  end
@@ -363,19 +365,21 @@ module Solargraph
363
365
  # @yieldparam [Hash] The result sent by the client
364
366
  # @return [void]
365
367
  def send_request method, params, &block
366
- message = {
367
- jsonrpc: "2.0",
368
- method: method,
369
- params: params,
370
- id: @next_request_id
371
- }
372
- json = message.to_json
373
- requests[@next_request_id] = Request.new(@next_request_id, &block)
374
- envelope = "Content-Length: #{json.bytesize}\r\n\r\n#{json}"
375
- queue envelope
376
- @next_request_id += 1
377
- logger.info "Server sent #{method}"
378
- logger.debug params
368
+ @request_mutex.synchronize do
369
+ message = {
370
+ jsonrpc: "2.0",
371
+ method: method,
372
+ params: params,
373
+ id: @next_request_id
374
+ }
375
+ json = message.to_json
376
+ requests[@next_request_id] = Request.new(@next_request_id, &block)
377
+ envelope = "Content-Length: #{json.bytesize}\r\n\r\n#{json}"
378
+ queue envelope
379
+ @next_request_id += 1
380
+ logger.info "Server sent #{method}"
381
+ logger.debug params
382
+ end
379
383
  end
380
384
 
381
385
  # Register the methods as capabilities with the client.
@@ -386,20 +390,16 @@ module Solargraph
386
390
  # @return [void]
387
391
  def register_capabilities methods
388
392
  logger.debug "Registering capabilities: #{methods}"
389
- registrations = methods.select{|m| can_register?(m) and !registered?(m)}.map { |m|
393
+ registrations = methods.select { |m| can_register?(m) and !registered?(m) }.map do |m|
390
394
  @registered_capabilities.add m
391
395
  {
392
396
  id: m,
393
397
  method: m,
394
398
  registerOptions: dynamic_capability_options[m]
395
399
  }
396
- }
397
- return if registrations.empty?
398
- @register_semaphore.synchronize do
399
- send_request 'client/registerCapability', {
400
- registrations: registrations
401
- }
402
400
  end
401
+ return if registrations.empty?
402
+ send_request 'client/registerCapability', { registrations: registrations }
403
403
  end
404
404
 
405
405
  # Unregister the methods with the client.
@@ -418,11 +418,7 @@ module Solargraph
418
418
  }
419
419
  }
420
420
  return if unregisterations.empty?
421
- @register_semaphore.synchronize do
422
- send_request 'client/unregisterCapability', {
423
- unregisterations: unregisterations
424
- }
425
- end
421
+ send_request 'client/unregisterCapability', { unregisterations: unregisterations }
426
422
  end
427
423
 
428
424
  # Flag a method as available for dynamic registration.
@@ -430,9 +426,7 @@ module Solargraph
430
426
  # @param method [String] The method name, e.g., 'textDocument/completion'
431
427
  # @return [void]
432
428
  def allow_registration method
433
- @register_semaphore.synchronize do
434
- @dynamic_capabilities.add method
435
- end
429
+ @dynamic_capabilities.add method
436
430
  end
437
431
 
438
432
  # True if the specified LSP method can be dynamically registered.
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Solargraph
4
- VERSION = '0.43.1'
4
+ VERSION = '0.43.2'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: solargraph
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.43.1
4
+ version: 0.43.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Fred Snyder
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-09-20 00:00:00.000000000 Z
11
+ date: 2021-09-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: backport