Class: Yoda::Server::Notifier

Inherits:
Object
  • Object
show all
Defined in:
lib/yoda/server/notifier.rb

Instance Method Summary collapse

Constructor Details

#initialize(writer) ⇒ Notifier

Returns a new instance of Notifier.

Parameters:



5
6
7
# File 'lib/yoda/server/notifier.rb', line 5

def initialize(writer)
  @writer = writer
end

Instance Method Details

#busy(type:, id: nil) ⇒ Object

Parameters:

  • type (Symbol)


10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/yoda/server/notifier.rb', line 10

def busy(type:, id: nil)
  failed = false
  event(type: type, phase: :begin, id: id)
  yield
rescue => e
  Logger.warn(e.full_message)
  failed = true
  event(type: type, phage: :failed, id: id)
  raise e 
ensure
  event(type: type, phase: :end, id: id)
end

#event(**params) ⇒ Object

Parameters:

  • params (Hash)


24
25
26
# File 'lib/yoda/server/notifier.rb', line 24

def event(**params)
  write(method: 'telemetry/event', params: params)
end

#log_message(type:, message:) ⇒ Object

Parameters:

  • type (String, Symbol)
  • message (String)


113
114
115
116
117
118
119
120
121
# File 'lib/yoda/server/notifier.rb', line 113

def log_message(type:, message:)
  write(
    method: 'window/logMessage',
    params: LanguageServer::Protocol::Interface::ShowMessageParams.new(
      type: message_type(type),
      message: message,
    )
  )
end

#partial_result(token:, value:) ⇒ Object

Parameters:

  • token (Integer, String)
  • value (Object)

    The partial result to send. In most cases, the type of this becomes the result type of the request.

See Also:



89
90
91
92
93
94
95
96
97
# File 'lib/yoda/server/notifier.rb', line 89

def partial_result(token:, value:)
  write(
    method: '$/progress',
    params: LanguageServer::Protocol::Interface::ProgressParams.new(
      token: token,
      value: value,
    ),
  )
end

#show_message(type:, message:) ⇒ Object

Parameters:

  • type (String, Symbol)
  • message (String)


101
102
103
104
105
106
107
108
109
# File 'lib/yoda/server/notifier.rb', line 101

def show_message(type:, message:)
  write(
    method: 'window/showMessage',
    params: LanguageServer::Protocol::Interface::ShowMessageParams.new(
      type: message_type(type),
      message: message,
    )
  )
end

#work_done_progress_begin(token:, title:, cancellable: nil, message: nil, percentage: nil) ⇒ Object

Parameters:

  • token (Integer, String)
  • title (String)
  • cancellable (Boolean, nil) (defaults to: nil)
  • message (String) (defaults to: nil)
  • percentage (Integer) (defaults to: nil)

See Also:



34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/yoda/server/notifier.rb', line 34

def work_done_progress_begin(token:, title:, cancellable: nil, message: nil, percentage: nil)
  write(
    method: '$/progress',
    params: LanguageServer::Protocol::Interface::ProgressParams.new(
      token: token,
      value: LanguageServer::Protocol::Interface::WorkDoneProgressBegin.new(
        kind: "begin",
        title: title,
        cancellable: cancellable,
        message: message,
        percentage: percentage,
      )
    ),
  )
end

#work_done_progress_end(token:, message: nil) ⇒ Object

Parameters:

  • token (Integer, String)
  • message (String) (defaults to: nil)

See Also:



73
74
75
76
77
78
79
80
81
82
83
84
# File 'lib/yoda/server/notifier.rb', line 73

def work_done_progress_end(token:, message: nil)
  write(
    method: '$/progress',
    params: LanguageServer::Protocol::Interface::ProgressParams.new(
      token: token,
      value: LanguageServer::Protocol::Interface::WorkDoneProgressEnd.new(
        kind: "end",
        message: message,
      )
    ),
  )
end

#work_done_progress_report(token:, cancellable: nil, message: nil, percentage: nil) ⇒ Object

Parameters:

  • token (Integer, String)
  • cancellable (Boolean, nil) (defaults to: nil)
  • message (String) (defaults to: nil)
  • percentage (Integer) (defaults to: nil)

See Also:



55
56
57
58
59
60
61
62
63
64
65
66
67
68
# File 'lib/yoda/server/notifier.rb', line 55

def work_done_progress_report(token:, cancellable: nil, message: nil, percentage: nil)
  write(
    method: '$/progress',
    params: LanguageServer::Protocol::Interface::ProgressParams.new(
      token: token,
      value: LanguageServer::Protocol::Interface::WorkDoneProgressReport.new(
        kind: "report",
        cancellable: cancellable,
        message: message,
        percentage: percentage,
      )
    ),
  )
end