Author: omtcyfz Date: Tue Aug 2 03:51:26 2016 New Revision: 277433 URL: http://llvm.org/viewvc/llvm-project?rev=277433&view=rev Log: [clang-rename] add basic Emacs integration
This patch aims to add very basic Emacs integration. Reviewers: hokein, alexfh Differential Revision: https://reviews.llvm.org/D23006 Added: clang-tools-extra/trunk/clang-rename/tool/clang-rename.el Modified: clang-tools-extra/trunk/clang-rename/tool/CMakeLists.txt clang-tools-extra/trunk/docs/clang-rename.rst Modified: clang-tools-extra/trunk/clang-rename/tool/CMakeLists.txt URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-rename/tool/CMakeLists.txt?rev=277433&r1=277432&r2=277433&view=diff ============================================================================== --- clang-tools-extra/trunk/clang-rename/tool/CMakeLists.txt (original) +++ clang-tools-extra/trunk/clang-rename/tool/CMakeLists.txt Tue Aug 2 03:51:26 2016 @@ -10,3 +10,10 @@ target_link_libraries(clang-rename ) install(TARGETS clang-rename RUNTIME DESTINATION bin) + +install(PROGRAMS clang-rename.py + DESTINATION share/clang + COMPONENT clang-rename) +install(PROGRAMS clang-rename.el + DESTINATION share/clang + COMPONENT clang-rename) Added: clang-tools-extra/trunk/clang-rename/tool/clang-rename.el URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-rename/tool/clang-rename.el?rev=277433&view=auto ============================================================================== --- clang-tools-extra/trunk/clang-rename/tool/clang-rename.el (added) +++ clang-tools-extra/trunk/clang-rename/tool/clang-rename.el Tue Aug 2 03:51:26 2016 @@ -0,0 +1,45 @@ +;;; clang-rename.el --- Renames every occurrence of a symbol found at <offset>. + +;; Keywords: tools, c + +;;; Commentary: + +;; To install clang-rename.el make sure the directory of this file is in your +;; 'load-path' and add +;; +;; (require 'clang-rename) +;; +;; to your .emacs configuration. + +;;; Code: + +(defcustom clang-rename-binary "clang-rename" + "Path to clang-rename executable." + :type 'hook + :options '(turn-on-auto-fill flyspell-mode) + :group 'wp) + +(defun clang-rename (new-name) + "Rename all instances of the symbol at the point using clang-rename" + (interactive "sEnter a new name: ") + (let (;; Emacs offset is 1-based. + (offset (- (point) 1)) + (orig-buf (current-buffer)) + (file-name (buffer-file-name))) + + (let ((rename-command + (format "bash -f -c '%s -offset=%s -new-name=%s -i %s'" + clang-rename-binary offset new-name file-name))) + (message (format "Running clang-rename command %s" rename-command)) + ;; Run clang-rename via bash. + (shell-command rename-command) + ;; Reload buffer. + (interactive) + (revert-buffer t t) + ) + ) +) + +(provide 'clang-rename) + +;;; clang-rename.el ends here Modified: clang-tools-extra/trunk/docs/clang-rename.rst URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/clang-rename.rst?rev=277433&r1=277432&r2=277433&view=diff ============================================================================== --- clang-tools-extra/trunk/docs/clang-rename.rst (original) +++ clang-tools-extra/trunk/docs/clang-rename.rst Tue Aug 2 03:51:26 2016 @@ -20,7 +20,7 @@ to `the LLVM bugtracker <https://llvm.or project. If you have any ideas or suggestions, you might want to put a feature request there. -Using clang-rename +Using Clang-Rename ================== :program:`clang-rename` is a `LibTooling @@ -28,7 +28,7 @@ Using clang-rename work with if you set up a compile command database for your project (for an example of how to do this see `How To Setup Tooling For LLVM <http://clang.llvm.org/docs/HowToSetupToolingForLLVM.html>`_). You can also -specify compilation options on the command line after ``--``: +specify compilation options on the command line after `--`: .. code-block:: console @@ -47,7 +47,7 @@ only. It is planned to extend the tool's renaming actions in the future. :program:`clang-rename` also aims to be easily integrated into popular text -editors, such as Vim, and improve the workflow of users. +editors, such as Vim and Emacs, and improve the workflow of users. Although a command line interface exists, it is highly recommended to use the text editor interface instead for better experience. @@ -84,8 +84,8 @@ text editor interface instead for better -version - Display the version of this program -clang-rename Vim integration -============================ +Vim Integration +=============== You can call :program:`clang-rename` directly from Vim! To set up :program:`clang-rename` integration for Vim see @@ -96,7 +96,21 @@ Please note that **you have to save all happen before running the tool**. Once installed, you can point your cursor to symbols you want to rename, press -``<leader>cr`` and print new desired name. The -[``<leader> key``](http://vim.wikia.com/wiki/Mapping_keys_in_Vim_-_Tutorial_(Part_3)#Map_leader) +`<leader>cr` and type new desired name. The [`<leader> key`] +(http://vim.wikia.com/wiki/Mapping_keys_in_Vim_-_Tutorial_(Part_3)#Map_leader) is a reference to a specific key defined by the mapleader variable and is bound to backslash by default. + +Emacs Integration +================= + +You can also use :program:`clang-rename` while using Emacs! To set up +:program:`clang-rename` integration for Emacs see +`clang-rename/tool/clang-rename.el +<http://reviews.llvm.org/diffusion/L/browse/clang-tools-extra/trunk/clang-rename/tool/clang-rename.el>`_. + +Once installed, you can point your cursor to symbols you want to rename, press +`M-X`, type `clang-rename` and new desired name. + +Please note that **you have to save all buffers, in which the replacement will +happen before running the tool**. _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits