diff options
| author | Nick Roberts | 2004-10-23 22:00:48 +0000 |
|---|---|---|
| committer | Nick Roberts | 2004-10-23 22:00:48 +0000 |
| commit | fad137cd631f6a5f3b6ff58540a740444792a1f0 (patch) | |
| tree | 4eb755e3f90b5f606c9f4364376940e461464f1a | |
| parent | 135a6e29d56d5a14828ddb9da74da9fbb1125fc5 (diff) | |
| download | emacs-fad137cd631f6a5f3b6ff58540a740444792a1f0.tar.gz emacs-fad137cd631f6a5f3b6ff58540a740444792a1f0.zip | |
(gdb-get-create-buffer): Allow modes to run
kill-all-local-variables.
(gdb-breakpoints-mode, gdb-frames-mode, gdb-threads-mode)
(gdb-registers-mode, gdb-locals-mode, gdb-assembler-mode): Use
kill-all-local-variables and provide mode-hooks.
(gdb-assembler-font-lock-keywords): New font lock keywords
definition.
(gdb-assembler-mode): Use 'gdb-assembler-font-lock-keywords'.
Suggested by Masatake YAMATO <jet@gyve.org>.
| -rw-r--r-- | lisp/progmodes/gdb-ui.el | 62 |
1 files changed, 45 insertions, 17 deletions
diff --git a/lisp/progmodes/gdb-ui.el b/lisp/progmodes/gdb-ui.el index d8f2cf34867..1cd2a5c9c89 100644 --- a/lisp/progmodes/gdb-ui.el +++ b/lisp/progmodes/gdb-ui.el | |||
| @@ -482,14 +482,14 @@ The key should be one of the cars in `gdb-buffer-rules-assoc'." | |||
| 482 | (name (funcall (gdb-rules-name-maker rules))) | 482 | (name (funcall (gdb-rules-name-maker rules))) |
| 483 | (new (get-buffer-create name))) | 483 | (new (get-buffer-create name))) |
| 484 | (with-current-buffer new | 484 | (with-current-buffer new |
| 485 | ;; FIXME: This should be set after calling the function, since the | 485 | (let ((trigger)) |
| 486 | ;; function should run kill-all-local-variables. | 486 | (if (cdr (cdr rules)) |
| 487 | (set (make-local-variable 'gdb-buffer-type) key) | 487 | (setq trigger (funcall (car (cdr (cdr rules)))))) |
| 488 | (if (cdr (cdr rules)) | 488 | (set (make-local-variable 'gdb-buffer-type) key) |
| 489 | (funcall (car (cdr (cdr rules))))) | 489 | (set (make-local-variable 'gud-minor-mode) |
| 490 | (set (make-local-variable 'gud-minor-mode) | 490 | (with-current-buffer gud-comint-buffer gud-minor-mode)) |
| 491 | (with-current-buffer gud-comint-buffer gud-minor-mode)) | 491 | (set (make-local-variable 'tool-bar-map) gud-tool-bar-map) |
| 492 | (set (make-local-variable 'tool-bar-map) gud-tool-bar-map) | 492 | (if trigger (funcall trigger))) |
| 493 | new)))) | 493 | new)))) |
| 494 | 494 | ||
| 495 | (defun gdb-rules-name-maker (rules) (car (cdr rules))) | 495 | (defun gdb-rules-name-maker (rules) (car (cdr rules))) |
| @@ -1190,13 +1190,15 @@ static char *magick[] = { | |||
| 1190 | "Major mode for gdb breakpoints. | 1190 | "Major mode for gdb breakpoints. |
| 1191 | 1191 | ||
| 1192 | \\{gdb-breakpoints-mode-map}" | 1192 | \\{gdb-breakpoints-mode-map}" |
| 1193 | (kill-all-local-variables) | ||
| 1193 | (setq major-mode 'gdb-breakpoints-mode) | 1194 | (setq major-mode 'gdb-breakpoints-mode) |
| 1194 | (setq mode-name "Breakpoints") | 1195 | (setq mode-name "Breakpoints") |
| 1195 | (use-local-map gdb-breakpoints-mode-map) | 1196 | (use-local-map gdb-breakpoints-mode-map) |
| 1196 | (setq buffer-read-only t) | 1197 | (setq buffer-read-only t) |
| 1198 | (run-mode-hooks 'gdb-breakpoints-mode-hook) | ||
| 1197 | (if (with-current-buffer gud-comint-buffer (eq gud-minor-mode 'gdba)) | 1199 | (if (with-current-buffer gud-comint-buffer (eq gud-minor-mode 'gdba)) |
| 1198 | (gdb-invalidate-breakpoints) | 1200 | 'gdb-invalidate-breakpoints |
| 1199 | (gdbmi-invalidate-breakpoints))) | 1201 | 'gdbmi-invalidate-breakpoints)) |
| 1200 | 1202 | ||
| 1201 | (defun gdb-toggle-breakpoint () | 1203 | (defun gdb-toggle-breakpoint () |
| 1202 | "Enable/disable the breakpoint at current line." | 1204 | "Enable/disable the breakpoint at current line." |
| @@ -1317,14 +1319,16 @@ static char *magick[] = { | |||
| 1317 | "Major mode for gdb frames. | 1319 | "Major mode for gdb frames. |
| 1318 | 1320 | ||
| 1319 | \\{gdb-frames-mode-map}" | 1321 | \\{gdb-frames-mode-map}" |
| 1322 | (kill-all-local-variables) | ||
| 1320 | (setq major-mode 'gdb-frames-mode) | 1323 | (setq major-mode 'gdb-frames-mode) |
| 1321 | (setq mode-name "Frames") | 1324 | (setq mode-name "Frames") |
| 1322 | (setq buffer-read-only t) | 1325 | (setq buffer-read-only t) |
| 1323 | (use-local-map gdb-frames-mode-map) | 1326 | (use-local-map gdb-frames-mode-map) |
| 1324 | (font-lock-mode -1) | 1327 | (font-lock-mode -1) |
| 1328 | (run-mode-hooks 'gdb-frames-mode-hook) | ||
| 1325 | (if (with-current-buffer gud-comint-buffer (eq gud-minor-mode 'gdba)) | 1329 | (if (with-current-buffer gud-comint-buffer (eq gud-minor-mode 'gdba)) |
| 1326 | (gdb-invalidate-frames) | 1330 | 'gdb-invalidate-frames |
| 1327 | (gdbmi-invalidate-frames))) | 1331 | 'gdbmi-invalidate-frames)) |
| 1328 | 1332 | ||
| 1329 | (defun gdb-get-frame-number () | 1333 | (defun gdb-get-frame-number () |
| 1330 | (save-excursion | 1334 | (save-excursion |
| @@ -1396,11 +1400,13 @@ static char *magick[] = { | |||
| 1396 | "Major mode for gdb frames. | 1400 | "Major mode for gdb frames. |
| 1397 | 1401 | ||
| 1398 | \\{gdb-threads-mode-map}" | 1402 | \\{gdb-threads-mode-map}" |
| 1403 | (kill-all-local-variables) | ||
| 1399 | (setq major-mode 'gdb-threads-mode) | 1404 | (setq major-mode 'gdb-threads-mode) |
| 1400 | (setq mode-name "Threads") | 1405 | (setq mode-name "Threads") |
| 1401 | (setq buffer-read-only t) | 1406 | (setq buffer-read-only t) |
| 1402 | (use-local-map gdb-threads-mode-map) | 1407 | (use-local-map gdb-threads-mode-map) |
| 1403 | (gdb-invalidate-threads)) | 1408 | (run-mode-hooks 'gdb-threads-mode-hook) |
| 1409 | 'gdb-invalidate-threads) | ||
| 1404 | 1410 | ||
| 1405 | (defun gdb-get-thread-number () | 1411 | (defun gdb-get-thread-number () |
| 1406 | (save-excursion | 1412 | (save-excursion |
| @@ -1444,11 +1450,13 @@ static char *magick[] = { | |||
| 1444 | "Major mode for gdb registers. | 1450 | "Major mode for gdb registers. |
| 1445 | 1451 | ||
| 1446 | \\{gdb-registers-mode-map}" | 1452 | \\{gdb-registers-mode-map}" |
| 1453 | (kill-all-local-variables) | ||
| 1447 | (setq major-mode 'gdb-registers-mode) | 1454 | (setq major-mode 'gdb-registers-mode) |
| 1448 | (setq mode-name "Registers") | 1455 | (setq mode-name "Registers") |
| 1449 | (setq buffer-read-only t) | 1456 | (setq buffer-read-only t) |
| 1450 | (use-local-map gdb-registers-mode-map) | 1457 | (use-local-map gdb-registers-mode-map) |
| 1451 | (gdb-invalidate-registers)) | 1458 | (run-mode-hooks 'gdb-registers-mode-hook) |
| 1459 | 'gdb-invalidate-registers) | ||
| 1452 | 1460 | ||
| 1453 | (defun gdb-registers-buffer-name () | 1461 | (defun gdb-registers-buffer-name () |
| 1454 | (with-current-buffer gud-comint-buffer | 1462 | (with-current-buffer gud-comint-buffer |
| @@ -1518,13 +1526,15 @@ static char *magick[] = { | |||
| 1518 | "Major mode for gdb locals. | 1526 | "Major mode for gdb locals. |
| 1519 | 1527 | ||
| 1520 | \\{gdb-locals-mode-map}" | 1528 | \\{gdb-locals-mode-map}" |
| 1529 | (kill-all-local-variables) | ||
| 1521 | (setq major-mode 'gdb-locals-mode) | 1530 | (setq major-mode 'gdb-locals-mode) |
| 1522 | (setq mode-name (concat "Locals:" gdb-current-frame)) | 1531 | (setq mode-name (concat "Locals:" gdb-current-frame)) |
| 1523 | (setq buffer-read-only t) | 1532 | (setq buffer-read-only t) |
| 1524 | (use-local-map gdb-locals-mode-map) | 1533 | (use-local-map gdb-locals-mode-map) |
| 1534 | (run-mode-hooks 'gdb-locals-mode-hook) | ||
| 1525 | (if (with-current-buffer gud-comint-buffer (eq gud-minor-mode 'gdba)) | 1535 | (if (with-current-buffer gud-comint-buffer (eq gud-minor-mode 'gdba)) |
| 1526 | (gdb-invalidate-locals) | 1536 | 'gdb-invalidate-locals |
| 1527 | (gdbmi-invalidate-locals))) | 1537 | 'gdbmi-invalidate-locals)) |
| 1528 | 1538 | ||
| 1529 | (defun gdb-locals-buffer-name () | 1539 | (defun gdb-locals-buffer-name () |
| 1530 | (with-current-buffer gud-comint-buffer | 1540 | (with-current-buffer gud-comint-buffer |
| @@ -1939,10 +1949,24 @@ BUFFER nil or omitted means use the current buffer." | |||
| 1939 | (suppress-keymap map) | 1949 | (suppress-keymap map) |
| 1940 | map)) | 1950 | map)) |
| 1941 | 1951 | ||
| 1952 | (defvar gdb-assembler-font-lock-keywords | ||
| 1953 | '(("[^\$]0x[0-9a-f]+" . font-lock-constant-face) | ||
| 1954 | ("^\\(0x*[0-9a-f]+\\) ?\\(<\\(\\sw+\\)\\+[0-9]+>\\)?:[ \t]+\\(\\sw+\\)" | ||
| 1955 | (1 font-lock-constant-face) | ||
| 1956 | (3 font-lock-function-name-face) | ||
| 1957 | (4 font-lock-keyword-face)) | ||
| 1958 | ("%\\sw+" . font-lock-variable-name-face) | ||
| 1959 | ("^\\(Dump of assembler code for function\\) \\(.+\\):" | ||
| 1960 | (1 font-lock-comment-face) | ||
| 1961 | (2 font-lock-function-name-face)) | ||
| 1962 | ("^\\(End of assembler dump\\.\\)" . font-lock-comment-face)) | ||
| 1963 | "Font lock keywords used in `gdb-assembler-mode'.") | ||
| 1964 | |||
| 1942 | (defun gdb-assembler-mode () | 1965 | (defun gdb-assembler-mode () |
| 1943 | "Major mode for viewing code assembler. | 1966 | "Major mode for viewing code assembler. |
| 1944 | 1967 | ||
| 1945 | \\{gdb-assembler-mode-map}" | 1968 | \\{gdb-assembler-mode-map}" |
| 1969 | (kill-all-local-variables) | ||
| 1946 | (setq major-mode 'gdb-assembler-mode) | 1970 | (setq major-mode 'gdb-assembler-mode) |
| 1947 | (setq mode-name "Machine") | 1971 | (setq mode-name "Machine") |
| 1948 | (setq gdb-overlay-arrow-position nil) | 1972 | (setq gdb-overlay-arrow-position nil) |
| @@ -1951,7 +1975,11 @@ BUFFER nil or omitted means use the current buffer." | |||
| 1951 | (setq fringes-outside-margins t) | 1975 | (setq fringes-outside-margins t) |
| 1952 | (setq buffer-read-only t) | 1976 | (setq buffer-read-only t) |
| 1953 | (use-local-map gdb-assembler-mode-map) | 1977 | (use-local-map gdb-assembler-mode-map) |
| 1954 | (gdb-invalidate-assembler)) | 1978 | (gdb-invalidate-assembler) |
| 1979 | (set (make-local-variable 'font-lock-defaults) | ||
| 1980 | '(gdb-assembler-font-lock-keywords)) | ||
| 1981 | (run-mode-hooks 'gdb-assembler-mode-hook) | ||
| 1982 | 'gdb-invalidate-assembler) | ||
| 1955 | 1983 | ||
| 1956 | (defun gdb-assembler-buffer-name () | 1984 | (defun gdb-assembler-buffer-name () |
| 1957 | (with-current-buffer gud-comint-buffer | 1985 | (with-current-buffer gud-comint-buffer |