evil-qemacs/TODO.org
2017-03-06 12:54:49 +00:00

540 lines
19 KiB
Org Mode

; TODO list for qemacs
;
; Author: Charles Gordon
; Updated: 2017-03-06
* Needed for release version 5
* Priority 0
** archive: issue with current directory
** basic: fix current position when changing buffer attached to window
** basic: enter should optionally remove whitespace at end of line
** basic: reset last command when executing macro
** basic: make `do_word_right`, `do_word_left`, `do_bol`, `do_eol`... return new offset
** completion: fix electric behavior
** files: check file date to detect asynchronous modifications on disk
** files: reload modified file upon change if untouched since load
** layout: kill buffer should delete popup and popleft window
** minibuf: spurious recursive edit cases.
** shell: A-x kill-buffer RET -> hang
** shell: turn on interactive mode on commands that move the cursor to EOB
** shell: asynchronous input buffer
** shell: give commands a chance to execute for macros to behave correctly
** shell: A-y at process prompt
** shell: C-t at process prompt
** shell: fix very long lines in shell buffer
** undo: saving the file kills the redo stack!
** undo: when undo resets the modified buffer flag, this prevents file save
** xml/htmlsrc: scan for `</script>` beyond end of very long line
* Priority 1
** API: use style cache in DisplayState
** API: remove screen argument in release_font
** API: remove screen argument in glyph_width
** API: add create-style(name, properties)
** archive: add API to register new file formats
** basic: improve speed: C-x C-f ~/x2m RET A-r 20140101 RET 20140101 RET -> 96s
** basic: improve speed: C-x C-f ~/x2m RET C-u 1000 C-n -> 4s
** basic: check abort during long operations: bufferize input and check for ^G
** basic: share mmapped pages correctly
** basic: show memory stats in describe-buffer and about-qemacs
** basic: fix mode setting mess
** basic: fix default wrap setting mess
** basic: fix fuzzy completion when single unanchored match
** basic: make styles and log buffers read-only and display as binary
** basic: optional 64-bit offsets on 64-bit systems, use typedef for buffer offsets
** basic: use rune and u8 types
** basic: auto/mixed eol mode
** basic: display ^L as horizontal line and consider as linebreak character
** basic: fix behaviour on overlong lines
** basic: fix offset when exiting s->hex_mode
** clang: indentation bug on {\nputchar(expr ? 'a' : 'b');\n}
** extras: do_transpose should take argval and swap distant fragments
** completion: minibuffer completion: bad return on C-x C-f . SPC qe SPC RET
** config: reparse .qerc upon change
** dired: display directory links as directories and links
** dired: fork process and use asynchronous function to:
- list directory contents
- track directory contents file stats
- compute subdirectory sizes
** doc: migrate TODO and documentation to markdown or reStructuredText
** doc: rewrite TODO file with more sections and explanations
** doc: migrate coding-rules.html to markdown
** files: add hook on file change
** files: handle files starting with re:
** files: check file permissions.
** files: use trick for entering spaces in filename prompts without completion
** files: fix s->offset reset to 0 upon C-x C-f newfile ENT C-x 2 C-x b ENT
** files: insert-file: load via separate buffer with charset conversion
** files: reload-file on C-x C-r
** html: &#x200c; -> zero width causes missing chars at end of line
** html: mode_probe fails on junk/Books/881256329.epub/OEBPS/Attributes.xhtml when cycling
** html: preview mode does not work
** html: checksum stuff does not work
** macros: allow redefining the keyboard macro embedding itself
** macros: show-macro, dump-macro to ease macro debugging and timing
** macros: fix macro slowliness in 6000 line buffer junk/dirs/x
** macros: do not use visual movement inside macros (definition and execution)
** macros: do not redisplay during macro execution, esp with prefix
** macros: check for abort during repeated command execution
** macros: check for failure during repeated command execution
** markdown: a_bb_c should not detect bb as underlined
** minibuf: use more mode specific bindings
** minibuf: minibuffer-electric-yank in minibuffer to fix pathname
** minibuf: minibuffer input ~ should not kill http: prefix
** php: improve coloring
** preview-mode: typing text should auto-search
** screen: check coordinate system to 1000 based with optional sidebars
** search: improve speed finally
** search: add low-level accelerator function
** search: use do_isearch or similar to input string and options
for other search commands: do_search_string, do_query_replace,
count-matches, delete-matching-lines (might need recursive edit)
** search: add regex support
** search: hex-mode search strings should mix hex ut8 strings and ASCII control char names
** search: make isearch bindings for minibuffer
** search: handle word and case toggles matches in query-replace
** session: register session store functions
** session: save previous answers, ...
** session: save preview mode, buffer modes and properties
** session: save process buffers? non file-based buffers? dired buffers?
** shell: handle long shell lines
** shell: fix screen size notifications, SIGWINCH signals and ioctl
** shell: fix crash bug when invoking qemacs recursively in the terminal
** shell: set current directory of new shell buffer to that of current window
** shell: use auxiliary buffer to make process input asynchronous
** shell: M-l, M-u, M-c and other buffer modifications in shell input region
** syntax: fix overlong line coloring
** syntax: support ReStructuredText (RST)
** text: \u200c -> zero width
cp="200B" na="ZERO WIDTH SPACE" alias="ZWSP"
cp="200C" na="ZERO WIDTH NON-JOINER" alias="ZWNJ"
cp="200D" na="ZERO WIDTH JOINER" alias="ZWJ"
cp="200E" na="LEFT-TO-RIGHT MARK" alias="LRM"
cp="200F" na="RIGHT-TO-LEFT MARK" alias="RLM"
** tiny: remove extra features
** undo: store cursor movements in undo records
** undo: kill redo list when forking after undo
** undo: undo should handle sequence of undo records upto tagged start.
** undo: add disable-undo for tests and benchmarking
** x11: handle X11 window manager close window event and exit cleanly
* Priority 2
** basic: completion in load-resource-file
** basic: elastic-tabs
** basic: better display of invalid utf-8 encodings
** basic: indent-rigidly
** basic: scripting
** basic: fix colors, default schemes...
** basic: disable messages from commands if non-interactive (eg: set-variable)
** basic: make style-buffer-mode and log-buffer-mode
** charset: handle chinese encodings
** charset: handle euc-kr
** charset: autodetect sjis, euc-jp...
** clang: align multi line comments leading * one space to the right
** clang: fix C indentation inside comments
** clang: fix C indentation inside struct, array and enum initializers
** dired: keep dired current file upon: RET C-x C-k RET
** dired: fork for directory scan, background inode tracking, dir size scan
** extra: add function to add entry in TODO.org
** hex: extend hex mode to support 16,32,64 bit words as little and big endian
** html/xml: merge xml / htmlsrc modes
** html/xml: fix colorizer for multi-line tags and attributes
** macros: improve dump-macro to convert macro to string
** macros: fix dump-macro to save/restore last-kbd-macro to/from session
** macros: do not store messages during repeated macro execution or limit buffer size
** macros: name-last-kbd-macro
** macros: fix source syntax issues
(define-macro "last-kbd-macro" "A-fA-fC-FC-FC-@C-EA-wC-AC-NC-XnC-YC-MC-Xp")
(define-macro "last-kbd-macro" "A\-f")
--- - - -
(define-macro "last-kbd-macro" "--- - - -C-M
<Down><Up><Right><Left>")
<><>(define-macro "last-kbd-macro" "\<>\<>")
** modes: header-line format
** modes: mode-line format
** modes: display filename relative to current directory instead of buffer name on mode-line
** modes: major and minor modes
** modes: split modes into colorizers, interaction, io, charset, eoltype
** script: expression evaluator
** search: count-words, wc
** search: stats command for word count and mode specific stats
** undo: limit size of undo buffers
** undo: add undo records for styles, modes...
** undo: disable undo for archive parse and uncompress phases
** undo: compress logs and limit size
** variables: set variable values via function pointer
** variables: add boolean variables
* Priority 3
* Basic stuff
** xml: crash bug on johnmacfarlane.net/texmath.xhtml
** completion: abbreviate lines in file completion list popup
** display: wrap long lines past line numbers column
** shell: tty_put_char should convert charsets
** shell: current path in compile set to current buffer path
** shell: current path retrieved from shell prompt backwards from point
** avoid error in new file
** add custom memory handling functions.
** use failsafe memory allocator and longjmp recover.
** redefine KEY_Fx to make them sequential
** move ungot_key to key_context
** static init_call stuff ?
** add default charset for new buffer creation, set that to utf8
** splitting pages should fall on 32 bit boundaries (difficult)
** handle broken charset sequences across page boundaries
** add command help/description in declarations
** make command declaration macros standalone
** allow recursive main loop, and remove input callbacks
** fix column computation based on display properties:
(variable pitch, tabs, ^x and \uxxxx stuff -- emacs behaviour) ?
** synced virtual buffers with restricted range
** unsynced virtual buffers with restricted range and specific mode/charset
** spell checker
** printing support
** bfs: built in file system for embedded extensions and files
Jasspa bfs is way too complicated, make simpler system
** notes
** C-x x next-buffer ??? Move to the next buffer.
** abbreviation mode
** qe_realloc: typed and clear reallocated area
* Moving / Editing
** remote editing
** blink-and-insert on ) } ] >
** fix scroll up/down to move point if already at end
** move by paragraph on M-[ and M-]
** scroll horizontally on M-{ and M-}
** scroll up/down with argument should scroll by screen row.
** simplify C-z A-z accordingly
** accented letters on OS/X
** combining unicode glyphs produce bogus cursor positions
example: V M-'
this problem occurs if no combined glyph exists.
qemacs does not take into account combination performed by the terminal.
Terminal glyph width of 0 should be supported.
** deal with accents in filenames (OS/X uses separate utf8 accents)
** 256 color mode
** auto-fill-mode
** auto-revert-mode, global-auto-revert-mode, auto-revert-tail-mode
** rectangular regions, cut/paste
* Windowing / Display
** window scrolling not emulated in tty (check ^Z in recursive eps)
** multiple frames
** lingering windows
** cursor not found on doc/256colors.raw if truncate-lines=1
** enlarge-window-interactively
** enlarge-window-horizontally
** enlarge-window
** tab cursor displayed size
** improve speed of text renderer / improve truncate mode
merge some good parts with CSS renderer ?.
Suppress CRC hack (not reliable).
** display alternate cursor in non active column in hex mode.
** fix crash bug on fragments longer than MAX_SCREEN_WIDTH.
** vertical scroll bar
** menu / context-menu / toolbars / dialogs
** improve layout scheme for better scalability.
** scrolling by window size should position cursor differently
** emulation mode to use line-drawing characters for window borders
* Clean window deletion mess:
** avoid problems with popups (kill_buffer, delete_window, split_window)
** detach window from tree and keep attached to buffer if last
** detach window from tree and put in delayed free tree otherwise
edit_close(s)
do_delete_window(s)
bufed_select(s) if vertical split
dired_select(s) if vertical split
do_less_quit(s)
do_delete_other_windows(s) deletes other windows (!)
do_minibuffer_exit(s) also deletes completion_popup
insert_window_left() deletes some left-most windows
do_list_buffers()
do_dired()
* Search / Replace
** search: regex search/replace
** search: query replace across multiple files
** search: query replace options: u -> undo last change
* Unicode / bidir
** set_input_method() and set_buffer_file_coding_system() in config file.
** fix kana input method
** charset: add JIS missing encoding functions
** add JIS charset probing functions
** test Hebrew keymap support.
* X11 display / graphics
** clip display by popup size
** move -nw cmd line option to tty.c and make term_probe return better score
** remember X11 window positions and restore layout ?
** improve image viewer.
** faster video handling (generalize invalidate region system)
** integrate tinySVG renderer based on the new libraster.
** implement wheel mode in CSS display.
** fix configure for missing support: x11 xv png ...
** add configure --disable-graphics
** dpy_open_font should never return NULL, must have a system font.
* Outline / Org mode
** outline styles
** implement hide / show regions
* C mode
** c-indent
** indent-with-tabs
** stats command for slcc
** add TAGS support:
*** recursive search of QTAGS file.
*** C decl parser
*** global QTAGS file indexed with global includes
** see if java/javascript/c++ is OK.
** autocomplete keyword, function, variable, member names
** automatic indentation detection
** c-mode descendants:
*** as-mode: ActionStript files
*** awk-mode
*** C++ mode
*** objc-mode: Objective C
*** csharp-mode: C#
*** d-mode
*** java-mode
*** javascript-mode, js-mode -> javascript files
*** json-mode
*** scala-mode
*** yacc-mode
*** go-mode
*** idl-mode
*** typescript-mode
*** jspp-mode: JS++
* HTML mode
** distribute libqhtml as a separate project
** OPTIMIZE eb_nextc et al or always duplicate box content (big speed improvement).
** polish end of line offset/cursor displacement support.
** handle implicit TR
** add file referencing (<?xml-stylesheet type="text/css" href="xxx"?>, <link>, etc...)
** fix LI numbering with VALUE attribute (cannot use CSS). Verify counter-reset semantics.
** (z-index) floats must be displayed after all other stuff.
** <NOBR> is sometimes incorrect.
** more font style synthesis in html2ppm.
** add xml CDATA parsing
* Shell
** fix bof/eof shell mode
** allow quoting of special keys : let do_char insert xterm/vt100
key sequence to allow typing special keys into shell process
** fix terminal size inside shell window ?
** cmdline arg to force lines and columns to test shell.
** toggling interactive shell mode is not automatic enough
** man pager -> more bindings, such as RET -> push-button (jump to map page)
** accented letter input in shell mode
** transcode between tty charset and shell buffer charset
** track unsupported escapes in shell buffer
** doctor command should create and show *trace* buffer, remove eb_new kludge
** use colorized buffer for *trace* buffer to flag tty input, shell output, supported and unsupported escapes.
** telnet-mode: Connect to a remote computer using telnet
* Dired
** use buffer specific load functions
** separate buffer for each directory
** adjust dired gutter width for max name length
** snap dired left window horiz scroll
** make dired left window temporary popleft window
** improve dired (file commands, nicer display)
*** t -> dired-touch
*** | -> dired-shell-command
*** D -> dired-mkdir
** make archive mode use dired commands
* Modes
** compress mode file save to compressed format
** auto-compression-mode
** rethink mode specific commands -> add inheritance for all commands ?
** mode inheritance
** calculator / spreadsheet mode
** calendar mode
** email reader mode: mail / rmail
** news reader mode
** irc client mode
** ispell
** twitter
** rss
** set-gosmacs-bindings
** wikipedia mode
** info-mode: unix info mode
** improve latex-mode
*** mode for tek style sheets
*** mode for texi intermediary files
*** latex-mode: LaTeX documents.
*** bibtex-mode
*** tex-mode: TeX or LaTeX documents.
** vim mode.
** minor modes with key override such as "preview" mode
** merge hex-mode and binary-mode
** mode for undo buffers
** visual-diff-mode: Use color-coding to compare two buffers.
** improve existing language modes:
*** ada-mode
*** asm-mode: handle various assembly styles
*** calc-mode: fix syntax, disable C++ comments
*** cmake-mode
*** cobol-mode
*** css-mode
*** erlang-mode
*** fcl-mode
*** forth-mode
*** fortran-mode
*** haskell-mode
*** html-mode: support hex entities
*** julia-mode
*** lisp-mode
*** lua-mode
*** makefile-mode: Gnu and other makefiles.
*** markdown-mode: syntax modes for toml, bash (bash output), sh, text, txt
*** ocaml-mode
*** pascal-mode
*** perl-mode
*** php-mode
*** postscript-mode: more restrictive match
*** python-mode
*** r-mode
*** ruby-mode
*** scheme-mode
*** scilab-mode
*** sh-mode: Handle here documents
*** sh-mode: Handle multiline strings
*** sh-mode: shell script files
*** sql-mode
*** vbasic-mode: more restrictive matcher because .cls files may be latex
** missing languages:
*** asp-mode:
*** automake-mode:
*** bat-mode: DOS command.com batch files.
*** bennugd-mode
*** bluespec-mode
*** boo-mode
*** cg-mode
*** changelog-mode
*** chdr-mode
*** cmd-mode: Windows cmd.exe command files.
*** conf-mode: configuration files.
*** cuda-mode
*** DCL mode
*** def-mode
*** desktop-mode
*** diff-mode
*** doc-mode
*** docbook-mode
*** dosbatch-mode
*** dot-mode
*** dpatch-mode
*** dtd-mode
*** eiffel-mode
*** exelis-mode
*** fsharp-mode
*** gams-mode: GAMS files.
*** gap-mode
*** glsl-mode
*** gtkrc-mode
*** haddock-mode
*** imagej-mode
*** ini-mode: Windows .ini files.
*** j-mode
*** language-mode
*** libtool-mode
*** literate-mode
*** log-mode
*** m4-mode: M4 macro processor files
*** maildrop-mode: for .mailfilter
*** mallard-mode
*** matlab-mode
*** mediawiki-mode
*** modelica-mode
*** mxml-mode
*** nemerle-mode
*** netrexx-mode
*** nroff-mode
*** nsis-mode
*** objj-mode
*** ocl-mode
*** octave-mode
*** ooc-mode
*** opal-mode
*** opencl-mode
*** patch-mode
*** pkgconfig-mode
*** po-mode: translation files
*** prolog-mode
*** protobuf-mode
*** puppet-mode
*** rpmspec-mode
*** sml-mode
*** sparql-mode
*** systemverilog-mode
*** t2t-mode
*** tcl-mode: Tcl files.
*** texinfo-mode
*** vala-mode
*** vbnet-mode
*** verilog-mode
*** vhdl-mode: VHDL files.
*** xslt-mode
** syntax: look at qmake, cmake, scons, ant, maven...
** syntax: look at typescript, bitC
* Ideas from other editors
** prevent edit in browse mode (currently called preview-mode)
** dynamic project based settings, include, exclude patterns...
** electric-c-mode
** http request with headings
** save file to non existent path -> create path.
** dired view with outline and expand/collapse
** dired view with generalized file matcher
** open file with fuzzy completion
** execute command with fuzzy completion
** completion with fuzzy matching
** find-file: gist:snippet
** new flavor for GoogleClosureCompiler
** handle or remove extra code page files:
APL-ISO-IR-68.TXT GSM0338.TXT SGML.TXT
CP1006.TXT CP1253.TXT CP1254.TXT CP1255.TXT CP1258.TXT
CP775.TXT CP855.TXT CP856.TXT CP857.TXT CP860.TXT CP861.TXT
CP862.TXT CP863.TXT CP864.TXT CP865.TXT CP869.TXT CP874.TXT CP932.TXT
JIS0201.TXT SHIFTJIS.TXT
euc-jis-2004-std.txt iso-2022-jp-2004-std.txt jisx0213-2004-std.txt
sjis-0213-2004-std.txt
MAC-CYRILLIC.TXT MAC-GREEK.TXT MAC-ICELAND.TXT MAC-TURKISH.TXT
cpdata.txt
koi8_ru.cp