aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNick Roberts2004-03-06 00:00:21 +0000
committerNick Roberts2004-03-06 00:00:21 +0000
commitee96c8385cf436bf308665e5d6c8fb16c761e8e1 (patch)
tree1172ba4f0dcaeac62e437b88e48200eb12328c4c
parent06884a358348c8d749af980165af50cb382bb314 (diff)
downloademacs-ee96c8385cf436bf308665e5d6c8fb16c761e8e1.tar.gz
emacs-ee96c8385cf436bf308665e5d6c8fb16c761e8e1.zip
(gdb-assembler-mode): Create a second overlay arrow
for the assembler buffer. (gdb-assembler-custom): Position the overlay arrow. (gdb-put-arrow, gdb-remove-arrow): Delete functions.
-rw-r--r--lisp/gdb-ui.el42
1 files changed, 11 insertions, 31 deletions
diff --git a/lisp/gdb-ui.el b/lisp/gdb-ui.el
index eea22fcf4af..85b03fbce40 100644
--- a/lisp/gdb-ui.el
+++ b/lisp/gdb-ui.el
@@ -1807,32 +1807,6 @@ BUFFER nil or omitted means use the current buffer."
1807 left-margin-width 1807 left-margin-width
1808 right-margin-width)))) 1808 right-margin-width))))
1809 1809
1810(defun gdb-put-arrow (putstring pos)
1811 "Put arrow string PUTSTRING in the left margin in front of POS
1812in the current buffer. PUTSTRING is displayed by putting an
1813overlay into the current buffer with a `before-string'
1814\"gdb-arrow\" that has a `display' property whose value is
1815PUTSTRING. POS may be an integer or marker."
1816 (let ((gdb-string "gdb-arrow")
1817 (buffer (current-buffer)))
1818 (let ((overlay (make-overlay pos pos buffer))
1819 (prop (list (list 'margin 'left-margin) putstring)))
1820 (put-text-property 0 (length gdb-string) 'display prop gdb-string)
1821 (overlay-put overlay 'put-arrow t)
1822 (overlay-put overlay 'before-string gdb-string))))
1823
1824(defun gdb-remove-arrow (&optional buffer)
1825 "Remove arrow in BUFFER.
1826Remove only images that were put in BUFFER with calls to `put-arrow'.
1827BUFFER nil or omitted means use the current buffer."
1828 (unless buffer
1829 (setq buffer (current-buffer)))
1830 (let ((overlays (overlays-in (point-min) (point-max))))
1831 (while overlays
1832 (let ((overlay (car overlays)))
1833 (when (overlay-get overlay 'put-arrow)
1834 (delete-overlay overlay)))
1835 (setq overlays (cdr overlays)))))
1836 1810
1837;; 1811;;
1838;; Assembler buffer. 1812;; Assembler buffer.
@@ -1849,16 +1823,20 @@ BUFFER nil or omitted means use the current buffer."
1849 1823
1850(defun gdb-assembler-custom () 1824(defun gdb-assembler-custom ()
1851 (let ((buffer (gdb-get-buffer 'gdb-assembler-buffer)) 1825 (let ((buffer (gdb-get-buffer 'gdb-assembler-buffer))
1852 (gdb-arrow-position 1) (address) (flag)) 1826 (pos 1) (address) (flag))
1853 (with-current-buffer buffer 1827 (with-current-buffer buffer
1854 (if (not (equal gdb-current-address "main")) 1828 (if (not (equal gdb-current-address "main"))
1855 (progn 1829 (progn
1856 (gdb-remove-arrow)
1857 (goto-char (point-min)) 1830 (goto-char (point-min))
1858 (if (re-search-forward gdb-current-address nil t) 1831 (if (re-search-forward gdb-current-address nil t)
1859 (progn 1832 (progn
1860 (setq gdb-arrow-position (point)) 1833 (setq pos (point))
1861 (gdb-put-arrow "=>" (point)))))) 1834 (setq gdb-overlay-arrow-string "=>")
1835 (beginning-of-line)
1836 (or gdb-overlay-arrow-position
1837 (setq gdb-overlay-arrow-position (make-marker)))
1838 (set-marker gdb-overlay-arrow-position
1839 (point) (current-buffer))))))
1862 ;; remove all breakpoint-icons in assembler buffer before updating. 1840 ;; remove all breakpoint-icons in assembler buffer before updating.
1863 (gdb-remove-breakpoint-icons (point-min) (point-max))) 1841 (gdb-remove-breakpoint-icons (point-min) (point-max)))
1864 (with-current-buffer (gdb-get-buffer 'gdb-breakpoints-buffer) 1842 (with-current-buffer (gdb-get-buffer 'gdb-breakpoints-buffer)
@@ -1879,7 +1857,7 @@ BUFFER nil or omitted means use the current buffer."
1879 (if (re-search-forward address nil t) 1857 (if (re-search-forward address nil t)
1880 (gdb-put-breakpoint-icon (eq flag ?y)))))))) 1858 (gdb-put-breakpoint-icon (eq flag ?y))))))))
1881 (if (not (equal gdb-current-address "main")) 1859 (if (not (equal gdb-current-address "main"))
1882 (set-window-point (get-buffer-window buffer) gdb-arrow-position)))) 1860 (set-window-point (get-buffer-window buffer) pos))))
1883 1861
1884(defvar gdb-assembler-mode-map 1862(defvar gdb-assembler-mode-map
1885 (let ((map (make-sparse-keymap))) 1863 (let ((map (make-sparse-keymap)))
@@ -1892,6 +1870,8 @@ BUFFER nil or omitted means use the current buffer."
1892\\{gdb-assembler-mode-map}" 1870\\{gdb-assembler-mode-map}"
1893 (setq major-mode 'gdb-assembler-mode) 1871 (setq major-mode 'gdb-assembler-mode)
1894 (setq mode-name "Machine") 1872 (setq mode-name "Machine")
1873 (push 'gdb-overlay-arrow-position overlay-arrow-variable-list)
1874 (setq gdb-overlay-arrow-position nil)
1895 (setq fringes-outside-margins t) 1875 (setq fringes-outside-margins t)
1896 (setq buffer-read-only t) 1876 (setq buffer-read-only t)
1897 (use-local-map gdb-assembler-mode-map) 1877 (use-local-map gdb-assembler-mode-map)