From: martin rudalics <rudalics@gmx.at>
To: nuxdoors@cegetel.net
Cc: bug-gnu-emacs@gnu.org
Subject: Re: reindent-then-newline-and-indent doesn't indent properly in emacs 22.1
Date: Sat, 13 Oct 2007 10:40:59 +0200 [thread overview]
Message-ID: <4710849B.30104@gmx.at> (raw)
In-Reply-To: <470FFCF1.5050201@cegetel.net>
> reindent-then-newline-and-indent doesn't indent properly.
>
> The command currently calls delete-horizontal-space after indenting the
> line, which in effect deletes the re-indentation since at that very
> moment the point is at the beginning of the text. If you swap the order
> of the delete-horizontal-space and indent-according-to-mode functions it
> then works as intended, like this :
`delete-horizontal-space' is needed to get rid of whitespace at the
_end_ of the old line, that is, after the position of `point' when you
invoked that command. If `reindent-then-newline-and-indent' really
deletes whitespace inserted by `indent-according-to-mode' before text on
the old line there is a bug. Can you give us a practical example where
this happens?
> (defun reindent-then-newline-and-indent ()
> "Reindent current line, insert newline, then indent the new line.
> Indentation of both lines is done according to the current major mode,
> which means calling the current value of `indent-line-function'.
> In programming language modes, this is the same as TAB.
> In some text modes, where TAB inserts a tab, this indents to the
> column specified by the function `current-left-margin'."
> (interactive "*")
> (let ((pos (point)))
> ;; Be careful to insert the newline before indenting the line.
> ;; Otherwise, the indentation might be wrong.
> (newline)
> (save-excursion
> (goto-char pos)
> (delete-horizontal-space t)
> (indent-according-to-mode))
> (indent-according-to-mode)))
The problem with this is that the first `indent-according-to-mode' may
insert whitespace at the end of an otherwise empty line. Try to invoke
your function at the beginning of a non-empty line.
next prev parent reply other threads:[~2007-10-13 8:40 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-10-12 23:02 reindent-then-newline-and-indent doesn't indent properly in emacs 22.1 nuxdoors
2007-10-13 8:40 ` martin rudalics [this message]
2007-10-13 22:24 ` nuxdoors
2007-10-14 13:23 ` nuxdoors
2007-10-14 18:26 ` martin rudalics
[not found] ` <mailman.2040.1192368226.18990.bug-gnu-emacs@gnu.org>
2007-10-14 19:48 ` Stefan Monnier
2007-10-16 15:19 ` Stefan Monnier
2007-10-15 1:37 ` Richard Stallman
2007-10-16 0:07 ` nuxdoors
2007-10-16 19:09 ` Richard Stallman
2007-10-16 20:39 ` nuxdoors
[not found] ` <E1Ii13p-0002HF-Q4@fencepost.gnu.org>
2007-10-19 1:07 ` nuxdoors
2007-10-14 12:46 ` nuxdoors
2007-10-15 1:37 ` Richard Stallman
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4710849B.30104@gmx.at \
--to=rudalics@gmx.at \
--cc=bug-gnu-emacs@gnu.org \
--cc=nuxdoors@cegetel.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.