<div dir="ltr"><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small;color:rgb(0,0,0)"><div class="gmail_default">Folks,</div><div class="gmail_default"><br></div><div class="gmail_default">At Google we are working on a tool and set of APIs for refactoring C++ programs based on LibTooling. Particularly, we have targeted rename refactoring for C++ as our first step. </div>


<div class="gmail_default"><br></div><div class="gmail_default">In our first iteration we want to offer two things:</div><div class="gmail_default">1- A command line tool similar to clang-format which will semantically rename a symbol (specified by a position in a file) in a set of input files.</div>


<div class="gmail_default">2- An API for doing the above task which can effectively be used to provide this functionality for any editor (Emacs, Vim, CodeMirror, etc.).</div><div class="gmail_default"><br></div><div class="gmail_default">


== Renaming capabilities</div><div class="gmail_default">In the first iteration, we are offering the following features for the rename refactoring:</div><div class="gmail_default">=== Supported C++ constructs:</div><div class="gmail_default">


         - Global and local variables (including function arguments)</div><div class="gmail_default">         - Functions</div><div class="gmail_default">         - C and CXX record types (structs/unions/classes)</div><div class="gmail_default">


           - For classes this includes renaming the constructor and destructor</div><div class="gmail_default">         - User defined types</div><div class="gmail_default">         - Enumerations (names and constants)</div>


<div class="gmail_default">         - Record member variables and methods</div><div class="gmail_default">         - Namespace specifiers</div><div class="gmail_default">         - Template parameters</div><div class="gmail_default">


         - Lambda captures</div><div class="gmail_default">         - Overloaded operators</div><div class="gmail_default">=== Unsupported C++ constructs:</div><div class="gmail_default">         - Macros</div><div class="gmail_default">


         - Symbols in comments</div><div class="gmail_default"><div class="gmail_default"><br></div><div class="gmail_default">== Command line program</div><div class="gmail_default">=== Current support:</div><div class="gmail_default">


         - Input from stdin, output to stdout</div><div class="gmail_default">         - Input and output from/to disk</div><div class="gmail_default">         - Option to specify include path</div><div class="gmail_default">


         - Option to predefine macros</div><div class="gmail_default">=== Possible improvements:<br></div><div class="gmail_default">         - Multiple files from stdin</div><div><div class="gmail_default">         - Making backups of renamed files</div>


<div class="gmail_default"><br></div></div><div>We think this tool should reside in clang-tools-extra. </div><div><br></div><div>Please let us know what you think. Any comment and feedback is appreciated. </div><div><br>

</div>
<div>Thank you.</div></div></div><div><div dir="ltr"><div><br></div><div><span style="font-size:small;font-family:sans-serif;line-height:19.5px;border-width:2px 0px 0px;border-style:solid;border-color:rgb(213,15,37);padding-top:2px;margin-top:2px"><font color="#ffffff" style="background-color:rgb(180,95,6)"><b>Λ</b>MIN</font><font color="#555555"> シ |</font></span><span style="font-size:small;color:rgb(85,85,85);font-family:sans-serif;line-height:19.5px;border-width:2px 0px 0px;border-style:solid;border-color:rgb(51,105,232);padding-top:2px;margin-top:2px"> </span><span style="font-size:small;color:rgb(85,85,85);font-family:sans-serif;line-height:19.5px;border-width:2px 0px 0px;border-style:solid;border-color:rgb(0,153,57);padding-top:2px;margin-top:2px"><a href="mailto:amshali@google.com" style="color:rgb(17,85,204)" target="_blank">amshali@</a> |</span><span style="font-size:small;color:rgb(85,85,85);font-family:sans-serif;line-height:19.5px;border-width:2px 0px 0px;border-style:solid;border-color:rgb(238,178,17);padding-top:2px;margin-top:2px"> Google Inc.</span></div>


</div></div>
</div>