70 Commits

Author SHA1 Message Date
Luke I. Wilson
d1dd389dba Main: more robust error handling.
Previously, the editor would panic at any error. After I recently
implemented dialogs, I changed all panics to create error dialogs,
instead. This will make the editor more stable.
2021-04-02 14:30:38 -05:00
Luke I. Wilson
f64af6fa29 DrawStr: made more efficient and renders newline characters
Before, DrawStr would copy all bytes into a []rune slice, and later
copy the rune slice (by accident) in the for i, v := range loop. Now,
it uses a []byte slice and iterates with for i := range slice.
2021-04-02 13:30:37 -05:00
Luke I. Wilson
9192d35b3c Implement Save As and have Save redirect to Save As when the file is unnamed 2021-04-01 21:07:28 -05:00
Luke I. Wilson
7ce5096952 Add menu entries to Search menu 2021-04-01 20:42:22 -05:00
Luke I. Wilson
0dcdd62773 UI: removed WindowContainer, and replaced it with DrawWindow function 2021-04-01 20:34:18 -05:00
Luke I. Wilson
a4d5f3ccf4 Highlighter: fix bug causing out of bounds access when endLine > len of internal lines 2021-04-01 16:19:14 -05:00
Luke I. Wilson
239793aa2c Rope test: add case for TestRopeSlice 2021-04-01 16:16:47 -05:00
Luke I. Wilson
25f5262b6a Rope: fix bug in Slice() causing out-of-bounds access 2021-04-01 16:14:39 -05:00
Luke I. Wilson
2cd41fc62d TextEdit: update highlighting for .go files, make strings lazy match 2021-04-01 14:40:38 -05:00
Luke I. Wilson
58c8de3068 Rope: Added LineColToPos, and optimized Highlighter's UpdateLines() 2021-04-01 14:16:51 -05:00
Luke I. Wilson
f829b37d0c TextEdit & Highlighting: performance improvements & changes to architecture
I ran pprof to find what was causing stuttering, and found it to be the
getTabCountInLineAtCol function in TextEdit, because it was iterating
many bytes of the buffer, for each rune rendered. Replaced it with a more
optimal system. Also changed the architecture of the highlighting system
to use a single RegexpRange structure for all regular expressions. This
allows for optimizations and multiline matches in the future.
2021-04-01 12:05:17 -05:00
Luke I. Wilson
37589144b5 TextEdit: Add syntax highlighting for Go files 2021-03-30 23:00:32 -05:00
Luke I. Wilson
aaf377ccd5 TextEdit: account for tab offsets when highlighting 2021-03-30 22:21:56 -05:00
Luke I. Wilson
de921419ce Rope buffer tests: remove unnecessary 't.Fail()` everywhere 2021-03-30 22:17:41 -05:00
Luke I. Wilson
cdf10cdd3c Merge branch 'main' of github.com:fivemoreminix/qedit 2021-03-30 22:14:54 -05:00
Luke I. Wilson
a79227e97c Rope buffer: Fix bug in PosToLineCol and add test case 2021-03-30 22:14:02 -05:00
Luke I. Wilson
a90a367122 TextEdit: Replaced line-based rendering with character-based rendering.
With line-based rendering, it was more efficient but we were unable
to perform syntax highlighting, or more specifically, individual character
stylings. With this change, the rendering is likely to be slightly less
performant (because it is not as simple as string slicing) but much more
powerful.
2021-03-30 20:44:09 -05:00
Luke I. Wilson
9a85e8efef Create and initialize Highlighter in TextEdit 2021-03-27 13:42:11 -05:00
Luke I. Wilson
1161888660 Made quick chars use an index 2021-03-25 11:27:43 -05:00
Luke I. Wilson
e8318673aa
Update year 2021-03-24 22:27:25 -05:00
Luke I. Wilson
d11ec4a855
Update README.md 2021-03-24 22:26:17 -05:00
Luke I. Wilson
d01bb415a4 Add screenshots 2021-03-24 22:19:47 -05:00
Luke I. Wilson
d508d8a880 New README 2021-03-24 22:17:40 -05:00
Luke I. Wilson
8d532fd9b7 Renamed diesel to qedit 2021-03-24 18:37:12 -05:00
Luke I. Wilson
d47e407063 Fixed bug in saving files: was missing os.O_TRUNC bit flag 2021-03-24 17:47:13 -05:00
Luke I. Wilson
9133ab55d0 Bounds check delete regions in rope buffer 2021-03-24 11:40:18 -05:00
Luke I. Wilson
296fa8b4ac Remove comment 2021-03-23 18:47:58 -05:00
Luke I. Wilson
3be12bdff1 Use Buffer.WriteTo method for writing buffer to file 2021-03-23 18:13:55 -05:00
Luke I. Wilson
40e1b40672 Add and replace []string buffer with ropes 2021-03-23 15:14:23 -05:00
Luke I. Wilson
bd6f1cf79e Added RopeBuffer Buffer implementation 2021-03-22 16:10:23 -05:00
Luke I. Wilson
817b2c66c4 Complete revamp of shortcut system in Menu 2021-03-20 23:10:23 -05:00
Luke I. Wilson
3cf168355a Remove barFocused boolean from main loop 2021-03-20 21:56:25 -05:00
Luke I. Wilson
8db551ceae Bug fix with focusing wrong component after using menu item 2021-03-20 21:51:34 -05:00
Luke I. Wilson
119aac195e Bug fixes for previous features 2021-03-20 18:03:38 -05:00
Luke I. Wilson
df106cbbff Render shortcuts on Menus 2021-03-20 17:35:32 -05:00
Luke I. Wilson
ce66bc4bc6 Added shortcut keys possibility to Menus 2021-03-20 16:22:06 -05:00
Luke I. Wilson
fefa34c2b6 Add ItemSelectedCallback to MenuBar & make Menus field private 2021-03-20 14:53:41 -05:00
Luke I. Wilson
bc08505fa8 Show dirty TextEdit tabs 2021-03-20 13:46:44 -05:00
Luke I. Wilson
ca4a847547 Allow non-existant files in command-line args 2021-03-20 13:36:26 -05:00
Luke I. Wilson
6e97e8345a Add status bar 2021-03-19 21:57:49 -05:00
Luke I. Wilson
70d734e8e2 Added using tab to move cursor in MenuBar and Menu 2021-03-19 20:21:46 -05:00
Luke I. Wilson
5625e8b48f Refactored cursor movement in MenuBar 2021-03-19 20:12:19 -05:00
Luke I. Wilson
ffaad36c78 Added quick chars to MenuBar and Menus 2021-03-19 19:58:59 -05:00
Luke I. Wilson
83567c1341 Menu & MenuBar experience improvements 2021-03-18 23:37:42 -05:00
Luke I. Wilson
1d77aae277 go fmt 2021-03-18 19:52:34 -05:00
Luke I. Wilson
e1ebc29ac1 Cut/copy/paste 2021-03-18 19:47:01 -05:00
Luke I. Wilson
c8729aebb8 Fix bug in GetSelectedString in TextEdit 2021-03-18 19:46:36 -05:00
Luke I. Wilson
cac950afd6 Cursor selection movement fix in TextEdit 2021-03-18 16:47:20 -05:00
Luke I. Wilson
f7f864d125 Selection bug fixes 2021-03-18 16:44:50 -05:00
Luke I. Wilson
d5ec12c1c8 Improved modifying selection with cursor movement 2021-03-16 17:30:38 -05:00