   `((,(concat "#[^" slate-whitespace-chars "{}()]+")
      . font-lock-reference-face)	; symbol
     ("[^\\]\"[^\\]\"" . font-lock-comment-face) ; comment
-    ("[^#]'\\(.\\|\'\\)*'" . font-lock-string-face) ; string
-    ("\$\\(\\\\[ntsbre0avf]\\|.\\)"
+    ("[^#$]'\\(.\\|\'\\)*'" . font-lock-string-face) ; string
+    ("\$\\(\\\\[ntsbre0avf\'\"]\\|.\\)"
      . font-lock-string-face)		; character
     (,(concat "`" slate-binop-regexp)
      . ,(if (boundp 'font-lock-preprocessor-face)

     (comment-indent-function      . slate-comment-indent)
     (parse-sexp-ignore-comments   . nil)
     (local-abbrev-table           . slate-mode-abbrev-table)
     (imenu-generic-expression     . slate-imenu-generic-expression)))
  (setq font-lock-verbose t)
  (run-hooks 'slate-mode-hook))


	(setq selector (buffer-substring start (point))))
      selector)))

;; Imenu Support
;; =============

(defconst slate-imenu-generic-expression
  `(("Slots" ,(format "^.*add[A-Za-z]*Slot: #\\(%s\\) valued: .* derive"
		       slate-name-regexp) 1)
    ("Prototypes" ,(format "^.*addPrototype: #\\(%s\\) derivedFrom: {.*}\."
		       slate-name-regexp) 1)
    ("Prototypes" ,(format "^.*define: #\\(%s\\) &parents: {.*}"
		       slate-name-regexp) 1)
    ("Methods" "^\\([^\[]*@[^\[]*\\)$" 1) ; Matches the whole signature.
    ))

(defun slate-mode ()
  "Major mode for editing Slate code.
Type `M-x slate' to open a Slate interaction area.
