emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[nongnu] elpa/evil-matchit c04f8f480c 164/244: Match Ruby's begin also w


From: ELPA Syncer
Subject: [nongnu] elpa/evil-matchit c04f8f480c 164/244: Match Ruby's begin also when it's not on the beginning of the line
Date: Thu, 6 Jan 2022 02:58:58 -0500 (EST)

branch: elpa/evil-matchit
commit c04f8f480cbb39842376c5f93472f67f44ee1637
Author: Sergio Gil PĂ©rez de la Manga <sgilperez@gmail.com>
Commit: GitHub <noreply@github.com>

    Match Ruby's begin also when it's not on the beginning of the line
    
    This is a common idiom in Ruby (e.g. 
https://www.justinweiss.com/articles/4-simple-memoization-patterns-in-ruby-and-one-gem/#multi-line-memoization;
 it's even enforced by the popular Rubocop style checker: 
https://rubocop.readthedocs.io/en/stable/cops_style/#stylemultilinememoization) 
but it confuses evil-matchit:
    
    ```ruby
    class C
      def m # evil-matchit keeps jumping between here
        @v ||= begin
                 blah
               end # and here
      end
    end
    ```
    
    Since no regular expression matches, evil-matchit skips the `begin` and 
matches the wrong `end`.
    
    This change seems to fix it, but I'm not sure at all that it's the right 
way. Please consider this more a bug report with a proof of concept more than a 
pull request, you can probably find a better fix :smile_cat:
---
 evil-matchit-ruby.el | 1 +
 1 file changed, 1 insertion(+)

diff --git a/evil-matchit-ruby.el b/evil-matchit-ruby.el
index 45a0bf21a2..9bc408afa5 100644
--- a/evil-matchit-ruby.el
+++ b/evil-matchit-ruby.el
@@ -36,6 +36,7 @@
     ("^[ \t]*\\([a-z]+\\)\\( .*\\| *\\)$" 1)
     ("^.* \\(do\\) |[a-z0-9A-Z_, *]+|$" 1)
     ("^.* \\(do\\) *$" 1)
+    ("^.* \\(begin\\) *$" 1)
     ("^.* \\(end\\)\\..*$" 1)))
 
 (defvar evilmi-ruby-match-tags



reply via email to

[Prev in Thread] Current Thread [Next in Thread]