aboutsummaryrefslogtreecommitdiff
path: root/src
Commit message (Collapse)AuthorAge
...
* Start implementing copypasta, a clipboard libraryJoe Wilm2016-10-08
| | | | | Currently it only supports x11 via the xclip program, and that only supports reading the clipboard contents.
* Don't write v when pasting on macOSJoe Wilm2016-09-27
| | | | | | | This is a bit of an experiment to see if simply handling 'v' in the bindings will work or has any bugs not going through ReceivedCharacter. The change is necessary though to prevent 'v' from being written in front of every clipboard paste.
* wipJoe Wilm2016-09-26
| | | | doesn't work on ubuntu 16.04 for some reason
* Clean up event_loop moduleJoe Wilm2016-09-26
| | | | | | | | | | | The main loop body was originally all written inline. There's now separate functions for each of the actions the loop handles including channel events, pty reading, and pty writing. There's also helper functions on State for managing the write list. The `EventLoop` and its `State` are returned when joining with the thread it spawns. This will potentially be helpful once config reloading is introduced.
* Refactor EventLoop into event_loop moduleJoe Wilm2016-09-25
| | | | This type and its implementations were seriously cluttering main.rs.
* Resolve compiler warningsJoe Wilm2016-09-25
|
* Fix bug with scrolling regionsJoe Wilm2016-09-25
| | | | | | Linefeeds were triggering scrolls in incorrect situations. Resolves #9.
* Use evented I/O for the ptyJoe Wilm2016-09-24
| | | | | | | | | | This was largely an experiment to see whether writing and reading from a separate thread was causing terminal state corruption as described in https://github.com/jwilm/alacritty/issues/9. Although this doesn't seem to fix that particular issue. Keeping this because it generally seems more correct than reading/writing from separate locations.
* Fix some compiler warningsJoe Wilm2016-09-23
| | | | | | | | | Also enables debug symbols in release profile by default. Until Alacritty ships, there's going to be lots of perf analysis which needs debug symbols. The PriorityMutex low priority method was never used. Now it's just a fair mutex.
* Add unhandled `execute` logJoe Wilm2016-09-23
|
* Fix missing `esc_dispatch` logJoe Wilm2016-09-23
| | | | This was previously logging as an unhandled `execute`.
* Fix refresh bugJoe Wilm2016-09-21
| | | | | | Terminal output wouldn't reliably refresh the screen. Fix is to only modify this flag when the terminal lock is held which suggests a larger refactoring should happen.
* Delete an extra spaceJoe Wilm2016-09-18
|
* Make use of `unlikely` intrinsicJoe Wilm2016-09-18
| | | | | There's some bounds checks we do that panic if the condition is ever true.
* Minor fixesJoe Wilm2016-09-18
| | | | Remove random println and add a missing #[inline]
* Rewrite ansi parser using vte crateJoe Wilm2016-09-18
| | | | | | | Using the vte crate allows removal of the ansi parser state machine and enables us to just be concerned with actions described in the protocol. In addition to making alacritty simpler, this also improves correctness and performance.
* Remove extra wait_events()Joe Wilm2016-09-16
| | | | | Allegedly x11 wants you to wait for a refresh event before using the context, but that doesn't arrive on all platforms (notably macOS).
* Fix crashJoe Wilm2016-09-16
| | | | | There might be a better way to track cursor state such that these checks aren't necessary.
* Implement delete_charsJoe Wilm2016-09-15
| | | | | Among other issues, this fixes a very vissible issue with typing in the middle of a shell command.
* Fix resize not redrawing immediatelyJoe Wilm2016-09-06
|
* Update deps and remove printlnsJoe Wilm2016-09-05
|
* Move rendering back to main threadJoe Wilm2016-09-01
| | | | | | | | | | | | | | This is only like the third time I've made this change. The issue of having a blank screen at startup is due to x11 event loop + glX interactions. Not sure what the problem is specifically, but glXMakecurrent was blocking until the x11 event loop advanced. The input and rendering are able to live on the same thread while still removing unnecessary renders due to the glutin::WindowProxy::wakeup_event_loop() method. The PtyReader just kicks the event loop when there's something to do; otherwise, the event loop just waits for something to happen and _doesn't_ draw in free run mode.
* Eliminate extra rendersJoe Wilm2016-08-31
| | | | | | | | | | Currently has a bug where screen is blank at startup. That aside, Alacritty uses basically 0 CPU now. The input thread is still separate from the render thread, but, given the ability to wake the event loop, it may be possible to merge them again. I'm not sure if that's actually desirable. Performance is seemingly unchanged.
* Separate input handling from renderingJoe Wilm2016-08-29
| | | | | | | | | | | | | To minimize rendering, the input must be handled in a separate thread. To see, why, consider the optimal rendering solution: renders are only necessary when the pty has data that changes the terminal state, OR there is a window event which changes the graphics state. When not drawing, the render thread is to remain parked at a condition variable, and it's not possible to handle input while parked! Thus, we need a separate thread. In addition to adding the separate thread, each subsystem thread is now spawned in a separate function to (hopefully) improve readability.
* Scrolling v2Joe Wilm2016-08-22
| | | | | | | | | | | The previous scrolling + scroll region implementation exhibited display corruption bugs in several applications including tmux, irssi, htop, and vim. The new implementation doesn't seem to suffer from any of those issues. This implementation is able to `find /usr` on my machine (nearly 600k lines) in ~2.0 seconds while st is able to do the same in ~2.2 seconds. Alacritty is officially faster!
* Term [unimplemented] prints to stderr in releaseJoe Wilm2016-08-22
| | | | | | Previously these were only printed in debug mode, but they are nice to have in release to see if something should be called that's not when an application doesn't behave properly.
* Term handles LineClearMode::{Left, All}Joe Wilm2016-08-22
|
* Fix scrolling directions to match ansi docJoe Wilm2016-08-19
| | | | | This also fixed an issue with reverse index where columns where used instead of lines.
* Add Origin mode to parserJoe Wilm2016-08-19
|
* Fix bug in inputJoe Wilm2016-08-19
| | | | | In applications with a scroll region, newlines were not being properly added because the scroll region was ignored.
* Fix corruption issueJoe Wilm2016-08-19
| | | | | Fixes an issue where input with the cursor at the bottom-right of the terminal would cause a crash.
* Fix testsJoe Wilm2016-08-14
| | | | Errors/warnings fixed.
* Support bold/italic font rendering on macOSJoe Wilm2016-08-12
| | | | | | | | | | | | | | | | | | This patch adds support for rendering italic fonts and bold fonts. The `font` crate has a couple of new paradigms to support this: font keys and glyph keys. `FontKey` is a lightweight (4 byte) identifier for a font loaded out of the rasterizer. This replaces `FontDesc` for rasterizing glyphs from a loaded font. `FontDesc` had the problem that it contained two strings, and the glyph cache needs to store a copy of the font key for every loaded glyph. `GlyphKey` is now passed to the glyph rasterization method instead of a simple `char`. `GlyphKey` contains information including font, size, and the character. The rasterizer APIs do not define what happens when loading the same font from a `FontDesc` more than once. It is assumed that the application will track the resulting `FontKey` instead of asking the font to be loaded multiple times.
* Fix arrow keys on macOSJoe Wilm2016-08-03
|
* Input expects modifier keys from GlutinJoe Wilm2016-07-30
| | | | | | This is experimental on a separate branch of Glutin. It's intended to fix the problem of certain key events not being delivered on alt-tab and breaking the modifier state tracking.
* Optimizations for `find /usr`Joe Wilm2016-07-29
| | | | | | | | | | | | | Resetting a cell now takes a template. The template is `memcpy`d onto the cell being reset. This also solves the problem of `Cell.reset()` being hardcoded to a particular terminal foreground and background. Scrolling was refactored to need one less branch. There are now separate functions for scrolling up/down. Fixes a bug where the first tabstop would not be displayed properly. `set_char()` code was merged into the handler `input()` method.
* Fix debug printing in ansiJoe Wilm2016-07-29
| | | | It was always printing intead of only debug builds.
* Add test for inputJoe Wilm2016-07-29
| | | | Added a test while debugging arrow keys, no reason to delete it.
* Early return in input handlingJoe Wilm2016-07-29
| | | | Don't need to handle modifier keys beyond updating state
* Switch to write_all in input handlerJoe Wilm2016-07-29
| | | | Make sure all input bytes get flushed
* Move debug macros to macros.rsJoe Wilm2016-07-29
|
* Remove unnecessary calls in gridJoe Wilm2016-07-29
|
* Fix tests in ansiJoe Wilm2016-07-29
| | | | Switched to vendored Utf8Chars.
* Fix bug getting stuck in non-CSI escapesJoe Wilm2016-07-23
| | | | Escapes terminated by a bell were not properly handled.
* Add more debug printingJoe Wilm2016-07-16
|
* Fix Control-H bugJoe Wilm2016-07-16
| | | | | | | | | Glutin sends both a received character and the key pressed event when a key is pressed. Because delete and backspace are mapped in reverse by terminal standards, we ignore the received character 0x07 and 0x7f values. However, this breaks Control-H since this normally sends 0x07 as well. The fix here adds handling for Control-H through the input tracking system.
* Fix bug in newlineJoe Wilm2016-07-16
| | | | The line should not be cleared.
* Fix bug rendering inverted cellsJoe Wilm2016-07-16
| | | | | | Cells with no content that had the cell::INVERSE flag were not being rendered. This was noticeable in `man` where the bar at the bottom would have gaps in it.
* Update to latest nightlyJoe Wilm2016-07-15
| | | | | | | Previous version of serde no longer worked; cargo packages were updated as a result. `Zero` and `One` traits were deprecated. Use of those was removed. The `Step` trait gained a lot more methods, and the index::$ty implementations were updated.
* Fix some compiler warningsJoe Wilm2016-07-04
| | | | Unused things have been removed.