emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] Changes to emacs/lisp/progmodes/scheme.el


From: Stefan Monnier
Subject: [Emacs-diffs] Changes to emacs/lisp/progmodes/scheme.el
Date: Wed, 05 Oct 2005 11:28:44 -0400

Index: emacs/lisp/progmodes/scheme.el
diff -c emacs/lisp/progmodes/scheme.el:1.56 emacs/lisp/progmodes/scheme.el:1.57
*** emacs/lisp/progmodes/scheme.el:1.56 Wed Oct  5 14:23:13 2005
--- emacs/lisp/progmodes/scheme.el      Wed Oct  5 15:28:44 2005
***************
*** 100,107 ****
      ;; Other atom delimiters
      (modify-syntax-entry ?\( "()  " st)
      (modify-syntax-entry ?\) ")(  " st)
!     (modify-syntax-entry ?\; "<   " st)
!     (modify-syntax-entry ?\" "\"    " st)
      (modify-syntax-entry ?' "'   " st)
      (modify-syntax-entry ?` "'   " st)
  
--- 100,108 ----
      ;; Other atom delimiters
      (modify-syntax-entry ?\( "()  " st)
      (modify-syntax-entry ?\) ")(  " st)
!     ;; It's used for single-line comments as well as for #;(...) 
sexp-comments.
!     (modify-syntax-entry ?\; "< 2 " st)
!     (modify-syntax-entry ?\" "\"   " st)
      (modify-syntax-entry ?' "'   " st)
      (modify-syntax-entry ?` "'   " st)
  
***************
*** 168,182 ****
    (setq imenu-generic-expression scheme-imenu-generic-expression)
    (set (make-local-variable 'imenu-syntax-alist)
        '(("+-*/.<>=?!$%_&~^:" . "w")))
!   (make-local-variable 'font-lock-defaults)
!   (setq font-lock-defaults
!         '((scheme-font-lock-keywords
!            scheme-font-lock-keywords-1 scheme-font-lock-keywords-2)
!           nil t (("+-*/.<>=!?$%_&~^:" . "w") (?#. "w 14"))
!           beginning-of-defun
!           (font-lock-mark-block-function . mark-defun)
!           (font-lock-syntactic-face-function
!            . scheme-font-lock-syntactic-face-function))))
  
  (defvar scheme-mode-line-process "")
  
--- 169,186 ----
    (setq imenu-generic-expression scheme-imenu-generic-expression)
    (set (make-local-variable 'imenu-syntax-alist)
        '(("+-*/.<>=?!$%_&~^:" . "w")))
!   (set (make-local-variable 'font-lock-defaults)
!        '((scheme-font-lock-keywords
!           scheme-font-lock-keywords-1 scheme-font-lock-keywords-2)
!          nil t (("+-*/.<>=!?$%_&~^:" . "w") (?#. "w 14"))
!          beginning-of-defun
!          (font-lock-mark-block-function . mark-defun)
!          (font-lock-syntactic-face-function
!           . scheme-font-lock-syntactic-face-function)
!          (parse-sexp-lookup-properties . t)
!          (font-lock-extra-managed-props syntax-table)))
!   (set (make-local-variable 'lisp-doc-string-elt-property)
!        'scheme-doc-string-elt))
  
  (defvar scheme-mode-line-process "")
  
***************
*** 352,366 ****
  (defvar scheme-font-lock-keywords scheme-font-lock-keywords-1
    "Default expressions to highlight in Scheme modes.")
  
  (defun scheme-font-lock-syntactic-face-function (state)
!   (if (nth 3 state)
!       ;; In a string.
!       (if (eq (char-after (nth 8 state)) ?|)
!           ;; This is not a string, but a |...| symbol.
!           nil
!         font-lock-string-face)
!     ;; In a comment.
!     font-lock-comment-face))
  
  ;;;###autoload
  (define-derived-mode dsssl-mode scheme-mode "DSSSL"
--- 356,398 ----
  (defvar scheme-font-lock-keywords scheme-font-lock-keywords-1
    "Default expressions to highlight in Scheme modes.")
  
+ (defconst scheme-sexp-comment-syntax-table
+   (let ((st (make-syntax-table scheme-mode-syntax-table)))
+     (modify-syntax-entry ?\; "." st)
+     (modify-syntax-entry ?\n " " st)
+     (modify-syntax-entry ?#  "'" st)
+     st))
+ 
+ (put 'lambda 'scheme-doc-string-elt 2)
+ ;; Docstring's pos in a `define' depends on whether it's a var or fun def.
+ (put 'define 'scheme-doc-string-elt
+      (lambda ()
+        ;; The function is called with point right after "define".
+        (forward-comment (point-max))
+        (if (eq (char-after) ?\() 2 0)))
+ 
  (defun scheme-font-lock-syntactic-face-function (state)
!   (when (and (null (nth 3 state))
!              (eq (char-after (nth 8 state)) ?#)
!              (eq (char-after (1+ (nth 8 state))) ?\;))
!     ;; It's a sexp-comment.  Tell parse-partial-sexp where it ends.
!     (save-excursion
!       (let ((pos (point))
!             (end
!              (condition-case err
!                  (let ((parse-sexp-lookup-properties nil))
!                    (goto-char (+ 2 (nth 8 state)))
!                    ;; FIXME: this doesn't handle the case where the sexp
!                    ;; itself contains a #; comment.
!                    (forward-sexp 1)
!                    (point))
!                (scan-error (nth 2 err)))))
!         (when (< pos (- end 2))
!           (put-text-property pos (- end 2)
!                              'syntax-table scheme-sexp-comment-syntax-table))
!         (put-text-property (- end 1) end 'syntax-table '(12)))))
!   ;; Choose the face to use.
!   (lisp-font-lock-syntactic-face-function state))
  
  ;;;###autoload
  (define-derived-mode dsssl-mode scheme-mode "DSSSL"




reply via email to

[Prev in Thread] Current Thread [Next in Thread]