42 KiB
QEmacs TODO list
Bugs
-
encode non printing characters in filenames and buffer names
-
change buffer list layout to increase buffer name width if needed
-
fix warning:
int (*eb_printf_fun)(EditBuffer *b, const char *fmt, ...) = (void*)eb_printf; -
fix crash bug on
C-X C-B C-X C-F xxx RET -
fix cursor positioning beyond end of screen
-
swap buffer names in
compare-files -
check file time and length when selecting a different buffer or running any command on the current buffer:
-
if a macro is running, stop it
-
prompt the user for (r) read, (i) ignore, (k) keep, (c) compare
-
if not modified since save, read in separate buffer and compare.
- if difference before window start, mark and/or point, try and resync
-
if modified, modified version should be kept in a separate buffer. emacs behavior: You want to modify a buffer whose disk file has changed since you last read it in or saved it with this buffer.
If you say y to go ahead and modify this buffer, you risk ruining the work of whoever rewrote the file. If you say r to revert, the contents of the buffer are refreshed from the file on disk. If you say n, the change you started to make will be aborted. Usually, you should type r to get the latest version of the file, then make the change again.
-
-
keep modified status when undoing past a buffer save command
Current work
-
in markdown mode, for code blocks without a language tag, try and determine the language from contents
-
kill eval result so it can be yanked where appropriate
-
add binding to convert the list of search matches into a multi-cursor (use
C-\?) -
odin: c-mode indentation does not work because of lack of semicolons
-
clang: colorize git conflict markers <<<<<<< HEAD } defaultCase = c;
======= } else
a450183c (Analyser: fix scope stack and init_checkers' array) if (!is_last) {
-
add cat mode where colorizer is chosen based on extension of filename between ==> xxx <==
-
start directory of make command should be the default directory of current buffer
-
delete bufed buffer when exiting bufed or clear flags on
bufedinvocation -
should
markbe a window variable instead of a buffer variable? -
should
tab-widthbe a window variable instead of or in addition to a buffer variable? -
extra modes for drujensen/fib repo: es(escript), janet, k(K), p6, pony, ps1, pyx(cython), raku(rakudo), vb, zig detect flavors: ldc2?, bash, powershell, pypy, qb64, guile, sbcl
-
drag out of window should generate autorepeat scrolling requests
-
prevent mouse focus to window if searching
-
prevent mouse focus to window if minibuf active
-
only get tty clipboard contents on yank
-
only set tty clipboard contents if kill buffer changed during focus time
-
add script variable for clipboard support
-
add command line options for terminal features: backspace
-
add command line options for tracing
-
add command line options for color support
-
add script variable for terminal features: backspace
-
add script variable for tracing
-
add script variable for color support
-
from emacs:
set-background-colorSet the background color of the selected frame to COLOR-NAME.set-border-colorSet the color of the border of the selected frame to COLOR-NAME.set-cursor-colorSet the text cursor color of the selected frame to COLOR-NAME.set-foreground-colorSet the foreground color of the selected frame to COLOR-NAME. These commands provide a multi-column completion window
-
test other terminals: Terminal.app, wezTerm, Visor, Guake, or Yakuake
-
check out Eternal Terminal: https://mistertea.github.io/EternalTerminal/
-
DEC SET 1036 ESC or Alt keys
-
stb: add magic number detection
-
shell integration: easily navigate to previous shell prompts with
M-S-upandM-S-down. use buffer properties for this -
timestamp shell commands
-
remanent annotations on files and buffers
-
autoblame source code
-
auto-complete previously used commands when no other context is available
-
handle paste bracketting in xterm:
ESC [ 2 0 0 ~ xxx ESC [ 2 0 1 ~ -
display images using iTerm's image transfert protocol
-
evaluate colors in expressions:
rgb(r,g,b),hsl(h,s,l),hsv(h,s,v) -
do not abort macro on incremental search failure, just on final failure upon RET
-
show-date-and-timeshould distinguish betweenC-uand explicit number prefix -
change accent input method: type accents before the character: when inserting an accent, insert a space before and do not move point when inserting a character before an accented space, replace
-
fix markdown command bindings
-
toggle long listing and column listing in dired buffers
-
keep a list of windows in
EditBuffer -
keep the last active window when detaching a buffer, just make it invisible.
- easy if deleting the last window that shows the buffer
- if changing the buffer for a window, if the new buffer has a pending window, use that
- otherwise, create a new
EditWindowwith the same screen position for the new buffer. - alternative: keep previous window if changing the buffer so swapping back restores the position and mode
- add a previous window for
predict_switch_to_buffer
-
-color_codecommand line option to display available colors on terminal -
automatic remote config fetch based on email at qemacs.org:
- .qemacs, .bashrc...
-
shell buffer remote filesystem using commands
getandput(for ssh sessions) -
Use
OSC 1337file transfert protocol for file and image download -
scroll-at-end: down keys scrolls up when at end of buffer -
fix multicursor kill/yank by restricting the number of kill buffers: increase the number of kill buffers to
multi_cursor_curkill uses the nth-buffer corresponding to themulti_cursor_curvariableyank-popis disabled in this mode if no kill command occurred on a line, use the first buffer for yank else it uses the one selected by the kill command -
implement
narrow_start̀andnarrow_end -
add bindings for other editors:
nano,vscode,emacs,qe, (vim???) -
load bindings corresponding to invokation command or cmdline option
-
fix scroll window behavior (for Mg)
-
C-gin incremental search should reset the last search flags -
support multiple modes in window using array of mode pointers
-
column number in status bar should account for TABs
-
sh-mode: handle heredoc strings
cat << EOF\n ... \nEOF\n -
pass
indenttoColorizeFunc. -
TAB-> complete function name from tags etc. -
automatic multifile tags in project directory (where source management or tags file is found)
-
add parametric syntax definitions (nanorc files).
-
implement a maximum macro length and abort macro learning mode if reached
-
integrate qscript
-
pass argval and argflags for most commands
-
add buffer commands and point update commands
-
add
active_markandactive_regionflags in window/buffer states -
Many commands change their behavior when Transient Mark mode is in effect and the mark is active, by acting on the region instead of their usual default part of the buffer's text. Examples of such commands include
M-;,flush-lines,keep-lines,delete-blank-linesquery-replace,query-replace-regexp,replace-string,replace-regexp,ispell,ispell-word->ispell-region.undo-> undo changes restricted to the current regioneval-region-or-bufferisearch-forward.;or#or/: comment the block\add and or align\line continuation characters (c like modes)fill-paragraphmark-paragraphextends the selection if already active
-
command aliases:
flush-lines->delete-matching-lines.keep-lines->keep-matching-lines,delete-non-matching-lines.how-many(akacount-matches)
-
goto-lineshould not set mark if mark is already active -
whitespace-cleanupCommand: Cleanup some blank problems in all buffer or at region. It usually applies to the whole buffer, but in transient mark mode when the mark is active, it applies to the region. It also applies to the region when it is not in transient mark mode, the mark is active and C-u was pressed just before callingwhitespace-cleanupinteractively. -
comment-dwimCommand: Call the comment command you want (Do What I Mean). If the region is active andtransient-mark-modeis on, callcomment-region(unless it only consists of comments, in which case it callsuncomment-region); in this case, prefix numeric argument ARG specifies how many characters to remove from each comment delimiter (so don't specify a prefix argument whose value is greater than the total length of the comment delimiters). Else, if the current line is empty, callcomment-insert-comment-functionif it is defined, otherwise insert a comment and indent it. Else, if a prefix ARG is specified, callcomment-kill; in this case, prefix numeric argument ARG specifies on how many lines to kill the comments. Else, callcomment-indent. You can configurecomment-styleto change the way regions are commented. -
indent-for-tab-command(int ARG)Indent the current line or region, or insert a tab, as appropriate. This function either inserts a tab, or indents the current line, or performs symbol completion, depending ontab-always-indent. The function called to actually indent the line or insert a tab is given by the variableindent-line-function.If a prefix argument is given (ARG), after this function indents the current line or inserts a tab, it also rigidly indents the entire balanced expression which starts at the beginning of the current line, to reflect the current line's indentation.
In most major modes, if point was in the current line's indentation, it is moved to the first non-whitespace character after indenting; otherwise it stays at the same position relative to the text.
If
transient-mark-modeis turned on and the region is active, this function instead callsindent-region. In this case, any prefix argument is ignored. -
add menubar
Documentation / Support
- improve README.md
- rework documentation:
- document existing features
- make documentation available inside qemacs
- move documentation to markdown
- rewrite TODO.md file with more sections and explanations
- migrate coding-rules.html to markdown
- use cooked markdown mode for help
- add command
qemacs-helloonC-h h: load hello file for charset tests - add command
qemacs-faqonC-h C-f - add command
qemacs-manualonC-h m - help:
data-directory,data-path? - add command documentation in
describe-function - add command documentation in
describe-variable - cross link help pages
- show memory stats in
describe-bufferandabout-qemacs - add function to add entry in TODO.md
- move mailing list to github or private server
- range restricted search and replace
- different range display styles
Core / Buffer / Input
describe-key-briefly,local-set-key, etc should use a special input mode to read a string of keys via the minibuffer to remove theqe_key_processhack and use the same input behavior as emacs.- in command specs, distinguish between interactive commands and non interactive functions
- use tabulation context for
text_screen_width - add method pointers in windows initialized from fallback chain
- remove redundant bindings along fallback chains
- share mmapped pages correctly
- check abort during long operations: bufferize input and check for
^G - optional 64-bit offsets on 64-bit systems, use typedef for buffer offsets
- disable messages from commands if non-interactive (eg:
set-variable) - add custom memory handling functions.
qe_realloc: typed and clear reallocated area- use failsafe memory allocator and
longjmprecover. - move
ungot_keytokey_context - splitting pages should fall on 32-bit boundaries (difficult)
- handle broken charset sequences across page boundaries
- allow recursive main loop, and remove input callbacks
- synced virtual buffers with restricted range
- unsynced virtual buffers with restricted range and specific mode/charset
- bfs: built in file system for embedded extensions and files Jasspa bfs is way too complicated, make simpler system
- notes
- tiny: remove extra features
- tiny: make a really small version
- use Cursors cursors in command dispatchers:
an EditState would have an embedded QECursor that contains the buffer and offset an EditBuffer could also have an embedded QECursor with no EditStatestruct QECursor { QEmacsState *qs; EditState *s; /* points to the parent window */ EditBuffer *b; int offset; // optional navigation data to accelerate buffer access: // getc(), peekc(), prevc()... etc. }; - use hash tables for command and variable names
- sort key binding tables?
save-some-bufferscommand onC-x s- add registrable escape sequences and key names (eg:
S-f5 = ^[[15;2~) - add registrable key translations for NON ASCII input (eg:
C-x 8 3 / 4 ¾)
Charsets / Unicode / Bidir
UTF-8 / Unicode
- add default charset for new buffer creation, set that to utf8
- better display of invalid UTF-8 encodings
- update cp directory from more recent unicode tables
- UTF-8 variants: CESU-8, Modified UTF-8, UTF-16
- UTF-1 obsolete standard encoding for Unicode
- handle
tty-widthto compute alignement in dired, bufed... - limit number of combining marks to 20
- use
unichar,runeand/oru8types (usingchar32_tat the moment) - detect bad encoding and use
errnoto tell caller
East-asian
- handle chinese encodings
- handle euc-kr
- add JIS missing encoding functions
- add JIS charset probing functions
- autodetect sjis, euc-jp...
- fix kana input method
Bidir
- test Hebrew keymap support.
- rewrite bidirectional algorithm and support
Other
- change character detection API to handle cross page spanning
- fix
eb_prev_charto handle non self-synchronizing charsets - auto/mixed eol mode
set-eol-typeshould take a string: auto/binary/dos/unix/mac/0/1/2...- handle zero width codepoints: 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"
set_input_method()andset_buffer_file_coding_system()in config file.- use Unicode file hierarchy for code page files
- handle or remove extra code page files: 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 koi8_ru.cp APL-ISO-IR-68.TXT GSM0338.TXT SGML.TXT
- deal with accents in filenames (macOS uses combining accents encoded as UTF-8)
- rename
eb_putcas it handles the fullchar32_trange
Windowing / Display
set-display-sizeunit issue: use extra argument or different function for pixels and characters- always save window buffer properties to buffer upon detaching
- add global system to select default values for some window states
- fix current position when changing buffer attached to window
- fix default wrap setting mess
- display: add screen dump command and format
- display
^Las horizontal line and consider as linebreak character - colorize extra
^Mand^Zas preproc at end of line prior to calling the syntax highlighter (same as BOM) - colorizer bug on /comp/projects/fractal/fractint/ORGFORM/NOEL-2.FRM (triple
^M) - display bug on ~/comp/projects/fractal/fractint/ORGFORM/BAILOUT.FRM (double
^M) - default
display-widthof 0 is automatic, other values are shared between binary and hex modes - minibuffer and popup windows should be in a separate lists
toggle-full-screenshould not put modeline on popuptoggle-full-screenshould work on popups- kill buffer should delete popup and popleft window
- layout: check coordinate system to 1000 based with optional sidebars
- improve layout scheme for better scalability.
- display: API: use style cache in
DisplayState - display: API: remove screen argument in
release_font,glyph_width - display: API: add
create-style(name, properties) - display: use true colors on capable terminals
- basic:
frame-title-formatandmode-line-format - basic:
transient-mark-modeto highlight the current region - basic:
delete-selection-modeto delete the highlighted region on DEL and typing text - modes:
header-lineformat - modes:
mode-lineformat - display filename relative to current directory instead of buffer name on
mode-line - window scrolling not emulated in tty (check
^Zin recursive eps) - multiple frames
- lingering windows
- cursor not found on doc/256colors.raw if
truncate-lines=1 - tab cursor displayed size
- improve speed of text renderer / improve truncate mode
- merge some good parts with CSS renderer ?.
- Suppress CRC hack (not reliable).
- fix crash bug on fragments longer than
MAX_SCREEN_WIDTH. - vertical scroll bar
- menu / context-menu / toolbars / dialogs
- 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) - detach window from tree and keep attached to buffer if last
- detach window from tree and put in delayed free tree otherwise
- avoid problems with popups (
edit_close(s)
do_delete_window(s)
bufed_select(s) if vertical split
dired_select(s) if vertical split
do_popup_exit(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()
-
wrap long lines past line numbers column
-
fix column computation based on display properties: (variable pitch, tabs, ^x and \uxxxx stuff -- emacs behaviour) ?
-
tag left-view with electric navigation
-
expand / collapse region
X11 display / graphics
- handle X11 window manager close window event and exit cleanly
- clip display by popup size
- move
-nwcmd line option to tty.c and maketerm_probereturn better score - remember X11 window positions and restore layout?
- 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_fontshould never returnNULL, must have a system font.
Files
- [BUG] check file date to detect asynchronous modifications on disk
- reload modified file upon change if untouched since load
- add hook on file change
- handle files starting with re:
- check file permissions.
- handle filenames with embedded spaces
- use trick for entering spaces in filename prompts without completion
- fix
s->offsetreset to 0 uponC-x C-f newfile ENT C-x 2 C-x b ENT insert-file: load via separate buffer with charset conversionqe_load_fileshould split screen evenly forLF_SPLIT_SCREENflag- [Idea] save file to non existent path -> create path.
- [Idea] find-file: gist:snippet
- Missing commands:
revert-fileonC-x C-rreload-fileonC-x C-rfind-file-existingfind-other-frameonC-x 5 f,C-x 5 C-ffind-other-windowonC-x 4 f,C-x 4 C-ffind-other-read-onlyonC-x C-rfind-file-read-only-other-frameonC-x 5 rfind-file-read-only-other-windowonC-x 4 rsave-modified-buffersonC-x sfind-file: should support scp syntax for remote loading
- avoid error in new file
- actually load file in
find-file-noselect - should update symbolic links times when saving files
- improve speed:
C-x C-f ~/x2m RET A-r 20140101 RET 20140101 RET-> 96s - improve speed:
C-x C-f ~/x2m RET C-u 1000 C-n-> 4s - use a prefix to explore file in a popup window
Moving / Editing / Navigation
- pass argval and pagewise to
do_scroll_up_down()or split command - files: fix
SPC/TABdistinct behaviors on ~/comp/project/gnachman/ - basic: update default settings to
indent_tabs_mode = 0,indent_width = 4, my-colors - basic: add property lists in buffer and window for default directory and similar properties (override)
- basic: backspace delete hacking tabs
- 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 - basic: use visual movement for left, right, up, down and character based for
C-b C-f C-n C-p - basic: fix offset when exiting
s->hex_mode do_transposeshould take argval and swap distant fragmentsdo_transposehas invalid behavior if left or right chunk is empty- new flavor for GoogleClosureCompiler
- emacs bindings:
M-g M-ggoto-line(with prefix argument)M-g TABmove-to-column(with prefix argument)
- Missing commands:
what-cursor-positionwith universal prefix: show popup with long descriptioncompare-windowsshould resync from the end of line.elastic-tabsshow-matching-delimiters- blink-and-insert on
) } ] >or use different matching colors set-gosmacs-bindings->set_emulation("gosmacs")auto-fill-modeauto-revert-mode,global-auto-revert-mode,auto-revert-tail-modenext-bufferonC-x C-right, C-x >, f12Move to the next buffer.previous-bufferonC-x C-left, C-x <, f11Move to the next buffer.
toggle-full-screen-> unsupported ifscreen->dpy_full_screenisNULL- remote editing
- fix scroll up/down to move point if already at end
- move by paragraph on
M-[andM-] fill-paragraphshould default indentation for the second and subsequent lines to that of the first line- scroll horizontally on
M-{andM-}: should move point if scrolling moves it past the window borders - scroll up/down with argument should scroll by screen row.
- simplify
C-zandA-zaccordingly - rectangular regions, cut/paste
Macros
- allow redefining the keyboard macro embedding itself
show-macro,dump-macroto ease macro debugging and timing- fix macro slowliness in 6000 line buffer junk/dirs/x
- do not use visual movement inside macros (definition and execution)
- do not redisplay during macro execution, esp with prefix
- check for abort/failure during repeated command execution and macros
- improve
dump-macroto convert macro to string - fix
dump-macroto save/restorelast-kbd-macroto/from session - do not store messages during repeated macro execution or limit buffer size
- 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" "\<>\<>")
Minibuffer / Completion
- minibuf: spurious recursive edit cases.
- completion: fix electric behavior
- completion: add completion function to get the default value
- basic: fix fuzzy completion when single unanchored match
- completion: minibuffer completion: bad return on
C-x C-f . SPC qe SPC RET - minibuf: use more mode specific bindings
- basic: completion in
load-resource-file - completion: abbreviate lines in file completion list popup
- open file with fuzzy completion
- execute command with fuzzy completion
- completion with fuzzy matching
Searching
- store incremental search strings in search history list
- incremental search: increase max repeat count
- improve search speed finally
- add low-level search accelerator function
hex-modesearch strings should mix hex ut8 strings and ASCII control char names- isearch in hex should display search string in hex
- transfer case in
query-replace - regex replace with subexpressions
- query replace across multiple files
- query replace options: u -> undo last change
- add non selectable query-replace-mode for key bindings, cmd description and documentation
- extra:
grep,grep-buffer,grep-sources,grep-tree... - query_replace functions should be restricted to the highlighted region if any
- search:
count-words,wc,count-sloc - search: stats command for word count and mode specific stats
- isearch:
M-pandM-nshould select previous and next search pattern in history - searching failure should abort macros
Undo
- allow file save when undo clears file modified flag
- undo some cursor movements
- group undo entries to match command and or macro boundaries
- saving the file kills the redo stack!
- when undo resets the modified buffer flag, this prevents file save
- store cursor movements in undo records
- kill redo list when forking after undo
- undo should handle sequence of undo records upto tagged start.
- add disable-undo for tests and benchmarking
- limit size of undo buffers (
undo-outer-limit, default 3000000) - add undo records for styles, modes...
- disable undo for archive parse and uncompress phases
- compress logs and limit size
- mode for undo buffers
Config / Sessions / Scripting
- config: reparse .qerc upon change
- 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?
qe_get_variableshould populate a QEValueqe_set_variableshould take a QEValue pointer- variables: add minimal version in tqe
- variables: set variable values via function pointer
- variables: add boolean and char types
- tack library of ancillary files at the end of the binary:
- add protocol to read from library (lib:xxx)
- add html.min.css and docbook.min.css to library
- append lib: to default QE_PATH
- clean up ancillary files
- [Idea] dynamic project based settings, include, exclude patterns...
- commands:
parse_arg()should handle default argument values - commands: pass raw prefix argument
Pas combination of has_arg (flags) and argval (number) eval-expressionshould evaluate region if highlighted?
Colors and styles
- [BUG] preserve static styles in
do_convert_buffer_file_coding_system() - optimize style transfer in
eb_insert_buffer_convert() - add color themes
- fix colors, default schemes...
- add style recent changes (
highlight-recent-changes) - make styles and log buffers read-only and display as binary
- make
style-buffer-modeandlog-buffer-mode
Modes
Generic mode stuff
- basic: register modes recursively along fallback chain
- modes:
next-modeshould include bufferdefault_modein list - tags: remove tags for modified line
- mode inheritance
- basic: stop copying
ModeDefstructures to implement inheritance - basic: fix mode setting mess
- modes: split modes into colorizers, interaction, io, charset, eoltype
- modes: major and minor modes
- rethink mode specific commands -> add inheritance for all commands ?
- add
mode_commandsandglobal_commandstables inModeDefstructure
C mode
- allman and other styles
- epita style
- auto remove trailing spaces and add final newline
- colorizing bug:
static int (*qe__initcall_first)(void) qe__init_call = NULL; - align multi line comments leading * one space to the right
- fix C indentation inside comments
- fix C indentation inside struct, array and enum initializers
- automatic indentation detection
c-indentindent-with-tabs- stats command for
slcc - improve tag support:
- missed tag:
static int (*qe__initcall_first)(void) qe__init_call = NULL; - tag multiple files and buffers
- tag project files recursively
- handle multiple tag files
- save tags to QTAGS or .qetags file
- update tag files automatically
list-tagsandlist-matching-linespopups should be clickable and go to the match use locus properties?list-definitionswith hot load functionshow-definitionin popup- handle standard libraries with tag system
- generate
#includelines automatically
- missed tag:
- autocomplete keyword, function, variable, member names
c-modedescendants:- TAB in whitespace should remove forward white space and indent under
- TAB at end of line or in space before \ should align on \ from previous line
- preserve macro \ alignment when editing (auto overwrite)
- see if java/javascript/c++ is OK.
as-mode: ActionStript filesawk-modecpp-mode: C++objc-mode: Objective Ccsharp-mode: C#d-mode: Djava-modejavascript-mode,js-mode-> javascript files- support for v8 natives syntax %ddd()
- handle missing semicolons
json-modescala-modeyacc-modego-modeidl-modetypescript-modejspp-mode: JS++vala-modecuda-mode
electric-c-mode- parenthesis matching problems in comments and markdown and other modes
Markdown modes
- recognise
~~~ {.c}language tags - cooked markdown mode for documentation
- use cooked markdown mode for help system
a_bb_cshould not detectbbas underlinedmarkdown-mode: syntax modes for toml, bash (bash output), sh, text, txt
Outline / Org mode
- outline styles
- implement hide / show regions
Preview mode
- use minor mode keymap to exit preview mode with
KEY_RET - add auto skip feature at top and bottom of file to skip to the previous and/or next file in the preview mode
- typing text should
auto-search - typing text could ask for exiting preview-mode
- prevent edit in browse mode (currently called
preview-mode)
Shell mode
- fix
mancommand on linux: the man process should be given the expected input - parse the list of errors and register line/column positions so buffer can be modified
using this array, implement skip to the errors in the next file with
C-u C-x C-n - [BUG] ^C does not work on OpenBSD
C-x RET RETshould switch to last process buffer selected and move to the end of bufferC-x RET RETshould find another shell buffer if*shell*has been killed. Should enumerate all buffers.- terminal emulation: when move inserts spaces, they should have default attributes: add test cases
- terminal emulation: improve behavior based on Wikipedia page ANSI_escape_code
C-c C-cshould abort make process and other shell buffers- support
:as alternate escape sequence argument separator start-shellshould kill popup windowA-x kill-buffer RET-> hang- turn on interactive mode on commands that move the cursor to EOB
- use auxiliary buffer to make process input asynchronous
- give commands a chance to execute for macros to behave correctly
A-yat process prompt- fix very long lines in shell buffer (not finished)
- fix screen size notifications,
SIGWINCHsignals and ioctl - fix terminal size inside shell window ?
- other buffer modification functions in shell input region
tty_put_charshould convert charsets- set current directory of new shell buffer to that of current window
- current path in compile set to current buffer path
- current path retrieved from shell prompt backwards from point
- fix bof/eof shell mode
- allow quoting of special keys: let
do_charinsert xterm/vt100 key sequence to allow typing special keys into shell process - cmdline arg to force lines and columns to test shell.
- toggling interactive shell mode is not automatic enough
- use target window for man and similar commands
- fix infinite scroll for man command
- man output bug on linux
- man pager -> more bindings, such as
RET->push-button(jump to map page) - cross link man pages
- accented letter input in shell mode
- transcode between tty charset and shell buffer charset
- track unsupported escapes in shell buffer
- 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- ssh: should use the host name and get files via scp syntax
- fix tty emulation to run kilo inside the process window
shell-command-on-regiononM-|mg: Pipe text from current region to external command. emacs: Execute string COMMAND in inferior shell with region as input. Normally display output (if any) in temp buffer*Shell Command Output*; Prefix arg means replace the region with it. Return the exit code of COMMAND.
Dired
- dired view with generalized file matcher
- dired: use window/buffer caption for directory and sizes description
- dired: fork process and use asynchronous function to:
- list directory contents
- track directory contents file stats
- compute subdirectory sizes
- keep dired current file upon:
RET C-x C-k RET - use buffer specific load functions
- separate buffer for each directory
- 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 -
- ->
dired-mkdir
- ->
- t ->
- look into missing commands (emacs)
dired-find-fileone .. fdired-do-shell-commandon!dired-hide-subdiron$dired-create-directoryon+negative-argumenton-digit-argumenton0 .. 9dired-prev-dirlineon<dired-diffon=dired-next-dirlineon>dired-summaryon?dired-do-searchonAdired-do-byte-compileonBdired-do-copyonCdired-do-deleteonDdired-do-chgrponGdired-do-hardlinkonHdired-do-loadonLdired-do-chmodonMdired-do-chownonOdired-do-printonPdired-do-query-replace-regexponQdired-do-renameonRrename a file or move selection to another directorydired-do-symlinkonSdired-do-touchonTdired-unmark-all-marksonUdired-do-shell-commandonXdired-do-compressonZdired-up-directoryon^dired-find-alternate-fileonadescribe-modeonhdired-maybe-insert-subdironi, +dired-goto-fileonjrevert-bufferongread all currently expanded directories aGain.dired-do-kill-linesonkdired-do-redisplayonlrelist single directory or marked files?dired-find-file-other-windowonoquit-windowonqdired-sort-toggle-or-editonstoggle sorting by name and by date with prefix: set the ls command line optionsdired-toggle-marksontdired-view-fileonvdired-copy-filename-as-killonwdired-do-flagged-deleteonxdired-show-file-typeonydired-flag-backup-fileson~dired-tree-downonM-C-ddired-next-subdironM-C-ndired-prev-subdironM-C-pdired-tree-uponM-C-udired-hide-allonM-$dired-prev-marked-fileonM-{dired-next-marked-fileonM-}dired-unmark-all-filesonM-DELdired-next-marked-fileon* C-ndired-prev-marked-fileon* C-pdired-unmark-all-markson* !dired-mark-files-regexpon* %dired-mark-executableson* *dired-mark-directorieson* /dired-unmark-all-fileson* ?dired-mark-symlinkson* @dired-change-markson* cdired-markon* mdired-mark-subdir-fileson* sdired-toggle-markson* tdired-unmarkon* uneed commands for splitting, unsplitting, zooming, marking files globally.
Bufed
- show current directory for shell buffers in buffer list view
- bufed: use window/buffer caption for headings and sizes description
XML / HTML
- [Idea] http request with headings
- auto hierarchical view
- merge xml and htmlsrc modes, add submodes for plist and other config files
- xml/htmlsrc: scan for
</script>beyond end of very long line ‌-> zero width causes missing chars at end of line- html
mode_probefails on junk/Books/881256329.epub/OEBPS/Attributes.xhtml when cycling - html: preview mode does not work
- html: checksum stuff does not work
- html/xml: fix colorizer for multi-line tags and attributes
- [BUG] xml: crash bug on johnmacfarlane.net/texmath.xhtml
html-mode: support hex entities- add syntax based wrapping mode for very long lines
- distribute libqhtml as a separate project
- OPTIMIZE
eb_nextcet al or always duplicate box content (big speed improvement). - polish end of line offset/cursor displacement support.
- handle implicit TR
- add file referencing (, , etc...)
- fix LI numbering with VALUE attribute (cannot use CSS). Verify counter-reset semantics.
- (z-index) floats must be displayed after all other stuff.
- is sometimes incorrect.
- more font style synthesis in html2ppm.
- add xml CDATA parsing
- add auto-indent visual display for minified XML files
TeX / latex
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.
- create tags
Hex mode
- merge
hex-modeandbinary-mode hex-modeandbinary-modeshould have an initial skip value to align the display on any boundary- extend
hex-modeto support 16,32,64 bit words as little and big endian - optimize display for very large
display-widthin binary and hex modes - save
display-widthin binary and hex modes upon window change - display alternate cursor in non active column in hex mode.
Archive mode
- archive: issue with current directory
- archive: add API to register new file formats
- archive: use window/buffer caption for output description
- make archive mode use dired commands
- compress mode file save to compressed format
Images / Video / Bitmaps
- fix ffmpeg support
- filtered scaling
- zoom, pan, rotate, describe, peek-color, histogram...
- multiview, wallpaper...
- use screen aspect-ratio...
- display info on modeline
- prevent display if not invalid
- improve image viewer on X11.
Syntax modes
- modes: add language word lists: literals and builtins
- text based language modes: token patterns, word lists, indentation spec
- create tags in other languages: fds
_STYLE_FUNCTION - improve existing language modes:
ada-mode: create tagsagena-mode: create tagsats-mode: create tagsasm-mode: handle various assembly stylescalc-mode: fix syntax, disable C++ commentscmake-modecobol-modecoffee-mode: create tagscss-modeelm-mode: create tagselixir-mode: create tagserlang-mode: create tagsfcl-modeforth-modefortran-mode: create tagsgroovy-mode: create tagshaskell-mode: create tagsicon-mode: create tagsini-mode: Windows .ini files.jai-mode: create tagsjulia-mode: create tagslisp-modelua-mode: create tagsmakefile-mode: Gnu and other makefiles.nim-mode: create tagsocaml-mode: create tagspascal-mode: create tagsperl-modephp-mode: improve coloringpostscript-mode: more restrictive matchpython-mode: create tagsr-mode: create tagsruby-mode: create tagsrust-mode: create tagsscad-mode: create tagsscheme-modescilab-modesh-mode: Handle here documentssh-mode: Handle multiline stringssh-mode: shell script filessql-modeswift-mode: create tagsvbasic-mode: more restrictive matcher because .cls files may be latexvirgil-mode: create tagsvim-mode: create tags
- missing languages:
asp-mode:automake-mode:bat-mode: DOS command.com batch files.bazel-modefor build system (*.bzl, BUILD...)bennugd-modebluespec-modeboo-modecg-modechangelog-modechdr-modecmake-modecmd-mode: Windows cmd.exe command files.conf-mode: configuration files.DCL-modedef-modedesktop-modediff-modedoc-modedocbook-modedosbatch-modedot-modedpatch-modedtd-modeeiffel-modeexelis-modefsharp-modegams-mode: GAMS files.gap-modeglsl-modegtkrc-modehaddock-modeimagej-modej-modelanguage-modelibtool-modeliterate-modelog-modem4-mode: M4 macro processor filesmaildrop-mode: for .mailfiltermallard-modematlab-modemediawiki-modemodelica-modemxml-modenemerle-modenetrexx-modenroff-modensis-modeobjj-modeocl-modeoctave-modeooc-modeopal-modeopencl-modepatch-modepkgconfig-modepo-mode: translation filesprolog-modeprotobuf-modepuppet-moderpmspec-modesml-modesparql-modesystemverilog-modet2t-modetexinfo-modevbnet-modeverilog-modevhdl-mode: VHDL files.xslt-modeyaml-mode- qmake, scons, ant, maven, bitC
New modes
csv-mode
- CSV database functions
csv_find(string where)csv_select(string field_list, string where, string destination)csv_filter(string where)csv_update(string what_list, string where)csv_append_columns(string field_list)csv_insert_columns(string field_list)csv_delete_columns(string field_list)csv_delete_lines(string where)csv_append_lines(string field_list)csv_insert_lines(string field_list)csv_sort(string field_list)
json-mode
- auto-wrap and indent
- JSON database functions
- pretty view with auto indent hierarchival view
xml-mode
- auto-wrap and indent
- XML database functions
Other modes
rst-mode: support ReStructuredText (RST)auto-compression-mode- minor modes with key override such as
previewmode visual-diff-mode: Use color-coding to compare two buffers.- calculator / spreadsheet mode (based on SC)
- calendar mode
- email reader mode: mail / rmail
- news reader mode
- irc client mode
- rss
- wikipedia mode
- abbreviation mode
- ispell / spell checker
- printing support