emacs-diffs
[Top][All Lists]
Advanced

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

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


From: Stefan Monnier
Subject: [Emacs-diffs] Changes to emacs/lisp/emacs-lisp/lisp-mode.el
Date: Wed, 05 Oct 2005 11:03:10 -0400

Index: emacs/lisp/emacs-lisp/lisp-mode.el
diff -c emacs/lisp/emacs-lisp/lisp-mode.el:1.185 
emacs/lisp/emacs-lisp/lisp-mode.el:1.186
*** emacs/lisp/emacs-lisp/lisp-mode.el:1.185    Wed Oct  5 14:07:18 2005
--- emacs/lisp/emacs-lisp/lisp-mode.el  Wed Oct  5 15:03:09 2005
***************
*** 147,171 ****
  (put 'define-ibuffer-filter 'doc-string-elt 2)
  (put 'define-ibuffer-op 'doc-string-elt 3)
  (put 'define-ibuffer-sorter 'doc-string-elt 2)
  
  (defun lisp-font-lock-syntactic-face-function (state)
    (if (nth 3 state)
!       (if (and (eq (nth 0 state) 1)
!              ;; This might be a docstring.
!              (save-excursion
!                (let ((n 0))
!                  (goto-char (nth 8 state))
!                  (condition-case nil
!                      (while (and (not (bobp))
!                                  (progn (backward-sexp 1) (setq n (1+ n)))))
!                    (scan-error nil))
!                  (when (> n 0)
!                    (let ((sym (intern-soft
!                                (buffer-substring
!                                 (point) (progn (forward-sexp 1) (point))))))
!                      (eq n (get sym 'doc-string-elt)))))))
!         font-lock-doc-face
!       font-lock-string-face)
      font-lock-comment-face))
  
  ;; The LISP-SYNTAX argument is used by code in inf-lisp.el and is
--- 147,188 ----
  (put 'define-ibuffer-filter 'doc-string-elt 2)
  (put 'define-ibuffer-op 'doc-string-elt 3)
  (put 'define-ibuffer-sorter 'doc-string-elt 2)
+ (put 'lambda 'doc-string-elt 2)
+ 
+ (defvar lisp-doc-string-elt-property 'doc-string-elt
+   "The symbol property that holds the docstring position info.")
  
  (defun lisp-font-lock-syntactic-face-function (state)
    (if (nth 3 state)
!       ;; This might be a docstring.
!       (let* ((listbeg (nth 1 state))
!              (firstsym (and listbeg
!                             (save-excursion
!                               (goto-char listbeg)
!                               (and (looking-at "([ 
\t\n]*\\(\\(\\sw\\|\\s_\\)+\\)")
!                                    (match-string 1)))))
!              (docelt (and firstsym (get (intern-soft firstsym)
!                                         lisp-doc-string-elt-property))))
!         (if (and docelt
!                  ;; It's a string passed to a macro that has docstrings.
!                  ;; Check whether it's in docstring position.
!                  (let ((startpos (nth 8 state)))
!                    (save-excursion
!                      (when (functionp docelt)
!                        (goto-char (match-end 1))
!                        (setq docelt (funcall docelt)))
!                      (goto-char listbeg)
!                      (forward-char 1)
!                      (condition-case nil
!                          (while (and (> docelt 0) (< (point) startpos)
!                                      (progn (forward-sexp 1) t))
!                            (setq docelt (1- docelt)))
!                        (error nil))
!                      (and (zerop docelt) (<= (point) startpos)
!                           (progn (forward-comment (point-max)) t)
!                           (= (point) (nth 8 state))))))
!             font-lock-doc-face
!           font-lock-string-face))
      font-lock-comment-face))
  
  ;; The LISP-SYNTAX argument is used by code in inf-lisp.el and is




reply via email to

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