Commit graph

39511 commits

Author SHA1 Message Date
Alan Third
0d676deba4 Check if instancetype supported in ObjC
* configure.ac: Add check for instancetype.
* src/nsterm.h [!NATIVE_OBJC_INSTANCETYPE]: Define instancetype.
2017-05-27 00:46:23 +01:00
Paul Eggert
4681fbac90 * src/inotify.c: Add FIXME comments. 2017-05-26 10:53:35 -07:00
Andreas Politz
d02e8ab6d6 Fix Bug#26973
* src/inotify.c (INOTIFY_DEFAULT_MASK): Removing ACCESS, OPEN
and CLOSE events on order do let other processes also reading
from their descriptors.  (Bug#26973).
2017-05-26 16:42:43 +02:00
Alan Third
2ea4b84f5e Fix NS tooltips showing in the wrong place (bug#27053)
* src/nsfns.m (compute_tip_xy): Get current mouse position instead of
last recorded position.
2017-05-25 21:50:49 +01:00
Paul Eggert
d7284da858 Port ATTRIBUTE_MAY_ALIAS to recent icc
* src/conf_post.h (ATTRIBUTE_MAY_ALIAS) [__ICC]:
Define to empty.  Otherwise, icc (ICC) 17.0.4 20170411 says
“warning #2621: attribute "__may_alias__" does not apply here”
for constructs like ‘struct sockaddr *sa = (whatever);
struct sockaddr_in __attribute__ ((__may_alias__)) *sin
= (struct sockaddr_in *) sa;’.
2017-05-25 00:25:09 -07:00
Alan Third
ad8b60ee74 Raise version of macOS we define instancetype for (bug#27059)
* src/nsterm.m: Increase supported version number.
2017-05-24 20:18:52 +01:00
Alan Third
d61d443fc0 Define new types on macOS 10.6 (bug#27041)
* src/nsterm.h: Enable instancetype typedef for older macOS, and use
correct NSUInteger instead of int.
2017-05-24 19:56:23 +01:00
Stefan Monnier
7dfe682ee7 * src/fns.c (sxhash): Fix records hashing (bug#27057, bug#26639)
(sxhash_vector): Make it work on pseudo vectors as well.
(sxhash): Treat records like vectors.
2017-05-24 11:55:13 -04:00
Alan Third
4a485410ce Fix GNUstep build
* src/nsterm.h [NS_IMPL_GNUSTEP]: Add typedefs for Cocoa-only types.
(NSWindowStyleMaskUtilityWindow): #define to NSUtilityWindowMask in
GNUstep and old versions of macOS.
* src/nsfns.m (ns-set-mouse-absolute-pixel-position): Function only
works in cocoa, not GNUstep.
2017-05-23 02:45:13 -07:00
Eli Zaretskii
bf96464e2f Fix current-line hscrolling in buffers with header-line
* src/xdisp.c (display_line): When testing the glyph row's
vertical position against the cursor position, account for header
line, if any.  (Bug#27014)
2017-05-22 21:15:17 +03:00
Philipp Stephani
b69f6a779a Improve module function terminology
Module functions were previously called "function environments" when
the functions created by module_make_functions were lambdas.  Now we
can adapt the terminology and rename "function environments" to
"module functions" everywhere.  This also removes the name clash
between "function environments" and "module environments."

* src/emacs-module.c (module_make_function): Adapt comment to reality;
stop using "function environment" terminology.
(funcall_module): Stop using "function environment" terminology.
2017-05-21 22:33:50 +02:00
Philipp Stephani
6f1f88224c Avoid uninitialized read
* src/nsterm.m (ns_read_socket): Don't read uninitialized variable 'nevents'.
2017-05-21 21:50:36 +02:00
Philipp Stephani
fa389f5b54 Fix call of registerServicesMenuSendTypes
* src/nsterm.m (initFrameFromEmacs:): nil is not allowed for
returnTypes; pass an empty array instead.
2017-05-21 21:50:30 +02:00
Philipp Stephani
6dd94bcc6b Clean up code around 'ns-list-services'
* src/nsfns.m (Fns_list_services): Remove unreachable code.  In this
branch NS_IMPL_COCOA cannot be defined.
(interpret_services_menu): Define only if called to avoid compiler
warnings about unused static functions.
2017-05-21 21:50:25 +02:00
Philipp Stephani
2d8215ae6d Remove unused automatic variables
* nsterm.m (ns_read_socket):
* macfont.m (macfont_open): Remove unused automatic variables.
2017-05-21 21:50:18 +02:00
Philipp Stephani
74d43044d3 Nextstep: Replace deprecated enumerators
* src/nsmenu.m (initWithContentRect:styleMask:backing:defer:): Replace
deprecated enumerator.
2017-05-21 21:50:10 +02:00
Philipp Stephani
762be778fc Nextstep: remove some deprecated method calls
* src/nsterm.m (mouseDown:):
* src/nsmenu.m (runMenuAt:forFrame:keymaps:): Remove call to
deprecated method.  The return value is always nil.
* src/macfont.m (mac_font_shape_1): Replace call to deprecated method.
2017-05-21 21:50:04 +02:00
Philipp Stephani
f04e3d6e20 Remove trailing semicolons in method definitions
These semicolons are ignored and cause compiler warnings.

* src/nsimage.m (setPixelAtX:Y:toRed:green:blue:alpha:):
* src/nsterm.m (init, updateFrameSize:):
(setFrame:): Remove trailing semicolon.
2017-05-21 21:49:58 +02:00
Philipp Stephani
add0b69445 Remove calls to deprecated setUsesScreenFonts
* src/macfont.m (mac_screen_font_get_metrics): Don't call setUsesScreenFonts.
(mac_font_shape_1): Remove screen_font_p parameter.
(mac_screen_font_shape): Remove screen_font_p argument.
2017-05-21 21:49:52 +02:00
Philipp Stephani
cc6db8b6aa Make a function static that isn't used outside this file
* src/kqueue.c (kqueue_directory_listing): Make static.
2017-05-21 21:49:44 +02:00
Philipp Stephani
0446a5a040 Use NSCharacterCollection instead of CTCharacterCollection
This should not cause behavior changes, but fixes a compiler warning
due to implicit conversions between the enums.

* src/macfont.m (macfont_cache, macfont_lookup_cache)
(macfont_get_glyph_for_cid, macfont_get_uvs_table)
(macfont_variation_glyphs): Use NSCharacterCollection.
2017-05-21 21:49:38 +02:00
Philipp Stephani
d79a4ea632 Remove unused function print_regions 2017-05-21 21:49:25 +02:00
Philipp Stephani
cf68bb4aed Declare Nextstep unexec functions in lisp.h
This removes compiler warnings about missing prototypes on macOS.
2017-05-21 21:49:17 +02:00
Philipp Stephani
84b28ec759 Nextstep: Use instancetype explicit return type
This removes compiler warnings on macOS and improves type safety.

* nsterm.m (initFrameFromEmacs:):
(menuDown:):
(toolbarClicked:):
(toggleToolbar:):
(setMiniwindowImage:):
(initFrame🪟):
(condemn, reprieve, setPosition:portion:whole:):
(repeatScroll:):
* nsmenu.m (initWithTitle:):
(initWithTitle:frame:):
(initForView:withIdentifier:):
(init, initWithContentRect:styleMask:backing:defer:):
(initFromContents:isQuestion:):
* nsimage.m (allocInitFromFile:):
(initFromXBM:width:height:fg:bg:):
(setXBMColor:):
(initForXPMWithDepth:width:height:): Use instancetype as return
type instead of implicit id.
2017-05-21 21:49:09 +02:00
Alan Mackenzie
b0b02ca7f3 Enhance mode-line percentage offset facility, with "%o" and "%q"
"%o" will display the percentage "travel" of the window through the buffer.
"%q" will display a combination of the percentage offsets of the top and
bottom of the window.  The new user option mode-line-percent-position will
facilitate selecting a setting for this part of the mode line.

* lisp/bindings.el (mode-line-percent-position): New customizable user option.
(mode-line-position): Use mode-line-percent-position in place of "%p", etc.

* src/xdisp.c (decode_mode_spec): Add handlers for "%o" and "%q".

* doc/lispref/modes.texi (Mode Line Variables): Document
mode-line-percent-position.
(%-Constructs): Document %o and %q.

* etc/NEWS: Add an entry for these new facilities.
2017-05-21 10:16:09 +00:00
Paul Eggert
9759b249e9 Work around macOS bug in create_process, too
* src/process.c (create_process) [DARWIN_OS]:
Reset SIGCHLD after vfork here, too.
2017-05-21 02:00:29 -07:00
Paul Eggert
cb6d669744 Work around macOS bug with vforked child
* src/callproc.c (call_process) [DARWIN_OS]:
Include workaround for apparent macOS bug.
2017-05-21 01:47:31 -07:00
Paul Eggert
97c7a61d90 Pacify --enable-gcc-warnings without modules
* src/print.c (print_vectorlike): New function, taken from
part of print_object.  This one is indented properly, and
pacifies --enable-gcc-warnings by using a default case
instead of listing all the enum values, sometimes
incompletely.
(print_object): Use it.
2017-05-21 01:47:31 -07:00
Paul Eggert
b35293dfd0 Remove DARWIN_OS_CASE_SENSITIVE_FIXME code
It does not appear to be needed (Bug#24441).
* etc/PROBLEMS: Remove DARWIN_OS_CASE_SENSITIVE_FIXME stuff.
* src/fileio.c (file_name_case_insensitive_p):
Remove DARWIN_OS_CASE_SENSITIVE_FIXME code.
2017-05-20 22:56:36 -07:00
Paul Eggert
075bd64609 Narrow DARWIN_OS_CASE_SENSITIVE_FIXME to 1 choice
* etc/PROBLEMS: Document this (Bug#24441).
* src/fileio.c (file_name_case_insensitive_p): Prefer pathconf
with _PC_CASE_SENSITIVE, if it works, to
DARWIN_OS_CASE_SENSITIVE_FIXME code.
Support just one method for DARWIN_OS_CASE_SENSITIVE_FIXME,
which matches the Apple documentation more precisely.
2017-05-20 22:56:36 -07:00
Charles A. Roelli
7e5a8cdceb Fix macOS mouse movement
* lisp/frame.el (ns-set-mouse-absolute-pixel-position): New
function (Lisp).
(set-mouse-absolute-pixel-position): Change it to call
`ns-set-mouse-absolute-pixel-position' on macOS.
* src/nsfns.m (Fns_set_mouse_absolute_pixel_position): New
function.
* src/nsterm.h (NS_PARENT_WINDOW_TOP_POS): Use the primary
screen's height as a base for calculating global coordinates.
* src/nsterm.m (frame_set_mouse_pixel_position): Fix it in macOS.
* test/lisp/mouse-tests.el (bug26816-mouse-frame-movement): Test
movement of mouse relative to frame.
2017-05-21 00:09:41 +01:00
Alan Third
c969b39971 Show tooltip on correct screen (bug#26905)
* src/nsfns.m (compute_tip_xy): Find the correct screen for the
tooltip and constrain it to that screen.
2017-05-21 00:09:41 +01:00
Paul Eggert
848c90e3d4 Minor fixes for arity ranges in emacs modules
* src/emacs-module.c (module_make_function):
Check that arities fit into fixnums, for func-arity’s benefit.
(funcall_module): Avoid unnecessary conversion to EMACS_INT.
(module_function_arity): Allow arities greater than SHRT_MAX.
2017-05-20 13:43:56 -07:00
Philipp Stephani
31fded0370 Reimplement module functions
Instead of a lambda, create a new type containing all data required to
call the function, and support it in the evaluator.  Because this type
now also needs to store the function documentation, it is too big for
Lisp_Misc; use a pseudovector instead.  That also has the nice benefit
that we don't have to add special support to the garbage collector.

Since the new type is user-visible, give it a predicate.

Now we can easily support 'help-function-args' and 'func-arity'; add
unit tests for these.

* src/lisp.h (allocate_module_function, MODULE_FUNCTIONP)
(XMODULE_FUNCTION): New pseudovector type 'module function'.

* src/eval.c (FUNCTIONP): Also treat module functions as functions.
(funcall_lambda, Ffuncall, eval_sub): Add support for calling module
functions.
(Ffunc_arity): Add support for detecting the arity of module
functions.

* src/emacs-module.c (module_make_function): Adapt to new structure.
Return module function object directly instead of wrapping it in a
lambda; remove FIXME.
(funcall_module): New function to call module functions.  Replaces
`internal--module-call' and is called directly from eval.c.
(syms_of_module): Remove internal helper function, which is no longer
needed.
(module_function_arity): New helper function.

* src/data.c (Ftype_of): Adapt to new implementation.
(Fmodule_function_p, syms_of_data): New user-visible function.  Now
that module functions are first-class objects, they deserve a
predicate.  Define it even if not compiled with --enable-modules so
that Lisp code doesn't have to check for the function's existence.

* src/doc.c (Fdocumentation): Support module functions.

* src/print.c (print_object): Adapt to new implementation.

* src/alloc.c (mark_object): Specialized garbage collector support is
no longer needed.

* lisp/help.el (help-function-arglist): Support module functions.
While there, simplify the arity calculation by using `func-arity',
which does the right thing for all kinds of functions.

* test/data/emacs-module/mod-test.c: Amend docstring so we can test
the argument list.

* test/src/emacs-module-tests.el (mod-test-sum-docstring): Adapt to
new docstring.
(mod-test-non-local-exit-signal-test): Because `internal--module-call'
is gone, the backtrace has changed and no longer leaks the
implementation.
(module--func-arity): New test for `func-arity'.
(module--help-function-arglist): New test for `help-function-arglist'.
2017-05-20 15:32:52 +02:00
Eli Zaretskii
6c7bf039e9 Avoid crashes in GC due to unescaped characters warning
* src/lread.c (load_warn_unescaped_character_literals): Don't cons
Lisp objects from stack-based variables.  (Bug#26961)
2017-05-20 14:53:06 +03:00
Eli Zaretskii
1cbbecee66 Fix automatic hscrolling of only the current line
* src/xdisp.c (display_line): When hscrolling only the current
line, increment iterator's first_visible_x and last_visible_x
values to account for the hscroll.  This propagates the hscroll
effect on the iterator geometry all the way down to the
subroutines called by display_line, and avoids scrolling bugs
under large hscroll values.  (Bug#26994)
2017-05-20 10:32:58 +03:00
Paul Eggert
7d00410af6 Add handlerlist assertion to module code
* src/emacs-module.c (module_reset_handlerlist):
Check handlerlist.  Suggested by Philipp Stephani in:
http://lists.gnu.org/archive/html/emacs-devel/2017-05/msg00521.html
2017-05-19 16:15:21 -07:00
Paul Eggert
c1c8b67246 Check that signed right shift is arithmetic
* src/data.c (ash_lsh_impl): Verify that signed right shift is
arithmetic; if we run across a compiler that uses a logical shift
we’ll need to complicate the code before removing this
compile-time check.  Help the compiler do common subexpression
elimination better.
2017-05-19 13:43:37 -07:00
Paul Eggert
7c951fd518 Attempt to work around macOS vfork bug
Problem reported by YAMAMOTO Mitsuharu in:
http://lists.gnu.org/archive/html/emacs-devel/2017-05/msg00342.html
This is related to the fix for Bug#26397.
* src/callproc.c (call_process_cleanup, call_process) [!MSDOS]:
Report internal error if wait_for_termination fails.
* src/sysdep.c (get_child_status): Return -1 if waitpid is
buggy, instead of aborting.
(wait_for_termination): Return bool success value.
All callers changed.
2017-05-19 00:13:27 -07:00
Paul Eggert
7e3e51f4e2 Fix DARWIN_OS_CASE_SENSITIVE_FIXME==2 false alarm
* src/fileio.c (file_name_case_insensitive_p):
Don’t compile the (DARWIN_OS_CASE_SENSITIVE_FIXME == 2)
code unless DARWIN_OS_CASE_SENSITIVE_FIXME is 2.
Problem reported by Philipp Stephani in:
http://lists.gnu.org/archive/html/emacs-devel/2017-05/msg00495.html
2017-05-18 20:42:35 -07:00
Paul Eggert
9647430ae8 Clean up compiler warning in emacs-module.c
* src/emacs-module.c (MODULE_SETJMP_1): Use the local var
instead of leaving it unused, to pacify picky compilers.
(module_reset_handlerlist): Now takes a dummy pointer to a struct
handler *, instead of a dummy pointer to an int.  All uses changed.
2017-05-18 20:03:03 -07:00
Philipp Stephani
e41030971f Clean up some compiler warnings
* src/sysdep.c (system_process_attributes) [DARWIN_OS]:
Remove unused locals.
2017-05-18 19:15:49 -07:00
Eli Zaretskii
064b92d6e5 Support hscrolling only the current line
* src/xdisp.c (hscrolling_current_line_p): New function.
(init_iterator): If auto-hscrolling just the current line, don't
increment the iterator's first_visible_x and last_visible_x
variables.
(hscroll_window_tree): Recompute window's hscroll when moving
vertically to another screen line.
(redisplay_window): If we are hscrolling only the current line,
disable the optimizations that rely on the current matrix being
up-to-date.
(display_line): Accept an additional argument CURSOR_VPOS, the
vertical position of the current screen line which might need
hscrolling; all callers changed.  Compute first_visible_x and
last_visible_x specially when auto-hscrolling current line, by
repeating the calculation that is done in init_iterator in other
modes.
(syms_of_xdisp) <auto-hscroll-mode>: No longer boolean, it can now
accept a 3rd value 'current-line, to turn on the mode where
only the current line is hscrolled.

* etc/NEWS: Mention the new auto-hscroll-mode value.
2017-05-18 23:18:29 +03:00
Paul Eggert
e54a3b4fde Avoid undefined behavior in struct sockaddr
Problem noted by Philipp Stephani in:
http://lists.gnu.org/archive/html/emacs-devel/2017-05/msg00391.html
* src/conf_post.h (ATTRIBUTE_MAY_ALIAS, DECLARE_POINTER_ALIAS):
New macros.
* src/process.c (conv_sockaddr_to_lisp, conv_lisp_to_sockaddr)
(connect_network_socket, network_interface_info)
(server_accept_connection): Use it when aliasing non-char objects.
2017-05-17 13:36:56 -07:00
Paul Eggert
709259dcc5 Work around AddressSanitizer bug with vfork
Problem reported by Jim Meyering in:
http://lists.gnu.org/archive/html/emacs-devel/2017-05/msg00246.html
* src/conf_post.h (vfork) [ADDRESS_SANITIZER]: Define to fork.
Unfortunately with the AddressSanitizer in Fedora 25 x86-64, the
vforked child messes up the parent’s shadow memory.  This is too
bad, as we’d rather have AddressSanitizer catch memory-access bugs
related to vfork.
2017-05-17 10:59:02 -07:00
Paul Eggert
937ff1a0af Catch IPv4/IPv6 issues at compile time
* src/process.c (connect_network_socket): Use verify,
not eassert, so that any problems are caught at compile-time.
Avoid dodgy cast by using a local var of the correct type.
2017-05-17 10:59:02 -07:00
Paul Eggert
2b93b754c1 Pacify --enable-gcc-warnings --with-x-toolkit=no
* src/composite.c (autocmp_chars) [!HAVE_WINDOW_SYSTEM]:
Avoid unused local.
2017-05-17 10:59:02 -07:00
Eli Zaretskii
f861353b68 Remove redundant code in connect_network_socket
* src/process.c (connect_network_socket) [HAVE_GETSOCKNAME]:
Remove redundant type-casting and variables.  Don't call
'getsockname' to find the port for AF_LOCAL sockets.
[AF_INET6]: Add an assertion to verify that the ports in the IPv4
and IPv6 structures are at the same offset and have the same size.
2017-05-17 18:12:58 +03:00
Paul Eggert
f7c07930b5 Fix minor timezone memory leak
* src/editfns.c (wall_clock_tz): Remove; unused.
2017-05-16 14:36:40 -07:00
Paul Eggert
69d0a8500c Do not discard AddressSanitizer stderr
* src/emacs.c (close_output_streams) [ADDRESS_SANITIZER]:
Do not close stderr.
2017-05-16 14:31:49 -07:00