[x] use system lua lib [x] make it std=c11 not gnu11 [ ] make it compile on openbsd [ ] update license, readme and documentation [ ] add manpage [x] add desktop file [x] makefile: add install and uninstall [ ] makefile fix permissions of installed data dir [ ] SDL: disable key not recognized messages [ ] font: use system fonts [ ] font: implement hashmap of already rendered glyphs and only re-draw the ones that are not in that map [ ] font: resize text on the fly [ ] ui: change ui scale on the fly [x] add menu to exec arbitrary command -> added console [ ] that command can be what is selected [ ] console: accept input [ ] doc: detect file changes with hash [x] add horizontal scroll [ ] add a cross to close tab [ ] add context menu to various things [ ] document and selection context menu [ ] treeview context menu [ ] tab context menu for close duplicate etc [ ] prevent overscrolling on treeview [x] user config file and/or init.lua [x] change tmp directory to somewhere in /tmp [x] save project directory and restore on reopening [ ] optimize dir tree taking too long to load on big folders [ ] SDL: optimize drawing operations [ ] implement render queue for each frame and render in batch, this should save some time and improve cache locality [ ] syntax: do not reload syntax on every draw event [ ] go in background when launching from terminal [ ] some key bindings: [x] alt+right == End [x] alt+left == Home [x] alt+up == PageUp [x] alt+down == PageDown [ ] ctrl+d == duplicate line [ ] ctrl+x == cut line || selection [ ] ctrl+c == copy line || selection [x] ctrl+shift+o == change & open project folder [x] ctrl+q == quit [x] ctrl+n -> next_find [x] ctrl+shift+n -> prev_find [x] f3 -> new file [x] selected + tab == indent up [x] selected +shift+tab == indent down [x] change alt+ to ctrl+ [ ] add multi cursor system [ ] add binding to open up a cheatsheet of keybinding, with a search feature [x] implement visual "ruler" at column 80 [ ] show hidden files config and binding [ ] syntax: highlight FIXME TODO BUG FIX and IMPROVEMENT keywords [ ] do not open doc in new tab if current tab has an unchanged document [ ] doc: add auto close brackets and quotes [ ] view: implement get_scrollable_size()