From: Stephen Berman <stephen.berman@gmx.net>
To: Xue Fuqiao <xfq.free@gmail.com>
Cc: 13810@debbugs.gnu.org
Subject: bug#13810: 24.3.50; Docstring of `newline' is confusing
Date: Mon, 25 Feb 2013 13:23:14 +0100 [thread overview]
Message-ID: <87y5ecshu5.fsf@rosalinde.fritz.box> (raw)
In-Reply-To: <20130225180309.53675e52a9cffc46b2478578@gmail.com> (Xue Fuqiao's message of "Mon, 25 Feb 2013 18:03:09 +0800")
On Mon, 25 Feb 2013 18:03:09 +0800 Xue Fuqiao <xfq.free@gmail.com> wrote:
> In the doc string of the function `newline':
>
> Insert a newline, and move to left margin of the new line if it's
> blank.
>
> To reproduce this bug:
>
> emacs -Q
> M-<
> M-: (newline) RET
>
> A new line appears, but the point doesn't move to left margin of the
> first line.
I think you misread the doc string: point should -- and does -- move to
the left margin of the *new* line.
> Maybe the doc string of this function should be improved.
However, unless I'm misreading it, there is indeed room for improvement,
since point moves to the left margin of the new line whether or not it
is blank, so "if it's blank" is misleading and should be deleted.
Your report prompted me to check the code of newline and I think I found
a bug: a comment says, "If the newline leaves the previous line blank,
and we have a left margin, delete that from the blank line", but the
code only checks whether the previous line consists of a *single* space
or tab, so if there's more than one space or tab and the line is
otherwise blank, these won't be deleted. I doubt this asymmetry is
intended, so at least the following patch should be made:
=== modified file 'lisp/simple.el'
*** lisp/simple.el 2013-02-15 23:47:50 +0000
--- lisp/simple.el 2013-02-25 12:20:47 +0000
***************
*** 400,406 ****
"Propertized string representing a hard newline character.")
(defun newline (&optional arg)
! "Insert a newline, and move to left margin of the new line if it's blank.
If option `use-hard-newlines' is non-nil, the newline is marked with the
text-property `hard'.
With ARG, insert that many newlines.
--- 400,406 ----
"Propertized string representing a hard newline character.")
(defun newline (&optional arg)
! "Insert a newline, and move to left margin of the new line.
If option `use-hard-newlines' is non-nil, the newline is marked with the
text-property `hard'.
With ARG, insert that many newlines.
***************
*** 428,434 ****
(save-excursion
(goto-char beforepos)
(beginning-of-line)
! (and (looking-at "[ \t]$")
(> (current-left-margin) 0)
(delete-region (point)
(line-end-position))))
--- 428,434 ----
(save-excursion
(goto-char beforepos)
(beginning-of-line)
! (and (looking-at "[ \t]+$")
(> (current-left-margin) 0)
(delete-region (point)
(line-end-position))))
Actually, if we take the comment literally, the code should check that
the space left on the previous line has the length of left-margin, and
only in that case delete it. But I think the comment doesn't really
intend that, but rather to delete any whitespace left on an otherwise
blank line, which the above patch does.
Steve Berman
next prev parent reply other threads:[~2013-02-25 12:23 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-02-25 10:03 bug#13810: 24.3.50; Docstring of `newline' is confusing Xue Fuqiao
2013-02-25 12:23 ` Stephen Berman [this message]
2013-02-25 12:48 ` Xue Fuqiao
2013-02-25 13:05 ` Stephen Berman
2013-02-25 13:27 ` Xue Fuqiao
2013-02-25 15:50 ` Eli Zaretskii
2013-02-25 22:33 ` Xue Fuqiao
2013-02-26 3:46 ` Eli Zaretskii
2020-01-25 15:39 ` Stefan Kangas
2020-01-25 17:20 ` Eli Zaretskii
2020-01-25 18:05 ` Stefan Kangas
2020-01-25 18:29 ` Eli Zaretskii
2013-02-25 15:30 ` Stefan Monnier
2013-02-25 16:43 ` Stephen Berman
2013-02-25 13:18 ` Stephen Berman
2013-02-25 13:35 ` Xue Fuqiao
2020-09-21 14:35 ` Lars Ingebrigtsen
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=87y5ecshu5.fsf@rosalinde.fritz.box \
--to=stephen.berman@gmx.net \
--cc=13810@debbugs.gnu.org \
--cc=xfq.free@gmail.com \
/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.