summaryrefslogtreecommitdiff
path: root/Userland/Utilities/less.cpp
AgeCommit message (Collapse)Author
2022-01-08less: Fix crash on empty inputRummskartoffel
2022-01-07Everywhere: Fix spelling mistakesmjz19910
2021-12-29less: Handle tabs in line wrappingPeter Elliott
Before tabs were treated as a width of 1, which would cause issues with man page headers.
2021-12-29Userland: Port less(1) to LibMainPeter Elliott
2021-12-29less: Remove all formatting before printing status linePeter Elliott
2021-12-29less: Dynamically re-wrap lines on resizePeter Elliott
This change moves from wrapping lines at the start to operating on whole lines and wrapping them as needed. This has a few added benefits: - line numbers are now always accurate. - going to a line actually works
2021-11-11Everywhere: Pass AK::StringView by valueAndreas Kling
2021-11-01less: Fix condition to read more dataBen Wiederhake
While mathematically equivalent, the presence of a size_t forces the comparison to work with size_t's. This means that '-1 < 0' is false, contrary to the 'mathematically pure' interpretation of the inequality.
2021-10-31Userland: Handle terminal window resizing in less(1)Kyle Ambroff-Kao
Before this patch less would query the terminal geometry only at startup and use this information to render the file when appropriate. If the terminal is resized then the output is broken in several different ways because of this. This patch adds a SIGWINCH signal handler receive notification any time the terminal is resized. This signal handler just sets a flag to notify the main loop that a resize has occurred. The main loop of the program just calls get_key_sequence() to get input from the user, interpreting keystrokes as commands like scroll up or down. The get_key_sequence() function has been changed to return Optional<String>, so it either returns a keystroke from the user or it returns nothing as an empty Optional. While the user is not pressing any keys on the keyboard, the program is blocking on a read() system call in get_key_sequence(). When SIGWINCH is received, this read() will return with -1 and errno is set to EINTR since the system call was interrupted by the signal. When this happens we just return an empty Optional. The mainloop now checks to see if a resize has been requested by checking the flag, and if it has it performs a resize. init() now just calls resize() since the required logic is the same. Setters for m_filename and m_prompt are removed because these are now just initialized by the constructor, as they never change for the life of the program.
2021-10-01Userland: Fix typosNico Weber
2021-09-18AK: Make Utf8View constructors inline and remove C string constructorAndreas Kling
Using StringView instead of C strings is basically always preferable. The only reason to use a C string is because you are calling a C API.
2021-09-06Everywhere: Make ByteBuffer::{create_*,copy}() OOM-safeAli Mohammad Pur
2021-09-01Everywhere: Use my cool new @serenityos.org email addressPeter Elliott
2021-07-29Utilities: Make 'less' act more like 'more' when emulating 'more' :^)Lennon Donaghy
2021-07-29Utilities: Add half-page scrolling + number modifiers to 'less'Lennon Donaghy
- 'u' and 'd' now scroll up and down half a page - Typing a number followed by 'j', 'k', 'return', 'up' or 'down' will scroll that many lines in the appropriate direction - Typing a number followed by 'g' or 'G' will scroll directly to the line corresponding to that number
2021-07-29Utilities: Add fix for 'less' not buffering the correct number of linesLennon Donaghy
'down_n()' now correctly buffers the needed number of lines, previously there were issues with using it to scroll much more than the existing buffer.
2021-07-27Utilities: Allow 'less' to scroll to top/bottom using 'G' and 'g'Lennon Donaghy
2021-07-12Utilities: Make `less` accept 'page up' and 'page down' keysBrandon van Houten
2021-07-10Userland: Add fopen error handling to lessRalf Donau
2021-07-07Userland: Add pledge to lessRalf Donau
2021-07-07Userland: Less: emulate cat when stdout is not a ttyPeter Elliott
This is the most logical behavior when less is used in a pipe.
2021-07-07Userland: Add pager option to man and use less by defaultPeter Elliott
2021-07-07Userland: Add more(1) emulation to less(1)Peter Elliott
This patch also removes the existing implementation of more, as it is now redundant.
2021-07-07Userland: Add minimal prompt support to lessPeter Elliott
GNU less has a pretty cool prompt format language. This patch adds support for the language and specifiers for filename, linenumber, and ending.
2021-07-07Userland: Add less, a better terminal pagerPeter Elliott
less is a re-implementation of gnu less, a terminal pager with backwards scrolling and alternate screen support.