kadircet added inline comments.

================
Comment at: clangd/ClangdLSPServer.cpp:338
+  Command Cmd;
+  if (Action.command && Action.edit)
+    return llvm::None;
----------------
What would you think about emitting two commands in this case? First the edit 
and then the command. I believe LSP doesn't specify any ordering on how the 
commands returned should be executed by the client, so I am OK with current 
state as well. Just wanted to know if there were any other concerns.


================
Comment at: clangd/ClangdLSPServer.cpp:350
+  if (Action.kind && *Action.kind == CodeAction::QUICKFIX_KIND)
+    Cmd.title = "Apply fix: " + Cmd.title;
+  return Cmd;
----------------
It seems we only prepend title with Apply fix when we fallback, I believe it 
would be better to add them in CodeAction instead?


================
Comment at: clangd/ClangdLSPServer.cpp:355
 void ClangdLSPServer::onCodeAction(CodeActionParams &Params) {
   // We provide a code action for each diagnostic at the requested location
   // which has FixIts available.
----------------
I believe this comment is misleading, do we perform any location check? Maybe 
change that to say "requested file"?


================
Comment at: clangd/Protocol.h:390
+  /// Flattened from codeAction.codeActionLiteralSupport.
+  // FIXME: flatten other properties in this way.
+  bool codeActionLiteralSupport = false;
----------------
What is the reason behind this one? Is it because clients must handle unknown 
items on their own and fallback to a default one?

Since that default is client specific, behavior might change from client to 
client. I agree that clients should be up-to-date with the specs and handle all 
kinds of items but these might still create confusions during the transition 
period.

For example, ycmd decided to fallback to None instead of Text when they don't 
know about a symbolkind of a completion item, so users will get to see "File" 
for the include insertions on both folders and files but when they update to a 
newer clangd, they will start to see "File" for files and "None" for directory 
elements. Which I believe might create confusion, but we could still fallback 
to File for those elements(if we handled them within clangd) and user 
experience would neither worsen or improve.

(Currently ycmd's symbolkindcapabilities are actually up-to-date with specs, so 
this issue wouldn't happen. Just wanted to make my point clearer). 


Repository:
  rCTE Clang Tools Extra

https://reviews.llvm.org/D53213



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

Reply via email to