From: Alan Mackenzie Date: Fri, 17 Oct 2008 20:24:45 +0000 (+0000) Subject: (c-defun-name): Make it work for "struct foo bar [] = { ...". X-Git-Tag: emacs-pretest-23.0.90~2422 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=4588b317cd404fde304ed3b61001c40277fb4342;p=emacs.git (c-defun-name): Make it work for "struct foo bar [] = { ...". --- diff --git a/lisp/progmodes/cc-cmds.el b/lisp/progmodes/cc-cmds.el index 8a51ca81cfa..8e7df4c95a6 100644 --- a/lisp/progmodes/cc-cmds.el +++ b/lisp/progmodes/cc-cmds.el @@ -1704,17 +1704,16 @@ with a brace block." ;; Pick out the defun name, according to the type of defun. (cond + ;; struct, union, enum, or similar: ((and (looking-at c-type-prefix-key) (progn (c-forward-token-2 2) ; over "struct foo " - (eq (char-after) ?\{))) - ;; struct, union, enum, or similar: - (c-backward-syntactic-ws) - (setq name-end (point)) - (buffer-substring-no-properties - (progn - (c-backward-token-2 2) - (point)) - name-end)) + (or (eq (char-after) ?\{) + (looking-at c-symbol-key)))) ; "struct foo bar ..." + (save-match-data (c-forward-token-2)) + (when (eq (char-after) ?\{) + (c-backward-token-2) + (looking-at c-symbol-key)) + (match-string-no-properties 0)) ((looking-at "DEFUN\\_>") ;; DEFUN ("file-name-directory", Ffile_name_directory, Sfile_name_directory, ...) ==> Ffile_name_directory