emacs-diffs
[Top][All Lists]
Advanced

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

master be493ea 1/2: Revert "Fix regressions in cl-flet indentation"


From: Mattias Engdegård
Subject: master be493ea 1/2: Revert "Fix regressions in cl-flet indentation"
Date: Thu, 30 Sep 2021 10:52:27 -0400 (EDT)

branch: master
commit be493ea67acdc9367e29025382b534ec4339302f
Author: Mattias Engdegård <mattiase@acm.org>
Commit: Mattias Engdegård <mattiase@acm.org>

    Revert "Fix regressions in cl-flet indentation"
    
    This reverts commit c42af5aee74f310bdcd63aac96b1c02ec07a1c50.
---
 etc/NEWS                     |  3 ---
 lisp/emacs-lisp/lisp-mode.el | 53 +++++++++-----------------------------------
 2 files changed, 10 insertions(+), 46 deletions(-)

diff --git a/etc/NEWS b/etc/NEWS
index 8b601c0..36ad63e 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -3302,9 +3302,6 @@ These forms now indent like this:
                (* x x)))
       (bla 42))
 
-This change also affects 'cl-macrolet', 'cl-flet*' and
-'cl-symbol-macrolet'.
-
 
 * Incompatible Lisp Changes in Emacs 28.1
 
diff --git a/lisp/emacs-lisp/lisp-mode.el b/lisp/emacs-lisp/lisp-mode.el
index cd05480..7ce857e 100644
--- a/lisp/emacs-lisp/lisp-mode.el
+++ b/lisp/emacs-lisp/lisp-mode.el
@@ -1106,8 +1106,8 @@ is the buffer position of the start of the containing 
expression."
               (t
                normal-indent))))))
 
-(defun lisp--local-defform-body-p (state)
-  "Return non-nil when at local definition body according to STATE.
+(defun lisp--local-defform-body (state)
+  "Return non-nil if at local definition body according to STATE.
 STATE is the `parse-partial-sexp' state for current position."
   (when-let ((start-of-innermost-containing-list (nth 1 state)))
     (let* ((parents (nth 9 state))
@@ -1121,42 +1121,11 @@ STATE is the `parse-partial-sexp' state for current 
position."
                 second-cons-after nil))
         (pop second-cons-after)
         (pop parents))
-      (when second-order-parent
-        (save-excursion
-          (goto-char (1+ second-order-parent))
-          (and (memq (read (current-buffer))
-                     '( cl-flet cl-labels cl-macrolet cl-flet*
-                        cl-symbol-macrolet))
-               ;; Now we must check that we are
-               ;; in the second element of the flet-like form.
-               ;; It would be easier if `parse-partial-sexp' also recorded
-               ;; relative positions of subsexps in supersexps
-               ;; but it doesn't so we check manually.
-               ;;
-               ;; First, we must be looking at list now.
-               (ignore-errors (when (= (scan-lists (point) 1 0)
-                                       (scan-sexps (point) 1))
-                                ;; Looking at list; descend into it:
-                                (down-list 1)
-                                t))
-               ;; In Wishful Lisp, the following form would be
-               ;; (cl-member start-of-innermost-containing-list
-               ;;            (points-at-beginning-of-lists-at-this-level)
-               ;;            :test #'=)
-               (cl-loop
-                with pos = (ignore-errors
-                             ;; The first local definition may be indented
-                             ;; with whitespace following open paren.
-                             (goto-char (scan-lists (point) 1 0))
-                             (goto-char (scan-lists (point) -1 0))
-                             (point))
-                while pos
-                do (if (= start-of-innermost-containing-list pos)
-                       (cl-return t)
-                     (setq pos (ignore-errors
-                                 (goto-char (scan-lists (point) 2 0))
-                                 (goto-char (scan-lists (point) -1 0))
-                                 (point)))))))))))
+      (and second-order-parent
+           (save-excursion
+             (goto-char (1+ second-order-parent))
+             (memq (read (current-buffer))
+                   '(cl-flet cl-labels)))))))
 
 (defun lisp-indent-function (indent-point state)
   "This function is the normal value of the variable `lisp-indent-function'.
@@ -1191,9 +1160,7 @@ Lisp function does not specify a special indentation."
     (if (and (elt state 2)
              (not (looking-at "\\sw\\|\\s_")))
         ;; car of form doesn't seem to be a symbol
-        (if (lisp--local-defform-body-p state)
-            ;; We nevertheless check whether we are in flet-like form
-            ;; as we presume local function names could be non-symbols.
+        (if (lisp--local-defform-body state)
             (lisp-indent-defform state indent-point)
           (if (not (> (save-excursion (forward-line 1) (point))
                       calculate-lisp-indent-last-sexp))
@@ -1217,8 +1184,8 @@ Lisp function does not specify a special indentation."
                   (and (null method)
                        (> (length function) 3)
                        (string-match "\\`def" function))
-                   ;; Check whether we are in flet-like form.
-                   (lisp--local-defform-body-p state))
+                   ;; Check whether we are in flet or labels.
+                   (lisp--local-defform-body state))
               (lisp-indent-defform state indent-point))
              ((integerp method)
               (lisp-indent-specform method state



reply via email to

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