[Top][All Lists]
[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))
- [Emacs-diffs] Changes to emacs/lisp/emacs-lisp/cl-indent.el,
Gerd Moellmann <=