changeset 94496:38eb904fa638

* progmodes/octave-mod.el (octave-help): New function. * progmodes/octave-hlp.el: Delete. * info-look.el (octave-mode): Add operator index.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Wed, 30 Apr 2008 08:48:02 +0000
parents 027a58c5f305
children 2f4d6806f156
files lisp/ChangeLog lisp/info-look.el lisp/progmodes/octave-hlp.el lisp/progmodes/octave-mod.el
diffstat 4 files changed, 16 insertions(+), 150 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Wed Apr 30 08:13:09 2008 +0000
+++ b/lisp/ChangeLog	Wed Apr 30 08:48:02 2008 +0000
@@ -1,5 +1,9 @@
 2008-04-30  Stefan Monnier  <monnier@iro.umontreal.ca>
 
+	* progmodes/octave-mod.el (octave-help): New function.
+	* progmodes/octave-hlp.el: Delete.
+	* info-look.el (octave-mode): Add operator index.
+
 	* vc.el (vc-checkout): Typo.
 
 2008-04-30  Dan Nicolaescu  <dann@ics.uci.edu>
--- a/lisp/info-look.el	Wed Apr 30 08:13:09 2008 +0000
+++ b/lisp/info-look.el	Wed Apr 30 08:48:02 2008 +0000
@@ -881,10 +881,11 @@
 
 (info-lookup-maybe-add-help
  :mode 'octave-mode
- :regexp "[_a-zA-Z0-9]+"
+ :regexp "[_a-zA-Z0-9]+\\|\\s.+\\|[-!=^|*/.\\,><~&+]\\{1,3\\}\\|[][();,\"']"
  :doc-spec '(("(octave)Function Index" nil
 	      "^ -+ [^:]+:[ ]+\\(\\[[^=]*=[ ]+\\)?" nil)
 	     ("(octave)Variable Index" nil "^ -+ [^:]+:[ ]+" nil)
