Commit graph

195 commits

Author SHA1 Message Date
nacairns1
f285047fd3
feat: fullscreen focus swapping (#1515) 2022-06-16 15:24:10 +02:00
a-kenji
3de59dac42
fix(clippy): clippy fixes (#1508)
* fix(clippy): clippy fixes

* chore(fmt): cargo fmt
2022-06-15 14:03:11 +02:00
a-kenji
67d2673cae
add(style): add trailing comma in match blocks (#1483)
This makes it easier to distinguish from normal blocks
2022-06-10 20:03:13 +02:00
Kian-Meng Ang
16b53aa52f
docs: fix typos (#1481) 2022-06-10 23:37:55 +09:00
a-kenji
9544a09786
add: fix a small lint (#1476) 2022-06-10 11:42:47 +02:00
Cosmin Popescu
e1fcf3a6db
feat(scroll): edit scrollback with default editor (#1456)
* initial commit for opening the current buffer in an editor

* fix(editor): take hidden panes into consideration when manipulating tiled grid

* when closing an edit buffer, take the geometry of the replaced buffer from the closed buffer

* if the floating panels are displayed, don't add to hidden panels the current buffer

* strategy changing - put the panels inside a suppressed_panels HashMap instead of hidden_panels

* Revert "strategy changing - put the panels inside a suppressed_panels HashMap instead of hidden_panels"

This reverts commit c52a203a20cf4c87c147be8b9c193ed6458c1038.

* remove the floating panes by moving them to the tiled_panes in hidden_panels

* feat(edit): open editor to correct line and don't crash when none is set

* formatting

* feat(edit): use suppressed panes

* style(fmt): rustfmt and logs

* style(fmt): clean up unused code

* test(editor): integration test for suppressing/closing suppressed pane

* test(e2e): editor e2e test

* style(fmt): rustfmt

* feat(edit): update ui and setup

* style(fmt): rustfmt

* feat(config): allow configuring scrollback_editor explicitly

* style(fmt): rustfmt

* chore(repo): build after merging

Co-authored-by: Aram Drevekenin <aram@poor.dev>
2022-06-06 09:20:07 +02:00
Cosmin Popescu
76d871294d
feat(actions): dump the terminal screen into a file (#1375)
* Initial commit for fixing #1353

* adding a new line between the lines_above and the viewport

* changes following code review

* implementing a test case for the dump screen

* implemented test case for dump_screen

* better regexp replace

* fixes following code review

* style(api): remove extraneous method in plugin pane

* style(fmt): rustfmt

* style(tests): fix method name

Co-authored-by: Aram Drevekenin <aram@poor.dev>
2022-05-20 11:22:40 +02:00
Aram Drevekenin
58d52d40e8
fix(compatibility): adjust saved cursor position on resize (#1362)
* fix(compatibility): adjust saved cursor position on resize

* style(fmt): rustfmt
2022-04-29 11:21:46 +02:00
Aram Drevekenin
0dc136ec5f
fix(compatibility): respond to bg and fg color ansi queries (#1358)
* fix(compatibility): respond to background/foreground queries

* style(fmt): rustfmt

* style(clippy): make clippy happy

* style(fmt): rustfmt

* style(fmt): remove unused code
2022-04-28 17:26:44 +02:00
Thomas Linford
188febfc05
fix(stability): avoid link handler panic on bad index (#1356)
root cause needs investigating, but for now fix the crash.
2022-04-28 11:45:21 +02:00
Aram Drevekenin
22b68c0654
fix(compatibility): fix crash and don't allow cursor beyond row width (#1349)
* fix(compatibility): fix crash and don't allow cursor beyond row width

* style(fmt): rustfmt
2022-04-26 22:38:54 +02:00
Aram Drevekenin
cd99d3a547
fix(compatibility): various ansi fixes (#1324)
* fix(compatibility): rotate scroll region up properly

* fix(compatibility): rotate scroll region down properly

* style(fmt): rustfmt
2022-04-14 11:52:37 +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
Amir Arad
f9278a9ab8
refactor(tab): tiled_pane_grid (#1299)
* use `try_` methods when applicable

* fix bug

* extract commonresize check  logic

* clean unused import
2022-04-12 10:48:10 +02:00
Aram Drevekenin
c08145ef5a
fix(compatibility): single line scroll and other edge cases (#1307) 2022-04-09 13:34:32 +02:00
Aram Drevekenin
bd39891f78
fix(compatibility): keep colors when scrolling (#1305) 2022-04-09 00:00:02 +02:00
Aram Drevekenin
b4e113c6a4
fix(compatibility): don't crash on invalid state when padding line (#1285) 2022-03-30 09:48:41 +02:00
Thomas Linford
e537ba9b9d
Revert "fix(compatibilty): do not use current cursor style in csi erase display (#1142)" (#1283)
This reverts commit efd2fa412f.
2022-03-29 19:14:15 +02:00
Thomas Linford
303123f9c6
fix(selection): rendering of characters with unset background (#1250)
create cursor with RESET_STYLES instead of empty styles
2022-03-28 20:36:51 +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
f5a3d8f301
fix(tab): floating panes embed/fullscreen and frame color (#1267)
* fix(tab): floating panes embed/fullscreen and frame color

* style(fmt): rustfmt
2022-03-24 18:53:54 +01:00
Brooks Rady
9bfafde123
feat(ui): round frame corners (#1227)
* feat(ui): round frame corners

* Allow rounded_corners to be set without a palette

* Revert "Allow rounded_corners to be set without a palette"

This reverts commit 9271a4b5452f2e59e0ebd55136343f0fbfabaa13.

* fix(style): remove redundant code

* fix(style): clippy lints that somehow got missed

* feat(config): add ui config section
2022-03-22 14:58:16 +00:00
Aram Drevekenin
ab74b9974a
refactor(tab): move tiled panes to their own module (#1239)
* work

* tests passing

* simplify render state

* move more stuff to state

* moved tiled panes outside

* move files around

* style(fmt): rustfmt
2022-03-18 10:32:43 +01:00
Thomas Linford
9961a28cb5
feature(mouse): forward mouse events (#1191)
* handle sgr mouse mode enable by applications

* forward mouse events

* fix scroll events not forwarded to floating panes

* improve mouse hold/release with floating panes
2022-03-10 13:14:02 +01:00
Thomas Linford
7e008bb039
fix(compatibility): home and end in cursor keys mode (#1190) 2022-03-09 21:21:15 +01: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
7de77536ab
refactor(tab): simplify mouse hold and release (#1185) 2022-03-08 18:26:33 +01:00
Kerfuffle
e2081f2649
fix: Allow terminal title passthrough even when not drawing pane frames. (#1113)
* fix: Allow terminal title passthrough even when not drawing pane frames.

* Minor formatting fix.

* Handle case where the session name is not set.
2022-02-28 17:54:41 +01:00
Thomas Linford
efd2fa412f
fix(compatibilty): do not use current cursor style in csi erase display (#1142) 2022-02-27 21:15:03 +01:00
Aram Drevekenin
3bbae77921
fix(compatibility): properly clear pane before switching to alternate screen (#1120) 2022-02-25 15:01:08 +01:00
Ken Matsui
3346238a6b
fix(style): remove unnecessary borrow operators (#1084) 2022-02-24 11:08:05 +01:00
Ken Matsui
e73ce08ddf
fix(style): remove redundant .clone() calls (#1085) 2022-02-24 11:07:09 +01:00
Ken Matsui
f1f5ac01af
fix(lint): simplify unnecessary return statements (#1080) 2022-02-23 20:37:01 +01:00
Aram Drevekenin
256671aecc
fix(ui): restore get active at (#1076)
* don't crash if misusing the plugin pane api

* restore get active at

* rustfmt
2022-02-21 20:13:32 +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
Aram Drevekenin
a0a0a7e5c4
feat(ux): tmux mode (#1073)
* work

* basic tmux move and functionality

* tmux mode ui

* rustfmt
2022-02-21 15:52:42 +01:00
Aram Drevekenin
821e7cbc5a
feat(ui): add floating panes (#1066)
* basic functionality

* close and reopen scratch terminal working

* embed/float and resize whole tab for floating and static floating panes

* move focus working

* fix focus change in floating panes

* move pane with mouse

* floating z indices

* tests and better resize algorithm

* starting to work on performance

* some performance experimentations

* new render engine

* reverse painters algorithm for floating panes

* fix frame buffering

* improve ux situation

* handle multiple new panes on screen without overlap

* adjust keybindings

* adjust key hints

* fix multiuser frame ui

* fix various floating/multiuser bugs

* remove stuff

* wide characters under floating panes

* fix wide character frame override

* fix non-frame boundaries interactions with floating panes

* fix selection character width

* fix title frame wide char overflow

* fix existing tests

* add tests

* refactor output out of tab

* refactor floating panes out of tab

* refactor tab

* moar refactoring

* refactorings and bring back terminal window title setting

* add frame vte output

* remove more unused stuff

* remove even more unused stuff

* you know the drill

* refactor floating panes and remove more stuffs

* refactor pane grids

* remove unused output caching

* refactor output

* remove unused stuff

* rustfmt

* some formatting

* rustfmt

* reduce clippy to normal

* remove comment

* remove unused

* fix closign pane

* fix tests
2022-02-18 21:10:06 +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
Thomas Linford
cf22e1f50e
fix(compatibility): handle csi erase param 3 (#1026) 2022-01-26 18:50:29 +01:00
Kunal Mohan
e23d06b70d
Feature: Configurable scroll buffer (#936)
* Configurable scroll buffer

* Fix unit test failures

* Add scroll_buffer_size description in the default config file

* Fix config file
2022-01-04 23:24:05 +05:30
Aram Drevekenin
153ed175af
fix(plugins): send events to plugins properly in a multiuser env (#986) 2022-01-03 16:55:21 +01: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
Kunal Mohan
c75bcbd937
Feature: Add pane names (#928)
* Read pane name from layout

* Update pane name at runtime

* Fix tests

* prefer and render pane name over pane title

* fix clippy errors

* fix after rebase
2021-12-09 23:30:40 +05:30
Aram Drevekenin
92bddf1b79
fix(plugins): support multiple users (#930)
* fix(plugins): support multiple clients

* fix(style): make clippy happy
2021-12-08 18:41:41 +01:00
Marcin Puc
56e85f87d6
fix(style): various internal refactorings 2021-12-07 10:24:42 +00:00
Aram Drevekenin
cbe0d5405e
fix(compatibility): do not duplicate bracketed paste in chunked stdin input (#917)
* debug message

* fix attempt

* oops

* remove log message

* rustfmt

* style(clippy): make clippy happy

* style(clippy): make clippy happy again!
2021-12-02 18:35:55 +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