<div class="gmail_quote">On Mon, May 14, 2012 at 6:25 PM, Hans Wennborg <span dir="ltr"><<a href="mailto:hans@chromium.org" target="_blank">hans@chromium.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im">On Mon, May 14, 2012 at 4:16 PM, Manuel Klimek <<a href="mailto:klimek@google.com">klimek@google.com</a>> wrote:<br>
> Find a proposal for a short ClangPlugin tutorial attached.<br>
<br>
</div>Nice! Some nits inline:<br>
<br>
> <!-- ======================================================================= --><br>
> <h2 id="pluginactions">Writing a PluginASTAction</h2><br>
> <!-- ======================================================================= --><br>
><br>
> <p>The main difference when writing PluginASTActions is that you can handle<br>
<br>
Main difference compared to what?<br>
Maybe make PluginASTAction a link to the doxygen? In fact, the more<br>
links to the doxygen, the better :)<br></blockquote><div><br></div><div>Changed the sentence. I'm planning to add the doxygen links for all documentation later. I want to get content in first, and iterate on it. </div>
<div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
> <!-- ======================================================================= --><br>
> <h2 id="registerplugin">Registering a plugin</h2><br>
> <!-- ======================================================================= --><br>
><br>
> <p>A plugin is loaded as dynamic library at runtime by the compiler. To register<br>
<br>
As *a* dynamic library?<br></blockquote><div> </div><div>Changed to  "from a dynamic library".</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<br>
> a plugin in a library, use FrontendPluginRegistry::Add:</p><br>
> <pre><br>
>   static FrontendPluginRegistry::Add<MyPlugin> X("my-plugin-name", "my plugin description");<br>
<br>
The < and > around MyPlugin need to be escaped.<br></blockquote><div><br>Escaped the <. (> doesn't need to be escaped, right?)</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

> <!-- ======================================================================= --><br>
> <h2 id="example">Putting it all together</h2><br>
> <!-- ======================================================================= --><br>
><br>
> <p>Let's look at an example plugin that prints top-level function names.<br>
> This example is also checked into the clang repository; please also take a look<br>
> at the latest <a href="<a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/examples/PrintFunctionNames/PrintFunctionNames.cpp?revision=155629&view=markup" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/examples/PrintFunctionNames/PrintFunctionNames.cpp?revision=155629&view=markup</a>">checked in version of PrintFunctionNames.cpp</a>.</p><br>

<br>
Remove the "revision=..." part from the URL?<br></blockquote><div><br></div><div>Done.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
> <!-- ======================================================================= --><br>
> <h2 id="running">Running the plugin</h2><br>
> <!-- ======================================================================= --><br>
><br>
> <p>To run a plugin the dynamic library containing the plugin registry must be<br>
<br>
I'd put a comma after "To run a plugin".<br></blockquote><div><br></div><div>Done.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
> loaded via the -load command line option. This will load all plugins that are<br>
> registered, and you can select the plugins to run by specifying the -plugin<br>
> option. Additional parameters for the plugins can be passed with -plugin-arg-&lt;plugin-name>.</p><br>
><br>
> <p>Note that those options must be reach clang's cc1 process. There are two<br>
<br>
"must be reach"<br></blockquote><div><br></div><div>Done.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
> <p>Also see the print-function-name plugin example's<br>
> <a href="<a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/examples/PrintFunctionNames/README.txt?revision=146845&view=markup" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/examples/PrintFunctionNames/README.txt?revision=146845&view=markup</a>">README</a></p><br>

<br>
Again, the URL should probably point to the HEAD revision?<br></blockquote><div><br></div><div>Done.</div><div><br></div><div><br></div></div>