[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 [U] 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 [ ] font: change font on the fly from a list of installed fonts [ ] implement a user directory for fonts (like plugins) [ ] 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 [ ] console: add option to open terminal [ ] console: make the itegrated console v100 compatible [ ] console: automatically switch focus to the previous rootview when hiding it or selecting something from a treeview [ ] doc: detect file changes with hash [ ] doc: save files with sudo (or other command) [ ] doc: complete rewrite of history handling, by default the whole document is selected for updates but when un-doing with a selection then the action is limited to that part of the document (this is a feature from emacs) [ ]: also make it configurable [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+ [ ] doc: add multi cursor system [ ] add binding to open up a cheatsheet of keybinding, with a search feature [x] implement visual "ruler" at column 80 [ ] treeview: show hidden files config and binding [ ] treeview: add a config to hide files bsed on patterns (*.\.o etc) [ ] 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 [ ] doc: highlight matching brackets and quotes pairs [ ] doc: have a list of file extensions and handlers for those extensions, so that we don't try to open like pdf files or tarballs and get jibberish [ ] view: implement get_scrollable_size() [ ] tree: add icons for common actions [ ] delete file [ ] new file [ ] rename file [ ] move file [ ] copy file [ ] tree: make treeview resizable [ ] FIX MASSIVE MEMORY LEAK