+             ("(octave)Operator Index" nil nil nil)
 	     ;; Catch lines of the form "xyz statement"
 	     ("(octave)Concept Index"
 	      (lambda (item)
--- a/lisp/progmodes/octave-hlp.el	Wed Apr 30 08:13:09 2008 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,139 +0,0 @@
-;;; octave-hlp.el --- getting help on Octave symbols using info
-
-;; Copyright (C) 1997, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
-;; Free Software Foundation, Inc.
-
-;; Author: Kurt Hornik <Kurt.Hornik@wu-wien.ac.at>
-;; Author: John Eaton <jwe@bevo.che.wisc.edu>
-;; Maintainer: Kurt Hornik <Kurt.Hornik@wu-wien.ac.at>
-;; Keywords: languages
-
-;; This file is part of GNU Emacs.
-
-;; GNU Emacs is free software; you can redistribute it and/or modify
-;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation; either version 3, or (at your option)
-;; any later version.
-
-;; GNU Emacs is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;; GNU General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-;; Boston, MA 02110-1301, USA.
-
-;;; Commentary:
-
-;; Provides the command `octave-help' which allows index lookup of a
-;; symbol in the Octave-related info files, as specified by the list
-;; `octave-help-files'.
-
-;; Other features may be added in future versions.
-
-;;; Code:
-
-(require 'octave-mod)
-(require 'info)
-
-(defvar octave-help-files '("octave")
-  "List of info files with documentation for Octave.
-Default is (\"octave\").")
-
-(defvar octave-help-lookup-alist nil
-  "Alist of Octave index entries for lookup.")
-
-(defvar octave-help-completion-alist nil
-  "Alist of Octave index entries for completion.
-The entries are of the form (VAR . VAR), where VAR runs through all
-different keys in `octave-help-lookup-alist'.")
-
-;;;###autoload
-(defun octave-help (key)
-  "Get help on Octave symbols from the Octave info files.
-Look up KEY in the function, operator and variable indices of the files
-specified by `octave-help-files'.
-If KEY is not a string, prompt for it with completion."
-  (interactive
-   (list
-    (completing-read (format "Describe Octave symbol: ")
-		     (octave-help-get-completion-alist)
-		     nil t)))
-  (if (get-buffer "*info*")
-      (set-buffer "*info*"))
-  (if (zerop (length key))
-      (Info-find-node (car octave-help-files) "Top")
-    (let ((alist (copy-alist (octave-help-get-lookup-alist)))
-	  entry matches)
-      (while (setq entry (car alist))
-	(if (string-match key (car entry))
-	    (add-to-list 'matches entry))
-	(setq alist (cdr alist)))
-      (if matches
-	  (progn
-	    (setq Info-index-alternatives matches)
-	    (Info-index-next 0))))))
-
-(defun octave-help-get-lookup-alist ()
-  "Build the index lookup alist from all Octave info files.
-The files specified by `octave-help-files' are searched."
-  (if octave-help-lookup-alist
-      ()
-    (message "Building help lookup alist...")
-    (let ((files octave-help-files) file key node)
-      (save-window-excursion
-	(while files
-	  (setq file (car files))
- 	  (Info-goto-node (concat "(" file ")"))
-	  (condition-case nil
-	      (progn
-		(Info-index "")
-		(while
-		    (progn
-		      (while (re-search-forward
-			      "^\\* \\([^(:]+\\)[^:]*: *\\(.+\\)\\.$"
-			      nil t)
-			(setq key (match-string 1)
-			      node (concat "(" file ")" (match-string 2)))
-			(and (string-match "\\(.*\\>\\) *$" key)
-			     (setq key (replace-match "\\1" t nil key)))
-			(add-to-list 'octave-help-lookup-alist
-				     (list key
-					   node
-					   (concat (concat "(" file ")")
-						   Info-current-node)
-					   0)))
-		      (and (setq node (Info-extract-pointer "next" t))
-			   (string-match
-			    (concat "\\(Function\\|Operator\\|Variable\\) "
-				    "\\<Index\\>")
-			    node)))
-		  (Info-goto-node node)))
-	    (error nil))
-	  (setq files (cdr files)))))
-    (message "Building help lookup alist...done"))
-  octave-help-lookup-alist)
-
-(defun octave-help-get-completion-alist ()
-  "Build the index completion alist from all Octave info files.
-The files specified by `octave-help-files' are searched."
-  (if octave-help-completion-alist
-      ()
-    (message "Building help completion alist...")
-    (let ((alist (octave-help-get-lookup-alist)) entry)
-      (while alist
-	(setq entry (car alist))
-	(add-to-list 'octave-help-completion-alist
-		     (cons (car entry) (car entry)))
-	(setq alist (cdr alist))))
-    (message "Building help completion alist...done"))
-  octave-help-completion-alist)
-
-;;; provide ourself
-
-(provide 'octave-hlp)
-
-;; arch-tag: df5ef8fa-76c9-44e5-9835-cb5a502c6282
-;;; octave-hlp.el ends here
--- a/lisp/progmodes/octave-mod.el	Wed Apr 30 08:13:09 2008 +0000
+++ b/lisp/progmodes/octave-mod.el	Wed Apr 30 08:48:02 2008 +0000
@@ -31,13 +31,10 @@
 ;; It defines Octave mode, a major mode for editing
 ;; Octave code.
 
-;; The file octave-hlp.el provides `octave-help', a facility for looking up
-;; documentation on a symbol in the Octave info files.
-
 ;; The file octave-inf.el contains code for interacting with an inferior
 ;; Octave process using comint.
 
-;; See the documentation of `octave-mode', `octave-help' and
+;; See the documentation of `octave-mode' and
 ;; `run-octave' for further information on usage and customization.
 
 ;;; Code:
@@ -544,6 +541,12 @@
   (octave-add-octave-menu)
   (octave-initialize-completions)
   (run-mode-hooks 'octave-mode-hook))
+
+(defun octave-help ()
+  "Get help on Octave symbols from the Octave info files.
+Look up symbol in the function, operator and variable indices of the info files."
+  (let ((info-lookup-mode 'octave-mode))
+    (call-interactively 'info-lookup-symbol)))
 
 ;;; Miscellaneous useful functions
 (defun octave-describe-major-mode ()
@@ -1259,8 +1262,7 @@
 	       (display-completion-list list string))
 	     (message "Hit space to flush")
 	     (let (key first)
-	       (if (save-excursion
-		     (set-buffer (get-buffer "*Completions*"))
+	       (if (with-current-buffer (get-buffer "*Completions*")
 		     (setq key (read-key-sequence nil)
 			   first (aref key 0))
 		     (and (consp first) (consp (event-start first))
@@ -1427,8 +1429,7 @@
   (let ((proc inferior-octave-process)
 	(string (buffer-substring-no-properties beg end))
 	line)
-    (save-excursion
-      (set-buffer inferior-octave-buffer)
+    (with-current-buffer inferior-octave-buffer
       (setq inferior-octave-output-list nil)
       (while (not (string-equal string ""))
 	(if (string-match "\n" string)
@@ -1517,12 +1518,11 @@
      'octave-comment-char
      'octave-continuation-offset
      'octave-continuation-string
-     'octave-help-files
      'octave-send-echo-input
      'octave-send-line-auto-forward
      'octave-send-show-buffer))))
 
-;;; provide ourself
+;; provide ourself
 
 (provide 'octave-mod)