summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Monnier <monnier@iro.umontreal.ca>2011-01-24 14:47:46 -0500
committerStefan Monnier <monnier@iro.umontreal.ca>2011-01-24 14:47:46 -0500
commit21bb5ce0dd56f69d661d3d386c1cd3cef12a1d36 (patch)
treecace8e3d588540bad9adbc969f77d662735241a6
parent10617634616deb3a645bb3e9f7bcd91ea900f4aa (diff)
downloademacs-21bb5ce0dd56f69d661d3d386c1cd3cef12a1d36.tar.gz
* lisp/progmodes/ruby-mode.el (ruby-syntax-propertize-function):
Handle ?" and friends differently (e.g. don't use backrefs). Fixes: debbugs:7735
-rw-r--r--lisp/ChangeLog9
-rw-r--r--lisp/progmodes/ruby-mode.el11
2 files changed, 12 insertions, 8 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index e7135e57d88..0a2b34cb024 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,8 @@
+2011-01-24 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * progmodes/ruby-mode.el (ruby-syntax-propertize-function): (bug#7735)
+ Handle ?" and friends differently (e.g. don't use backrefs).
+
2011-01-24 Jay Belanger <jay.p.belanger@gmail.com>
* calc/calc.el (calc-default-power-reference-level)
@@ -6,8 +11,8 @@
(math-logunits): New variable.
(math-extract-logunits, math-logcombine, calcFunc-luplus)
(calcFunc-luminus, calc-luplus, calc-luminus, math-logunit-level)
- (calcFunc-fieldlevel, calcFunc-powerlevel, calc-level): New
- functions.
+ (calcFunc-fieldlevel, calcFunc-powerlevel, calc-level):
+ New functions.
(math-find-base-units-rec): Add entry for ln(10).
* calc/calc-help.el (calc-u-prefix-help): Add logarithmic help.
(calc-ul-prefix-help): New function.
diff --git a/lisp/progmodes/ruby-mode.el b/lisp/progmodes/ruby-mode.el
index 2f10a7f2a97..733af999cdb 100644
--- a/lisp/progmodes/ruby-mode.el
+++ b/lisp/progmodes/ruby-mode.el
@@ -1121,14 +1121,13 @@ See `add-log-current-defun-function'."
(syntax-propertize-rules
;; #{ }, #$hoge, #@foo are not comments
("\\(#\\)[{$@]" (1 "."))
- ;; the last $', $", $` in the respective string is not variable
- ;; the last ?', ?", ?` in the respective string is not ascii code
- ("\\(^\\|[\[ \t\n<+\(,=]\\)\\(['\"`]\\)\\(\\\\.\\|\\2\\|[^'\"`\n\\\\]\\)*?\\\\?[?$]\\(\\2\\)"
- (2 "\"")
- (4 "\""))
;; $' $" $` .... are variables
;; ?' ?" ?` are ascii codes
- ("\\(^\\|[^\\\\]\\)\\(\\\\\\\\\\)*[?$]\\([#\"'`]\\)" (3 "."))
+ ("\\([?$]\\)[#\"'`]"
+ (1 (unless (save-excursion
+ ;; Not within a string.
+ (nth 3 (syntax-ppss (match-beginning 0))))
+ (string-to-syntax "\\"))))
;; regexps
("\\(^\\|[=(,~?:;<>]\\|\\(^\\|\\s \\)\\(if\\|elsif\\|unless\\|while\\|until\\|when\\|and\\|or\\|&&\\|||\\)\\|g?sub!?\\|scan\\|split!?\\)\\s *\\(/\\)[^/\n\\\\]*\\(\\\\.[^/\n\\\\]*\\)*\\(/\\)"
(4 "\"/")