Commit graph

49000 commits

Author SHA1 Message Date
Eli Zaretskii
7a7d41e07c Avoid infloop with wide images
* src/xdisp.c (produce_image_glyph): Avoid inflooping under
visual-line-mode when wide images are displayed.  (Bug#67533)
2023-12-04 15:10:06 +02:00
Eli Zaretskii
33b6de7ace Improve 'window-text-pixel-size' when buffer includes images
* src/xdisp.c (window_text_pixel_size): Fix computation of Y when
IGNORE_LINE_AT_END is non-nil and there's a 'display' property at
TO.  Improve movement to beginning of screen line at start.  Fix
computation of Y when lines are truncated and a line begins with a
'display' property at TO.
(produce_image_glyph): Don't crop image glyph when word-wrap is in
effect.  (Bug#67533)
2023-12-03 18:29:09 +02:00
Eli Zaretskii
59af2c6b15 Merge from origin/emacs-29
5f882f4ee9 ; Fix doc string punctuation in ruby-ts-mode.el.
546a68925c Fix 'Info-goto-node-web' when NODE is given in various forms
7ff943044e Fix setting cursor when the window's op line has 'line-pr...
7f0bef47dd Drop extra parenthesis in example code in Emacs Lisp Intr...
fbaf113bf3 rust-ts-mode: appropriately fontify doc strings
bd62bdbc68 Fix example code in Emacs Lisp Introduction manual
c7e459132a Fix example in Emacs Lisp Intro manual
a6e9c26c8f ; * doc/emacs/files.texi (Save Commands): Fix last change.
f6a06ed6c5 Elisp manual: Mention 'write-region' for saving the buffer
4774a3abb4 Document, that PROCESS of signal-process can be a string
ab12628408 Fix typescript-ts-mode indentation for switch statements
2023-12-02 10:05:51 -05:00
Eli Zaretskii
7ff943044e Fix setting cursor when the window's op line has 'line-prefix'
* src/xdisp.c (set_cursor_from_row): Skip glyphs that come from a
string if their 'avoid_cursor_p' flag is set.  (Bug#67486)
2023-12-02 14:13:24 +02:00
Eli Zaretskii
3cbe263b08 Fix mode-line-inactive face
* src/xfaces.c (Finternal_set_lisp_face_attribute): Fix validation
of the :style attribute of :box.  Previously, nil for :style was not
accepted, which causes 'mode-line-inactive' face to be rejected.
(Bug#67567)
2023-12-01 14:15:30 +02:00
Eli Zaretskii
dcd755dabc Fix validation of :box face attribute
* src/xfaces.c (Finternal_set_lisp_face_attribute): Fix the logic
of validating the :box attribute.  The previous code would always
allow invalid attributes of :box as long as the invalid attribute
was the last in the list.  (Bug#67404)
2023-11-30 17:17:02 +02:00
Michael Albinus
4774a3abb4 Document, that PROCESS of signal-process can be a string
* doc/lispref/processes.texi (Signals to Processes) [signal-process]:
* src/process.c (Fsignal_process): Document, that PROCESS can be a
string.
2023-11-30 14:37:40 +01:00
Po Lu
a7c16e73c0 * src/pdumper.c (dump_vectorlike): Avert compiler warning. 2023-11-26 08:29:40 +08:00
Mattias Engdegård
278a6e1916 Refactor pseudovector printing
* src/print.c (print_vectorlike): Split into...
(print_bignum, print_bool_vector, print_vectorlike_unreadable):
...these functions.  Exhaustive switch on pseudovector type.
Remove unused return value.
(print_object): Use new functions and simplify.
2023-11-25 18:57:57 +01:00
Mattias Engdegård
f8fe0cf1bb ; * src/pdumper.c (dump_vectorlike): Populate switch fully. 2023-11-25 17:41:16 +01:00
Stefan Monnier
82bba6713f regex-emacs.c (forall_firstchar): Fix regression bug#67226
All zero-width operations need to be taken into account when reaching
`succeed` in `mutually_exclusive_one`!

* src/regex-emacs.c (forall_firstchar_1): Call `f` for all zero-width
matching operators.
(analyze_first_fastmap, analyze_first_null, mutually_exclusive_one):
Adjust accordingly.
2023-11-25 11:03:08 -05:00
Philipp Stephani
102a848d99 ; * src/module-env-30.h: Fix commentary 2023-11-23 13:34:47 +01:00
Po Lu
4775530357 Prevent tab bar from vanishing on Android
* src/androidfns.c (android_change_tab_bar_height): Amend with
code absent when the function was first transcribed.

* src/haikufns.c (haiku_change_tab_bar_height):

* src/nsfns.m (ns_change_tab_bar_height):

* src/pgtkfns.c (pgtk_change_tab_bar_height):

* src/w32fns.c (w32_change_tab_bar_height):

* src/xfns.c (x_change_tab_bar_height): Revise commentary.
2023-11-23 15:05:31 +08:00
Po Lu
3027695ea8 Save more information into Android font names
* src/sfntfont.c (sfntfont_open): Besides just the font file
name, also store the interpreter state, UPEM, charset and
instance number in FONT_FULLNAME_INDEX.
2023-11-21 14:18:04 +08:00
Stefan Monnier
47b497b4da (update_search_regs): Install better fix for bug#67124
The recent fix for the bug in `replace-match-maybe-edit`
was basically a refinement of a previously installed workaround,
whereas the bug was really in `update_search_regs`.

* src/search.c (update_search_regs): Improve handling of `start` positions.
* lisp/replace.el (replace-match-maybe-edit): Remove workaround.
* test/src/search-tests.el (search-test--replace-match-update-data): New test.
2023-11-18 16:34:38 -05:00
Eli Zaretskii
1d0e3030ff Merge from origin/emacs-29
d9e43f2197 Document changes in 'edmacro-parse-keys'
3327f36ad9 Add 2 SQLite extensions to allow-list.
8d2012024d * test/lisp/net/tramp-tests.el (tramp--test-timeout-handl...
2023-11-18 06:07:48 -05:00
Eli Zaretskii
6c367f0ad4 Merge from origin/emacs-29
232a57a3e3 ; * doc/lispref/debugging.texi (Debugging): Add cross-ref...
c65ddf26a3 ; doc/lispref/debugging.texi: Add reference to Profiler d...
6f884d3aed Add 5 docstrings to abbrev.el (bug#67153)
b4d990bd63 ; Clarify wording about arguments in doc strings
c20ae7a30f ; Improve cross-references in description of 'pcase'
42181b65df ; * src/editfns.c (Fline_beginning_position): Doc fix.
5f3309f6b0 ; Improve indexing in ELisp manual
4e406bb420 Fix CBZ file detection in doc-view-mode
2023-11-18 06:07:47 -05:00
Eli Zaretskii
3327f36ad9 Add 2 SQLite extensions to allow-list.
* src/sqlite.c (Fsqlite_load_extension): Add 2 Free Software
extensions to the allow-list.  For the details, see
https://lists.gnu.org/archive/html/emacs-devel/2023-11/msg00234.html.
2023-11-18 11:11:04 +02:00
Eli Zaretskii
ae06e0275d ; Improve documentation of recently added functions
* src/androidfns.c (Fandroid_external_storage_available_p)
(Fandroid_request_storage_access):
* lisp/term/android-win.el (android-after-splash-screen): Improve
and clarify wording of doc strings.
2023-11-18 09:01:30 +02:00
Po Lu
669e754f5b Offer to grant storage permissions if absent
* java/org/gnu/emacs/EmacsService.java (externalStorageAvailable)
(requestStorageAccess23, requestStorageAccess30)
(requestStorageAccess): New functions.

* lisp/startup.el (fancy-startup-tail, normal-splash-screen):
Call android-win functions for inserting the new storage
permission notice.

* lisp/term/android-win.el
(android-display-storage-permission-popup)
(android-after-splash-screen): New functions.

* src/android.c (android_init_emacs_service): Link to new Java
functions.
(android_external_storage_available_p)
(android_request_storage_access): New functions.

* src/android.h: Update prototypes.

* src/androidfns.c (Fandroid_external_storage_available_p)
(Fandroid_request_storage_access): New functions.
(syms_of_androidfns): Register new subrs.
2023-11-18 14:15:55 +08:00
Eli Zaretskii
42181b65df ; * src/editfns.c (Fline_beginning_position): Doc fix. 2023-11-16 11:30:48 +02:00
Eli Zaretskii
6733f45383 Fix scrolling when continuation line starts with a display string
* src/xdisp.c (start_display): Compute continuation_lines_width
for starting display in strings and images as well.  (Bug#67201)
2023-11-16 11:22:58 +02:00
Po Lu
a9a8d5e959 Register ``pinch to zoom'' touch screen gestures
* doc/emacs/input.texi (Touchscreens): Address pinch gestures.

* doc/lispref/commands.texi (Touchscreen Events): Address touch
screen pinch events and the process by which they are produced.

* java/org/gnu/emacs/EmacsWindow.java (figureChange)
<ACTION_POINTER_DOWN>: Supply pointer index to getX and getY,
correcting a mistake where the first touch point's coordinate
was saved here in lieu of the pointer that was pressed's.

* lisp/touch-screen.el (touch-screen-current-tool): Revise doc
string.
(touch-screen-aux-tool): New variable.
(touch-screen-scroll-point-to-y, touch-screen-pinch): New
functions.
(global-map): Bind [touchscreen-pinch] to touch-screen-pinch.
(touch-screen-handle-point-update): Revise doc string; set new
tenth field of t-s-c-t to POINT relative to its window, without
regard to whether an event has been sent.
(touch-screen-distance, touch-screen-centrum): New functions.
(touch-screen-handle-aux-point-update): New function; generate
and send touchscreen-pinch if need be.
(touch-screen-handle-point-up): If an ancillary tool exists,
transfer the information there into touch-screen-current-tool
and clear t-s-a-t.
(touch-screen-handle-touch): Call t-s-a-p-u as is proper; set
t-s-a-t if a touchscreen-down event arrives and t-s-c-t is set.

* src/androidterm.c (handle_one_android_event): Properly save
the event's X and Y when a new touch point is registered.
2023-11-15 21:07:14 +08:00
Po Lu
e56e9c1954 Adjust dump file location under Android
* java/org/gnu/emacs/EmacsApplication.java (EmacsApplication)
<apkFileName>: New field.
(getApkFile): Move from EmacsService.java.
(findDumpFile): If the dump file is older than the APK, delete
it irrespective of whether the checksums agree.
(onCreate): Initialize apkFileName.

* java/org/gnu/emacs/EmacsService.java (onCreate): Use
EmacsApplication.apkFileName.

* src/android.c (android_on_low_memory): Correct arguments to
Fclear_image_cache.

* src/image.c (Fclear_image_cache): Check that animation_cache
is always a cons.
2023-11-12 11:44:58 +08:00
Eli Zaretskii
c9d7740574 Merge from origin/emacs-29
ce0ebb91f2 Improve documentation of read syntax and printed represen...
81f84b00a5 ; * doc/lispref/modes.texi (Other Font Lock Variables): A...
434592b074 ; * lisp/dired.el (dired-use-ls-dired): Doc fix (bug#67053).
fe000236cf Improve documentation of signaling errors in batch mode
103ca678ac Fix treesit-simple-indent-presets docstring (bug#67007)
b7871cefe7 Prevent an infinite loop in todo-mode (bug#66994)
fa8cc4c9ee Fix cmake-ts-mode indentation (Bug#66845)
5bdc61bc0e Update to Org 9.6.11
18e2de1bec ; * lisp/bindings.el (right-word, left-word): Doc fix.
4f0fc3bfda ; Document core input events problems with XInput2
2023-11-11 05:31:52 -05:00
Mattias Engdegård
7f3ee93e0c Use BASE_EQ instead of EQ for some uninterned symbols
* src/editfns.c (labeled_restrictions_pop, Fwiden):
* src/eval.c (lexbound_p, Fbacktrace__locals):
* src/fileio.c (Finsert_file_contents):
* src/fns.c (Fyes_or_no_p):
* src/keyboard.c (command_loop_1):
Use BASE_EQ for comparing with Qoutermost_restriction,
Qinternal_interpreter_environment and Qunbound as uninterned
symbols won't be EQ to a symbol-with-pos.
2023-11-10 16:57:15 +01:00
Po Lu
5324723c2b Clear image caches in reaction to system VM warnings
* java/org/gnu/emacs/EmacsNative.java (onLowMemory):

* java/org/gnu/emacs/EmacsService.java (onLowMemory): New
function.

* src/android.c (android_on_low_memory, onLowMemory): New
functions called when a VM caution is registered.  Clear
the image cache and run garbage collection.
2023-11-10 14:58:16 +08:00
Andrea Corallo
c559f4e368 comp: Add comp-common.el
* lisp/emacs-lisp/comp-common.el: New file.
(comp-common): New group.
(native-comp-verbose, native-comp-never-optimize-functions)
(native-comp-async-env-modifier-form, comp-limple-calls)
(comp-limple-sets, comp-limple-assignments)
(comp-limple-branches, comp-limple-ops)
(comp-limple-lock-keywords, comp-log-buffer-name, comp-log)
(native-comp-limple-mode, comp-log-to-buffer)
(comp-ensure-native-compiler, comp-trampoline-filename)
(comp-eln-load-path-eff): Move here
* lisp/emacs-lisp/comp-run.el (comp-common): Require.
* lisp/emacs-lisp/comp.el (comp-common): Require.
* admin/MAINTAINERS: Add comp-common.el
* lisp/Makefile.in (COMPILE_FIRST): Likewise.
* src/Makefile.in (elnlisp): Likewise.
2023-11-09 12:34:26 +01:00
Andrea Corallo
e6a955d242 comp: split code in comp-run.el
* lisp/emacs-lisp/comp-run.el : New file.
(comp-run)
(native-comp-jit-compilation-deny-list)
(native-comp-async-jobs-number)
(native-comp-async-report-warnings-errors)
(native-comp-always-compile)
(native-comp-async-cu-done-functions)
(native-comp-async-all-done-hook)
(native-comp-async-env-modifier-form)
(native-comp-async-query-on-exit, native-comp-verbose)
(comp-log-buffer-name, comp-async-buffer-name, comp-no-spawn)
(comp-async-compilations, native-comp-limple-mode)
(comp-ensure-native-compiler, native-compile-async-skip-p)
(comp-files-queue, comp-async-compilations, comp-async-runnings)
(comp-num-cpus, comp-effective-async-max-jobs)
(comp-last-scanned-async-output)
(comp-accept-and-process-async-output, comp-valid-source-re)
(comp-run-async-workers, native--compile-async)
(native-compile-async): Move these definitions here.
* lisp/Makefile.in (COMPILE_FIRST): Update.
* src/Makefile.in (elnlisp): Likewise.
* admin/MAINTAINERS: Likewise.
2023-11-09 11:06:06 +01:00
Eli Zaretskii
fe000236cf Improve documentation of signaling errors in batch mode
* doc/lispref/control.texi (Signaling Errors)
(Processing of Errors):
* doc/lispref/os.texi (Batch Mode):
* doc/lispref/debugging.texi (Invoking the Debugger):
* lisp/emacs-lisp/debug.el (debug):
* src/eval.c (Fsignal):
* lisp/subr.el (error): Document more prominently that signaling
an unhandled error in batch mode kills Emacs.  Better
documentation of backtrace in batch mode.
2023-11-09 10:33:28 +02:00
Po Lu
21f3670526 Guarantee files are auto-saved when Emacs is terminated by Android
* java/org/gnu/emacs/EmacsNative.java (shutDownEmacs):

* java/org/gnu/emacs/EmacsService.java (onDestroy): New
function.  When invoked, call shut_down_emacs and await its
completion.

* src/android.c (android_shut_down_emacs, shutDownEmacs): New
functions.
2023-11-09 10:12:24 +08:00
Po Lu
c6c5bba06f Implement more Android text editing controls
* lisp/term/android-win.el (android-deactivate-mark-command):
New command.
(select-all, start-selecting-text, stop-selecting-text): Arrange
for commands manipulating the region to be executed when these
keys are registered.

* src/android.c (android_get_keysym_name): Return the keysym
name of each of the new keysyms introduced.

* src/androidterm.c (performContextMenuAction): Save special
keysyms into key events for the selectAll, startSelectingText
and stopSelectingText actions.
2023-11-05 10:42:01 +08:00
Eli Zaretskii
5ee66620fd Remove unnecessary assertion added 2 days ago
* src/xdisp.c (get_glyph_face_and_encoding): Remove unnecessary
assertion.  It triggers, for no good reason, when running the
recipe of bug#66922 and typing C-p in the *Warnings* buffer after
the recipe finishes, because the glyph passed to this function is
a STRETCH_GLYPH, not a CHAR_GLYPH.
2023-11-04 09:33:33 +02:00
Po Lu
9867be2f6c Round underline position and thickness
* src/sfntfont.c (sfntfont_open): Round underline thickness
instead of truncating it, as is proper according to several
inquiries.
2023-11-03 15:20:04 +08:00
Po Lu
e06e61f456 Avoid moving point while analyzing text conversion
* lisp/simple.el (analyze-text-conversion): If neither calling
p-s-i-h nor calling p-t-c-h yields a change to point, return it
to its location before analyze-text-conversion was called.

* src/keyboard.c (kbd_buffer_get_event): See that text
conversion events are uniformly delivered prior to keyboard
events arriving in unison.
2023-11-03 11:34:40 +08:00
Po Lu
dbcb4cedd0 Properly compute overhangs for overstruck text
* src/xdisp.c (get_glyph_face_and_encoding): Account for
non-character glyphs by not attempting to translate them to
characters.
(gui_get_glyph_overhangs, gui_produce_glyphs): If the face is
overstruck, increase the right side bearing by 1 pixel.
2023-11-02 13:18:37 +08:00
Mattias Engdegård
8160485953 Non-recursive marking of buffer-local variables
* src/alloc.c (mark_localized_symbol): Inline into...
(process_mark_stack): ...this code and do don't use recursion.
2023-11-01 16:07:20 +01:00
Po Lu
a61cc138ed Prevent errors when generating events above menu bar windows
* src/keyboard.c (make_lispy_position): Pass false to w_f_c,
for the subsequent code is not prepared to encounter menu bar
windows.
2023-11-01 11:15:48 +08:00
Po Lu
090ac50d79 Don't round underline metrics
* src/sfntfont.c (sfntfont_open): Don't round underline position
or thickness, much as the other font drivers don't either.
2023-10-31 21:04:11 +08:00
Po Lu
d3b0162b80 Extract underline positions from PostScript metrics tables
* src/sfntfont.c (struct sfnt_font_desc): Introduce fields where
the font's underline position is recorded.
(sfnt_enum_font_1): Compute the underline position with
information in the post table whenever it exists.
(sfntfont_open): Scale the recorded position and save it into
the font object.
2023-10-31 18:42:15 +08:00
Po Lu
ecc8870981 Ascertain font spacing from post table if present
* src/sfnt.c (sfnt_table_names): Introduce name of post table.
(sfnt_read_post_table): New function.
(main): New tests.

* src/sfnt.h (struct sfnt_post_table): New struct.

* src/sfntfont.c (sfnt_enum_font_1): Read post table, and set
spacing from its is_fixed_pitch value.
(sfntfont_list_1): Compare spacing between both fonts if
supplied in the font spec.
(sfntfont_open): Set FONT_FILE_INDEX as well as
FONT_FULLNAME_INDEX.
2023-10-30 15:33:27 +08:00
Spencer Baugh
5c8fc0b059 Add 'case-symbols-as-words' to configure symbol case behavior
In some programming languages and styles, a symbol (or every
symbol in a sequence of symbols) might be capitalized, but the
individual words making up the symbol should never be capitalized.

For example, in OCaml, type names Look_like_this and variable names
look_like_this, but it is basically never correct for something to
Look_Like_This.  And one might have "aa_bb cc_dd ee_ff" or "Aa_bb
Cc_dd Ee_ff", but never "Aa_Bb Cc_Dd Ee_Ff".

To support this, the new variable 'case-symbols-as-words' causes
symbol constituents to be treated as part of words only for case
operations.

* src/casefiddle.c (case_ch_is_word): New function.
(case_character_impl, case_character): Use 'case_ch_is_word'.
(syms_of_casefiddle): Define 'case-symbols-as-words'.
* src/search.c (Freplace_match): Use 'case-symbols-as-words'
when calculating case pattern.
* test/src/casefiddle-tests.el (casefiddle-tests--check-syms)
(casefiddle-case-symbols-as-words): Test 'case-symbols-as-words'.
* etc/NEWS: Announce 'case-symbols-as-words'.
* doc/lispref/strings.texi (Case Conversion): Document
'case-symbols-as-words'.
(Bug#66614)
2023-10-29 13:32:43 +02:00
Manuel Giraud
27ccf2230b Set non-text mouse cursor on menu bar
* src/xdisp.c (note_mouse_highlight): Set non-text mouse cursor on
menu bar.
2023-10-29 18:18:52 +08:00
Po Lu
59a3edc355 Avert a crash and file descriptor leak in yank-media
* java/org/gnu/emacs/EmacsNative.java (close): New declaration.

* java/org/gnu/emacs/EmacsSdk11Clipboard.java
(getClipboardData): Catch SecurityException and guarantee file
descriptors are closed even if exceptions arise.

* src/android.c (dup): Export another function.
2023-10-29 12:59:45 +08:00
Eli Zaretskii
e81e625ab8 Merge from origin/emacs-29
aa253c533d ; Fix broken links to gmane.org
cc3e436c82 Change news.gmane.org to news.gmane.io
297fe945c5 Fix minor defcustom issues in Gnus (Bug#66715)
3beb5f5e24 ; * doc/misc/gnus.texi: Fix unmatched quote in gnus doc. ...
85d08d5788 Minor connection-local variables fixes
79d8328ca4 Make Dired honor `insert-directory-program´ with globs
43127294e1 Fix typo in url-privacy-level :type
380f8574ef * lisp/vc/log-view.el (log-view-mode-menu): Quote derived...
2023-10-28 05:06:21 -04:00
Manuel Giraud
6b229ffc6f Support for menu bar in window_from_coordinates
* src/window.h:
* src/window.c (window_from_coordinates): In the no toolkit
build, add support for the menu bar window.  Add a new
'menu_bar_p' argument so the function's signature has changed.
All callers changed.

* src/androidterm.c (handle_one_android_event):
* src/haikuterm.c (haiku_read_socket):
* src/keyboard.c (make_lispy_position):
* src/nsterm.m ([EmacsView mouseDown:]):
* src/pgtkterm.c (button_event):
* src/w32term.c (w32_read_socket):
* src/xdisp.c (note_mouse_highlight):
* src/xterm.c (handle_one_xevent): Set menu_bar_p to true.
2023-10-28 13:28:07 +08:00
Po Lu
f0d42c5e47 Minor adjustments to Android drag and drop and content URIs
* java/org/gnu/emacs/EmacsWindow.java (EmacsWindow)
<dndXPosition, dndYPosition>: New fields initialized to -1.
(onDragEvent): Remember the position of the previous event to
avoid sending duplicates.

* src/androidvfs.c (EMACS_PATH_MAX): New define.
(android_saf_tree_rename, android_saf_tree_opendir)
(android_name_file, android_fstatat, android_faccessat)
(android_fchmodat, android_readlinkat): Use EMACS_PATH_MAX where
SAF file names might be encountered.
2023-10-28 10:19:41 +08:00
Eli Zaretskii
c59c8db98a ; Another fix for profiler.c
* src/profiler.c: Reshuffle functions and declarations to compile
also when PROFILER_CPU_SUPPORT is not defined.  (Bug#66774)
2023-10-27 20:47:01 +03:00
Eli Zaretskii
ee848be84c Fix compilation error in profiler.c
* src/profiler.c (memory): Declare outside of the
PROFILER_CPU_SUPPORT conditional.  (Bug#66774)
2023-10-27 18:26:27 +03:00
Eli Zaretskii
d81c59612f ; Fix style of error messages in pdumper.c
* src/pdumper.c (dump_buffer, dump_do_dump_relocation)
(dump_native_comp_unit): Make the style of error messages more
consistent.
2023-10-27 15:37:34 +03:00