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/cl-indent.el


From: Gerd Moellmann
Subject: [Emacs-diffs] Changes to emacs/lisp/emacs-lisp/cl-indent.el
Date: Tue, 12 Mar 2002 11:26:06 -0500

Index: emacs/lisp/emacs-lisp/cl-indent.el
diff -c emacs/lisp/emacs-lisp/cl-indent.el:1.34 
emacs/lisp/emacs-lisp/cl-indent.el:1.35
*** emacs/lisp/emacs-lisp/cl-indent.el:1.34     Fri Dec 21 19:02:51 2001
--- emacs/lisp/emacs-lisp/cl-indent.el  Tue Mar 12 11:26:05 2002
***************
*** 1,6 ****
  ;;; cl-indent.el --- enhanced lisp-indent mode
  
! ;; Copyright (C) 1987, 2000, 2001 Free Software Foundation, Inc.
  
  ;; Author: Richard Mlynarik <address@hidden>
  ;; Created: July 1987
--- 1,6 ----
  ;;; cl-indent.el --- enhanced lisp-indent mode
  
! ;; Copyright (C) 1987, 2000, 2001, 2002 Free Software Foundation, Inc.
  
  ;; Author: Richard Mlynarik <address@hidden>
  ;; Created: July 1987
***************
*** 78,89 ****
--- 78,148 ----
    :type 'integer
    :group 'lisp-indent)
  
+ (defcustom lisp-backquote-indentation t
+   "*Whether or not to indent backquoted lists as code.
+ If nil, indent backquoted lists as data, i.e., like quoted lists."
+   :type 'boolean
+   :group 'lisp-indent)
+ 
+ 
+ (defcustom lisp-loop-keyword-indentation 3
+   "*Indentation of loop keywords in extended loop forms."
+   :type 'integer
+   :group 'lisp-indent)
+ 
+ 
+ (defcustom lisp-loop-forms-indentation 5
+   "*Indentation of forms in extended loop forms."
+   :type 'integer
+   :group 'lisp-indent)
+ 
+ 
+ (defcustom lisp-simple-loop-indentation 3
+   "*Indentation of forms in simple loop forms."
+   :type 'integer
+   :group 'lisp-indent)
+ 
  
  (defvar lisp-indent-error-function)
  (defvar lisp-indent-defun-method '(4 &lambda &body))
  
+ 
+ (defun extended-loop-p (loop-start)
+   "True if an extended loop form starta at LOOP-START."
+   (condition-case ()
+       (save-excursion
+       (goto-char loop-start)
+       (forward-char 1)
+       (forward-sexp 2)
+       (backward-sexp 1)
+       (looking-at "\\sw"))
+     (error t)))
+ 
+ 
+ (defun common-lisp-loop-part-indentation (indent-point state)
+   "Compute the indentation of loop form constituents."
+   (let* ((loop-indentation (save-excursion
+                            (goto-char (elt state 1))
+                            (current-column))))
+     (goto-char indent-point)
+     (beginning-of-line)
+     (cond ((not (extended-loop-p (elt state 1)))
+          lisp-simple-loop-indentation)
+         ((looking-at "^\\s-*\\(:?\\sw+\\|;\\)")
+          (+ loop-indentation lisp-loop-keyword-indentation))
+         (t
+          (+ loop-indentation lisp-loop-forms-indentation)))))
+   
+ 
  ;;;###autoload
  (defun common-lisp-indent-function (indent-point state)
+   (if (save-excursion (goto-char (elt state 1))
+                     (looking-at "([Ll][Oo][Oo][Pp]"))
+       (common-lisp-loop-part-indentation indent-point state)
+     (common-lisp-indent-function-1 indent-point state)))
+       
+   
+ (defun common-lisp-indent-function-1 (indent-point state)
    (let ((normal-indent (current-column)))
      ;; Walk up list levels until we see something
      ;;  which does special things with subforms.
***************
*** 102,107 ****
--- 161,167 ----
        ;; Move to start of innermost containing list
        (goto-char containing-form-start)
        (setq sexp-column (current-column))
+ 
        ;; Look over successively less-deep containing forms
        (while (and (not calculated)
                    (< depth lisp-indent-maximum-backtracking))
***************
*** 160,166 ****
                    ((eq method 'defun)
                     (setq method lisp-indent-defun-method)))
  
!             (cond ((and (memq (char-after (1- containing-sexp)) '(?\' ?\`))
                          (not (eq (char-after (- containing-sexp 2)) ?\#)))
                     ;; No indentation for "'(...)" elements
                     (setq calculated (1+ sexp-column)))
--- 220,228 ----
                    ((eq method 'defun)
                     (setq method lisp-indent-defun-method)))
  
!             (cond ((and (or (eq (char-after (1- containing-sexp)) ?\')
!                           (and (not lisp-backquote-indentation)
!                                (eq (char-after (1- containing-sexp)) ?\`)))
                          (not (eq (char-after (- containing-sexp 2)) ?\#)))
                     ;; No indentation for "'(...)" elements
                     (setq calculated (1+ sexp-column)))
***************
*** 355,365 ****
                 (&whole nil &rest 1))
               path state indent-point sexp-column normal-indent)))
  
  (defun lisp-indent-defmethod (path state indent-point sexp-column
                                   normal-indent)
    "Indentation function defmethod."
!   (lisp-indent-259 (if (and (>= (first path) 3)
!                             (null (rest path))
                            (save-excursion (goto-char (elt state 1))
                                            (forward-char 1)
                                              (forward-sexp 3)
--- 417,428 ----
                 (&whole nil &rest 1))
               path state indent-point sexp-column normal-indent)))
  
+ 
  (defun lisp-indent-defmethod (path state indent-point sexp-column
                                   normal-indent)
    "Indentation function defmethod."
!   (lisp-indent-259 (if (and (>= (car path) 3)
!                             (null (cdr path))
                            (save-excursion (goto-char (elt state 1))
                                            (forward-char 1)
                                              (forward-sexp 3)
***************
*** 388,393 ****
--- 451,457 ----
                (+ sexp-column lisp-body-indent)))
         (error (+ sexp-column lisp-body-indent)))))
  
+ 
  
  (let ((l '((block 1)
             (case        (4 &rest (&whole 2 &rest 1)))
***************
*** 435,441 ****
             (compiler-let . let) ;barf
             (handler-bind . let) (restart-bind . let)
             (locally 1)
!            ;(loop ...)
             (:method (&lambda &body)) ; in `defgeneric'
             (multiple-value-bind ((&whole 6 &rest 1) 4 &body))
             (multiple-value-call (4 &body))
--- 499,505 ----
             (compiler-let . let) ;barf
             (handler-bind . let) (restart-bind . let)
             (locally 1)
!            ;(loop         lisp-indent-loop)
             (:method (&lambda &body)) ; in `defgeneric'
             (multiple-value-bind ((&whole 6 &rest 1) 4 &body))
             (multiple-value-call (4 &body))



reply via email to

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