 (defun slate-narrow-to-method ()
   "Narrows the buffer to the contents and signature of the method."
   ; TODO: Make sure the signature plus optional head comment is included.
+  (interactive)
   (let ((end (point))
 	(parse-sexp-ignore-comments t)
 	handled)

	(cond ((equal (nth 3 state) ?\") ;in a comment
	       (save-excursion
		 (slate-backward-comment)
		 (setq indent-amount (1+ (current-column)))))
	      ((equal (nth 3 state) ?')	;in a string
	       (setq indent-amount 0)))
	(when indent-amount
	  (return-from slate-calculate-indent indent-amount))
	(slate-narrow-to-method)
	(beginning-of-line)
	(setq state (parse-partial-sexp (point-min) (point)))
;	(slate-narrow-to-paren state)
	(slate-backward-whitespace)
	(cond ((bobp)	;must be first statement in block or exp
	       (if (nth 1 state)	;within a paren exp

(defvar slate-mode-abbrev-table nil
  "Abbrev table in use in slate-mode buffers.")
(define-abbrev-table 'slate-mode-abbrev-table ())

;; Customize Support
;; =================

(defgroup slate nil
  "Major mode for editing Slate code."
  :prefix "slate-"
  :group 'languages)

(defcustom slate-mode-hook nil
  "Normal hook run when entering Slate mode."
  :type 'hook
  :options '(imenu-add-menubar-index)
  :group 'slate)

(defcustom slate-indent-amount 2
  "Amount to adjust indentation by."
  :type 'integer
  :options '(2 4)
  :group 'slate)

;; Templates
;; =========
