summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--clang-tools-extra/include-fixer/tool/clang-include-fixer.el23
1 files changed, 20 insertions, 3 deletions
diff --git a/clang-tools-extra/include-fixer/tool/clang-include-fixer.el b/clang-tools-extra/include-fixer/tool/clang-include-fixer.el
index f857eeebfed..ba763194b82 100644
--- a/clang-tools-extra/include-fixer/tool/clang-include-fixer.el
+++ b/clang-tools-extra/include-fixer/tool/clang-include-fixer.el
@@ -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 to
(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 selected header."
;; 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)
OpenPOWER on IntegriCloud