summaryrefslogtreecommitdiff
path: root/src/xdisp.c
Commit message (Collapse)AuthorAgeFilesLines
* Merge from origin/emacs-29Stefan Kangas2022-12-281-3/+5
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | db96b1282f9 * lisp/help.el: Use 'C-h C-q' to toggle 'help-quick' wind... 489865c21e4 ; Improve markup of long key sequences d42c2668cf3 ; * etc/NEWS: Fix wording of a recently edited entry. 7a0eaee1980 * lisp/isearch.el: Small fixes. b69bffeec05 * lisp/vc/diff-mode.el (diff-minor-mode-prefix): Replace ... 9263847ab76 ; * etc/NEWS: Move the paragraph with 'C-u RET' closer to... 62fb2dc37da * doc/emacs/display.texi (Text Scale): Improve section ab... 70480d3b6b7 * lisp/repeat.el (repeat-echo-function): Suggest 'add-fun... fd48201ffe7 * lisp/tab-line.el (tab-line-cache-key-default): More cac... b1646602602 * etc/package-keyring.gpg: Update with new key c0be51389eb ; Yet another declare-function to avoid treesit-related w... 8676bec51de ; * lisp/treesit.el (treesit--simple-imenu-1): Doc fix; w... 2ddc480f441 Warn of absent networks module in ERC 19d00fab9aa Avoid "already compiled" warning in erc-compat 2d8f7b66bcc ; Fix one more treesit byte-compilation warning. 2d0a9214863 ; Avoid treesit-related byte-compiler warnings 8503b370be1 (python--treesit-settings): Remove duplicate matcher b464e6c490b Make last change of w32 GUI dialogs conditional and rever... eedc9d79aed Fix tree-sitter typos 248c13dcfe1 Update tree-sitter major modes to use the new Imenu facility b39dc7ab27a Add tree-sitter helper functions for Imenu ba1ddea9dab Fix treesit--things-around (bug#60355) 7512b9025a1 ; * lisp/treesit.el (treesit-traverse-parent): Remove alias. 5326b041982 Improve treesit-node-top-level and treesit-parent-until 637f5b164f2 ; Add "src" to the heuristic sub-directory heuristic 8ab6df0c9fd ; * lisp/epa-ks.el (epa-ks-do-key-to-fetch): Fix 'when' u... 2b55a48d3e3 * src/w32menu.c (simple_dialog_show): Use MB_YESNOCANCEL ... 8b8b7915679 ; Improve documentation of TAB/SPC indentation 624e3822110 ; Improve doc strings of some new faces 41f12e1019b ; * lisp/elide-head.el (elide-head): Doc fix to silence c... e3b4cd0ac1d ; * lisp/htmlfontify.el (hfy-text-p): Fix whitespace. 1b4dc4691c1 Fix htmlfontify.el command injection vulnerability. 1fe4b98b4d5 Improve support for Scheme R6RS and R7RS libraries (bug#5... 2347f37f677 ; * test/src/treesit-tests.el: remove dead store (bytecom... a6d961ae2fd Add a new tree-sitter query predicate 'pred' 835a80dcc48 ; Fix tree-sitter defun tests a14821d6151 Improve gnutls-min-prime-bits docstring b14bbd108e4 Improve handling of tab-bar height. 669160d47b2 ; * nt/INSTALL.W64: More fixes and updates. 26b2ec7cb8c Simplify last change (bug#60311) 082fc6e3088 Fix 'json-available-p' on MS-Windows 6c86faec29e loaddefs-gen: Group results by absolute file name d90d7d15f2f ; Fix vindexes in parsing.texi eb268728376 Fix imenu for c-ts-mode (bug#60296) 8f68b6497ee Clean up python-ts-mode font-lock features 28f26b11a1e Add comment indent and filling to other tree-sitter major... c6b02826450 ; Remove unused function in c-ts-mode 6e52a9fcadc ; * doc/lispref/modes.texi (Parser-based Font Lock): Mino... 2bcd1e9a99d ; * doc/lispref/parsing.texi (Retrieving Nodes): Add notice. 7c7950fe006 Add maintainer stub for tree-sitter files cf327766226 ; * doc/lispref/parsing.texi (Using Parser): Remove delet... # Conflicts: # etc/NEWS # lisp/progmodes/c-ts-mode.el # lisp/progmodes/typescript-ts-mode.el # lisp/treesit.el
| * Improve handling of tab-bar height.Gregory Heytings2022-12-261-3/+5
| | | | | | | | | | | | * src/xdisp.c (redisplay_tab_bar): When 'auto-resize-tab-bar' is not 'grow-only', also consider the case when the tab-bar height needs to shrink. Fixes bug#60210.
* | Redisplay "invisible" frames that are actually visible on modern XPo Lu2022-12-261-12/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * etc/NEWS: Document that "invisible" frames are now redisplayed if the compositing manager is still displaying it as part of a thumbnail out of Emacs's control. * src/dispnew.c (Fredraw_display): Use FRAME_REDISPLAY_P. * src/frame.h (FRAME_REDISPLAY_P): New macro. * src/xdisp.c (clear_garbaged_frames, echo_area_display) (prepare_menu_bars, redisplay_internal, display_and_set_cursor) (gui_clear_cursor): Use FRAME_REDISPLAY_P to determine whether or not a frame should be redisplayed. * src/xfns.c (Fx_create_frame): Set visibility state initially. * src/xterm.c (handle_one_xevent): Likewise. * src/xterm.h (struct x_output): New field `visibility_state'.
* | Merge from origin/emacs-29Stefan Kangas2022-12-251-1/+7
|\ \ | |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | c36fe3df17b Fix c-ts-mode imenu defun name (bug#60296) a24e350170e Fix treesit--children-covering-range-recurse (bug#60301) fbb4eb919b4 Support treesit-defun-name in tree-sitter major modes 6253184afc2 ; * lisp/treesit.el (treesit-defun-at-point): Guard again... f8e219ebfaa Add treesit-defun-name and friends 35c2ca2ca64 Make treesit-node-at/on guess language at point 7f7def2ae62 ; Add treesit-no-parser error b6a2e1ddf66 * nt/INSTALL.W64: update instructions for setting up W64 ... 265b91d891a Revert "; Bump minimum supported Windows version for MinG... 75155e45860 ; Bump minimum supported Windows version for MinGW64 to W... 677f6c79eb9 ; Update minimum requirements of MinGW-w64 7723af5e4aa ; * lisp/progmodes/c-ts-mode.el: quote literal string in ... 38866510c7c ; * src/xdisp.c (redisplay_internal): Reinstate the FRAME... a825aa0b135 Fix definition of CNS 11643-15 charset a42b20dd95e ; * lisp/progmodes/c-ts-mode.el: Add outline section head... e4e36345399 Improve c-ts-mode block comment indent (bug#60270) e30621caa2c ; Add treesit_recursion_limit 6a43af58802 Fix block comment indent and filling for c-ts-mode (bug#5... e492c21e810 Fix treesit_cursor_helper (bug#60267) 4437dbedf7b Fix restart-emacs alarms (Bug#60220) 121a9ff9f6f Fix alternate stack test in configure 84888080eea Add more functions to "string" shortdoc c90f97d4e5d Make the Contour terminal an alias of xterm-256color c3fac9465fa ; Fix punctuation in last change. 756bb422a49 Correct wrong info in (info)Go to node a8c3424d28b Fix typo in TUTORIAL.fr (bug#60261) 24cd2f0daf1 Add some diff-fixup-modifs tests d32091199ae Fix quoted argument in emacsclient-mail.desktop Exec key 286c48137f6 ert-x: Move window selection logic to its own macro 823c49cea85 ; ert-x: Simplify `ert-with-test-buffer-selected' 38c6abe4d0b ; ert-x: Add test for buffer read-only state 0e39ad6fa56 Fix crash after X error
| * ; * src/xdisp.c (redisplay_internal): Reinstate the FRAME_LIVE_P test.Eli Zaretskii2022-12-241-0/+4
| |
| * Fix crash after X errorPo Lu2022-12-241-5/+7
| | | | | | | | | | * src/xdisp.c (redisplay_internal): Catch another crash if gcscrollbars after an X error.
* | Merge from origin/emacs-29Stefan Kangas2022-12-191-4/+14
|\ \ | |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 12e26cc0c1b ; * admin/git-bisect-start: Add mistakenly ommitted commi... 9a751e0a38b ruby-mode: Support endless singleton method definitions too ce7b7e5af3d Remove comment-start-skip preset in tree-sitter indentati... c1e015ae320 Fix recent change in tramp-smb.el cf1b771864a ; * etc/NEWS: Fix typos. 50d18bb6ea7 Make tramp-archive autoloads robust for older Emacs versions 3941cc29df3 ; Improve documentation of 'setopt' 6f88de109c8 ruby-mode: Support endless methods (bug#54702) 91dd893e343 ; * lisp/progmodes/sql.el (sql-product-interactive): Doc ... 138d9dc4cb0 * lisp/cus-edit.el (setopt--set): Warn instead of rasing ... d1e0542f336 Allow customising windmove user options with an empty prefix c2375e77914 Improve and extend admin/git-bisect-start 7cc2313eb0a Make 'rmail-summary-by-thread' faster 88e59b16cbe ; Improve documentation of installing tree-sitter and gra... 897f33bf316 Fix the MS-DOS build 660e941235d Avoid crashes in PGTK build due to signal in 'note_mouse_... 0fc5fb2d054 Fix MS-Windows build broken by recent treesit.c changes 5b2e6d04ce2 Fix wrong capture in typescript-ts-mode (bug#60167) cb8ccdd2670 Add rust-ts-mode (Bug#60136) 9fcf764dd73 Indentation fixes for jsx/tsx (bug#60169) 69f2c71135f Fix treesit-query-validate problem with view-mode 1fc7535546c Use cursor API in treesit-node-parent 5f0286c0afa Switch to use cursor API in treesit.c a275e436df4 Add treesit_assume_true and treesit_cursor_helper a54c7a8df0c Remove file-exists-in-trash-p 3e02029642c Update to Org 9.6-49-g47d129 4a8ff671b0e Don’t assume make-directory handler returns nil 44c83b239d3 Fix copy-directory bug when dest dir exists bef1edc9cac make-directory now returns t if dir already exists 8a9579ca29d Use make-directory handlers uniformly 627e7e0243d Improve documentation of 'file-exists-p' c9015ef55ff Fix resizing of mini-windows by 'set-minibuffer-message' 5a245bc786e Prevent Abort dialogs from async-compiling jobs on Windows 4d1e4a48938 Fix 'window-max-chars-per-line' when there are no fringes d65beb820cc ; Revert "; * lisp/subr.el (internal--with-narrowing): Si... 1c0b90e5f7d ruby-mode: Recognize instance or global var as first arg ... 3356c0cb163 Fix end-of-defun in ruby-mode # Conflicts: # etc/NEWS
| * Avoid crashes in PGTK build due to signal in 'note_mouse_highlight'Eli Zaretskii2022-12-181-4/+7
| | | | | | | | | | | | | | | | * src/xdisp.c (string_buffer_position): Make sure the TO argument of 'string_buffer_position_lim' is always inside [BEGV..ZV]. Otherwise 'string_buffer_position_lim' might call 'get-char-property' and friends with invalid position, which will just signal an error and do nothing useful. (Bug#60144)
| * Fix resizing of mini-windows by 'set-minibuffer-message'Eli Zaretskii2022-12-171-0/+7
| | | | | | | | | | * src/xdisp.c (redisplay_window): Always resize mini-windows displaying the active minibuffer. (Bug#60015)
* | Merge from origin/emacs-29Po Lu2022-12-111-2/+1
|\ \ | |/ | | | | | | | | | | | | | | | | | | | | | | | | 79659416f95 ; * admin/git-bisect-start: Fix commit hash a9037aa8e81 ; Fix use-package-ensure-system-package macOS footnote 7d787564c08 Actually improve detection of long lines 118465f6fed ; Improve checkdoc.el commentary section 30e3cb21351 Unset the weight/slant/width in the spec when realizing a... 01154166057 Update to Org 9.6-31-g954a95 26a8644a587 ; tabulated-list.el: Remove duplicate obsolete declaration 29b9aeae32a ; * doc/misc/use-package.texi: Fix misplaced @end group. 3c5a41b2008 ; * doc/lispref/keymaps.texi (Searching Keymaps): Fix a t... 1753da24cd4 Fix infloop in 'shell-resync-dirs' with tcsh 2f1269c3331 ; Fix some minor issues in use-package.texi
| * Actually improve detection of long linesGregory Heytings2022-12-111-2/+1
| | | | | | | | | | | | | | | | | | | | | | * src/xdisp.c (redisplay_window): Update condition. * src/xdisp.c (mark_window_display_accurate_1): * src/pdumper.c (dump_buffer): * src/buffer.h (BUF_CHARS_UNCHANGED_MODIFIED): (struct buffer_text): * src/buffer.c (Fget_buffer_create): Revert 1c837c42c2, which was misguided.
* | Make a boxed menu bar have a shadow at its right end (bug#59778)Manuel Giraud2022-12-041-5/+25
| | | | | | | | | | * src/xdisp.c (display_menu_bar) [HAVE_X_WINDOWS]: Make a boxed menu bar have a shadow at its right end in non-toolkit X builds.
* | More behind the scenes transparent speedups around xselect.cPo Lu2022-12-021-7/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | * src/xdisp.c (display_menu_bar): Fix compiler warning about NULL pointer dereference. * src/xfns.c (Fx_begin_drag): Use x_intern_atoms. (Fx_change_window_property): Pass dpyinfo to x_fill_property_data. * src/xselect.c (lisp_data_to_selection_data): Use x_intern_atoms instead of syncing for each atom. (x_fill_property_data, x_send_client_event): Use x_intern_cached_atom. * src/xterm.c (x_intern_atoms): New function. * src/xterm.h: Update prototypes.
* | Merge from origin/emacs-29Stefan Kangas2022-12-021-1/+2
|\ \ | |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 39e0c60176 * lisp/tab-bar.el (tab-bar-format-align-right): Fix alignm... bf66b90b9a Fix the width of margins for icons in outline-minor-mode (... 2e4960d63d ; Change c-ts-mode--base-mode to c-ts-base-mode 1aa1f8432b Add new TypeScript mode tsx-ts-mode ad0563855f Add case and match to python--treesit-keywords (bug#59720) 16e68e64f9 ; * lisp/progmodes/c-ts-mode.el: Change rx to regexp-opt. 3bccef6f52 project-files (VC-aware): Make sure the VC backend is loaded 03a40b974c term--update-term-menu: Add the menu to term-terminal-menu 368c7c7d8e Improve detection of very long lines 9c58ea37af ; Fix last change in proced.el 0c1495574a Add colors to Proced (bug#59407) 91dba5b066 Merge branch 'emacs-29' of git.savannah.gnu.org:/srv/git/e... 70ecdebc92 ; Fix typos (don't abbreviate "with" or "without") d94c5870c0 ; * lisp/tab-bar.el (tab-bar-change-tab-group): Doc fix. # Conflicts: # etc/NEWS
| * Improve detection of very long linesEli Zaretskii2022-12-021-1/+2
| | | | | | | | | | * src/xdisp.c (redisplay_window): Recheck for long lines if the restriction has changed. (Bug#56682)
* | Merge from origin/emacs-29Stefan Kangas2022-12-011-1/+2
|\ \ | |/ | | | | | | | | | | | | | | | | 70ecdebc92 ; Fix typos (don't abbreviate "with" or "without") a86ccb5f9d ; Fix recently added treesit documentation 2d5cf7329e ; * etc/NEWS: Fix wording and punctuation of recently adde... 61311d6862 ; Fix test failure on CI # Conflicts: # etc/NEWS
| * ; Fix typos (don't abbreviate "with" or "without")Stefan Kangas2022-12-011-1/+2
| |
* | Make sure the menu-bar height is updated on X when fonts changeManuel Giraud2022-12-011-1/+17
|/ | | | | * src/xdisp.c (display_menu_bar) [HAVE_X_WINDOWS]: Update menu_bar_window height in non-toolkit X builds. (Bug#59351)
* Do not enter locked narrowing when it would span the whole bufferGregory Heytings2022-11-281-2/+3
| | | | | * src/xdisp.c (handle_fontified_prop): * src/keyboard.c (safe_run_hooks_maybe_narrowed): Add condition.
* Minor improvements to locked narrowingGregory Heytings2022-11-271-4/+5
| | | | | | | | | | * src/xdisp.c (get_locked_narrowing_begv) (get_locked_narrowing_zv): Safer handling of negative values. (handle_fontified_prop): Do not use locked narrowing if the region size is <= 0. * src/keyboard.c (safe_run_hooks_maybe_narrowed): Do not use locked narrowing if the region size is <= 0.
* Merge branch 'feature/improved-locked-narrowing'Gregory Heytings2022-11-271-11/+48
|\
| * ; * src/xdisp.c (get_locked_narrowing_begv): Minor change.Gregory Heytings2022-11-271-2/+1
| |
| * Docstring improvementsGregory Heytings2022-11-261-1/+1
| | | | | | | | | | | | * src/xdisp.c (syms_of_xdisp): * src/keyboard.c (syms_of_keyboard): Docstring improvements.
| * Docstring improvementsGregory Heytings2022-11-261-4/+5
| | | | | | | | | | | | | | * src/xdisp.c (syms_of_xdisp): * src/keyboard.c (syms_of_keyboard): * src/buffer.c (syms_of_buffer): Docstring improvements.
| * Improve locked narrowing around low-level hooks.Gregory Heytings2022-11-261-4/+40
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * src/buffer.c (syms_of_buffer): Two new variables, 'long-line-locked-narrowing-region-size' and 'long-line-locked-narrowing-bol-search-limit', to make the locked narrowing around low-level hooks configurable. Increase the default value of 'long-line-threshold'. After carefully considering the (few) bug reports about long line optimizations, I concluded that the previous default value was too low. * src/xdisp.c (get_locked_narrowing_begv) (get_locked_narrowing_zv): Two new functions. (handle_fontified_prop, reseat): Use them. * src/keyboard.c (safe_run_hooks_maybe_narrowed): Use them. * src/dispextern.h (struct it): Add two new fields to store the values returned by these functions. Make them externally visible. * src/editfns.c: (Fsave_restriction): Update docstring.
| * Reworked locked narrowing.Gregory Heytings2022-11-251-34/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * src/editfns.c: (narrowing_locks): New alist to hold the narrowing locks and their buffers. (narrowing_lock_get_bound, narrowing_lock_peek_tag) (narrowing_lock_push, narrowing_lock_pop): New functions to access and update 'narrowing_locks'. (reset_outermost_narrowings, unwind_reset_outermost_narrowing): Functions moved from src/xdisp.c, and rewritten with the above functions. (Fwiden): Use the above functions. Update docstring. (Fnarrow_to_region, Fnarrowing_lock, Fnarrowing_unlock): Use the above functions. (syms_of_editfns): Remove the 'narrowing-locks' variable. * src/lisp.h: Make 'reset_outermost_narrowings' externally visible. * src/xdisp.c (reset_outermost_narrowings) unwind_reset_outermost_narrowing): Functions moved to src/editfns.c. * lisp/subr.el (with-locked-narrowing): Improved macro, with a helper function.
| * Merge master into feature/improved-locked-narrowing.Gregory Heytings2022-11-241-21/+41
| |\
| * \ Merge master into feature/improved-locked-narrowing.Gregory Heytings2022-10-301-212/+133
| |\ \
| * \ \ Merge master into feature/improved-locked-narrowing.Gregory Heytings2022-08-231-1/+2
| |\ \ \
| * | | | Better way to protect redisplay routines from locked narrowings.Gregory Heytings2022-08-211-0/+35
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * src/xdisp.c (reset_outermost_narrowing, unwind_reset_outermost_narrowing): New functions. (redisplay_internal): Use the new functions. * src/editfns.c (Fnarrow_to_region): Use the limits of the locked restriction instead of the position arguments if necessary. Update docstring. (Fnarrowing_lock): Update docstring.
| * | | | Revert 4f19e1a5d1Gregory Heytings2022-08-211-37/+19
| | | | |
| * | | | Fix mode line redisplay bug when locked narrowing is in effect.Gregory Heytings2022-08-211-19/+37
| | | | | | | | | | | | | | | | | | | | | | | | | * src/xdisp.c (decode_mode_spec): Use the actual narrowing bounds when redisplay is called while a locked narrowing is in effect.
| * | | | Improved locked narrowing.Gregory Heytings2022-08-201-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * src/editfns.c (Fnarrowing_lock, Fnarrowing_unlock, narrow_to_region_locked, unwind_narrow_to_region_locked): New functions. (Fnarrow_to_region, Fwiden): Adapt, and make it possible to use these functions within the bounds of the locked narrowing. (syms_of_editfns): Change the name of the variable, make it buffer-local, and add the two Snarrowing_lock and Snarrowing_unlock subroutines. * src/lisp.h: Prototype of 'narrow_to_region_locked'. * src/xdisp.c (handle_fontified_prop): * src/keyboard.c (safe_run_hooks_maybe_narrowed): Use 'narrow_to_region_locked'. * lisp/subr.el (with-locked-narrowing): New macro.
* | | | | Fix error signaled by mouse-highlight on mode lineEli Zaretskii2022-11-231-1/+4
| |_|_|/ |/| | | | | | | | | | | | | | | | | | | * src/xdisp.c (note_mode_line_or_margin_highlight): Avoid signaling args-out-of-range errors when mode-line format uses min-width 'display' property. (Bug#59452)
* | | | Fix click position to menu bar entry with no-toolkitManuel Giraud2022-11-191-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | * src/keyboard.c (make_lispy_event): Use x_y_to_hpos_vpos to compute correct menu bar position should the menu face change. * src/xdisp.c (x_y_to_hpos_vpos): Not static anymore. * src/dispextern.h: Export x_y_to_hpos_vpos.
* | | | Merge remote-tracking branch 'origin/scratch/noverlay'Stefan Monnier2022-11-171-8/+2
|\ \ \ \
| * | | | itree.c: Get rid of the old iterator codescratch/noverlayStefan Monnier2022-11-171-8/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Only use the new iterator which relies on a fixed size (and small) state in the iterator. This makes non-local exits safe within ITREE_FOREACH loops. * src/itree.c (make_nav, nav_nodeptr, nav_flag, itree_stack_clear) (itree_stack_push_flagged): Delete functions. (nodeptr_and_flag): Delete type. (struct itree_stack): Make the array hold plain pointers instead. (itree_stack_push): Inline the former code of `itree_stack_push_flagged`. (itree_stack_pop): Change return type. (itree_contains): Don't call `ITREE_FOREACH_ABORT` any more. (itree_insert_gap): Simplify access to the stack of nodes. (itree_delete_gap, itree_insert_gap): Adjust code to new return type of `itree_stack_pop`. (itree_iterator_finish): Delete function. (itree_iterator_start): Don't setup the `stack` field any more. (itree_iterator_next): Delete function. (itree_iter_next): Rename to `itree_iterator_next` and make it non-static. (itree_iterator_narrow): Don't check the `running` flag any more. * src/itree.h (itree_iterator_finish): Remove declaration. (struct itree_iterator): Remove the `stack` and `running` fields. (ITREE_FOREACH_ABORT): Delete macro. (ITREE_FOREACH): Don't call `itree_iterator_finish` any more. * src/xdisp.c (strings_with_newlines): * src/buffer.c (overlays_in, next_overlay_change, overlay_touches_p): Don't call `ITREE_FOREACH_ABORT` any more.
* | | | | Fix display of mode line when the right divider is usedEli Zaretskii2022-11-171-1/+19
|/ / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * src/xdisp.c (init_iterator): For the mode-line, adjust last_visible_x due to the right divider and the 'box' attribute, if any, of the mode-line face. (display_min_width): Update current_x after producing the stretch glyph, to mimic PRODUCE_GLYPHS. (display_mode_line): Widen the last glyph to account for adding the right box line to it. (Bug#5930)
* | | | Avoid assertion violations in matrix_rowEli Zaretskii2022-11-091-1/+7
| | | | | | | | | | | | | | | | | | | | | | | | * src/xdisp.c (cursor_in_mouse_face_p): Avoid rare assertion violations when the cursor's VPOS winds up being invalid for the window. (Bug#59147)
* | | | ; Avoid compiler warnings in 'extend_face_to_end_of_line'Eli Zaretskii2022-11-061-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | * src/xdisp.c (extend_face_to_end_of_line): Return if no default_face is cached or could be realized. This avoids compilation warnings about NULL pointer dereferences.
* | | | Revert "Pacify -Wnull-dereference"Eli Zaretskii2022-11-061-8/+8
| | | | | | | | | | | | | | | | | | | | This reverts commit dad452552bebf832e737ebb946b5eea6cd57f63f. Please don't assume I write such code by omission.
* | | | Pacify -Wnull-dereferencePo Lu2022-11-061-8/+8
| | | | | | | | | | | | | | | | | | | | | | | | * src/xdisp.c (extend_face_to_end_of_line): Use FACE_FROM_ID, not FACE_FROM_ID_OR_NULL, when the next line proceeds to immediately dereference the face.
* | | | Fix face extension when Org narrows the bufferEli Zaretskii2022-11-061-10/+9
| |_|/ |/| | | | | | | | | | | * src/xdisp.c (extend_face_to_end_of_line): Make sure glyph rows at ZV use the default face for extension. (Bug#59065)
* | | Merge remote-tracking branch 'origin/feature/noverlay'Stefan Monnier2022-10-281-159/+36
|\ \ \
| * | | Prefix all itree.h type names with itree_Matt Armstrong2022-10-191-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Rename interval_node -> itree_node, interval_tree -> itree_tree, interval_tree_order -> itree_order. * src/alloc.c: Renames. * src/buffer.c: ditto. * src/itree.c: ditto. * src/itree.h: ditto. * src/lisp.h: ditto. * src/pdumper.h: ditto. * src/textprop.h: ditto. * src/xdisp.h: ditto.
| * | | New ITREE_FOREACH macroStefan Monnier2022-10-021-12/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * src/itree.h (interval_tree_iter_start): Adjust type. (interval_tree_nodes): Delete declaration. (ITREE_FOREACH, ITREE_FOREACH_ABORT, ITREE_FOREACH_NARROW): New macros. * src/itree.c (interval_tree_contains, interval_tree_insert_gap): Use the new ITREE_FOREACH macro. (interval_tree_nodes): Delete function. (interval_tree_iter_start): Return the iterator. (interval_generator_next, interval_tree_destroy): Don't accept a NULL arg any more. * src/xdisp.c (load_overlay_strings, strings_with_newlines): * src/textprop.c (get_char_property_and_overlay): * src/buffer.c (copy_overlays, delete_all_overlays) (set_overlays_multibyte, swap_buffer_overlays, overlays_in) (next_overlay_change, previous_overlay_change, overlay_touches_p) (overlay_strings, Foverlay_lists, report_overlay_modification) (evaporate_overlays): Use the new ITREE_FOREACH macro. * src/buffer.h (buffer_overlay_iter_start1) (buffer_overlay_iter_start, buffer_overlay_iter_next) (buffer_overlay_iter_finish, buffer_overlay_iter_narrow): Delete declarations.
| * | | Avoid nested iteration over intervals (bug#58144)Gerd Möllmann2022-09-281-2/+10
| | | | | | | | | | | | | | | | | | | | * src/xdisp.c (strings_with_newlines): Call buffer_overlay_iter_finish.
| * | | Merge 'master' into noverlayStefan Monnier2022-09-251-2064/+6473
| |\ \ \
| * | | | Remove redundant checks for the empty overlay treefeature/noverlayAndreas Politz2017-10-091-42/+40
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * src/alloc.c (mark_buffer): Remove b->overlays check. * src/buffer.c (copy_overlays): Also. * src/buffer.c (swap_buffer_overlays, overlays_in): Also. (next_overlay_change, previous_overlay_change): Also. (overlay_touches_p, Foverlay_lists): Also. (evaporate_overlays): Also. * src/xdisp.c (load_overlay_strings): Also.
| * | | | Provide a new tree data-structure for overlays.Andreas Politz2017-10-041-122/+45
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * src/itree.c (interval_generator_narrow, interval_generator_next) (interval_node_init, interval_node_begin) (interval_node_end, interval_node_set_region) (interval_tree_create, interval_tree_clear) (interval_tree_init, interval_tree_destroy) (interval_tree_size, interval_tree_insert) (interval_tree_contains, interval_tree_remove) (interval_tree_validate, interval_tree_iter_start) (interval_tree_iter_finish, interval_tree_iter_next) (interval_tree_iter_ensure_space, interval_tree_max_height) (interval_tree_insert_gap, interval_tree_delete_gap) (interval_generator_create, interval_generator_reset) (interval_generator_ensure_space, interval_node_intersects) (interval_generator_next, interval_generator_narrow) (interval_generator_destroy, interval_stack_create) (interval_stack_destroy, interval_stack_clear) (interval_stack_ensure_space, interval_stack_push) (interval_stack_push_flagged, interval_stack_pop) (interval_tree_update_limit, interval_tree_inherit_offset) (interval_tree_propagate_limit, interval_tree_rotate_left) (interval_tree_rotate_right, interval_tree_insert_fix) (interval_tree_remove_fix, interval_tree_transplant) (interval_tree_subtree_min): New file and new functions. * src/itree.h: New file. * configure.ac: Create Makefile for manual overlay tests. * src/Makefile.in: Add itree.o target. * src/alloc.c (build_overlay, mark_overlay, mark_buffer) (sweep_misc, sweep_buffers): Adapt to new tree data-structure. * src/buffer.c (overlays_in, overlays_at): Remove unused arguments prev_ptr and change_req, adapt to new data-structure and reuse code. (copy_overlays, drop_overlays, delete_all_overlays) (reset_buffer, kill-buffer, buffer-swap-text, next_overlay_change) (previous_overlay_change, mouse_face_overlay_overlaps) (disable_line_numbers_overlay_at_eob, overlay_touches_p) (overlay_strings, adjust_overlays_for_insert) (adjust_overlays_for_delete, overlayp, make-overlay, move-overlay) (delete-overlay, overlay-start, overlay-end, overlay-buffer) (overlay-properties, overlays-at, overlays-in) (next-overlay-change, previous-overlay-change, overlay-put) (overlay-get, report_overlay_modification, evaporate_overlays) (init_buffer_once): Adapt to changes and tree data-structure. (overlay-lists, overlay-recenter): Funtions are now obsolete, but kept anyway. (set_buffer_overlays_before, set_buffer_overlays_after) (recenter_overlay_lists,fix_start_end_in_overlays,fix_overlays_before) (unchain_overlay,): Removed functions of the old list data-structure. (swap_buffer_overlays, make_sortvec_item): New functions. (sort_overlays): Adapt to changes and tree data-structure. (sortvec): Moved to buffer.h . (make_lispy_interval_node, overlay_tree, overlay-tree) [ITREE_DEBUG]: New debugging functions. * src/buffer.h (overlays_before, overlays_after): Removed struct member of the list data-structure. (overlays): Added tree struct member. (sortvec): Moved here from buffer.c . (GET_OVERLAYS_AT): Adapt to changes. (set_buffer_intervals, OVERLAY_START, OVERLAY_END, OVERLAY_PLIST): Adapt to tree data-structure. (OVERLAY_POSITION): Removed macro of the list data-structure. (OVERLAY_REAR_ADVANCE_P, OVERLAY_FRONT_ADVANCE_P): New macros. (overlay_start, overlay_end) (set_overlay_region, maybe_alloc_buffer_overlays) (free_buffer_overlays, add_buffer_overlay) (remove_buffer_overlay, buffer_overlay_iter_start) (buffer_overlay_iter_next, buffer_overlay_iter_finish) (buffer_overlay_iter_narrow): New functions. (compare_overlays, make_sortvec_item): Export functions. * src/editfns.c (overlays_around): Reuse overlays_in. (get-pos-property): Adapt to tree data-structure. (transpose-regions): Remove call to deleted function. * src/fileio.c: (insert-file-contents): Remove references to deleted struct member. * src/fns.c (internal_equal): Adapt to tree data-structure. * src/indent.c (check_display_width): Adapt to tree data-structure. (skip_invisible): Remove call to deleted function. * src/insdel.c (adjust_markers_for_insert): Remove calls to deleted functions. * src/intervals.c (adjust_for_invis_intang): Adapt to tree data-structure. * src/keyboard.c (adjust_point_for_property): Adapt to tree data-structure. * src/lisp.h (Lisp_Overlay): Modified struct layout. * src/print.c (temp_output_buffer_setup, print_object): Adapt to tree data-structure. * src/textprop.c (get_char_property_and_overlay): Adapt to tree data-structure. Take advantage of the new data-structure. * src/window.h (overlay_matches_window): New function. * src/xdisp.h (next_overlay_change): Removed function. Use next-overlay-change, which does not use xmalloc anymore. (handle_single_display_spec, load_overlay_strings) (back_to_previous_visible_line_start, note_mouse_highlight): Adapt to tree data-structure. (move_it_to, display_line): Remove calls to deleted functions. * src/xfaces.c (face_at_buffer_position): Adapt to changes and tree data-structure. * test/src/buffer-tests.el: Many tests regarding overlays added. * test/manual/noverlay/itree-tests.c: New file with tests of the tree data-structure on the C level. * test/manual/noverlay/Makefile.in: New file. * test/manual/noverlay/check-sanitize.sh: New file. * test/manual/noverlay/emacs-compat.h: New file. * test/manual/noverlay/.gitignore: New file. * test/manual/noverlay/overlay-perf.el: New file providing performance tests. * test/manual/noverlay/many-errors.h: New file.