aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2016-12-22Implement visual component of mouse selectionsJoe Wilm
This adds the ability to click and drag with the mouse and have the effect of visually selecting text. The ability to copy the selection into a clipboard buffer is not yet implemented.
2016-12-16Fix config reloadingJoe Wilm
The main refactor broke config reloading; specifically, colors were not updating for subsequent draws.
2016-12-16Remove dead codeJoe Wilm
2016-12-16Misc formatting fixesJoe Wilm
2016-12-16Remove outdated and no longer correct docJoe Wilm
2016-12-16Replace remaining use of `try!` with `?`Joe Wilm
2016-12-16Rustup and clippyJoe Wilm
All of the changes in this commit are due to clippy lints.
2016-12-16Merge pull request #27 from quininer/ref_fish_ccJoe Wilm
add fish_cc ref
2016-12-16add fish_cc refquininer kel
and update Cargo.lock
2016-12-15Handle overflow in Term::move_backwardJoe Wilm
Resolves #25
2016-12-12Remove need for Rc<RefCell<_>> usageJoe Wilm
This adds a trait OnResize and a separate method handle_resize to the display. Instead of having a callback to receive resize events, a list of &mut OnResize are passed to this new method. Doing this allowed the only RefCell usage in the codebase to be removed :).
2016-12-12Fix a couple of compiler warningsJoe Wilm
2016-12-11Track terminal cells on mouse movementJoe Wilm
The cell under the cursor is now tracked in the input processor at `self.mouse.line` and `self.mouse.column`. This could probably be optimized to only compute the cell when in certain states, but the calculation is cheap.
2016-12-11Update nightly pin on travisJoe Wilm
2016-12-11Implement mouse scrolling with line deltasJoe Wilm
This makes scrolling work for mouse wheels (was previously just trackpads).
2016-12-11Finish main.rs cleanupJoe Wilm
* config::Monitor is more ergonomic and self-contained * Fixed an issue with macOS resize. Previously, the terminal was marked as dirty in the window resize handler, but the display can't do that. Instead, the event processor returns a flag whether it was requested to wakeup.
2016-12-11Display manages window, renderer, rasterizerJoe Wilm
This is part of an ongoing decoupling effort across the codebase and tidying effort in main.rs. Everything to do with showing the window with a grid of characters is now managed by the `Display` type. It owns the window, the font rasterizer, and the renderer. The only info needed from it are dimensions of characters and the window itself for sizing the terminal properly. Additionally, the I/O loop has access to wake it up when new data arrives.
2016-12-11Add run() function and document itJoe Wilm
The doc comment outlines my plan about cleaning up this function.
2016-12-11Add display impl for Points<T>Joe Wilm
2016-12-11Cleaning up main; Added window moduleJoe Wilm
Adds a wrapper for the glutin::Window which provides strongly typed APIs and more convenient interfaces. Moves some gl calls into the opengl-based renderer. The point of most of the changes here is to clean up main().
2016-12-11Move config path into Config typeJoe Wilm
This cleans up the Config::load API significantly. Several miscellaneous comments were also added.
2016-12-11Cleanup cli option parsingJoe Wilm
This introduces the `cli` module and the `cli::Options` type. This type holds all the options passable on the command line in addition to providing arg parsing.
2016-12-11Force drawing when config reloadsJoe Wilm
2016-12-11Implement Handler::identify_terminal for TermJoe Wilm
The identify_terminal function signature had to change to support writing to the terminal before processing additional input.
2016-12-11Add comments in main loopJoe Wilm
2016-12-11Borrow glutin::Window instead of using ArcJoe Wilm
glutin::Window is not threadsafe; putting it into an Arc is misleading (although the glutin::Window type claims to be Send + Sync). The reference was just needed on the main thread anyway, so it's better to just pass a ref around directly.
2016-12-11Refactor color list managementJoe Wilm
There's now a ColorList type that provides strongly typed indexing for not only usize but NamedColor as well. Previously, the `NamedColor` was casted to a `usize` when indexing the colors. Additionally, only one copy of the ColorList needs to exist;it's borrowed from the `Config` when rendering, and the renderer doesn't need a copy.
2016-12-11Add support for indexed colorsJoe Wilm
ANSI escape sequences like `\x1b[48;5;10m` were not supported until now. Specifically, the second attribute, 5, says that the following attribute is a color index. The ref tests were updated since `enum Color` variants changed.
2016-12-11Rename RenderApi::render_grid() to render_cells()Joe Wilm
This probably should have been renamed in the original refactor, but oh well. `render_cells()` takes a generic parameter `I` which is any `Iterator<Item=IndexedCell>` and is thus no longer coupled to the grid type. Renaming it reflects that.
2016-12-11Add support for bracketed pasteJoe Wilm
Binding/Action execute now has access to TermMode to support bracketed paste mode.
2016-12-11Move term::cell module to its own fileJoe Wilm
The cell module was previously implemented within term.rs. Now each module has its own file.
2016-12-11Document a couple of methodsJoe Wilm
Also fixes formatting on the Term::new method signature.
2016-12-11Refactor cell selection out of rendererJoe Wilm
The terminal now has a `renderable_cells()` function that returns a `RenderableCellIter` iterator. This allows reuse of the cell selection code by multiple renderers, makes it testable, and makes it independently optimizable. The render API now takes an `Iterator<Item=IndexedCell>` to support both the new renderable cells iterator and the `render_string()` method which generates its own iterator. The `vim_large_window_scoll` ref test was added here because it provides a nice large and busy grid to benchmark the cell selection with.
2016-12-11Refactor limit functionJoe Wilm
Was reading through the code and realized this function could be cleaned up significantly.
2016-12-11Support trackpad scrollingJoe Wilm
Linebased scrolling is still unsupported (need a mouse to test with).
2016-12-11Support normal mouse tracking modeJoe Wilm
This allows the user for eg clicking columnts in htop to sort.
2016-12-10Use checked subtraction for backspaceJoe Wilm
Some shells will send a backspace at column 0, apparently.
2016-11-23Update to latest RustJoe Wilm
2016-11-20Remove unnecessary slicingJoe Wilm
json::from_str takes a &str which will auto deref from &String.
2016-11-19Add README.mdJoe Wilm
Currently just want to see travis status prominently on repo page.
2016-11-19Fix mouse bindingsJoe Wilm
Config expected key and the default config file had the wrong section.
2016-11-19Fix glutin waylandJoe Wilm
2016-11-19Add a number of simple ref-testsJoe Wilm
Also adds a feature `err-println` for enabling `err_println!` printing.
2016-11-19Add support for recording/running ref testsJoe Wilm
Ref tests use a recording of the terminal protocol and a serialization of the grid state to check that the parsing and action handling systems produce the correct result. Ref tests may be recorded by running alacritty with `--ref-test` and closing the terminal by using the window "X" button. At that point, the recording is fully written to disk, and a serialization of important state is recorded. Those files should be moved to an appropriate folder in the `tests/ref/` tree, and the `ref_test!` macro invocation should be updated accordingly. A couple of changes were necessary to make this work: * Ref tests shouldn't create a pty; the pty was refactored out of the `Term` type. * Repeatable lines/cols were needed; on startup, the terminal is resized * by default to 80x24 though that may be changed by passing `--dimensions w h`. * Calculating window size based on desired rows/columns and font metrics required making load_font callable multiple times. * Refactor types into library crate so they may be imported in an integration test. * A whole bunch of types needed symmetric serialization and deserialization. Mostly this was just adding derives, but the custom deserialization of Rgb had to change to a deserialize_with function. This initially adds one ref test as a sanity check, and more will be added in subsequent commits. This initial ref tests just starts the terminal and runs `ll`.
2016-11-17Make bindings configurable from alacritty.ymlJoe Wilm
Bindings were previously hardcoded within input.rs; adding, removing, or changing a binding required a recompile! Now, bindings may be declared in alacritty.yml. Even better, bindings are live-reloaded when alacritty.yml is changed! One unexpected benefit of this change was that all of the special casing in input.rs has disappeared. Conversely, config.rs has gained complexity for all of the deserialization logic. Resolves #3.
2016-11-17Fix test for Cell layoutJoe Wilm
bytes 2 and 3 are not necessarily zeroed
2016-11-17Redraw screen on focusJoe Wilm
Fixes an issue where waking from sleep on macOS would continue showing the lock screen if Alacritty was the active app.
2016-11-17Fallback to received chars when no bindingsJoe Wilm
Committed this on a plane with no internet; need to get a real glutin ref pushed somewhere and update this commit before merging into master.
2016-11-11Fix/add some keybindingsJoe Wilm
Adds support for pageup, pagedown, home, and end. Fixes delete inserting spaces. Resolves #15.
2016-11-11Fix alacritty shutdown when shell exits on macOSJoe Wilm
Readiness for the pty file descriptor will never be HUP or ERROR; the out-of-band flag raised by sigchld is used instead. Resolves #14.