1. 02 Oct, 2018 26 commits
  2. 30 Sep, 2018 2 commits
    • trimental's avatar
      Drop terminal lock before rendering · b22999f1
      trimental authored
      The terminal lock is now dropped before rendering by storing
      all grid cells before clearing the screen.
      
      This frees the terminal to do other things since the lock is now
      free, which lead to a performance benefit with high throughput
      applications.
      b22999f1
    • Jon Gjengset's avatar
      Bump fontconfig dependencies · f785f88a
      Jon Gjengset authored
      The patch uses the Cargo.toml patch section to force a single downstream
      choice of freetype-sys instead of relying on forks of other crates. It
      also bumps the fontconfig/freetype dependencies in the process.
      f785f88a
  3. 29 Sep, 2018 1 commit
    • Christian Duerr's avatar
      Fix failing test with `bench` feature · e01317d8
      Christian Duerr authored
      Using the `bench` feature, `cargo test` was failing since one of the
      benchmarks was running into a debug assertion for attempting to access a
      line with an index beyond the grid length.
      
      Since this issue was caused by the `len` property not being serialized
      and deserialized, the `#[serde(skip)]` attribute has been changed to
      `#[serde(default)]`. The ref-test has been edited to include the correct
      grid length for proper deserialization.
      
      This fixes #1604.
      e01317d8
  4. 28 Sep, 2018 3 commits
    • Christian Duerr's avatar
      Fix rendering of selections outside the viewport · 1887722e
      Christian Duerr authored
      When rendering selections with both start and end outside of the visible
      area, Alacritty would assume that both start and end are either above or
      below the viewport and not render the selection at all.
      
      To fix this the `buffer_line_to_visible` method now returns a
      `ViewportPosition` instead of an `Option<Line>`, this allows giving more
      feedback about where outside of the visible region the line is using the
      `ViewportPosition::Above` and `ViewportPosition::Below` variants.
      
      Using these newly introduced variants, a selection spanning the whole
      screen is now rendered if the selection should go from above the visible
      area to below it.
      
      This fixes #1557.
      1887722e
    • Niclas Zeising's avatar
      Add note about package install on FreeBSD · 88076938
      Niclas Zeising authored
      88076938
    • Christian Duerr's avatar
      Fix deserialization of old decorations values · 93837110
      Christian Duerr authored
      The deprecated `window.decoration` values `true` and `false` were using
      the `visit_bool` visitor for serde. However, only the `str` visitor was ever
      called.
      
      To print the correct deprecation notice, the bool visitor has been
      removed and the warning has been added for the `"true"` and `"false"`
      str visitor.
      93837110
  5. 27 Sep, 2018 1 commit
    • Christian Duerr's avatar
      Fix selection start point lagging behind cursor · 5e97fcbe
      Christian Duerr authored
      Since the mouse start position has been the first movement event after
      the mouse button was held down, there have been some issues with the
      start point lagging behind the cursor because movement events were not
      reported from the initial position but there was a gap until movement
      starts reporting.
      
      To fix this whenever the mouse button is pressed, the position and cell
      side is stored on the `Mouse` struct. Because of this it does not matter
      anymore if the movement events are all reported and we can just start a
      selection using the stored position/side whenever there currently is no
      selection present.
      
      This fixes #1366
      5e97fcbe
  6. 26 Sep, 2018 2 commits
    • Christian Duerr's avatar
      Fix selection of empty lines · 593d7718
      Christian Duerr authored
      When selecting multiple lines in Alacritty, there was an issue with
      empty lines not being copied. This behavior has been chanaged so empty
      lines should be correctly copied now.
      
      When copying content which ends with an empty line, Alacritty would copy
      an additional empty line.
      
      This has been resolved by only adding empty lines when the empty line
      was not in the last selected line.
      593d7718
    • Niklas Claesson's avatar
      94b9345a
  7. 25 Sep, 2018 1 commit
    • Christian Duerr's avatar
      Fix reset cursor terminfo escape · 2ef376bb
      Christian Duerr authored
      The reset cursor terminal escape sequnce specified in the terminfo file
      was using xterm's `\E[2 q`. However this just resets the cursor to the
      block cursor shape.
      
      Since Alacritty supports the `\E[0 q` escape sequence for resetting the
      cursor shape to the original shape specified in the configuration file,
      the terminfo file has been altered to make use of this sequence instead.
      2ef376bb
  8. 24 Sep, 2018 3 commits
    • Daniel Eklöf's avatar
      Add standalone terminfo definition · ec3a8042
      Daniel Eklöf authored
      This replaces the current definitions, which depend on the system's
      'xterm-256color' terminfo definition with the `alacritty` and
      `alacritty-direct` definitions.
      
      The new definitions are completely standalone.
      
      The default `TERM` value has been changed to be dynamically
      set based on the definitions installed on the system. Alacritty will
      try to use the `alacritty` definition first and fall back to
      `xterm-256color` if the `alacritty` definition is not present.
      ec3a8042
    • Christian Duerr's avatar
      Dynamically initialize grid storage · 3d7e88e8
      Christian Duerr authored
      Previously Alacritty has initialized all lines in the buffer as soon as
      it is started. This had the effect that terminals which aren't making
      use of the scrollback buffer yet, would still consume large amounts of
      memory, potentially even freezing the system at startup.
      
      To resolve this problem, the grid is now dynamically resized in chunks
      of `1000` rows. The initial size is just the visible area itself, then
      every time lines are written to the terminal emulator, the grid storage
      is grown when required.
      
      With the worst-case scenario of having 100_000 lines scrollback
      configured, this change improves startup performance at the cost of
      scrolling performance.
      
      On my machine the startup changes from ~0.3 to ~0.2 seconds.
      
      The scrolling performance with large throughput is not affected, however
      it is slowed down when the number of lines scrolled are close to the
      100_000 configured as scrollback. The most taxing benchmark I've found
      for this was running `yes | dd count=500 > 500.txt` (note the relatively
      small file size). This will cause a slowdown on the first run from 0.05s
      to 0.15s. While this is significant, it lines up with the time saved at
      startup.
      
      This fixes #1236.
      3d7e88e8
    • Gris Ge's avatar
      Allow copying selection to primary clipboard · a752066b
      Gris Ge authored
      A new configuration option `save_to_clipboard` has been added
      to the `selection` section of the configuration. This allows writing
      every selection to the primary system clipboard when it is set
      to `true`.
      
      On linux the selection is still written to the selection clipboard,
      independent of the value of the `save_to_clipboard` setting.
      a752066b
  9. 23 Sep, 2018 1 commit
    • Christian Duerr's avatar
      Implement config option for term colors 16..256 · cd79680b
      Christian Duerr authored
      This adds a config option which allows setting terminal colors above the
      0..16 range.
      
      Live config reload already works for this, so it is possible to change
      these colors the same way it works with the normal colors.
      
      If a color below 16 is specified, the configuration will throw an error,
      so the normal colors can't be overridden. This is just to prevent
      possible complications with the settings that already exist.
      cd79680b