From: Stefan Monnier Date: Wed, 30 Apr 2008 08:48:02 +0000 (+0000) Subject: * progmodes/octave-mod.el (octave-help): New function. X-Git-Url: http://git.hcoop.net/bpt/emacs.git/commitdiff_plain/5d8137abac262ce380105a6d2c38783e07c2f4e1 * progmodes/octave-mod.el (octave-help): New function. * progmodes/octave-hlp.el: Delete. * info-look.el (octave-mode): Add operator index. --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 1f40087d0e..1ccaa792ef 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,5 +1,9 @@ 2008-04-30 Stefan Monnier + * 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 diff --git a/lisp/info-look.el b/lisp/info-look.el index a5d9754f1a..a0d9b10d99 100644 --- a/lisp/info-look.el +++ b/lisp/info-look.el @@ -881,10 +881,11 @@ Return nil if there is nothing appropriate in the buffer near point." (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) diff --git a/lisp/progmodes/octave-hlp.el b/lisp/progmodes/octave-hlp.el deleted file mode 100644 index 314a344607..0000000000 --- a/lisp/progmodes/octave-hlp.el +++ /dev/null @@ -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 -;; Author: John Eaton -;; Maintainer: Kurt Hornik -;; 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\\) " - "\\") - 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 diff --git a/lisp/progmodes/octave-mod.el b/lisp/progmodes/octave-mod.el index 2619c48bf1..ce18a7032d 100644 --- a/lisp/progmodes/octave-mod.el +++ b/lisp/progmodes/octave-mod.el @@ -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 @@ including a reproducible test case and send the message." (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 @@ variables." (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 @@ entered without parens)." (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 @@ code line." '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)