1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-02-07 16:10:46 -08:00
Commit graph

155589 commits

Author SHA1 Message Date
Alan Mackenzie
4e77177b06 Try to make scratch/correct-warning-pos build on Windows and not segfault
* src/comp.c (emit_EQ): Replace calls to gcc_jit_context_new_location with
NULLs.
(Fcomp__init_ctxt): Remove the register_emitter call for Qsymbol_with_pos_p,
which was causing a segfault.
2021-12-31 23:17:28 +00:00
Alan Mackenzie
ff9af1f1f6 Miscellaneous enhancements to scratch/correct-warning-pos.
1. Check the type (symbol with position) of the argument given to the native
compiled version of SYMBOL_WITH_POS_SYM.
2. Handle infinite recursion caused by circular lists, etc., in
macroexp-strip-symbol-positions by using hash tables.
3. Read byte compiled functions without giving symbols positions.

* lisp/emacs-lisp/comp.el (comp-finalize-relocs): Add symbol-with-pos-p into
the list of relocated symbols.

* lisp/emacs-lisp/macroexp.el (macroexp--ssp-conses-seen)
(macroexp--ssp-vectors-seen, macroexp--ssp-records-seen): Renamed, and
animated as hash tables.
(macroexp--strip-s-p-2): Optionally tests for the presence of an argument in
one of the above hash tables, so as to handle otherwise infinite recursion.
(byte-compile-strip-s-p-1): Add a condition-case to handle infinite recursion
caused by circular lists etc., using the above hash tables as required.

* src/comp.c (comp_t): New element symbol_with_pos_sym.
(emit_SYMBOL_WITH_POS_SYM): Amend just to call the new SYMBOL_WITH_POS_SYM.
(emit_CHECK_SYMBOL_WITH_POS, define_SYMBOL_WITH_POS_SYM): New functions.
(Fcomp__init_ctxt): Register an emitter for Qsymbol_with_pos_p.
(Fcomp__compile_ctxt_to_file): Call define_SYMBOL_WITH_POS_SYM.
(syms_of_comp): Define Qsymbol_with_pos_p.

* src/data.c (syms_of_data): Define a new error symbol Qrecursion_error, an
error category for the new error symbols Qexcessive_variable_binding and
Qexcessive_lisp_nesting.

* src/eval.c (grow_specpdl): Change the signal_error call to an xsignal0 call
using the new error symbol Qexcessive_variable_binding.
(eval_sub, Ffuncall): Change the `error' calls to xsignal using the new error
symbol Qexcessive_lisp_nesting.

* src/lread.c (read1): When reading a compiled function, read the components
of the vector without giving its symbols a position.
2021-12-31 21:21:46 +00:00
Eli Zaretskii
67400da412 Improve doc strings of fringe indicator variables
* src/buffer.c (syms_of_buffer): Fix doc strings of
'indicate-empty-lines' and 'indicate-buffer-boundaries'.
2021-12-31 21:58:42 +02:00
Stefan Kangas
4521a3a19c Use defvar-keymap in play/*.el
* lisp/play/5x5.el (5x5-mode-map):
* lisp/play/blackbox.el (blackbox-mode-map):
* lisp/play/bubbles.el (bubbles-mode-map):
* lisp/play/decipher.el (decipher-mode-map):
* lisp/play/doctor.el (doctor-mode-map):
* lisp/play/gametree.el (gametree-mode-map):
* lisp/play/gomoku.el (gomoku-mode-map):
* lisp/play/mpuz.el (mpuz-mode-map):
* lisp/play/pong.el (pong-mode-map):
* lisp/play/solitaire.el (solitaire-mode-map): Use defvar-keymap.
2021-12-31 17:17:16 +01:00
Lars Ingebrigtsen
c09fcb8f07 `make-finalizer' now has to be called with a function, so adjust test 2021-12-31 16:50:50 +01:00
Michael Albinus
db0cab990c Documentation update for Secret Service
* doc/misc/auth.texi (Secret Service API): Precise "session" collection.

