* support double prompt
* clippy warning
* better cursor position
* Move to estimating the right prompt cutoff
* refactor to use line_width
* refactor to use line_width
Co-authored-by: Fernando Herrera <fernando.j.herrera@gmail.com>
* test big buffer
* clippy error
* more clippy corrections
* extra else for position
* debug cursor
* moving to debug section
* hints in big buffer
* case for prompt one line
* corrected extra line
Fixes `history_search_paint`:
- Fix unnecessary clear of single line
- Ensure LF to CRLF in search results
Fixes `Painter`:
- Make sure that Color is cleared after prompt (Currently depends on
Highlighter to provide a new color)
- Remove unnecessary fn
Introduce simple highlighting of the search term in the search result:
- Introduce `SingleMatchHighlighter` that will highlight all matches of
the search string
- Rename `DefaultHighlighter` to `ExampleHightlighter` as the behavior
seems not very useful for default use.
- Extract styling operations into styled text
* Add issue templates
As we often have to consider certain platform/terminal editor specific things as potential sources of bugs, let's nudge people to provide this info
* Delete githubs default form
There are latent concerns about unicode correctness, but as long as
crossterm/hints are providing correct chars/strs this is neither a security risk
(no unchecked/unsafe string ops on our side) nor
a DoS risk.
- Made move up and move down unicode safe
- Added the option to constrict the char search (vi `f` `F` `t` `T`) to
the current line as usual in vi
- Improved test coverage
* prompt moves based on hint
* checked sub for the prompt
* checked sub for the prompt
* using promplines
* clean flush
* split lines before print
* test with full print
* test with full print
* removed flush
* no split
* drawing function with prompt
* replacing space return to string
* history search in repaint buffer
* using last row
* removed extra required lines
- current line detection was off on the first position of a following
line
- find_current_line_end was not correctly aware of CRLF platforms
- Increase of coverage for some old functions
- Moves to start and beginning of the line
- Make start and end of buffer available for move via `Ctrl-Home` and
`Ctrl-End`
- Support vi style cutting of whole lines in the cut buffer.
- add vi style `p` after paste in addition to before cursor paste with
`P` or in emacs mode
- Enables vi style `dd` and paste
- Make sure the line to end cut and clear operations work only on the
line
* Disable hints during history traversal
Additional autosuggestion (history) hints are confusing while
navigating through the history.
Example history:
```
hello test
hello
something else
hello world
whatever
```
- Type `h`
- Press up arrow
- Prefix based history search will return `hello world`
- Press up arrow again
- Previously `hello <hint>world</hint>` now just `hello`
* Reduce code duplication before painting
* Move history newline escape to the file IO
Avoids potential interference with history search, makes
`History::iter_chronologic` nice again, simplifies it regarding hints
and should address the `history` command in a better way.
+ Extract escape
+ Remove unwrap
* Remove unnecessary optional history allocation
No need to clone if entry is duplicate or empty
* Offset setting changes
* Rename `PromptWidget` to `PromptCoordinates`
* Explicit setters
* Set offset implicitly on `full_repaint`
* Rename origin and offset
As suggested by JT
origin -> prompt_start
offset -> input_start
* Move tracking of offsets and size into painter
Relatively basic refactor of all tracking of prompt/input offsets as
well as the terminal size into the painter.
Some cooperative behavior in the engine is still required
Wrapping handler is currently still a crutch in the engine as it is not
`InsertChar` specific and should be handled for every buffer change
instead
* Simplify restore from history stearch
Prompt is simply updated via full repaint
* Fix ansi coloring for history prompt
also ignore reset color in non ansi colored mode
* Make pedantic clippy happier
* Ensure prompt creation is tight and not wrapping
Fix additional line that is created upon prompt creation if the previous
output was printing a new line. Also ensures that line clearing and
regular prompt creation at the bottom of the screen doesn't cause
scrolling issues (Currently a hardcoded solution for the two line
prompt)
Also reduces the API surface for tools only necessary to deal within raw
mode.
* Fix doctests for internals removal
`print_crlf()` was removed from the public API as it should only be used
in raw mode for internal stuff.
As soon as we leave `Reedline.read_line()` raw mode should be disabled
and the regular print macros should work as expected
Panicking inside reedline (or bubbling up an Err inside reedline's
critical sections that gets unwrapped/expected by the hosting
application) leaves the terminal in a bad state. Workaround that should
also work without cooperation by the consumer would be to include a call
to `disable_raw_mode` in the `Drop` trait. With standard stack-unwinding
panics will call the drop.
Calling `crossterm::terminal::disable_raw_mode` twice seems to be fine
if the program started in non-raw mode (under linux)
* Improve undo of EditCommands
Address #190
Formalize the undo role of different edit commands via exhaustive
matching
Will track every move, but won't cause inconsistent cursor jumps while
undoing
* Multiline continuation prompt introduced
* Hardcoded multiline continuation prompt styling
A way to convert `crossterm::style::Color` in `nu_ansi_term::Color` must
be found/implemented. This enables creating a Style from it.
Otherwise, it is necessary that the Style of the prompt is accessible
from everywhere.
* Forward Prompt's multline prompt to rendering func
* Finish #185
Co-authored-by: Antonio Natilla <antonio.natilla@studenti.unimi.it>
Co-authored-by: sholderbach <ho.steve@web.de>