- add description placeholders to all CMDx definitions
- swap arguments to qe_split_window() and do_split_window()
- pass iteration count based on universal argument to
do_up_down(), do_left_right(), do_word_right(), do_kill_word(),
do_forward_paragraph(), do_kill_paragraph(), do_c_forward_conditional(),
do_forward_block(), do_kill_block(),
- remove do_backward_paragraph()
- add int eb_prev_paragraph(EditBuffer *b, int offset);
- dont call command on 0 universal prefix
- fix completion bug where highlighted region was not removed upon enter
- add file_print_entry() in dired.c to display file size in file completion popup
- add buffer_print_entry() to display filename in buffer completion popup
- small fixes
- rename many C functions to match corresponding command name:
do_return -> do_newline, do_quote -> do_quoted_insert,
do_start_macro -> do_start_kbd_macro, do_end_macro -> do_end_kbd_macro,
do_call_macro -> do_call_last_kbd_macro,
minibuf_complete_scroll_up_down -> do_minibuffer_scroll_up_down,
do_shell_return -> do_shell_newline, do_compile_error -> do_next_error,
do_incr_width -> do_increase_width
- add do_open_line as a separate function
- simplify hex and binary mode navigation functions
- do_overwrite_mode(arg) disables overwrite mode if arg <= 0
- fix universal argument parsing for M-0 to M-9 and other subtle details
- add QE_STYLE_BLANK_HILITE style for extra blanks at end of lines
- add MODEF_NO_TRAILING_BLANKS flag to control this feature on a mode basis
- add -nc (--no-crc) command line option du disable CRC based update cache
- add disable-crc global variable for the same purpose
- fix termios c_oflag flags in raw mode
- support SF_NUMBER for buffer sort
- fix image scaling
- support ESC c and fix ESC [ J escape sequences
- add C-u C-x C-n to parse nest-error from current buffer offset
- add st_errno in ModeProbeData so dired only matches wildcards if no
file exists with that exact name (argument passed probe_mode())
- add LF_NOWILDCARD qe_load_file flag to prevent wildcard handling
- display line numbers and terminal right margin in new gutter style
- free EditState:line_shadow display CRCs when changing modes:
this fixes an old display bug when switching between html and text mode
- added convenient default bindings:
C-c ~ -> toggle-read-only
C-c c -> set-buffer-file-coding-system
C-c b -> toggle-bidir
C-c C-\ -> set-input-method
C-c l -> toggle-line-numbers
C-c t -> toggle-truncate-lines
C-c w -> word-wrap
- disable terminal emulation on shell buffers without the SF_COLOR flag
- only update mark on process output in interactive terminal emulator buffers
- only compute shell current directory on terminal emulator buffers
- auto select mode and character set after 3MB of output
- update wrap_cols on all windows upon shell-refresh (C-l in shell-mode)
- improve shell_get_curpath(): handle debian default prompt
- updated TODOs
- rename ModeDef.mode_name as alt_name, only use if needed
- remove duplicates from and extend mode name completion list
- remove duplicate html-mode and list-mode commands
- do_set_mode() command bypasses dired pane
- emulate alternate screen, snap top of screen in display_hook
- add ShellState.alternate_screen_top
- save and restore cursor
- handle combination marks and wide glyphs in qe_term_get_pos() and
qe_term_goto_xy()
- erase screen \E[J
- prevent automatic switch to interactive mode in full screen applications
when moving point to cur_offset. Must use C-o as a toggle.
- notify shell process of window size change with C-l (shell-refresh)
- add WRAP_AUTO and WRAP_TERM (for terminal emulator)
WRAP_AUTO wraps lines if the window is more than 3/4 of the screen width
if window is narrower, lines are truncated.
WRAP_TERM does not display the \ wrapping mark to simulate terminal behavior
- add default_wrap member in ModeDef structure
- delegate to view pane for man, ssh and compile commands
terminal emulator:
- add EditState.cols and EditState.rows: window dimensions in characters
- pass target window to new_shell_buffer()
- use window size for shell terminal emulator initial screen size
- set COLUMNS and LINES environment variables for child processes
- factorize emulator character output
- increase number of CSI arguments
- simplify and improve CSI m argument processing including
multiple argument sequences
- minimal support for `:` as argument separator eg:
\033[38;5;128:128:128m
- support erase line vt100 command:
\033[K, \033[0K erase end of line
\033[1K erase beginning of line
\033[2K erase complete line
debugging:
- pass string argument to set-trace: on, off or list of trace indicators
- remove doctor command
- add QE_TRACE_EMULATE for emulator trace messages
- fix incorrect uses of eb_delete()
- remove static state for minibuffer handling, use mode specific state attached
to the buffer.
- remove static pointer for the popup last active window. Use new
target_window member in EditState.
- remove EditState.minibuf, replaced by WF_MINIBUF flag in EditState.flags
- rename minibuffer commands for consistency
- remove unused global variable debug_flags
- prevent search from minibuffer
- fix toggle-full-screen refresh bug. C-x f is bound to toggle-full-screen
and could be typed by mistake for C-x C-f, switching to full screen mode
but with a refresh delay. This caused confusing behavior interpreted as a
layout bug.
- make charset_ucs2le, charset_ucs2be, charset_ucs4le, charset_ucs4be local
in charset.c
- make edit_detach() and edit_attach() local in qe.c
- redraw status and diag messages in edit_display(). This caused display
bugs in x11 as asynchronous messages were erased by minibuffer window
refresh.
- display status messages in diag area (bottom right screen corner) if
minibuffer is active.
- force put_status message update if message starts with !
- force complete_refresh if window was resized or layout was changed
- add 8K color modes and 64-bit QETermStyle values
- add 64-bit buffer style support
- reduce colored character system used in syntax handlers to 8-bit style
and 24-bit code point
- use QETermStyle type instead of int wherever a composite style is used
- force color system used by the terminal with environment variables:
USE_16_COLORS=1, USE_256_COLORS=1 or USE_TRUE_COLORS=1
- add various utilities for color escape sequence testing:
tests/16colors.pl
tests/256colors2.pl
tests/color-spaces.pl
tests/truecolors.sh
tests/xterm-colortest.sh
tests/xterm-colour-chart.py
- use colored code-points only for syntax highlighting
- use QETermStyle and QEStyleDef internally
- convert to TTYChar attributes only for text terminal output.
- remove most CHAR_MASK and STYLE_SHIFT handling
- pass QETermStyle array to get_colorized_line mode handlers
- pass QETermStyle array to isearch_colorize_matches
- remove combine_static_colorized_line
- move color matching functions to util.c
- rename get_tty_color as qe_map_color
- improve local variable naming consistency:
DisplayState *ds, QEStyleDef *stp, QEStyleDef styledef.
- add support for 256 and true color terminals
- fix color handling for defined styles
- fix bold, italic and underline handling for terminals
- use more explicit symbols for qe-term emulator in shell.c
- shell buffer terminal emulator still uses 16 colors
- display buffer style in C-X =
- bumped version to 0.5.0dev
- add `offset` member in `QEColorizeContext` structure
- add `ModeDef *qe_find_mode_filename(const char *filename, int flags);`
- make `combine_static_colorized_line` public
- add public function `shell_colorize_line`:
detect file fragments with filename followed by `:` without space at bol
special case clang errors that display the file contents after the line
- special case `shell_colorize_line` for static color combination scheme
- remove `eb_nextc_style()`
- `eb_nextc()` does not modify `b->cur_style`
- add `eb_get_style()` to retrieve style for given offset in full-style buffers
- add `eb_next()` and `eb_prev()` to skip chars
- pass `offset` to `eb_get_line()` and `generic_get_colorized_line()`...
- use `eb_skip_chars()` in `do_delete_char()` and `text_write_char()`
- replaced `eb_get_strline()` with `eb_fgets()` with similar semantics
except return value is number of bytes before the newline or end of line
- no longer pass end offset to `isearch_colorize_matches()`
- just pass number of code points to `combine_static_colorized_line()`
- no longer call `isearch_colorize_matches` from `generic_get_colorized_line`
- get_default_path() takes buffer and offset instead of window
- mode specific handler returns NULL is current directory cannot be determined
- set EditBuffer->default_mode upon creating buffer_mode_data
- add ShellState->curpath to hold shell buffer current directory
- add shell_get_curpath to parse shell output for current directory
in shell prompt, check if dir actually exists.
- update shell directory upon enter key.
should instead keep a list with validity ranges
- pass EditPane to canonicalize_absolute_path() to make current directory
context based.
- use shell buffer context based directory for next-error. Should actually
use more context such as current position to compute current directory.
- move canonicalize_absolute_path() and is_abs_path() from util.c to qe.c
- add mode specific `delete_bytes()` method
- reorder `write_char()` and `mouse_goto()` mode methods
- pass `keep` argument to `do_kill()`
- pass `argval` to `do_kill_line()`
- add `do_kill_beginning_of_line()` command
- allow kill commands in read-only buffers, copies contents to kill-ring and
moves point.
- change `do_kill_line()` semantics when invoked with numeric argument
- add `cur_prompt` and `last_char` in ShellState to track start of
shell input line
- C-a moves to start of shell input, exits interactive mode if there already
- force interactive mode on shell-end-of-line and shell-end-of-buffer
- simplify shell_write_char(), remove hard coded dispatcher
- add `shell_delete_bytes()` to delete contents in shell input line
- change shell-kill-word and shell-kill-line to not rely on mode specific
cursor movement commands because of asynchronous behavior. This is also
a problem for macros
- make shell-yank insert data via shell input.
- pause for 1ms after each CR sent to the process
- add shell_previous_next() function:
- does previous/next command at shell prompt
- moves by four lines elsewhere
- bind shell-previous command on M-p
- bind shell-next command on M-n
- flag shell-kill-line, shell-kill-beginning-of-line, shell-yank,
shell-enter, shell-backward-delete-char, shell-tabulate commands
as modifying the buffer
- add get_default_path mode function
- move dired specific code to dired_get_default_path()
- add shell_get_default_path(), gets directory from prompt on current line
- beginning of buffer (M-<) and end-of-buffer (M->) indirect through mode
- switch in and out of interactive mode on beginning- and end-of-buffer
- improve other cursor movement handling in shell buffer.
- add shell-intr(), shell-delete-char(), shell-delete-word(),
shell-backspace(), shell-kill-line(), shell-yank(), shell-tabulate()...
- separate buffer and window specific mode data management, new API:
QEModeData *qe_create_buffer_mode_data(EditBuffer *b, ModeDef *m);
void *qe_get_buffer_mode_data(EditBuffer *b, ModeDef *m, EditState *e);
QEModeData *qe_create_window_mode_data(EditState *s, ModeDef *m);
void *qe_get_window_mode_data(EditState *e, ModeDef *m, int status);
int qe_free_mode_data(QEModeData *md);
- make a list of buffer specific mode data areas so multiple major modes
can co-exist in different windows for the same buffer
- add mode.mode_free callback to release buffer specific resources
- remove buffer.close callback
- shell state is now buffer specific shell_mode data
- clean up compress and archive mode
- show more buffer modes in buffer-list
- simplify edit_set_mode(), display error message on failure
- get rid of ModeSavedData structures
- save window data upon buffer change and mode setting
- make generic_mode_close() and generic_mode_init() local
- simplify edit_set_mode() and switch_to_buffer()
- reset w.insert, w.hex_mode, w.hex_nibble, w.unihex_mode, w.wrap
to mode specific default values upon mode change.
- split do_set_next_mode() command into qe_set_next_mode() lower level
function with an extra status parameter report new mode.
- renamed kill_buffer_noconfirm(b) to qe_kill_buffer(b)
- pass extra argument to do_kill_buffer(b, force)
- add buffer name cache to quicken eb_find()
- always make buffer names unique with simpler naming scheme
- small improvement in new_yank_buffer()