Subject: 24.4.50; `line-move-ignore-invisible': doc and purpose not clear

From: Drew Adams <[email-masked]>
Date: Fri, 16 May 2014 13:52:58 -0700 (PDT)

1. The doc string says only that `next-line' and `previous-line' ignore
invisible lines.  What does it mean for these commands to "ignore
invisible lines" - what does "ignore" mean here?  What's the
user-visible BEHAVIOR difference between a nil and a non-nil value?
Why/when might a user change the value to nil?

2. The doc string speaks of invisible lines.  But (elisp) `Invisible
Text' speaks of "invisible newlines" (not lines), which is presumably
something different (newline chars vs lines of any chars except newline,
possibly including the separating newlines).  Are both true?  Which?

3 The manual speaks of "the user-level line motion commands", not just
`next-line' and `previous-line'.  Is there a difference?  What other
commands are involved here, besides those two?

4. This Elisp manual node is not very clear in general.  Again, what
does it mean for these line commands to ignore invisible newlines?  Or,
for that matter, for them to "not care whether the text is invisible"?
What user-visible BEHAVIOR difference is there?

5. After saying that we provide option `line-move-ignore-invisible'
specifically to let you prevent line motion commands from ignoring
invisible newlines (whatever that might mean!), this node says that if
ANY command ends with point in a certain position relative to invisible
text, then the cursor is automatically moved past that stretch of
invisible text (one direction or the other).  How is this related to the
previous text about line motion commands and
`line-move-ignore-invisible'?

If a user ends up understanding something coherent and useful from this
text, s?he is lucky indeed.

In GNU Emacs 24.4.50.1 (i686-pc-mingw32)
 of 2014-04-29 on ODIEONE
Bzr revision: 117031 [email-masked]
Windowing system distributor `Microsoft Corp.', version 6.1.7601
Configured using:
 `configure --prefix=/c/Devel/emacs/snapshot/trunk
 --enable-checking=yes,glyphs 'CFLAGS=-O0 -g3'
 LDFLAGS=-Lc:/Devel/emacs/lib 'CPPFLAGS=-DGC_MCHECK=1
 -Ic:/Devel/emacs/include''