Author: d0k Date: Thu Jul 7 09:35:32 2016 New Revision: 274759 URL: http://llvm.org/viewvc/llvm-project?rev=274759&view=rev Log: [clang-rename] add basic vim integration
This patch introduces basic Vim integration for clang-rename tool. For setup reference see clang-rename/tool/clang-rename.py Patch by Kirill Bobyrev! Differential revision: http://reviews.llvm.org/D22087 Added: clang-tools-extra/trunk/clang-rename/tool/clang-rename.py Added: clang-tools-extra/trunk/clang-rename/tool/clang-rename.py URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-rename/tool/clang-rename.py?rev=274759&view=auto ============================================================================== --- clang-tools-extra/trunk/clang-rename/tool/clang-rename.py (added) +++ clang-tools-extra/trunk/clang-rename/tool/clang-rename.py Thu Jul 7 09:35:32 2016 @@ -0,0 +1,61 @@ +''' +Minimal clang-rename integration with Vim. + +Before installing make sure one of the following is satisfied: + +* clang-rename is in your PATH +* `g:clang_rename_path` in ~/.vimrc points to valid clang-rename executable +* `binary` in clang-rename.py points to valid to clang-rename executable + +To install, simply put this into your ~/.vimrc + + map ,cr :pyf <path-to>/clang-rename.py<cr> + +IMPORTANT NOTE: Before running the tool, make sure you saved the file. + +All you have to do now is to place a cursor on a variable/function/class which +you would like to rename and press ',cr'. You will be promted a new name if the +cursor points to a valid symbol. +''' + +import vim +import subprocess +import sys + +def main(): + binary = 'clang-rename' + if vim.eval('exists("g:clang_rename_path")') == "1": + binary = vim.eval('g:clang_rename') + + # Get arguments for clang-rename binary. + offset = int(vim.eval('line2byte(line("."))+col(".")')) - 2 + if offset < 0: + print >> sys.stderr, '''Couldn\'t determine cursor position. + Is your file empty?''' + return + filename = vim.current.buffer.name + + new_name_request_message = 'type new name:' + new_name = vim.eval("input('{}\n')".format(new_name_request_message)) + + # Call clang-rename. + command = [binary, + filename, + '-i', + '-offset', str(offset), + '-new-name', str(new_name)] + # FIXME: make it possible to run the tool on unsaved file. + p = subprocess.Popen(command, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE) + stdout, stderr = p.communicate() + + if stderr: + print stderr + + # Reload all buffers in Vim. + vim.command("bufdo edit") + + +if __name__ == '__main__': + main() _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits