Commit Graph

80 Commits

Author SHA1 Message Date
fa577c4c4d Update to latest crossterm. 2023-10-25 00:19:13 +02:00
fa55afeebe Start moving editor over to using transactions.
Also switch from LedHash to TentHash.
2023-10-23 19:18:02 +02:00
e1d91ff43d Move filepath into the Buffer struct. 2020-02-24 07:35:04 +09:00
c4fa72405f Switch to new backend buffer for text, cursor, and undo management. 2020-02-23 19:56:08 +09:00
62bfd9e49c Add hotkyes for moving up/down by several lines at a time. 2020-02-20 18:01:38 +09:00
9dc3f3aa4c Visual styling tweaks, including a line separating the gutter. 2020-02-20 07:57:45 +09:00
a28629d8b4 Remove old formatter.rs file, which is no longer used. 2020-02-17 18:57:08 +09:00
e061603a6e Gutter styling improvements.
Instead of having the hard line numbers alternate colors, give soft
wrapped lines their own lighter color.  This still gives a nice
visual cue when lines are wrapped, but isn't as generally distracting.
2020-02-17 18:47:43 +09:00
6a736e0b66 Fixed the last obvious bug from the refactor. 2020-02-17 18:16:17 +09:00
e5cac79829 Fix for two bugs from the previous refactor. 2020-02-16 17:14:36 +09:00
bfeaee602c A bunch more work on refactoring how formatting works.
This compiles, but does not yet work correctly again. Tons of bugs.
2020-02-16 17:03:37 +09:00
8c1778f674 Use alternating gutter colors for lines of text.
This makes for a clearer visual distinction of where soft line
wrapping occurs.
2020-02-15 11:43:53 +09:00
9512018983 Implemented indentation for soft-wrapped lines again. 2020-02-13 19:29:23 +09:00
19adb08170 Reworking the text formatting code.
It's a mess of indirection and over-abstraction, and this commit
is the first step at cleaning that up.  In addition to making the
code easier to follow, it's also notably faster.

The only downside is we've (temporarily) lost indentation
continuation on line wrapping.  But that can be added back without
too much trouble later.
2020-02-11 20:24:34 +09:00
6e8f132563 Don't visually freeze the UI on an onslaught of input. 2020-02-11 08:33:22 +09:00
f95cb7f641 Use saturating_sub() method instead of adhoc equivalent. 2020-02-06 18:19:50 +09:00
f582818387 Set the cursor position appropriately.
This makes international input popups get placed correctly for
terminals that do that.
2020-02-04 20:54:38 +09:00
8a49ed74c5 Fix bug in how vertical and horizontal offsets are calculated. 2020-02-02 00:14:08 +09:00
db0ce6a4f6 Bug fix + remove a debug print I accidentally left in. 2020-02-01 22:43:06 +09:00
ebfedab58c Change how line chunking works, to favor breaking on whitespace. 2020-02-01 22:32:09 +09:00
18920d9e87 Slightly wider and darker gutter. 2020-02-01 18:12:06 +09:00
9ff24353b4 More color theme tweaks. 2020-02-01 17:56:24 +09:00
14adcf99cb Nicer color theme. 2020-02-01 15:46:51 +09:00
e6a7d26dbd Some minor code cleanups and fixes. 2020-01-25 04:28:00 +09:00
f3c59558bb Added some code comments. 2020-01-25 04:18:23 +09:00
9ace1ecb68 Moved from termion to crossterm for terminal handling.
This should (hopefully) make led work on Windows now.  Although
I don't have a Windows box to test on.

This also fixes a bug where control codes were ocassionally split
on input, resulting in e.g. a pg-down resulting in control
characters inserted into the buffer.
2020-01-25 04:07:56 +09:00
dab1c9ed1b Updated to Rust 2018.
No functional changes.
2020-01-23 18:47:27 +09:00
2f5adfad75 Run rustfmt. No functional changes. 2018-08-17 20:36:24 -07:00
75742c7aa4 Fixed bug with gutter size not updating as line numbers get wider. 2018-07-20 01:31:56 -07:00
b19997b975 Did some basic optimizations that made things fast again. Yay!
The basis for the optimizations were some less basic changes made
in Ropey.
2018-07-05 04:41:58 -07:00
5ca0f5e406 Fomatted with recent rustfmt. No actual code changes. 2018-07-05 02:00:10 -07:00
de625e71dc Updated to ropey git master, and got everything working again.
However, everything is very, very slow now.
2018-07-05 01:53:17 -07:00
16f2aab223 Updated to latest Ropey. 2018-01-11 02:05:00 -08:00
7121469cba Termninal size information wasn't being set properly at startup. 2018-01-01 13:38:51 -08:00
1f62eb32a0 Fixed a bug where very narrow terminal sizes would crash the editor. 2018-01-01 02:37:33 -08:00
1bb93aae00 Got interactive responsiveness to terminal resizing working. 2018-01-01 02:30:11 -08:00
c91f1801ad Fixed bug in screen buffer display code.
This both more correct and faster at the same time.  Yay!
2018-01-01 01:27:37 -08:00
17beb9c06d Using a smallstring implementation inside the screen buffer.
This keeps things contiguous in memory in the common case.
2017-12-31 20:05:00 -08:00
0a309fab1a Made the screen buffer implemention way faster.
It's in a pretty good place now, I think.  Although its memory
usage could be improved with a small string type.
2017-12-31 19:40:45 -08:00
945505c5ff WIP making the buffer faster. 2017-12-31 19:30:28 -08:00
66a80baeed Doing screen buffering to eliminate flicker.
At the moment, it's brain-dead and really slow.
2017-12-31 18:51:02 -08:00
b63bb6f87d Fixed silly drawing bug.
The cursor wasn't displaying if it was on the end of a line.
2017-12-31 17:36:13 -08:00
c7adf195f7 Moving screen drawing handling to a submodule. 2017-12-31 17:30:21 -08:00
c11aee9bf6 WIP switching from Rustbox to Termion for terminal handling. 2017-12-31 16:55:27 -08:00
f221b90a82 Fixed cursor drawing for texts with graphemes in them. 2017-12-31 02:17:28 -08:00
2e9c2b2704 WIP getting graphemes working again. 2017-12-31 01:56:45 -08:00
47ed45aae6 More fixing. 2017-12-30 23:47:05 -08:00
9c302620e9 Updating to use the new Ropey.
This is mainly just for kicks and giggles, since it really won't
work quite properly anyway, due to the lack of grapheme indexing.
The next real thing is to... well, start from scratch.
2017-12-30 23:10:56 -08:00
45e6125bbc Updated to work with more recent library versions. Also RustFmt. 2016-03-05 02:40:01 -08:00
6823706d69 Working towards rust stable support. 2015-07-06 18:39:00 -07:00