[clang-tools-extra] r295814 - Adds a hook clang-include-fixer-add-include-hook that is invoked with the path and type of the added include.
Manuel Klimek via cfe-commits
cfe-commits at lists.llvm.org
Wed Feb 22 00:26:04 PST 2017
Author: klimek
Date: Wed Feb 22 02:26:04 2017
New Revision: 295814
URL: http://llvm.org/viewvc/llvm-project?rev=295814&view=rev
Log:
Adds a hook clang-include-fixer-add-include-hook that is invoked with the path and type of the added include.
This patch also adds a new function clang-include-fixer-from-symbol, which prompts the user for a symbol to resolve and include.
Patch by Torsten Marek.
Modified:
clang-tools-extra/trunk/include-fixer/tool/clang-include-fixer.el
Modified: clang-tools-extra/trunk/include-fixer/tool/clang-include-fixer.el
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/include-fixer/tool/clang-include-fixer.el?rev=295814&r1=295813&r2=295814&view=diff
==============================================================================
--- clang-tools-extra/trunk/include-fixer/tool/clang-include-fixer.el (original)
+++ clang-tools-extra/trunk/include-fixer/tool/clang-include-fixer.el Wed Feb 22 02:26:04 2017
@@ -20,6 +20,11 @@
"Clang-based include fixer."
:group 'tools)
+(defvar clang-include-fixer-add-include-hook nil
+ "A hook that will be called for every added include.
+The first argument is the filename of the include, the second argument is
+non-nil if the include is a system-header.")
+
(defcustom clang-include-fixer-executable
"clang-include-fixer"
"Location of the clang-include-fixer executable.
@@ -67,8 +72,15 @@ This string is passed as -input argument
(let ((symbol (clang-include-fixer--symbol-at-point)))
(unless symbol
(user-error "No symbol at current location"))
- (clang-include-fixer--start #'clang-include-fixer--add-header
- (format "-query-symbol=%s" symbol))))
+ (clang-include-fixer-from-symbol symbol)))
+
+(defun clang-include-fixer-from-symbol (symbol)
+ "Invoke the Clang include fixer for the SYMBOL.
+When called interactively, prompts the user for a symbol."
+ (interactive
+ (list (read-string "Symbol: " (clang-include-fixer--symbol-at-point))))
+ (clang-include-fixer--start #'clang-include-fixer--add-header
+ (format "-query-symbol=%s" symbol)))
(defun clang-include-fixer--start (callback &rest args)
"Asynchronously start clang-include-fixer with parameters ARGS.
@@ -250,7 +262,12 @@ clang-include-fixer to insert the select
;; Replacing the buffer now would undo the userâs changes.
(user-error (concat "The buffer has been changed "
"before the header could be inserted")))
- (clang-include-fixer--replace-buffer stdout)))
+ (clang-include-fixer--replace-buffer stdout)
+ (let-alist context
+ (let-alist (car .HeaderInfos)
+ (run-hook-with-args 'clang-include-fixer-add-include-hook
+ (substring .Header 1 -1)
+ (string= (substring .Header 0 1) "<"))))))
(format "-insert-header=%s"
(clang-include-fixer--encode-json context)))))))
nil)
More information about the cfe-commits
mailing list