emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] emacs-26 8f7d35c 3/3: Stop using indent-line-to in lisp-in


From: Noam Postavsky
Subject: [Emacs-diffs] emacs-26 8f7d35c 3/3: Stop using indent-line-to in lisp-indent-line (Bug#32014)
Date: Mon, 9 Jul 2018 20:45:17 -0400 (EDT)

branch: emacs-26
commit 8f7d35cabdbeb2404d53af39c5d7c12e870fa1cb
Author: Noam Postavsky <address@hidden>
Commit: Noam Postavsky <address@hidden>

    Stop using indent-line-to in lisp-indent-line (Bug#32014)
    
    This is partial revert of "Remove ignored argument from
    lisp-indent-line", because `indent-line-to' doesn't respect field
    boundaries.
    * lisp/emacs-lisp/lisp-mode.el (lisp-indent-line): Use delete-region
    and indent-to instead of `indent-line-to'.
    * test/lisp/emacs-lisp/lisp-mode-tests.el
    (lisp-indent-with-read-only-field): Expect to pass.
    
    Don't merge to master, we will fix indent-line-to there instead.
---
 lisp/emacs-lisp/lisp-mode.el            | 10 ++++++++--
 test/lisp/emacs-lisp/lisp-mode-tests.el |  1 -
 2 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/lisp/emacs-lisp/lisp-mode.el b/lisp/emacs-lisp/lisp-mode.el
index 94be5ac..3a03b56 100644
--- a/lisp/emacs-lisp/lisp-mode.el
+++ b/lisp/emacs-lisp/lisp-mode.el
@@ -867,7 +867,9 @@ by more than one line to cross a string literal."
   (interactive)
   (let ((pos (- (point-max) (point)))
         (indent (progn (beginning-of-line)
-                       (or indent (calculate-lisp-indent (lisp-ppss))))))
+                       (or indent (calculate-lisp-indent (lisp-ppss)))))
+       (shift-amt nil)
+       (beg (progn (beginning-of-line) (point))))
     (skip-chars-forward " \t")
     (if (or (null indent) (looking-at "\\s<\\s<\\s<"))
        ;; Don't alter indentation of a ;;; comment line
@@ -879,7 +881,11 @@ by more than one line to cross a string literal."
          ;; as comment lines, not as code.
          (progn (indent-for-comment) (forward-char -1))
        (if (listp indent) (setq indent (car indent)))
-        (indent-line-to indent))
+       (setq shift-amt (- indent (current-column)))
+       (if (zerop shift-amt)
+           nil
+         (delete-region beg (point))
+         (indent-to indent)))
       ;; If initial point was within line's indentation,
       ;; position after the indentation.  Else stay at same point in text.
       (if (> (- (point-max) pos) (point))
diff --git a/test/lisp/emacs-lisp/lisp-mode-tests.el 
b/test/lisp/emacs-lisp/lisp-mode-tests.el
index 2ac0e5c..8598d41 100644
--- a/test/lisp/emacs-lisp/lisp-mode-tests.el
+++ b/test/lisp/emacs-lisp/lisp-mode-tests.el
@@ -226,7 +226,6 @@ Expected initialization file: `%s'\"
 
 (ert-deftest lisp-indent-with-read-only-field ()
   "Test indentation on line with read-only field (Bug#32014)."
-  :expected-result :failed
   (with-temp-buffer
     (insert (propertize "prompt> " 'field 'output 'read-only t
                         'rear-nonsticky t 'front-sticky '(read-only)))



reply via email to

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