Mercurial > hg > xemacs-beta
diff lisp/energize/energize-shell.el @ 0:376386a54a3c r19-14
Import from CVS: tag r19-14
author | cvs |
---|---|
date | Mon, 13 Aug 2007 08:45:50 +0200 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/energize/energize-shell.el Mon Aug 13 08:45:50 2007 +0200 @@ -0,0 +1,108 @@ +;;; -*- Mode:Emacs-Lisp -*- +;;; Copyright (C) 1992-1993 by Lucid, Inc. All Rights Reserved. + +(require 'comint) +(require 'shell) +(require 'gdb) + +(defun energize-comint-input-sender (energize-proc input) + (energize-send-region (energize-user-input-buffer-mark) (point))) + +(defvar energize-shell-prompt-pattern "^(.*gdb) ?" + "*A regexp to recognize the prompt for the Energize debugger.") + +(defun energize-debugger-mode () + "Major mode for the Energize Debugger buffers. +In addition to the normal cursor-motion commands, the following keys are bound: +\\{energize-debugger-map}" + (interactive) + (comint-mode) + (setq comint-prompt-regexp energize-shell-prompt-pattern + comint-input-sentinel 'shell-directory-tracker + comint-input-sender 'energize-comint-input-sender) + (setq mode-line-process nil) + (energize-mode-internal) + (set-syntax-table c-mode-syntax-table) + (setq major-mode 'energize-debugger-mode + mode-name "Energize-Debugger") + (use-local-map energize-debugger-map) + (set (make-local-variable 'shell-dirstack) nil) + (set (make-local-variable 'shell-dirtrackp) t) + (set (make-local-variable 'gdb-last-frame) nil) + (set (make-local-variable 'gdb-last-frame-displayed-p) t) + (set (make-local-variable 'gdb-delete-prompt-marker) nil) + (set (make-local-variable 'comint-input-autoexpand) nil) + (run-hooks 'energize-debugger-mode-hook)) + + +(if energize-debugger-map + nil +;; (setq energize-debugger-map (make-sparse-keymap)) +;; kludge!! + (setq energize-debugger-map (copy-keymap energize-map)) + + (set-keymap-name energize-debugger-map 'energize-debugger-map) + (set-keymap-parent energize-debugger-map gdb-mode-map) + (define-key energize-debugger-map "\M-\t" 'comint-dynamic-complete) + (define-key energize-debugger-map "\M-?" 'comint-dynamic-list-completions) + (define-key energize-debugger-map "\C-c<" 'energize-debugger-up-frame) + (define-key energize-debugger-map "\C-c>" 'energize-debugger-down-frame) + (define-key energize-debugger-map "\C-c\C-f" 'energize-debugger-return) + (define-key energize-debugger-map "\C-c\C-c" 'energize-debugger-interrupt) + ;; should be quit-subjob + (define-key energize-debugger-map "\C-c\C-\\" 'energize-debugger-interrupt) + (define-key energize-debugger-map "\C-c\C-z" + 'energize-debugger-interrupt) ; should suspend + (define-key energize-debugger-map "\C-c\C-d" 'energize-debugger-send-eof) + ) + + +;;; Energize Debugger mode commands; it seems pointless to do this with advice. + +(defun energize-debugger-step-line (arg) + "Step one source line in the Energize debugger." + (interactive "p") + (energize-execute-command "steponce")) + +(defun energize-debugger-step-instruction (arg) + "Step one machine instruction in the Energize debugger." + (interactive "p") + (energize-execute-command "stepinst")) + +(defun energize-debugger-next-line (arg) + "Step one source line skipping function calls in the Energize debugger." + (interactive "p") + (energize-execute-command "stepnext")) + +(defun energize-debugger-continue-program (arg) + "Continue running program being debugged in the Energize debugger." + (interactive "p") + (energize-execute-command "continueprogram")) + +(defun energize-debugger-up-frame (arg) + "Go up one stack frame in the Energize debugger." + (interactive "p") + (energize-execute-command "upframe")) + +(defun energize-debugger-down-frame (arg) + "Go up one stack frame in the Energize debugger." + (interactive "p") + (energize-execute-command "downframe")) + +(defun energize-debugger-return (arg) + "Finish executing current function in the Energize debugger." + (interactive "p") + (energize-execute-command "continueuntilreturn")) + +(defun energize-debugger-interrupt (arg) + "Interrupt program or debugger command in the Energize debugger." + (interactive "p") + (energize-execute-command "stopprogram")) + +(defun energize-debugger-send-eof () + "Send an EOF to the Energize debugger." + (interactive) + (save-excursion + (insert ?\C-d) + (energize-send-region (1- (point)) (point)) + (delete-char -1)))