Add cmake-help-command function.
This commit is contained in:
parent
e1729238c9
commit
3b34523bc0
@ -30,7 +30,22 @@
|
|||||||
;------------------------------------------------------------------------------
|
;------------------------------------------------------------------------------
|
||||||
|
|
||||||
;;; Code:
|
;;; Code:
|
||||||
|
;;
|
||||||
|
;; cmake executable variable used to run cmake --help-command
|
||||||
|
;; on commands in cmake-mode
|
||||||
|
;;
|
||||||
|
;; cmake-command-help Written by James Bigler
|
||||||
|
;;
|
||||||
|
|
||||||
|
(defcustom cmake-mode-cmake-executable "cmake"
|
||||||
|
"*The name of the cmake executable.
|
||||||
|
|
||||||
|
This can be either absolute or looked up in $PATH. You can also
|
||||||
|
set the path with these commands:
|
||||||
|
(setenv \"PATH\" (concat (getenv \"PATH\") \";C:\\\\Program Files\\\\CMake 2.8\\\\bin\"))
|
||||||
|
(setenv \"PATH\" (concat (getenv \"PATH\") \":/usr/local/cmake/bin\"))"
|
||||||
|
:type 'file
|
||||||
|
:group 'cmake)
|
||||||
;;
|
;;
|
||||||
;; Regular expressions used by line indentation function.
|
;; Regular expressions used by line indentation function.
|
||||||
;;
|
;;
|
||||||
@ -249,6 +264,75 @@ the indentation. Otherwise it retains the same position on the line"
|
|||||||
; Run user hooks.
|
; Run user hooks.
|
||||||
(run-hooks 'cmake-mode-hook))
|
(run-hooks 'cmake-mode-hook))
|
||||||
|
|
||||||
|
; Help mode starts here
|
||||||
|
|
||||||
|
|
||||||
|
(defun cmake-command-run (type &optional topic)
|
||||||
|
"Runs the command cmake with the arguments specified. The
|
||||||
|
optional argument topic will be appended to the argument list."
|
||||||
|
(interactive "s")
|
||||||
|
(let* ((bufname (concat "*CMake" type (if topic "-") topic "*"))
|
||||||
|
(buffer (get-buffer bufname))
|
||||||
|
)
|
||||||
|
(if buffer
|
||||||
|
(display-buffer buffer 'not-this-window)
|
||||||
|
;; Buffer doesn't exist. Create it and fill it
|
||||||
|
(setq buffer (generate-new-buffer bufname))
|
||||||
|
(setq command (concat cmake-mode-cmake-executable " " type " " topic))
|
||||||
|
(message "Running %s" command)
|
||||||
|
;; We don't want the contents of the shell-command running to the
|
||||||
|
;; minibuffer, so turn it off. A value of nil means don't automatically
|
||||||
|
;; resize mini-windows.
|
||||||
|
(setq resize-mini-windows-save resize-mini-windows)
|
||||||
|
(setq resize-mini-windows nil)
|
||||||
|
(shell-command command buffer)
|
||||||
|
;; Save the original window, so that we can come back to it later.
|
||||||
|
;; save-excursion doesn't seem to work for this.
|
||||||
|
(setq window (selected-window))
|
||||||
|
;; We need to select it so that we can apply special modes to it
|
||||||
|
(select-window (display-buffer buffer 'not-this-window))
|
||||||
|
(cmake-mode)
|
||||||
|
(toggle-read-only t)
|
||||||
|
;; Restore the original window
|
||||||
|
(select-window window)
|
||||||
|
(setq resize-mini-windows resize-mini-windows-save)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
(defun cmake-help-list-commands ()
|
||||||
|
"Prints out a list of the cmake commands."
|
||||||
|
(interactive)
|
||||||
|
(cmake-command-run "--help-command-list")
|
||||||
|
)
|
||||||
|
|
||||||
|
(defvar cmake-help-command-history nil "Topic read history.")
|
||||||
|
|
||||||
|
(require 'thingatpt)
|
||||||
|
(defun cmake-get-topic (type)
|
||||||
|
"Gets the topic from the minibuffer input. The default is the word the cursor is on."
|
||||||
|
(interactive)
|
||||||
|
(let* ((default-entry (word-at-point))
|
||||||
|
(input (read-string
|
||||||
|
(format "CMake %s (default %s): " type default-entry) ; prompt
|
||||||
|
nil ; initial input
|
||||||
|
'cmake-help-command-history ; command history
|
||||||
|
default-entry ; default-value
|
||||||
|
)))
|
||||||
|
(if (string= input "")
|
||||||
|
(error "No argument given")
|
||||||
|
input))
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
(defun cmake-help-command ()
|
||||||
|
"Prints out the help message corresponding to the command the cursor is on."
|
||||||
|
(interactive)
|
||||||
|
(setq command (cmake-get-topic "command"))
|
||||||
|
(cmake-command-run "--help-command" (downcase command))
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
; This file provides cmake-mode.
|
; This file provides cmake-mode.
|
||||||
(provide 'cmake-mode)
|
(provide 'cmake-mode)
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user