ruby-lsp-ree 0.1.24 → 0.1.26

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: 149a5de21eba9546be0724fa9af412299bb013bb4f413ff0f59d8ba8676261d8
4
- data.tar.gz: bf136b0f946e1d79c43a67c29e32084b3aa90f8f4725984063789ec91c3e3404
3
+ metadata.gz: d8c04abd3209490247cd5ba187ba8ad2e771feb891fc03c283301b2fbdc7903b
4
+ data.tar.gz: d4bc2bc8073d181b26ef8b2e007e6e50f511e704525c22a53067bcad0cf8ddf0
5
5
  SHA512:
6
- metadata.gz: 792a7249438e7b086bc98b274077a2fb3af406558167bb0a910a4787440550da742a90d7a97a1e5bd56b8db8c15abc2848d835812c90d275a4d0169ae32b156e
7
- data.tar.gz: 31dbbcc00c85d4cfc9913e156589f112809e73d8b4d80ac27f6f9ca4d481c383c3e4adb7ed131e2c9d002bc0224dfce545761bde2c5d8fc78d1883a440abda61
6
+ metadata.gz: 573a165703a4a782a8453fe0494310fb8845f7983c61a1d13ad8e05021fa2dba456302a2278c53efeeddb03afcdde4ed637239efbf814419301170592fa9eb60
7
+ data.tar.gz: fcd8df3fd0f56bb5183a94a276d2e40112a62d04679c73648e630ed791349deb32a95c3ecf2d2098b64f2dbb730999c08a1c7a4f82a348fa2e1c4bc2e997c5ab
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 3.3.0
1
+ 3.4.1
data/CHANGELOG.md CHANGED
@@ -1,3 +1,8 @@
1
+ ## [0.1.25] - 2025-07-11
2
+
3
+ - links section sorting - remove new lines between groups
4
+ - fixed go-to-definition for consts from imports
5
+
1
6
  ## [0.1.24] - 2025-06-27
2
7
 
3
8
  - ree 1.2 syntax support
data/Gemfile CHANGED
@@ -9,6 +9,6 @@ gem "rake", "~> 13.0"
9
9
 
10
10
  group :test do
11
11
  gem 'rspec'
12
- gem 'ruby-lsp'
12
+ gem 'ruby-lsp', '~> 0.25.0'
13
13
  gem "sorbet-static-and-runtime"
14
14
  end
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- ruby-lsp-ree (0.1.24)
4
+ ruby-lsp-ree (0.1.25)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -26,11 +26,10 @@ GEM
26
26
  diff-lcs (>= 1.2.0, < 2.0)
27
27
  rspec-support (~> 3.13.0)
28
28
  rspec-support (3.13.2)
29
- ruby-lsp (0.23.11)
29
+ ruby-lsp (0.25.0)
30
30
  language_server-protocol (~> 3.17.0)
31
31
  prism (>= 1.2, < 2.0)
32
- rbs (>= 3, < 4)
33
- sorbet-runtime (>= 0.5.10782)
32
+ rbs (>= 3, < 5)
34
33
  sorbet (0.5.11835)
35
34
  sorbet-static (= 0.5.11835)
36
35
  sorbet-runtime (0.5.11835)
@@ -41,13 +40,14 @@ GEM
41
40
  sorbet-runtime (= 0.5.11835)
42
41
 
43
42
  PLATFORMS
43
+ x86_64-darwin-22
44
44
  x86_64-darwin-23
45
45
  x86_64-linux
46
46
 
47
47
  DEPENDENCIES
48
48
  rake (~> 13.0)
49
49
  rspec
50
- ruby-lsp
50
+ ruby-lsp (~> 0.25.0)
51
51
  ruby-lsp-ree!
52
52
  sorbet-static-and-runtime
53
53
 
@@ -90,7 +90,7 @@ module RubyLsp
90
90
  end
91
91
  end
92
92
 
93
- def map_class_name_objects(class_name_objects, node, parsed_doc)
93
+ def map_class_name_objects(class_name_objects, node, parsed_doc, ree_context)
94
94
  imported_consts = []
95
95
  not_imported_consts = []
