summaryrefslogtreecommitdiff
path: root/Userland/Libraries/LibLine
AgeCommit message (Collapse)Author
2022-09-18Libraries: Add missing includes, add namespace qualifiersBen Wiederhake
This remained undetected for a long time as HeaderCheck is disabled by default. This commit makes the following file compile again: // file: compile_me.cpp #include <LibDNS/Question.h> // That's it, this was enough to cause a compilation error. Likewise for most other files touched by this commit.
2022-07-17LibLine: Ignore empty spans when stylizingsin-ack
Previously we would erroneously apply the stylization to the whoever called stylize next. Now we first check whether the span is non-empty before stylizing. All non-empty spans must have at least one character in them (end-exclusive).
2022-07-12Everywhere: Replace single-char StringView op. arguments with charssin-ack
This prevents us from needing a sv suffix, and potentially reduces the need to run generic code for a single character (as contains, starts_with, ends_with etc. for a char will be just a length and equality check). No functional changes.
2022-07-12Everywhere: Add sv suffix to strings relying on StringView(char const*)sin-ack
Each of these strings would previously rely on StringView's char const* constructor overload, which would call __builtin_strlen on the string. Since we now have operator ""sv, we can replace these with much simpler versions. This opens the door to being able to remove StringView(char const*). No functional changes.
2022-07-12Everywhere: Explicitly specify the size in StringView constructorssin-ack
This commit moves the length calculations out to be directly on the StringView users. This is an important step towards the goal of removing StringView(char const*), as it moves the responsibility of calculating the size of the string to the user of the StringView (which will prevent naive uses causing OOB access).
2022-06-22LibLine: Use the real shown line count around in cleanup()Ali Mohammad Pur
Previously we would leave artifacts on screen if a change caused the buffer to span fewer lines than the current buffer. This commit records the shown line count and uses that instead of trying to guess the previous line count (and failing most of the time).
2022-05-25LibLine: Add support for user-controlled maskingAli Mohammad Pur
2022-05-25LibLine: Turn bracketed paste mode off in Editor::restore()Ali Mohammad Pur
We turn it on in initialize(), so turn it off in restore(). Not all CLI applications can handle this mode correctly, and there's no reason to leave it on.
2022-04-18LibLine: Reset next suggestion index when resetting suggestionsAli Mohammad Pur
Otherwise we'd end up starting at the previous index on another suggestion list.
2022-04-18LibLine: Make it possible to avoid autocompletion if requestedAli Mohammad Pur
Setting 'allow_commit_without_listing' to false will now make LibLine show the suggestion before actually committing to it; this is useful for completions that will replace all the user input, where mistakes can go unnoticed without some visual cue.
2022-04-18LibLine: Respect the provided completion static offsetAli Mohammad Pur
Now that we can resolve these correctly and they're per-suggestion, we can finally use them for their intended purpose of letting suggestions overwrite stuff in the buffer.
2022-04-18LibLine: Don't use fdopen() for stream in edit_in_external_editor()Ali Mohammad Pur
We would have to fclose() it to be clean and nice, but that would close the fd; instead just duplicate it and write through that, this makes it actually write to the file.
2022-04-01Everywhere: Run clang-formatIdan Horowitz
2022-03-27LibLine: Avoid pointless size_t <-> ssize_t castAli Mohammad Pur
Just a small cleanup.
2022-03-27LibLine: Handle read events seriallyAli Mohammad Pur
Previously LibLine accepted read callbacks while it was in the process of reading input, this wasn't an issue as no async code was being executed up until the Shell autocompletion came along. Simply defer input processing while processing input to avoid causing problems. Fixes #13280.
2022-03-26LibLine: Add a display trivia field to suggestionsAli Mohammad Pur
These strings will be shown next to the completions as an optional hint or description.
2022-03-13Libraries: Use default constructors/destructors in LibLineLenny Maiorani
https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#cother-other-default-operation-rules "The compiler is more likely to get the default semantics right and you cannot implement these functions better than the compiler."
2022-03-06LibLine: Reset suggestion index back to zero when fetching new onesAli Mohammad Pur
2022-03-06LibLine: Make sure suggestions have their *_views set correctlyAli Mohammad Pur
2022-03-06LibLine: Allow the embedder to optionally handle pasted data itselfAli Mohammad Pur
If the 'on_paste' callback is set, LibLine will buffer the pasted data and pass it over to the embedder to use as it pleases; in practice, this means that the users of LibLine can now escape or otherwise handle pasted data without the incremental codepoint-by-codepoint buildup.
2022-03-06LibLine+Userland: Make suggestion offsets per-suggestionAli Mohammad Pur
This allows the user to modify different parts of the input with different suggestions.
2022-03-06LibLine: Never assume a 25x80 terminalAli Mohammad Pur
Just reuse the lldb hack if the normal stderr ioctl fails for any reason, and read the size directly off /dev/tty.
2022-02-27LibLine: Update inline search cursor after kill_line (^U) commandNícolas F. R. A. Prado
After the kill_line (^U) command was used, searching backwards in the history would still filter based on the text previous to the deletion. Update the inline search cursor like already done in other internal functions, so the text used for search is the current one.
2022-02-16LibCore+Everywhere: Return ErrorOr from ConfigFile factory methodsSam Atkins
I've attempted to handle the errors gracefully where it was clear how to do so, and simple, but a lot of this was just adding `release_value_but_fixme_should_propagate_errors()` in places.
2022-02-13LibJS+LibLine: Run clang-formatAndreas Kling
2022-02-13LibLine: Fix loading of terminal dimensions when running under lldbAnonymous
2022-01-07LibLine: Replace call to vfork() with fork()Andrew Kaster
We don't actually have a non-trivial vfork implementation, so just call fork(). As a bonus, vfork() is deprecated in XCode 13.1 when targeting macOS Big Sur, so this removes a blocker from updating our macOS CI version.
2022-01-01LibLine: Avoid unnecessary copies in EditorBen Wiederhake
2021-12-16LibLine: Switch all files to use east-constAli Mohammad Pur
2021-12-16LibLine: Update the prompt origin after resize + suggestion redisplayAli Mohammad Pur
2021-12-16LibLine: Take the prompt into account when adjusting for a scrolled viewAli Mohammad Pur
Otherwise we'd end up putting the prompt *after* the previous prompt instead of *over* it when showing suggestions that span more lines than are available without scrolling.
2021-11-11Everywhere: Pass AK::StringView by valueAndreas Kling
2021-11-10AK: Make ByteBuffer::try_* functions return ErrorOr<void>Andreas Kling
Same as Vector, ByteBuffer now also signals allocation failure by returning an ENOMEM Error instead of a bool, allowing us to use the TRY() and MUST() patterns.
2021-10-08Libraries: Fix -Wunreachable-code warnings from clangNico Weber
2021-09-07Everywhere: Behaviour => BehaviorAndreas Kling
2021-09-06Everywhere: Make ByteBuffer::{create_*,copy}() OOM-safeAli Mohammad Pur
2021-09-06Everywhere: Use OOM-safe ByteBuffer APIs where possibleAli Mohammad Pur
If we can easily communicate failure, let's avoid asserting and report failure instead.
2021-09-02Userland: Migrate to argument-less deferred_invokesin-ack
Only one place used this argument and it was to hold on to a strong ref for the object. Since we already do that now, there's no need to keep this argument around since this can be easily captured. This commit contains no changes.
2021-08-22Everywhere: Rename get in ConfigFile::get_for_{lib,app,system} to opennetworkException
This patch brings the ConfigFile helpers for opening lib, app and system configs more inline with the regular ConfigFile::open functions.
2021-07-21LibLine: Correct spelling mistake in variable nameJamie Mansfield
This corrects the spelling of 'matching' from 'macthing'.
2021-07-20LibLine: Avoid excessive write() syscalls when refreshing the displayAli Mohammad Pur
Previously, we were generating the display update one character at a time, and writing them one at a time to stderr, which is not buffered, doing so caused one syscall per character printed which is s l o w (TM) This commit makes LibLine write the update contents into a buffer, and flush it after all the update is generated :^)
2021-07-20LibLine: Reset the suggestion page offset when finding the max lengthAli Mohammad Pur
Otherwise, something like shift+tab->tab->tab will mess up the page contents (assuming that the max lengths in the pages are different).
2021-07-02AK: Implement String::find_any_of() and StringView::find_any_of()Max Wipfli
This implements StringUtils::find_any_of() and uses it in String::find_any_of() and StringView::find_any_of(). All uses of find_{first,last}_of have been replaced with find_any_of(), find() or find_last(). find_{first,last}_of have subsequently been removed.
2021-06-23LibLine: Recalculate the origin on resizeAli Mohammad Pur
2021-06-07LibLine: Actually remove the two levels of deferred_invokeAli Mohammad Pur
4d5cdcc89394259019828f123039104d6f4039e2 partially reverted the changes from d8c5eeceabbeaedc29823f12cc8a9cfac6f84686, but it reverted too much and reintroduced the bug. This commit finally fixes the actual bug. The author hasn't been in his best committing state today.
2021-06-07LibLine: Partially revert d8c5eec and remove unrelated codeAli Mohammad Pur
This is a partial revert of d8c5eeceabbeaedc29823f12cc8a9cfac6f84686 as it contained unrelated code that was committed accidentally, which broke history on LibLine.
2021-06-06LibLine: Keep the CSI bytes alive across read eventsAli Mohammad Pur
Otherwise we would lose the CSI parameters and intermediates if the whole sequence was split between two reads. Fixes #7835.
2021-06-06LibLine: Stop registering the Notifier as a child ObjectAli Mohammad Pur
We're already keeping it alive via `m_notifier`. This makes the event loop quitting logic simpler by making less deferred calls and removes a race condition where the notifier would be deleted before the second deferred_invoke() would be invoked, leading to a nullptr dereference. Fixes #7822.
2021-06-04LibLine: Actually cancel the search editor on Ctl-Cbrapru
When the search editor calls on really_quit_event_loop to cancel the search, the command loaded in m_buffer would actually execute because really_quit_event_loop sends a new line character and then afterwards clears the buffer. By using end_search prior to exiting the event loop, this patch will appropriately clear the buffer, not execute any commands, and preserve the original loaded buffer after returning from a canceled search.
2021-06-03Everywhere: Replace ctype.h to avoid narrowing conversionsMax Wipfli
This replaces ctype.h with CharacterType.h everywhere I could find issues with narrowing conversions. While using it will probably make sense almost everywhere in the future, the most critical places should have been addressed.