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.
This commit is contained in:
Noam Postavsky 2018-06-29 19:58:58 -04:00
parent db3f779780
commit 8f7d35cabd
2 changed files with 8 additions and 3 deletions

View file

@ -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))

View file

@ -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)))