From b17c86729ed247cd28db27a28a5fbef49de817f7 Mon Sep 17 00:00:00 2001 From: Nic Pillinger Date: Mon, 10 Feb 2025 15:36:30 +0000 Subject: [PATCH 1/3] pass ignore files options to language server --- Gemfile.lock | 2 +- lib/syntax_tree/cli.rb | 3 ++- lib/syntax_tree/language_server.rb | 9 +++++++-- lib/syntax_tree/version.rb | 2 +- test/language_server_test.rb | 21 ++++++++++++++++++++- 5 files changed, 31 insertions(+), 6 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index d14291a4..be9ea906 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: . specs: - syntax_tree (6.2.0) + syntax_tree (6.2.1) prettier_print (>= 1.2.0) GEM diff --git a/lib/syntax_tree/cli.rb b/lib/syntax_tree/cli.rb index f2616c87..a9d1fd7a 100644 --- a/lib/syntax_tree/cli.rb +++ b/lib/syntax_tree/cli.rb @@ -593,7 +593,8 @@ def run(argv) when "j", "json" Json.new(options) when "lsp" - LanguageServer.new(print_width: options.print_width).run + LanguageServer.new(ignore_files: options.ignore_files, +print_width: options.print_width).run return 0 when "m", "match" Match.new(options) diff --git a/lib/syntax_tree/language_server.rb b/lib/syntax_tree/language_server.rb index 6ec81030..9d65c2d1 100644 --- a/lib/syntax_tree/language_server.rb +++ b/lib/syntax_tree/language_server.rb @@ -1,5 +1,4 @@ # frozen_string_literal: true - require "cgi" require "json" require "pp" @@ -215,10 +214,12 @@ def self.[](value) attr_reader :input, :output, :print_width def initialize( + ignore_files: [], input: $stdin, output: $stdout, print_width: DEFAULT_PRINT_WIDTH ) + @ignore_files = ignore_files @input = input.binmode @output = output.binmode @print_width = print_width @@ -255,8 +256,12 @@ def run store.delete(request.dig(:params, :textDocument, :uri)) when Request[method: "textDocument/formatting", id: :any, params: { textDocument: { uri: :any } }] uri = request.dig(:params, :textDocument, :uri) + filepath = uri.split("///").last + ignore = @ignore_files.any? do |glob| + File.fnmatch(glob, filepath) + end contents = store[uri] - write(id: request[:id], result: contents ? format(contents, uri.split(".").last) : nil) + write(id: request[:id], result: contents && !ignore ? format(contents, uri.split(".").last) : nil) when Request[method: "textDocument/inlayHint", id: :any, params: { textDocument: { uri: :any } }] uri = request.dig(:params, :textDocument, :uri) contents = store[uri] diff --git a/lib/syntax_tree/version.rb b/lib/syntax_tree/version.rb index 51599f77..e510baae 100644 --- a/lib/syntax_tree/version.rb +++ b/lib/syntax_tree/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module SyntaxTree - VERSION = "6.2.0" + VERSION = "6.2.1" end diff --git a/test/language_server_test.rb b/test/language_server_test.rb index f5a6ca57..7b6dc22c 100644 --- a/test/language_server_test.rb +++ b/test/language_server_test.rb @@ -151,6 +151,24 @@ def test_formatting assert_equal("class Bar\nend\n", responses.dig(1, :result, 0, :newText)) end + def test_formatting_ignore + responses = run_server([ + Initialize.new(1), + TextDocumentDidOpen.new("file:///path/to/file.rb", "class Foo; end"), + TextDocumentFormatting.new(2, "file:///path/to/file.rb"), + Shutdown.new(3) + ], ignore_files: ["path/**/*.rb"]) + + shape = LanguageServer::Request[[ + { id: 1, result: { capabilities: Hash } }, + { id: 2, result: :any }, + { id: 3, result: {} } + ]] + + assert_operator(shape, :===, responses) + assert_nil(responses.dig(1, :result)) + end + def test_formatting_failure responses = run_server([ Initialize.new(1), @@ -322,11 +340,12 @@ def read(content) end end - def run_server(messages, print_width: DEFAULT_PRINT_WIDTH) + def run_server(messages, ignore_files: [], print_width: DEFAULT_PRINT_WIDTH) input = StringIO.new(messages.map { |message| write(message) }.join) output = StringIO.new LanguageServer.new( + ignore_files: ignore_files, input: input, output: output, print_width: print_width From c853fe1ee51ec22a7b7048fb534f0f7f8a3b244a Mon Sep 17 00:00:00 2001 From: Nic Pillinger Date: Mon, 10 Feb 2025 15:58:06 +0000 Subject: [PATCH 2/3] revert version bump --- Gemfile.lock | 2 +- lib/syntax_tree/version.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index be9ea906..d14291a4 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: . specs: - syntax_tree (6.2.1) + syntax_tree (6.2.0) prettier_print (>= 1.2.0) GEM diff --git a/lib/syntax_tree/version.rb b/lib/syntax_tree/version.rb index e510baae..51599f77 100644 --- a/lib/syntax_tree/version.rb +++ b/lib/syntax_tree/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module SyntaxTree - VERSION = "6.2.1" + VERSION = "6.2.0" end From f50d502e639b6378060a031757fb9097d3c824ab Mon Sep 17 00:00:00 2001 From: Nic Pillinger Date: Mon, 10 Feb 2025 15:59:10 +0000 Subject: [PATCH 3/3] revert blank line deletion --- lib/syntax_tree/language_server.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/syntax_tree/language_server.rb b/lib/syntax_tree/language_server.rb index 9d65c2d1..4db802bc 100644 --- a/lib/syntax_tree/language_server.rb +++ b/lib/syntax_tree/language_server.rb @@ -1,4 +1,5 @@ # frozen_string_literal: true + require "cgi" require "json" require "pp"