changeset 74911:4ddd2af6dc19

(add-log-current-defun): Call `forward-sexp' multiple times to pick a member function name defined as part of nested classes/namespaces.
author Masatake YAMATO <jet@gyve.org>
date Tue, 26 Dec 2006 03:53:04 +0000
parents 776a7e3c21a0
children 4c1d868b634b
files lisp/ChangeLog lisp/add-log.el
diffstat 2 files changed, 20 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Tue Dec 26 03:26:14 2006 +0000
+++ b/lisp/ChangeLog	Tue Dec 26 03:53:04 2006 +0000
@@ -1,3 +1,9 @@
+2006-12-26  Guanpeng Xu  <herberteuler@hotmail.com> (tiny change)
+
+	* add-log.el (add-log-current-defun): Call `forward-sexp'
+	multiple times to pick a member function name defined as
+	part of nested classes/namespaces.
+
 2006-12-26  Vinicius Jose Latorre  <viniciusjl@ig.com.br>
 
 	* emacs-lisp/easymenu.el (easy-menu-change): New arg MAP to indicate
@@ -2959,7 +2965,7 @@
 
 	* add-log.el (add-log-current-defun): Use `forward-sexp'
 	instead of `forward-word' to pick c++::symbol.
-	Reported by Herbert Euler <herberteuler@hotmail.com>.
+	Reported by Guanpeng Xu <herberteuler@hotmail.com>.
 
 2006-09-22  Kenichi Handa  <handa@m17n.org>
 
--- a/lisp/add-log.el	Tue Dec 26 03:26:14 2006 +0000
+++ b/lisp/add-log.el	Tue Dec 26 03:53:04 2006 +0000
@@ -916,7 +916,19 @@
 			       ;; Include certain keywords if they
 			       ;; precede the name.
 			       (setq middle (point))
-			       (forward-sexp -1)
+			       ;; Single (forward-sexp -1) invocation is
+			       ;; not enough for C++ member function defined 
+			       ;; as part of nested class and/or namespace 
+			       ;; like:
+			       ;;
+			       ;;   void 
+			       ;;   foo::bar::baz::bazz ()
+			       ;;   { ...
+			       ;; 
+			       ;; Here we have to move the point to 
+			       ;; the beginning of foo, not bazz.
+			       (while (not (looking-back "\\(^\\|[ \t]\\)"))
+				 (forward-sexp -1))
 			       ;; Is this C++ method?
 			       (when (and (< 2 middle)
 					  (string= (buffer-substring (- middle 2)