* 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.
* improve color combining code for diff/patch output: preserve code
syntax coloring on red or green background.
* improve `curline_style` handling (needs more work)
* add `QETermStyle` transparent color handling in `apply_style`
* highlight trailing blanks in a single place
* transpose `qe_term_get_style()` arguments for consistency
* add `qe_term_style_string()` and `qe_styledef_string()`
* extend style string parser to accept missing foreground color
* fix crash bug on `C-X C-B C-X C-F xxx RET`.
* add check for `S_ISREG` as file name might contain a directory
(e.g. *dired* buffer when starting qe with a directory), which
caused a bug whenever that directory was modified asynchronously.
* increment pos after insertion.
* add `filenames` specification in `ModeDef` structures
* generic mode probing can match a list of filenames
* remove unneeded mode_probe functions
* this enables diff coloring on Makefile
* add generic target for host tools
* disable netbsd target in github CI (fails for unrelated reason)
* upgrade github CI to actions/checkout@v6
* clean and reorder TODO.md
* add command to compare buffer with its file in a popup
* add [d] for diff when prompting for buffer/file synching
* add default behavior for buffer/file synching
* add CONFIG_LINUX, CONFIG_FREEBSD, CONFIG_OPENBSD, CONFIG_NETBSD
* add diff styles
* keep track of original file size and time in buffer data
* check for file changes upon window change, buffer modification and save
* prompt for reloading buffer contents and other options
* fix bug on character constants ('(' ...) when styles are disabled
* fix end of comment/regex detection when scanning strings
* handle double escapes: "\\\"" is a 2 character string
* stop scanning when reaching outer block boundary
* scan blocks of comments as a single entity
* `compare-windows` used to toggle all ignore flags if invoked without
an argument. This was bogus.
* when reading a variable name (eg: `eval-expression`), improve alignment
of variable descriptions in popup window
- ensure stopping at the precise boundary between adjacent strings/comments
separated by spaces.
- bypass bracket balancing inside strings or comments.
- prioritize bracket skipping inside comment/string when starting at a bracket.
- prioritize string skipping when starting at a quote.
* keep track of buffer creation, modification and access times
* add buffer sorting methods (buffer times, pathname, basename)
* always sort systems buffers last in alpha order
* small touch up in modeline