From 7cc21e9ab82883d37e845203f89255a90747489e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20M=C3=B6ller?= Date: Wed, 29 Jan 2014 16:25:01 +0100 Subject: [PATCH] cmake-mode.el: Add the ability to retrieve module help. --- Auxiliary/cmake-mode.el | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/Auxiliary/cmake-mode.el b/Auxiliary/cmake-mode.el index 433710b53..023d98e23 100644 --- a/Auxiliary/cmake-mode.el +++ b/Auxiliary/cmake-mode.el @@ -328,6 +328,37 @@ optional argument topic will be appended to the argument list." (interactive) (cmake-command-run "--help-command" (downcase (cmake-get-command)) "*CMake Help*")) +(defvar cmake-help-module-history nil "Module read history.") +(defvar cmake-help-modules '() "List of available topics for --help-module.") + +(defun cmake-module-list () + (let ((temp-buffer-name "*CMake Modules Temporary*")) + (save-window-excursion + (cmake-command-run "--help-module-list" nil temp-buffer-name) + (with-current-buffer temp-buffer-name + (cdr (split-string (buffer-substring-no-properties (point-min) (point-max)) "\n" t))))) + ) + +(defun cmake-get-module () + (let ((input (completing-read + "CMake module: " ; prompt + ((lambda () + (if cmake-help-modules cmake-help-modules + (setq cmake-help-modules (cmake-module-list))))) ; completions + nil ; predicate + t ; require-match + nil ; initial-input + 'cmake-help-module-history ; module history + ))) + (if (string= input "") + (error "No argument given") + input) + )) + +(defun cmake-help-module () + "Prints out the help message corresponding to the given module." + (interactive) + (cmake-command-run "--help-module" (cmake-get-module) "*CMake Module Help*")) ;;;###autoload (progn