<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">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><br></div><div>(Less concerned about discoverability - this was always a hidden flag anyway)</div><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_-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>