;; here is the position after the final }.
(backward-sexp 1)
(forward-sexp 1)
+ ;; Skip the semicolon ``;'' for
+ ;; enum/union/struct/class definition.
+ (if (= (char-after (point)) ?\;)
+ (forward-char 1))
(setq previous-defun-end (point)))
(save-excursion
;; Include certain keywords if they
;; precede the name.
(setq middle (point))
- ;; 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))
+ ;; We tried calling `forward-sexp' in a loop
+ ;; but it causes inconsistency for C names.
+ (forward-sexp -1)
;; Is this C++ method?
(when (and (< 2 middle)
(string= (buffer-substring (- middle 2)