1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114
|
#pragma once
#include "LibLsp/lsp/method_type.h"
#include "LibLsp/JsonRpc/message.h"
#include "LibLsp/lsp/lsp_diagnostic.h"
#include "LibLsp/lsp/workspace/execute_command.h"
#include "LibLsp/lsp/lsTextDocumentIdentifier.h"
#include "LibLsp/lsp/lsCodeAction.h"
namespace JDT
{
namespace CodeActionKind {
/**
* Base kind for quickfix actions: 'quickfix'
*/
extern const char* QuickFix;
/**
* Base kind for refactoring actions: 'refactor'
*/
extern const char* Refactor;
/**
* Base kind for refactoring extraction actions: 'refactor.extract'
*
* Example extract actions:
*
* - Extract method - Extract function - Extract variable - Extract interface
* from class - ...
*/
extern const char* RefactorExtract;
/**
* Base kind for refactoring inline actions: 'refactor.inline'
*
* Example inline actions:
*
* - Inline function - Inline variable - Inline constant - ...
*/
extern const char* RefactorInline;
/**
* Base kind for refactoring rewrite actions: 'refactor.rewrite'
*
* Example rewrite actions:
*
* - Convert JavaScript function to class - Add or remove parameter -
* Encapsulate field - Make method static - Move method to base class - ...
*/
extern const char* RefactorRewrite;
/**
* Base kind for source actions: `source`
*
* Source code actions apply to the entire file.
*/
extern const char* Source ;
/**
* Base kind for an organize imports source action: `source.organizeImports`
*/
extern const char* SourceOrganizeImports;
extern const char* COMMAND_ID_APPLY_EDIT;
};
}
struct lsCodeActionContext {
// An array of diagnostics.
std::vector<lsDiagnostic> diagnostics;
/**
* Requested kind of actions to return.
*
* Actions not of this kind are filtered out by the client before being shown. So servers
* can omit computing them.
*
* See {@link CodeActionKind} for allowed values.
*/
boost::optional<std::vector<std::string>> only;
MAKE_SWAP_METHOD(lsCodeActionContext,
diagnostics, only);
};
MAKE_REFLECT_STRUCT(lsCodeActionContext,
diagnostics, only);
// Params for the CodeActionRequest
struct lsCodeActionParams {
// The document in which the command was invoked.
lsTextDocumentIdentifier textDocument;
// The range for which the command was invoked.
lsRange range;
// Context carrying additional information.
lsCodeActionContext context;
MAKE_SWAP_METHOD(lsCodeActionParams,
textDocument,
range,
context);
};
MAKE_REFLECT_STRUCT(lsCodeActionParams,
textDocument,
range,
context);
|