summaryrefslogtreecommitdiff
path: root/lisp/add-log.el
diff options
context:
space:
mode:
authorRichard M. Stallman <rms@gnu.org>1995-05-08 00:45:17 +0000
committerRichard M. Stallman <rms@gnu.org>1995-05-08 00:45:17 +0000
commit2bb1ddb7af1462429ccbab40de1a45e947df38ae (patch)
tree3b23eb20c91d00613f665c75cf39c97c2276d360 /lisp/add-log.el
parentb6db8331aebe97d9ed2241000457783faf79a7e1 (diff)
downloademacs-2bb1ddb7af1462429ccbab40de1a45e947df38ae.tar.gz
(get-method-definition, get-method-definition-1): New functions.
(add-log-current-defun): Use them to handle objc-mode.
Diffstat (limited to 'lisp/add-log.el')
-rw-r--r--lisp/add-log.el27
1 files changed, 27 insertions, 0 deletions
diff --git a/lisp/add-log.el b/lisp/add-log.el
index b51d43b4158..6305de92392 100644
--- a/lisp/add-log.el
+++ b/lisp/add-log.el
@@ -349,6 +349,8 @@ Has a preference of looking backwards."
(skip-chars-forward " \t")
(buffer-substring (point)
(progn (forward-sexp 1) (point))))
+ ((and (eq major-mode 'objc-mode)
+ (get-method-definition)))
((memq major-mode '(c-mode c++-mode c++-c-mode))
(beginning-of-line)
;; See if we are in the beginning part of a function,
@@ -471,6 +473,31 @@ Has a preference of looking backwards."
(match-end 1))))))))
(error nil)))
+;; Subroutine used within get-method-definition.
+;; Add the last match in the buffer to the end of `md',
+;; followed by the string END; move to the end of that match.
+(defun get-method-definition-1 (end)
+ (setq md (concat md
+ (buffer-substring (match-beginning 1) (match-end 1))
+ end))
+ (goto-char (match-end 0)))
+
+;; For objective C, return the method name if we are in a method.
+(defun get-method-definition ()
+ (let ((md "["))
+ (save-excursion
+ (if (re-search-backward "^@implementation \\(.*\\)$" nil t)
+ (get-method-definition-1 " ")))
+ (save-excursion
+ (cond
+ ((re-search-backward "^\\([-+]\\)[ \t\n\f\r]*\\(([^)]*)\\)?" nil t)
+ (get-method-definition-1 "")
+ (while (not (looking-at "[{;]"))
+ (looking-at
+ "\\([^ ;{:\t\n\f\r]*:?\\)\\(([^)]*)\\)?[^ ;{:\t\n\f\r]*[ \t\n\f\r]*")
+ (get-method-definition-1 ""))
+ (concat md "]"))))))
+
(provide 'add-log)