home *** CD-ROM | disk | FTP | other *** search
/ The World of Computer Software / World_Of_Computer_Software-02-387-Vol-3of3.iso / p / plbin.zip / pl / lisp / qphelp-functions.el < prev    next >
Lisp/Scheme  |  1992-05-26  |  5KB  |  161 lines

  1. ;;; SCCS: @(#)90/11/15 qphelp-functions.el    2.10
  2. ;;;            Quintus Prolog - GNU Emacs Interface
  3. ;;;                         Support Functions
  4. ;;;
  5. ;;;                Consolidated by Sitaram Muralidhar
  6. ;;;
  7. ;;;                   sitaram@quintus.com
  8. ;;;              Quintus Computer Systems, Inc.
  9. ;;;                  2 May 1989       
  10. ;;;
  11. ;;; This file defines functions that support the Quintus Prolog - GNU Emacs
  12. ;;; interface.
  13. ;;;
  14. ;;;                   Acknowledgements
  15. ;;;
  16. ;;;
  17. ;;; This interface was made possible by contributions from Fernando
  18. ;;; Pereira and various customers of Quintus Computer Systems, Inc.,
  19. ;;; based on code for Quintus's Unipress Emacs interface.
  20. ;;; 
  21.  
  22. (provide 'qhelp-functions)
  23.  
  24. ;
  25. ; key functions. Each function is bound to a specific key code.
  26. ;
  27.  
  28. (defmacro error-occurred (&rest body)
  29.   (list 'condition-case nil (cons 'progn (append body '(nil))) '(error t)))
  30.  
  31. (defun find-next-entry ()
  32.   (interactive)
  33.   (if (error-occurred (re-search-forward "manual([a-z]+-*[0-9---]+*)"))
  34.       (progn 
  35.     (goto-char (point-min))
  36.     (if (error-occurred (re-search-forward "manual([a-z]+-*[0-9---]+*)")) 
  37.         (progn 
  38.           (message "Bad menu format for file: %s" current-file)
  39.           (stop-it)))))
  40.  ; (message "<Space>/<DEL> to position cursor, <Return> to select"))
  41.   (message "<Space> to advance cursor, <Return> to select item, q to Quit, ? for Help"))
  42.  
  43. (defun find-previous-entry ()
  44.   (interactive)
  45.   (beginning-of-line)
  46.   (if (error-occurred (re-search-backward "manual([a-z]+-*[0-9---]+*)"))
  47.       (progn 
  48.     (goto-char (point-max))
  49.     (if (error-occurred (re-search-backward "manual([a-z]+-*[0-9---]+*)"))
  50.         (progn 
  51.           (message "Bad menu format for file: %s" current-file)
  52.           (stop-it)))))
  53.   (re-search-forward "[a-z]+-*[0-9---]+*)")
  54.   (message "<Space> to advance cursor, <Return> to select item, q to Quit, ? for Help"))
  55.  
  56. (defun get-entry ()
  57.   (interactive)
  58.   (save-excursion
  59.     (beginning-of-line)
  60.     (if (error-occurred (re-search-forward "manual([a-z]+-*[0-9---]+*)"))
  61.     (message (concat "The cursor is not at a cross reference, " 
  62.              "try typing a <Space>/<DEL>."))
  63.       (let* ((end (point))
  64.          (reference (progn 
  65.               (re-search-backward "manual")
  66.               (buffer-substring (point) end))))
  67.     (send-prolog reference)))))
  68.  
  69. (defun stop-it ()
  70.   "Return to the top level. Typically this is the prolog shell."
  71.   (interactive)
  72.   (let* ((list (buffer-list)))
  73.     (while list
  74.       (let* ((buffer (car list)))
  75.     (and (string-match "Quintus-Help-System" (buffer-name buffer))
  76.          (kill-buffer buffer)))
  77.       (setq list (cdr list))))
  78.   (pop-to-buffer "*prolog*")
  79.   (goto-char (point-max)))
  80.  
  81. (defun find-next-reference ()
  82.   (interactive)
  83.   (if (error-occurred (re-search-forward "manual([a-z]+-*[0-9---]+*)")) 
  84.       (message "End of cross references.")))
  85.  
  86. (defun find-previous-reference ()
  87.   (interactive)
  88.   (let ((position (point)))
  89.     (if (error-occurred (re-search-backward "{"))
  90.     (progn 
  91.       (message "Beginning of cross references.")
  92.       (goto-char position))
  93.       (if (error-occurred (re-search-backward "manual([a-z]+-*[0-9---]+*)"))
  94.       (progn 
  95.         (message "Beginning of cross references.")
  96.         (goto-char position))
  97.     (re-search-forward ")")))))
  98.       
  99. (defun retrieve-next-reference ()
  100.   (interactive)
  101.   (save-excursion
  102.     (if (error-occurred (re-search-backward "manual([a-z]+-*[0-9---]+*)"))
  103.     (message "Reference not found, try typing 'X' or 'x'.")
  104.     (let* ((start (point))
  105.       (reference (progn 
  106.                (re-search-forward "[0-9]+*)")
  107.                (buffer-substring start (point)))))
  108.       (send-prolog reference)))))
  109.  
  110. (defun back-one-step ()
  111.   "Return to the previous level."
  112.   (interactive)
  113.   (pop-state))
  114.  
  115. (defun get-menu-help ()
  116.   (interactive)
  117.   (message "Please wait, getting help...")
  118.   (send-prolog "manual('menus, Emacs commands for')"))
  119.  
  120. (defun get-text-help ()
  121.   (interactive)
  122.   (message "Please wait, getting help...")
  123.   (send-prolog "manual('text, Emacs commands for')"))
  124.  
  125. (defun up-one-level ()
  126.   "Go to the parent reference"
  127.   (interactive)
  128.   (goto-char (point-min))
  129.   (end-of-line)
  130.   (cond ((equal (point-min) (point))
  131.      (stop-it))
  132.     (t (cond ((re-search-backward "-" (point-min) t)
  133.           (let ((reference (concat 
  134.                      "manual(" 
  135.                      (buffer-substring (point-min) (point))
  136.                      ")")))
  137.             (message 
  138.               "Please wait calling:" reference)
  139.             (send-prolog reference)))
  140.          (t  (message "Please wait calling: manual.")
  141.              (send-prolog "manual"))))))
  142.  
  143.  
  144. (defun previous-page ()
  145.   (interactive)
  146.   (scroll-down nil))
  147.  
  148. (defun next-page ()
  149.   (interactive)
  150.   (scroll-up nil))
  151.  
  152. (defun scroll-one-line-up ()
  153.   (interactive)
  154.   (scroll-up 1))
  155.  
  156. (defun scroll-one-line-down ()
  157.   (interactive)
  158.   (scroll-down 1))
  159.  
  160.  
  161.