language_server-protocol 3.14.0.0 → 3.15.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +9 -1
- data/lib/language_server/protocol/constant.rb +8 -0
- data/lib/language_server/protocol/constant/code_action_kind.rb +12 -8
- data/lib/language_server/protocol/constant/completion_item_tag.rb +16 -0
- data/lib/language_server/protocol/constant/diagnostic_tag.rb +24 -0
- data/lib/language_server/protocol/constant/signature_help_trigger_kind.rb +23 -0
- data/lib/language_server/protocol/constant/text_document_sync_kind.rb +1 -0
- data/lib/language_server/protocol/interface.rb +158 -6
- data/lib/language_server/protocol/interface/apply_workspace_edit_response.rb +13 -1
- data/lib/language_server/protocol/interface/client_capabilities.rb +11 -2
- data/lib/language_server/protocol/interface/code_action.rb +14 -1
- data/lib/language_server/protocol/interface/code_action_client_capabilities.rb +52 -0
- data/lib/language_server/protocol/interface/code_action_context.rb +5 -1
- data/lib/language_server/protocol/interface/code_action_options.rb +3 -5
- data/lib/language_server/protocol/interface/code_action_params.rb +3 -2
- data/lib/language_server/protocol/interface/code_action_registration_options.rb +3 -1
- data/lib/language_server/protocol/interface/code_lens_client_capabilities.rb +33 -0
- data/lib/language_server/protocol/interface/code_lens_options.rb +3 -5
- data/lib/language_server/protocol/interface/code_lens_params.rb +3 -2
- data/lib/language_server/protocol/interface/code_lens_registration_options.rb +3 -10
- data/lib/language_server/protocol/interface/color_presentation_params.rb +3 -2
- data/lib/language_server/protocol/interface/completion_client_capabilities.rb +59 -0
- data/lib/language_server/protocol/interface/completion_item.rb +16 -5
- data/lib/language_server/protocol/interface/completion_options.rb +33 -11
- data/lib/language_server/protocol/interface/completion_params.rb +3 -2
- data/lib/language_server/protocol/interface/completion_registration_options.rb +4 -26
- data/lib/language_server/protocol/interface/declaration_client_capabilities.rb +44 -0
- data/lib/language_server/protocol/interface/declaration_options.rb +25 -0
- data/lib/language_server/protocol/interface/declaration_params.rb +25 -0
- data/lib/language_server/protocol/interface/{folding_range_provider_options.rb → declaration_registration_options.rb} +3 -5
- data/lib/language_server/protocol/interface/definition_client_capabilities.rb +42 -0
- data/lib/language_server/protocol/interface/definition_options.rb +25 -0
- data/lib/language_server/protocol/interface/definition_params.rb +25 -0
- data/lib/language_server/protocol/interface/definition_registration_options.rb +25 -0
- data/lib/language_server/protocol/interface/diagnostic.rb +11 -2
- data/lib/language_server/protocol/interface/diagnostic_related_information.rb +1 -1
- data/lib/language_server/protocol/interface/did_change_configuration_client_capabilities.rb +33 -0
- data/lib/language_server/protocol/interface/did_change_text_document_params.rb +10 -2
- data/lib/language_server/protocol/interface/did_change_watched_files_client_capabilities.rb +35 -0
- data/lib/language_server/protocol/interface/did_change_watched_files_registration_options.rb +1 -1
- data/lib/language_server/protocol/interface/document_color_client_capabilities.rb +33 -0
- data/lib/language_server/protocol/interface/document_color_options.rb +25 -0
- data/lib/language_server/protocol/interface/document_color_params.rb +34 -0
- data/lib/language_server/protocol/interface/document_color_registration_options.rb +25 -0
- data/lib/language_server/protocol/interface/document_formatting_client_capabilities.rb +33 -0
- data/lib/language_server/protocol/interface/document_formatting_options.rb +25 -0
- data/lib/language_server/protocol/interface/document_formatting_params.rb +3 -2
- data/lib/language_server/protocol/interface/document_formatting_registration_options.rb +25 -0
- data/lib/language_server/protocol/interface/document_highlight_client_capabilities.rb +33 -0
- data/lib/language_server/protocol/interface/document_highlight_options.rb +25 -0
- data/lib/language_server/protocol/interface/document_highlight_params.rb +25 -0
- data/lib/language_server/protocol/interface/document_highlight_registration_options.rb +25 -0
- data/lib/language_server/protocol/interface/document_link.rb +14 -1
- data/lib/language_server/protocol/interface/document_link_client_capabilities.rb +42 -0
- data/lib/language_server/protocol/interface/document_link_options.rb +3 -5
- data/lib/language_server/protocol/interface/document_link_params.rb +3 -2
- data/lib/language_server/protocol/interface/document_link_registration_options.rb +3 -10
- data/lib/language_server/protocol/interface/document_on_type_formatting_client_capabilities.rb +33 -0
- data/lib/language_server/protocol/interface/document_on_type_formatting_options.rb +0 -3
- data/lib/language_server/protocol/interface/document_on_type_formatting_params.rb +1 -17
- data/lib/language_server/protocol/interface/document_on_type_formatting_registration_options.rb +2 -18
- data/lib/language_server/protocol/interface/document_range_formatting_client_capabilities.rb +33 -0
- data/lib/language_server/protocol/interface/document_range_formatting_options.rb +25 -0
- data/lib/language_server/protocol/interface/document_range_formatting_params.rb +3 -2
- data/lib/language_server/protocol/interface/document_range_formatting_registration_options.rb +25 -0
- data/lib/language_server/protocol/interface/document_symbol.rb +96 -0
- data/lib/language_server/protocol/interface/document_symbol_client_capabilities.rb +51 -0
- data/lib/language_server/protocol/interface/document_symbol_options.rb +25 -0
- data/lib/language_server/protocol/interface/document_symbol_params.rb +3 -2
- data/lib/language_server/protocol/interface/document_symbol_registration_options.rb +25 -0
- data/lib/language_server/protocol/interface/execute_command_client_capabilities.rb +33 -0
- data/lib/language_server/protocol/interface/execute_command_options.rb +3 -5
- data/lib/language_server/protocol/interface/execute_command_params.rb +3 -2
- data/lib/language_server/protocol/interface/execute_command_registration_options.rb +3 -10
- data/lib/language_server/protocol/interface/folding_range.rb +1 -1
- data/lib/language_server/protocol/interface/folding_range_client_capabilities.rb +55 -0
- data/lib/language_server/protocol/interface/folding_range_options.rb +25 -0
- data/lib/language_server/protocol/interface/folding_range_params.rb +3 -2
- data/lib/language_server/protocol/interface/{color_provider_options.rb → folding_range_registration_options.rb} +3 -5
- data/lib/language_server/protocol/interface/formatting_options.rb +28 -1
- data/lib/language_server/protocol/interface/hover_client_capabilities.rb +43 -0
- data/lib/language_server/protocol/interface/hover_options.rb +25 -0
- data/lib/language_server/protocol/interface/hover_params.rb +25 -0
- data/lib/language_server/protocol/interface/hover_registration_options.rb +25 -0
- data/lib/language_server/protocol/interface/implementation_client_capabilities.rb +44 -0
- data/lib/language_server/protocol/interface/implementation_options.rb +25 -0
- data/lib/language_server/protocol/interface/implementation_params.rb +25 -0
- data/lib/language_server/protocol/interface/implementation_registration_options.rb +25 -0
- data/lib/language_server/protocol/interface/initialize_params.rb +12 -4
- data/lib/language_server/protocol/interface/initialize_result.rb +10 -1
- data/lib/language_server/protocol/interface/location_link.rb +7 -4
- data/lib/language_server/protocol/interface/notification_message.rb +2 -1
- data/lib/language_server/protocol/interface/partial_result_params.rb +34 -0
- data/lib/language_server/protocol/interface/prepare_rename_params.rb +26 -0
- data/lib/language_server/protocol/interface/progress_params.rb +42 -0
- data/lib/language_server/protocol/interface/publish_diagnostics_client_capabilities.rb +53 -0
- data/lib/language_server/protocol/interface/publish_diagnostics_params.rb +10 -1
- data/lib/language_server/protocol/interface/reference_client_capabilities.rb +33 -0
- data/lib/language_server/protocol/interface/reference_options.rb +25 -0
- data/lib/language_server/protocol/interface/reference_params.rb +3 -2
- data/lib/language_server/protocol/interface/reference_registration_options.rb +25 -0
- data/lib/language_server/protocol/interface/rename_client_capabilities.rb +43 -0
- data/lib/language_server/protocol/interface/rename_options.rb +3 -5
- data/lib/language_server/protocol/interface/rename_params.rb +3 -20
- data/lib/language_server/protocol/interface/rename_registration_options.rb +3 -10
- data/lib/language_server/protocol/interface/request_message.rb +2 -1
- data/lib/language_server/protocol/interface/response_error.rb +2 -2
- data/lib/language_server/protocol/interface/response_message.rb +5 -4
- data/lib/language_server/protocol/interface/save_options.rb +0 -3
- data/lib/language_server/protocol/interface/selection_range.rb +42 -0
- data/lib/language_server/protocol/interface/selection_range_client_capabilities.rb +35 -0
- data/lib/language_server/protocol/interface/selection_range_options.rb +25 -0
- data/lib/language_server/protocol/interface/selection_range_params.rb +43 -0
- data/lib/language_server/protocol/interface/selection_range_registration_options.rb +25 -0
- data/lib/language_server/protocol/interface/server_capabilities.rb +66 -56
- data/lib/language_server/protocol/interface/signature_help.rb +8 -5
- data/lib/language_server/protocol/interface/signature_help_client_capabilities.rb +55 -0
- data/lib/language_server/protocol/interface/signature_help_context.rb +71 -0
- data/lib/language_server/protocol/interface/signature_help_options.rb +15 -5
- data/lib/language_server/protocol/interface/signature_help_params.rb +35 -0
- data/lib/language_server/protocol/interface/signature_help_registration_options.rb +4 -11
- data/lib/language_server/protocol/interface/symbol_information.rb +1 -1
- data/lib/language_server/protocol/interface/text_document_change_registration_options.rb +2 -1
- data/lib/language_server/protocol/interface/text_document_client_capabilities.rb +87 -87
- data/lib/language_server/protocol/interface/text_document_content_change_event.rb +8 -4
- data/lib/language_server/protocol/interface/text_document_registration_options.rb +3 -0
- data/lib/language_server/protocol/interface/text_document_save_registration_options.rb +1 -0
- data/lib/language_server/protocol/interface/text_document_sync_client_capabilities.rb +62 -0
- data/lib/language_server/protocol/interface/text_document_sync_options.rb +14 -6
- data/lib/language_server/protocol/interface/type_definition_client_capabilities.rb +44 -0
- data/lib/language_server/protocol/interface/type_definition_options.rb +25 -0
- data/lib/language_server/protocol/interface/type_definition_params.rb +25 -0
- data/lib/language_server/protocol/interface/type_definition_registration_options.rb +25 -0
- data/lib/language_server/protocol/interface/versioned_text_document_identifier.rb +2 -1
- data/lib/language_server/protocol/interface/work_done_progress_begin.rb +80 -0
- data/lib/language_server/protocol/interface/work_done_progress_cancel_params.rb +33 -0
- data/lib/language_server/protocol/interface/work_done_progress_create_params.rb +33 -0
- data/lib/language_server/protocol/interface/work_done_progress_end.rb +40 -0
- data/lib/language_server/protocol/interface/work_done_progress_options.rb +30 -0
- data/lib/language_server/protocol/interface/work_done_progress_params.rb +33 -0
- data/lib/language_server/protocol/interface/work_done_progress_report.rb +70 -0
- data/lib/language_server/protocol/interface/workspace_edit.rb +1 -1
- data/lib/language_server/protocol/interface/workspace_edit_client_capabilities.rb +53 -0
- data/lib/language_server/protocol/interface/workspace_folder.rb +2 -2
- data/lib/language_server/protocol/interface/workspace_folders_server_capabilities.rb +48 -0
- data/lib/language_server/protocol/interface/workspace_symbol_client_capabilities.rb +42 -0
- data/lib/language_server/protocol/interface/workspace_symbol_options.rb +25 -0
- data/lib/language_server/protocol/interface/workspace_symbol_params.rb +5 -3
- data/lib/language_server/protocol/interface/workspace_symbol_registration_options.rb +25 -0
- data/lib/language_server/protocol/transport.rb +1 -0
- data/lib/language_server/protocol/transport/io.rb +2 -0
- data/lib/language_server/protocol/transport/io/reader.rb +47 -0
- data/lib/language_server/protocol/transport/io/writer.rb +34 -0
- data/lib/language_server/protocol/transport/stdio/reader.rb +3 -29
- data/lib/language_server/protocol/transport/stdio/writer.rb +3 -18
- data/lib/language_server/protocol/version.rb +1 -1
- metadata +92 -31
- data/.gitignore +0 -10
- data/.travis.yml +0 -5
- data/CHANGELOG.md +0 -21
- data/CODE_OF_CONDUCT.md +0 -74
- data/Dockerfile-node.development +0 -6
- data/Dockerfile.development +0 -24
- data/Gemfile +0 -6
- data/Rakefile +0 -10
- data/bin/console +0 -14
- data/bin/generate_files +0 -5
- data/bin/m +0 -17
- data/bin/setup +0 -6
- data/circle.yml +0 -46
- data/docker-compose.ci.yml +0 -18
- data/docker-compose.override.yml +0 -19
- data/docker-compose.yml +0 -45
- data/language_server-protocol.gemspec +0 -31
- data/lib/language_server/protocol/interface/workspace_client_capabilities.rb +0 -104
- data/package.json +0 -10
- data/scripts/generateFiles.ts +0 -320
- data/yarn.lock +0 -293
data/Dockerfile-node.development
DELETED
data/Dockerfile.development
DELETED
@@ -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
data/Rakefile
DELETED
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
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
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
|
data/docker-compose.ci.yml
DELETED
@@ -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
|
data/docker-compose.override.yml
DELETED
@@ -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
data/scripts/generateFiles.ts
DELETED
@@ -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
|
-
})();
|