X-Git-Url: https://git.hcoop.net/bpt/emacs.git/blobdiff_plain/a57471f93507c55b55ee9e28c493ba78b46796e3..ab422c4d6899b1442cb6954c1829c1fb656b006c:/lisp/progmodes/scheme.el diff --git a/lisp/progmodes/scheme.el b/lisp/progmodes/scheme.el index 4151e2bb79..a7dbc41162 100644 --- a/lisp/progmodes/scheme.el +++ b/lisp/progmodes/scheme.el @@ -1,7 +1,7 @@ ;;; scheme.el --- Scheme (and DSSSL) editing mode -;; Copyright (C) 1986-1988, 1997-1998, 2001-2011 -;; Free Software Foundation, Inc. +;; Copyright (C) 1986-1988, 1997-1998, 2001-2013 Free Software +;; Foundation, Inc. ;; Author: Bill Rozas ;; Adapted-by: Dave Love @@ -55,24 +55,24 @@ (defvar scheme-mode-syntax-table (let ((st (make-syntax-table)) (i 0)) - - ;; Default is atom-constituent. - (while (< i 256) + ;; Symbol constituents + ;; We used to treat chars 128-256 as symbol-constituent, but they + ;; should be valid word constituents (Bug#8843). Note that valid + ;; identifier characters are Scheme-implementation dependent. + (while (< i ?0) (modify-syntax-entry i "_ " st) (setq i (1+ i))) - - ;; Word components. - (setq i ?0) - (while (<= i ?9) - (modify-syntax-entry i "w " st) + (setq i (1+ ?9)) + (while (< i ?A) + (modify-syntax-entry i "_ " st) (setq i (1+ i))) - (setq i ?A) - (while (<= i ?Z) - (modify-syntax-entry i "w " st) + (setq i (1+ ?Z)) + (while (< i ?a) + (modify-syntax-entry i "_ " st) (setq i (1+ i))) - (setq i ?a) - (while (<= i ?z) - (modify-syntax-entry i "w " st) + (setq i (1+ ?z)) + (while (< i 128) + (modify-syntax-entry i "_ " st) (setq i (1+ i))) ;; Whitespace @@ -201,7 +201,7 @@ Editing commands are similar to those of `lisp-mode'. In addition, if an inferior Scheme process is running, some additional commands will be defined, for evaluating expressions and controlling the interpreter, and the state of the process will be displayed in the -modeline of all Scheme buffers. The names of commands that interact +mode line of all Scheme buffers. The names of commands that interact with the Scheme process start with \"xscheme-\" if you use the MIT Scheme-specific `xscheme' package; for more information see the documentation for `xscheme-interaction-mode'. Use \\[run-scheme] to @@ -229,7 +229,7 @@ Set this to nil if you normally use another dialect." (defcustom dsssl-sgml-declaration " " - "*An SGML declaration for the DSSSL file. + "An SGML declaration for the DSSSL file. If it is defined as a string this will be inserted into an empty buffer which is in `dsssl-mode'. It is typically James Clark's style-sheet doctype, as required for Jade." @@ -251,7 +251,7 @@ See `run-hooks'." ;; This is shared by cmuscheme and xscheme. (defcustom scheme-program-name "scheme" - "*Program invoked by the `run-scheme' command." + "Program invoked by the `run-scheme' command." :type 'string :group 'scheme) @@ -442,9 +442,19 @@ that variable's value is a string." (defvar calculate-lisp-indent-last-sexp) -;; Copied from lisp-indent-function, but with gets of -;; scheme-indent-{function,hook}. + +;; FIXME this duplicates almost all of lisp-indent-function. +;; Extract common code to a subroutine. (defun scheme-indent-function (indent-point state) + "Scheme mode function for the value of the variable `lisp-indent-function'. +This behaves like the function `lisp-indent-function', except that: + +i) it checks for a non-nil value of the property `scheme-indent-function' +\(or the deprecated `scheme-indent-hook'), rather than `lisp-indent-function'. + +ii) if that property specifies a function, it is called with three +arguments (not two), the third argument being the default (i.e., current) +indentation." (let ((normal-indent (current-column))) (goto-char (1+ (elt state 1))) (parse-partial-sexp (point) calculate-lisp-indent-last-sexp 0 t)