* 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
Clarify tiny build options:
* distinguish `tiny` which controls whether the tiny version should be built
* and `tiny_only` which restricts the build to just the tiny version
* add `--disable-tiny` to set `tiny=no`
* add `--tiny-only` to only build the tiny version
* add js, json and c2 modes in tiny version
* add `eb_put_filename()` to encode buffer or file names with
non-ASCII characters according to PF_xxx flags
* add `CF_SAVE_LIST` flag for completions to store the list
of matches in `MinibufState`
* fix bufed and dired layout issues
* fix buffer and filename completion popup layout
* add commands to control display of Unicode and non printing
charcaters in buffer or file names:
- U toggles unicode display
- \ cycles through 4 possible encodings: ? ^J \x10 \010
* use `(*fp)()` syntax for indirect function calls
- set `MAN_KEEP_FORMATTING=1` and `MANPAGER=cat` for the man
command and handle overstriking in the terminal emulation.
- this approach works on macOS, linux, FreeBSD and OpenBSD
- apply infinite-height prior to winsize initialization.
- use `LESS_LINES` environment variable.
- use `PAGER=less -F` to make less quit at the end of the man page
The behavior follows this priority order:
1. reuse an existing window already displaying the buffer,
2. if shell-command-other-window is not set, use the current
window, otherwise
3. select the largest available non-active window.
4. split a new window if no sutiable window is found.
5. fall back to the current window if splitting fails.
- Add `popup-abort` command.
- Update caption and restore readonly when reusing popup buffer.
- Prevent bugs when changing from minibuf to popup window.
* improve block skipping:
- if starting inside a string or a comment, skip to the end of the
string or comment while balancing blocks
- otherwise skip string and comments when balancing blocks
- fix behavior on very long lines, eg: **highlight.pack.js**
* if a nesting error occurs, point and mark are set around the mismatched
delimiters. use C-x C-x to skip between them
* simplify `get_colorized_line()`
* add `cp_get_line()` to factorize code
* add `eb_peek_prevc()` to get previous codepoint without end offset
* improve documentation conciseness
* use `BC_REUSE | BC_CLEAR` to avoid killing the `*occur*` buffer
* this ensures the `*occur*` buffer stays current in windows that show it
* modify the `BC_CLEAR` semantics to imply `BC_REUSE`
* simplify calls: remove redundant `BC_REUSE` flag
- `shell_buffer_read_only` controls if the shell buffer should become
read-only and use pager-mode when not interactive
- `shell_mode_auto_interactive` controls if the shell interactive mode is
switched to and from automatically based on cursor movement commands
- disable auto interactive if region is highlighted
- fix crash bug in qe_register_emulation_bindings for "emacs" emulation