Commit graph

53 commits

Author SHA1 Message Date
Aram Drevekenin
640d1058a4
Fix title widechar overflow (#1361)
* fix(ui): make sure wide characters don't cause a title overflow

* style(fmt): rustfmt
2022-04-29 10:30:30 +02:00
Aram Drevekenin
19adb29be5 feat(signals): support XTWINOPS 14 and 16 (and query the terminal for them on startup and SIGWINCH) (#1316)
* feat(signals): get pixel info from terminal emulator

* feat(signals): query for pixel info on sigwinch

* feat(signals): reply to csi 14t and csi 16t

* style(fmt): rustfmt

* style(comments): remove outdated
2022-04-12 18:07:32 +02:00
Aram Drevekenin
6443a727ea
fix(compatibility): ansi scroll down (#1279)
* fix(compatibility): ansi scroll down

* style(fmt): rustfmt
2022-03-28 12:39:54 +02:00
Aram Drevekenin
95e512c36d
fix(compatibility): replace wide characters under cursor properly (#1196)
* fix(compatibility): replace wide characters under cursor properly

* style(fmt): rustfmt
2022-03-09 11:04:07 +01:00
Thomas Linford
a3e69fe6da
fix(copy): rejoin wrapped lines (#1069)
When copying wrapped lines do not treat them as separate lines.
2022-02-21 17:58:54 +01:00
Thomas Linford
10a22c479f
fix(compatibility): resolve fzf crash (#1056)
* grid: add fzf test case
* revert alternate viewport creation to contain an empty row
2022-02-12 12:51:10 +01:00
Thomas Linford
143bbfb0bb
fix(compatibility): do not set scroll buffer in alternate screen (#1032)
avoid moving lines to lines_above when in alternate screen.
adjust resizing when in alternate screen:
* remove extra lines instead of sending to lines_above
* truncate excess characters
2022-02-02 12:56:21 +01:00
Jae-Heon Ji
1d2e303926
feat: add focus attribute in layout (#958)
* feat(layout): add focus attribute in layout

* feat: add state of focus to tab

* chore: i love clippy

* test(layout): update focus options

* feat: add focus pane

* feat: apply focus-pane when layout is only loaded

* change the instruction name for focus-on-tab

* chore: apply cargo-fmt

* test: add e2e testcase
2022-02-01 02:19:21 +09:00
auronandace
00e923cfdc
Implement passing the bell signal to the terminal (#981)
* implement passing the bell signal to the terminal

* Add files via upload

add fixture to test against
2022-01-03 15:50:00 +01:00
Aram Drevekenin
ec4649c7c9
fix(compatibility): handle deleting chars in lines with widechars (#965)
* fix(compatibility): handle deleting chars in lines with widechars

* style(fmt): make rustfmt happy
2021-12-22 17:57:59 +01:00
Aram Drevekenin
52977a761f
fix(compatibility): handle inserting characters after wide character (#964)
* fix(compatibility): handle inserting characters in the middle of a line after a wide character

* style(fmt): make rustfmt happy
2021-12-22 14:34:28 +01:00
Aram Drevekenin
464cb6beec
fix(compatibility): full screen scroll region (#915)
* fix(compatibility): properly handle scrolling when scroll region is full screen

* style(fmt): make clippy and rustfmt happy
2021-12-01 13:01:22 +01:00
Aram Drevekenin
685b51efbb
fix(compatibility): improve handling of wide characters inserted in the middle of existing lines (#806)
* fix(compatibility): handle wide characters inserted in line middle

* fix(compatibility): more wide char handling

* style(fmt): make rustfmt happy

* style(fmt): make clippy happy

* style(fmt): make clippyt happy

* style(fmt): make rustfmt happy... again
2021-10-26 16:43:56 +02:00
Aram Drevekenin
8b3287c452
fix(compatibility): handle cursor movements outside scroll region (#746)
* fix(compatibility): handle cursor movements outside scroll region

* style(fmt): make clippy happy
2021-09-28 15:41:32 +02:00
a-kenji
10abb7050f fixup! adjust fixture layouts 2021-08-26 16:58:37 +02:00
Aram Drevekenin
618c2c376b Merge branch 'tab-layout' of https://github.com/a-kenji/zellij into a-kenji-tab-layout 2021-08-24 10:58:36 +02:00
Aram Drevekenin
e889891604
Fix scrolling (#650)
* fix(grid): scroll up on empty line

* fix(grid): line wrapping while scrolling

* style(grid): fix names

* docs(changelog): document fix
2021-08-19 13:28:08 +02:00
a-kenji
806ffad553 fixup! fix e2e fixtures 2021-07-23 17:44:05 +02:00
Thomas Linford
f93308f211
feat(ui): initial mouse support (#448)
* Initial mouse support

* enable mouse support (termion MouseTerminal)
* handle scroll up and down events

* Allow enabling/disabling of mouse reporting

Store the mouse terminal on OsInputOutput

* WIP: switch pane focus with mouse

* testing to get mouse character selection

* wip mouse selection

* wip: mouse selection

- initial handling of mouse events for
  text selection within a pane
- wide characters currently problematic
- selection is not highlighted

* highlight currently selected text

* improve get currently selected text from TerminalPane

* copy selection to clipboard (wayland only for now)

* Add missing set_should_render on selection update

* Improve text selection

- Strip whitespace from end of lines
- Insert newlines when selection spans multiple lines

* Simplify selection logic

- Remove Range struct
- Selection is not an Option anymore, it's empty when start == end

* copy selection to clipboard with OSC-52 sequence

* Improve text selection with multiple panes

- Constrain mouse hold and release events to currently active pane
- Fix calculation of columns with side by side panes

* fix for PositionAndSize changes

* Fix mouse selection with full screen pane.

- Transform mouse event positions to relative when passing to pane.

* Move selection to grid, rework highlighting.

- Mark selected lines for update in grid output buffer, for now in the
  simplest way possible, but can be made more efficient by calculating
  changed lines only.
- Clear selection on pane resize.
- Re-add logic to forward mouse hold and release events only to
  currently active pane.

* Tidy up selection

- add method to get selection line range
- add method to sort the current selection

* Grid: move current selection up/down when scrolling

- Make the selection work with lines in lines_above and lines_below
- Todo: update selection end when scrolling with mouse button being held
- Todo: figure out how to move selection when new characters are added.

* Grid: move selection when new lines are added

* Keep track of selection being active

- Handle the selection growing/shrinking when scrolling with mouse
  button held down but not yet released.

* Improve selection end with multiple panes

* Tidying up

- remove logging statements, unused code

* Add some unit tests for selection, move position to zellij-utils

* Change Position::new to take i32 for line

* Grid: add unit tests for copy from selection

* add basic integration test for mouse pane focus

* Add basic integration test for mouse scroll

* Use color from palette for selection rendering

* Improve performance of selection render

- Try to minimize lines to update on selection start/update/end

* fixes for updated start method

* fix lines not in viewport being marked for rendering

- the previous optimization to grid selection rendering was always
adding the lines at the extremes of previous selection, causing problems
when scrolling up or down
- make sure to only add lines in viewport

* Disable mouse mode on exit

* use saturating_sub for usize subtractions

* copy selection to clipboard on mouse release

* disable mouse on exit after error

* remove left-over comments

* remove copy keybinding

* add default impl for selection methods in Pane

- remove the useless methods from Impl Pane in PluginPane

* move line diff between selections to selection

* add option to disable mouse mode

* Allow scrolling with mouse while selecting.

* move action repeater to os_input_output, change timeout to 10ms

- change repeater to take an action instead of a position with hardcoded
action

* replace mouse mode integration tests with e2e tests

* cleanup

* cleanup

* check if mouse mode is disabled from merged options

* fix missing changes in tests, cleanup
2021-07-02 16:40:50 +02:00
a-kenji
cafcca0c57 Move layout.rs from server to utils
* give feedback on most errors in the layout-file
2021-06-14 21:55:17 +02:00
Aram Drevekenin
44d67de187
fix(compatibility): support wide characters (#535)
* fix(compatibility): support wide characters

* style(fmt): rustfmt

* style(fmt): make clippy happy
2021-05-26 18:05:43 +02:00
Aram Drevekenin
b93e51cf88
fix(compatibility): implement device reports (#500)
* fix(compatibility): implement device reports

* docs(changelog): update change
2021-05-13 16:09:07 +02:00
Aram Drevekenin
073d39705e
Terminal compatibility: various behaviour fixes (#486)
* fix(compatibility): various behaviour fixes

* style(fmt): rustfmt

* style(fmt): thanks clippy for teaching me about matches!
2021-05-11 11:06:19 +02:00
Aram Drevekenin
837cb8d15a
fix(compatibility): pass vttest 8 (#461)
* fix(compatibility): pass vttest 8

* style(comment): remove unused

* style(grid): sometimes it's just easier to do what clippy wants...
2021-05-05 17:09:24 +02:00
Aram Drevekenin
845211c1ee
Terminal compatibility: Pass vttest 2 and 3 (#447)
* fix(compatibility): pass vttest 2+3

* style(fmt): rustfmt

* style(comment): remove unused

* docs(changelog): update change
2021-05-03 19:11:31 +02:00
Aram Drevekenin
cedd830a2e
Terminal: pass vttest 1 (#408)
* fix(compatibility): pass vttest 1

* fix(tests): move unit tests to a separate file

* style(fmt): rustfmt

* fix(grid): correct comment

* style(fmt): rustfmt
2021-04-29 15:25:08 +02:00
Brooks J Rady
413a24b77f fix(bug): remove buggy expansion boundaries 2021-04-14 11:01:28 +01:00
Aram Drevekenin
7b69fcb8e0
Make fullscreen panes not override the status bar and strider (#209)
* work

* feat(tab): expansion boundary

* fix(layout): add expansion boundary to default layout

* style(fmt): rustfmt

* style(fmt): remove unnecessary comment
2021-02-24 18:00:00 +01:00
Aram Drevekenin
c0a0af3133
fix(compatibility): do not forward tabs to the terminal (#190)
* fix(compatibility): do not forward tabs to the terminal

* style(fmt): rustfmt
2021-02-18 11:07:57 +01:00
Aram Drevekenin
831d26156e
fix(compatibility): get top not to break everything when exiting (#188) 2021-02-17 15:55:38 +01:00
Brooks J Rady
555f9af37a Install default layouts and plugins at build-time 2021-01-11 23:00:19 +00:00
Brooks J Rady
efcd36a52c Added the set_selectable plugin API function 2021-01-11 07:33:35 +00:00
Brooks J Rady
624f842a20 Add support for layouts with parts of a fixed or unspecified size 2021-01-10 22:24:26 +00:00
Brooks J Rady
de44fbecff Change the layout to only one plugin 2021-01-07 16:43:13 +00:00
Brooks J Rady
01eaedcd37 Parse bytes into keys with Termion 2021-01-07 09:39:16 +00:00
Brooks J Rady
b5f9066172 Merge branch 'main' into wasm-launchable 2021-01-06 20:31:29 +00:00
denis
cde7703ac7 wip: added a test 2021-01-06 10:08:47 +02:00
Brooks J Rady
eb0f3b0285 Very borken 2021-01-05 22:41:23 +00:00
Brooks J Rady
6f1546a5cb Keeping track of multiple plugins 2021-01-05 13:33:23 +00:00
Brooks J Rady
b0c7259266 It's now possible to load WASM files from layouts! 2020-12-29 16:28:34 +00:00
Aram Drevekenin
4436c89230
fix(compatibility): git log and git diff with scrollup (#118)
* fix(compatibility): git log and git diff with scrollup

* style(formatting): make rustfmt happy
2020-12-21 11:52:49 +01:00
Aram Drevekenin
83a830e4ab
fix(compatibility): fish multiline paste (#112)
* fix(compatibility): fix fish multiline paste

* fix(tests): adjust snapshots of test to tabs

* style(formatting): make rustfmt happy
2020-12-18 15:59:21 +01:00
Aram Drevekenin
97980d618f
fix(compatibility): fix bash linewrap (#109) 2020-12-17 16:33:18 +01:00
Aram Drevekenin
f1f821c7bd
fix(compatibility): fix neovim change mode (#108) 2020-12-17 15:42:49 +01:00
Aram Drevekenin
38d8e2238d
fix(compatibility): handle tab characters properly (#99)
* fix(compatibility): handle tab characters properly

* style(formatting): make rustfmt happy
2020-12-15 12:58:58 +01:00
Aram Drevekenin
ac9c0274f4
fix(compatibility): fix vim overwrite message and buffer clearing on exit (#98)
* fix(compatibility): fix vim overwrite message and buffer clearing on exit

* style(formatting): make rustfmt happy
2020-12-14 16:25:46 +01:00
Aram Drevekenin
a56cb3c9ad
fix(compatibility): htop horizontal scrolling (#81)
* fix(compatibility): htop horizontal scrolling

* style(format): make rustfmt happy
2020-12-04 10:02:51 +01:00
Aram Drevekenin
c47fed927e
fic(compatibility): htop scrolling issues (#77)
* fix(compatibility): scrolling inside scroll region with 'M' esc dispatch

* style(format): make rustfmt happy

* fix(tests): send proper data

* fix(logs): do not crash if log file doesn't exist
2020-11-30 09:40:24 +01:00
Aram Drevekenin
f88abe6ad8
fix(compatibility): various htop issues (#66)
* fix(compatibility): various htop issues

* style(format): make rustfmt happy

* fix(logging): do not delete log dir on startup

* fix(tests): update htop with command toggle

* chore(ci): reduce test concurrency to 1
2020-11-23 18:01:16 +01:00
Roee Shapira
fd1f1ce697
fix(layout): total layout percent 100 validation (#57)
* Fix for issue #52

* Added missing fixtures.

* Added missing validation.

* Moved layout creation and validation to the Layout struct.

* Ran cargo fmt.

* Added creation of tmp folder if needed.

* Code review edit.

* Code review edit.

* Fancied code up.

* PR request change.

* PR code review.

* Merge from upstream/main.

* Merge from upstream/main.
2020-11-21 19:39:57 +01:00