From 339a559e5e1161a73f53987c5581c4af7c31c724 Mon Sep 17 00:00:00 2001 From: Nick Roberts Date: Mon, 15 Sep 2003 19:14:00 +0000 Subject: [PATCH] (gud-find-class): Make jdb work again since cc-mode changed the syntactic information. --- lisp/progmodes/gud.el | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/lisp/progmodes/gud.el b/lisp/progmodes/gud.el index 4ec58d3eeee..b4fdc682e6f 100644 --- a/lisp/progmodes/gud.el +++ b/lisp/progmodes/gud.el @@ -2817,8 +2817,13 @@ class of the file (using s to separate nested class ids)." (save-match-data (let ((cplist (append gud-jdb-sourcepath gud-jdb-classpath)) (fbuffer (get-file-buffer f)) - class-found) + syntax-symbol syntax-point class-found) (setq f (file-name-sans-extension (file-truename f))) + ;; Syntax-symbol returns the symbol of the *first* element + ;; in the syntactical analysis result list, syntax-point + ;; returns the buffer position of same + (fset 'syntax-symbol (lambda (x) (c-langelem-sym (car x)))) + (fset 'syntax-point (lambda (x) (c-langelem-pos (car x)))) ;; Search through classpath list for an entry that is ;; contained in f (while (and cplist (not class-found)) @@ -2841,17 +2846,17 @@ class of the file (using s to separate nested class ids)." ;; with the 'topmost-intro symbol, there may be ;; nested classes... (while (not (eq 'topmost-intro - (car (car (c-guess-basic-syntax))))) + (syntax-symbol (c-guess-basic-syntax)))) ;; Check if the current position c-syntactic ;; analysis has 'inclass (setq syntax (c-guess-basic-syntax)) (while - (and (not (eq 'inclass (car (car syntax)))) + (and (not (eq 'inclass (syntax-symbol syntax))) (cdr syntax)) (setq syntax (cdr syntax))) - (if (eq 'inclass (car (car syntax))) + (if (eq 'inclass (syntax-symbol syntax)) (progn - (goto-char (cdr (car syntax))) + (goto-char (syntax-point syntax)) ;; Now we're at the beginning of a class ;; definition. Find class name (looking-at @@ -2860,9 +2865,9 @@ class of the file (using s to separate nested class ids)." (append (list (match-string-no-properties 1)) nclass))) (setq syntax (c-guess-basic-syntax)) - (while (and (not (cdr (car syntax))) (cdr syntax)) + (while (and (not (syntax-point syntax)) (cdr syntax)) (setq syntax (cdr syntax))) - (goto-char (cdr (car syntax))) + (goto-char (syntax-point syntax)) )) (string-match (concat (car nclass) "$") class-found) (setq class-found -- 2.39.2