-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtodo
More file actions
74 lines (55 loc) · 3.19 KB
/
todo
File metadata and controls
74 lines (55 loc) · 3.19 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
*****************
MILESTONES:
*****************
TODO:
- Get `dimtutor` set up and going
- Implement deletion `b`
- Implement command saving (push it into a doubly linked list and let the user
navigate using uparrow and downarrow)
- Implement a buffer for jumps (use a doubly linked list so you can jump forward and backward)
- Implement macros (use concept similar to undoRedoStack)
- Implement emergency file saving
- Compress that file upon exiting using Huffman Compression
- Implement minimap (look at how the one in vim is implemented)
- Work on piping for console output (so you can see what you're typing)
- Set the output to a linked list and use drawlines() to draw it, and traverse it using moveUp, moveDown, etc
- Exit the output with a defined key, maybe `ESC` or something
- Run it similar to runFileNavigation
- Finish piping
- Implement real time automatic testing, use threading and a seperate pipe than stdin to pipe data into output prog so that the user doesn't have the stdin pipe (which curses is using) blocked while it's being tested
- Day/Night color mode, `redify` mode for increased red light exposure at night (like f.lux)
- Implement as much of `VISUAL` mode as you can
IMPORTANT:
- Make tests for all data structures and algorithms that run if that python script is running in main namespace
- Learn and execute best practices for unit tests
*********************
ONCE IT'S FINISHED
*********************
Prettify the `README.md` page, with gifs and screenshots and a link to a manual
****************************
WISHLIST
****************************
Inertial Scrolling
- have to make a lot of stuff faster before doing this
******
IMPORTANT
******
Stuff to mention during 275 presentation:
Held to PEP8 standard
Briefly describe the finite state machine design
Used a linked list to represent all of the lines
- makes insertion and deletion O(1) intead of O(n)
- talk about python list slices creating a new list, worse for memory too
Talk about usage of abstraction to make implementing features and changing implementations of existing features relatively painless
- learned about importance throughout project, came to appreciate it when I had to change line storage from list to linked list to make inserting and deleting lines very fast (was very easy refactor)
- used heavily for drawLines(), refactored it so I could use it for filenavscr and editorscr
Talk about `subprocess`, `subprocess.Popen`, etc
- Bang! implementation; pipe handling
Implemented Syntax Highlighting using `pygments`
- Used a colors array for each line, kept control of it really similar to the text itself
Talk a little bit about how you structured the file system to keep things cleanish
Talk about binary search implementation for file navigation
Talk about undo redo buffer a little
Talk about multiprocessing vs multithreading in python; gil, how multiprocessing avoids some of the problems of gil
Simple top down dp solution in Levenshtein distance using a bk tree
Talk briefly about bk tree (properties, insertion/addition running time is SUPER important to be sure to briefly cover this)