- rename qe_skip_spaces() as eb_skip_spaces() and take EditBuffer
- rename skip_spaces() as qe_skip_spaces()
- use qe_skip_spaces() return value to simplify loops
- fix bogus test for . and .. in find_file_next()
- use strequal() instead of !strcmp()
- add some emacs-lisp defined symbols
- fixed awk mode for `#` comments
- add flags to find_file_open():
- FF_PATH: enumerate path argument
- FF_NODIR: only match regular files
- FF_NOXXDIR: do not match . or ..
- FF_ONLYDIR: do not match non directories
- 0..15: max recursion depth
- add recursion level in find_file_next()
- add completion pointer in CompleteState
- add CF_DIRNAME and CF_RESOURCE CompletionDef flags
- pass filename to load_ligatures() and load_input_methods()
- remove find_resource_file() dummy definition in html2png.c
- add dir and resource completion methods
- allow makepath() to modify path in place
- enable completion in `load-resource-file` and `load-file-from-path`
- `C-g` invokes keyboard-quit
- bind `ESC ESC ESC` to keyboard-quit
- prevent ESC key combination in `combine_keys()` if not first
- rename `abort` as `keyboard-quit` and do_break() as do_keyboard_quit()
- rename do_combine_char() as do_combine_accent()
- rename do_word_right() as do_word_left_right()
- pass numeric argument to do_scroll_left_right()
- pass numeric argument to do_minibuffer_history()
- rename and extend CompletionEntry as CompletionDef
- create xxx_completion CompletionDef structures
- rename xxx_completion() functions to xxx_complete()
- register CompletionDef structs with qe_register_completion()
- add (start, end) range in CompleteState
- use eb_puts() and eb_putc() instead of eb_printf()
- simplify eb_delete_chars()
- ignore left pane in compare-windows()
- simplify qe_list_bindings()
- improve command and variable completion popup
- add qe_digit_value(): returns arithmetic value of character
- single test in qe_inrange()
- simplify qe_isxdigit() and use qe_isxdigit_()
- remove to_hex()
- hex.c: use qe_digit_value() instead of to_hex()
- update TODO.org, README
- bump VERSION to 5.2alpha
- pass initial character to `ustr_get_identifier` and `ustr_get_word`.
- add lowercasing variant `ustr_get_identifier_lc()`
- remove `get_word_lc()` in makemode.c
- remove `get_js_identifier()` in clang.c
- add generic word converter for syntax parsers:
// handle qe_isalnum_
int ustr_get_identifier(char *buf, int buf_size,
const unsigned int *str, int i, int n)
// handle qe_isword
int ustr_get_word(char *buf, int buf_size,
const unsigned int *str, int i, int n)
- simplify Magpie syntax colorizer
- handle nested block comments and char constants in Magpie
- add Falcon syntax colorizer
- move up_down_last_x to an EditState member
- make single_window static in qe.c
- move user_option to the QEmacsState structure
- move minibuffer and completion state to a MinibufState structure
- remove static state in do_minibuffer_exit
- add key name: LB for `{`, RB for `}` and VB for `|`
- add qe_strtobool(str, def). Returns boolean value from str:
y yes t true 1 evaluate to true
any other string evaluates to false
the empty string evaluates to def
- add bstr_t type:
constant bounded string with pointer and length.
bstr_make creates a bstr_t from a string pointer or NULL
bstr_token creates a bstr_t from a string upto a separator
bstr_get_nth creates a bstr_t from a the nth element of a string list
bstr_equal compares bstr_t objects for equality
- use macros for type safe registation of command line options
- combine short, long, argument names and help string
- support command line options with optional arguments
- 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
- rename font styles QE_STYLE_xxx to QE_FONT_STYLE_xxx
- rename font family QE_FAMILY_xxx to QE_FONT_FAMILY_xxx
- improve tests/16colors.pl: display bold italics combination
- improve tests/color-spaces.pl: compare true color and palette dumps
- add colortest target in Makefile to produce various color patterns
- 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 `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
- add `qe_qsort_r()` because some platforms do not provide `qsort_r()`
it uses a median of 3 pivot selection and falls back to insert sort
for small chunks.
- use `qe_qsort_r()` in dired, remove `state` field in `DirEntry`
- use `qe_qsort_r()` in sort-buffer commands
- make buffer sorting algorithm stable
- 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 `is_filepattern` utility function to check for wildcards
- add `get_default_path` public function to retrieve the context specific
current directory associated with a window.
- explore directories and file patterns in dired window
- compare-files determines parent file from current directory
- accept file patterns for dired listing
- add extra group argument in functions add_string() and set_string()
- group matches in completion_sort_func()
- add const char *strmem(const char *str, const void *mem, int size);
- add variable fuzzy-search
- add minibuffer-insert command to handle insert triggers
- display variable status after set-variable
- make TAB a regular char in incremental search
- display control chars as ^x in incremental search prompt
* add function match_shell_handler to probe shell #! dispatcher line
* add mode field shell_handlers for generic syntax probe function
* add memfind to find keywords from buf+length
* add shell handlers for ruby, perl and python flavors, lua, haskell, ocaml
* remove perl_mode_probe
* add C++ keywords, include namespace in identifiers
* add cpp_mode_probe to detect C++ header files
* add shell handler for tcc scripts
* remove calc_mode_probe
* modify scoring between shell-script-mode and simpler sharp-mode
* add free_font_cache()
* add css_free_colors()
* add unload_ligatures()
* add --free-all cmd line option to free memory upon exit for valgrind
* tty.c: fix off by 3 size in qe_realloc. Should be typed
* qe.c: fix invalid pointer reference upon destroying transient buffer
* use qe_mallocz for all structures
* prevent spurious uses of malloc/free/realloc
* pass pointers to pointers to all deletion functions
* use consistent patterns for list deletions
* add more dependencies in Makefiles
* changed keytostr to buf_put_key using buf_t structure
* changed keys_to_str tp buf_put_keys using buf_t structure
* add buf_attach to initialize buf_t with non empty buffer
* simplify qe_list_bindings with inherit argument
added command apropos(string)
added command show-bindings(cmd_name)
moved describe-bindings to extras.c
added qe_get_prototype(CmdDef *d, char *buf, int size);
added an extra argument to qe_get_variable() to produce value as source
fixed typo on window variable window-height
fixed type mismatch on mode variable mode-name
added var_domain string array
added strquote conversion function with simplistic implementation
added history tags for all commands
added wrappers for get_basename_nc and get_basename_offset
added wrappers for get_extension_nc and get_extension_offset
added strip_extension
use these where appropriate
remove duplicate definitions in stand-alone utilities
- check OpenBSD as uname output
- no longer use strcpy, strcat, sprintf
- added CONFIG_PTSNAME to disable Unix98 API under BSD
- fixed crash bug in tty.c on empty window