1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-02-06 07:31:13 -08:00
Commit graph

44298 commits

Author SHA1 Message Date
Lars Ingebrigtsen
cf9d85c1ea Add an example to the display-supports-face-attributes-p doc string
* src/xfaces.c (Fdisplay_supports_face_attributes_p): Add an example.
2021-11-06 18:55:34 +01:00
Po Lu
75a264ed02 General improvements to NS port
* src/dispextern.h: Remove some !HAVE_NS conditionals around grab
related code.
* src/frame.c (gui_mouse_grabbed, gui_redo_mouse_highlight): Remove
!HAVE_NS conditionals around code.

* src/nsmenu.m (ns_update_menubar): Prevent recursive calls and enable
shallow updates on GNUstep.
(menuNeedsUpdate): Prevent recursive calls.
(ns_menu_show): Fix mysterious GC-related bug.
(update_frame_tool_bar_1): Work around mysterious toolbar sizing bug
on GNUstep.

* src/nsterm.h (struct ns_output): New field for tracking toolbar
visibility changes.

* src/nsterm.m (frame_set_mouse_pixel_position): Implement for
GNUstep.
(ns_redraw_scroll_bars): Enable for GNUstep.
(ns_clear_frame): Redraw scrollbars on GNUstep.
(ns_update_window_end): New function.
(ns_redisplay_interface): Add ns_update_window_end on GNUstep.
(- keyDown): Remove debug code that doesn't work on GNUstep.
(- mouseDown): Enable grab tracking on NS port.
(- resizeWithOldSuperviewSize): Fix build with NSTRACE.

* src/xdisp.c (note_tab_bar_highlight): Enable some code for NS port.
2021-11-06 12:59:18 +00:00
Po Lu
07715630ad Improve font display on NS port
* src/nsfns.m (Fx_create_frame): Use "fixed" for the default font on
GNUstep.

* src/nsfont.m (LCD_SMOOTHING_MARGIN, ns_escape_name)
(ns_unescape_name, ns_attribute_fvalue)
(STYLE_REF): Remove unused defines and functions.

(struct ns_glyph_layout, enum lgstring_direction).
(enum gs_font_slant, enum gs_font_weight, enum gs_font_width)
(enum gs_specified, struct gs_font_data): New enumerators and
structures.

(ns_font_descs_match_p)
(ns_done_font_data, ns_get_font_data): New functions.
(ns_glyph_metrics): Stop escaping names.

(ns_spec_to_descriptor): Fix font descriptor creation for symbolic
font spec entires.
(ns_descriptor_to_entity): Create entries with the correct symbolic
styles.

(ns_fallback_entity): Fix fallback entity selection.
(ns_findfonts): Use our own font matcher instead of the broken GNUstep
matcher.

(ns_list_family): Remove obsolete comment.
(nsfont_open): Remove obsolete code, comments, and synthItal logic
which doesn't work on GNUstep.

(nsfont_encode_char): Use a type that can fit NSGlyph
(nsfont_draw): Chose correct font, remove obsolete mouse face logic,
obsolete comments, and switch to using glyph-based drawing instead of
character-based drawing.

(ns_font_shape, nsfont_shape): New functions.

(ns_uni_to_glyphs_1): New function.
(ns_uni_to_glyphs): Return glyphs instead of unicode codepoints.

(ns_glyph_metrics): Use NSGlyphs instead of unicode codepoints and fix
left bearing, right bearing, ascent and descent computation.

(struct nsfont_driver): Add shaping capability.

* src/nsterm.h (struct nsfont_info): Use unsigned int for glyph cache.

* src/nsterm.c (ns_focus): Set DPS clipping on GNUstep.

(ns_compute_glyph_string_overhangs): Fix overhang computation by using
xterm code.
(ns_draw_window_cursor): Simplify cursor drawing.
(ns_maybe_dumpglyphs_background): Test for cursor HL and remove
obsolete mouse face logic.
(ns_dumpglyphs_image)
(ns_dumpglyphs_box_or_relief): Rectify for new cursor logic.
(ns_dumpglyphs_stretch): Rectify for new cursor logic and rely on
ns_draw_glyph_string to set focus.
(ns_draw_glyph_string_foreground): Remove mouse face logic.
(ns_draw_glyph_strings): Implement overhangs, remove obsolete
comment, and always focus before dumping glyphs.
(ns_draw_text_decoration): Add condition for DRAW_CURSOR and simplify
color selection.
(ns_define_frame_cursor): Remove nonsensical code (define_frame_cursor
has nothing to do with the text cursor, aka caret).

