diff options
| author | Nick Roberts | 2004-03-06 00:00:21 +0000 |
|---|---|---|
| committer | Nick Roberts | 2004-03-06 00:00:21 +0000 |
| commit | ee96c8385cf436bf308665e5d6c8fb16c761e8e1 (patch) | |
| tree | 1172ba4f0dcaeac62e437b88e48200eb12328c4c | |
| parent | 06884a358348c8d749af980165af50cb382bb314 (diff) | |
| download | emacs-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.el | 42 |
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 | ||
| 1812 | in the current buffer. PUTSTRING is displayed by putting an | ||
| 1813 | overlay into the current buffer with a `before-string' | ||
| 1814 | \"gdb-arrow\" that has a `display' property whose value is | ||
| 1815 | PUTSTRING. 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. | ||
| 1826 | Remove only images that were put in BUFFER with calls to `put-arrow'. | ||
| 1827 | BUFFER 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) |