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

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

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.

Parameters:

  • title: (String)
  • kind: (Object) (defaults to: nil)
  • diagnostics: (Array[untyped]) (defaults to: nil)
  • is_preferred: (Boolean) (defaults to: nil)
  • disabled: (Object) (defaults to: nil)
  • edit: (Object) (defaults to: nil)
  • command: (Object) (defaults to: nil)
  • data: (Object) (defaults to: nil)


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

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

#attributesHash[Symbol, untyped] (readonly)

Returns the value of attribute attributes.

Returns:

  • (Hash[Symbol, untyped])


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

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)

Since:

  • 3.16.0



113
114
115
# File 'lib/language_server/protocol/interface/code_action.rb', line 113

def data
  attributes.fetch(:data)
end

#diagnosticsDiagnostic[]

The diagnostics that this code action resolves.

Returns:



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

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](https://code.visualstudio.com/docs/editor/editingevolved#_code-action)
code action menus.

- Disabled actions are shown as faded out in the code action menu when the user requests a more specific type
of code action, such as refactorings.

- If the user has a [keybinding](https://code.visualstudio.com/docs/editor/refactoring#_keybindings-for-code-actions)
that auto applies a code action and only disabled code actions are returned, the client should show the user an
error message with `reason` in the editor.

Returns:

  • ({ reason: string; })

Since:

  • 3.16.0



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)

Since:

  • 3.15.0



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

def is_preferred
  attributes.fetch(:isPreferred)
end

#kindCodeActionKind

The kind of the code action.

Used to filter code actions.

Returns:

  • (CodeActionKind)


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

def kind
  attributes.fetch(:kind)
end

#titlestring

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

Returns:

  • (string)


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

def title
  attributes.fetch(:title)
end

#to_hashHash[Symbol, untyped]

Returns:

  • (Hash[Symbol, untyped])


119
120
121
# File 'lib/language_server/protocol/interface/code_action.rb', line 119

def to_hash
  attributes
end

#to_json(*args) ⇒ String

Parameters:

  • (Object)

Returns:

  • (String)


123
124
125
# File 'lib/language_server/protocol/interface/code_action.rb', line 123

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