1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-01-12 14:30:42 -08:00
Commit graph

41916 commits

Author SHA1 Message Date
Paul Eggert
b0f20651e3 ; Spelling fixes 2019-12-10 20:05:49 -08:00
Paul Eggert
0940296ebe Just use size_t for emacs_limb_t
* src/emacs-module.h.in: Do not include limits.h; no longer needed.
(emacs_limb_t, EMACS_LIMB_MAX): Now size_t and SIZE_MAX.
2019-12-10 13:58:38 -08:00
Alan Third
9546a2a0d6 Fix XBM files on NS (bug#26133)
Reinstate some of the functionality removed in commit
67a878f78f.

* src/nsimage.m (ns_image_from_XBM): Use new reverseBytes argument.
([EmacsImage initFromXBM:width:height:fg:bg:reverseBytes:]): Add
ability to reverse the contents of each byte for use with XBMs, while
still working with fringe bitmaps.
* src/nsterm.h
([EmacsImage initFromXBM:width:height:fg:bg:reverseBytes:]): Modified
function definition.
* src/nsterm.m (ns_draw_fringe_bitmap): Use new reverseBytes argument.
2019-12-10 20:38:21 +00:00
Alan Third
fbf9fea4fd Fix mouse-position on macOS (bug#4892)
* src/nsterm.m (ns_mouse_position): Implement a search for the frame
under the mouse pointer.
2019-12-10 20:38:21 +00:00
Federico Tedin
9042ece787 Simplify call to add-to-history in read_minibuf
* src/minibuf.c (read_minibuf): Avoid restoring the previous buffer,
as this is already done at the end of the function; call
`add-to-history' after that point.
2019-12-10 11:12:23 -05:00
Paul Eggert
d1a791f8ed Spelling fixes 2019-12-09 18:45:18 -08:00
Eli Zaretskii
1161c7d8ec Fix fallout from fixing bug#37782
* src/keyboard.c (read_key_sequence): Modify the fix for
bug#37782 so that it applies only to keyboard keys, not to
other events, such as a new buffer.  (Bug#38132)
2019-12-07 11:28:05 +02:00
Eli Zaretskii
1171fa32ca Fix set-marker when the position is larger than the largest buffer
* src/marker.c (set_marker_internal): Handle the case where
POSITION is beyond PTRDIFF_MAX, which can happen if Emacs was
built --with-wide-int.  Bug uncovered by the recently added
overlay tests.
2019-12-06 15:29:20 +02:00
Eli Zaretskii
5ee43ba0df Another fix for :extend when :inherit is used
* src/xfaces.c (face_inherited_attr): Support also values of
:inherit which are lists.  (Bug#37774)
2019-12-05 19:58:02 +02:00
Federico Tedin
3586fef263 Make HIST arg of read-from-minibuffer work with buffer-local vars
* lisp/simple.el (minibuffer-history-values): New function, should be
used to access the minibuffer input history variable when the
minibuffer might be active.  If the variable is buffer-local, the
previous buffer's value will be used.
(goto-history-element): Use the new function to access the minibuffer
history.
(minibuffer-history-isearch-wrap): Use the new function to access the
minibuffer history.
* src/minibuf.c (read_minibuf): Switch to previous buffer temporarily
before updating history list (Bug#38317).
(read-from-minibuffer): Extend documentation to mention that the
result of using the command will be added to the history list by
default.
* doc/lispref/minibuf.texi (Minibuffer History): Mention the
possibility of using a buffer-local variable as history.
* etc/NEWS: Announce changes.
2019-12-05 10:30:28 +01:00
Paul Eggert
9027084793 Pacify GCC 9.2.1 with recent module changes
* src/emacs-module.c (module_encode): Remove unused decl.
(module_extract_big_integer): Pacify gcc -Wenum-compare.
2019-12-04 16:54:25 -08:00
Philipp Stephani
4472b053c3 Fix small bugs introduced in commit 096be9c454
* src/module-env-27.h:
* src/emacs-module.c (module_make_big_integer): Use 'emacs_limb_t'
instead of 'unsigned long' consistently
2019-12-05 01:14:03 +01:00
Philipp Stephani
0e774d4f35 Use new function encode_string_utf_8 for the module API, too
* src/emacs-module.c (module_encode): Remove.
(module_copy_string_contents): Use encode_string_utf_8.
(syms_of_module): Define symbol 'unicode-string-p'.
2019-12-04 22:27:45 +01:00
Philipp Stephani
d673f871f9 * src/emacs-module.c: Add a few more restrictions for emacs-module.h 2019-12-04 21:37:47 +01:00
Philipp Stephani
096be9c454 Change module interface to no longer use GMP objects directly.
As described in the new comment added to emacs-module.c, using GMP
directly in the module interface has significant downsides: it couples
the module interface directly to the implementation and requires
module authors to link their module against the same GMP library as
Emacs itself, which is often difficult and an unnecessary burden.  By
picking a representation for the magnitude that often matches the one
used by GMP, we can avoid overhead when converting from and to GMP in
most cases.

Loading the test module in test/data/emacs-module and evaluating

(dotimes (_ 10000)
  (mod-test-double (* 2 most-negative-fixnum)))

under Callgrind shows that on my (GNU/Linux) machine Emacs only spends
10% of the CPU time of mod-test-double in mpz_import and mpz_export
combined, even though that function does little else.  (By contrast,
30% is spent in allocate_pseudovector.)

* src/emacs-module.h.in: Don't check EMACS_MODULE_GMP.  Don't include
gmp.h.  Remove emacs_mpz structure.  Instead, define type alias
emacs_limb_t and macro EMACS_LIMB_MAX.

* src/module-env-27.h: Change interface of extract_big_integer and
make_big_integer to take a sign-magnitude representation instead of
mpz_t.

* src/emacs-module.c: Don't check EMACS_MODULE_GMP or
EMACS_MODULE_HAVE_MPZ_T.  Add a comment about the chosen
implementation.
(module_extract_big_integer, module_make_big_integer): Reimplement
without using mpz_t in the interface.

* doc/lispref/internals.texi (Module Values): Adapt function
documentation and example.  Stop mentioning GMP and EMACS_MODULE_GMP.

* test/data/emacs-module/mod-test.c: Don't define EMACS_MODULE_GMP or
EMACS_MODULE_HAVE_MPZ_T.
(memory_full, extract_big_integer, make_big_integer): New helper
functions, identical to example in the Info documentation.
(Fmod_test_nanoseconds, Fmod_test_double): Adapt to new interface.
2019-12-04 21:17:10 +01:00
Tobias Bading
a05bafffdc Fix incorrect GTK menus on HiDPI monitors with scaling factor > 1
This should fix Bug#31223, Bug#28106, Bug#23672 as well as Ubuntu bug
https://bugs.launchpad.net/ubuntu/+source/emacs25/+bug/1695228

Also fixes the formerly unscaled Y value returned by
frame-monitor-workarea (and display-monitor-attributes-list).

For details on why some GTK menus were empty please see thread
https://lists.gnu.org/archive/html/emacs-devel/2019-11/msg01061.html

* src/gtkutil.c (menubar_map_cb, xg_update_frame_menubar): Scale up
req.height so that the menu bar's height is in device pixels as
expected.
(xg_event_is_for_menubar): Scale down rec.x and rec.y so that
gtk_widget_intersect() works as intended.
* src/xfns.c (Fx_display_monitor_attributes_list): Scale work.x and
work.y up to be in device pixels.

Copyright-paperwork-exempt: yes
2019-12-03 08:54:31 +01:00
YAMAMOTO Mitsuharu
16ce6dbef2 Fix typo in populating otf_capability method for HarfBuzz
* src/ftcrfont.c (syms_of_ftcrfont_for_pdumper) [HAVE_HARFBUZZ]:
* src/ftfont.c (syms_of_ftfont_for_pdumper) [HAVE_HARFBUZZ]:
* src/w32uniscribe.c (syms_of_w32uniscribe_for_pdumper) [HAVE_HARFBUZZ]:
* src/xftfont.c (syms_of_xftfont_for_pdumper) [HAVE_HARFBUZZ]: Fix typos.
2019-12-03 16:10:24 +09:00
Juanma Barranquero
abd3dd3a46 * src/lread.c (syms_of_lread): Doc fix. 2019-11-30 10:31:45 +01:00
Alan Third
3e9c82d999 Fix image scaling with masks (bug#38109)
* src/image.c (lookup_image): Move call to image_set_transform after
postprocess_image.
(image_create_x_image_and_pixmap_1): Use new function.
(image_set_transform): Apply the transform to the mask too.
(x_create_xrender_picture): New function.
(Create_Pixmap_From_Bitmap_Data):
(xpm_load): Use new function.
* src/xterm.c (x_composite_image): Use PictOpOver when there is a mask
so the transparency is honoured.
(x_draw_image_foreground_1): Use x_composite_image.
2019-11-29 21:22:26 +00:00
Noam Postavsky
85f586f3ce Stop signaling an error when reading "smart quotes" in symbols
Revert commits from 2018-01-28 "Fix round tripping of read->print for
symbols with strange quotes", and 2017-07-22 "Signal error for symbol
names with strange quotes (Bug#2967)".
* etc/NEWS: Remove corresponding entries.
* src/character.c (confusable_symbol_character_p):
* test/src/lread-tests.el (lread-tests--old-style-backquotes): Remove.
* src/lread.c (read1): Don't signal error on confusable character.
* src/print.c (print_object): Don't escape confusable characters.
2019-11-28 18:03:42 -05:00
Eli Zaretskii
5629af9cbe Allow disabling the BPA part of bidi reordering
* src/xdisp.c (syms_of_xdisp): New variable 'bidi-inhibit-bpa'.
* src/bidi.c (bidi_paired_bracket_type): If 'bidi-inhibit-bpa'
is non-nil, return BIDI_BRACKET_NONE for all characters.

* lisp/frame.el: Add 'bidi-inhibit-bpa' to the list of
variables whose changes require redisplay.  (Bug#38407)
2019-11-28 17:00:33 +02:00
Robert Pluim
b05aa8d742 Support wlan in network-interface-list on pre-Vista Windows
* src/w32.c (network_interface_list): Check for 'Wireless' in
adapter description to support pre-Vista Windows.
2019-11-28 09:41:28 +01:00
Eli Zaretskii
39b3bc0082 ; Fix recent change in w32.c
* src/w32.c (network_interface_list): Correct an embarrassing
typo and cleanup the code.
2019-11-27 18:16:37 +02:00
Mattias Engdegård
4eb7db5d4b Mouse rectangular region selection (bug#38013)
Make it possible to select a rectangular region using the mouse.
The standard binding is C-M-mouse-1.

* lisp/mouse.el (mouse-scroll-subr): Add ADJUST argument.
(mouse-drag-region-rectangle): New.
* lisp/rect.el (rectangle--reset-point-crutches): New.
(rectangle--reset-crutches): Use 'rectangle--reset-point-crutches'.
* src/xdisp.c (remember_mouse_glyph, syms_of_xdisp):
Add 'mouse-fine-grained-tracking'.
* doc/lispref/commands.texi (Motion Events):
Document 'mouse-fine-grained-tracking'.
* doc/emacs/frames.texi (Mouse Commands):
* doc/emacs/killing.texi (Rectangles):
* etc/NEWS: Document rectangular selection with the mouse.
2019-11-27 13:40:29 +01:00
Mattias Engdegård
215f678c72 Fine-grained NS modifier key settings (bug#38296)
For the ns-KEY-modifier and ns-right-KEY-modifier variables, KEY
being 'control', 'command', 'alternate' and 'function', allow
values on the form (:ordinary SYMBOL :function :SYMBOL :mouse SYMBOL),
so that the key can be used for different modifiers (or none) in
different contexts.  This is particularly useful for using the macOS
Option key for extended character entry while still using it as an
Emacs modifier for function keys and mouse clicks.

* src/nsterm.m (mod_of_kind, right_mod, nil_or_none): Helper functions.
(EV_MODIFIERS2): Add KIND argument.
(EV_MODIFIERS): Adapt call to EV_MODIFIERS2.
(ns_get_shifted_character): Use correct event kind for modifiers.
(ns-alternate-modifier, ns-right-alternate-modifier)
(ns-command-modifier, ns-right-command-modifier)
(ns-control-modifier, ns-right-control-modifier)
(ns-function-modifier): Rewrite doc strings for new data format.
(QCordinary, QCfunction, QCmouse): Define symbols.
* lisp/cus-start.el: Conform to new data types.
* doc/emacs/macos.texi (Mac / GNUstep Basics)
(Mac / GNUstep Customization): Improved documentation.
* etc/NEWS: Mention the change.
2019-11-27 11:14:55 +01:00
Juri Linkov
aa89c84e00 message uses minibuffer-message in the active minibuffer (bug#17272 bug#19064)
* doc/lispref/display.texi (Displaying Messages): Explain the
behavior of using minibuffer-message if the minibuffer is active.

* src/editfns.c (Fmessage_in_echo_area): New function with body
copied from Fmessage.
(Fmessage): Call minibuffer-message in the active minibuffer,
otherwise call Fmessage_in_echo_area.
(message-in-echo-area): New variable.

* lisp/isearch.el (isearch--momentary-message, isearch-message):
* lisp/minibuffer.el (minibuffer-message, minibuffer-completion-help):
Use 'message-in-echo-area' instead of 'message' where necessary.

* lisp/autorevert.el (auto-revert-handler):
* lisp/man.el (Man-bgproc-sentinel):
* lisp/subr.el (do-after-load-evaluation):
Revert recent changes that replaced 'message' with 'minibuffer-message'.
This is not needed anymore since 'message' uses 'minibuffer-message'
in the active minibuffer.
2019-11-27 01:43:49 +02:00
Juri Linkov
b3c0fb21bd Allow recursive minibuffers for yes-or-no-p and y-or-n-p (bug#17272 bug#19064)
* lisp/subr.el (y-or-n-p): Let-bind enable-recursive-minibuffers to t.

* src/fns.c (Fyes_or_no_p): Specbind Qenable_recursive_minibuffers to Qt.
2019-11-27 01:18:17 +02:00
Eli Zaretskii
d4515f3cab Support ':extend' in faces defined by list of key/value pairs
* src/xfaces.c: Update and improve commentary at the beginning
of the file.
(face_attr_sym): New static array.
(init_xfaces): Initialize 'face_attr_sym'.
(merge_face_ref): Handle the :extend attribute in faces
specified as lists of key/value pairs.  (Bug#37774)
2019-11-26 19:29:45 +02:00
Eli Zaretskii
094eb04ce5 Fix MS-Windows build with mingw.org's MinGW
mingw.org's MinGW by default targets Windows 9X, so
_WIN32_WINNT is set to a value that bypasses declarations
in system headers we need to compile network_interface_list.
Also, the code needed a workaround for Windows XP, where
some functionality is missing from the GetAdaptersAddresses
API.

* src/w32.c (_WIN32_WINNT): Define to 0x0501, if the value is
lower, temporarily while processing iphlpapi.h.
(address_prefix_match): New helper function.
(network_interface_list): Work around the fact that the
OnLinkPrefixLength member of IP_ADAPTER_UNICAST_ADDRESS is not
available when _WIN32_WINNT < 0x0600.  On Windows XP use
special code that calls address_prefix_match to compute the
network prefix length.
2019-11-26 19:13:12 +02:00
Robert Pluim
650a514e99 Extend network-interface-list to return IPv6 and network info
Bug#38218

* src/process.c (Fnetwork_interface_list): Extend argument list to
allow requesting full network info and/or IPv4/IPv6 info.
(network_interface_list) [HAVE_GETIFADDRS]: Use getifaddrs to retrieve
interface IP addresses.

* src/process.h: Update prototype of network_interface_list.

* src/w32.c (g_b_init_get_adapters_addresses): New init flag.
(globals_of_w32): Initialize it.
(GetAdaptersAddresses_Proc): New function typedef.
(get_adapters_addresses): New wrapper function.
(init_winsock): Load htonl and ntohl.
(sys_htonl, sys_ntohl): New wrapper functions.
(network_interface_list): Implement in terms of
get_adapters_addresses.

* nt/inc/sys/socket.h: Add sys_htonl and sys_ntohl prototypes.

* etc/NEWS: Announce IPv4/IPv6 changes in network-interface-list.

* doc/lispref/processes.texi (Misc Network): Document updated arglist
and return values for network-interface-list.
2019-11-26 08:46:13 +01:00
Eli Zaretskii
19aecd340b Fix face merging when some have :extend non-nil and some are inherited
* src/xfaces.c (face_inherited_attr): New function.
(merge_named_face): Call 'face_inherited_attr' when testing
whether a face that inherits from another fits the filtering
criteria specified by ATTR_FILTER.
(merge_face_vectors): Revert the changes made in this function
for filtering by ATTR_FILTER, and remove that argument as
well.  These tests are now completely done by the caller, see
'merge_named_face'.  (Bug#37774)
2019-11-25 17:52:24 +02:00
Paul Eggert
5a3e96b17c Add eassert check for bad default face
* src/xdisp.c (append_space_for_newline): Add an eassert check
that default_face is not null, by calling FACE_FROM_ID instead of
FACE_FROM_ID_OR_NULL.  Initialize a local only if needed.
2019-11-23 15:48:46 -08:00
Paul Eggert
603a7c8a84 Port gnutls.c to --enable-gcc-warnings --without-gnutls
* src/gnutls.c: Move the "#ifdef HAVE_GNUTLS" earlier, so
that "./configure --enable-gcc-warnings --without-gnutls"
does not complain about macros being defined but never used.
Indent "#" directives more consistently.
2019-11-23 15:48:45 -08:00
Eli Zaretskii
1265e94711 Fix cursor display at EOL before extended face
* src/xdisp.c (extend_face_to_end_of_line): Make sure the
character position of the stretch glyph inserted to extend the
face is zero, as various other parts of the display code rely
on that.  (Bug#38330)
2019-11-23 12:43:49 +02:00
Eli Zaretskii
c26556bd18 Fix and speed up en/decoding of UTF-8 strings
* src/coding.c (get_char_bytes, encode_string_utf_8)
(decode_string_utf_8): Fix commentary.
(encode_string_utf_8): Return the original ASCII string only
if NOCOPY is non-zero.
(decode_string_utf_8): Accept 2 additional arguments STR and
STR_LEN, which allow to pass the input text as a C string.
(make_string_from_utf8): Delegate the job to decode_string_utf_8.
* src/coding.h: Update the prototype of decode_string_utf_8.
* src/json.c (json_encode): Call encode_string_utf_8.
2019-11-23 11:27:43 +02:00
Eli Zaretskii
4f6980ad6b Fix file notifications on macOS
* src/kqueue.c (Fkqueue_add_watch): Don't use encoded file
names in objects and APIs that expect decoded multibyte
strings.  (Bug#38287)
2019-11-21 16:39:15 +02:00
Paul Eggert
9ca40c4e70 * src/sysdep.c: Improve comment wording. 2019-11-20 11:57:17 -08:00
Paul Eggert
0fce8e9391 Make .pdmp file more reproducible
Problem reported by Ulrich Müller
<https://lists.gnu.org/r/emacs-devel/2019-11/msg00757.html>
and diagnosed by Andreas Schwab
<https://lists.gnu.org/r/emacs-devel/2019-11/msg00774.html>.
* src/sysdep.c (maybe_disable_address_randomization):
Disable ASLR if any kind of dumping, instead of merely if
unexec dumping.  Omit first arg for simplicity; all uses changed.
2019-11-19 18:27:10 -08:00
Robert Pluim
b6db2ed1ea Remember the full GTK font description
Remember the full font description instead of just the family so that
size/style/weight settings are preserved.

* gtkutil.c (xg_get_font) [HAVE_GTK3]: Use the pango font
description to set/get the current font (Bug#28901).
2019-11-19 13:36:07 +01:00
Robert Pluim
ed52618e70 ; Fix previous commit 2019-11-18 16:36:21 +01:00
Robert Pluim
899bd78c4f Check for HAVE_GTK3 instead of a specific version
Our minimum GTK3 version is 3.10, the font filter functions appeared
in 3.2.

* gtkutil.c (xg_font_filter) [HAVE_GTK3]: Just check for HAVE_GTK3.
(xg_get_font) [HAVE_GTK3]: Same here.
2019-11-18 15:49:31 +01:00
Lars Ingebrigtsen
1c29ba0340 Handle FC_CHARCELL in xftfont_open
* src/xftfont.c (xftfont_open): FC_CHARCELL is apparently an alias
for FC_DUAL used in some east Asian fonts (bug#35079).  Modelled
after a patch suggested by Kenichi Handa.
2019-11-17 17:32:37 +01:00
Eli Zaretskii
b31f1987eb Support more font weight values on MS-Windows
* src/w32font.c (w32_to_fc_weight): Support a few more weight
values, for compatibility with the GTK font selection widget
(see gtkutil.c:XG_WEIGHT_TO_SYMBOL).  (Bug#24226)
2019-11-17 18:19:18 +02:00
Eli Zaretskii
99271ea8de Fix display of R2L text
* src/xdisp.c (extend_face_to_end_of_line): Fix padding of R2L
screen lines with stretch glyph on the left.  (Bug#38233)
2019-11-16 21:37:41 +02:00
Martin Rudalics
d8f03d8276 Do not report move frame events for tooltip frames (Bug#38213)
* src/w32term.c (w32_read_socket):
* src/xterm.c (handle_one_xevent): Do not report move frame events
for tooltip frames (Bug#38213).
2019-11-16 09:04:53 +01:00
Paul Eggert
5ed66f10ec Port new float-scaling code to Solaris
* src/floatfns.c (double_integer_scale): Simplify, so that the
function works when (FP_ILOGBNAN == INT_MAX && FP_ILOGB0 == INT_MIN),
as on Solaris.
2019-11-15 18:41:35 -08:00
Paul Eggert
e68912ea6b Port hexdigit init to non-GCC + pdumper
The old code assumed that hexdigit initialization (needed by
non-GCC) could be done in syms_of_character, but that is no longer
true with pdumper.  Instead, simplify hexdigit init so that it can
be done statically on all C99 platforms.  Problem discovered on
Solaris 10 sparc + Oracle Solaris Studio 12.6.
* src/character.c (hexdigit): Add 1 to every value; all uses
changed.  This simplifies the initialization so that it can be
done statically on any C99 compiler.  hexdigit is now always const.
(syms_of_character): Omit no-longer-necessary initialization.
* src/character.h (HEXDIGIT_CONST, HEXDIGIT_IS_CONST):
Remove.  All uses removed.
2019-11-15 01:29:52 -08:00
Eli Zaretskii
0114bb964a Improve documentation of 'add-variable-watcher'
* doc/lispref/variables.texi (Watching Variables): Clarify the
documentation of 'add-variable-watcher' and fix markup.

* src/data.c (Fadd_variable_watcher): Clarify the doc string.
(Bug#38205)
2019-11-15 11:16:09 +02:00
Eli Zaretskii
81d3f1b6b1 Fix a recent change in xdisp.c
* src/xdisp.c (tty_handle_tab_bar_click): Revert the last
change which made this work only in the HAVE_NTGUI build.
This function is needed by any build which supports a  mouse
on TTY frames.
2019-11-15 09:54:43 +02:00
Paul Eggert
8b848def9b Handle weird cases like (ceil 0 0.0)
* src/floatfns.c (double_integer_scale): Distinguish Inf from NaN.
(rounding_driver): Handle (ceil 0 0.0) and (ceil 0 1.0e+INF).
* test/src/floatfns-tests.el (special-round): Add tests for
weird cases like this.

Avoid crash with (floor 0 0.0)
* src/floatfns.c (rounding_driver): Signal an arithmetic
error if divisor is 0.0 or -0.0, instead of crashing.
2019-11-14 18:52:48 -08:00