summaryrefslogtreecommitdiff
path: root/lisp/progmodes/ruby-mode.el
diff options
context:
space:
mode:
Diffstat (limited to 'lisp/progmodes/ruby-mode.el')
-rw-r--r--lisp/progmodes/ruby-mode.el20
1 files changed, 11 insertions, 9 deletions
diff --git a/lisp/progmodes/ruby-mode.el b/lisp/progmodes/ruby-mode.el
index 5f92d197a66..06dffd80d88 100644
--- a/lisp/progmodes/ruby-mode.el
+++ b/lisp/progmodes/ruby-mode.el
@@ -1351,7 +1351,7 @@ If the result is do-end block, it will always be multiline."
(progn
(eval-and-compile
(defconst ruby-percent-literal-beg-re
- "\\(%\\)[qQrswWx]?\\([[:punct:]]\\)"
+ "\\(%\\)[qQrswWxIi]?\\([[:punct:]]\\)"
"Regexp to match the beginning of percent literal.")
(defconst ruby-syntax-methods-before-regexp
@@ -1387,7 +1387,7 @@ It will be properly highlighted even when the call omits parens.")
(funcall
(syntax-propertize-rules
;; $' $" $` .... are variables.
- ;; ?' ?" ?` are ascii codes.
+ ;; ?' ?" ?` are character literals (one-char strings in 1.9+).
("\\([?$]\\)[#\"'`]"
(1 (unless (save-excursion
;; Not within a string.
@@ -1518,7 +1518,7 @@ It will be properly highlighted even when the call omits parens.")
(save-match-data
(save-excursion
(goto-char (nth 8 parse-state))
- (looking-at "%\\(?:[QWrx]\\|\\W\\)")))))))
+ (looking-at "%\\(?:[QWrxI]\\|\\W\\)")))))))
(defun ruby-syntax-propertize-expansions (start end)
(save-excursion
@@ -1721,7 +1721,7 @@ See `font-lock-syntax-table'.")
(defconst ruby-font-lock-keywords
(list
;; functions
- '("^\\s *def\\s +\\([^( \t\n]+\\)"
+ '("^\\s *def\\s +\\(?:[^( \t\n.]*\\.\\)?\\([^( \t\n]+\\)"
1 font-lock-function-name-face)
(list (concat
"\\(^\\|[^.@$]\\|\\.\\.\\)\\("
@@ -1809,7 +1809,6 @@ See `font-lock-syntax-table'.")
"warn"
;; keyword-like private methods on Module
"alias_method"
- "autoload"
"attr"
"attr_accessor"
"attr_reader"
@@ -1850,14 +1849,17 @@ See `font-lock-syntax-table'.")
0 font-lock-variable-name-face)
;; constants
'("\\(?:\\_<\\|::\\)\\([A-Z]+\\(\\w\\|_\\)*\\)"
- 1 font-lock-type-face)
+ 1 (unless (eq ?\( (char-after)) font-lock-type-face))
'("\\(^\\s *\\|[\[\{\(,]\\s *\\|\\sw\\s +\\)\\(\\(\\sw\\|_\\)+\\):[^:]" 2 font-lock-constant-face)
;; expression expansion
'(ruby-match-expression-expansion
2 font-lock-variable-name-face t)
- ;; warn lower camel case
- ;'("\\<[a-z]+[a-z0-9]*[A-Z][A-Za-z0-9]*\\([!?]?\\|\\>\\)"
- ; 0 font-lock-warning-face)
+ ;; negation char
+ '("[^[:alnum:]_]\\(!\\)[^=]"
+ 1 font-lock-negation-char-face)
+ ;; character literals
+ ;; FIXME: Support longer escape sequences.
+ '("\\?\\\\?\\S " 0 font-lock-string-face)
)
"Additional expressions to highlight in Ruby mode.")