Thread (9 messages) flat view 9 messages, 4 authors, 2018-08-20

Re: "less -F" is broken

From: Mark Nudelman <hidden>
Date: 2018-08-20 15:54:29

On 8/16/2018 10:10 AM, Linus Torvalds wrote:
One option that I didn't try to go for - because I just don't know the
less code base well enough - is to basically make the behavior of '-F'
be something like this:

  - as long as all the lines are short and well-behaved, and we haven't
seen enough lines to fill the screen, act like 'cat' and just feed
them through

  - when you fill the screen (or when you hit some other condition that
makes you go "now I won't exit" - that could be a long line, but maybe
it could also be the user giving keyboard input for a less command?)
you send the init sequence and just redraw the whole screen.
I'm not sure that this would be a very nice user experience.  On a 
terminal where the init sequence opens an alternate screen, some lines 
from the start of the file would be printed in the main screen, and then 
the whole file would be viewed in the alternate screen.  After exiting 
less, the user would see his main screen with some lines from the first 
page of the file displayed and then cut off at a seemingly arbitrary 
point.  Seems like that could be confusing and annoying.

But let's say that that was all the user was interested in, and the
user presses 'q' to quit less. That doesn't work at all - it will wait
for that full ten seconds.

That actually happens even without -F too.

Wouldn't it be good to react to things like searches to highlight
something (and to 'quit' for the 'never mind, alteady got it' case)
even if there isn't enough data to fill the whole screen yet?

that said, ^C works, and this is not new behavior, so I'm just
throwing this out as a "maybe a different approach would fix _both_
the -F behavior _and_ the above traditional issue"?
This issue is, as you say, not related to the -F issue, but arises 
because less doesn't have a way to be reading a file and simultaneously 
react to terminal key presses.  When I first wrote less, there was no 
easy way to do this in Unix.  Less also runs on other OSes which don't 
provide this functionality.  The best I was able to do was to allow 
ctrl-C to interrupt the read.  Of course in a modern OS that has 
select() or similar functionality this could be implemented, but I think 
it would require some largish changes to the architecture.  (Or maybe 
not; I haven't really investigated this in detail.)

BTW, your first message seems to indicate that you didn't find the less 
project on github.  It's at https://github.com/gwsw/less (mentioned in 
the README).  The latest version (v535) has the -F change implemented, 
but I haven't yet released this for beta testing.

--Mark
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help