]> git.eshelyaron.com Git - emacs.git/commitdiff
ruby-add-log-current-method: Support methods with symbolic names
authorDmitry Gutov <dgutov@yandex.ru>
Mon, 4 Jan 2021 19:13:33 +0000 (21:13 +0200)
committerDmitry Gutov <dgutov@yandex.ru>
Mon, 4 Jan 2021 19:13:53 +0000 (21:13 +0200)
* lisp/progmodes/ruby-mode.el (ruby-add-log-current-method):
Support methods with symbolic names.

lisp/progmodes/ruby-mode.el
test/lisp/progmodes/ruby-mode-tests.el

index 3effb6ed66288011208c9c49224f705f1d4a9357..cd9d087856ceab582e8cb5d78c49bc7ea2ad0a09 100644 (file)
@@ -1598,13 +1598,16 @@ See `add-log-current-defun-function'."
         (let* ((indent 0) mname mlist
                (start (point))
                (make-definition-re
-                (lambda (re)
+                (lambda (re &optional method-name?)
                   (concat "^[ \t]*" re "[ \t]+"
                           "\\("
                           ;; \\. and :: for class methods
-                          "\\([A-Za-z_]" ruby-symbol-re "*[?!]?\\|\\.\\|::" "\\)"
+                          "\\([A-Za-z_]" ruby-symbol-re "*[?!]?"
+                          (when method-name? "\\|")
+                          (when method-name? ruby-operator-re)
+                          "\\|\\.\\|::" "\\)"
                           "+\\)")))
-               (definition-re (funcall make-definition-re ruby-defun-beg-re))
+               (definition-re (funcall make-definition-re ruby-defun-beg-re t))
                (module-re (funcall make-definition-re "\\(class\\|module\\)")))
           ;; Get the current method definition (or class/module).
           (when (re-search-backward definition-re nil t)
index 67b592e9070b64ab49a3db3879bcb19f7d65e263..42a011c8bcd16880ed9b1eafd5d5067d91061c02 100644 (file)
@@ -497,7 +497,8 @@ VALUES-PLIST is a list with alternating index and value elements."
 (ert-deftest ruby-add-log-current-method-examples ()
   (let ((pairs '(("foo" . "#foo")
                  ("C.foo" . ".foo")
-                 ("self.foo" . ".foo"))))
+                 ("self.foo" . ".foo")
+                 ("<<" . "#<<"))))
     (dolist (pair pairs)
       (let ((name  (car pair))
             (value (cdr pair)))