* src/xdisp.c (draw_glyphs): Enable code for NS port to fix mouse face
cursor display.

* src/macfont.m (get_cgcolor_from_nscolor): New function.
(macfont_draw): Remove obsolete mouse-face code and enable cursor
display.
2021-11-06 12:59:14 +00:00
Kazuhiro Ito
ba278e4a9b Fix display of BW images on MS-Windows
* src/image.c (convert_mono_to_color_image) [HAVE_NTGUI]: Swap the
fore- and the back-ground colors back to their normal conventions.
(Bug#6918)
2021-11-06 13:33:46 +02:00
Eli Zaretskii
26089c8c44 Improve detection of suspicious reordering in source code
* src/bidi.c (bidi_find_first_overridden): Detect suspiciously
reordered EN types as well.

* test/src/xdisp-tests.el
(xdisp-tests--find-directional-overrides-case-1): Rename from
'xdisp-tests--find-directional-overrides'.
(xdisp-tests--find-directional-overrides-case-2): New test.
2021-11-06 12:33:26 +02:00
Eli Zaretskii
0aad846395 Merge from origin/emacs-28
9bdb1d0 ; * etc/PROBLEMS: Describe a crash in xwidgets due to Bubblew...
550887c ; * etc/PROBLEMS: Rearrange and update the section about cras...
c2e3cd6 Clarify "text area of a window" in the documentation
4e7e78d Improve docstring of kmacro-set-format
2021-11-06 11:21:44 +02:00
Eli Zaretskii
c2e3cd6694 Clarify "text area of a window" in the documentation
* src/keyboard.c (Fposn_at_x_y): Clarify that the Y coordinate
includes the header-line and the tab-line.  (Bug#51590)

* doc/lispref/windows.texi (Window Sizes, Splitting Windows)
(Textual Scrolling, Coordinates and Windows): Fix/remove improper
or confusing uses of "text area" of a window.
2021-11-06 08:59:09 +02:00
Daniel Martín
0970684011 Fix GNUstep build (ns_compute_glyph_string_overhangs)
* src/nsterm.m (ns_compute_glyph_string_overhangs): Declare the font
variable so that it's in scope for the GNUstep code.
2021-11-05 23:24:33 +01:00
Eli Zaretskii
c5adec394a Use correct compiler options for building with libwebp
* src/Makefile.in (WEBP_CFLAGS): Define.
(EMACS_CFLAGS): Use it.  (Bug#51611)
2021-11-05 22:20:04 +02:00
Paul Eggert
133026c362 rsvg_handle_get_dimensions is deprecated in 2.52.0
In Bug#44655#32 (2020-11-19) it was reported that
rsvg_handle_get_dimensions was not deprecated.  However, it became
deprecated in librsvg 2.52.0 (2021-09-15), and because of this Emacs
builds with --enable-gcc-warnings fail in Fedora 35 (2025-11-02)
with the diagnostic “‘rsvg_handle_get_dimensions’ is deprecated:
Use 'rsvg_handle_get_intrinsic_size_in_pixels' instead
[-Werror=deprecated-declarations]”.
* src/image.c (rsvg_handle_get_dimensions): Define as a DLL
function only if < librsvg 2.46.0, since it’s not used
in 2.46.0 or later.
(svg_load_image): Use rsvg_handle_get_dimensions only if librsvg <
2.46.0, since it isn’t needed if >= 2.46.0.
2021-11-05 11:53:17 -07:00
Daniel Martín
48af19c1f0 Fix buffer overflow in ns_compute_glyph_string_overhangs
* src/nsterm.m (ns_compute_glyph_string_overhangs): When the first
glyph of a glyph string is a composite glyph, `s->nchars' is 0, so
"s->char2b + s->nchars - 1" dereferenced a position before buffer
`s->char2b'.  Instead, rewrite part of the function to distinguish
between character glyphs and composite glyphs.  For character glyphs,
calculate the font metrics using the `text_extents' function, passing
it the entire glyph string; for composite glyphs, call
`composition_gstring_width'. (Bug#51105)
2021-11-05 03:39:19 +01:00
Eli Zaretskii
b96855310e Better detection of potentially malicious bidi text
* src/bidi.c (bidi_find_first_overridden): Extend to detect more
subtle effects of directional formatting controls, to include
embeddings and isolates.
* src/xdisp.c (Fbidi_find_overridden_directionality): Accept an
additional argument BASE-DIR to specify the base direction of the
paragraphs.

* lisp/international/mule-cmds.el (confusingly-reordered): New
face.
(reorder-starters, reorder-enders): New variables.
(highlight-confusing-reorderings): New command to detect and
highlight suspiciously reordered text.

* test/src/xdisp-tests.el
(xdisp-tests--find-directional-overrides): New test.

* etc/NEWS: Announce the new and improved features.
* etc/tutorials/TUTORIAL.he: Fix embeddings with incorrect
directions.
2021-11-04 20:33:26 +02:00
Eli Zaretskii
f78c819d95 Merge from origin/emacs-28
3e4eb54 ; * etc/PROBLEMS: Minor copyedits of the last change.  (Bug#5...
35bc211 Document a macOS error message when opening Emacs
4df9998 Fix header-line and tab-line when mode-line-compact is set
81915a9 Add manual section about how to avoid regexp problems
a16e66c Clarify build environment
6ab6b2f Clarify build directory structure
9d61620 * src/pdumper.c (dump_do_dump_relocation): Add sanity check.
2021-11-03 20:26:29 +02:00
Eli Zaretskii
324fd9d105 A better fix for bug#51583
* src/w32.c (w32_get_resource): Move from here...
* src/w32fns.c (w32_get_resource): ...to here.
(w32_applytheme): No longer a no-op for Cygwin w32 builds.
(globals_of_w32fns): Do attempt to load dwmapi.dll and uxtheme.dll
in the Cygwin w32 build.
2021-11-03 16:13:32 +02:00
Eli Zaretskii
0091398af9 Fix the Cygwin w32 build broken by adding the dark theme support
* src/w32fns.c (w32_applytheme): Make a no-op for Cygwin w32
builds.
(globals_of_w32fns): Don't attempt to load dwmapi.dll and
uxtheme.dll in the Cygwin w32 build.  (Bug#51583)
2021-11-03 16:02:15 +02:00
Eli Zaretskii
4df9998564 Fix header-line and tab-line when mode-line-compact is set
* src/xdisp.c (display_mode_line): Make 'mode-line-compact' apply
only to mode lines.  (Bug#51558)
2021-11-03 14:57:51 +02:00
YAMAMOTO Mitsuharu
42a7ee5c71 * src/image.c: Fix building with giflib 4. 2021-11-03 16:17:15 +09:00
Andrea Corallo
9d6162053e * src/pdumper.c (dump_do_dump_relocation): Add sanity check. 2021-11-02 21:05:34 +01:00
Lars Ingebrigtsen
686d85c767 Include the major mode name in the `C-h b' output
* lisp/calc/calc-help.el (calc-describe-bindings): Don't add the
name since it's there now.

* src/keymap.c (Fdescribe_buffer_bindings): Include the major mode
name for symmetry with the minor modes (and because it's easy to
forget).
2021-11-01 01:44:01 +01:00
Eli Zaretskii
3ec6520088 Merge from origin/emacs-28
5e05be5 Fix localized display of date and time in the NS port
2021-10-31 18:46:26 +02:00
Eli Zaretskii
a50571950d ; * src/font.c (Ffont_has_char_p): Minor stylistic changes; doc fix. 2021-10-31 18:12:03 +02:00
Lars Ingebrigtsen
b75e79138c Add new function 'font-has-char-p'
* src/font.c (Ffont_has_char_p): New function.
(Ffont_get_glyphs): Link to the new function from the doc string.
2021-10-31 16:58:16 +01:00
Eli Zaretskii
e170a31c57 Avoid signaling errors in lookup-key
* src/keymap.c (Flookup_key): Handle KEY vectors where not all
components are symbols.  (Bug#51527)  Do not merge to master.
2021-10-31 16:20:27 +02:00
Eli Zaretskii
d1523bc78c Avoid signaling errors in lookup-key
* src/keymap.c (Flookup_key): Handle KEY vectors where not all
components are symbols.  (Bug#51527
2021-10-31 16:16:38 +02:00
Daniel Martín
5e05be566b Fix localized display of date and time in the NS port
* src/nsterm.m (ns_init_locale): If not already set, set LC_ALL to the
current locale ID so that dates, currencies, etc. use the settings
configured in the operating system.  (Bug#51321)
2021-10-31 13:33:55 +02:00
Alan Third
90bd80d47b Ensure help echoes only occur once on NS
* src/nsterm.m ([EmacsView windowDidResignKey:]): Reset
any_help_event_p as it is never reset otherwise.
2021-10-31 10:28:19 +00:00
Eli Zaretskii
d9b309cda8 Merge from origin/emacs-28
335a660b4b Fix display glitches with side-by-side windows on TTY frames
4a96f32def Avoid replacing common prefix with ellipsis
2021-10-31 03:58:55 -04:00
Eli Zaretskii
335a660b4b Fix display glitches with side-by-side windows on TTY frames
* src/dispnew.c (adjust_glyph_matrix, prepare_desired_row): Leave
room for the border glyph only if the window does actually have
the right margin.  (Bug#51521)
2021-10-31 09:42:09 +02:00
Stefan Kangas
8227d1273e Fix bug with string values in equal-including-properties
* src/intervals.c (intervals_equal_1): Factor out from
intervals_equal.  Optionally use Fequal for comparison of string
values in property lists.
(intervals_equal): Update for the above.
(compare_string_intervals): Use the above optional Fequal comparison
to fix a bug where 'equal-including-properties' compared strings with
eq, instead of equal.  (Bug#6581)
* test/src/fns-tests.el (fns-tests-equal-including-properties)
(fns-tests-equal-including-properties/string-prop-vals): New tests.

* test/lisp/emacs-lisp/ert-tests.el
(ert-test-equal-including-properties): Remove parts testing
'equal-including-properties'.
* lisp/emacs-lisp/ert.el (ert-equal-including-properties): Add
FIXME that this should be removed.
2021-10-31 03:02:32 +01:00
Stefan Kangas
da67e888d5 Use primes for hash table bucket sizes
* src/dispextern.h (IMAGE_CACHE_BUCKETS_SIZE):
* src/image.c (XPM_COLOR_CACHE_BUCKETS): Use primes for hash table
bucket sizes.
2021-10-30 20:24:25 +02:00
Eli Zaretskii
520e358a3f Minor fixes for previous change
* src/w32fns.c (DWMWA_USE_IMMERSIVE_DARK_MODE_OLD): Define only if
undefined.
(w32_applytheme, w32_createwindow, globals_of_w32fns): Minor
stylistic copyedits.

* etc/NEWS: Reword the entry about using dark mode on MS-Windows.

* doc/emacs/msdos.texi (Windows Misc): Fix wording and markup in
the last change.
2021-10-30 13:22:57 +03:00
Vince Salvino
c79d8fa416 Support system dark mode on Windows 10 version 1809 and higher
* src/w32fns.c (DARK_MODE_APP_NAME)
(DWMWA_USE_IMMERSIVE_DARK_MODE_OLD)
(DWMWA_USE_IMMERSIVE_DARK_MODE): Define.
(w32_applytheme): New function.
(w32_createvscrollbar, w32_createhscrollbar, w32_createwindow):
Call 'w32_applytheme'.
(globals_of_w32fns): Load 'DwmSetWindowAttribute' and
'SetWindowTheme' from their DLLs, and initialize 'w32_darkmode'.
* src/w32.c (w32_get_resource): Accept an additional argument
instead of hard-coding REG_ROOT; callers changed.  (Bug#51404)

* etc/NEWS:
* doc/emacs/msdos.texi (Windows Misc): Document the new feature.
2021-10-30 12:55:35 +03:00
Eli Zaretskii
c3499b8ddc ; Fix a recent change in image.c
* src/image.c (DGifSavedExtensionToGCB): Define only for GIFLIB >= 5.
2021-10-29 22:07:27 +03:00
Stefan Kangas
d9abc45ab5 * src/image.c: Fix building with giflib on MS-Windows. 2021-10-29 20:25:42 +02:00
Glenn Morris
502a00b8b9 Merge from origin/emacs-28
7e2b973d60 * lisp/textmodes/text-mode.el (text-mode-context-menu): Re...
da6d889e90 ; * etc/NEWS: Use active voice for 'repeat-mode', etc.
e3171e7e86 Allow automatic use of color fonts for emoji on macOS

# Conflicts:
#	etc/NEWS
2021-10-29 09:19:51 -07:00
Stefan Kangas
288e8bba81 Prefer giflib 5 macros to magic numbers
* src/image.c (DISPOSAL_UNSPECIFIED, DISPOSE_DO_NOT)
(DISPOSE_BACKGROUND, DISPOSE_PREVIOUS, NO_TRANSPARENT_COLOR)
[GIFLIB_MAJOR < 5]: Macro defined (for old versions of giflib).
(gif_load): Replace magic numbers with giflib 5 macros for disposal
and transparency_color_index.
2021-10-29 17:44:29 +02:00
Stefan Kangas
f9282e1d72 Don't parse GCB block by hand with giflib 5 or later
* src/image.c (gif_load): If GIFLIB_MAJOR > 5, use
DGifSavedExtensionToGCB instead of parsing the Graphic Control
Extension block by hand.
2021-10-29 17:44:23 +02:00
Stefan Kangas
6523df43e6 * src/image.c (gif_load): Minor simplification. 2021-10-29 15:07:29 +02:00
Eli Zaretskii
aaed8d4a81 Fix bootstrapping broken by a recent change
* src/keymap.c (Flookup_key): Avoid crashes during bootstrap when
uni-lowercase.el is not available yet.
2021-10-29 09:23:54 +03:00
Stefan Kangas
2671ea0de8 Be more allowing when looking for menu-bar items
* src/keymap.c (lookup_key_1): Factor out function from
Flookup_key.
(Flookup_key): Be case insensitive, and treat spaces as dashes,
when looking for Qmenu_bar items.  (Bug#50752)

* test/src/keymap-tests.el
(keymap-lookup-key/mixed-case)
(keymap-lookup-key/mixed-case-multibyte)
(keymap-lookup-keymap/with-spaces)
(keymap-lookup-keymap/with-spaces-multibyte)
(keymap-lookup-keymap/with-spaces-multibyte-lang-env): New tests.
2021-10-28 22:21:16 +02:00
Eli Zaretskii
64cc31b5c8 ; * src/keyboard.c (readable_events): Fix a thinko. 2021-10-28 21:19:34 +03:00
Eli Zaretskii
bea843dee1 Avoid assertion violations in 'lookup-key'
* src/keymap.c (Flookup_key): Don't call ASIZE unless KEY is a
vector.  This avoids assertion violations when KEY is a string.
2021-10-28 20:52:41 +03:00
Eli Zaretskii
802e9b1b45 Ignore more events in input-pending-p
* src/keyboard.c (readable_events)
(kbd_buffer_store_buffered_event): Use 'is_ignored_event' to
decide whether the input event is to be ignored.
(is_ignored_event): New function.
(syms_of_keyboard) <input-pending-p-filter-events>: New variable.
Patch from Aaron Jensen <aaronjensen@gmail.com>.
2021-10-28 18:47:41 +03:00
Stefan Kangas
0f8417d597 Be more allowing when looking for menu-bar items
Don't merge to master.  This is a safe-for-release fix for Bug#50752.

* src/keymap.c (lookup_key_1): Factor out function from
Flookup_key.
(Flookup_key): Be case insensitive when looking for Qmenu_bar
items.  (Bug#50752)

* test/src/keymap-tests.el
(keymap-lookup-key/mixed-case)
(keymap-lookup-key/mixed-case-multibyte): New tests.
2021-10-28 12:30:42 +02:00
Stefan Monnier
c22b735f0c (string-pixel-width): Rewrite to avoid side effects
* src/xdisp.c (Fwindow_text_pixel_size): Allow `window` to be a buffer.
* lisp/emacs-lisp/subr-x.el (string-pixel-width): Simplify accordingly.
2021-10-27 14:03:43 -04:00
Robert Pluim
e3171e7e86 Allow automatic use of color fonts for emoji on macOS
* src/macfont.m (macfont_list): Don't exclude color fonts when the
fontspec has an 'emoji' script specification.
2021-10-27 18:56:33 +02:00
Eli Zaretskii
65cd2d90b7 ; * src/atimer.c (init_atimer): Fix a typo in a comment. 2021-10-27 16:14:55 +03:00
Lars Ingebrigtsen
4107549a61 Always start the SIGALRM atimers
* src/atimer.c (init_atimer): Always start the SIGALRM alarms,
even if we're using timerfd (bug#19776).  See long, long
discussion in the bug report for why this is necessary.
2021-10-27 14:58:08 +02:00
Lars Ingebrigtsen
14d835a298 Redisplay after changing to the hourglass mouse pointer
* src/xterm.c (x_show_hourglass): Do a redisplay after changing to
the hourglass pointer -- otherwise it won't be displayed until a
keyboard/mouse event arrives (bug#19776).
2021-10-27 14:56:50 +02:00
Glenn Morris
f2dfe1e780 Merge from origin/emacs-28
817c929eda Doc fix for concat
3eca2ad2a1 * lisp/image-dired.el (image-dired-external-viewer): Suppo...
2021-10-25 09:34:37 -07:00