Module: Canopus::Workspace::LanguageServerConfigurable
- Defined in:
- lib/canopus/workspace/language_server_configurable.rb
Instance Method Summary collapse
- #language_server_states(language) ⇒ Object
- #restart_language_server(language, index) ⇒ Object
- #show_language_server_restart ⇒ Object
Instance Method Details
#language_server_states(language) ⇒ Object
5 6 7 8 9 10 11 |
# File 'lib/canopus/workspace/language_server_configurable.rb', line 5 def language_server_states(language) = (@client_options&.[](language)) language_client_list(language).each_with_index.map do |client, index| command = .dig(index, :command) || [] {language: language, index: index, name: File.basename(command.first.to_s), state: client.state}.freeze end.freeze end |
#restart_language_server(language, index) ⇒ Object
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/canopus/workspace/language_server_configurable.rb', line 21 def restart_language_server(language, index) (@client_lock ||= Mutex.new).synchronize do = (@client_options&.[](language) || (language)) clients = language_client_list(language).dup option = .fetch(index) current = clients.fetch(index) replacement = start_language_client(language, option, index: index) replacements = clients.dup replacements[index] = replacement store_language_clients(language, replacements) begin open_language_client_documents(language, replacement) rescue StandardError store_language_clients(language, clients) cleanup_language_clients(language, [replacement]) raise end retire_language_client(language, current) @message = "Restarted #{File.basename(option.fetch(:command).first)}" replacement end end |
#show_language_server_restart ⇒ Object
13 14 15 16 17 18 19 |
# File 'lib/canopus/workspace/language_server_configurable.rb', line 13 def show_language_server_restart language = editor.language_document.definition.name items = language_server_states(language) self.palette = {kind: :language_servers, query: +"", index: 0, matches: items.map { |item| "#{item[:name]} (#{item[:state]})" }, items: items} update_palette end |