Remove the "def" indentation heuristic

* lisp/emacs-lisp/lisp-mode.el (lisp-indent-function): Don't
indent function calls with names that that start with "def"
specially (bug#43329).
This commit is contained in:
Lars Ingebrigtsen 2021-10-18 10:00:20 +02:00
parent ef9fa3682a
commit 32df203423
3 changed files with 34 additions and 3 deletions

View file

@ -164,6 +164,26 @@ Emacs buffers, like indentation and the like. The new ert function
* Incompatible Lisp Changes in Emacs 29.1
---
** 'def' indentation changes.
In 'emacs-lisp-mode', forms with a symbol with a name that start with
"def" have been automatically indented as if they were 'defun'-like
forms, for instance:
(defzot 1
2 3)
This heuristic has now been removed, and all functions/macros that
want to be indented this way have to be marked with
(declare (indent defun))
or the like. If the function/macro definition itself can't be
changed, the indentation can also be adjusted by saying something
like:
(put 'defzot 'lisp-indent-function 'defun)
---
** The 'inhibit-changing-match-data' variable is now obsolete.
Instead, functions like 'string-match' and 'looking-at' now take an

View file

@ -1220,9 +1220,6 @@ Lisp function does not specify a special indentation."
'lisp-indent-function)
(get (intern-soft function) 'lisp-indent-hook)))
(cond ((or (eq method 'defun)
(and (null method)
(> (length function) 3)
(string-match "\\`def" function))
;; Check whether we are in flet-like form.
(lisp--local-defform-body-p state))
(lisp-indent-defform state indent-point))

View file

@ -57,3 +57,17 @@ Name: defvar-keymap
:foo bar
"\r" #'eww-follow-link)
=-=-=
Name: def-indent1
=-=
(defzot-does-not-exist 1
2 3)
=-=-=
Name: def-indent2
=-=
(define-keymap 1
2 3)
=-=-=