ilya-biryukov added inline comments.

================
Comment at: clangd/ClangdLSPServer.cpp:816
+            // If the client supports Markdown, convert from plaintext here.
+            if (*H && HoverSupportsMarkdown) {
+              (*H)->contents.kind = MarkupKind::Markdown;
----------------
malaperle wrote:
> I don't know if you meant plain text as non-language-specific markdown or no 
> markdown at all. In VSCode, non-markdown for multiline macros looks bad 
> because the newlines are ignored.
Did not know about that, thanks for pointing it out.
It does not ignore double newlines though (that's what we use in declarations). 
I suspect it treats plaintext as markdown, but can't be sure.

In any case, converting to a markdown code block here looks incredibly hacky 
and shaky.
Could we use double-newlines for line breaks in our implementation instead?

This aligns with what we did before this patch for declarations.
If that doesn't work, breaking the multi-line macros in VSCode looks ok, this 
really feels like a bug in VSCode.


================
Comment at: clangd/Protocol.cpp:251
+        auto *A = HoverMarkupKinds->getAsArray();
+        if (!A) {
+          return false;
----------------
NIT: remove braces 


================
Comment at: clangd/Protocol.cpp:255
+
+        for (size_t I = 0; I < A->size(); ++I) {
+          MarkupKind KindOut;
----------------
NIT: use range-based-for:
```
for (auto &&E : A) {
 // ...
}
```


================
Comment at: clangd/Protocol.cpp:257
+          MarkupKind KindOut;
+          if (fromJSON((*A)[I], KindOut)) {
+            if (KindOut == MarkupKind::Markdown) {
----------------
NIT: merge ifs for better readability
``` 
if (fromJSON(...) && KindOut == Markdown) {
  // ....
}
```


================
Comment at: clangd/Protocol.cpp:638
+bool fromJSON(const llvm::json::Value &E, MarkupKind &Out) {
+  if (auto T = E.getAsString()) {
+    if (*T == "plaintext")
----------------
use [[ 
https://llvm.org/docs/CodingStandards.html#use-early-exits-and-continue-to-simplify-code
 | early exits ]] to reduce nesting.

```
auto T = E.getAsString();
if (!T)
  return false;
// rest of the code...
```



================
Comment at: clangd/XRefs.cpp:563
+  H.contents.kind = MarkupKind::PlainText;
+  H.contents.value = "#define " + Definition;
   return H;
----------------
Follow-up for the previous comment:
would it work to do `replace(Defintion, "\n", "\n\n")` here? (with a fixme 
comment that otherwise VSCode misbehaves)


Repository:
  rCTE Clang Tools Extra

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D55250/new/

https://reviews.llvm.org/D55250



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to