]> git.eshelyaron.com Git - emacs.git/log
emacs.git
6 years agoMinor doc string fixes in json.c
Eli Zaretskii [Sat, 16 Jun 2018 10:40:38 +0000 (13:40 +0300)]
Minor doc string fixes in json.c

* src/json.c (Fjson_serialize, Fjson_insert): Fix 'usage'.

6 years agoFormatting and doc fixes in recent changes
Eli Zaretskii [Sat, 16 Jun 2018 10:27:24 +0000 (13:27 +0300)]
Formatting and doc fixes in recent changes

* src/xfaces.c (evaluate_face_filter): Explain the inner braces.
(merge_face_ref): Fix whitespace.
(syms_of_xfaces) <face-filters-always-match>: Doc fix.
* src/xdisp.c (extend_face_to_end_of_line): Fix whitespace.

6 years agoImprove documentation of several recent changes
Eli Zaretskii [Sat, 16 Jun 2018 10:10:52 +0000 (13:10 +0300)]
Improve documentation of several recent changes

* src/xfaces.c (merge_face_ref): Fix a typo in the commentary.
(evaluate_face_filter, filter_face_ref): Minor copyedits in
the commentary.
* doc/lispref/display.texi (Face Remapping):
* doc/lispref/text.texi (Special Properties): Document the
':filter' face specs and their effects.  Document
'face-filters-always-match'.

* doc/emacs/files.texi (Visiting): Document the new
possibility to visit large files literally in response to
question asked by Emacs.
* etc/NEWS: Mention the new possibility to visit large files
literally.
* lisp/files.el (files--ask-user-about-large-file): Use
"literally" instead of "raw", for consistency with
find-file-literally.

* doc/lispref/frames.texi (Input Focus): Tell explicitly that
focus-change events are sometimes supported on TTY frames.

6 years agoPrevent QUIT to top level inside 'while-no-input'
Eli Zaretskii [Sat, 16 Jun 2018 08:25:01 +0000 (11:25 +0300)]
Prevent QUIT to top level inside 'while-no-input'

