Class: LanguageServer::Protocol::Interface::CodeAction

Inherits:
Object
  • Object
show all
Defined in:
lib/language_server/protocol/interface/code_action.rb

Overview

A code action represents a change that can be performed in code, e.g. to fix a problem or to refactor code.

A CodeAction must set either ‘edit` and/or a `command`. If both are supplied, the `edit` is applied first, then the `command` is executed.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(title:, kind: nil, diagnostics: nil, is_preferred: nil, disabled: nil, edit: nil, command: nil, data: nil) ⇒ CodeAction

Returns a new instance of CodeAction.



12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/language_server/protocol/interface/code_action.rb', line 12

def initialize(title:, kind: nil, diagnostics: nil, is_preferred: nil, disabled: nil, edit: nil, command: nil, data: nil)
  @attributes = {}

  @attributes[:title] = title
  @attributes[:kind] = kind if kind
  @attributes[:diagnostics] = diagnostics if diagnostics
  @attributes[:isPreferred] = is_preferred if is_preferred
  @attributes[:disabled] = disabled if disabled
  @attributes[:edit] = edit if edit
  @attributes[:command] = command if command
  @attributes[:data] = data if data

  @attributes.freeze
end

Instance Attribute Details

#attributesObject (readonly)

Returns the value of attribute attributes.



115
116
117
# File 'lib/language_server/protocol/interface/code_action.rb', line 115

def attributes
  @attributes
end

Instance Method Details

#commandCommand

A command this code action executes. If a code action provides an edit and a command, first the edit is executed and then the command.

Returns:



102
103
104
# File 'lib/language_server/protocol/interface/code_action.rb', line 102

def command
  attributes.fetch(:command)
end

#dataLSPAny

A data entry field that is preserved on a code action between a ‘textDocument/codeAction` and a `codeAction/resolve` request.

Returns:

  • (LSPAny)


111
112
113
# File 'lib/language_server/protocol/interface/code_action.rb', line 111

def data
  attributes.fetch(:data)
end

#diagnosticsDiagnostic[]

The diagnostics that this code action resolves.

Returns:



49
50
51
# File 'lib/language_server/protocol/interface/code_action.rb', line 49

def diagnostics
  attributes.fetch(:diagnostics)
end

#disabled{ reason: string; }

Marks that the code action cannot currently be applied.

Clients should follow the following guidelines regarding disabled code actions:

  • Disabled code actions are not shown in automatic lightbulbs code

action menus.

  • Disabled actions are shown as faded out in the code action menu when

the user request a more specific type of code action, such as refactorings.

  • If the user has a keybinding that auto applies a code action and only

a disabled code actions are returned, the client should show the user an error message with ‘reason` in the editor.

Returns:

  • ({ reason: string; })


84
85
86
# File 'lib/language_server/protocol/interface/code_action.rb', line 84

def disabled
  attributes.fetch(:disabled)
end

#editWorkspaceEdit

The workspace edit this code action performs.

Returns:



92
93
94
# File 'lib/language_server/protocol/interface/code_action.rb', line 92

def edit
  attributes.fetch(:edit)
end

#is_preferredboolean

Marks this as a preferred action. Preferred actions are used by the ‘auto fix` command and can be targeted by keybindings.

A quick fix should be marked preferred if it properly addresses the underlying error. A refactoring should be marked preferred if it is the most reasonable choice of actions to take.

Returns:

  • (boolean)


62
63
64
# File 'lib/language_server/protocol/interface/code_action.rb', line 62

def is_preferred
  attributes.fetch(:isPreferred)
end

#kindstring

The kind of the code action.

Used to filter code actions.

Returns:

  • (string)


41
42
43
# File 'lib/language_server/protocol/interface/code_action.rb', line 41

def kind
  attributes.fetch(:kind)
end

#titlestring

A short, human-readable, title for this code action.

Returns:

  • (string)


31
32
33
# File 'lib/language_server/protocol/interface/code_action.rb', line 31

def title
  attributes.fetch(:title)
end

#to_hashObject



117
118
119
# File 'lib/language_server/protocol/interface/code_action.rb', line 117

def to_hash
  attributes
end

#to_json(*args) ⇒ Object



121
122
123
# File 'lib/language_server/protocol/interface/code_action.rb', line 121

def to_json(*args)
  to_hash.to_json(*args)
end