home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Source Code 1993 July / THE_SOURCE_CODE_CD_ROM.iso / gnu / lucid / lemacs-19.6 / lisp / energize / energize-shell.el < prev    next >
Encoding:
Text File  |  1993-01-16  |  5.6 KB  |  148 lines

  1. ;;; -*- Mode:Emacs-Lisp -*-
  2. ;;; Copyright ⌐ 1992-1993 by Lucid, Inc.  All Rights Reserved.
  3.  
  4. (require 'comint)
  5. (require 'shell)
  6.  
  7. (defun energize-comint-mark ()
  8.   "This function has been augumented to work with Energize debugger buffers."
  9.   (or (energize-user-input-buffer-mark)
  10.       (energize-orig-comint-mark)))
  11.  
  12. (defun energize-comint-input-sender (energize-proc input)
  13.   (energize-send-region
  14.    (marker-position energize-mark) ; spec-ref to energize-comint-send-input
  15.    (point)))                  ; dependent on how comint-send-input works...
  16.  
  17. (defun energize-comint-send-input ()
  18.   "This function has been augumented to work with Energize debugger buffers."
  19.   (interactive)
  20.   (if (energize-buffer-p (current-buffer))
  21.       (let ((energize-proc (or (get-process "energize")
  22.                    (get-process "energize\000") ; #### Nuke this!
  23.                    (error "couldn't find \"energize\" process")))
  24.         (energize-mark (or (energize-user-input-buffer-mark)
  25.                 (error "couldn't find energize input mark"))))
  26.     (unwind-protect
  27.         (let ((comint-input-sender 'energize-comint-input-sender))
  28.           (set-marker (process-mark energize-proc) energize-mark)
  29.           (set-process-buffer energize-proc (current-buffer))
  30.           (energize-orig-comint-send-input)
  31.           )
  32.       (set-marker energize-mark (process-mark energize-proc))
  33.       (set-process-buffer energize-proc nil)))
  34.     (energize-orig-comint-send-input)))
  35.  
  36. (fset 'energize-bits 'random)
  37.  
  38.  
  39. (defvar energize-shell-prompt-pattern "^(.*gdb[+]?) *"
  40.   "*A regexp to recognize the prompt for gdb or gdb+.") 
  41.  
  42. (defun energize-user-input-mode ()
  43.   "Major mode for the Energize user-input buffers.
  44. In addition to the normal cursor-motion commands, the following keys are bound:
  45. \\{energize-user-input-map}"
  46.   (interactive)
  47.   (comint-mode)
  48.   (setq mode-line-process ())
  49.   (energize-mode-internal)
  50.   (setq major-mode 'energize-user-input-mode
  51.     mode-name "Energize-Shell")
  52.   (setq comint-prompt-regexp energize-shell-prompt-pattern
  53.     comint-input-sentinel 'shell-directory-tracker)
  54.   (set (make-local-variable 'shell-dirstack) nil)
  55.   (set (make-local-variable 'shell-dirtrackp) t)
  56.   (use-local-map energize-user-input-map)
  57.   (run-hooks 'energize-user-input-mode-hook))
  58.  
  59.  
  60. (defun energize-debugger-mode ()
  61.   "Major mode for the Energize Debugger buffers.
  62. In addition to the normal cursor-motion commands, the following keys are bound:
  63. \\{energize-debugger-map}"
  64.   (interactive)
  65.   (energize-user-input-mode)
  66.   (set-syntax-table c-mode-syntax-table)
  67.   (setq major-mode 'energize-debugger-mode
  68.     mode-name "Energize-Debugger")
  69.   (use-local-map energize-debugger-map)
  70.   (set (make-local-variable 'gdb-last-frame) nil)
  71.   (set (make-local-variable 'gdb-last-frame-displayed-p) t)
  72.   (set (make-local-variable 'gdb-delete-prompt-marker) nil)
  73.   (run-hooks 'energize-debugger-mode-hook))
  74.  
  75.  
  76. (if energize-debugger-map
  77.     nil
  78.   (setq energize-debugger-map (copy-keymap gdb-mode-map))
  79.   (if (keymap-parent gdb-mode-map) (error "gdb-mode-map has a parent keymap?"))
  80.   (set-keymap-parent energize-debugger-map energize-user-input-map)
  81. ;;(define-key energize-debugger-map "\M-s" 'energize-debugger-step-line)
  82. ;;(define-key energize-debugger-map "\M-i" 'energize-debugger-step-instruction)
  83. ;;(define-key energize-debugger-map "\M-n" 'energize-debugger-next-line)
  84. ;;(define-key energize-debugger-map "\M-c" 'energize-debugger-continue-program)
  85. ;;(define-key energize-debugger-map "\M-u" 'energize-debugger-up-frame)
  86. ;;(define-key energize-debugger-map "\M-d" 'energize-debugger-down-frame)
  87.   (define-key energize-debugger-map "\C-c<" 'energize-debugger-up-frame)
  88.   (define-key energize-debugger-map "\C-c>" 'energize-debugger-down-frame)
  89.   (define-key energize-debugger-map "\C-c\C-f" 'energize-debugger-return)
  90.   (define-key energize-debugger-map "\C-c\C-c" 'energize-debugger-interrupt)
  91.   ;; should be quit-subjob
  92.   (define-key energize-debugger-map "\C-c\C-\\" 'energize-debugger-interrupt)
  93.   (define-key energize-debugger-map "\C-c\C-z"
  94.     'energize-debugger-interrupt) ; should suspend
  95.   (define-key energize-debugger-map "\C-c\C-d" 'energize-debugger-send-eof)
  96.   )
  97.  
  98.  
  99. ;;; Energize Debugger mode commands; it seems pointless to do this with advice.
  100.  
  101. (defun energize-debugger-step-line (arg)
  102.   "Step one source line in the Energize debugger."
  103.   (interactive "p")
  104.   (energize-execute-command "steponce"))
  105.  
  106. (defun energize-debugger-step-instruction (arg)
  107.   "Step one machine instruction in the Energize debugger."
  108.   (interactive "p")
  109.   (energize-execute-command "stepinst"))
  110.  
  111. (defun energize-debugger-next-line (arg)
  112.   "Step one source line skipping function calls in the Energize debugger."
  113.   (interactive "p")
  114.   (energize-execute-command "stepnext"))
  115.  
  116. (defun energize-debugger-continue-program (arg)
  117.   "Continue running program being debugged in the Energize debugger."
  118.   (interactive "p")
  119.   (energize-execute-command "continueprogram"))
  120.  
  121. (defun energize-debugger-up-frame (arg)
  122.   "Go up one stack frame in the Energize debugger."
  123.   (interactive "p")
  124.   (energize-execute-command "upframe"))
  125.  
  126. (defun energize-debugger-down-frame (arg)
  127.   "Go up one stack frame in the Energize debugger."
  128.   (interactive "p")
  129.   (energize-execute-command "downframe"))
  130.  
  131. (defun energize-debugger-return (arg)
  132.   "Finish executing current function in the Energize debugger."
  133.   (interactive "p")
  134.   (energize-execute-command "continueuntilreturn"))
  135.  
  136. (defun energize-debugger-interrupt (arg)
  137.   "Interrupt program or debugger command in the Energize debugger."
  138.   (interactive "p")
  139.   (energize-execute-command "stopprogram"))
  140.  
  141. (defun energize-debugger-send-eof ()
  142.   "Send an EOF to the Energize debugger."
  143.   (interactive)
  144.   (save-excursion
  145.     (insert ?\C-d)
  146.     (energize-send-region (1- (point)) (point))
  147.     (delete-char -1)))
  148.