Skip to content

Commit f9b2fe2

Browse files
authored
Merge pull request #290 from glennsarti/gh289-format-file-size
(GH-289) Make Format On Type file size configurable
2 parents 83b8652 + b8a3386 commit f9b2fe2

File tree

4 files changed

+24
-4
lines changed

4 files changed

+24
-4
lines changed

lib/puppet-languageserver/manifest/format_on_type_provider.rb

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,16 @@ def instance
1111
end
1212
end
1313

14-
def format(content, line, char, trigger_character, formatting_options)
14+
def format(content, line, char, trigger_character, formatting_options, max_filesize = 4096)
1515
result = []
1616
# Abort if the user has pressed something other than `>`
1717
return result unless trigger_character == '>'
1818
# Abort if the formatting is tab based. Can't do that yet
1919
return result unless formatting_options['insertSpaces'] == true
2020
# Abort if content is too big
21-
return result if content.length > 4096
21+
unless max_filesize.zero?
22+
return result if content.length > max_filesize
23+
end
2224

2325
lexer = PuppetLint::Lexer.new
2426
tokens = lexer.tokenise(content)

lib/puppet-languageserver/message_handler.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -232,7 +232,8 @@ def request_textdocument_ontypeformatting(_, json_rpc_message)
232232
line_num,
233233
char_num,
234234
json_rpc_message.params['ch'],
235-
json_rpc_message.params['options']
235+
json_rpc_message.params['options'],
236+
language_client.format_on_type_filesize_limit
236237
)
237238
else
238239
raise "Unable to format on type on #{file_uri}"

lib/puppet-languageserver/session_state/language_client.rb

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ class LanguageClient
77

88
# Client settings
99
attr_reader :format_on_type
10+
attr_reader :format_on_type_filesize_limit
1011
attr_reader :use_puppetfile_resolver
1112

1213
def initialize(message_handler)
@@ -25,6 +26,7 @@ def initialize(message_handler)
2526

2627
# Default settings
2728
@format_on_type = false
29+
@format_on_type_filesize_limit = 4096
2830
@use_puppetfile_resolver = true
2931
end
3032

@@ -58,6 +60,9 @@ def parse_lsp_configuration_settings!(settings = {})
5860
end
5961
@format_on_type = value
6062
end
63+
# format on type file size
64+
value = safe_hash_traverse(settings, 'puppet', 'editorService', 'formatOnType', 'maxFileSize')
65+
@format_on_type_filesize_limit = to_integer(value, 4096, 0)
6166
# use puppetfile resolver
6267
value = safe_hash_traverse(settings, 'puppet', 'validate', 'resolvePuppetfiles')
6368
@use_puppetfile_resolver = to_boolean(value)
@@ -174,6 +179,18 @@ def to_boolean(value)
174179
value.to_s =~ %r{^(true|t|yes|y|1)$/i}
175180
end
176181

182+
def to_integer(value, default = nil, min = nil, max = nil)
183+
return default if value.nil?
184+
begin
185+
intv = Integer(value)
186+
return default if !min.nil? && intv < min
187+
return default if !max.nil? && intv > max
188+
intv
189+
rescue ArgumentError
190+
default
191+
end
192+
end
193+
177194
def new_request_id
178195
SecureRandom.uuid
179196
end

spec/languageserver/unit/puppet-languageserver/message_handler_spec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -805,7 +805,7 @@
805805

806806
it 'should call format method on the Format On Type provider' do
807807
expect(provider).to receive(:format)
808-
.with(file_content, line_num, char_num, trigger_char, formatting_options).and_return('something')
808+
.with(file_content, line_num, char_num, trigger_char, formatting_options, Integer).and_return('something')
809809
subject.request_textdocument_ontypeformatting(connection_id, request_message)
810810
end
811811

0 commit comments

Comments
 (0)