* lisp/subr.el (while-no-input): Handle the case when BODY
never tests quit-flag, and runs to completion even though
input arrives while BODY executes.  (Bug#31692)

6 years agoFix a typo in xmenu.c
Eli Zaretskii [Sat, 16 Jun 2018 07:17:05 +0000 (10:17 +0300)]
Fix a typo in xmenu.c

* src/xmenu.c (x_menu_show): Replace a call to
record_unwind_protect_pointer with record_unwind_protect_ptr.
(Bug#31856)

6 years agoFix --with-cairo build
Ari Roponen [Sat, 16 Jun 2018 05:37:04 +0000 (08:37 +0300)]
Fix --with-cairo build

* src/xterm.c (x_cr_destroy): Remove extra semicolon.
(x_cr_export_frames): Fix a typo in calling
record_unwind_protect_ptr.  (Bug#31856)

6 years ago* src/Makefile.in: Update paxctl comment.
Paul Eggert [Fri, 15 Jun 2018 23:11:41 +0000 (16:11 -0700)]
* src/Makefile.in: Update paxctl comment.

6 years agoMinor CANNOT_DUMP cleanups
Paul Eggert [Fri, 15 Jun 2018 22:51:39 +0000 (15:51 -0700)]
Minor CANNOT_DUMP cleanups

Mostly, this avoids munging executables when CANNOT_DUMP = yes,
as the munging is needed only for unexec.
* configure.ac (PAXCTL_dumped, PAXCTL_notdumped) [CANNOT_DUMP]:
Leave these empty.
(LD_SWITCH_SYSTEM_TEMACS) [CANNOT_DUMP]:
Do not append -no-pie or -nopie.
* src/alloc.c (my_heap_start) [CANNOT_DUMP]: Omit; not used.

6 years agoRemove old combreloc hack
Paul Eggert [Fri, 15 Jun 2018 21:37:39 +0000 (14:37 -0700)]
Remove old combreloc hack

It has not been needed for many years and gets in the way of
portable dumping, address sanitization, etc.  See:
https://lists.gnu.org/r/emacs-devel/2016-12/msg00147.html
* configure.ac (LDFLAGS_NOCOMBRELOC, emacs_cv_znocombreloc):
Remove.  All uses removed.
* etc/PROBLEMS: Remove discussion of combreloc problems.

6 years agoFix typo in previous macfont.m change
Paul Eggert [Fri, 15 Jun 2018 20:40:12 +0000 (13:40 -0700)]
Fix typo in previous macfont.m change

* src/macfont.m (macfont_descriptor_entity): Fix typo.
Problem reported by Clemens Schüller.

6 years agoRestore macfont.m casts to void *
Paul Eggert [Fri, 15 Jun 2018 16:06:13 +0000 (09:06 -0700)]
Restore macfont.m casts to void *

* src/macfont.m (macfont_set_family_cache): Restore casts
to void * that were mistakenly removed in my recent change.
The types in question are pointer-to-const.  Problem
reported by Clemens Schüller.

6 years agoFix a bug in Flymake handling of region-specific reports
João Távora [Fri, 15 Jun 2018 14:48:59 +0000 (15:48 +0100)]
Fix a bug in Flymake handling of region-specific reports

The backend's diagnostic list must be updated too, not just cleared.

* lisp/progmodes/flymake.el (flymake--diag): Add overlay field.
(flymake--highlight-line): Return created overlay.
(flymake--handle-report): Iterate the backend's diagnostics, not
the overlays.  Set diagnostic overlay.
(flymake--run-backend): Don't clean diagnostic list here.
(flymake-mode): Call delete-overlay directly.

6 years agoFix building --without-x and similar
Eli Zaretskii [Fri, 15 Jun 2018 14:45:27 +0000 (17:45 +0300)]
Fix building --without-x and similar

* src/keyboard.c (make_lispy_focus_out): Compile it
unconditionally, as it is now supported on TTYs as well.
Reported by Filipp Gunbin <fgunbin@fastmail.fm>.

6 years agoFlymake and backends exchange hints abouts changed regions
João Távora [Fri, 15 Jun 2018 11:17:37 +0000 (12:17 +0100)]
Flymake and backends exchange hints abouts changed regions

* lisp/progmodes/flymake.el (flymake--delete-own-overlays): Accept
BEG and END.  Rename from flymake-delete-own-overlays.
(flymake-diagnostic-functions): Describe :region, :recent-changes
in docstring.
(flymake--handle-report): Accept REGION.
(flymake--run-backend): Accept optional ARGS to pass to backend
fn.
(flymake--recent-changes): New buffer-local variable.
(flymake-start): Call flymake--run-backend with recent changes.
(flymake-mode): Initialize flymake--recent-changes.  Call
flymake--delete-own-overlays.
(flymake-after-change-function): Collect recent changes.

* doc/misc/flymake.texi (Backend functions): Describe
:recent-changes and :region.

* etc/NEWS (Flymake): Mention improvements in backend communication.

6 years agocustomize-apropos: Separate package name from its description
Tino Calancha [Fri, 15 Jun 2018 07:21:03 +0000 (16:21 +0900)]
customize-apropos: Separate package name from its description

* lisp/cus-edit.el (custom-group-value-create):
Always insert documentation indented from its package name (Bug#31466).

6 years agoRemove Lisp_Misc_Save_Value
Paul Eggert [Fri, 8 Jun 2018 02:12:29 +0000 (19:12 -0700)]
Remove Lisp_Misc_Save_Value

This type and its associated routines are no longer used.
* src/alloc.c (voidfuncptr): Move here from src/lisp.h.
(free_misc, make_save_int_int_int)
(make_save_obj_obj_obj_obj, make_save_ptr)
(make_save_ptr_int, make_save_ptr_ptr)
(make_save_funcptr_ptr_obj, make_save_memory)
(free_save_value, mark_save_value):
Remove.
(mark_object): Remove mention of Lisp_Misc_Save_Value.
* src/lisp.h (Lisp_Misc_Save_Value, SAVE_SLOT_BITS)
(SAVE_VALUE_SLOTS, SAVE_TYPE_BITS, enum Lisp_Save_Type)
(struct Lisp_Save_Value, SAVE_VALUEP, XSAVE_VALUE)
(save_type, XSAVE_POINTER, set_save_pointer)
(XSAVE_FUNCPOINTER, XSAVE_INTEGER, set_save_integer)
(XSAVE_OBJECT): Remove.
(union Lisp_Misc): Remove u_save_value.
(voidfuncptr): Move from here to src/alloc.c.
* src/print.c (print_object):
Remove support for printing Lisp_Misc_Save_Value.

6 years agoNew type Lisp_Misc_Ptr
Paul Eggert [Fri, 8 Jun 2018 02:12:28 +0000 (19:12 -0700)]
New type Lisp_Misc_Ptr

This is a streamlined version of Lisp_Save_Value, which contains just
a pointer, as that is all Lisp_Save_Values are used for any more.
With the previous changes, these objects are not primarily used as
save values, so just call them "Misc" rather than "Save".
* src/alloc.c (make_misc_ptr): New function.
(mark_object): Mark Lisp_Misc_Ptr too.
* src/lisp.h (Lisp_Misc_Ptr): New constant.
(struct Lisp_Misc_Ptr): New type.
(make_mint_ptr, mint_ptrp, xmint_pointer):
Use Lisp_Misc_Ptr, not Lisp_Save_Value.
(union Lisp_Misc): Add Lisp_Misc_Ptr.
* src/print.c (print_object): Print Lisp_Misc_Ptr.

6 years agoAvoid allocating Lisp_Save_Value for arrays
Paul Eggert [Fri, 8 Jun 2018 02:12:28 +0000 (19:12 -0700)]
Avoid allocating Lisp_Save_Value for arrays

* src/alloc.c (mark_maybe_objects): New function.
* src/eval.c (default_toplevel_binding)
(backtrace_eval_unrewind, Fbacktrace__locals):
Treat array unwindings like other miscellaneous pdl types.
(record_unwind_protect_array): New function.
(do_one_unbind): Free the array while unwinding.
(mark_specpdl): Mark arrays directly.
* src/lisp.h (SPECPDL_UNWIND_ARRAY): New constant.
(union specbinding): New member unwind_array.
(SAFE_ALLOCA_LISP_EXTRA): Use record_unwind_protect_array
instead of make_save_memory + record_unwind_protect.

6 years agoAvoid allocating Lisp_Save_Value for excursions
Paul Eggert [Thu, 14 Jun 2018 22:59:09 +0000 (15:59 -0700)]
Avoid allocating Lisp_Save_Value for excursions

* src/editfns.c (save_excursion_save): New arg PDL,
specifying where to save the state.  All uses changed.
(save_excursion_restore): Args are now the marker and info
rather than a pointer to a Lisp_Save_Value containing them.
All uses changed.
* src/eval.c (default_toplevel_binding, Fbacktrace__locals):
Treat excursions like other miscellaneous pdl types.
(record_unwind_protect_excursion): Save data directly
into the pdl rather than creating an object on the heap.
This avoids the need to allocate and free an object.
(do_one_unbind, backtrace_eval_unrewind):
Unwind excursions directly.
(mark_specpdl): Mark excursions directly.
* src/lisp.h (SPECPDL_UNWIND_EXCURSION): New constant.
(union specbinding): New member unwind_excursion.

6 years agoJust use cons in macfont_descriptor_entity
Paul Eggert [Thu, 14 Jun 2018 22:59:09 +0000 (15:59 -0700)]
Just use cons in macfont_descriptor_entity

* src/macfont.m (macfont_descriptor_entity): Use cons instead
of make_save_ptr_int, as this avoids the need for a special
type and function for this one-off.

6 years agoAvoid allocating a Lisp_Save_Value in ftfont.c
Paul Eggert [Thu, 14 Jun 2018 22:59:08 +0000 (15:59 -0700)]
Avoid allocating a Lisp_Save_Value in ftfont.c

* src/ftfont.c (struct ftfont_cache_data): New member face_refcount.
(ftfont_lookup_cache): Clear it when initializing.
Use make_mint_ptr, since this typically avoids the need to
allocate a Lisp_Save_Value as refcount is now stored elsewhere.
(ftfont_open2, ftfont_close): Manipulate the reference
count in the struct, not in the save object.

6 years agoUse record_unwind_protect_ptr to avoid allocation
Paul Eggert [Thu, 14 Jun 2018 22:59:08 +0000 (15:59 -0700)]
Use record_unwind_protect_ptr to avoid allocation

* src/term.c (struct tty_pop_down_menu): New type.
(tty_pop_down_menu, tty_menu_show): Use it, along with
record_unwind_protect_ptr, to avoid allocating a Lisp_Misc.
* src/xmenu.c (struct pop_down_menu): New type.
(pop_down_menu, x_menu_show): Use it, likewise.
* src/xterm.c (x_cr_destroy, x_cr_export_frames):
Use record_unwind_protect_pointer to avoid possibly allocating
a Lisp_Misc.

6 years agoAvoid Lisp_Misc allocation if C stack suffices
Paul Eggert [Thu, 14 Jun 2018 22:59:08 +0000 (15:59 -0700)]
Avoid Lisp_Misc allocation if C stack suffices

* src/fileio.c (union read_non_regular): New type.
(read_non_regular, Finsert_file_contents):
Use it to avoid allocating a Lisp_Misc.
* src/keymap.c (union map_keymap): New type.
(map_keymap_char_table_item, map_keymap_internal):
Use it to avoid allocating a Lisp_Misc.

6 years agoSimplify init_module_assertions
Paul Eggert [Thu, 14 Jun 2018 22:59:08 +0000 (15:59 -0700)]
Simplify init_module_assertions

* src/emacs-module.c (init_module_assertions): Just use NULL
instead of allocating a dummy on the stack and then using
eassert.  Practical platforms check for null pointer
dereferencing nowadays, so this is good enough.

6 years agoNew mint_ptr representation for C pointers
Paul Eggert [Thu, 14 Jun 2018 22:59:08 +0000 (15:59 -0700)]
New mint_ptr representation for C pointers

* src/lisp.h (make_mint_ptr, mint_ptrp, xmint_pointer): New functions.
* src/dbusbind.c (xd_lisp_dbus_to_dbus, Fdbus__init_bus):
* src/emacs-module.c (module_free_global_ref, Fmodule_load)
(module_assert_runtime, module_assert_env, value_to_lisp)
(lisp_to_value, initialize_environment)
(finalize_environment, finalize_runtime_unwind)
(mark_modules):
* src/font.c (otf_open, font_put_frame_data)
(font_get_frame_data):
* src/macfont.m (macfont_invalidate_family_cache)
(macfont_get_family_cache_if_present)
(macfont_set_family_cache):
* src/nsterm.h (XNS_SCROLL_BAR):
* src/nsterm.m (ns_set_vertical_scroll_bar)
(ns_set_horizontal_scroll_bar):
* src/w32fns.c (w32_monitor_enum)
(w32_display_monitor_attributes_list):
* src/xterm.c (x_cr_destroy, x_cr_export_frames):
* src/xwidget.c (webkit_javascript_finished_cb)
(save_script_callback, Fxwidget_webkit_execute_script)
(kill_buffer_xwidgets):
Use mint pointers instead of merely save pointers.

6 years agoAlso allow custom false and null when serializing to JSON
João Távora [Fri, 8 Jun 2018 01:35:50 +0000 (02:35 +0100)]
Also allow custom false and null when serializing to JSON

* doc/lispref/text.texi (Parsing JSON): Describe new arguments of
json-serialize and json-insert.

* src/json.c (enum json_object_type, struct json_configuration):
Move up in file before first usage.
(lisp_to_json_toplevel, lisp_to_json_toplevel_1, lisp_to_json):
Accept a struct json_configuration*.
(Fjson_serialize, Fjson_insert): Accept multiple args.
(json_parse_args): Accept new boolean configure_object_type.

* test/src/json-tests.el
(json-serialize, json-insert): Update forward decls.
(json-parse-with-custom-null-and-false-objects): Add assertions for
json-serialize.

6 years agoSupport custom null and false objects when parsing JSON
João Távora [Thu, 7 Jun 2018 16:41:19 +0000 (17:41 +0100)]
Support custom null and false objects when parsing JSON

* doc/lispref/text.texi (Parsing JSON): Describe new :null-object
and :false-object kwargs to json-parse-string and
json-parse-buffer.

* src/json.c
(struct json_configuration): New type.
(json_to_lisp): Accept a struct json_configuration* param.
(json_parse_args): Rename from json_parse_object_type.
(Fjson_parse_string): Rework docstring.
(Fjson_parse_string, Fjson_parse_buffer): Update call to
json_to_lisp.
(syms_of_json): Two new syms, QCnull_object and QCfalse_object.

* test/src/json-tests.el
(json-parse-with-custom-null-and-false-objects): New test.

6 years agoFix pretty-printing empty objects as null
Damien Cassou [Sat, 19 May 2018 06:36:32 +0000 (08:36 +0200)]
Fix pretty-printing empty objects as null

* lisp/json.el (json-pretty-print): Force distinction between empty
  objects and null.
(json-encode-list): Remove responsibility to print "null" as this
value is not a list.
(json-encode): Give higher precedence to lists so that an empty list
is printed as an empty object, not as "null".

* test/lisp/json-tests.el (test-json-encode): Add many tests to check
  the behavior of pretty-printing.

6 years agoRemove some wrong 8-byte alignment assumptions
Paul Eggert [Wed, 13 Jun 2018 20:30:29 +0000 (13:30 -0700)]
Remove some wrong 8-byte alignment assumptions

Do not assume that 8-byte alignment suffices for all C objects,
as some platforms require 16-byte alignment for some objects,
and this will start to bite us as time goes on (e.g., if an
Emacs module ever uses an object containing a long
double, which requires 16-byte alignment on x86-64).
Conversely, on !USE_LSB_TAG platforms, do not insist on
aligning Lisp objects to a multiple of 8, as this is not
needed for high-order tag bits.
* src/alloc.c (LISP_ALIGNMENT, MALLOC_IS_LISP_ALIGNED):
New constants.
(XMALLOC_BASE_ALIGNMENT, XMALLOC_HEADER_ALIGNMENT):
Removed.  All uses replaced by LISP_ALIGNMENT.
(aligned_alloc, laligned, lmalloc, lrealloc, union aligned_Lisp_Misc)
(maybe_lisp_pointer, pure_alloc):
Use LISP_ALIGNMENT rather than GCALIGNMENT.
(aligned_alloc): Do not worry about an alignment of
LISP_ALIGNMENT when MALLOC_IS_LISP_ALIGNED, as the code never
uses aligned_alloc with alignment == LISP_ALIGNMENT in that case.
(__alignof__): Remove.  All uses removed.
(MALLOC_IS_GC_ALIGNED): Remove.
All uses replaced with MALLOC_IS_LISP_ALIGNED.
(vector_alignment): Remove.
All uses replaced with LISP_ALIGNMENT.
* src/alloc.c (mark_maybe_pointer):
* src/emacs-module.c (value_to_lisp_bits):
Do not assume GCALIGNMENT == 1 << GCTYPEBITS, as GCALIGNMENT
is 1 on !USE_LSB_TAG platforms now.
* src/lisp.h (GCALIGNMENT) [!USE_LSB_TAG]: Now 1.
(struct Lisp_Symbol, union vectorlike_header, struct Lisp_Cons)
(struct Lisp_String): Simplify test for verifying alignment.

6 years agoClarify that enabling a theme does not disable other themes
Daniel Colascione [Wed, 13 Jun 2018 06:28:47 +0000 (23:28 -0700)]
Clarify that enabling a theme does not disable other themes

Avoid user confusion by explicitly stating that enabling a theme does
not imply disabling other themes and that theme load functions are not
theme switch functions.

* lisp/custom.el (load-theme, enable-theme): Clarify docstrings.

6 years agoIgnore focus events for dead frames
Daniel Colascione [Wed, 13 Jun 2018 06:09:23 +0000 (23:09 -0700)]
Ignore focus events for dead frames

Frames can die between the time we generate a focus event and the time
we get around to processing it.  Do run after-focus-change-function,
since that's idempotent and we want to make sure not to miss
any changes.

* lisp/frame.el (handle-focus-in, handle-focus-out): Check for dead frames.

6 years ago* lisp/textmodes/ispell.el (ispell-menu-map): Init in declaration
Stefan Monnier [Tue, 12 Jun 2018 21:06:32 +0000 (17:06 -0400)]
* lisp/textmodes/ispell.el (ispell-menu-map): Init in declaration

(ispell-menu-map-needed): Remove, now that the menu doesn't include
the list of dictionaries any more, so it's basically constant.

6 years ago; Assorted documentation fixes in recent changes
Eli Zaretskii [Tue, 12 Jun 2018 16:26:44 +0000 (19:26 +0300)]
; Assorted documentation fixes in recent changes

* etc/NEWS: Minor copyedits of recent entries.

* src/keyboard.c (Finternal_handle_focus_in):
* lisp/frame.el (frame-focus-state): Doc fixes.

* doc/lispref/hooks.texi (Standard Hooks): Mention
after-delete-frame-functions.

6 years agoFix initialization of custom-delayed-init-variables
Eli Zaretskii [Tue, 12 Jun 2018 15:03:56 +0000 (18:03 +0300)]
Fix initialization of custom-delayed-init-variables

* lisp/startup.el (command-line): Re-evaluate delayed-init custom
variables one more time after setting up the initial
window-system.  (Bug#30994)

* doc/emacs/custom.texi (Early Init File):
* etc/NEWS: Warn against using early-init.el as a substitute for
.emacs.

6 years agoGive warning if losing value to defvaralias (Bug#5950)
Noam Postavsky [Fri, 25 May 2018 12:40:55 +0000 (08:40 -0400)]
Give warning if losing value to defvaralias (Bug#5950)

* src/eval.c (Fdefvaralias): Call `display-warning' if the alias
target has a non-eq value to the variable being aliased.
* test/src/eval-tests.el (defvaralias-overwrite-warning): New test.

6 years agoLet display-warning work during bootstrap
Noam Postavsky [Sat, 26 May 2018 01:37:17 +0000 (21:37 -0400)]
Let display-warning work during bootstrap

* lisp/emacs-lisp/warnings.el (display-warning): Only call
`special-mode' and `newline' if they are `fbound'.

6 years ago* lisp/progmodes/sql.el Add MariaDB support (Robert Cochran)
Michael R. Mauger [Mon, 11 Jun 2018 00:01:36 +0000 (20:01 -0400)]
* lisp/progmodes/sql.el Add MariaDB support (Robert Cochran)
  (sql-product-alist): Add MariaDB entry
  (sql-mariadb-program, sql-mariadb-options, sql-mariadb-login-params,
  sql-mode-mariadb-font-lock): New variables, aliases of the MySQL
  equivalents
  (sql-mariadb, sql-comint-mariadb): New interaction mode functions
  for MariaDB
  (sql-mode-mysql-font-lock-keywords): Updated font-lock for MySQL
  and MariaDB

6 years agosoap-client: Add byte-code compatibility function (Bug#31742)
Thomas Fitzsimmons [Sat, 9 Jun 2018 02:41:28 +0000 (22:41 -0400)]
soap-client: Add byte-code compatibility function (Bug#31742)

* lisp/net/soap-client.el: Bump version to 3.1.4.
(soap-type-of): New function.
(soap-resolve-references, soap-decode-type)
(soap-encode-attributes, soap-encode-value): Replace aref
calls with calls to soap-type-of.

* lisp/net/soap-inspect.el (soap-sample-value, soap-inspect):
Replace aref calls with calls to soap-type-of.

Co-authored-by: Noam Postavsky <npostavs@gmail.com>
6 years agoAdd after-delete-frame-functions
Daniel Colascione [Mon, 11 Jun 2018 23:54:23 +0000 (16:54 -0700)]
Add after-delete-frame-functions

Instead of working around the behavior delete-frame-functions, just
add an after-delete-frame-functions hook.

* doc/lispref/frames.texi (Deleting Frames): Document
`after-delete-frame-functions'.

* etc/NEWS: Mention `after-delete-frame-functions'.

* lisp/frame.el (blink-cursor--should-blink):
(blink-cursor--rescan-frames, blink-frame-mode): Get rid of the
ugly ignored-frame parameter and switch from
`delete-frame-functions' to `after-delete-frame-functions'.

* src/frame.c (syms_of_frame): New variable
`after-delete-frame-functions'.
(delete_frame): Use it.

6 years agoMake blink-cursor-mode use new focus functions
Daniel Colascione [Mon, 11 Jun 2018 23:08:29 +0000 (16:08 -0700)]
Make blink-cursor-mode use new focus functions

* lisp/frame.el (blink-cursor--should-blink): New function.
(blink-cursor-check): Call it.
(blink-cursor--rescan-frames): New function.
(blink-cursor-mode): Wire up `blink-cursor--rescan-frames`; stop
using `focus-in-hook' and `focus-out-hook'.

6 years agoLosing focus should not stop idleness
Daniel Colascione [Mon, 11 Jun 2018 22:06:51 +0000 (15:06 -0700)]
Losing focus should not stop idleness

* src/keyboard.c (read_char): Make Qfocus_out not break idle.

6 years agoNew focus management interface
Daniel Colascione [Mon, 11 Jun 2018 21:58:09 +0000 (14:58 -0700)]
New focus management interface

focus-in-hook and focus-out-hook don't accurately reflect actual
user-visible focus states.  Add a new focus interface and mark the old
one obsolete.

* doc/lispref/frames.texi (Input Focus): Document new focus
functions.  Remove references to the now-obsolete focus hooks.

* lisp/frame.el (frame-focus-state): New function.
(after-focus-change-function): New variable.
(focus-in-hook, focus-out-hook): Move to lisp from C;
mark obsolete.

* lisp/term/xterm.el (xterm-translate-focus-in)
(xterm-translate-focus-out): Track tty focus in `tty-focus-state'
terminal parameter; call `after-focus-change-function'.
(xterm--suspend-tty-function): New function.

* src/frame.c (Fhandle_switch_frame): Update docstring; don't call
focus hooks.
(focus-in-hook, focus-out-hook): Remove: moved to lisp.
(syms_of_frame): Remove unread_switch_frame; add
Vunread_switch_frame.

* src/keyboard.c:
(Finternal_handle_focus_in): New function.
(make_lispy_event): Always report focus events to lisp; don't
translate them to switch events sometimes.  Lisp can take care of
creating synthetic switch-frame events via
`internal-handle-focus-in'.

* src/w32term.c (x_focus_changed): Remove switch-avoidance logic:
just directly report focus changes to lisp.

* src/xterm.c (x_focus_changed): Remove switch-avoidance logic:
just directly report focus changes to lisp.

6 years agoRemove code #if-0-ed terminal-local code
Daniel Colascione [Sun, 10 Jun 2018 06:45:48 +0000 (23:45 -0700)]
Remove code #if-0-ed terminal-local code

This code hasn't been used since 2005.

* src/data.c
(get_terminal, Fterminal_local_value, Fset_terminal_local_value): Remove.

6 years agoRemove obsolete keyboard.c code
Daniel Colascione [Sun, 10 Jun 2018 01:30:28 +0000 (18:30 -0700)]
Remove obsolete keyboard.c code

* src/keyboard.c (any_kboard_state, single_kboard_state): Remove
#if-0-ed functions.

6 years agoDon't have shr bug out on degenerate <img> tags
Lars Ingebrigtsen [Mon, 11 Jun 2018 18:38:25 +0000 (20:38 +0200)]
Don't have shr bug out on degenerate <img> tags

* lisp/net/shr.el (shr-tag-img): Protect against contructs like
<img src=" ">.

6 years ago* lisp/textmodes/ispell.el (ispell--call-enchant-lsmod): Use \' i.s.o $.
Stefan Monnier [Mon, 11 Jun 2018 02:04:11 +0000 (22:04 -0400)]
* lisp/textmodes/ispell.el (ispell--call-enchant-lsmod): Use \' i.s.o $.

6 years agoMerge from emacs-26
Noam Postavsky [Sun, 10 Jun 2018 22:47:27 +0000 (18:47 -0400)]
Merge from emacs-26

8a1576cc03 Fix term.el cursor movement at bottom margin (Bug#31690)

6 years ago; Merge from emacs-26
Noam Postavsky [Sun, 10 Jun 2018 22:43:51 +0000 (18:43 -0400)]
; Merge from emacs-26

The following commit was skipped:

4c3fae3cf2 Call enchant-lsmod correctly when Enchant is installed wit...

6 years agoMerge from emacs-26
Noam Postavsky [Sun, 10 Jun 2018 22:43:49 +0000 (18:43 -0400)]
Merge from emacs-26

3434edc731 Enlarge DUMPED_HEAP_SIZE for 64-bit Windows builds
36bbdfc017 Update Unicode data files to version 11.0.0 of Unicode
b7b7a5f4f3 * etc/NEWS: Belatedly call out vc-hg changes in v26.1.  (B...
5b6f8b54d1 Clarify the documentation of 'dired-recursive-deletes'
9db97b49cd ; * etc/DEBUG: Add information about debugging libXft prob...
0214ffbe60 Clarify doc string of 'update-glyphless-char-display'
ef35d405b1 Clarify subtle issues with 'eq' in byte-compiled code
c6ef3c8321 Make cl-print respect print-quoted (bug#31649)
26b52ac40e Fix unexpected jumps of window-point in 'set-window-config...
4af077ab4d * etc/emacs.appdata.xml: Update Emacs screenshot.
e5ab25deae Fix cursor movement by 'next-logical-line' after 'next-line'
d20beef5f1 Fix prompt in bookmark.el (Bug#24726)
c57e7eaae8 Improve documentation of 'empty' whitespace-style

# Conflicts:
# etc/NEWS

6 years ago; Merge from emacs-26
Noam Postavsky [Sun, 10 Jun 2018 22:43:43 +0000 (18:43 -0400)]
; Merge from emacs-26

The following commits were skipped:

acaebed014 ; * src/ftfont.c (ftfont_spec_pattern): Fix whitespace.
97d61f878e Port FC_COLOR change to older fontconfig

6 years agoMerge from emacs-26
Noam Postavsky [Sun, 10 Jun 2018 22:41:47 +0000 (18:41 -0400)]
Merge from emacs-26

55c9bb9f3c Fix comint-get-old-input-default for output field case (Bu...
26819cd1c0 ; ChangeLog.3: Fix typo.
e35a08ea4b Prevent infloop in 'delete-trailing-whitespace'

* lisp/progmodes/cperl-mode.el:
* lisp/progmodes/cc-engine.el:
* lisp/progmodes/cc-mode.el: Fix tabs mixed with space preventing
commit hook from succeeding.

6 years agoFix term.el cursor movement at bottom margin (Bug#31690)
Noam Postavsky [Sat, 2 Jun 2018 19:57:33 +0000 (15:57 -0400)]
Fix term.el cursor movement at bottom margin (Bug#31690)

* lisp/term.el (term-handle-ansi-escape) <\E[B cud>: Allow moving the
cursor to the bottom margin line, rather than stopping one line
before.

6 years agoPacify gcc -Wnull-dereference some more
Paul Eggert [Sun, 10 Jun 2018 17:38:28 +0000 (10:38 -0700)]
Pacify gcc -Wnull-dereference some more

* src/keyboard.c (read_char): Use xevent_start in a couple
more places where it is safe.  This is needed with
--enable-gcc-warnings --enable-checking on Fedora 28 x86-64.

6 years agoUse native alignment to access Lisp object data
Paul Eggert [Sun, 10 Jun 2018 17:13:45 +0000 (10:13 -0700)]
Use native alignment to access Lisp object data

Instead of using __builtin_assume_aligned (P, GCALIGNMENT) to
tell GCC that P has alignment 8, use (T *) P where T is the
type of the pointed-to object, to tell GCC that P has native
alignment.  This is simpler, matches the intent better, and
should help simplify future improvements.  Some of these
changes are to pacify gcc -Wnull-dereference, since GCC is
smarter about pointers now that Emacs no longer uses
__builtin_assume_aligned; these minor changes should improve
code efficiency slightly.  On Fedora 28 x86-64 with default
optimization this patch shrinks the size of the Emacs text
segment by 0.36%.
* src/conf_post.h (__has_builtin, __builtin_assume_aligned):
Remove; no longer used.
* src/dbusbind.c (XD_OBJECT_TO_DBUS_TYPE):
Pacify -Wnull-dereference by using XCAR instead of CAR_SAFE
and XCDR instead of CDR_SAFE when this is safe.
* src/fileio.c (Fexpand_file_name):
* src/font.c (clear_font_cache):
Pacify -Wnull-dereference by removing unnecessary NILP test.
* src/keyboard.c (xevent_start): New function.
(read_char, read_key_sequence): Pacify -Wnull-dereference by
using xevent_start instead of EVENT_START.
* src/lisp.h (lisp_h_XUNTAG): Remove; XUNTAG is always a macro
now, since it can no longer be implemented as a function.
(XUNTAG): New third argument CTYPE.  All uses changed.
Cast result to CTYPE * instead of using __builtin_assume_aligned.
Simplify by using LISP_WORD_TAG.
(LISP_WORD_TAG): New macro.
(TAG_PTR): Use it.
* src/menu.c (x_popup_menu_1):
Pacify -Wnull-dereference by using XCAR instead of Fcar and
XCDR instead of Fcdr where this is safe.

6 years agoCall enchant-lsmod correctly when Enchant is installed with a suffix
Reuben Thomas [Fri, 16 Mar 2018 10:50:21 +0000 (10:50 +0000)]
Call enchant-lsmod correctly when Enchant is installed with a suffix

* lisp/textmodes/ispell.el (ispell--call-enchant-lsmod): Cope with a
version suffix on the binary name, so enchant-2 is converted to
enchant-lsmod-2, not enchant-2-lsmod.  (Bug#31761)

(cherry picked from commit a402d9aacbecf4bf0b9afde592a3b90c71f96832)

6 years agoSimplify read_key_sequence
Paul Eggert [Sun, 10 Jun 2018 01:59:25 +0000 (18:59 -0700)]
Simplify read_key_sequence

* src/keyboard.c (READ_KEY_ELTS): New constant.
(keyremap_step, read_key_sequence): Omit BUFSIZE arg, since it's
always READ_KEY_ELTS.  All callers changed.
(grow_bool_vector): Remove; no longer needed.
(read_key_sequence): Use a bool array instead of a Lisp bool
vector, since it's small and this puts less pressure on the GC.

6 years agoUnbreak echoing
Daniel Colascione [Sun, 10 Jun 2018 01:12:15 +0000 (18:12 -0700)]
Unbreak echoing

* src/keyboard.c (read_key_sequence): Don't echo_truncate the first time.

6 years agoFix pointer misuse in JSON parser
Paul Eggert [Sun, 10 Jun 2018 00:56:29 +0000 (17:56 -0700)]
Fix pointer misuse in JSON parser

* src/json.c (lisp_to_json_toplevel_1): Fix pointer misuse not
caught by C type checking (json_t ** converted to void * where
the program expected json_t *).  Bug caught on Fedora 28 x86-64 via
'./configure CFLAGS="-g3 -O2 -fsanitize=address" CANNOT_DUMP=yes'.
Avoid similar problems in the future by rewriting to use
json_t * instead of json_t **.

6 years agoCorrectly set last_nonmenu_event when replaying
Daniel Colascione [Sun, 10 Jun 2018 00:45:01 +0000 (17:45 -0700)]
Correctly set last_nonmenu_event when replaying

read_key_sequence can, in various circumstances, play back recorded
events.  Make sure that we set last_nonmenu_event as if we weren't
replaying.  Without this change, we leave last_nonmenu_event set to
whatever it was before we started replaying, leading to spurious
random keymap menu prompts appearing after reading terminal control
sequences, the translation of which sometimes causes event replays.

* src/keyboard.c:
(grow_bool_vector): New function
(read_key_sequence): Remember menu event history per-event.

6 years agoAdd debug facility for formatting in rr sessions
Daniel Colascione [Sat, 9 Jun 2018 22:41:29 +0000 (15:41 -0700)]
Add debug facility for formatting in rr sessions

The existing debug print commands don't work in rr, since they touch
stderr. The new xfmt command just calls Fformat and doesn't touch the
stdio streams.

* src/.gdbinit:
(xfmt): New GDB command.

* src/print.c:
(debug_format): New function.

6 years agoFix typo in docstring
Daniel Colascione [Sat, 9 Jun 2018 20:43:05 +0000 (13:43 -0700)]
Fix typo in docstring

* lisp/term/xterm.el: (xterm-paste-ending-sequence): Fix typo

6 years agoFix read buffer overrun on overflowed integers
Paul Eggert [Sun, 10 Jun 2018 00:17:55 +0000 (17:17 -0700)]
Fix read buffer overrun on overflowed integers

* src/lread.c (read_integer): Fix off-by-1 buffer overrun
introduced in 2018-04-17T23:23:16Z!eggert@cs.ucla.edu.  The
bug could occur when Emacs read radixed integers containing
more than 100 digits.  Bug caught by AddressSanitizer.

6 years agoImplement the C++11 "using" type definition.
Alan Mackenzie [Sat, 9 Jun 2018 21:39:43 +0000 (21:39 +0000)]
Implement the C++11 "using" type definition.

Cease using the long obsolete c++-template-syntax-table.

* lisp/progmodes/cc-align.el (c-lineup-template-args): Cease using
c++-template-syntax-table.

* lisp/progmodes/cc-engine.el (c-beginning-of-inheritance-list)
(c-search-decl-header-end, c-beginning-of-decl-1, c-end-of-decl-1)
(c-guess-continued-construct, c-guess-basic-syntax): Cease using
c++-template-syntax-table.
(c-guess-basic-syntax): Add CASE 5D.6 to handle C++11's "using" type
definition.

* lisp/progmodes/cc-langs.el (c++-make-template-syntax-table)
(c++-template-syntax-table): Remove.
(c-equals-type-clause-kwds, c-equals-type-clause-key): New language
constants/variables.

6 years agoImprove robustness xterm event processing
Daniel Colascione [Sat, 9 Jun 2018 20:14:11 +0000 (13:14 -0700)]
Improve robustness xterm event processing

We used to treat the start of a focus-in, focus-out, and the start of
a paste sequence as normal events bound in global-map, but this
approach produces problems when we recognize events in the middle of
actions that don't immediately dispatch to the command loop.

Now we handle these events internally inside read-key, translating the
focus events to nothing and paste-start into an xterm-paste event that
neatly encapsulates the entire paste sequence.

* lisp/term/xterm.el:
(xterm-paste): Accept an event argument; insert text from event.
(xterm-translate-focus-in,xterm-translate-focus-out)
(xterm-translate-bracketed-paste): New functions.
(xterm-handle-focus-in,xterm-handle-focus-out): Remove.
(xterm-rxvt-function-map): Bind new translation functions.

6 years agoEnlarge DUMPED_HEAP_SIZE for 64-bit Windows builds
Eli Zaretskii [Sat, 9 Jun 2018 18:14:04 +0000 (21:14 +0300)]
Enlarge DUMPED_HEAP_SIZE for 64-bit Windows builds

* src/w32heap.c (DUMPED_HEAP_SIZE): Bump to 23MB.  Reported by
Andy Moreton <andrewjmoreton@gmail.com>.

6 years agoCC Mode: In brace lists, anchor an elt on its predecessor, not on first elt
Alan Mackenzie [Sat, 9 Jun 2018 17:34:46 +0000 (17:34 +0000)]
CC Mode: In brace lists, anchor an elt on its predecessor, not on first elt

* lisp/progmodes/cc-engine.el (c-beginning-of-statement-1): At the end, accept
"." as a unary operator (which it now is in brace lists in, e.g., C Mode).
(c-guess-basic-syntax): Just before CASE 9C, move back to the previous brace
list entry in the block, rather than to the first one.

6 years agoMake error checking for thread functions stricter.
Philipp Stephani [Sat, 2 Jun 2018 20:35:22 +0000 (22:35 +0200)]
Make error checking for thread functions stricter.

* src/systhread.c (sys_thread_create): Change return type to bool.
Check for errors returned by pthread_attr_setstacksize and
pthread_attr_destroy.
(sys_mutex_init): Abort on errors.  Enable mutex checks when checking
is enabled.
(sys_cond_init): Abort on errors.
(sys_mutex_lock, sys_mutex_unlock, sys_cond_wait)
(sys_cond_signal, sys_cond_broadcast, sys_cond_destroy): Check for
errors in debug mode.

6 years agoUpdate Unicode data files to version 11.0.0 of Unicode
Eli Zaretskii [Sat, 9 Jun 2018 12:41:21 +0000 (15:41 +0300)]
Update Unicode data files to version 11.0.0 of Unicode

* admin/unidata/UnicodeData.txt:
* admin/unidata/SpecialCasing.txt:
* admin/unidata/NormalizationTest.txt:
* admin/unidata/copyright.html:
* admin/unidata/BidiMirroring.txt:
* admin/unidata/BidiBrackets.txt: Import from Unicode 11.0.
* admin/notes/unicode: Update the URL for OTF script tags.

* lisp/international/mule-cmds.el (ucs-names): Update unused ranges.
* lisp/international/fontset.el (script-representative-chars): Add
hanifi-rohingya, old-sogdian, sogdian, dogra, gunjala-gondi,
makasar, and medefaidrin.
(otf-script-alist): Add old-hungarian.
* lisp/international/characters.el (tbl): Add syntax entries for
Supplemental Mathematical Operators, Miscellaneous Symbols and
Arrows, and Supplemental Punctuation.
Update the list of wide characters.

* test/lisp/international/ucs-normalize-tests.el
(ucs-normalize-tests--failing-lines-part2): Update to match
admin/unidata/NormalizationTest.txt.

* doc/lispref/nonascii.texi (Character Properties): Update the
reference to the Unicode Standard.
* doc/misc/efaq.texi (New in Emacs 26):
* etc/NEWS: Mention compatibility with Unicode 11.0.

6 years ago* etc/NEWS: Belatedly call out vc-hg changes in v26.1. (Bug#31759)
Eli Zaretskii [Sat, 9 Jun 2018 09:33:20 +0000 (12:33 +0300)]
* etc/NEWS: Belatedly call out vc-hg changes in v26.1.  (Bug#31759)

6 years agoClarify the documentation of 'dired-recursive-deletes'
Eli Zaretskii [Sat, 9 Jun 2018 08:58:27 +0000 (11:58 +0300)]
Clarify the documentation of 'dired-recursive-deletes'

* doc/emacs/dired.texi (Dired Deletion): Clarify text regarding
recursive deletion of non-empty directories.  (Bug#31529)

6 years agoAllow to reset Deleted flag when exporting messages in Rmail
Eli Zaretskii [Sat, 9 Jun 2018 08:03:20 +0000 (11:03 +0300)]
Allow to reset Deleted flag when exporting messages in Rmail

* lisp/mail/rmailout.el (rmail-output-reset-deleted-flag): New
defcustom.
(rmail-output): When 'rmail-output-reset-deleted-flag' is non-nil,
reset the Deleted flag of the appended messages, and if COUNT is
greater than 1, do not ignore deleted messages.  Update the doc
string accordingly.  (Bug#31271)

* doc/emacs/rmail.texi (Rmail Output): Document
'rmail-output-reset-deleted-flag'.

* etc/NEWS: Mention the new user option.

6 years agoMerge branch 'master' of git.savannah.gnu.org:/srv/git/emacs
Eli Zaretskii [Sat, 9 Jun 2018 06:55:46 +0000 (09:55 +0300)]
Merge branch 'master' of git.savannah.gnu.org:/srv/git/emacs

6 years agoRemove AddressSanitizer bug workaround
Paul Eggert [Sat, 9 Jun 2018 06:53:58 +0000 (23:53 -0700)]
Remove AddressSanitizer bug workaround

This workaround no longer appears to be needed.
* src/alloc.c (USE_ALIGNED_ALLOC): Don’t leave undefined
merely because ADDRESS_SANITIZER is defined, as that bug
in -fsanitize=address appears to have been fixed.  See:
https://github.com/google/sanitizers/issues/337
* src/conf_post.h (vfork): Improve comment.

6 years agoFix default candidate of find-face-definition
Basil L. Contovounesios [Sun, 3 Jun 2018 18:34:37 +0000 (19:34 +0100)]
Fix default candidate of find-face-definition

* lisp/emacs-lisp/find-func.el (find-function-read): Use
face-at-point instead of variable-at-point for faces. (bug#31699)

6 years agoAvoid unnecessary readahead early in TTY frame init
Daniel Colascione [Sat, 9 Jun 2018 06:22:23 +0000 (23:22 -0700)]
Avoid unnecessary readahead early in TTY frame init

We query some properties of the terminal early in initialization, and
just before we do, we perform ordinary redisplay.  This redisplay can
result in unsightly flickering if we change some aspects of the
display immediately afterward and redisplay again.  By avoiding
redisplay in xquery--query as long as we get timely responses from the
terminal, we can avoid this early unwanted redisplay.

* lisp/term/xterm.el:
(xterm-query-redisplay-timeout): New variable.
(xterm--read-event-for-query): New function.
(xterm--report-background-handler,xterm--version-handler,xterm--query):
Call it.

6 years agoSupport terminal focus notifications
Daniel Colascione [Sat, 9 Jun 2018 05:47:27 +0000 (22:47 -0700)]
Support terminal focus notifications

* lisp/frame.el (handle-focus-in,handle-focus-out): Make event
argument optional.
(blink-cursor-check): Make sure that the current frame is a
window-system frame before restarting the blink timer. TTY frames
can get focus, but don't need a blink timer because the terminal
will do the blinking.

* lisp/term/xterm.el
(xterm-handle-focus-in,xterm-handle-focus-out): New functions.
(xterm-rxvt-function-map): Recognize focus notification sequences.
(xterm--init-focus-tracking): New function.
(terminal-init-xterm): Call it.

6 years agoFix formatting in the face filter change
Daniel Colascione [Sat, 9 Jun 2018 04:21:47 +0000 (21:21 -0700)]
Fix formatting in the face filter change

* src/xfaces.c:
(evaluate_face_filter,filter_face_ref)
(merge_face_ref,syms_of_xfaces): Fix comments, formatting.

6 years agoMake setting inhibit-startup-screen in early init work
Daniel Colascione [Fri, 8 Jun 2018 23:21:39 +0000 (16:21 -0700)]
Make setting inhibit-startup-screen in early init work

* lisp/startup.el (command-line): Bind `inhibit-startup-screen'
around loading the site file instead of unconditionally
resetting it.

6 years agoDescribe flymake-start-on-save-buffer in manual and NEWS
João Távora [Fri, 8 Jun 2018 21:30:46 +0000 (22:30 +0100)]
Describe flymake-start-on-save-buffer in manual and NEWS

Fixes: bug#31738
* doc/misc/flymake.texi (Using Flymake, Customizable variables):
Mention flymake-start-on-save-buffer.

* etc/NEWS: Mention flymake-start-on-save-buffer.

6 years agoNew flymake-start-on-save-buffer custom variable
João Távora [Fri, 8 Jun 2018 18:35:31 +0000 (19:35 +0100)]
New flymake-start-on-save-buffer custom variable

Fixes: bug#21419
* lisp/progmodes/flymake.el (flymake-after-save-hook): Use
flymake-start-on-save-buffer.
(flymake-start-on-save-buffer): New custom variable.
(flymake-start-on-flymake-mode): Tweak docstring.

6 years agoCC Mode: Fontify unbalanced quotes in unconstrained multiline strings, etc.
Alan Mackenzie [Fri, 8 Jun 2018 16:42:18 +0000 (16:42 +0000)]
CC Mode: Fontify unbalanced quotes in unconstrained multiline strings, etc.

("Unconstrained" meaning that every string is multiline, without needing such
special marking as used by Pike Mode.)

* lisp/progmodes/cc-mode.el (c-pps-to-string-delim): Don't process the char
before BOB.
(c-multiline-string-check-final-quote): New function.
(c-bc-changed-stringiness): New variable.
(c-before-change-check-unbalanced-strings): Add handling for unconstrained
multiline strings.
(c-after-change-re-mark-unbalanced-strings): Add handling for unconstrained
multiline strings.  Handle escaped double quotes more accurately.

6 years ago; * etc/DEBUG: Add information about debugging libXft problems.
Eli Zaretskii [Fri, 8 Jun 2018 15:22:50 +0000 (18:22 +0300)]
; * etc/DEBUG: Add information about debugging libXft problems.

6 years agoClarify doc string of 'update-glyphless-char-display'
Eli Zaretskii [Fri, 8 Jun 2018 15:15:26 +0000 (18:15 +0300)]
Clarify doc string of 'update-glyphless-char-display'

* lisp/international/characters.el
(update-glyphless-char-display): Doc fix.  (Bug#31730)

6 years agoPort alignment verification to x86 --with-wide-int
Paul Eggert [Fri, 8 Jun 2018 15:08:03 +0000 (08:08 -0700)]
Port alignment verification to x86 --with-wide-int

Problem reported by Eli Zaretskii in:
https://lists.gnu.org/r/emacs-devel/2018-06/msg00238.html
* src/lisp.h (struct Lisp_Symbol, union vectorlike_header)
(struct Lisp_Cons, struct Lisp_String):
Do not check alignment if !USE_LSB_TAG, as alignment is
needed only if we are tagging the low-order bits.

6 years agoClarify subtle issues with 'eq' in byte-compiled code
Eli Zaretskii [Fri, 8 Jun 2018 15:06:34 +0000 (18:06 +0300)]
Clarify subtle issues with 'eq' in byte-compiled code

* doc/lispref/objects.texi (Equality Predicates): Explain why
byte-compiled code might compare literal objects with identical
contents as 'eq'.  (Bug#31688)

6 years ago; Tiny tpyo fix
Michal Nazarewicz [Fri, 8 Jun 2018 08:20:43 +0000 (09:20 +0100)]
; Tiny tpyo fix

* src/xfaces.c (face-remapping-alist): remove an empty ‘(3)’ introduced
in a docstring by mistake.

6 years agoOffer to open large files without modes
Daniel Colascione [Fri, 8 Jun 2018 05:05:33 +0000 (22:05 -0700)]
Offer to open large files without modes

* lisp/files.el:
(files--ask-user-about-large-file): New function.
(abort-if-file-too-large): Call it.
(find-file-noselect): Support new raw open.

6 years agoAdd support for per-window face remapping
Daniel Colascione [Thu, 7 Jun 2018 23:20:06 +0000 (16:20 -0700)]
Add support for per-window face remapping

Extend face specifications to support the notion of filtering to a
specific context and add a filter that limits a face specification to
windows having a certain parameter.

* src/xfaces.c:
(evaluate_face_filter,filter_face_ref): New functions.
(merge_face_ref): Ignore filtered face specifications.
(Fx_list_fonts,get_lface_attributes,merge_face_vectors)
(merge_named_face,merge_face_ref,merge_face_ref)
(Finternal_merge_in_global_face,Fface_font,lookup_named_face)
(lookup_basic_face,Fface_attributes_as_vector)
(x_supports_face_attributes_p)
(Fdisplay_supports_face_attributes_p,realize_named_face)
(compute_char_face,face_at_buffer_position)
(face_at_buffer_position,face_at_buffer_position)
(face_at_buffer_position)
(face_for_overlay_string,face_at_string_position,merge_faces):
Pass window to face machinery.
(syms_of_xfaces): Add :window and :filtered

* src/xdisp.c (init_iterator, handle_face_prop)
(handle_single_display_spec, merge_escape_glyph_face)
(merge_glyphless_glyph_face, get_next_display_element)
(next_element_from_display_vector, append_space_for_newline)
(extend_face_to_end_of_line,highlight_trailing_whitespace)
(maybe_produce_line_number)
(display_line, calc_line_height_property): Pass window to
face machinery.

* src/term.c (tty_menu_activate): Adjust to new face core
function signature.

* src/msdos.c (XMenuActivate): Adjust to new face core
function signature.

* src/fringe.c (draw_fringe_bitmap_1, Fset_fringe_bitmap_face):
Pass window to face machinery.

* src/font.c (font_range, Finternal_char_font): Pass window to
face machinery.

* src/dispnew.c (spec_glyph_lookup_face): Pass window to
face machinery.

* src/dispextern.h:
(lookup_named_face,lookup_basic_face)
(lookup_derived_face,merge_faces):
Add struct window arguments to prototypes.

6 years agoFit kill_buffer_xwidgets into 80
Paul Eggert [Fri, 8 Jun 2018 01:53:27 +0000 (18:53 -0700)]
Fit kill_buffer_xwidgets into 80

* src/xwidget.c (kill_buffer_xwidgets): Reindent and use C99
style to fit in 80 columns.

6 years agoMinor cleanup of save_excursion_restore
Paul Eggert [Fri, 8 Jun 2018 01:53:27 +0000 (18:53 -0700)]
Minor cleanup of save_excursion_restore

* src/editfns.c (save_excursion_restore): Use clearer names
for locals.  Free earlier, removing the need for a label and goto.

6 years agoNew function record_unwind_protect_excursion
Paul Eggert [Fri, 8 Jun 2018 01:53:27 +0000 (18:53 -0700)]
New function record_unwind_protect_excursion

This simplifies callers a bit, and will simplify future changes.
* src/eval.c (record_unwind_protect_excursion): New function.
* src/buffer.c (Fkill_buffer):
* src/bytecode.c (exec_byte_code):
* src/editfns.c (Fsave_excursion, Freplace_buffer_contents):
* src/lread.c (readevalloop, Feval_buffer):
* src/window.c (scroll_command):
Use it.

6 years ago* src/.gdbinit: Omit soon-obsolete comment.
Paul Eggert [Fri, 8 Jun 2018 01:53:26 +0000 (18:53 -0700)]
* src/.gdbinit: Omit soon-obsolete comment.

6 years agoFix ftfont_open2 failure cleanup
Paul Eggert [Fri, 8 Jun 2018 01:53:26 +0000 (18:53 -0700)]
Fix ftfont_open2 failure cleanup

* src/ftfont.c (ftfont_open2): Don’t increment counter if failing.
Avoid use-after-free once the increment bug is fixed.

6 years agoDon’t over-align if WIDE_EMACS_INT
Paul Eggert [Fri, 8 Jun 2018 01:53:26 +0000 (18:53 -0700)]
Don’t over-align if WIDE_EMACS_INT

* src/lisp.h (GCALIGNED_UNION): New macro.
(struct Lisp_Symbol, union vectorlike_header)
(struct Lisp_Cons, struct Lisp_String):
Use it to avoid possible over-alignment if !USE_LSB_TAG.

6 years agoFix GC-related commentary
Paul Eggert [Fri, 8 Jun 2018 01:53:26 +0000 (18:53 -0700)]
Fix GC-related commentary

* src/lisp.h: USE_STACK_LISP_OBJECTS is no longer experimental.
Also, remove confusion about scope vs lifetime.
And say that stack-allocated strings should not be given
text properties.

6 years agoMake cl-print respect print-quoted (bug#31649)
Gemini Lasswell [Tue, 29 May 2018 18:41:09 +0000 (11:41 -0700)]
Make cl-print respect print-quoted (bug#31649)

* lisp/emacs-lisp/cl-print.el (cl-print-object) <cons>: Observe
print-quoted when printing quote and its relatives.  Add printing of
'function' as #'.

6 years agoLet isearch-yank-kill enable isearch-mode if needed (Bug#21419)
Noam Postavsky [Wed, 6 Jun 2018 01:07:19 +0000 (21:07 -0400)]
Let isearch-yank-kill enable isearch-mode if needed (Bug#21419)

* lisp/isearch.el (isearch-yank-kill): Enable isearch-mode if needed.

6 years agoAccept plists when serializing and parsing JSON
João Távora [Fri, 1 Jun 2018 23:23:38 +0000 (00:23 +0100)]
Accept plists when serializing and parsing JSON

* doc/lispref/text.texi (Parsing JSON): Mention plist support.

* src/json.c (lisp_to_json_toplevel_1): Serialize plists to json.
(Fjson_serialize): Mention plists in docstring.
(enum json_object_type): Add json_object_plist.
(json_to_lisp): Parse JSON into plists.
(json_parse_object_type): Consider plists.
(Fjson_parse_string): Mention plists in docstring.
(syms_of_json): New Qplist sym_of_json.
(lisp_to_json): Update comment.

* test/src/json-tests.el (json-serialize/object)
(json-parse-string/object): New plist tests.

6 years agoRemove Tramp "obex" and "synce" methods
Michael Albinus [Thu, 7 Jun 2018 09:16:11 +0000 (11:16 +0200)]
Remove Tramp "obex" and "synce" methods

* doc/misc/tramp.texi (GVFS based methods): Remove `obex' and `synce'.

* etc/NEWS: Mention obsolete Tramp "obex" and "synce" methods.

* lisp/net/tramp-gvfs.el (tramp-gvfs-methods):
Remove "obex" and "synce".
(top): Do not add defaults for "obex" and "synce".
(tramp-bluez-service, tramp-bluez-interface-manager)
(tramp-bluez-interface-adapter)
(tramp-bluez-discover-devices-timeout, tramp-bluez-discovery)
(tramp-bluez-devices, tramp-hal-service, tramp-hal-path-manager)
(tramp-hal-interface-manager, tramp-hal-interface-device)
(tramp-bluez-address, tramp-bluez-device)
(tramp-bluez-list-devices, tramp-bluez-property-changed)
(tramp-bluez-device-found, tramp-bluez-parse-device-names)
(tramp-synce-list-devices, tramp-synce-parse-device-names): Remove.
(tramp-gvfs-handler-mounted-unmounted)
(tramp-gvfs-connection-mounted-p, tramp-gvfs-mount-spec): Do not
handle "obex" and "synce".

6 years agoFix unexpected jumps of window-point in 'set-window-configuration' (Bug#31695)
Martin Rudalics [Thu, 7 Jun 2018 07:59:38 +0000 (09:59 +0200)]
Fix unexpected jumps of window-point in 'set-window-configuration' (Bug#31695)

* src/window.c (Fset_window_configuration): Prevent that the
fix for Bug#12208 affects restoration of window points when
using separate minibuffer frames (Bug#31695).