* lisp/auth-source.el (auth-sources): Adapt custom label.

* lisp/net/secrets.el: Adjust comments.
2021-12-31 14:36:49 +01:00
Po Lu
1f34f072be Fix copyright dates in some files belonging to the pgtk port
* src/pgtkgui.h:
* src/pgtkim.c:
* src/pgtkmenu.c:
* src/pgtkselect.c:
* src/pgtkselect.h:
* src/pgtkterm.c:
* src/pgtkterm.h: Fix copyright dates to say '2021'.
2021-12-31 21:08:23 +08:00
Po Lu
7dd4dc6ace On Haiku, sync a frames's connection to the app sever after raising
* src/haiku_support.h: (BWindow_sync)
* src/haiku_support.cc (BWindow_sync): New function.
* src/haikuterm.c (haiku_frame_raise_lower): Synchronize window
after raising it to avoid situations where raising windows is
done out-of-order, such as when ediff raises a frame.
2021-12-31 13:03:07 +00:00
Po Lu
a8c3e8e2a6 Fix child frame unlinking on Haiku
* src/haiku_support.cc (UnlinkChild): Fix obvious mistake.
(DoMove): Lock child frame window before moving it.
2021-12-31 10:59:53 +00:00
Po Lu
eab422a653 Merge branch 'master' of git.sv.gnu.org:/srv/git/emacs 2021-12-31 09:38:41 +00:00
Po Lu
d1fde0ab8a Use a single global lock for the child frame state on Haiku
Each BWindows (and various system callbacks) runs in a separate
thread, so there are very complicated locking semantics that
used to be handled manually.  This changes child frame state to
use a single global lock, which makes things much easier.

