I was thinking it might cause problems for strings that are not quoted literals. I might be wrong, though. —  Cheers, Bozhidar On December 9, 2014 at 23:47:37, Dmitry Gutov (dgutov@yandex.ru) wrote: Hi! Bozhidar Batsov writes: > +(defun ruby--string-region () > + "Return region for string at point." > + (let ((orig-point (point)) (regex "'\\(\\(\\\\'\\)\\|[^']\\)*'\\|\"\\(\\(\\\\\"\\)\\|[^\"]\\)*\"") beg end) > + (save-excursion > + (goto-char (line-beginning-position)) > + (while (and (re-search-forward regex (line-end-position) t) (not (and beg end))) > + (let ((match-beg (match-beginning 0)) (match-end (match-end 0))) > + (when (and > + (> orig-point match-beg) > + (< orig-point match-end)) > + (setq beg match-beg) > + (setq end match-end)))) > + (and beg end (list beg end))))) Any reason this doesn't do something like (let ((state (syntax-ppss))) (when (memq (nth 3 state) '(?' ?\")) (goto-char (nth 8 state)) (forward-sexp) (list (nth 8 state) (point)))) ?