branch: elpa/gnuplot
commit db98e065783ddaa4baf1ad9c8687f7717c56a5ac
Author: Jonathan Oddie <[email protected]>
Commit: Jonathan Oddie <[email protected]>
Changed set up of info-look documentation and completion
- Added check for gnuplot-program-version to gnuplot-setup-info-look,
which should hopefully look at the right sections of the info file both
for current version (>= 4.0) and old ones
- Inform user if info-look.el isn't installed
- Changed gnuplot-info-lookup-symbol to use with-selected-window, and
count-screen-lines instead of count-lines
---
gnuplot.el | 94 ++++++++++++++++++++++++++++++++++----------------------------
1 file changed, 51 insertions(+), 43 deletions(-)
diff --git a/gnuplot.el b/gnuplot.el
index 9f6d7f8..2981d6b 100644
--- a/gnuplot.el
+++ b/gnuplot.el
@@ -2190,37 +2190,46 @@ See the comments in `gnuplot-info-hook'."
(setq gnuplot-keywords-pending nil)
(if (featurep 'info-look)
(progn
- (cond ((boundp 'info-lookup-symbol-alist) ; older version
- (setq info-lookup-symbol-alist
- (append
- info-lookup-symbol-alist
- '((gnuplot-mode
- "[a-zA-Z][_a-zA-Z0-9]*" nil
- (("(gnuplot)Top" nil "[_a-zA-Z0-9]+")
- ("(gnuplot)Commands" nil "[_a-zA-Z0-9]+")
- ("(gnuplot)Functions" nil "[_a-zA-Z0-9]+")
- ("(gnuplot)plot" nil "[_a-zA-Z0-9]+")
- ("(gnuplot)set-show" nil "[_a-zA-Z0-9]+")
- ("(gnuplot)data-file" nil "[_a-zA-Z0-9]+")
- ("(gnuplot)smooth" nil "[_a-zA-Z0-9]+")
- ("(gnuplot)style" nil "[_a-zA-Z0-9]+")
- ("(gnuplot)terminal" nil "[_a-zA-Z0-9]+")
- ;;("(gnuplot)General Index" nil "[_a-zA-Z0-9]+")
- ) "[_a-zA-Z0-9]+" ))) ))
- (t ; newer version
- (info-lookup-maybe-add-help
- :mode 'gnuplot-mode :topic 'symbol
- :regexp "[a-zA-Z][_a-zA-Z0-9]*"
- :doc-spec '(("(gnuplot)Top" nil "[_a-zA-Z0-9]+")
- ("(gnuplot)Commands" nil "[_a-zA-Z0-9]+")
- ("(gnuplot)Functions" nil "[_a-zA-Z0-9]+")
- ("(gnuplot)plot" nil "[_a-zA-Z0-9]+")
- ("(gnuplot)set-show" nil "[_a-zA-Z0-9]+")
- ("(gnuplot)data-file" nil "[_a-zA-Z0-9]+")
- ("(gnuplot)smooth" nil "[_a-zA-Z0-9]+")
- ("(gnuplot)style" nil "[_a-zA-Z0-9]+")
- ("(gnuplot)terminal" nil "[_a-zA-Z0-9]+")
- ) )))
+ ;; TODO: should make this a function
+ (or gnuplot-program-version
+ (progn
+ (message "Determining gnuplot version number (sitting for 2
seconds)")
+ (gnuplot-fetch-version-number)
+ (sit-for 2)))
+
+ ;; In the absence of evidence to the contrary, I'm guessing
+ ;; the info file layout changed with gnuplot version 4 <jjo>
+ (let ((temp-info-lookup-doc-spec
+ (if (>= (string-to-number gnuplot-program-version) 4.0)
+ ;; New info-file layout - works with gnuplot 4.4
+ '(("(gnuplot)Command_Index" nil "[_a-zA-Z0-9]+")
+ ("(gnuplot)Options_Index" nil "[_a-zA-Z0-9]+")
+ ("(gnuplot)Function_Index" nil "[_a-zA-Z0-9]+")
+ ("(gnuplot)Terminal_Index" nil "[_a-zA-Z0-9]+"))
+
+ ;; Old info-file layout
+ '(("(gnuplot)Top" nil "[_a-zA-Z0-9]+")
+ ("(gnuplot)Commands" nil "[_a-zA-Z0-9]+")
+ ("(gnuplot)Functions" nil "[_a-zA-Z0-9]+")
+ ("(gnuplot)plot" nil "[_a-zA-Z0-9]+")
+ ("(gnuplot)set-show" nil "[_a-zA-Z0-9]+")
+ ("(gnuplot)data-file" nil "[_a-zA-Z0-9]+")
+ ("(gnuplot)smooth" nil "[_a-zA-Z0-9]+")
+ ("(gnuplot)style" nil "[_a-zA-Z0-9]+")
+ ("(gnuplot)terminal" nil "[_a-zA-Z0-9]+")))))
+ (cond ((boundp 'info-lookup-symbol-alist) ; older info-lookup version
+ (setq info-lookup-symbol-alist
+ (append
+ info-lookup-symbol-alist
+ `((gnuplot-mode
+ "[a-zA-Z][_a-zA-Z0-9]*" nil
+ ,temp-info-lookup-doc-spec "[_a-zA-Z0-9]+" )))))
+ (t ; newer version
+ (info-lookup-maybe-add-help
+ :mode 'gnuplot-mode :topic 'symbol
+ :regexp "[a-zA-Z][_a-zA-Z0-9]*"
+ :doc-spec temp-info-lookup-doc-spec))))
+
;; this hook is my best way of working with info-look and
;; allowing multiple versions of the gnuplot-info file.
;; yes, this is a hassle.
@@ -2232,14 +2241,13 @@ See the comments in `gnuplot-info-hook'."
;; user will not want them lying around
(and (get-buffer "info dir") (kill-buffer "info dir"))
(and (get-buffer "info dir<2>") (kill-buffer "info dir<2>")))
- (setq gnuplot-keywords (gnuplot-set-keywords-list))
- )
+ (setq gnuplot-keywords (gnuplot-set-keywords-list)))
;; or do something sensible if info-look is not installed
(defun info-lookup-interactive-arguments (symbol)
(message
- "Help is not available. The gnuplot info file could not be found.")
- (list nil nil))) )
+ "Help is not available. info-look.el is not installed.")
+ (list nil nil))))
(defun gnuplot-set-keywords-list ()
@@ -2280,7 +2288,8 @@ adapted from `lisp-complete-symbol'."
(delete-region beg end)
(insert completion))
(let* ((list (all-completions pattern alist))
- (mess (format "%S could be one of %S" pattern list))
+ (mess (format "%S could be one of %S"
+ (substring-no-properties pattern) list))
(orig (current-buffer))
(buff (get-buffer-create " *gnuplot-completions*")))
(if (= (length list) 1) (insert " "))
@@ -2322,13 +2331,12 @@ the frame."
(if symbol () (setq symbol "Commands"))
(info-lookup-symbol symbol mode)
(cond ((equal gnuplot-info-display 'window)
- (let ((sw (selected-window))
- (window-min-height 2))
- (other-window 1)
- (enlarge-window
- (min (- (count-lines (point-min) (point-max)) (window-height))
- (- (/ (frame-height) 2) (window-height))))
- (select-window sw)))
+ (let ((window-min-height 2))
+ (with-selected-window (get-buffer-window "*info*")
+ (enlarge-window
+ (min (- (count-screen-lines (point-min) (point-max))
(window-height))
+ (- (/ (frame-height) 2) (window-height)))))))
+
((equal gnuplot-info-display 'frame)
(switch-to-buffer buff)
(delete-other-windows)