Skip to content

Commit 64d5d1e

Browse files
committed
(GH-139) Provide completions for defined types
Previously the manifest completion provider would not provide results if the cursor was in a defined type. This commit adds the ResourceTypeDefinition much like the HostClassDefinition.
1 parent 44d3d53 commit 64d5d1e

File tree

2 files changed

+22
-13
lines changed

2 files changed

+22
-13
lines changed

lib/puppet-languageserver/manifest/completion_provider.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,8 @@ def self.complete(content, line_num, char_num, options = {})
4141
# Complete for `$facts[...`
4242
all_facts { |x| items << x } if expr == 'facts'
4343

44-
when 'Puppet::Pops::Model::HostClassDefinition'
45-
# We are in the root of a `class` statement
44+
when 'Puppet::Pops::Model::HostClassDefinition', 'Puppet::Pops::Model::ResourceTypeDefinition'
45+
# We are in the root of a `class` or `define` statement
4646

4747
# Add keywords
4848
keywords(%w[require contain]) { |x| items << x }

spec/languageserver/integration/puppet-languageserver/manifest/completion_provider_spec.rb

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,11 @@ class Alice {
131131
ensure => 'present',
132132
name => 'name',
133133
}
134+
135+
define delta (
136+
) {
137+
138+
}
134139
EOT
135140
}
136141

@@ -153,20 +158,24 @@ class Alice {
153158
end
154159
end
155160

156-
describe "When inside the root of a class" do
157-
let(:line_num) { 1 }
158-
let(:char_num) { 0 }
159-
let(:expected_types) { ['keyword','resource_type','resource_class'] }
161+
[
162+
{ :name => 'class', :line_num => 1 },
163+
{ :name => 'defined type', :line_num => 18 },
164+
].each do |testcase|
165+
describe "When inside the root of a #{testcase[:name]}" do
166+
let(:char_num) { 0 }
167+
let(:expected_types) { ['keyword','resource_type','resource_class'] }
160168

161-
it 'should return a list of keyword, resource_type, resource_class' do
162-
result = subject.complete(content, line_num, char_num)
169+
it 'should return a list of keyword, resource_type, resource_class' do
170+
result = subject.complete(content, testcase[:line_num], char_num)
163171

164-
result.items.each do |item|
165-
expect(item).to be_completion_item_with_type(expected_types)
166-
end
172+
result.items.each do |item|
173+
expect(item).to be_completion_item_with_type(expected_types)
174+
end
167175

168-
expected_types.each do |typename|
169-
expect(number_of_completion_item_with_type(result,typename)).to be > 0
176+
expected_types.each do |typename|
177+
expect(number_of_completion_item_with_type(result,typename)).to be > 0
178+
end
170179
end
171180
end
172181
end

0 commit comments

Comments
 (0)