⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bashdb.el

📁 android-w.song.android.widget
💻 EL
字号:
;;; bashdb.el --- Grand Unified Debugger mode for running bashdb;; Copyright (C) 2000, 2001 Masatake YAMATO ;; Author: Masatake YAMATO <jet@gyve.org>;; This program 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 2 of the License, or;; (at your option) any later version.;; This program 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 this program; if not, write to the Free Software Foundation,;; Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA;; Commentary:;; This program may run on Emacs 21.0.91 and XEmacs 21.1. ;;;; Put ;; (autoload 'bashdb "bashdb" "Run bashdb" t nil);;  to your .emacs.;; M-x bashdb;; Run bashdb (like this): bashdb target.sh;;;; About bashdb:;; You can get bashdb from;; http://www.oranda.demon.co.uk/development.html;;;; bashdb.el is based on perldb in gud.el in XEmacs 21.1.;; Revision:;; $Revision: 1.6 $;; $Log: bashdb.el,v $;; Revision 1.6  2001/01/06 12:18:06  masata-y;; Write note about XEmacs.;;;;;;; Code: (require 'gud);; User customizable variable(defcustom gud-bashdb-command-name "bashdb"  "File name for executing Bashdb."  :type 'string  :group 'gud);; History of argument lists passed to bashdb.(defvar gud-bashdb-history nil)(defun gud-bashdb-massage-args (file args)  (if xemacsp      (cons (file-name-nondirectory file) args)	    args));; There's no guarantee that Emacs will hand the filter the entire;; marker at once; it could be broken up across several strings.  We;; might even receive a big chunk with several markers in it.  If we;; receive a chunk of text which looks like it might contain the;; beginning of a marker, we save it here between calls to the;; filter.(if xemacsp    (defvar gud-bashdb-marker-acc ""))(defun gud-bashdb-marker-acc ()  (if xemacsp      gud-bashdb-marker-acc    gud-marker-acc))(defun gud-bashdb-marker-acc-quote ()  (if xemacsp      'gud-bashdb-marker-acc    'gud-marker-acc))(defun gud-bashdb-marker-filter (string)  (save-match-data    (set (gud-bashdb-marker-acc-quote)	 (concat (gud-bashdb-marker-acc) string))    (let ((output ""))      ;; Process all the complete markers in this chunk.      (while (string-match "^\\([^:\n]+\\):\\([0-9]+\\)[ *]*>.*\n"			   (gud-bashdb-marker-acc))	(setq	 ;; Extract the frame position from the marker.	 gud-last-frame (cons			 (substring (gud-bashdb-marker-acc)				    (match-beginning 1)				    (match-end 1))			 (string-to-int 			  (substring (gud-bashdb-marker-acc)				     (match-beginning 2) 				     (match-end 2))))	 ;; Append any text before the marker to the output we're going	 ;; to return - we don't include the marker in this text.	 output (concat output			(substring (gud-bashdb-marker-acc) 0 (match-beginning 0))))	 ;; Set the accumulator to the remaining text.	(set	 (gud-bashdb-marker-acc-quote) (substring 					(gud-bashdb-marker-acc) (match-end 0))))      ;; Does the remaining text look like it might end with the      ;; beginning of another marker?  If it does, then keep it in      ;; (gud-bashdb-marker-acc) until we receive the rest of it.  Since we      ;; know the full marker regexp above failed, it's pretty simple to      ;; test for marker starts.      (if (string-match "^\\([^:\n]+\\):\\([0-9]+\\)[ *]*>" (gud-bashdb-marker-acc))	  (progn	    ;; Everything before the potential marker start can be output.	    (setq output (concat output (substring (gud-bashdb-marker-acc)						   0 (match-beginning 0))))	    ;; Everything after, we save, to combine with later input.	    (set (gud-bashdb-marker-acc-quote)		 (substring (gud-bashdb-marker-acc) (match-beginning 0))))		(setq output (concat output (gud-bashdb-marker-acc)))	(set (gud-bashdb-marker-acc-quote) ""))            output)))      (defun gud-bashdb-find-file (f)  (find-file-noselect f));;;###autoload(defun bashdb (command-line)  "Run bashdb on program FILE in buffer *gud-FILE*.The directory containing FILE becomes the initial working directoryand source-file directory for your debugger."  (interactive   (if xemacsp       (list (read-from-minibuffer "Run bashdb (like this): "				   (if (consp gud-bashdb-history)				       (car gud-bashdb-history)				     (format "%s " gud-bashdb-command-name))				   nil nil				   '(gud-bashdb-history . 1)))     (list (gud-query-cmdline 'bashdb))     ))    (if xemacsp      (progn	(gud-overload-functions '((gud-massage-args . gud-bashdb-massage-args)				  (gud-marker-filter . gud-bashdb-marker-filter)				  (gud-find-file . gud-bashdb-find-file)))	(gud-common-init command-line gud-bashdb-command-name))    (gud-common-init command-line 'gud-bashdb-massage-args		     'gud-bashdb-marker-filter 'gud-bashdb-find-file)    (set (make-local-variable 'gud-minor-mode) 'bashdb));; Unsupported commands;;  condition foo	set break condition to foo;;  condition	clear break condition;;  display EXP	evaluate and display EXP for each debug step;;  display		show a list of display expressions;;  undisplay N	remove display expression N;;  ! string	passes string to a shell;;  quit		quit  (gud-def gud-break       "break %l"     "\C-b" "Set breakpoint at current line.")  (gud-def gud-list-break  "break"        "b"    "List breakpoints & break condition.")  (gud-def gud-remove      "delete %l"    "\C-d" "Remove breakpoint at current line")  (gud-def gud-remove-all  "delete"       "d"    "Clear all breakpoints")  (gud-def gud-cont   "continue"          "\C-r" "Continue with display.")  (gud-def gud-next   "next"              "\C-n" "Step one line (skip functions).")  (gud-def gud-print  "print %e"          "\C-p" "Evaluate bash expression at point.")  (gud-def gud-help   "help"              "h"    "Show all commands.")  (gud-def gud-trace  "trace"             "t"    "Toggle execution trace on/off")  (setq comint-prompt-regexp "^bashdb> ")  (setq paragraph-start comint-prompt-regexp)  (run-hooks 'bashdb-mode-hook))(provide 'bashdb);; bashdb.el ends here

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -