Skip to content

Latest commit

 

History

History
37 lines (35 loc) · 2.04 KB

todo.org

File metadata and controls

37 lines (35 loc) · 2.04 KB

More filetypes: Add syntax highlighting rules for some of your

favourite languages to the HLDB array.

Line numbers: Display the line number to the left of each line of the

file.

Soft indent: If you like using spaces instead of tabs, make the Tab

key insert spaces instead of \t. You may want Backspace to remove a Tab key’s worth of spaces as well.

Auto indent: When starting a new line, indent it to the same level as

the previous line.

Hard-wrap lines: Insert a newline in the text when the user is about

to type past the end of the screen. Try not to insert the newline where it would split up a word.

Soft-wrap lines: When a line is longer than the screen width, use

multiple lines on the screen to display it instead of horizontal scrolling.

Use ncurses: The ncurses library takes care of a lot of the low level

terminal interaction for you, and makes your program more portable.

Copy and paste: Give the user a way to select text, and then copy the

selected text when they press Ctrl-C, and let them paste the copied text when they press Ctrl-V.

Config file: Have kilo read a config file (maybe named .kilorc) to set

options that are currently constants, like KILO_TAB_STOP and KILO_QUIT_TIMES. Try to make more things configurable.

Modal editing: If you like vim, make kilo work more like vim by

letting the user press i for “insert mode” and then press Escape to go back to “normal mode”. Then start adding all your favourite vim commands, starting with the basic movement commands (hjkl).

Multiple buffers: Allow having multiple files open at once, and have

some way of switching between them.

## GUI

gfx (gfx_device_gl) is broken on resize. It calls glViewport with the

original window dimensions rather than new ones. Try to update gfx libraries.

Fix aspect ratio in outline rects

What is DrawState? Should it be the GUI abstraction on top of a Buffer?

Then there’s a window, a split, a tab, etc.