* add `get_path_offset` to skip drive/protocol, serveur name and root dir.
* add `get_parent_offset` to get the parent of path component
* add `get_curdir` to hide OS dependencies and test `getcwd` failures
* add `get_homedir` for current or specified user
* simplify `make_user_path`, `canonicalize_absolute_buffer_path`,
`qe_set_user_option`
* no longer scan directory in `file_file_next` if pattern lacks wildcards
* patterns without wildcards can have subdirectory
* `next-error`: if file is not found in the current buffer directory, try
and locate it in subdirectories
* make `countof` a C keyword
* improve type detection: identifier followed by optional stars and
another identifier are assumed to be a typename in certain places
* reorganize style attribute bits in `QEStyleDef`
* support more `text-decoration` bits (overline, line-through and box)
* add `css_get_enum_bits` to support `text-decoration` combinations
* fix sorting color issue: move newline with its style in `eb_sort_span`
* add completion handlers for style attributes, style and color names
* add `check_default_style` to prevent invalid default style
* improve style output in `list-styles` and style completion
* add `modify-style` command
* add sanity check in `parse_arguments` to avoid printing
to `stderr` if `s` has been deleted by command. Any command
exiting the minibuffer causes it to be deleted, hence
`qe_check_window(qs, &s)` clears `s`. This caused a bug
when killing an active shell buffer from bufed.
* group urlio data into an `URLState` structure
* allocate `URLState` in `url_init()` and store it into the `QEmacsState`
* pass the `URLState` pointer to all `url_xxx` APIs
* add `tail_cb` for redisplay requests
* remove global variables
* simplify `qe_init()` call sequence
* add `QE_LIST_INIT` to initialize a linux doubly linked list
* add `qe_save_buffers` to handle synchronous/asynchronous
modified buffer examination.
* refactor asynchronous modified buffer examination into command
execution, allowing commands to suspend execution to save modified
buffers and resume once the examination completes.
* add `eol_style` in `DisplayState`
* use style of newline character for end of line
* use style of last character if any for end of buffer style
* use current style for TAB expansion
* accept OSC escape sequences for default color redefinition
* fix `css_get_color` parser for `rgb:xx/xx/xx` format
* force complete refresh upon default terminal color updates
Vastly improve window style handling:
* fix status and minibuf style handling
* add inactive window styles (window, border and mode-line)
* add commands: `set-foreground-color`, `set-background-color`
`set-default-style`
* add styles for `window`, `window-inactive`, `window-border-inactive`,
`mode-line-inactive`, `terminal`
* use custom colors for COLOR_TRANSPARENT and terminal *original pair*
* terminal background color is default background color
* change `get_style` argument types and order
* add `qe_styledef_parse` to construct full styles from text
* rename `qe_term_get_style` -> `qe_term_style_parse`
* pass 2 styles and extra flags to `print_at_bytes` to handle
alignment correctly
* pass `QEmacsState` to key grab functions
* clear `grab_key_opaque` when freeing windows, buffers, mode_data
* add checks on window and buffer pointers in key grab functions
* this should fix a crash bug when deleting unsynched buffers from bufed
* fix `reload_buffer` to update buffer `file_size` and `mtime` fields
* check buffer file before invoking commands that modify the buffer
* check buffer file after command that changes the current window
or the current window's buffer
* add `BF_ERROR` to identify error source buffers and use it with `next-error`.
* show `HELP` and `ERROR` buffer flags in `describe-buffer`.
* add a dedicated compilation mode with the following bindings:
* `next-error` on `n`, `M-n`
* `previous-error` on `p`, `M-p`
* `scroll-up` on `SPC`
* `scroll-down` on `DEL`
* `search-forward` on `/`
and the following new commands:
* `goto-error` on `RET`, `LF`
* `kill-compilation` on `C-c C-k`
* use `compilation` mode instead of `pager` mode for
`do-compile`, and switch interactive shell buffers to
`compilation` mode when the shell exits (if `shell_buffer_read_only` is set)
* refine popup/sidepane closing in `next-error`:
* remove unnecessary popup check, as the command cannot
be invoked if a popup window is present.
* use `do_delete_window` to close side pane to avoid
screen gap bug with `edit_close`.
* add `split-window-left`, `split-window-right`, `split-window-above`
and `split-window-below` to specify how to split window portably.
* improve split-window proportion handling, avoid tiny windows
* reduce minimum window size to 4x1 characters + modeline and borders
* fix dictionary sort to no longer ignore digits
* sort bindings in natural order
* improve `wall-chart` command: show overridden bindings with style
* add `describe-prefix-bindings` for a list of bindings with a common prefix
* add `describe-C-h`, `describe-C-c`, `describe-C-x`...
* rename and pass flags to byte quoting functions:
`byte_quote` -> `strquote_byte`
* add `eb_print_style` to output data to a buffer in a given style
* add `eb_print_field` to output a field name and value using styles
* use styles in describe commands
* improve byte stats and page layout output in `describe-buffer`
* add `wall-chart` command (sorted list of bindings)
* add `describe-help` command
* add `#` at the beginning of the comand argument description
to disable command when current window is a popup or the minibuf
* update command definitions
* parse process output for shell prompts with current directory
* parse `make -w -C` output for temporary subdirectory excursions
* handle property type and flags separately
* add `QE_PROP_MARK` to prevent offset update at range boundary
* use `QE_PROP_DUP` to optimize buffer properties with single allocation
* use mask in `eb_delete_properties` to delete tags selectively
* fix `eb_find_property` range glitch
* fix offset tracking for CWD properties
* simplify default directory selection for shell commands
* fix compiler warnings on variable shadow definitions
* optimize `next_error()`: no lookback needed anymore
* display buffer properties in `describe-buffer`
* update TODO.md
* remove popups, sidepanes, helppanes.
* verify file existence before opening.
* refine error/source windows:
* find window showing the error source buffer,
split a new one if none are found.
* if current window is showing error source buffer,
find file in next window, split a new one if none are found.
* center cursor after going to error.
* show error line on window's first line.
* center cursor after going to error.