Start to simplificy cmdbuf-info assignment routines.
;;; Backtrace buffer
-;;; Copyright (C) 2010 Rocky Bernstein <rocky@gnu.org>
+;;; Copyright (C) 2010, 2011 Rocky Bernstein <rocky@gnu.org>
(require 'load-relative)
(require-relative-list
'("../key") "dbgr-")
+
(require-relative-list
'("command") "dbgr-buffer-")
map)
"Keymap to navigate dbgr stack frames.")
-(defun dbgr-remove-surrounding-stars(string)
+(defun dbgr-get-buffer-base-name(string)
"Leading and ending * in string. For example:
- *shell<2>* -> shell<2>.
+ *shell<2>* -> shell<2>
+ *foo shell* -> foo
buffer.c -> buffer.c"
(if (string-match "^[*]?\\([^*]+\\)[*]?$" string)
- (match-string 1 string)
+ (let ((string-sans-stars (match-string 1 string)))
+ (if (string-match "\\(.+\\) shell" string-sans-stars)
+ (match-string 1 string-sans-stars)
+ string-sans-stars)
+ )
string
)
)
;; (message "+++4 %s" dbgr-track-divert-string)
(let ((bt-buffer (get-buffer-create
(format "*%s backtrace*"
- (dbgr-remove-surrounding-stars
+ (dbgr-get-buffer-base-name
(buffer-name)))))
(divert-string dbgr-track-divert-string)
)
+ (dbgr-cmdbuf-info-bt-buf= dbgr-cmdbuf-info bt-buffer)
(with-current-buffer bt-buffer
(setq buffer-read-only nil)
(delete-region (point-min) (point-max))
;;; process-command buffer things
-;;; Copyright (C) 2010 Rocky Bernstein <rocky@gnu.org>
+;;; Copyright (C) 2010, 2011 Rocky Bernstein <rocky@gnu.org>
(require 'load-relative)
(require-relative-list
(defstruct dbgr-cmdbuf-info
"The debugger object/structure specific to a process buffer."
- in-srcbuf? ;; Should the selected window be the source buffer or
- ;; command buffer?
+ in-srcbuf? ;; If true, selected window be the source buffer.
+ ;; Otherwise, the command buffer?
debugger-name ;; Name of debugger
frame-switch? ;; Should the selected window be the source buffer or
;; command buffer?
;; this debugger. Eventually loc-regexp, file-group
;; and line-group below will removed and stored here.
srcbuf-list ;; list of source buffers we have stopped at
+ bt-buf ;; backtrace buffer if it exists
bp-list ;; list of breakpoints
divert-output? ;; Output is part of a conversation between front-end
;; debugger.
(dbgr-cmdbuf-info-src-shortkey? dbgr-cmdbuf-info))
(message "command hash: %s"
(dbgr-cmdbuf-info-cmd-hash dbgr-cmdbuf-info))
+ (message "backtrace-buffer: %s"
+ (dbgr-cmdbuf-info-bt-buf dbgr-cmdbuf-info))
)
(defun dbgr-cmdbuf? (&optional buffer)
)
)
-;; FIXME: DRY = access via a macro. See also analogous
-;; code in dbgr-srcbuf
-(defun dbgr-cmdbuf-info-bp-list=(info value)
- (if (dbgr-cmdbuf-info? info)
- (setf (dbgr-cmdbuf-info-bp-list info) value)))
-
(defun dbgr-cmdbuf-set-shortkey(&optional cmdbuf unset)
(interactive "")
(setq cmdbuf (or cmdbuf (current-buffer)))
))
)
-(defun dbgr-cmdbuf-info-cmd-args=(info value)
- (setf (dbgr-cmdbuf-info-cmd-args info) value))
+;; FIXME: DRY = access via a macro. See also analogous
+;; code in dbgr-srcbuf
+(defun dbgr-cmdbuf-info-bp-list=(value)
+ (if (dbgr-cmdbuf-info? dbgr-cmdbuf-info)
+ (setf (dbgr-cmdbuf-info-bp-list dbgr-cmdbuf-info) value)))
+
+(defun dbgr-cmdbuf-info-cmd-args=(value)
+ (setf (dbgr-cmdbuf-info-cmd-args dbgr-cmdbuf-info) value))
(defun dbgr-cmdbuf-info-divert-output?=(info value)
(setf (dbgr-cmdbuf-info-divert-output? info) value))
(defun dbgr-cmdbuf-info-no-record?=(info value)
(setf (dbgr-cmdbuf-info-no-record? info) value))
+(defun dbgr-cmdbuf-info-bt-buf=(info value)
+ (setf (dbgr-cmdbuf-info-bt-buf info) value))
+
(defun dbgr-cmdbuf-info-prior-prompt-regexp=(info value)
(if (dbgr-cmdbuf-info? info)
(setf (dbgr-cmdbuf-info-prior-prompt-regexp info) value)))
:help (documentation 'dbgr-window-src-undisturb-cmd)
))
+ (define-key menu-map [backtrace]
+ (dbgr-menu-item menu-map "backtrace" 'dbgr-window-src-undisturb-cmd
+ :enable '(dbgr-get-process)
+ :help (documentation 'dbgr-window-src-undisturb-cmd)
+ ))
+
(define-key menu-map [arrow3]
(dbgr-menu-item menu-map "arrow 3" 'dbgr-goto-arrow3
:enable '(dbgr-get-process)
(progn
;; Add breakpoint to list of breakpoints
(dbgr-cmdbuf-info-bp-list=
- dbgr-cmdbuf-info
(cons loc-or-error (dbgr-sget 'cmdbuf-info 'bp-list)))
;; Set to return location
loc-or-error)))
src-window)
)
+;; (defun dbgr-window-bt-undisturb-src ( &optional opt-buffer switch?)
+;; "Make sure the source buffers is displayed in windows without
+;; disturbing the command window if it is also displayed. Returns
+;; the command window
+;; See also `dbgr-window-src-window'"
+;; (interactive)
+;; (let* ((buffer (or opt-buffer (current-buffer)))
+;; (src-buffer (dbgr-get-srcbuf buffer))
+;; (src-window (get-buffer-window src-buffer))
+;; (cmd-buffer (dbgr-get-cmdbuf buffer))
+;; (cmd-window (get-buffer-window cmd-buffer))
+;; (window (selected-window))
+;; )
+;; (if cmd-buffer
+;; (progn
+;; (unless cmd-window
+;; (setq cmd-window
+;; (if (eq window src-window)
+;; ;; FIXME: generalize what to do here.
+;; (if (one-window? 't)
+;; (split-window)
+;; (next-window window))
+;; window))
+;; (set-window-buffer cmd-window cmd-buffer)
+;; )
+;; (if switch?
+;; (and (select-window cmd-window)
+;; (switch-to-buffer cmd-buffer))))
+
+;; )
+;; src-window)
+;; )
+
;; (defun dbgr-window-src-and-cmd ( &optional opt-buffer )
;; "Make sure the source buffers is displayed in windows without
;; disturbing the command window if it is also displayed. Returns
+;;; Copyright (C) 2011 Rocky Bernstein <rocky@gnu.org>
;; `bashdb' Main interface to bashdb via Emacs
(require 'load-relative)
(require-relative-list '("../../common/helper") "dbgr-")
(progn
(switch-to-buffer cmd-buf)
(bashdb-track-mode 't)
- (dbgr-cmdbuf-info-cmd-args= dbgr-cmdbuf-info cmd-args)
+ (dbgr-cmdbuf-info-cmd-args= cmd-args)
)
(message "Error running bashdb command"))
)))
-;;; Copyright (C) 2010 Rocky Bernstein <rocky@gnu.org>
+;;; Copyright (C) 2010, 2011 Rocky Bernstein <rocky@gnu.org>
;; `dbgr-gdb' Main interface to gdb via Emacs
(require 'load-relative)
(require-relative-list '("../../common/helper") "dbgr-")
(progn
(switch-to-buffer cmd-buf)
(dbgr-gdb-track-mode 't)
- (dbgr-cmdbuf-info-cmd-args= dbgr-cmdbuf-info cmd-args)
+ (dbgr-cmdbuf-info-cmd-args= cmd-args)
)
(message "Error running gdb command"))
)))
+;;; Copyright (C) 2011 Rocky Bernstein <rocky@gnu.org>
;; `kshdb' Main interface to kshdb via Emacs
(require 'load-relative)
(require-relative-list '("../../common/helper") "dbgr-")
(progn
(switch-to-buffer cmd-buf)
(kshdb-track-mode 't)
- (dbgr-cmdbuf-info-cmd-args= dbgr-cmdbuf-info cmd-args)
+ (dbgr-cmdbuf-info-cmd-args= cmd-args)
)
(message "Error running kshdb command"))
)))
(progn
(switch-to-buffer cmd-buf)
(dbgr-perldb-track-mode 't)
- (dbgr-cmdbuf-info-cmd-args= dbgr-cmdbuf-info cmd-args)
+ (dbgr-cmdbuf-info-cmd-args= cmd-args)
)
(message "Error running perldb command"))
)))
-;;; Copyright (C) 2010 Rocky Bernstein <rocky@gnu.org>
+;;; Copyright (C) 2010, 2011 Rocky Bernstein <rocky@gnu.org>
;; `pydbgr' Main interface to pydbgr via Emacs
(require 'load-relative)
(require-relative-list '("../../common/helper"
(progn
(switch-to-buffer cmd-buf)
(pydbgr-track-mode 't)
- (dbgr-cmdbuf-info-cmd-args= dbgr-cmdbuf-info cmd-args)
+ (dbgr-cmdbuf-info-cmd-args= cmd-args)
)
(message "Error running pydbgr command"))
)))
-;;; Copyright (C) 2010 Rocky Bernstein <rocky@gnu.org>
+;;; Copyright (C) 2010, 2011 Rocky Bernstein <rocky@gnu.org>
;; `rdebug' Main interface to rdebug via Emacs
(require 'load-relative)
(require-relative-list '("../../common/helper"
(progn
(switch-to-buffer cmd-buf)
(rdebug-track-mode 't)
- (dbgr-cmdbuf-info-cmd-args= dbgr-cmdbuf-info cmd-args)
+ (dbgr-cmdbuf-info-cmd-args= cmd-args)
)
(message "Error running rdebug command"))
)))
+;;; Copyright (C) 2011 Rocky Bernstein <rocky@gnu.org>
;; `remake' Main interface to remake via Emacs
(require 'load-relative)
(require-relative-list '("../../common/helper") "dbgr-")
(progn
(switch-to-buffer cmd-buf)
(remake-track-mode 't)
- (dbgr-cmdbuf-info-cmd-args= dbgr-cmdbuf-info cmd-args)
+ (dbgr-cmdbuf-info-cmd-args= cmd-args)
)
(message "Error running remake command"))
)))
-;;; Copyright (C) 2010 Rocky Bernstein <rocky@gnu.org>
+;;; Copyright (C) 2010, 2011 Rocky Bernstein <rocky@gnu.org>
;; `trepan' Main interface to trepan via Emacs
(require 'load-relative)
(require-relative-list '("../../common/helper") "dbgr-")
(progn
(switch-to-buffer cmd-buf)
(trepan-track-mode 't)
- (dbgr-cmdbuf-info-cmd-args= dbgr-cmdbuf-info cmd-args)
+ (dbgr-cmdbuf-info-cmd-args= cmd-args)
)
(message "Error running trepan command"))
)))
-;;; Copyright (C) 2010 Rocky Bernstein <rocky@gnu.org>
+;;; Copyright (C) 2010, 2011 Rocky Bernstein <rocky@gnu.org>
;; `trepanx' Main interface to trepanx via Emacs
(require 'load-relative)
(require-relative-list '("../../common/helper") "dbgr-")
(progn
(switch-to-buffer cmd-buf)
(trepanx-track-mode 't)
- (dbgr-cmdbuf-info-cmd-args= dbgr-cmdbuf-info cmd-args)
+ (dbgr-cmdbuf-info-cmd-args= cmd-args)
)
(message "Error running trepanx command"))
)))
+;;; Copyright (C) 2011 Rocky Bernstein <rocky@gnu.org>
;; `zshdb' Main interface to zshdb via Emacs
(require 'load-relative)
(require-relative-list '("../../common/helper") "dbgr-")
(progn
(switch-to-buffer cmd-buf)
(zshdb-track-mode 't)
- (dbgr-cmdbuf-info-cmd-args= dbgr-cmdbuf-info cmd-args)
+ (dbgr-cmdbuf-info-cmd-args= cmd-args)
)
(message "Error running zshdb command"))
)))
(tag dbgr-buf-bt)
(specify "remove buffer stars"
(assert-equal "abc"
- (dbgr-remove-surrounding-stars "*abc*")
+ (dbgr-get-buffer-base-name "*abc*")
)
)
(specify "no buffer stars"
(assert-equal "abc"
- (dbgr-remove-surrounding-stars "*abc*")
+ (dbgr-get-buffer-base-name "abc")
+ )
+ )
+ (specify "remove buffer stars and shell"
+ (assert-equal "abc"
+ (dbgr-get-buffer-base-name "*abc shell*")
)
)
)
(setq temp-cmdbuf (generate-new-buffer "*cmdbuf-test*"))
(assert-t (dbgr-cmdbuf-init temp-cmdbuf "trepan" (gethash "trepan" dbgr-pat-hash)))
(with-current-buffer temp-cmdbuf
- (dbgr-cmdbuf-info-cmd-args= dbgr-cmdbuf-info '("command" "args"))
+ (dbgr-cmdbuf-info-cmd-args= '("command" "args"))
(assert-equal "command args"
(dbgr-cmdbuf-command-string temp-cmdbuf))
(assert-equal "trepan"