Commit Graph

109 Commits

Author SHA1 Message Date
b9a8b0040a Replace manual utf8.DecodeRune with range string loops 2021-04-13 12:31:42 -05:00
06d12b0415 Code tidy 2021-04-13 11:32:22 -05:00
2755630929 Upgrade go version 2021-04-13 11:30:03 -05:00
1dbba289c8 Make dependencies direct and upgrade go-runewidth 2021-04-13 11:22:52 -05:00
faa9c2c410 Added rope buffer anchors test 2021-04-13 11:19:23 -05:00
3bf5e6dfd7 Implemented anchors for rope buffer 2021-04-13 11:05:01 -05:00
8d775804cb Reimplement simple selection 2021-04-12 18:57:59 -05:00
b0ca65a613 Fix not applying cursor operation 2021-04-12 17:48:00 -05:00
d96c2f6f03 Refactored cursor architecture into buffer module 2021-04-12 17:38:29 -05:00
59856c5e41 Panel: change reference to Focused -> focused 2021-04-12 10:53:25 -05:00
e0079bbdb5 Panel: inherit from baseComponent struct 2021-04-08 18:39:06 -05:00
70e32e0b5c Merge branch 'panels' 2021-04-08 13:05:13 -05:00
8346c52167 Added baseComponent to ui to save boilerplate lines 2021-04-08 12:41:24 -05:00
2e128e5b36 Remove temporary comments from main.go 2021-04-08 11:11:09 -05:00
14ba338de9 PanelContainer: bug fix on destroying a panel
This commit fixes a bug where destroying a Panel with a parent of
kind PanelKindSplit... causes the selected to become that split
panel, instead of a child. Now, it chooses the leftmost child of
that parent panel.
2021-04-07 23:03:20 -05:00
5df772e568 TextEdit: only hide cursor when unfocused 2021-04-07 22:05:58 -05:00
8142bb2de5 Autofocus new panels 2021-04-07 21:51:18 -05:00
baafcf3d5c TextEdit: Colorscheme "Column" style + changed column appearance 2021-04-07 21:45:38 -05:00
cdeb3be359 TabContainer & Theme fixes to better show focused state of TabContainer and MenuBar 2021-04-07 21:06:36 -05:00
eb17dfec2e Transfer focus to panelContainer on some Menu callbacks 2021-04-07 19:55:11 -05:00
e7e459b16f PanelContainer: code cleanup 2021-04-07 14:55:20 -05:00
56b89c6079 PanelContainer: Implement cycling selection 2021-04-07 13:56:32 -05:00
459087e6d8 PanelContainer: removed multiple comments 2021-04-06 14:35:55 -05:00
389276ee34 PanelContainer: Bug fixes and integration 2021-04-06 11:14:17 -05:00
c40be89564 PanelContainer: Floating Panels, but not quite? 2021-04-06 10:06:02 -05:00
95e4db4d3e PanelContainer: SwapNeighborsSelected() to split left and split top 2021-04-05 17:31:16 -05:00
cf5803c464 Splitting Panels 2021-04-05 17:15:57 -05:00
eb8142ea8e PanelContainer: SetFocus and HandleEvent properly 2021-04-05 17:03:52 -05:00
25b416da3d Injected new PanelContainer into mainloop to replace TabContainer 2021-04-05 16:55:16 -05:00
03c8c3bcad Created Panel and PanelContainer untested code 2021-04-05 16:22:40 -05:00
0918afc483 Fixed not setting TextEdit's FilePath field in Save As function 2021-04-05 10:30:51 -05:00
ccb096a3f6 Add GotoLineDialog and Search->Go to line functionality 2021-04-04 20:00:47 -05:00
3982628653 Ran go fmt *.go on all sources 2021-04-04 13:15:31 -05:00
e115855491 TextEdit highlighting: update lang definition 2021-04-04 11:09:34 -05:00
0c44bd0312 Fix nil ptr bug
Something weird was happening with keeping a global interface
tcell.Screen. Instead, decided to keep a global pointer to interface
*tcell.Screen. I suspect the Go compiler did not see that screen
was supposed to escape to the heap, and so it was kept as a main()
function-scope variable.
2021-04-04 10:34:55 -05:00
ca68b8d7fa TextEdit: naive fix to rendering selection around hard tabs 2021-04-04 09:36:56 -05:00
0e0f4b9339 Replaced background style 2021-04-04 08:33:42 -05:00
28e9af70eb InputField: replace buffer with byte buffer and update appearance 2021-04-04 08:30:09 -05:00
1b50aff0c6 Main: fix cut selection deleting selection before copying. 2021-04-02 15:05:59 -05:00
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
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
9192d35b3c Implement Save As and have Save redirect to Save As when the file is unnamed 2021-04-01 21:07:28 -05:00
7ce5096952 Add menu entries to Search menu 2021-04-01 20:42:22 -05:00
0dcdd62773 UI: removed WindowContainer, and replaced it with DrawWindow function 2021-04-01 20:34:18 -05:00
a4d5f3ccf4 Highlighter: fix bug causing out of bounds access when endLine > len of internal lines 2021-04-01 16:19:14 -05:00
239793aa2c Rope test: add case for TestRopeSlice 2021-04-01 16:16:47 -05:00
25f5262b6a Rope: fix bug in Slice() causing out-of-bounds access 2021-04-01 16:14:39 -05:00
2cd41fc62d TextEdit: update highlighting for .go files, make strings lazy match 2021-04-01 14:40:38 -05:00
58c8de3068 Rope: Added LineColToPos, and optimized Highlighter's UpdateLines() 2021-04-01 14:16:51 -05:00
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