 
 (defvar ioke-syntax-table
   (let ((st (make-syntax-table)))
+    (modify-syntax-entry ?\( "()" st)
+    (modify-syntax-entry ?\) ")(" st)
+    (modify-syntax-entry ?\[ "(]" st)
+    (modify-syntax-entry ?\] ")[" st)
+    (modify-syntax-entry ?\{ "(}" st)
+    (modify-syntax-entry ?\} "){" st)
     (modify-syntax-entry ?\; "<" st)
     (modify-syntax-entry ?? "w" st)
     (modify-syntax-entry ?! "w" st)
     (modify-syntax-entry ?: "w" st)
     (modify-syntax-entry ?, "." st)
     (modify-syntax-entry ?. "." st)
+    (modify-syntax-entry ?\' "'" st)
+    (modify-syntax-entry ?\` "'" st)
+    (modify-syntax-entry ?\" "\"" st)
     (modify-syntax-entry ?\n ">" st)
     st)
   "ioke mode syntax table")

    (set-marker marker nil))
  (blink-matching-open))



(defun ioke-comment-region (beg end &optional arg)
  "Comment region for Io."
  (interactive "r\nP")
  (let ((comment-start ioke-region-comment-prefix))
    (comment-region beg end arg)))

(defun ioke-mode ()
  "ioke (testing) mode"
  (interactive)
  (kill-all-local-variables)
  (set-syntax-table ioke-syntax-table)
  (use-local-map ioke-keymap)
  (make-local-variable 'font-lock-defaults)
  (setq font-lock-defaults '(ioke-font-lock-keywords nil nil nil))
  (set (make-local-variable 'indent-line-function) 'ioke-indent-line)
  (set (make-local-variable 'comment-start) "; ")
  (setq major-mode 'ioke-mode)

    '("\\([[:alnum:]!?_:-]+\\)[[:space:]]*=[^=][[:space:]]*[[:alnum:]_:-]+[[:space:]]+mimic" 1 ioke-font-lock-object-mimic-face)
    '("\\([[:alnum:]!?_:-]+\\)[[:space:]]*[+*/-]?=[^=]" 1 ioke-font-lock-object-assign-face)
    '("#/.*?/[oxpniums]*" 0 ioke-font-lock-regexp-face)
    '("#\\[" 0 ioke-font-lock-string-face t)
    '("\\([^\\\\]\\|\\\\\\\\\\)\\(#{[^}]*}\\)" 2 ioke-font-lock-expression-face t)
    `(,(regexp-opt ioke-prototype-names 'words) . ioke-font-lock-known-kind-face)
    `(,(regexp-opt ioke-standout-names 'words) . font-lock-warning-face)
    '("\\<[A-Z][[:alnum:]!?_:-]*\\>" 0 ioke-font-lock-kind-face)
    '("\\<[[:alnum:]!?_:-]*?:\\>" 0 ioke-font-lock-keyword-argument-face)
    '("\\<:[[:alnum:]!?_:-]*\\>" 0 ioke-font-lock-symbol-face)
    '("\\<:\"[[:alnum:]!?_:-]*\"" 0 ioke-font-lock-symbol-face t)
    '("\\<[[:digit:]_\\.eE]+\\>" 0 ioke-font-lock-number-face)
    `(,(regexp-opt ioke-operator-names 'words) . ioke-font-lock-operator-name-face)
    `(,(regexp-opt ioke-operator-symbols t) . ioke-font-lock-operator-symbol-face)
    `(,(regexp-opt ioke-special-names t) . ioke-font-lock-special-face)
