# HG changeset patch # User Nick Roberts # Date 1114639183 0 # Node ID aa748999b8b87e1d074facd0c75b6987a1cdac61 # Parent 4905bdafc798474e0bc8d84deacb9334a67741dd (cc-create-define-alist): New function. (cc-define-alist): New variable. (c-mode): Make it local and set it. diff -r 4905bdafc798 -r aa748999b8b8 lisp/progmodes/cc-mode.el --- a/lisp/progmodes/cc-mode.el Wed Apr 27 21:57:26 2005 +0000 +++ b/lisp/progmodes/cc-mode.el Wed Apr 27 21:59:43 2005 +0000 @@ -639,6 +639,21 @@ ;;;###autoload (add-to-list 'auto-mode-alist '("\\.y\\(acc\\)?\\'" . c-mode)) ;;;###autoload (add-to-list 'auto-mode-alist '("\\.lex\\'" . c-mode)) +(defvar cc-define-alist nil "Alist of #define directives for GUD tooltips.") + +(defun cc-create-define-alist () + (let* ((file (buffer-file-name)) + (output + (with-output-to-string + (with-current-buffer standard-output + (call-process "/lib/cpp" + file t nil "-dM")))) + (define-list (split-string output "\n" t)) + (name)) + (dolist (define define-list) + (setq name (nth 1 (split-string define "[( ]"))) + (push (cons name define) cc-define-alist)))) + ;;;###autoload (defun c-mode () "Major mode for editing K&R and ANSI C code. @@ -662,11 +677,13 @@ mode-name "C" local-abbrev-table c-mode-abbrev-table abbrev-mode t) + (make-local-variable 'cc-define-alist) (use-local-map c-mode-map) (c-init-language-vars-for 'c-mode) (c-common-init 'c-mode) (easy-menu-add c-c-menu) (cc-imenu-init cc-imenu-c-generic-expression) + (cc-create-define-alist) (run-mode-hooks 'c-mode-common-hook 'c-mode-hook) (c-update-modeline))