diff options
| author | Dmitry Gutov | 2012-09-07 09:06:05 +0400 |
|---|---|---|
| committer | Dmitry Gutov | 2012-09-07 09:06:05 +0400 |
| commit | 8f06accefa669c323731525946eeaef4a3decf6d (patch) | |
| tree | 5816045f934587b2dd1923d06f89813da2d44aef /lisp | |
| parent | 74c582e64c6b14545fd4188a604e313cbe56a89f (diff) | |
| download | emacs-8f06accefa669c323731525946eeaef4a3decf6d.tar.gz emacs-8f06accefa669c323731525946eeaef4a3decf6d.zip | |
* lisp/progmodes/ruby-mode.el
(ruby-beginning-of-defun): Only consider 3 keywords defun beginners.
(ruby-end-of-defun): Expect that the point is at the beginning of
the defun.
Diffstat (limited to 'lisp')
| -rw-r--r-- | lisp/ChangeLog | 3 | ||||
| -rw-r--r-- | lisp/progmodes/ruby-mode.el | 15 |
2 files changed, 12 insertions, 6 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 219fd382e50..179d5be11ca 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog | |||
| @@ -8,6 +8,9 @@ | |||
| 8 | * progmodes/ruby-mode.el (ruby-end-of-defun) | 8 | * progmodes/ruby-mode.el (ruby-end-of-defun) |
| 9 | (ruby-beginning-of-defun): Simplify, allow indentation before | 9 | (ruby-beginning-of-defun): Simplify, allow indentation before |
| 10 | block beginning and end keywords. | 10 | block beginning and end keywords. |
| 11 | (ruby-beginning-of-defun): Only consider 3 keywords defun beginners. | ||
| 12 | (ruby-end-of-defun): Expect that the point is at the beginning of | ||
| 13 | the defun. | ||
| 11 | 14 | ||
| 12 | 2012-09-06 Stefan Monnier <monnier@iro.umontreal.ca> | 15 | 2012-09-06 Stefan Monnier <monnier@iro.umontreal.ca> |
| 13 | 16 | ||
diff --git a/lisp/progmodes/ruby-mode.el b/lisp/progmodes/ruby-mode.el index e8e6b3dbaef..ef1daa5e936 100644 --- a/lisp/progmodes/ruby-mode.el +++ b/lisp/progmodes/ruby-mode.el | |||
| @@ -98,6 +98,10 @@ | |||
| 98 | 98 | ||
| 99 | (defconst ruby-block-end-re "\\_<end\\_>") | 99 | (defconst ruby-block-end-re "\\_<end\\_>") |
| 100 | 100 | ||
| 101 | (defconst ruby-defun-beg-re | ||
| 102 | '"\\(def\\|class\\|module\\)" | ||
| 103 | "Regexp to match the beginning of a defun, in the general sense.") | ||
| 104 | |||
| 101 | (eval-and-compile | 105 | (eval-and-compile |
| 102 | (defconst ruby-here-doc-beg-re | 106 | (defconst ruby-here-doc-beg-re |
| 103 | "\\(<\\)<\\(-\\)?\\(\\([a-zA-Z0-9_]+\\)\\|[\"]\\([^\"]+\\)[\"]\\|[']\\([^']+\\)[']\\)" | 107 | "\\(<\\)<\\(-\\)?\\(\\([a-zA-Z0-9_]+\\)\\|[\"]\\([^\"]+\\)[\"]\\|[']\\([^']+\\)[']\\)" |
| @@ -833,13 +837,12 @@ and `\\' when preceded by `?'." | |||
| 833 | (+ indent ruby-indent-level) | 837 | (+ indent ruby-indent-level) |
| 834 | indent)))) | 838 | indent)))) |
| 835 | 839 | ||
| 836 | ;; TODO: Why isn't one ruby-*-of-defun written in terms of the other? | ||
| 837 | (defun ruby-beginning-of-defun (&optional arg) | 840 | (defun ruby-beginning-of-defun (&optional arg) |
| 838 | "Move backward to the beginning of the current top-level defun. | 841 | "Move backward to the beginning of the current top-level defun. |
| 839 | With ARG, move backward multiple defuns. Negative ARG means | 842 | With ARG, move backward multiple defuns. Negative ARG means |
| 840 | move forward." | 843 | move forward." |
| 841 | (interactive "p") | 844 | (interactive "p") |
| 842 | (and (re-search-backward (concat "^\\s *\\(" ruby-block-beg-re "\\)\\_>") | 845 | (and (re-search-backward (concat "^\\s *" ruby-defun-beg-re "\\_>") |
| 843 | nil t (or arg 1)) | 846 | nil t (or arg 1)) |
| 844 | (beginning-of-line))) | 847 | (beginning-of-line))) |
| 845 | 848 | ||
| @@ -848,9 +851,9 @@ move forward." | |||
| 848 | With ARG, move forward multiple defuns. Negative ARG means | 851 | With ARG, move forward multiple defuns. Negative ARG means |
| 849 | move backward." | 852 | move backward." |
| 850 | (interactive "p") | 853 | (interactive "p") |
| 851 | (and (re-search-forward (concat "^\\s *" ruby-block-end-re) nil t (or arg 1)) | 854 | (ruby-forward-sexp) |
| 852 | (beginning-of-line)) | 855 | (when (looking-back (concat "^\\s *" ruby-block-end-re)) |
| 853 | (forward-line 1)) | 856 | (forward-line 1))) |
| 854 | 857 | ||
| 855 | (defun ruby-beginning-of-indent () | 858 | (defun ruby-beginning-of-indent () |
| 856 | "Backtrack to a line which can be used as a reference for | 859 | "Backtrack to a line which can be used as a reference for |
| @@ -1050,7 +1053,7 @@ See `add-log-current-defun-function'." | |||
| 1050 | (let (mname mlist (indent 0)) | 1053 | (let (mname mlist (indent 0)) |
| 1051 | ;; get current method (or class/module) | 1054 | ;; get current method (or class/module) |
| 1052 | (if (re-search-backward | 1055 | (if (re-search-backward |
| 1053 | (concat "^[ \t]*\\(def\\|class\\|module\\)[ \t]+" | 1056 | (concat "^[ \t]*" ruby-defun-beg-re "[ \t]+" |
| 1054 | "\\(" | 1057 | "\\(" |
| 1055 | ;; \\. and :: for class method | 1058 | ;; \\. and :: for class method |
| 1056 | "\\([A-Za-z_]" ruby-symbol-re "*\\|\\.\\|::" "\\)" | 1059 | "\\([A-Za-z_]" ruby-symbol-re "*\\|\\.\\|::" "\\)" |