* src/haiku_support.cc (child_frame_lock): New variable.
(class EmacsWindow):
(~EmacsWindow):
(Unparent):
(ParentTo):
(MoveChild):
(FrameMoved):
(EmacsHide):
(EmacsShow):
(GetParentWidthHeight):
(OffsetChildRect):
(MakeFullscreen):
(SetUpDoubleBuffering): Use a single lock for controlling access
to child frame state.
2021-12-31 09:31:27 +00:00
Stephen Berman
95ee6e8b90 Fix handling of webkit xwidget bookmarks
Make jumping to a bookmarked webkit xwidget in another window or
another frame show the xwidget only in that window or frame and
refactor new session code used by the bookmark code (bug#52856).
In addition, make xwidget-webkit-clone-* commands work.

* lisp/xwidget.el (xwidget-webkit-clone-and-split-below)
(xwidget-webkit-clone-and-split-right): Unbreak these functions by
passing just the URL to them, not the message displaying it.
(xwidget-webkit-bookmark-jump-new-session): Adjust doc string,
rephrasing and removing a customization suggestion that cannot
take effect.
(xwidget-webkit-bookmark-jump-handler): New autoloaded function.
(xwidget-webkit-bookmark-make-record): Use it.
(xwidget-webkit--create-new-session-buffer): New function
extracted from `xwidget-webkit-new-session'.
(xwidget-webkit-new-session): Use it.
2021-12-31 10:25:52 +01:00
Juri Linkov
a6adfe21e4 * lisp/tab-line.el (tab-line--get-tab-property): New function (bug#52881).
(tab-line-auto-hscroll): Use ‘tab-line--get-tab-property’ instead of
‘get-pos-property 1’, and ‘get-text-property’ instead of
‘get-pos-property’.
(tab-line-select-tab, tab-line-close-tab): Use tab-line--get-tab-property.
2021-12-31 11:20:51 +02:00
Eli Zaretskii
0922634b28 Minor improvements of 'lisp-directory' docs
* lisp/startup.el (lisp-directory):
* etc/NEWS:
* doc/lispref/loading.texi (Library Search): Improve wording of
documentation of 'lisp-directory' and related features.
2021-12-31 10:56:28 +02:00
Po Lu
c452ffe4c2 Prevent double buffering from being disabled on USE_BE_CAIRO builds
The direct rendering code used in that situation never
completely worked, and the BDirectWindow destructor is also
buggy.  Completely remove that code in order to let us inherit
from BWindow, so as to prevent the buggy destructor from being
run.

* src/haiku_support.cc (cairo_format_from_color_space): Delete
function.
(class EmacsWindow): Inherit from BWindow.
(EmacsWindow): Call BWindow constructor instead.
(MessageReceived):
(DispatchMessage):
(FrameResized):
(FrameMoved):
(Zoom): Call BWindow functions instead.
(EmacsView_cairo_surface): Stop looking for surfaces in the
window.
(EmacsWindow_begin_cr_critical_section):
(EmacsWindow_end_cr_critical_section): Stop locking the window.

* src/haikufns.c (haiku_set_inhibit_double_buffering): Always
enable double buffering on Cairo builds.
2021-12-31 07:34:09 +00:00
Po Lu
080a529f7e Don't select for gesture events on xwidgets if the server is too old
* src/xwidget.c (x_draw_xwidget_glyph_string): Only select for
XI gesture events if the server supports XI 2.4 or later.
2021-12-31 14:07:32 +08:00
Stefan Monnier
291085a2a6 (Fmake_finalizer): Check the arg is a function
* src/eval.c (syms_of_eval): Add `Qfunctionp`.
* src/alloc.c (Fmake_finalizer): Check the arg is a function.
2021-12-31 00:16:03 -05:00
Stefan Monnier
87f7412418 * lisp/emacs-lisp/package.el (package-get-version): Add fallback 2021-12-31 00:03:35 -05:00
Stefan Monnier
59732a83c8 Don't store docstrings of preloaded .el files in etc/DOC
Since the location of those files changes between build time and
installation time, this requires to tweak the file name used in those
(#$ . NNN) references during the dump so they don't hardcode the build
directory.  We do it in the same way as was already done for those
same file names in `load-history`, except we convert them back to
absolute file names more lazily (i.e. when fetching the actual
docstring rather than at startup), which requires remembering the
`lisp-dir` computed at startup in the new `lisp-directory` variable.

* src/Makefile.in ($(etc)/DOC): Don't scan Lisp files any more.

* src/lread.c (Fload): Use relative file names for `load-file-name`
when preloading for the dump, like we already did for `current-load-list`.
(read_list): Don't zero-out dynamic docstring references during the
preload since they won't be filled later by Snarf-documentation any more.
(read1): Remove the hash-hack for doc references that were zeroed.

* lisp/startup.el (lisp-directory): New variable.
(command-line): Set it.

* src/doc.c (get_doc_string): Use `lisp-directory` for dynamic
docstring references using relative file names.
(syms_of_doc): Add `Qlisp_directory`.

* lib-src/make-docfile.c (scan_file): Don't handle `.el` or `.elc`
files any more.
(IS_SLASH): Remove macro, not used any more.
(skip_white, read_lisp_symbol, search_lisp_doc_at_eol)
(scan_lisp_file): Remove functions, not used any more.

* doc/lispref/loading.texi (Library Search): Mention `lisp-directory`.
2021-12-30 23:17:45 -05:00
Po Lu
337005af0b Add pinch event support to xwidgets
* src/xterm.c (handle_one_xevent): Pass through pinch events to
xwidgets and provide root coordinates when translating motion
events.
* src/xwidget.c (xwidget_motion_notify): Use provided root
window coordinates.
(xwidget_pinch): New function.
* src/xwidget.h (xwidget_motion_notify): Update prototype.
(xwidget_pinch): New function prototype.
2021-12-31 10:07:30 +08:00
Po Lu
77f17649d8 Restore original xwidget embedder after performing a lispy event
* src/xwidget.c (Fxwidget_perform_lispy_event): Restore original
embedder after performing event.
(Fdelete_xwidget_view): Block input around non-reentrant
section.
2021-12-31 09:28:12 +08:00
Po Lu
cc43606b55 * src/xwidget.c (Fxwidget_perform_lispy_event): Use FRAME_WINDOW_P. 2021-12-31 09:18:56 +08:00
Eli Zaretskii
89f205084b Avoid assertion violations with variable-weight fonts
* src/font.c (font_score, font_delete_unmatched): Don't assume
weight, slant, and width properties of the font must be fixnums:
some variable-weight fonts violate that assumption.  Reported
by Sean Whitton <spwhitton@spwhitton.name>.  Do not merge to
master.  (Bug#52888)
2021-12-30 20:28:58 +02:00
Eli Zaretskii
f2031d0ddb Minor improvement in user documentation of completion style
* doc/emacs/mini.texi (Completion Styles): Add reference to
"Completion Variables" in the ELisp manual.  (Bug#52901)
2021-12-30 20:07:29 +02:00
Glenn Morris
1d2d7ee87e * lisp/window.el (display-comint-buffer-action): Fix type. 2021-12-30 09:25:02 -08:00
Philipp Stephani
d0974e294d * lisp/emacs-lisp/ert.el (ert-select-tests): Document new error. 2021-12-30 17:59:07 +01:00
Philipp Stephani
097452efbc * lisp/emacs-lisp/ert.el (ert-select-tests): Simplify nested switch 2021-12-30 17:19:31 +01:00
Philipp Stephani
f6da1eed74 Properly report errors about unbound ERT test symbols.
Assertions should only be used to check internal consistency within a
package, not to check arguments passed by callers.  Instead, define
and use a new error symbol.

* lisp/emacs-lisp/ert.el (ert-test-unbound): New error symbol.
(ert-select-tests): Use it.

* test/lisp/emacs-lisp/ert-tests.el (ert-test-select-undefined): New
unit test.

* etc/NEWS: Document new behavior.
2021-12-30 17:06:09 +01:00
Philipp Stephani
94891dd225 ; * lisp/emacs-lisp/ert.el: Update reference to 'cl-assert' 2021-12-30 16:23:48 +01:00
Eli Zaretskii
6738c1cc8c Fix multisession-tests on MS-Windows
* test/lisp/emacs-lisp/multisession-tests.el
(multi-test-files-simple): On MS-Windows and Haiku, wait before
invoking the Emacs sub-process, not after, to ensure the later
update is detected with 1-sec file time resolution.
2021-12-30 16:44:13 +02:00
Po Lu
a67b1f1944 Make sure widget buttons always have a left box line
* lisp/wid-edit.el (widget-specify-button): Add an invisible
before-string to the button overlay.  (bug#51550)
2021-12-30 19:43:58 +08:00
Alan Mackenzie
cc9ac56081 CC Mode: Prevent rapid alternation of fontification of "found types"
This fixes bug #52863.

* lisp/progmodes/cc-engine.el (c-forward-decl-or-cast-1): When a new type is
found, postpone entering it into c-found-types (and thus triggering the
fontification of that type throughout the buffer) until the end of the
function, when we're sure that the "type" found actually is a type.
2021-12-30 11:35:24 +00:00
Eli Zaretskii
8b90d91f21 Fix previous change in 'pop_it'
* src/xdisp.c (restore_face_box_flags): New function.
(pop_it): Use 'restore_face_box_flags'.  (Bug#51550)
2021-12-30 13:32:14 +02:00
Eli Zaretskii
c80d2f3d67 Fix start-of-box-face display after display and overlay strings
* src/xdisp.c (pop_it): Recompute the 'start_of_box_run_p' flag,
like we do in 'handle_fontified_prop', when faces change while
iterating over a buffer or string.  (Bug#51550)
2021-12-30 13:21:01 +02:00
Alan Mackenzie
1cd188799f Make symbols with positions work with native compilation
This version of the software should bootstrap Emacs successfully with native
compilation enabled.

* lisp/emacs-lisp/bytecomp.el (byte-compile-strip-s-p-1)
(byte-compile-strip-symbol-positions): Rename and move to macroexp.el.  Rename
calls to these functions throughout the file.
(byte-compile-initial-macro-environment): In the code sections for
eval-when-compile and eval-and-compile, call macroexp-strip-symbol-positions
before evaluating code.
(byte-compile-file, byte-compile-output-file-form)
(byte-compile-file-form-defmumble, byte-compile, batch-byte-compile): Call
macroexp-strip-symbol-positions from code being passed to the native compiler.

* lisp/emacs-lisp/cl-macs.el (cl-macs--strip-s-p-1)
(cl-macs--strip-symbol-positions): Remove, replacing them with the renamed
functions in macroexp.el.
(cl-define-compiler-macro): Apply macroexp-strip-symbol-positions to ARGS and
BODY.

* lisp/emacs-lisp/comp.el (comp-limplify-lap-inst): Use `null' to compile
byte-not rather than a compilation of `eq'.
(comp--native-compile): bind symbols-with-pos-enabled to t.

* lisp/emacs-lisp/macroexp.el (byte-compile--ssp-conses-seen)
(byte-compile--ssp-vectors-seen, byte-compile--ssp-records-seen): Provisional
auxiliary variables to support the following functions.
(macroexp--strip-s-p-2, byte-compile-strip-s-p-1)
(macroexp-strip-symbol-positions): Functions moved from bytecomp.el, renamed,
and further developed.
(macroexp--compiler-macro): Bind symbol-with-pos-enabled to t around the call
to `handler'.
(internal-macroexpand-for-load): Strip symbol positions from the form being
eagerly expanded for macros.

* src/comp.c (F_SYMBOLS_WITH_POS_ENABLED_RELOC_SYM): New macro for a
relocation symbol.
(comp_t): New elements bool_ptr_type, f_symbols_with_pos_enabled_ref,
lisp_symbol_with_position, lisp_symbol_with_position_header,
lisp_symbol_with_position_sym, lisp_symbol_with_position_pos,
lisp_symbol_with_position_type, lisp_symbol_with_position_ptr_type,
get_symbol_with_position.
(helper_GET_SYMBOL_WITH_POSITION): New function.
(emit_BASE_EQ): Function rename from emit_EQ.
(emit_AND, emit_OR, emit_BARE_SYMBOL_P, emit_SYMBOL_WITH_POS_P)
(emit_SYMBOL_WITH_POS_SYM): New functions.
(emit_EQ): New function which handles symbols with position correctly.
(emit_NILP): Use emit_BASE_EQ rather than emit_EQ.
(emit_limple_insn): When emitting a conditional branch, check each operand for
being a literal Qnil, and if one of them is, use emit_BASE_EQ rather than
emit_EQ.
(declare_runtime_imported_funcs): Declare helper_GET_SYMBOL_WITH_POSITION.
(emit_ctxt_code): Export the global F_SYMBOLS_WITH_POS_ENABLED_RELOC_SYM.
(define_lisp_symbol_with_position, define_GET_SYMBOL_WITH_POSITION): New
functions.
(Fcomp__init_ctxt): Initialise comp.bool_ptr_type, call the two new
define_.... functions.
(load_comp_unit): Initialise **f_symbols_with_pos_enabled_reloc.

* src/fns.c (Fput): Strip positions from symbols in PROPNAME and VALUE.
2021-12-30 10:14:58 +00:00
Juri Linkov
d1c7ce68ba * lisp/tab-line.el (tab-line-tab-name-format-default): Add help-echo.
(bug#52889)
2021-12-30 10:08:37 +02:00
Po Lu
37ad776b9e Make xwidget motion commands hscroll the window of wide widgets
* lisp/xwidget.el (xwidget-info): New function declaration.
(xwidget-webkit-scroll-forward):
(xwidget-webkit-scroll-backward): Hscroll the window if the
widget is wider than the text area.  (bug#52885)

* src/xwidget.c (xwidget_scroll, xwidget_motion_notify): Apply
clip offsets to coordinates.
2021-12-30 15:05:39 +08:00
Campbell Barton
1e3076e2db Fix bug where bookmark-jump used (point), not (point-at-bol)
This matches changes from e852822f3d,
regression in 7fe88446c3.
* lisp/bookmark.el (bookmark--jump-via): Look at overlays at BOL.
Otherwise the fringe bookmark indication is not deleted with the
bookmark.

Copyright-paperwork-exempt: yes
2021-12-30 09:03:40 +02:00
Stefan Kangas
a3129af331 Merge from origin/emacs-28
06545bc0cc CC Mode: c-update-brace-stack: After struct foo *, do not ...
f11779f01b Improve documentation of 'M-X' and related features

# Conflicts:
#	etc/NEWS
2021-12-30 06:30:43 +01:00
Po Lu
a4893515c2 Work around xwidgets releasing the passive grab on an entry event
* src/xterm.c (handle_one_xevent): Don't send XI_Enter events to
xwidgets if button 1 is pressed.
2021-12-30 11:18:42 +08:00
Po Lu
b88024ad1a Use XRandR 1.5 to generate monitor attributes if available
* src/xfns.c (x_get_monitor_attributes_xrandr): Use XRR 1.5 if
present.
(xlw_monitor_dimensions_at_pos_1): Remove redundant XRR 1.5
code.
(xlw_monitor_dimensions_at_pos): Rely on
`x_get_monitor_attributes_xrandr' to retrieve the workarea
instead.
2021-12-30 10:08:18 +08:00
Po Lu
14f074f95e Translate crossing event mode when sending them to xwidgets
* src/xwidget.c (xi_translate_notify_detail): Use XI constants
instead.
(xwidget_motion_or_crossing): Translate XI entry event mode.
2021-12-30 09:24:30 +08:00
Juri Linkov
fb4f2aa038 * lisp/textmodes/paragraphs.el (repunctuate-sentences-filter): New function.
(repunctuate-sentences): Use it on isearch-filter-predicate
to skip unnecessary matches.  (bug#52769)
2021-12-29 21:10:04 +02:00
Alan Mackenzie
06545bc0cc CC Mode: c-update-brace-stack: After struct foo *, do not expect a brace.
This fixes bug #52796.

* lisp/progmodes/cc-engine.el (c-update-brace-stack): Handle a "*" like a
semicolon, cancelling the expectation of a brace.

* lisp/progmodes/cc-langs.el (c-brace-stack-thing-key): Add a "*" into the
sets of significant characters.
2021-12-29 19:05:11 +00:00
Juri Linkov
3fc8032a1a * lisp/textmodes/sgml-mode.el (sgml-mode): Set skeleton-end-newline to nil.
Prevent skeleton.el from adding a newline to each inserted
skeleton.  Those which do want a newline do that explicitly in
their define-skeleton form.  This is what texinfo-mode does (bug#52864).
2021-12-29 20:52:11 +02:00
Eli Zaretskii
58d06af57d ; * lisp/replace.el (replace-regexp-function): Doc fix. (Bug#52558) 2021-12-29 20:25:02 +02:00
Eli Zaretskii
f6e383c8bb Fix documentation of 'define-keymap'
* doc/lispref/keymaps.texi (Creating Keymaps)
(Changing Key Bindings): Fix typos, improve wording.
2021-12-29 19:45:06 +02:00
Eli Zaretskii
1915c19131 Fix recent changes in 'keymap-lookup' documentation
* doc/lispref/keymaps.texi (Functions for Key Lookup): Improve
wording, correct typos.
2021-12-29 19:30:23 +02:00
Tassilo Horn
7715fb3eff Revert "Revert "Fix fontification in diff--font-lock-prettify""
This reverts commit 3cadd72673.
2021-12-29 18:00:52 +01:00
Tassilo Horn
3cadd72673 Revert "Fix fontification in diff--font-lock-prettify"
This reverts commit 1da392d62d.
2021-12-29 18:00:30 +01:00