]> code.delx.au - gnu-emacs-elpa/blob - packages/realgud/realgud/common/attach.el
32734b09ff06025228d06699dcd93c8aa1fddbfe
[gnu-emacs-elpa] / packages / realgud / realgud / common / attach.el
1 ;;; Copyright (C) 2014 Rocky Bernstein <rocky@gnu.org>
2 ;;; Emacs Commands to associate or attach a source buffer to a command
3 ;;; buffer and vice versa.
4
5 (eval-when-compile (require 'cl))
6 (require 'load-relative)
7 (require-relative-list '("buffer/command" "buffer/source")
8 "realgud-buffer-")
9 (require-relative-list '("shortkey") "realgud-")
10
11 (declare-function realgud-cmdbuf-add-srcbuf 'realgud-buffer-command)
12 (declare-function realgud-cmdbuf? 'realgud-buffer-command)
13 (declare-function realgud-srcbuf-init-or-update 'realgud-source)
14 (declare-function realgud-short-key-mode-setup 'realgud-shortkey)
15
16 (defun realgud:attach-source-buffer(srcbuf)
17 "Associate a source buffer with the current command buffer"
18 (interactive "bsource buffer: ")
19 (unless (realgud-cmdbuf?)
20 (error "The command only works inside a command buffer"))
21 (unless (get-buffer-process (current-buffer))
22 (warn "Can't find a process for command buffer %s" (current-buffer)))
23
24 (let* ((cmdbuf (current-buffer))
25 (shortkey-mode? (realgud-sget 'cmdbuf-info 'src-shortkey?)))
26 (if (stringp srcbuf) (setq srcbuf (get-buffer srcbuf)))
27 (realgud-cmdbuf-add-srcbuf srcbuf)
28 (realgud-srcbuf-init-or-update srcbuf cmdbuf)
29 (if shortkey-mode?
30 (with-current-buffer srcbuf
31 (realgud-short-key-mode-setup 't))
32 )
33 )
34 )
35
36 (defun realgud:attach-command-buffer(cmdbuf)
37 "Associate a command buffer with the current source buffer"
38
39 (interactive "bcommand buffer: ")
40 (if (stringp cmdbuf) (setq cmdbuf (get-buffer cmdbuf)))
41 (let* ((srcbuf (current-buffer))
42 (shortkey-mode?))
43 (with-current-buffer cmdbuf
44 (unless (realgud-cmdbuf?)
45 (error "The buffer is not a command buffer"))
46 (unless (get-buffer-process (current-buffer))
47 (warn "Can't find a process for command buffer %s" (current-buffer)))
48 (setq shortkey-mode? (realgud-sget 'cmdbuf-info 'src-shortkey?)))
49 (realgud-cmdbuf-add-srcbuf srcbuf)
50 (realgud-srcbuf-init-or-update srcbuf cmdbuf)
51 (if shortkey-mode? (realgud-short-key-mode-setup 't)))
52 )
53
54 (provide-me "realgud-")