diff options
| author | Dmitry Gutov | 2012-04-24 12:00:08 -0400 |
|---|---|---|
| committer | Stefan Monnier | 2012-04-24 12:00:08 -0400 |
| commit | 51a8ea2acf100a3a0ab783632c5fbcdb665a2e14 (patch) | |
| tree | 7bd18fb78b99187d57975b0d34b236693de4b431 | |
| parent | 85222d4485aaaf5b308859988ac3d06212e6bf3f (diff) | |
| download | emacs-51a8ea2acf100a3a0ab783632c5fbcdb665a2e14.tar.gz emacs-51a8ea2acf100a3a0ab783632c5fbcdb665a2e14.zip | |
* lisp/progmodes/ruby-mode.el: Handle Cucumber defs (bug#6286).
(ruby-syntax-propertize-regexp): New function.
(ruby-syntax-propertize-function): Use it to handle regexp not preceded
by a special keyword.
| -rw-r--r-- | lisp/ChangeLog | 5 | ||||
| -rw-r--r-- | lisp/progmodes/ruby-mode.el | 20 |
2 files changed, 22 insertions, 3 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 03fbfd83255..2328cf99c1a 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog | |||
| @@ -1,5 +1,10 @@ | |||
| 1 | 2012-04-24 Dmitry Gutov <dgutov@yandex.ru> | 1 | 2012-04-24 Dmitry Gutov <dgutov@yandex.ru> |
| 2 | 2 | ||
| 3 | * progmodes/ruby-mode.el: Handle Cucumber defs (bug#6286). | ||
| 4 | (ruby-syntax-propertize-regexp): New function. | ||
| 5 | (ruby-syntax-propertize-function): Use it to handle regexp not preceded | ||
| 6 | by a special keyword. | ||
| 7 | |||
| 3 | * progmodes/ruby-mode.el: Handle general delimited literals (bug#6286). | 8 | * progmodes/ruby-mode.el: Handle general delimited literals (bug#6286). |
| 4 | (ruby-syntax-general-delimiters-goto-beg) | 9 | (ruby-syntax-general-delimiters-goto-beg) |
| 5 | (ruby-syntax-propertize-general-delimiters): New functions. | 10 | (ruby-syntax-propertize-general-delimiters): New functions. |
diff --git a/lisp/progmodes/ruby-mode.el b/lisp/progmodes/ruby-mode.el index 05a4042b67d..8818911159b 100644 --- a/lisp/progmodes/ruby-mode.el +++ b/lisp/progmodes/ruby-mode.el | |||
| @@ -1131,9 +1131,8 @@ See `add-log-current-defun-function'." | |||
| 1131 | (nth 3 (syntax-ppss (match-beginning 0)))) | 1131 | (nth 3 (syntax-ppss (match-beginning 0)))) |
| 1132 | (string-to-syntax "\\")))) | 1132 | (string-to-syntax "\\")))) |
| 1133 | ;; regexps | 1133 | ;; regexps |
| 1134 | ("\\(^\\|[[=(,~?:;<>]\\|\\(^\\|\\s \\)\\(if\\|elsif\\|unless\\|while\\|until\\|when\\|and\\|or\\|&&\\|||\\)\\|g?sub!?\\|scan\\|split!?\\)\\s *\\(/\\)[^/\n\\\\]*\\(\\\\.[^/\n\\\\]*\\)*\\(/\\)" | 1134 | ("\\(^\\|[[=(,~?:;<>]\\|\\(?:^\\|\\s \\)\\(?:if\\|elsif\\|unless\\|while\\|until\\|when\\|and\\|or\\|&&\\|||\\)\\|g?sub!?\\|scan\\|split!?\\)?\\s *\\(/\\)[^/\n\\\\]*\\(?:\\\\.[^/\n\\\\]*\\)*\\(/\\)" |
| 1135 | (4 "\"/") | 1135 | (2 (ruby-syntax-propertize-regexp))) |
| 1136 | (6 "\"/")) | ||
| 1137 | ("^=en\\(d\\)\\_>" (1 "!")) | 1136 | ("^=en\\(d\\)\\_>" (1 "!")) |
| 1138 | ("^\\(=\\)begin\\_>" (1 "!")) | 1137 | ("^\\(=\\)begin\\_>" (1 "!")) |
| 1139 | ;; Handle here documents. | 1138 | ;; Handle here documents. |
| @@ -1144,6 +1143,21 @@ See `add-log-current-defun-function'." | |||
| 1144 | (1 (prog1 "|" (ruby-syntax-propertize-general-delimiters end))))) | 1143 | (1 (prog1 "|" (ruby-syntax-propertize-general-delimiters end))))) |
| 1145 | (point) end)) | 1144 | (point) end)) |
| 1146 | 1145 | ||
| 1146 | (defun ruby-syntax-propertize-regexp () | ||
| 1147 | (let ((syn (string-to-syntax "\"/"))) | ||
| 1148 | (goto-char (match-end 3)) | ||
| 1149 | (if (or | ||
| 1150 | ;; after paren, comma, operator, control flow keyword, | ||
| 1151 | ;; or a method from hardcoded list | ||
| 1152 | (match-beginning 1) | ||
| 1153 | ;; followed by comma or block | ||
| 1154 | (looking-at "[imxo]*\\s *\\(?:,\\|\\<do\\>\\)")) | ||
| 1155 | (progn | ||
| 1156 | (put-text-property (1- (point)) (point) | ||
| 1157 | 'syntax-table syn) | ||
| 1158 | syn) | ||
| 1159 | (goto-char (match-end 2))))) | ||
| 1160 | |||
| 1147 | (defun ruby-syntax-propertize-heredoc (limit) | 1161 | (defun ruby-syntax-propertize-heredoc (limit) |
| 1148 | (let ((ppss (syntax-ppss)) | 1162 | (let ((ppss (syntax-ppss)) |
| 1149 | (res '())) | 1163 | (res '())) |