language_server-protocol 3.14.0.0 → 3.15.0.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.
Files changed (179) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +9 -1
  3. data/lib/language_server/protocol/constant.rb +8 -0
  4. data/lib/language_server/protocol/constant/code_action_kind.rb +12 -8
  5. data/lib/language_server/protocol/constant/completion_item_tag.rb +16 -0
  6. data/lib/language_server/protocol/constant/diagnostic_tag.rb +24 -0
  7. data/lib/language_server/protocol/constant/signature_help_trigger_kind.rb +23 -0
  8. data/lib/language_server/protocol/constant/text_document_sync_kind.rb +1 -0
  9. data/lib/language_server/protocol/interface.rb +158 -6
  10. data/lib/language_server/protocol/interface/apply_workspace_edit_response.rb +13 -1
  11. data/lib/language_server/protocol/interface/client_capabilities.rb +11 -2
  12. data/lib/language_server/protocol/interface/code_action.rb +14 -1
  13. data/lib/language_server/protocol/interface/code_action_client_capabilities.rb +52 -0
  14. data/lib/language_server/protocol/interface/code_action_context.rb +5 -1
  15. data/lib/language_server/protocol/interface/code_action_options.rb +3 -5
  16. data/lib/language_server/protocol/interface/code_action_params.rb +3 -2
  17. data/lib/language_server/protocol/interface/code_action_registration_options.rb +3 -1
  18. data/lib/language_server/protocol/interface/code_lens_client_capabilities.rb +33 -0
  19. data/lib/language_server/protocol/interface/code_lens_options.rb +3 -5
  20. data/lib/language_server/protocol/interface/code_lens_params.rb +3 -2
  21. data/lib/language_server/protocol/interface/code_lens_registration_options.rb +3 -10
  22. data/lib/language_server/protocol/interface/color_presentation_params.rb +3 -2
  23. data/lib/language_server/protocol/interface/completion_client_capabilities.rb +59 -0
  24. data/lib/language_server/protocol/interface/completion_item.rb +16 -5
  25. data/lib/language_server/protocol/interface/completion_options.rb +33 -11
  26. data/lib/language_server/protocol/interface/completion_params.rb +3 -2
  27. data/lib/language_server/protocol/interface/completion_registration_options.rb +4 -26
  28. data/lib/language_server/protocol/interface/declaration_client_capabilities.rb +44 -0
  29. data/lib/language_server/protocol/interface/declaration_options.rb +25 -0
  30. data/lib/language_server/protocol/interface/declaration_params.rb +25 -0
  31. data/lib/language_server/protocol/interface/{folding_range_provider_options.rb → declaration_registration_options.rb} +3 -5
  32. data/lib/language_server/protocol/interface/definition_client_capabilities.rb +42 -0
  33. data/lib/language_server/protocol/interface/definition_options.rb +25 -0
  34. data/lib/language_server/protocol/interface/definition_params.rb +25 -0
  35. data/lib/language_server/protocol/interface/definition_registration_options.rb +25 -0
  36. data/lib/language_server/protocol/interface/diagnostic.rb +11 -2
  37. data/lib/language_server/protocol/interface/diagnostic_related_information.rb +1 -1
  38. data/lib/language_server/protocol/interface/did_change_configuration_client_capabilities.rb +33 -0
  39. data/lib/language_server/protocol/interface/did_change_text_document_params.rb +10 -2
  40. data/lib/language_server/protocol/interface/did_change_watched_files_client_capabilities.rb +35 -0
  41. data/lib/language_server/protocol/interface/did_change_watched_files_registration_options.rb +1 -1
  42. data/lib/language_server/protocol/interface/document_color_client_capabilities.rb +33 -0
  43. data/lib/language_server/protocol/interface/document_color_options.rb +25 -0
  44. data/lib/language_server/protocol/interface/document_color_params.rb +34 -0
  45. data/lib/language_server/protocol/interface/document_color_registration_options.rb +25 -0
  46. data/lib/language_server/protocol/interface/document_formatting_client_capabilities.rb +33 -0
  47. data/lib/language_server/protocol/interface/document_formatting_options.rb +25 -0
  48. data/lib/language_server/protocol/interface/document_formatting_params.rb +3 -2
  49. data/lib/language_server/protocol/interface/document_formatting_registration_options.rb +25 -0
  50. data/lib/language_server/protocol/interface/document_highlight_client_capabilities.rb +33 -0
  51. data/lib/language_server/protocol/interface/document_highlight_options.rb +25 -0
  52. data/lib/language_server/protocol/interface/document_highlight_params.rb +25 -0
  53. data/lib/language_server/protocol/interface/document_highlight_registration_options.rb +25 -0
  54. data/lib/language_server/protocol/interface/document_link.rb +14 -1
  55. data/lib/language_server/protocol/interface/document_link_client_capabilities.rb +42 -0
  56. data/lib/language_server/protocol/interface/document_link_options.rb +3 -5
  57. data/lib/language_server/protocol/interface/document_link_params.rb +3 -2
  58. data/lib/language_server/protocol/interface/document_link_registration_options.rb +3 -10
  59. data/lib/language_server/protocol/interface/document_on_type_formatting_client_capabilities.rb +33 -0
  60. data/lib/language_server/protocol/interface/document_on_type_formatting_options.rb +0 -3
  61. data/lib/language_server/protocol/interface/document_on_type_formatting_params.rb +1 -17
  62. data/lib/language_server/protocol/interface/document_on_type_formatting_registration_options.rb +2 -18
  63. data/lib/language_server/protocol/interface/document_range_formatting_client_capabilities.rb +33 -0
  64. data/lib/language_server/protocol/interface/document_range_formatting_options.rb +25 -0
  65. data/lib/language_server/protocol/interface/document_range_formatting_params.rb +3 -2
  66. data/lib/language_server/protocol/interface/document_range_formatting_registration_options.rb +25 -0
  67. data/lib/language_server/protocol/interface/document_symbol.rb +96 -0
  68. data/lib/language_server/protocol/interface/document_symbol_client_capabilities.rb +51 -0
  69. data/lib/language_server/protocol/interface/document_symbol_options.rb +25 -0
  70. data/lib/language_server/protocol/interface/document_symbol_params.rb +3 -2
  71. data/lib/language_server/protocol/interface/document_symbol_registration_options.rb +25 -0
  72. data/lib/language_server/protocol/interface/execute_command_client_capabilities.rb +33 -0
  73. data/lib/language_server/protocol/interface/execute_command_options.rb +3 -5
  74. data/lib/language_server/protocol/interface/execute_command_params.rb +3 -2
  75. data/lib/language_server/protocol/interface/execute_command_registration_options.rb +3 -10
  76. data/lib/language_server/protocol/interface/folding_range.rb +1 -1
  77. data/lib/language_server/protocol/interface/folding_range_client_capabilities.rb +55 -0
  78. data/lib/language_server/protocol/interface/folding_range_options.rb +25 -0
  79. data/lib/language_server/protocol/interface/folding_range_params.rb +3 -2
  80. data/lib/language_server/protocol/interface/{color_provider_options.rb → folding_range_registration_options.rb} +3 -5
  81. data/lib/language_server/protocol/interface/formatting_options.rb +28 -1
  82. data/lib/language_server/protocol/interface/hover_client_capabilities.rb +43 -0
  83. data/lib/language_server/protocol/interface/hover_options.rb +25 -0
  84. data/lib/language_server/protocol/interface/hover_params.rb +25 -0
  85. data/lib/language_server/protocol/interface/hover_registration_options.rb +25 -0
  86. data/lib/language_server/protocol/interface/implementation_client_capabilities.rb +44 -0
  87. data/lib/language_server/protocol/interface/implementation_options.rb +25 -0
  88. data/lib/language_server/protocol/interface/implementation_params.rb +25 -0
  89. data/lib/language_server/protocol/interface/implementation_registration_options.rb +25 -0
  90. data/lib/language_server/protocol/interface/initialize_params.rb +12 -4
  91. data/lib/language_server/protocol/interface/initialize_result.rb +10 -1
  92. data/lib/language_server/protocol/interface/location_link.rb +7 -4
  93. data/lib/language_server/protocol/interface/notification_message.rb +2 -1
  94. data/lib/language_server/protocol/interface/partial_result_params.rb +34 -0
  95. data/lib/language_server/protocol/interface/prepare_rename_params.rb +26 -0
  96. data/lib/language_server/protocol/interface/progress_params.rb +42 -0
  97. data/lib/language_server/protocol/interface/publish_diagnostics_client_capabilities.rb +53 -0
  98. data/lib/language_server/protocol/interface/publish_diagnostics_params.rb +10 -1
  99. data/lib/language_server/protocol/interface/reference_client_capabilities.rb +33 -0
  100. data/lib/language_server/protocol/interface/reference_options.rb +25 -0
  101. data/lib/language_server/protocol/interface/reference_params.rb +3 -2
  102. data/lib/language_server/protocol/interface/reference_registration_options.rb +25 -0
  103. data/lib/language_server/protocol/interface/rename_client_capabilities.rb +43 -0
  104. data/lib/language_server/protocol/interface/rename_options.rb +3 -5
  105. data/lib/language_server/protocol/interface/rename_params.rb +3 -20
  106. data/lib/language_server/protocol/interface/rename_registration_options.rb +3 -10
  107. data/lib/language_server/protocol/interface/request_message.rb +2 -1
  108. data/lib/language_server/protocol/interface/response_error.rb +2 -2
  109. data/lib/language_server/protocol/interface/response_message.rb +5 -4
  110. data/lib/language_server/protocol/interface/save_options.rb +0 -3
  111. data/lib/language_server/protocol/interface/selection_range.rb +42 -0
  112. data/lib/language_server/protocol/interface/selection_range_client_capabilities.rb +35 -0
  113. data/lib/language_server/protocol/interface/selection_range_options.rb +25 -0
  114. data/lib/language_server/protocol/interface/selection_range_params.rb +43 -0
  115. data/lib/language_server/protocol/interface/selection_range_registration_options.rb +25 -0
  116. data/lib/language_server/protocol/interface/server_capabilities.rb +66 -56
  117. data/lib/language_server/protocol/interface/signature_help.rb +8 -5
  118. data/lib/language_server/protocol/interface/signature_help_client_capabilities.rb +55 -0
  119. data/lib/language_server/protocol/interface/signature_help_context.rb +71 -0
  120. data/lib/language_server/protocol/interface/signature_help_options.rb +15 -5
  121. data/lib/language_server/protocol/interface/signature_help_params.rb +35 -0
  122. data/lib/language_server/protocol/interface/signature_help_registration_options.rb +4 -11
  123. data/lib/language_server/protocol/interface/symbol_information.rb +1 -1
  124. data/lib/language_server/protocol/interface/text_document_change_registration_options.rb +2 -1
  125. data/lib/language_server/protocol/interface/text_document_client_capabilities.rb +87 -87
  126. data/lib/language_server/protocol/interface/text_document_content_change_event.rb +8 -4
  127. data/lib/language_server/protocol/interface/text_document_registration_options.rb +3 -0
  128. data/lib/language_server/protocol/interface/text_document_save_registration_options.rb +1 -0
  129. data/lib/language_server/protocol/interface/text_document_sync_client_capabilities.rb +62 -0
  130. data/lib/language_server/protocol/interface/text_document_sync_options.rb +14 -6
  131. data/lib/language_server/protocol/interface/type_definition_client_capabilities.rb +44 -0
  132. data/lib/language_server/protocol/interface/type_definition_options.rb +25 -0
  133. data/lib/language_server/protocol/interface/type_definition_params.rb +25 -0
  134. data/lib/language_server/protocol/interface/type_definition_registration_options.rb +25 -0
  135. data/lib/language_server/protocol/interface/versioned_text_document_identifier.rb +2 -1
  136. data/lib/language_server/protocol/interface/work_done_progress_begin.rb +80 -0
  137. data/lib/language_server/protocol/interface/work_done_progress_cancel_params.rb +33 -0
  138. data/lib/language_server/protocol/interface/work_done_progress_create_params.rb +33 -0
  139. data/lib/language_server/protocol/interface/work_done_progress_end.rb +40 -0
  140. data/lib/language_server/protocol/interface/work_done_progress_options.rb +30 -0
  141. data/lib/language_server/protocol/interface/work_done_progress_params.rb +33 -0
  142. data/lib/language_server/protocol/interface/work_done_progress_report.rb +70 -0
  143. data/lib/language_server/protocol/interface/workspace_edit.rb +1 -1
  144. data/lib/language_server/protocol/interface/workspace_edit_client_capabilities.rb +53 -0
  145. data/lib/language_server/protocol/interface/workspace_folder.rb +2 -2
  146. data/lib/language_server/protocol/interface/workspace_folders_server_capabilities.rb +48 -0
  147. data/lib/language_server/protocol/interface/workspace_symbol_client_capabilities.rb +42 -0
  148. data/lib/language_server/protocol/interface/workspace_symbol_options.rb +25 -0
  149. data/lib/language_server/protocol/interface/workspace_symbol_params.rb +5 -3
  150. data/lib/language_server/protocol/interface/workspace_symbol_registration_options.rb +25 -0
  151. data/lib/language_server/protocol/transport.rb +1 -0
  152. data/lib/language_server/protocol/transport/io.rb +2 -0
  153. data/lib/language_server/protocol/transport/io/reader.rb +47 -0
  154. data/lib/language_server/protocol/transport/io/writer.rb +34 -0
  155. data/lib/language_server/protocol/transport/stdio/reader.rb +3 -29
  156. data/lib/language_server/protocol/transport/stdio/writer.rb +3 -18
  157. data/lib/language_server/protocol/version.rb +1 -1
  158. metadata +92 -31
  159. data/.gitignore +0 -10
  160. data/.travis.yml +0 -5
  161. data/CHANGELOG.md +0 -21
  162. data/CODE_OF_CONDUCT.md +0 -74
  163. data/Dockerfile-node.development +0 -6
  164. data/Dockerfile.development +0 -24
  165. data/Gemfile +0 -6
  166. data/Rakefile +0 -10
  167. data/bin/console +0 -14
  168. data/bin/generate_files +0 -5
  169. data/bin/m +0 -17
  170. data/bin/setup +0 -6
  171. data/circle.yml +0 -46
  172. data/docker-compose.ci.yml +0 -18
  173. data/docker-compose.override.yml +0 -19
  174. data/docker-compose.yml +0 -45
  175. data/language_server-protocol.gemspec +0 -31
  176. data/lib/language_server/protocol/interface/workspace_client_capabilities.rb +0 -104
  177. data/package.json +0 -10
  178. data/scripts/generateFiles.ts +0 -320
  179. data/yarn.lock +0 -293
