]> git.eshelyaron.com Git - emacs.git/commitdiff
(get-method-definition, get-method-definition-1): New functions.
authorRichard M. Stallman <rms@gnu.org>
Mon, 8 May 1995 00:45:17 +0000 (00:45 +0000)
committerRichard M. Stallman <rms@gnu.org>
Mon, 8 May 1995 00:45:17 +0000 (00:45 +0000)
(add-log-current-defun): Use them to handle objc-mode.

lisp/add-log.el

index b51d43b41587a566edb62593c6513121f6df0b85..6305de923928e96e9b798d8f6aa2207b093be740 100644 (file)
@@ -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)