Commit graph

2100 commits

Author SHA1 Message Date
Aram Drevekenin
8431b9e0ef
docs(changelog): tab cwd in layouts 2022-10-20 15:24:28 +02:00
Aram Drevekenin
e59b09a1b6
feat(layouts): allow defining a tab cwd (#1828) 2022-10-20 15:23:20 +02:00
Aram Drevekenin
ebf61f6ff2
docs(changelog): scroll region fix 2022-10-19 18:37:18 +02:00
Aram Drevekenin
3d0c35489f
fix(terminal): reset scroll region when clearing screen (#1826) 2022-10-19 18:36:17 +02:00
Jae-Heon Ji
ca182fd216
docs(changelog): update DumpScreen action 2022-10-19 22:53:25 +09:00
Dan Näsman
2e70a4c672
allow dump_screen() to only dump the viewport (#1794)
* allow dump_screen() to only dump the viewport

* add additional implementations

* set full default as false
2022-10-19 22:49:13 +09:00
Aram Drevekenin
5878e9f6f8
docs(changelog): upgrade log4rs 2022-10-19 09:26:59 +02:00
Aram Drevekenin
81081bc2c2
chore(deps): upgrade log4rs (#1814) 2022-10-19 09:23:56 +02:00
Aram Drevekenin
130c16beb3
docs(changelog): default to vi editor 2022-10-18 17:37:16 +02:00
Aram Drevekenin
617b52f8f4
fix(editor): default to vi when no editor is set (#1811)
* fix(editor): default to vi when no editor is set

* style(fmt): rustfmt
2022-10-18 17:33:48 +02:00
Aram Drevekenin
5c8cded2f5
docs(changelog): floating panes grouped 2022-10-18 16:45:19 +02:00
Aram Drevekenin
abc710e124
feat(panes): change floating window positions (#1810)
* feat(panes): group floating panes

* style(fmt): rustfmt
2022-10-18 16:44:05 +02:00
har7an
d533299656
changelog: Add PR #1805
Add tips for code contributions to CONTRIBUTING, and expand the error docs with regard to how to handle `Option` types.
2022-10-18 14:16:30 +00:00
har7an
0711591ad3
docs: Describe how to handle Options as errors (#1805)
* docs: Describe how to handle Options as errors

* CONTRIBUTING: Add tips for code contributions

which will be home to condensed tips and best-practices around the
zellij code. Currently explains to prefer returning `Result` types
instead of `unwrap`ing on them.

The tips in here are meant to be short, concise guides that allow the
user to get started without a lot of reading. The individual tips can
(and should) be supplemented with links to "further reading" where the
topic at hand is explained in greater detail.
2022-10-18 14:14:38 +00:00
Aram Drevekenin
12d35bded5
docs(changelog): zellij run improvements 2022-10-17 19:40:34 +02:00
Aram Drevekenin
271abb3ea2
feat(cli): zellij run improvements (#1804)
* feat(cli): move command to the end of the cli arguments

* feat(cli): allow naming panes from the command line

* fix(cli): adjust actions after pane rename

* feat(cli): zellij run completions for fish

* feat(cli): zellij run completions for bash and zsh

* style(fmt): rustfmt

* fix(e2e): fix run test and snapshot

* style(fmt): rustfmt
2022-10-17 19:39:37 +02:00
har7an
4562982409
changelog: Add PR #1800
for logging of IPC messages in `thread_bus` only when the `--debug` flag is specified.
2022-10-17 15:36:43 +00:00
har7an
f26e73ce03
Log thread_bus IPC messages only in debug mode (#1800)
* zellij: Add global `DEBUG_MODE` variable

that tells us whether zellij was started with the `--debug` CLI flag.

* utils/errors: Only log thread_bus message in debug

mode, and discard the message otherwise.

* utils/logging: Increase logsize to 16 MiB

per logfile, totaling 32 MiB of logs at most (in two files).

* zellij: Set global `DEBUG` variable in server

thread and make sure the value of the `--debug` CLI flag is propagated
to the server, too.

This means that to enable debug mode, the server must be started with
the `--debug` flag. This happens when the first client that starts the
zellij session has the `--debug` flag set, because it will be forwarded
to the server. Subsequent clients attaching to the same session with the
`--debug` flag specified **do not** override the value of the `DEBUG`
variable. Hence, if the server wasn't started in debug mode, this cannot
be changed.
2022-10-17 15:34:06 +00:00
Aram Drevekenin
2ae057d061
docs(changelog): edit panes in layouts 2022-10-14 17:45:00 +02:00
Aram Drevekenin
efceb562de
feat(layouts): edit panes (#1799)
* feat(layouts): edit panes

* style(fmt): rustfmt
2022-10-14 17:44:23 +02:00
Aram Drevekenin
8c2b576b67
docs(changelog): global cwd 2022-10-14 15:09:05 +02:00
Aram Drevekenin
d074bb1cda
feat(layouts): global cwd (#1798)
* feat(layouts): allow defining a global cwd

* feat(layouts): allow passing global cwd from cli

* style(fmt): rustfmt

* fix(layouts): error on mixed cwd and pane children
2022-10-14 15:08:32 +02:00
Aram Drevekenin
5c43a59e00
docs(changelog): layout fixes 2022-10-13 13:56:37 +02:00
Aram Drevekenin
bece86b95c
fix(layouts): various kdl layout issues and features (#1797)
* fix(layouts): error on non-bare children node

* refactor(layout): consolidate split direction parsing

* refactor(layout): remove unused import

* fix(layouts): log error when there is no room for layout

* fix(layout): error on size 0

* feat(layouts): allow pane templates to override template command attributes

* style(fmt): rustfmt
2022-10-13 13:55:16 +02:00
har7an
8d56def4fc
zellij/commands: Prevent recursive sessions (#1766)
* zellij/commands: Prevent recursive sessions

with session names specified in layout files. A "recursive session" is
created when, while running inside some zellij session, a user attempts
to spawn zellij and make it attach to that same session.

When attaching via CLI (`zellij attach`) we explicitly check for this
condition and error out when needed.

However, besides `zellij attach` it is also possible to declare the
session to attach to in layout files like so:

```yaml
session:
  name: "foo"
```

This takes a different codepath when starting zellij, and hence bypases
the checks we already have in place to avoid recursive sessions. Hence,
we implement the check in the other codepath, too, and prevent recursive
sessions from happening for good.

Fixes: #1735

* changelog: fix recursive zellij sessions
2022-10-13 08:17:54 +00:00
Aram Drevekenin
e07dfcde78
docs(changelog): session-name cli fix 2022-10-12 15:36:10 +02:00
Aram Drevekenin
ad93a14000
fix(cli): use provided session-name (#1793) 2022-10-12 15:35:19 +02:00
Aram Drevekenin
2c5b2784ba
docs(changelog): duplicate layout errors 2022-10-12 14:30:41 +02:00
Aram Drevekenin
536e0b7ca5
fix(layouts): duplicate layout definition error (#1792)
* fix(layouts): error on duplicate definitions

* style(fmt): rustfmt
2022-10-12 14:29:36 +02:00
Aram Drevekenin
2e5aaeb739
docs(changelog): move item to the right place 2022-10-12 13:05:31 +02:00
Aram Drevekenin
56d6423816
docs(changelog): mixed nodes layout error 2022-10-12 13:04:17 +02:00
Aram Drevekenin
a13aacf583
fix(layouts): error on mixed nodes (#1791)
* fix(layouts): error on mixed nodes

* style(fmt): rustfmt

* style(clippy): make clippy happy
2022-10-12 13:03:21 +02:00
Thomas Linford
694afd2239
fix(tab): frameless pane size wrong after closing other panes (#1776)
always recompute pane frames after closing a pane
2022-10-12 11:29:17 +02:00
Aram Drevekenin
46dd8d4473
docs(changelog): escapes when converting configs 2022-10-12 10:50:14 +02:00
Aram Drevekenin
60ffd58b1e
fix(converter): escape quotes (#1790) 2022-10-12 10:49:12 +02:00
Aram Drevekenin
f6fa521313
docs(changelog): command pane 2022-10-11 16:46:55 +02:00
Aram Drevekenin
c64bf5207a
feat(ux): rerun command pane (#1787)
* chore(config): default kdl keybindings config

* tests

* work

* refactor(config): move stuff around

* work

* tab merge layout

* work

* work

* layouts working

* work

* layout tests

* work

* work

* feat(parsing): kdl layouts without config

* refactor(kdl): move stuff around

* work

* tests(layout): add cases and fix bugs

* work

* fix(kdl): various bugs

* chore(layouts): move all layouts to kdl

* feat(kdl): shared keybidns

* fix(layout): do not count fixed panes toward percentile

* fix(keybinds): missing keybinds and actions

* fix(config): adjust default tips

* refactor(config): move stuff around

* fix(tests): make e2e tests pass

* fix(kdl): add verbose parsing errors

* fix(kdl): focused tab

* fix(layout): corret default_tab_template behavior

* style(code): fix compile warnings

* feat(cli): send actions through the cli

* fix(cli): exit only when action is done

* fix(cli): open embedded pane from floating pane

* fix(cli): send actions to other sessions

* feat(cli): command alias

* feat(converter): convert old config

* feat(converter): convert old layout and theme files

* feat(kdl): pretty errors

* feat(client): convert old YAML files on startup

* fix: various bugs and styling issues

* fix: e2e tests

* fix(screen): propagate errors after merge

* style(clippy): lower clippy level

* fix(tests): own session_name variable

* style(fmt): rustfmt

* fix(cli): various action fixes

* style(fmt): rustfmt

* fix(themes): loading of theme files

* style(fmt): rustfmt

* fix(tests): theme fixtures

* fix(layouts): better errors on unknown nodes

* fix(kdl): clarify valid node terminator error

* fix(e2e): adjust close tab test

* fix(e2e): adjust close tab test again

* style(code): cleanup some comments

* get command panes not to exit on command exit

* separate terminal pane_ids from raw_fds

* render frame according to exit status

* re-run command on enter and close pane on ctrl-c

* proper error when command is not found

* make ui nicer

* initial pane title for command panes

* fix pane override bug

* reap terminal_ids from os_input_output on pane close

* bool floating flag

* some ui tweaks

* fix tests

* make rustfmt happy

* e2e test for command pane

* fix various concurrency issues

* rename command to run in the cli

* rustfmt

* style(fmt): rustfmt

* fix(e2e): command => run

* fix(e2e): command => run in snapshot too!
2022-10-11 16:45:46 +02:00
har7an
cb926119bc
changelog: Add PR 1775
which improves error formatting in `server/thread_bus` and removes calls to `unwrap`, too.
2022-10-07 10:00:08 +00:00
Bohdan Ivashko
39f33a9a9a
zellij-server: improve thread_bus error handling (#1775)
* zellij-server: improve thread_bus error handling

* zellij-server/thread_bus: get rid of option.unwrap

* zellij-utils/errors.rs: generic error in to_anyhow
2022-10-07 09:04:08 +00:00
har7an
bc04983f06
changelog: Add pull 1748
which removes calls to `unwrap` in `zellij_server::tab`.
2022-10-06 06:54:47 +00:00
har7an
6715f4629c
Server: Remove panics in tab module (#1748)
* utils/errors: Add `ToAnyhow` trait

for converting `Result` types that don't satisfy `anyhow`s trait
constraints (`Display + Send + Sync + 'static`) conveniently.

An example of such a Result is the `SendError` returned from
`send_to_plugins`, which sends `PluginInstruction`s as message type.
One of the enum variants can contain a `mpsc::Sender`, which is `!Sync`
and hence makes the whole `SendError` be `!Sync` in this case. Add an
implementation for this case that takes the message and converts it into
an error containing the message formatted as string, with the additional
`ErrorContext` as anyhow context.

* server/tab: Remove calls to `unwrap()`

and apply error reporting via `anyhow` instead. Make all relevant
functions return `Result`s where previously a panic could occur and
attach error context.

* server/screen: Modify `update_tab!`

to accept an optional 4th parameter, a literal "?". If present, this
will append a `?` to the given closure verbatim to handle/propagate
errors from within the generated macro code.

* server/screen: Handle new `Result`s from `Tab`

and apply appropriate error context and propagate errors further up.

* server/tab/unit: `unwrap` on new `Result`s

* server/unit: Unwrap `Results` in screen tests

* server/tab: Better message for ad-hoc errors

created with `anyhow!`. Since these errors don't have an underlying
cause, we describe the cause in the macro instead and then attach the
error context as usual before `?`ing the error back up.

* utils/cargo: Activate `anyhow`s "backtrace" feature

to capture error backtraces at the error origins (i.e. where we first
receive an error and convert it to a `anyhow::Error`). Since we
propagate error back up the call stack now, the place where we `unwrap`
on errors doesn't match the place where the error originated. Hence, the
callstack, too, is quite misleading since it contains barely any
references of the functions that triggered the error.

As a consequence, we have 2 backtraces now when zellij crashes: One from
`anyhow` (that is implicitly attached to anyhows error reports), and one
from the custom panic handler (which is displayed through `miette`).

* utils/errors: Separate stack traces

in the output of miette. Since we record backtraces with `anyhow` now,
we end up having two backtraces in the output: One from the `anyhow`
error and one from the actual call to `panic`. Adds a comment explaining
the situation and another "section" to the error output of miette: We
print the backtrace from anyhow as "Stack backtrace", and the output
from the panic handler as "Panic backtrace". We keep both for the
(hopefully unlikely) case that the anyhow backtrace isn't existent, so
we still have at least something to work with.

* server/screen: Remove calls to `fatal`

and leave the `panic`ing to the calling function instead.

* server/screen: Remove needless macro

which extended `active_tab!` by passing the client IDs to the closure.
However, this isn't necessary because closures capture their environment
already, and the client_id needn't be mutable.

* server/screen: Handle unused result

* server/screen: Reintroduce arcane macro

that defaults to some default client_id if it isn't valid (e.g. when the
ScreenInstruction is sent via CLI).

* server/tab/unit: Unwrap new results
2022-10-06 06:46:18 +00:00
Aram Drevekenin
46edc590ec
docs(changelog): switch config/layout/theme language to KDL 2022-10-05 07:45:43 +02:00
Aram Drevekenin
79bf6ab868
feat(config): switch to kdl (#1759)
* chore(config): default kdl keybindings config

* tests

* work

* refactor(config): move stuff around

* work

* tab merge layout

* work

* work

* layouts working

* work

* layout tests

* work

* work

* feat(parsing): kdl layouts without config

* refactor(kdl): move stuff around

* work

* tests(layout): add cases and fix bugs

* work

* fix(kdl): various bugs

* chore(layouts): move all layouts to kdl

* feat(kdl): shared keybidns

* fix(layout): do not count fixed panes toward percentile

* fix(keybinds): missing keybinds and actions

* fix(config): adjust default tips

* refactor(config): move stuff around

* fix(tests): make e2e tests pass

* fix(kdl): add verbose parsing errors

* fix(kdl): focused tab

* fix(layout): corret default_tab_template behavior

* style(code): fix compile warnings

* feat(cli): send actions through the cli

* fix(cli): exit only when action is done

* fix(cli): open embedded pane from floating pane

* fix(cli): send actions to other sessions

* feat(cli): command alias

* feat(converter): convert old config

* feat(converter): convert old layout and theme files

* feat(kdl): pretty errors

* feat(client): convert old YAML files on startup

* fix: various bugs and styling issues

* fix: e2e tests

* fix(screen): propagate errors after merge

* style(clippy): lower clippy level

* fix(tests): own session_name variable

* style(fmt): rustfmt

* fix(cli): various action fixes

* style(fmt): rustfmt

* fix(themes): loading of theme files

* style(fmt): rustfmt

* fix(tests): theme fixtures

* fix(layouts): better errors on unknown nodes

* fix(kdl): clarify valid node terminator error

* fix(e2e): adjust close tab test

* fix(e2e): adjust close tab test again

* style(code): cleanup some comments
2022-10-05 07:44:00 +02:00
a-kenji
917e9b2ff0 docs(changelog): add darwin dependencies 2022-10-04 12:24:17 +02:00
Mayeul d'Avezac
55cd26b278
fix(nix) missing frameworks on darwin (#1724) 2022-10-04 12:23:04 +02:00
har7an
9135eceac1
changelog: mention PR 1770
to improve error handling in screen thread private functions
2022-10-04 09:45:36 +00:00
Bohdan Ivashko
5fede55fbd
zellij-server/src/screen: improve error handling (#1770)
* zellij-server/src/screen: improve error handling

* cleanup context vs with_context usage

* update error handling docs

* zellij-server/src/screen.rs: fix formatting
2022-10-04 09:09:32 +00:00
a-kenji
716f606b44 update: update-rust-toolchain v1 -> v1.1 2022-10-01 13:50:35 +02:00
a-kenji
9823d1fe88
flake.lock: Update (#1761)
Flake lock file updates:

• Updated input 'crate2nix':
    'github:kolloch/crate2nix/198de9f237cb97ad32e0da7fb914b8e8d9fd87b7' (2022-08-29)
  → 'github:kolloch/crate2nix/17e34c0cf12baaa61abcd00dfecdbde96cef252f' (2022-09-28)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/97747d3209efde533f7b1b28f1be11619f556a06' (2022-08-31)
  → 'github:nixos/nixpkgs/854fdc68881791812eddd33b2fed94b954979a8e' (2022-09-28)
• Updated input 'rust-overlay':
    'github:oxalica/rust-overlay/790cf08a011248a881a516cadf125bbc47f1a420' (2022-08-31)
  → 'github:oxalica/rust-overlay/fa6d41ac91f44ce9a90ca08e7a3ff5abf88e77a1' (2022-09-30)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2022-10-01 11:15:50 +02:00
dependabot[bot]
f5efb0d731
build(deps): bump DeterminateSystems/update-flake-lock from 13 to 14 (#1762)
Bumps [DeterminateSystems/update-flake-lock](https://github.com/DeterminateSystems/update-flake-lock) from 13 to 14.
- [Release notes](https://github.com/DeterminateSystems/update-flake-lock/releases)
- [Commits](https://github.com/DeterminateSystems/update-flake-lock/compare/v13...v14)

---
updated-dependencies:
- dependency-name: DeterminateSystems/update-flake-lock
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-10-01 10:05:25 +02:00