@@ -1,6 +0,0 @@
1
- FROM node:6-alpine
2
-
3
- RUN mkdir /app /vendor && chown node:node /app /vendor
4
-
5
- USER node
6
- WORKDIR /app
@@ -1,24 +0,0 @@
1
- ARG RUBY_VERSION
2
- FROM ruby:$RUBY_VERSION
3
-
4
- RUN apt-get update && apt-get install less -y
5
- RUN groupadd --gid 1000 ruby && useradd --uid 1000 --gid ruby --shell /bin/bash --create-home ruby
6
- RUN mkdir /app /vendor && chown ruby:ruby /app /vendor
7
-
8
- ENV LANG=C.UTF-8 \
9
- BUNDLE_PATH=/vendor/bundle/$RUBY_VERSION \
10
- BUNDLE_JOBS=4
11
-
12
- ENV ENTRYKIT_VERSION 0.4.0
13
-
14
- RUN wget https://github.com/progrium/entrykit/releases/download/v${ENTRYKIT_VERSION}/entrykit_${ENTRYKIT_VERSION}_Linux_x86_64.tgz \
15
- && tar -xvzf entrykit_${ENTRYKIT_VERSION}_Linux_x86_64.tgz \
16
- && rm entrykit_${ENTRYKIT_VERSION}_Linux_x86_64.tgz \
17
- && mv entrykit /bin/entrykit \
18
- && chmod +x /bin/entrykit \
19
- && entrykit --symlink
20
-
21
- USER ruby
22
- WORKDIR /app
23
-
24
- ENTRYPOINT ["prehook", "bin/setup", "--"]
data/Gemfile DELETED
@@ -1,6 +0,0 @@
1
- source "https://rubygems.org"
2
-
3
- git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
4
-
5
- # Specify your gem's dependencies in language_server-protocol.gemspec
6
- gemspec
data/Rakefile DELETED
@@ -1,10 +0,0 @@
1
- require "bundler/gem_tasks"
2
- require "rake/testtask"
3
-
4
- Rake::TestTask.new(:test) do |t|
5
- t.libs << "test"
6
- t.libs << "lib"
7
- t.test_files = FileList["test/**/*_test.rb"]
8
- end
9
-
10
- task :default => :test
data/bin/console DELETED
@@ -1,14 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require "bundler/setup"
4
- require "language_server/protocol"
5
-
6
- # You can add fixtures and/or initialization code here to make experimenting
7
- # with your gem easier. You can also use a different console, if you like.
8
-
9
- # (If you use this, don't forget to add pry to your Gemfile!)
10
- # require "pry"
11
- # Pry.start
12
-
13
- require "irb"
14
- IRB.start(__FILE__)
data/bin/generate_files DELETED
@@ -1,5 +0,0 @@
1
- #!/usr/bin/env sh
2
-
3
- set -ex
4
- yarn install
5
- yarn run -s -- ts-node --compilerOptions '{"target":"es6"}' scripts/generateFiles.ts
data/bin/m DELETED
@@ -1,17 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # frozen_string_literal: true
3
- #
4
- # This file was generated by Bundler.
5
- #
6
- # The application 'm' is installed as part of a gem, and
7
- # this file is here to facilitate running it.
8
- #
9
-
10
- require "pathname"
11
- ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
12
- Pathname.new(__FILE__).realpath)
13
-
14
- require "rubygems"
15
- require "bundler/setup"
16
-
17
- load Gem.bin_path("m", "m")
data/bin/setup DELETED
@@ -1,6 +0,0 @@
1
- #!/usr/bin/env bash
2
- set -euo pipefail
3
- IFS=$'\n\t'
4
- set -vx
5
-
6
- bundle check || bundle install
data/circle.yml DELETED
@@ -1,46 +0,0 @@
1
- version: 2.0
2
- references:
3
- test: &test
4
- docker:
5
- - image: tmaier/docker-compose
6
- environment:
7
- COMPOSE_FILE: docker-compose.yml:docker-compose.ci.yml
8
- steps:
9
- - checkout
10
- - setup_remote_docker
11
- - run:
12
- name: setup
13
- command: |
14
- set -x
15
- docker info
16
- docker volume create project
17
- docker create -v project:/app --name project busybox chown -R 1000:1000 /app
18
- docker cp . project:/app
19
- docker start project
20
- docker-compose build $CIRCLE_JOB
21
- - run:
22
- name: test
23
- command: |
24
- docker-compose run $CIRCLE_JOB bundle exec rake test
25
-
26
- jobs:
27
- ruby-2-6:
28
- <<: *test
29
- ruby-2-5:
30
- <<: *test
31
- ruby-2-4:
32
- <<: *test
33
- ruby-2-3:
34
- <<: *test
35
- ruby-2-2:
36
- <<: *test
37
-
38
- workflows:
39
- version: 2
40
- test_and_buld:
41
- jobs:
42
- - ruby-2-6
43
- - ruby-2-5
44
- - ruby-2-4
45
- - ruby-2-3
46
- - ruby-2-2
@@ -1,18 +0,0 @@
1
- version: "3.0"
2
- services:
3
- ruby-2-6: &latest
4
- volumes:
5
- - project:/app
6
- ruby-2-5:
7
- <<: *latest
8
- ruby-2-4:
9
- <<: *latest
10
- ruby-2-3:
11
- <<: *latest
12
- ruby-2-2:
13
- <<: *latest
14
- node:
15
- <<: *latest
16
- volumes:
17
- project:
18
- external: true
@@ -1,19 +0,0 @@
1
- version: "3.0"
2
- services:
3
- ruby-2-6: &latest
4
- volumes:
5
- - .:/app:cached
6
- - $HOME/.gitconfig:/home/ruby/.gitconfig:ro
7
- - $HOME/.ssh:/home/ruby/.ssh:ro
8
- - $HOME/.gem:/home/ruby/.gem
9
- ruby-2-5:
10
- <<: *latest
11
- ruby-2-4:
12
- <<: *latest
13
- ruby-2-3:
14
- <<: *latest
15
- ruby-2-2:
16
- <<: *latest
17
- node:
18
- volumes:
19
- - .:/app:cached
data/docker-compose.yml DELETED
@@ -1,45 +0,0 @@
1
- version: "3.0"
2
- services:
3
- ruby-2-6: &latest
4
- build: &build
5
- context: .
6
- dockerfile: Dockerfile.development
7
- args:
8
- RUBY_VERSION: 2.6.0
9
- volumes:
10
- - vendor:/vendor
11
- - home:/home/ruby
12
- ruby-2-5:
13
- <<: *latest
14
- build:
15
- <<: *build
16
- args:
17
- RUBY_VERSION: 2.5.3
18
- ruby-2-4:
19
- <<: *latest
20
- build:
21
- <<: *build
22
- args:
23
- RUBY_VERSION: 2.4.5
24
- ruby-2-3:
25
- <<: *latest
26
- build:
27
- <<: *build
28
- args:
29
- RUBY_VERSION: 2.3.8
30
- ruby-2-2:
31
- <<: *latest
32
- build:
33
- <<: *build
34
- args:
35
- RUBY_VERSION: 2.2.10
36
- node:
37
- build:
38
- context: .
39
- dockerfile: Dockerfile-node.development
40
- volumes:
41
- - vendor:/vendor
42
- - home:/home/node
43
- volumes:
44
- vendor:
45
- home:
@@ -1,31 +0,0 @@
1
- # coding: utf-8
2
- lib = File.expand_path("../lib", __FILE__)
3
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require "language_server/protocol/version"
5
-
6
- Gem::Specification.new do |spec|
7
- spec.name = "language_server-protocol"
8
- spec.version = LanguageServer::Protocol::VERSION
9
- spec.authors = ["Fumiaki MATSUSHIMA"]
10
- spec.email = ["mtsmfm@gmail.com"]
11
-
12
- spec.summary = %q{A Language Server Protocol SDK}
13
- spec.description = %q{A Language Server Protocol SDK}
14
- spec.homepage = "https://github.com/mtsmfm/language_server-protocol-ruby"
15
- spec.license = "MIT"
16
-
17
- spec.files = `git ls-files -z`.split("\x0").reject do |f|
18
- f.match(%r{^(test|spec|features)/})
19
- end
20
- spec.bindir = "exe"
21
- spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
22
- spec.require_paths = ["lib"]
23
-
24
- spec.add_development_dependency "bundler", "~> 1.15"
25
- spec.add_development_dependency "rake", "~> 10.0"
26
- spec.add_development_dependency "minitest", "~> 5.0"
27
- spec.add_development_dependency "pry-byebug"
28
- spec.add_development_dependency "minitest-power_assert"
29
- spec.add_development_dependency "m"
30
- spec.add_development_dependency "activesupport"
31
- end
@@ -1,104 +0,0 @@
1
- module LanguageServer
2
- module Protocol
3
- module Interface
4
- #
5
- # Workspace specific client capabilities.
6
- #
7
- class WorkspaceClientCapabilities
8
- def initialize(apply_edit: nil, workspace_edit: nil, did_change_configuration: nil, did_change_watched_files: nil, symbol: nil, execute_command: nil, workspace_folders: nil, configuration: nil)
9
- @attributes = {}
10
-
11
- @attributes[:applyEdit] = apply_edit if apply_edit
12
- @attributes[:workspaceEdit] = workspace_edit if workspace_edit
13
- @attributes[:didChangeConfiguration] = did_change_configuration if did_change_configuration
14
- @attributes[:didChangeWatchedFiles] = did_change_watched_files if did_change_watched_files
15
- @attributes[:symbol] = symbol if symbol
16
- @attributes[:executeCommand] = execute_command if execute_command
17
- @attributes[:workspaceFolders] = workspace_folders if workspace_folders
18
- @attributes[:configuration] = configuration if configuration
19
-
20
- @attributes.freeze
21
- end
22
-
23
- #
24
- # The client supports applying batch edits to the workspace by supporting
25
- # the request 'workspace/applyEdit'
26
- #
27
- # @return [boolean]
28
- def apply_edit
29
- attributes.fetch(:applyEdit)
30
- end
31
-
32
- #
33
- # Capabilities specific to `WorkspaceEdit`s
34
- #
35
- # @return [{ documentChanges?: boolean; resourceOperations?: ResourceOperationKind[]; failureHandling?: Fail...]
36
- def workspace_edit
37
- attributes.fetch(:workspaceEdit)
38
- end
39
-
40
- #
41
- # Capabilities specific to the `workspace/didChangeConfiguration` notification.
42
- #
43
- # @return [{ dynamicRegistration?: boolean; }]
44
- def did_change_configuration
45
- attributes.fetch(:didChangeConfiguration)
46
- end
47
-
48
- #
49
- # Capabilities specific to the `workspace/didChangeWatchedFiles` notification.
50
- #
51
- # @return [{ dynamicRegistration?: boolean; }]
52
- def did_change_watched_files
53
- attributes.fetch(:didChangeWatchedFiles)
54
- end
55
-
56
- #
57
- # Capabilities specific to the `workspace/symbol` request.
58
- #
59
- # @return [{ dynamicRegistration?: boolean; symbolKind?: { valueSet?: any[]; }; }]
60
- def symbol
61
- attributes.fetch(:symbol)
62
- end
63
-
64
- #
65
- # Capabilities specific to the `workspace/executeCommand` request.
66
- #
67
- # @return [{ dynamicRegistration?: boolean; }]
68
- def execute_command
69
- attributes.fetch(:executeCommand)
70
- end
71
-
72
- #
73
- # The client has support for workspace folders.
74
- #
75
- # Since 3.6.0
76
- #
77
- # @return [boolean]
78
- def workspace_folders
79
- attributes.fetch(:workspaceFolders)
80
- end
81
-
82
- #
83
- # The client supports `workspace/configuration` requests.
84
- #
85
- # Since 3.6.0
86
- #
87
- # @return [boolean]
88
- def configuration
89
- attributes.fetch(:configuration)
90
- end
91
-
92
- attr_reader :attributes
93
-
94
- def to_hash
95
- attributes
96
- end
97
-
98
- def to_json(*args)
99
- to_hash.to_json(*args)
100
- end
101
- end
102
- end
103
- end
104
- end
data/package.json DELETED
@@ -1,10 +0,0 @@
1
- {
2
- "dependencies": {
3
- "@types/es6-promise": "^0.0.32",
4
- "@types/node": "^7.0.18",
5
- "handlebars": "^4.0.8",
6
- "isomorphic-fetch": "^2.2.1",
7
- "ts-node": "^3.0.4",
8
- "typescript": "^2.3.2"
9
- }
10
- }
@@ -1,320 +0,0 @@
1
- import * as ts from "typescript";
2
- import * as fs from "fs";
3
- import * as path from "path";
4
- import * as fetch from "isomorphic-fetch";
5
-
6
- const lspVersion = "c0c516735fb9eea08ac0151333b5380d70525961";
7
- const rootDir = path.normalize(path.join(__dirname, ".."));
8
- const tempDir = path.join(rootDir, "tmp");
9
- const protocolMdPath = path.join(tempDir, lspVersion, "protocol.md");
10
-
11
- const createFile = (filePath, content) => {
12
- const dir = path.dirname(path.normalize(filePath));
13
-
14
- dir.split(/(?!^)\//).forEach((_, index, all) => {
15
- const dir = all.slice(0, index + 1).join("/");
16
-
17
- if (!fs.existsSync(dir)) {
18
- fs.mkdirSync(dir);
19
- }
20
- });
21
-
22
- fs.writeFileSync(filePath, content);
23
- };
24
-
25
- const extractTypeScriptSource = content => {
26
- const regEx = /^```typescript\r\n([^]*?)^```\r\n/gm;
27
- let match;
28
- let result = "";
29
-
30
- while ((match = regEx.exec(content)) !== null) {
31
- result = result.concat(match[1]);
32
- }
33
-
34
- return result;
35
- };
36
-
37
- const extractDefinitions = content => {
38
- const fileName = path.join(tempDir, "protocol.ts");
39
- createFile(fileName, content);
40
- const program = ts.createProgram([fileName], {});
41
- const checker = program.getTypeChecker();
42
-
43
- const output = [];
44
-
45
- const serialize = member => {
46
- const symbol = checker.getSymbolAtLocation(member.name);
47
- const type = checker.getTypeOfSymbolAtLocation(
48
- symbol,
49
- symbol.valueDeclaration
50
- );
51
- const types =
52
- member.kind == ts.SyntaxKind.UnionType
53
- ? (<ts.UnionTypeNode>(<ts.PropertySignature>member).type).types
54
- : [];
55
-
56
- return {
57
- name: symbol.getName(),
58
- documentation: ts.displayPartsToString(symbol.getDocumentationComment()),
59
- type: checker.typeToString(type),
60
- optional: !!member.questionToken,
61
- nullable: (<ts.NodeArray<ts.TypeNode>>types).some(
62
- t => t.kind == ts.SyntaxKind.NullKeyword
63
- ),
64
- value: symbol.valueDeclaration
65
- ? symbol.valueDeclaration
66
- .getChildAt(symbol.valueDeclaration.getChildCount() - 1)
67
- .getText()
68
- : null
69
- };
70
- };
71
-
72
- const handleInterface = (node: ts.InterfaceDeclaration) => {
73
- const members = node.members
74
- .filter(member => member.name)
75
- .map(member => serialize(member));
76
- const parentName =
77
- node.heritageClauses && node.heritageClauses[0].getLastToken().getText();
78
- const parent = output.find(
79
- i => i.interface && i.interface.name === parentName
80
- );
81
-
82
- output.push({
83
- interface: serialize(node),
84
- parent: parent,
85
- allMembers: ((parent && parent.allMembers) || []).concat(members),
86
- members
87
- });
88
- };
89
-
90
- const handleModule = (node: ts.ModuleDeclaration) => {
91
- const members = [];
92
-
93
- ts.forEachChild(node.body, node => {
94
- members.push(
95
- serialize((<ts.VariableStatement>node).declarationList.declarations[0])
96
- );
97
- });
98
-
99
- output.push({
100
- module: serialize(node),
101
- members
102
- });
103
- };
104
-
105
- const visit = node => {
106
- switch (node.kind) {
107
- case ts.SyntaxKind.InterfaceDeclaration:
108
- handleInterface(node);
109
- break;
110
-
111
- case ts.SyntaxKind.ModuleDeclaration:
112
- handleModule(node);
113
- break;
114
- }
115
- };
116
-
117
- ts.forEachChild(program.getSourceFile(fileName), visit);
118
-
119
- return output;
120
- };
121
-
122
- import Handlebars from "handlebars";
123
- const snake = s =>
124
- s
125
- .replace(/^[A-Z]/, s => s.toLowerCase())
126
- .replace(/[A-Z]/g, s => `_${s.toLowerCase()}`);
127
-
128
- Handlebars.registerHelper("params", members => {
129
- return members
130
- .map(
131
- member =>
132
- `${snake(member.name)}:${
133
- member.optional || member.nullable ? " nil" : ""
134
- }`
135
- )
136
- .join(", ");
137
- });
138
- Handlebars.registerHelper("snake", snake);
139
- Handlebars.registerHelper("comment", (s, options) => {
140
- const indent = Array(options.hash.indent + 1).join(" ");
141
- return s
142
- .split("\n")
143
- .map(s => s.trim())
144
- .map(s => `${indent}#${s.length == 0 ? "" : ` ${s}`}`)
145
- .join("\n");
146
- });
147
- Handlebars.registerHelper("local_var", s => {
148
- const rubyKeywords = ["end", "retry"];
149
- const snaked = snake(s);
150
-
151
- if (rubyKeywords.some(k => k == s)) {
152
- return `binding.local_variable_get(:${snaked})`;
153
- } else {
154
- return snake(s);
155
- }
156
- });
157
- Handlebars.registerHelper("const", s => {
158
- return snake(s).toUpperCase();
159
- });
160
-
161
- (async () => {
162
- if (!fs.existsSync(protocolMdPath)) {
163
- const res = await fetch(
164
- `https://github.com/Microsoft/language-server-protocol/raw/${lspVersion}/specification.md`
165
- );
166
- createFile(protocolMdPath, await res.text());
167
- }
168
-
169
- const md = fs.readFileSync(protocolMdPath).toString();
170
- const typeScriptSource = extractTypeScriptSource(md);
171
-
172
- const definitions = extractDefinitions(typeScriptSource);
173
- const interfaces = definitions.filter(d => d.interface);
174
- const modules = definitions.filter(d => d.module);
175
-
176
- interfaces.forEach(definition => {
177
- createFile(
178
- path.join(
179
- rootDir,
180
- "lib",
181
- "language_server",
182
- "protocol",
183
- "interface",
184
- `${snake(definition.interface.name)}.rb`
185
- ),
186
- Handlebars.compile(
187
- `
188
- module LanguageServer
189
- module Protocol
190
- module Interface
191
- {{#if definition.interface.documentation}}
192
- #
193
- {{comment definition.interface.documentation indent=6}}
194
- #
195
- {{/if}}
196
- class {{definition.interface.name}}{{#if definition.parent}} < {{definition.parent.interface.name}}{{/if}}
197
- def initialize({{params definition.allMembers}})
198
- @attributes = {}
199
-
200
- {{#each definition.members}}
201
- @attributes[:{{name}}] = {{local_var name}}{{#if optional}} if {{local_var name}}{{/if}}
202
- {{/each}}
203
-
204
- @attributes.freeze
205
- end
206
- {{#each definition.members}}
207
-
208
- {{#if documentation}}
209
- #
210
- {{comment documentation indent=8}}
211
- #
212
- {{/if}}
213
- # @return [{{type}}{{#if nullable}}, nil{{/if}}]
214
- def {{snake name}}
215
- attributes.fetch(:{{name}})
216
- end
217
- {{/each}}
218
-
219
- attr_reader :attributes
220
-
221
- def to_hash
222
- attributes
223
- end
224
-
225
- def to_json(*args)
226
- to_hash.to_json(*args)
227
- end
228
- end
229
- end
230
- end
231
- end
232
- `.slice(1),
233
- { noEscape: true }
234
- )({ definition })
235
- );
236
- });
237
-
238
- modules.forEach(definition => {
239
- createFile(
240
- path.join(
241
- rootDir,
242
- "lib",
243
- "language_server",
244
- "protocol",
245
- "constant",
246
- `${snake(definition.module.name)}.rb`
247
- ),
248
- Handlebars.compile(
249
- `
250
- module LanguageServer
251
- module Protocol
252
- module Constant
253
- {{#if definition.module.documentation}}
254
- #
255
- {{comment definition.module.documentation indent=6}}
256
- #
257
- {{/if}}
258
- module {{definition.module.name}}
259
- {{#each definition.members}}
260
- {{#if documentation}}
261
- #
262
- {{comment documentation indent=8}}
263
- #
264
- {{/if}}
265
- {{const name}} = {{value}}
266
- {{/each}}
267
- end
268
- end
269
- end
270
- end
271
- `.slice(1),
272
- { noEscape: true }
273
- )({ definition })
274
- );
275
- });
276
-
277
- createFile(
278
- path.join(rootDir, "lib", "language_server", "protocol", "interface.rb"),
279
- Handlebars.compile(
280
- `
281
- module LanguageServer
282
- module Protocol
283
- module Interface
284
- {{#each names}}
285
- autoload :{{this}}, "language_server/protocol/interface/{{snake this}}"
286
- {{/each}}
287
-
288
- {{#each names}}
289
- require "language_server/protocol/interface/{{snake this}}"
290
- {{/each}}
291
- end
292
- end
293
- end
294
- `.slice(1),
295
- { noEscape: true }
296
- )({ names: interfaces.map(i => i.interface.name).sort() })
297
- );
298
-
299
- createFile(
300
- path.join(rootDir, "lib", "language_server", "protocol", "constant.rb"),
301
- Handlebars.compile(
302
- `
303
- module LanguageServer
304
- module Protocol
305
- module Constant
306
- {{#each names}}
307
- autoload :{{this}}, "language_server/protocol/constant/{{snake this}}"
308
- {{/each}}
309
-
310
- {{#each names}}
311
- require "language_server/protocol/constant/{{snake this}}"
312
- {{/each}}
313
- end
314
- end
315
- end
316
- `.slice(1),
317
- { noEscape: true }
318
- )({ names: modules.map(i => i.module.name).sort() })
319
- );
320
- })();