- use `n` instead of `dir` or `delta` when passing premultiplied argval
- describe-xxx commands take `argval` to avoid repetition
- move paragraph functions to extras.c
- bumped version to 5.3.1k
- simplify do_delete_blank_lines(), fix case of non blank line
- remove eb_start_paragraph()
- do_mark_paragraph() takes ARG_VAL, make emacs compatible
- simplify eb_prev_paragraph(), make emacs compatible
- improve fill_paragraph():
compute actual indent size (handle TABs)
compute actual word sizes (handle accents and double width glyphs)
- bumped version to 5.3.1j
- word_right() and word_left() return s->offset
- minimize buffer changes in do_fill_paragraph()
- eb_changecase() takes input and output offset arguments
- bumped version to 5.3.1i
- made some local objects static
- fix many const cast issues
- fix comma operator warnings
- add const correct strtol_c(), strtoll_c(), strtold_c()
- add unconst(t) to override const removal warnings
- comment VLAs and flexible arrays
- use get_basename_offset() to enable const correct
get_basename() and get_basename_nc()
- use get_extension_offset() to enable const correct
get_extension() and get_extension_nc()
- always include config.h
- use size_t for some size arguments:
umemmove(), umemcpy(), umemcmp(), qe_memicmp()
- add qe-doc.info and qe-doc.pdf targets
- fix shadowing bug in buf_write: used tor return 0 instead of byte count
- bumped version to 5.3.1e
- be more careful about snprintf target arrays
- fix bug in qe_load_file(): was testing local array instead of argument
- remove unused indent variable in clang.c
- pass pointer to CSSFile in css_close()
* add progress indicator every 8K comparisons
* add 2 byte cache on line contents
* add chunk offset to skip columns and ignored bytes
also used for SF_BASENAME
* add filter-matching-lines
* prevent man-mode on .doc files
* allow ^Z bytes in text files
* add extra column syntaxes for compilers error messages
- 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
- `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()
- 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
- add CmdArgSpec structure for parse_arg()
- add argument type prefixes for defautl values:
'm' prefix for CMD_ARG_USE_MARK, 'p' for CMD_ARG_USE_POINT
'z' for CMD_ARG_USE_ZERO and 'e' for CMD_ARG_USE_BSIZE,
- rename parse_args as parse_arguments to avoid confusion with parse_arg
- make tabify-region and tabify-buffer call do_tabify()
- make untabify-region and untabify-buffer call do_untabify()
- move command argument specification to CmdDef:spec, followed by description string
- 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 command and variable description field
- add fuzzy completion on repeated TAB in minibuffer
- remove fuzzy_search variable
- add CompletionDef flags:
- CF_FILENAME to use `/` as separator
- CF_NO_FUZZY to prevent fuzzy matching on second TAB
- CF_SPACE_OK to prevent SPC from completing entry
- CF_NO_AUTO_SUBMIT to insert current match on ENTER
- fix invalid free on CommandDef structures
- improve symbol completion in eval-expression
- use symbol completion in apropos
- fix post increment and decrement evaluation
- add SF_PARAGRAPH to sort multiline paragraphs
- sort commands and variables in print_bindings(), apropos(), about_qemacs()
- split buffer sorting code from do_sort_span() to eb_sort_span()
- 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
- 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
- increase MIN_MMAP_SIZE to 2MB
- add window caption for popup windows
- store completion name in MinibufState for popup window caption
- adjust htmlsrc-mode score:
85 if both extension and contents match rules
80 if just one of them matches
- refine c-mode probe function
- simplify print_bindings()
- 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 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
- add EditState *qe_split_window(EditState *s, int prop, int side_by_side);
takes proportion and direction
- set-trace splits the current window 75/25
- add start-trace-mode
- add wrappers in display.h
- renamed tty dpy_xxx handlers for consistency
- separate tty_term_resize called on signal and tty_dpy_invalidate
- add dpy_xor_rectangle for software cursor, remove QECOLOR_XOR
- 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
- pass target window to completion functions
- fix tag completion at find-tag prompt
- add tag support in python mode
- set tag offset to the actual word instead of start of line
- add buffer properties with offset tracking
- use buffer properties for type, macro, function and object definitions.
- display current function or type name on mode line
- add list-tags command to show the tags detected for the current buffer
- add goto-tag on C-X , and M-F1 to jump to the definition of the current word
- add find-tag on C-X . to search for a given tag with completion
- renamed script-mode to shell-script-mode
- merged patch by Hadrien Lacour
- improve parsing, recognise names, keywords, meta-characters, substitutions...
- add flexibility in forward-block (M-C-f) and backward-block (M-C-b) to
match block delimiters with non default styles
- qe_isaccent() recognises all combining code points (to be refined)
- add computer generated width table unicode_width.h
- display difference in hex in compare-windows to distinguish
space and nbsp, normal and combined form for accented letters.
- display multiple combining code points in what-cursor-position (C-x =)
- attach combining code points to preceeding space in display_char_bidir
- handle accents specificaaly in flush_fragment
- handle combining code-points in screen backstore via indirection table
this transient table can be inspected via describe-screen
- add QECharset.encode_table as a default for CharsetDecodeState.table
- make CharsetDecodeState.table const
- use static initializers for utf8 tables
- add al32utf8 charset name (used in Oracle for true utf-8 encoding)
- use direct pointers in unicode_glyph_range_index
- initialize unicode_glyph_range_index at run time
- rename unicode_glyph_tty_width as unicode_tty_glyph_width
- changed unihex display to space out single width characters
- 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
- fixed `do_forward_block()` to handle very long lines gracefully
- simplified `to_transpose()`
- add `do_describe_window()` for `describe-window` command on C-h w
- 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`