96
96
 
@@ -128,6 +128,7 @@ module RubyLsp
128
128
  detail: entry_comment + " #{file_name}"
129
129
  )
130
130
 
131
+ addition_edits = ree_context.is_link_object? ? [] : ConstAdditionalTextEditsCreator.call(parsed_doc, class_name, package_name, entry)
131
132
  not_imported_consts << Interface::CompletionItem.new(
132
133
  label: class_name,
133
134
  label_details: label_details,
@@ -137,7 +138,7 @@ module RubyLsp
137
138
  new_text: class_name,
138
139
  ),
139
140
  kind: Constant::CompletionItemKind::CLASS,
140
- additional_text_edits: ConstAdditionalTextEditsCreator.call(parsed_doc, class_name, package_name, entry)
141
+ additional_text_edits: addition_edits
141
142
  )
142
143
  end
143
144
  end
@@ -36,7 +36,7 @@ module RubyLsp
36
36
  link_group.map{ renderer.render(_1) }.join('')
37
37
  end
38
38
 
39
- editor.insert_link_block(parsed_doc, link_groups_texts.select{ _1.size > 0 }.join("\n"))
39
+ editor.insert_link_block(parsed_doc, link_groups_texts.select{ _1.size > 0 }.join(''))
40
40
  editor.source
41
41
  end
42
42
  end
@@ -51,7 +51,10 @@ module RubyLsp
51
51
 
52
52
  if removed_links == links_count
53
53
  parsed_doc.parse_links_container_node
54
- editor.remove_link_block(parsed_doc.links_container_node, parsed_doc.links_container_block_node)
54
+
55
+ if !has_non_link_dsl_calls?(parsed_doc)
56
+ editor.remove_link_block(parsed_doc.links_container_node, parsed_doc.links_container_block_node)
57
+ end
55
58
  end
56
59
 
57
60
  editor.source
@@ -66,6 +69,17 @@ module RubyLsp
66
69
  def link_object_is_used?(parsed_doc, link_node, linked_object)
67
70
  editor.contains_linked_object_usage?(parsed_doc, link_node, linked_object) || dsl_parser.contains_object_usage?(linked_object.usage_name)
68
71
  end
72
+
73
+ NON_LINK_DSL_METHODS = [:benchmark, :singleton, :freeze, :with_caller, :factory, :after_init, :target, :tags].freeze
74
+
75
+ def has_non_link_dsl_calls?(parsed_doc)
76
+ block_node = parsed_doc.links_container_block_node
77
+ return false unless block_node&.body&.body
78
+
79
+ block_node.body.body.any? do |node|
80
+ node.is_a?(Prism::CallNode) && NON_LINK_DSL_METHODS.include?(node.name)
81
+ end
82
+ end
69
83
  end
70
84
  end
71
85
  end
@@ -1,6 +1,7 @@
1
1
  require_relative "../utils/ree_lsp_utils"
2
2
  require_relative "../ree_object_finder"
3
3
  require_relative '../completion/completion_items_mapper'
4
+ require_relative "../ree_context"
4
5
 
5
6
  module RubyLsp
6
7
  module Ree
@@ -18,6 +19,7 @@ module RubyLsp
18
19
  @root_node = @node_context.instance_variable_get(:@nesting_nodes).first
19
20
  @finder = ReeObjectFinder.new(@index)
20
21
  @mapper = RubyLsp::Ree::CompletionItemsMapper.new(@index)
22
+ @ree_context = RubyLsp::Ree::ReeContext.new(node_context)
21
23
  end
22
24
 
23
25
  def get_ree_receiver(receiver_node)
@@ -65,7 +67,7 @@ module RubyLsp
65
67
 
66
68
  parsed_doc = RubyLsp::Ree::ParsedDocumentBuilder.build_from_ast(@root_node, @uri)
67
69
 
68
- @mapper.map_class_name_objects(class_name_objects.take(CANDIDATES_LIMIT), node, parsed_doc)
70
+ @mapper.map_class_name_objects(class_name_objects.take(CANDIDATES_LIMIT), node, parsed_doc, @ree_context)
69
71
  end
