Function: scheme-let-indent

scheme-let-indent is a byte-compiled function defined in scheme.el.gz.

Signature

(scheme-let-indent STATE INDENT-POINT NORMAL-INDENT)

Source Code

;; Defined in /usr/src/emacs/lisp/progmodes/scheme.el.gz
;;; Let is different in Scheme

;; (defun scheme-would-be-symbol (string)
;;   (not (string-equal (substring string 0 1) "(")))

;; (defun scheme-next-sexp-as-string ()
;;   ;; Assumes that it is protected by a save-excursion
;;   (forward-sexp 1)
;;   (let ((the-end (point)))
;;     (backward-sexp 1)
;;     (buffer-substring (point) the-end)))

;; This is correct but too slow.
;; The one below works almost always.
;;(defun scheme-let-indent (state indent-point)
;;  (if (scheme-would-be-symbol (scheme-next-sexp-as-string))
;;      (scheme-indent-specform 2 state indent-point)
;;      (scheme-indent-specform 1 state indent-point)))

(defun scheme-let-indent (state indent-point normal-indent)
  (skip-chars-forward " \t")
  (if (looking-at "[-a-zA-Z0-9+*/?!@$%^&_:~]")
      (lisp-indent-specform 2 state indent-point normal-indent)
    (lisp-indent-specform 1 state indent-point normal-indent)))