<div dir="ltr"><div class="gmail_quote"><div dir="ltr">On Thu, Feb 15, 2018 at 8:29 AM Sam McCall <<a href="mailto:sam.mccall@gmail.com">sam.mccall@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_quote"><div dir="ltr">On Wed, Feb 14, 2018 at 10:45 AM Ilya Biryukov <<a href="mailto:ibiryukov@google.com" target="_blank">ibiryukov@google.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div>Personally, I'm not a big fan of environment variables. There are harder to discover than command-line flags and I still have to change editor config often to switch between different builds of clangd.<br></div><div>I know it may sound weird, but maybe we could have both the flag and the environment variables? (flag taking the precedence if both are specified)</div></div></blockquote><div>Do you use tracing often? Can you describe your workflow?</div></div></div></blockquote><div>Reasonably often if I need to use it.</div><div>It's also easier to change config flag in vscode and hit "debug" than to set the global environment variable (I happen to often run clangd from debug instance of VSCode, not from the command line).</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_quote"><div>(Less concerned about discoverability - this was always a hidden flag anyway)<br></div></div></div></blockquote><div>A hidden flag is still more discoverable than environment variable. </div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_quote"><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="gmail_quote"><div dir="ltr">On Wed, Feb 14, 2018 at 4:22 AM Sam McCall via cfe-commits <<a href="mailto:cfe-commits@lists.llvm.org" target="_blank">cfe-commits@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: sammccall<br>
Date: Tue Feb 13 19:20:07 2018<br>
New Revision: 325097<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=325097&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=325097&view=rev</a><br>
Log:<br>
[clangd] Configure clangd tracing with CLANGD_TRACE env instead of -trace flag<br>
<br>
Modified:<br>
    clang-tools-extra/trunk/clangd/tool/ClangdMain.cpp<br>
    clang-tools-extra/trunk/test/clangd/trace.test<br>
<br>
Modified: clang-tools-extra/trunk/clangd/tool/ClangdMain.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clangd/tool/ClangdMain.cpp?rev=325097&r1=325096&r2=325097&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clangd/tool/ClangdMain.cpp?rev=325097&r1=325096&r2=325097&view=diff</a><br>
==============================================================================<br>
--- clang-tools-extra/trunk/clangd/tool/ClangdMain.cpp (original)<br>
+++ clang-tools-extra/trunk/clangd/tool/ClangdMain.cpp Tue Feb 13 19:20:07 2018<br>
@@ -17,6 +17,7 @@<br>
 #include "llvm/Support/Path.h"<br>
 #include "llvm/Support/Program.h"<br>
 #include "llvm/Support/raw_ostream.h"<br>
+#include <cstdlib><br>
 #include <iostream><br>
 #include <memory><br>
 #include <string><br>
@@ -123,12 +124,6 @@ static llvm::cl::opt<Path> InputMirrorFi<br>
         "Mirror all LSP input to the specified file. Useful for debugging."),<br>
     llvm::cl::init(""), llvm::cl::Hidden);<br>
<br>
-static llvm::cl::opt<Path> TraceFile(<br>
-    "trace",<br>
-    llvm::cl::desc(<br>
-        "Trace internal events and timestamps in chrome://tracing JSON format"),<br>
-    llvm::cl::init(""), llvm::cl::Hidden);<br>
-<br>
 static llvm::cl::opt<bool> EnableIndexBasedCompletion(<br>
     "enable-index-based-completion",<br>
     llvm::cl::desc(<br>
@@ -176,15 +171,18 @@ int main(int argc, char *argv[]) {<br>
     }<br>
   }<br>
<br>
-  // Setup tracing facilities.<br>
+  // Setup tracing facilities if CLANGD_TRACE is set. In practice enabling a<br>
+  // trace flag in your editor's config is annoying, launching with<br>
+  // `CLANGD_TRACE=trace.json vim` is easier.<br>
   llvm::Optional<llvm::raw_fd_ostream> TraceStream;<br>
   std::unique_ptr<trace::EventTracer> Tracer;<br>
-  if (!TraceFile.empty()) {<br>
+  if (auto *TraceFile = getenv("CLANGD_TRACE")) {<br>
     std::error_code EC;<br>
     TraceStream.emplace(TraceFile, /*ref*/ EC, llvm::sys::fs::F_RW);<br>
     if (EC) {<br>
-      TraceFile.reset();<br>
-      llvm::errs() << "Error while opening trace file: " << EC.message();<br>
+      TraceStream.reset();<br>
+      llvm::errs() << "Error while opening trace file " << TraceFile << ": "<br>
+                   << EC.message();<br>
     } else {<br>
       Tracer = trace::createJSONTracer(*TraceStream, PrettyPrint);<br>
     }<br>
<br>
Modified: clang-tools-extra/trunk/test/clangd/trace.test<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clangd/trace.test?rev=325097&r1=325096&r2=325097&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clangd/trace.test?rev=325097&r1=325096&r2=325097&view=diff</a><br>
==============================================================================<br>
--- clang-tools-extra/trunk/test/clangd/trace.test (original)<br>
+++ clang-tools-extra/trunk/test/clangd/trace.test Tue Feb 13 19:20:07 2018<br>
@@ -1,4 +1,4 @@<br>
-# RUN: clangd -lit-test -trace %t < %s && FileCheck %s < %t<br>
+# RUN: CLANGD_TRACE=%t clangd -lit-test < %s && FileCheck %s < %t<br>
 {"jsonrpc":"2.0","id":0,"method":"initialize","params":{"processId":123,"rootPath":"clangd","capabilities":{},"trace":"off"}}<br>
 ---<br>
 {"jsonrpc":"2.0","method":"textDocument/didOpen","params":{"textDocument":{"uri":"test:///foo.c","languageId":"c","version":1,"text":"void main() {}"}}}<br>
<br>
<br>
_______________________________________________<br>
cfe-commits mailing list<br>
<a href="mailto:cfe-commits@lists.llvm.org" target="_blank">cfe-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits</a><br>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="m_1159265055849654783m_-6666531490946249524gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div>Regards,</div><div>Ilya Biryukov</div></div></div></div></div>
</blockquote></div></div>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div>Regards,</div><div>Ilya Biryukov</div></div></div></div></div></div>