70
72
 
71
73
  def get_ree_objects_completions_items(node)
@@ -48,7 +48,7 @@ module RubyLsp
48
48
 
49
49
  uri = File.join(Dir.pwd, path)
50
50
  elsif link_node.import_link_type?
51
- class_candidates = @finder.search_classes(node.name.to_s)
51
+ class_candidates = @finder.find_classes(node.name.to_s)
52
52
  next unless class_candidates
53
53
 
54
54
  class_candidates = class_candidates.flatten
@@ -271,7 +271,7 @@ module RubyLsp
271
271
 
272
272
  def find_object_uri_for_package(link_node, package_name)
273
273
  if link_node.import_link_type?
274
- class_candidates = @finder.search_classes(link_node.imports.first)
274
+ class_candidates = @finder.find_classes(link_node.imports.first)
275
275
  return nil unless class_candidates
276
276
 
277
277
  class_candidates = class_candidates.flatten
@@ -48,7 +48,7 @@ class RubyLsp::Ree::BodyObjectsParser < RubyLsp::Ree::BasicParser
48
48
  if node.receiver
49
49
  target_objects += parse([node.receiver])
50
50
  else
51
- next if node.name == :link || node.name == :import # don't parse objects inside links
51
+ next if node.name == :link || node.name == :import || node.name == :benchmark # don't parse objects inside links/dsl calls
52
52
 
53
53
  if @target_type == :call_object
54
54
  target_objects << CallObject.new(name: node.name, type: :method_call)
@@ -61,6 +61,14 @@ class RubyLsp::Ree::BodyObjectsParser < RubyLsp::Ree::BasicParser
61
61
  target_objects += parse(node.elements)
62
62
  end
63
63
 
64
+ if node.respond_to?(:conditions)
65
+ target_objects += parse(node.conditions)
66
+ end
67
+
68
+ if node.respond_to?(:expression)
69
+ target_objects += parse([node.expression])
70
+ end
71
+
64
72
  if node.respond_to?(:predicate)
65
73
  target_objects += parse([node.predicate])
66
74
  end
@@ -49,6 +49,13 @@ module RubyLsp
49
49
  @index.instance_variable_get(:@entries).values_at(*keys)
50
50
  end
51
51
 
52
+ def find_classes(name)
53
+ keys = @index
54
+ .names
55
+ .select{ _1.split('::').last == name}
56
+ @index.instance_variable_get(:@entries).values_at(*keys)
57
+ end
58
+
52
59
  def find_object(name)
53
60
  objects_by_name = @index[name]
54
61
  return unless objects_by_name
@@ -2,6 +2,6 @@
2
2
 
3
3
  module RubyLsp
4
4
  module Ree
5
- VERSION = "0.1.24"
5
+ VERSION = "0.1.26"
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-lsp-ree
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.24
4
+ version: 0.1.26
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ruslan Gatiyatov
8
- autorequire:
9
8
  bindir: exe
10
9
  cert_chain: []
11
- date: 2025-06-27 00:00:00.000000000 Z
10
+ date: 2026-02-09 00:00:00.000000000 Z
12
11
  dependencies: []
13
12
  description: A Ruby LSP addon that adds extra editor functionality for Ree applications
14
13
  email:
@@ -87,7 +86,6 @@ metadata:
87
86
  homepage_uri: https://github.com/glabix/ree/tree/main/ruby-lsp-ree
88
87
  source_code_uri: https://github.com/glabix/ree/tree/main/ruby-lsp-ree
89
88
  changelog_uri: https://github.com/glabix/ree/blob/main/ruby-lsp-ree/CHANGELOG.md
90
- post_install_message:
91
89
  rdoc_options: []
92
90
  require_paths:
93
91
  - lib
@@ -102,8 +100,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
102
100
  - !ruby/object:Gem::Version
103
101
  version: '0'
104
102
  requirements: []
105
- rubygems_version: 3.5.3
106
- signing_key:
103
+ rubygems_version: 3.6.2
107
104
  specification_version: 4
108
105
  summary: Ruby LSP addon for Ree framework.
109
106
  test_files: []