Commit graph

43 commits

Author SHA1 Message Date
denis
b23ef332c7 wip: restructing in progress, to prep for server-client 2021-01-24 18:38:46 +02:00
Aram Drevekenin
decc38232b
fix(main): do not hang on exit (#150) 2021-01-20 19:25:35 +01:00
Brooks J Rady
efcd36a52c Added the set_selectable plugin API function 2021-01-11 07:33:35 +00:00
Brooks J Rady
1fa23e6fa4 Get clipped, fool 2021-01-06 19:34:18 +00:00
Brooks J Rady
4a176669fa A module rename to please clippy 2021-01-06 17:46:50 +00:00
Brooks J Rady
b2720169fb Fix early quit with plugins 2021-01-06 17:06:15 +00:00
Brooks J Rady
fc2205c415 The RawFd has been slain... 2021-01-06 16:41:02 +00:00
Brooks J Rady
eb0f3b0285 Very borken 2021-01-05 22:41:23 +00:00
Doron Tsur
75b00b7932
refactor(tabs): lay down infrastructure for status bar (#116)
* resolves #76

* move private fun to bottom

* refactor(tabs): do not allocate when filtering panes to terminals

* style(formatting): make rustfmt happy

Co-authored-by: Aram Drevekenin <aram@poor.dev>
2020-12-19 17:36:23 +01:00
Denis Maximov
d47904ea5b
feature(infrastructure): tabs (#89)
* wip: tabs, just outlining stuff, for now it is a mess

* wip: tabs, just outlining stuff, for now it is a mess

* wip: formatting

* wip: some moving around

* wip: not sure why those things are not imported

* wip: cleaning up a bit

* wip: doesn't render when new tab is created?

* wip: doesnt re-render when a new tab is spawned for now

* wip: tabs now are a BTreeMap and we can switch between them in both directions

* wip: I think that should also be here

* wip: cleanup

* Spawn a new terminal simultaneously with a new tab

* Ensure proper Opening and Closing of tabs

* cleanup

* more cleanup

* tests(snapshots): add 'loading' snapshot to each scenario

* fix(tests): update snapshots

* Add tests for tabs implementation

* wip: added tests, moved tab related stuff to a separate file

* wip: var name change, removed unused imports

* chore: fromatting

* wip: tests are you ok?

* Remove next_tab_index field

* clean close_tab() logic in screen.render()

* wip: more tests added, review changes covered

* chore: a programmer and a formatter walk into a bar....

* style(screen): update description comment

* docs(tab): add comment description

Co-authored-by: denis <denis@airheadventures.com>
Co-authored-by: Kunal Mohan <kunalmohan99@gmail.com>
Co-authored-by: Aram Drevekenin <aram@poor.dev>
Co-authored-by: Kunal Mohan <44079328+kunalmohan@users.noreply.github.com>
2020-12-18 11:11:25 +01:00
Kunal Mohan
92d1bcff4c
feat(infrastructure): introduce ErrorContext for tracking errors across threads (#83)
* Implement ErrorContext for tracking errors across threads

* reorder Instruction and ErrorContext

* Add ContextType, AppContext, ScreenContext, PtyContext

* Use ArrayVec in ErrorContext

* increase MAX_THREAD_CALL_STACK to 6

* Custom implement Debug for ErrorContext ad ContextType and color output

* Use os_input instead of println!()

* Use array instead of ArrayVec and some cleanup

* Introduce SenderWithContext

* Keep arrayvec at v0.5.1
2020-12-09 18:01:26 +01:00
Denis Maximov
b7b3ff74cf
feat(rect): directional move focus #55 (#78)
* feat: directional move focus #55

* wip: refactored match into if let

* wip: basic tests

* feat: move to most overlapping pane tests

* fix: formatting

* wip: Moved the definitions to the Rect trait

* formatting
2020-12-04 09:59:06 +01:00
Aram Drevekenin
5ba9320b2b
fix(compatibility): keypad arrow fixes (#80)
* fix(compatibility): make arrow keys work in htop and vim

* docs(terminal): add explanatory comments to character string

* style(format): make rustfmt happy
2020-12-03 15:58:30 +01:00
Kunal Mohan
56c53d2487
feat(infra): add custom panic hook. Print backtrace and thread, error info on panic. (#75)
* Add custom panic hook. Print backtrace and thread, error info on panic.

* use sync_channel and SyncSender

* nit fixes and cleanup

* disable custom panic hook while running tests

* make separate errors.rs file and address other review comments

* improve panic message

* debug: does increasing time between snapshots make tests pass? (this is temporary)

* fix(tests): suspend before sending quit command

* fix(tests): add missing use

* style(format): commas are important apparently

* fix(tests): can we get away with reducing the QUIT suspense time?

* fix(tests): can we get away with 50?

Co-authored-by: Aram Drevekenin <aram@poor.dev>
2020-12-03 15:35:16 +01:00
Brooks Rady
c3fa9fb40e
fix(threads): a race condition, build-times, and warnings (#79)
* Fix a race condition, build-times, and warnings

* Yeah, yeah... I know

* style(code): add comment to explain race condition

Co-authored-by: Aram Drevekenin <aram@poor.dev>
2020-12-02 15:03:46 +01:00
Aram Drevekenin
ea549f151e
fix(input): read stdin with lock (#72)
* fix(input): lock stdin when reading and use its own buffer

* style(format): make rustfmt happy

* fix(ipc): add accidentally removed trait
2020-11-29 19:12:19 +01:00
Roee Shapira
9ad7b8a35e
chore(infra): added clippy check. (#65)
* Added clippy check.

* Changed step name.

* Used the suggested ci config.

* Some more clippy fixes.

* Some more clippy fixes.

* More clippy fixes.

* Removed allow annotations.

* Minor lint edit.

* More clippy fixes.

* Ran cargo fmt.

* More clippy fixes.

* More clippy fixes.

* More clippy fixes.

* More clippy fixes.

* More clippy fixes.

* More clippy fixes.

* Code review edits.

* Code review edits.

* Code review edits.

* CI update.

* CI update.

* CI update.

* Added clippy warn so wip won't fail ci.

* Cargo fmt.
2020-11-28 20:02:05 +01:00
Aram Drevekenin
429e415ecc
fix(atomicity): block commands before executing others (#59) 2020-11-19 18:24:34 +01:00
Denis Maximov
cf43736656
refactor(data-structures): #51 change winsize to positionandsize (#56) 2020-11-19 15:30:05 +01:00
Roee Shapira
5ddf95a16c
fix(compatibility): some fixes for htop (#53)
* Moved all log to file functions to one module.

* Moved logging to file function to utils module.

* Housekeeping.

* Housekeeping.

* Started investigation into htop CSIs.

* Used better function for scrolling.

* Minor cleanup.

* Cleanup and start of scroll region rotation.

* Implemented scroll region rotation.

* Improved performace.

* New SCI found.

* Typo.

* Typo.

* Removed logging function.

* Added scroll rotation functions.

* Typo.

* Moved all logging function to one module.

* Attempt at making htop work.

* Reverted unneeded changes.

* Improved log file name creation.

* Ran rust fmt.

* PR review edits.

* PR review edits.

* Used mark_for_rerender function.

* Removed _ prefix from logging functions.
2020-11-19 11:15:59 +01:00
Denis Maximov
6f168c5ef2
fix(ux): disable move focus when in full screen (#49)
* feat: add rustfmt, update action workflow to check for formatting

* wip: Mosaic reacts to "move focus" commands when one pane is maximized

* feat: move focus is blocked when pane is in full screen

* fix: formatting

Co-authored-by: denis <denis@airheadventures.com>
2020-11-17 12:53:37 +01:00
Henil
0ddcc4087e
fix(ux): add variable to track if the pane is in fullscreen mode or not (#47)
* Fix the bug and add new tests

* add snapshots for integration tests
2020-11-16 17:45:15 +01:00
Aram Drevekenin
47954166a2
feat(ux): initial layout engine (#50)
* prototype

* refactor(layout): move stuff around

* style(format): make rustfmt happy
2020-11-15 19:55:56 +01:00
Denis Maximov
a2914066bf
feat: add rustfmt, update action workflow to check for formatting (#45) 2020-11-14 18:59:37 +01:00
Aram Drevekenin
5a88b1a6ee
fix(ui): exit app when last pane is closed (#40) 2020-11-11 11:56:48 +01:00
Aram Drevekenin
ee0167f3af
fix(compatibility): do not interpret esc as scroll-up (#29) 2020-11-08 21:22:46 +01:00
Aram Drevekenin
393bca0d39
fix(compatibility): better stdin reading to fix various issues (#28) 2020-11-07 19:20:13 +01:00
Aram Drevekenin
13af16b336
fix(scroll): support show/hide cursor and fix vim scrolling behaviour (#27) 2020-11-06 18:12:03 +01:00
Aram Drevekenin
bdcd3b74ff
feat(screen): allow to toggle pane fullscreen with ctrl-f (#24) 2020-11-05 10:26:33 +01:00
Aram Drevekenin
5592a83d4a
feat(screen): allow specifying max panes on screen (#20) 2020-11-03 15:50:18 +01:00
Aram Drevekenin
9f6bbc55b5
feat(screen): split largest terminal (#19)
* feat(screen): split largest terminal

* docs(readme): split largest terminal command
2020-11-02 16:34:20 +01:00
Aram Drevekenin
ba2fd9f782 refactor(structure): separate all the things 2020-11-01 11:42:18 +01:00
Aram Drevekenin
ffb8979125 fix(scrolling): move clear scroll to scroll so that it works 2020-11-01 09:57:34 +01:00
Aram Drevekenin
5ea67501ba feat(screen): close pane 2020-10-23 15:36:41 +02:00
Aram Drevekenin
049ff1a6dc feat(performance): some more improvements by reducing even more allocations 2020-10-17 20:45:20 +02:00
Aram Drevekenin
6a68f4c710 feat(scrolling): basic 1-line scroll-up and scroll-down inside a pane 2020-10-15 17:58:07 +02:00
Aram Drevekenin
c652a09ae7 fix(boundaries): render properly 2020-10-13 18:14:53 +02:00
Aram Drevekenin
909b9eec0e fix(compatibility): bandwhich + various fixes for fish 2020-09-29 11:43:22 +02:00
Aram Drevekenin
0ea88d7e02 fix(resizing): properly resize panes up 2020-09-24 10:33:27 +02:00
Aram Drevekenin
eaba12c3ae fix(compatibility): handle foreground/background color changes properly 2020-09-23 11:47:37 +02:00
Aram Drevekenin
1ae1d76041 fix(compatibility): handle ansi properly with shit performance 2020-09-23 09:37:38 +02:00
Aram Drevekenin
c539c49263 refactor(screen): clean up and remove duplications 2020-09-18 13:13:00 +02:00
Aram Drevekenin
18413fcaa4 refactor(structure): move stuff out of main 2020-09-16 11:04:16 +02:00