[clangd] Run formatting operations asynchronously.
authorSam McCall <sam.mccall@gmail.com>
Fri, 26 Jun 2020 10:57:29 +0000 (12:57 +0200)
committerSam McCall <sam.mccall@gmail.com>
Tue, 30 Jun 2020 22:52:08 +0000 (00:52 +0200)
commitffa63dde8e97a34b8914a151556551f74d4227e7
tree5135b48b5bb33c40087e2fe496afadd599cbc151
parentb210c9899bddf4c0332f8295b3b71938299e4835
[clangd] Run formatting operations asynchronously.

Summary:
They don't need ASTs or anything, so they should still run immediately.

These were sync for historical reasons (they predate clangd having a pervasive
threading model). This worked ok as they were "cheap".
Aside for consistency, there are a couple of reasons to make them async:
 - they do IO (finding .clang-format) so aren't trivially cheap
 - having TUScheduler involved in running these tasks means we can use it as
   an injection point for configuration.
   (TUScheduler::run will need to learn about which file is being operated on,
   but that's an easy change).
 - adding the config system adds more potential IO, too

Reviewers: kbobyrev

Subscribers: ilya-biryukov, MaskRay, jkorous, arphaman, kadircet, usaxena95, cfe-commits

Tags: #clang

Differential Revision: https://reviews.llvm.org/D82642
clang-tools-extra/clangd/ClangdLSPServer.cpp
clang-tools-extra/clangd/ClangdServer.cpp
clang-tools-extra/clangd/ClangdServer.h
clang-tools-extra/clangd/unittests/ClangdTests.cpp
clang-tools-extra/clangd/unittests/SyncAPI.cpp
clang-tools-extra/clangd/unittests/SyncAPI.h