aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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)