This WIP patch provides a sample implementation of an integration of Clang's refactoring actions from libToolingRefactor into clangd.
In terms of protocol support, the patch adds:
- Support for the Command & CommandArgument structures.
- Support for the workspace/executeCommand command.
Note that the rename is not supported as an editor command since LSP has another entry in the protocol for it.
The integration with the refactoring library is done through the RefactoringEditorClient class that's implemented in a parent revision. Right now the test checks that the initial version of the "extract function" refactoring can be performed.
Maybe initialize RefactoringClient in constructor?