Skip to content

semantic blocks #1010

Open
Open
@christianparpart

Description

@christianparpart

Blocks would effectively implement what is also requested in #836. But I am creating this ticket here to talk about blocks in general and define what they are, what I am aiming them to be.

Prior Art

I think the word block is what some other terminals use. FinalTerm is the first terminal I am aware of that implemented something similar to this (but not necessarily visually embracing them).

Warp terminal is also prominently selling this feature.

And WindTerm is probably having the most advanced version of blocks in the terminal, as of today. WindTerm's PTY bandwidth test results are however unbearable.

Expectations

  • Have the terminal grid divided into blocks (/segments) (every line is assigned to a contiguous block)
  • a block is further split into command line(s) and into the command output, whereas the command line usually is just one line and the command output 1 or more, up to very much a lot.
  • each block keeps remembering the current working directory that has been configured to be the current while at the time of writing that command; this is useful for future file path recognition, to make them clickable at any time in the future.
  • each line gets assigned a line number, starting from 1 (top-most), infinitely growing up. This line number is by default not visible but can maybe made visible on the left if configured/requested so. Think of that feature like set linenumber in vim.
    • alternatively we have reverse line numbers and start counting from the screen bottom with 1 and count up into the top scrollback buffer's line.
  • we could optionally show a folding range and marker on the left (along with the above mentioned line number) and then support folding/unfolding blocks (fun feature, but probably not quite a productivity feature.
  • if the maximum scrollback line count is reached, the oldest block won't be shown anymore.
  • on a possibly shown thin left column (for line numbers and fold line), we could also indicate when a line contains a line mark (as we can now also explicitly set/reset these in vim normal mode via mm, that might be probably a good feedback to users).
  • each line remembers the time it was being moved to via LF. for performance reasons, updating that timestamp per update in that line might indeed work but surely drain drastically the performance (proof?) such timestamp could be optionally shown on the already mentioned left column as well.

Such a feature would indeed be nice, but most importantly, it'l probably be very challenging to implement that while not draining terminal thread's PTY throughput performance.

Also good references of user wishes (apparently):

Metadata

Metadata

Assignees

No one assigned

    Labels

    VT: BackendVirtual Terminal Backend (libterminal API)enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions