Commit graph

42928 commits

Author SHA1 Message Date
Basil L. Contovounesios
1abf3ae854 Pacify unused function warning in xfns.c with GTK2
* src/xfns.c (x_get_net_workarea, x_get_monitor_for_frame)
(x_make_monitor_attribute_list, x_get_monitor_attributes_fallback):
[HAVE_XINERAMA] (x_get_monitor_attributes_xinerama)
[HAVE_XRANDR] (x_get_monitor_attributes_xrandr)
(x_get_monitor_attributes): Fix #ifdefs around definitions to avoid
unused function warnings regardless of GTK use (bug#46509).
[HAVE_XRANDR] (x_get_monitor_attributes_xrandr): Undefine
RANDR13_LIBRARY after it's been used.
2021-02-16 16:46:53 +00:00
Lars Ingebrigtsen
0bd846c174 Rename minor-modes to local-minor-modes
* doc/lispref/modes.texi (Minor Modes): Update documentation.
* lisp/simple.el (completion-with-modes-p): Change usage.

* lisp/emacs-lisp/easy-mmode.el (define-minor-mode): Change usage.

* src/buffer.c: Rename from minor_modes to local_minor_modes
throughout.
(syms_of_buffer): Rename minor-modes to local-minor-modes.

* src/buffer.h (struct buffer): Rename minor_modes_.

* src/pdumper.c (dump_buffer): Update hash and usage.
2021-02-15 13:08:21 +01:00
Eli Zaretskii
1c229d939b * src/xdisp.c (move_it_to): Fix last change. (Bug#46316) 2021-02-14 22:11:05 +02:00
Lars Ingebrigtsen
a4c8b6e7c6 Fix dumping of buffers after minor_modes was added
* src/pdumper.c (dump_buffer): Set minor_modes to nil before dumping.
2021-02-14 14:00:51 +01:00
Lars Ingebrigtsen
8cdb61679e Revert the bit about command_modes in previous patch set
* src/data.c (Fcommand_modes): Remove the subr bit -- it's not
necessary since it can just use a predicate.
* src/lisp.h (GCALIGNED_STRUCT): Remove command_modes.

* src/lread.c (defsubr): Remove command_modes.
2021-02-14 13:57:59 +01:00
Lars Ingebrigtsen
58e0c8ee86 Extend the syntax of `interactive' to list applicable modes
* doc/lispref/commands.texi (Using Interactive): Document the
extended `interactive' form.
* doc/lispref/loading.texi (Autoload): Document list-of-modes
form.

* lisp/emacs-lisp/autoload.el (make-autoload): Pick the list of
modes from `interactive' out of the functions.

* lisp/emacs-lisp/bytecomp.el (byte-compile-lambda): Allow for the
extended `interactive' form.

* src/callint.c (Finteractive): Document the extended form.

* src/data.c (Finteractive_form): Return the interactive form in
the old format (even when there's an extended `interactive') to
avoid having other parts of Emacs be aware of this.
(Fcommand_modes): New defun.

* src/emacs-module.c (GCALIGNED_STRUCT): Allow for modules to
return command modes.

* src/lisp.h: New function module_function_command_modes.
2021-02-14 13:21:24 +01:00
Lars Ingebrigtsen
760910f491 Add a new buffer-local variable `minor-modes'
* lisp/emacs-lisp/easy-mmode.el (define-minor-mode): Keep
`minor-modes' updated.
* src/buffer.c (bset_minor_modes, Fmake_indirect_buffer)
(reset_buffer, init_buffer_once): Initialise `minor-modes'.
(syms_of_buffer): Add `minor-modes' as a new permanently-local
variable.

* src/buffer.h (struct buffer): Add minor_modes_.
2021-02-14 12:37:44 +01:00
Alan Third
68bd6f3ea9 Fix flicker when resizing NS frame programmatically (bug#46155)
; Incidentally fixes bug#21326.

* src/nsterm.m ([EmacsView viewWillDraw]): New function.
([EmacsView viewDidResize:]): We now have to mark the frame for
display on resize.
([EmacsView initFrameFromEmacs:]): Retain frame contents on resize.
([EmacsView updateLayer]): Don't update the layer if the frame is
still garbaged.
2021-02-13 22:41:25 +00:00
Alan Third
0474a0d7d4 Remove aliasing on SVG images under scaled NS frames
* src/image.c (FRAME_SCALE_FACTOR): New #define for getting frame
scale factor.
(image_set_transform):
(svg_load_image): Use FRAME_SCALE_FACTOR.
* src/nsterm.m (ns_frame_scale_factor): Get the scale factor for an NS
frame.
2021-02-13 22:40:47 +00:00
Eli Zaretskii
56c42bd28d Fix I-search at EOB when long lines are truncated
* src/xdisp.c (move_it_to): Fix logic when TO_CHARPOS is at the
end of an hscrolled line which ends at EOB.  (Bug#46316)
2021-02-13 17:27:02 +02:00
Eli Zaretskii
c535fe647c ; * src/json.c (Fjson_parse_string): Fix the doc string. 2021-02-13 16:10:53 +02:00
Philipp Stephani
1680a1c094 Pass 'struct json_configuration' as const where possible.
The JSON serialization and parsing functions don't need to modify
these structures.

* src/json.c (lisp_to_json_nonscalar_1, lisp_to_json_nonscalar)
(lisp_to_json, json_to_lisp): Mark configuration object parameter as
const.
2021-02-13 14:37:19 +01:00
Philipp Stephani
625de7e403 Allow any JSON value at the top level (Bug#42994).
Newer standards like RFC 8259, which obsoletes the earlier RFC 4627,
now allow any top-level value unconditionally, so Emacs should too.

* src/json.c (Fjson_serialize, Fjson_insert): Pass JSON_ENCODE_ANY to
allow serialization of any JSON value.  Call 'lisp_to_json' instead of
'lisp_to_json_toplevel'.  Remove obsolete comments
(neither JSON_DECODE_ANY nor JSON_ALLOW_NUL are allowed here).  Reword
documentation strings.
(Fjson_parse_string, Fjson_parse_buffer): Pass JSON_DECODE_ANY to
allow deserialization of any JSON value.  Reword documentation
strings.
(lisp_to_json_nonscalar, lisp_to_json_nonscalar_1): Rename from
"toplevel" to avoid confusion.
(lisp_to_json): Adapt caller.
* test/src/json-tests.el (json-serialize/roundtrip-scalars): New unit
test.
* doc/lispref/text.texi (Parsing JSON): Update documentation.
2021-02-13 14:37:19 +01:00
Eli Zaretskii
1a6c7c1095 Fix vertical cursor motion among many images
* src/xdisp.c (move_it_in_display_line_to): Consider it
MOVE_POS_MATCH_OR_ZV if we are just after an image, stretch, or
display string, and the position matches exactly.  This is needed
when one image follows another at TO_CHARPOS.  (Bug#46464)
2021-02-13 14:57:25 +02:00
Alan Mackenzie
203e61ff83 Make recursive minibuffers and recursive edits work together
* lisp/minibuffer.el (exit-minibuffer): When in a minibuffer, throw an error
should the command loop nesting level be wrong.

* src/lisp.h (minibuffer_quit_level): declare as an extern.
(command_loop_level): Move definition from src/window.h

* src/window.h (command_loop_level): move definition to src/lisp.h.

* src/eval.c (minibuffer_quit_level): Move this variable to file level from
being a static inside internal_catch.
(internal_catch): Simplify the logic.

* src/minibuf.c (Vcommand_loop_level_list): New variable.
(move_minibuffer_onto_frame): Set the major mode of  *Minibuf-0*.
(Fminibuffer_innermost_command_loop_p): New primitive.
(Fabort_minibuffers): Check the command loop level before throwing t to 'exit,
and set minibuffer_quit_level too.
(read_minibuf): New variable calling_window.
Before stacking up minibuffers on the current mini-window, check that the
mini-window is not the current one.
Do not call choose_minibuf_frame from read_minibuf's unwinding process.
Bind calling_frame and calling_window over the recursive edit.
Set the new minibuffer's major mode directly.
Remove the switching away from the minibuffer after the recursive edit.
(get_minibuffer): Record the command loop level in new variable
Vcommand_loop_level_list.  No longer set the major mode of a returned
minibuffer.
(minibuf_c_loop_level): New function.
(read_minibuf_unwind): New variables calling_frame, calling_window are unbound
from the binding stack.  Remove old variable `window', which could not be set
reliably to the expired mini-window.
The expired minibuffer is determined as the nth in the list, rather than the
contents of the current or previous mini-window.
Switch the current window away from the mini-window here (moved from
read_minibuf).
2021-02-11 21:37:45 +00:00
Andrii Kolomoiets
0e2b123a4e Use frame monitor in frame_float
* src/frame.c (frame_float): Use frame monitor attributes instead
of attributes of the main monitor (bug#46406).
2021-02-11 10:09:41 +01:00
Paul Eggert
4459dcc078 Fix file lock issue (Bug#46397)
* src/filelock.c (current_lock_owner):
Also treat ENOTDIR as meaning the lock file does not exist.
2021-02-10 10:58:40 -08:00
Eli Zaretskii
9b0d76e93b Bump FACE_CACHE_BUCKETS_SIZE to 1009
* src/xfaces.c (FACE_CACHE_BUCKETS_SIZE): Make it 1009, a prime
number, per the comment.  Reported by Win Treese <treese@acm.org>.
2021-02-10 18:10:17 +02:00
Lars Ingebrigtsen
627a024675 Note that the `values' variable is now obsolete
* src/lread.c (syms_of_lread): Note that it's obsolete in the doc
string (because we can't mark it as obsolete "properly" yet,
because that leads to compilation warnings when somebody
(let (values) ... values).
2021-02-09 16:28:38 +01:00
Lars Ingebrigtsen
f3fd9591cf Fix count-lines problem in non-ASCII buffers
* src/fns.c (Fline_number_at_pos): Get the correct start position
in non-ASCII buffers (bug#22763).
2021-02-09 08:12:14 +01:00
Eli Zaretskii
6b351b2d76 Fix scrolling past tall images
* src/xdisp.c (try_window): Don't try checking the margins if the
window is vscrolled, as that could cause unnecessary recentering
when tall images are displayed.  (Bug#46320)
2021-02-08 18:04:00 +02:00
Lars Ingebrigtsen
5461808c40 Allow Fline_number_at_pos being called with a marker
* src/fns.c (Fline_number_at_pos): Also allow being called with a
marker (since the Lisp function allowed that).
2021-02-07 16:42:25 +01:00
Lars Ingebrigtsen
56e76f0eb0 Move line-number-at-pos to C
* doc/lispref/positions.texi (Text Lines): Revert previous change.

* lisp/simple.el (line-number-at-pos): Remove definition.

* lisp/simple.el (count-lines): Revert back to using
`forward-line', because there seems to be a disagreement on how
lines should be counted in a region...

* src/fns.c (Fline_number_at_pos): Rename from
Fline_number_at_position and adjust parameter list.
2021-02-07 16:28:34 +01:00
Lars Ingebrigtsen
094a109b8e Add a new function 'line-number-at-position'
* doc/lispref/positions.texi (Text Lines): Document it.

* lisp/simple.el (count-lines): Use it.
(line-number-at-pos): Ditto.

* src/fns.c (Fline_number_at_position): New function (bug#22763).
2021-02-07 16:03:02 +01:00
Martin Rudalics
29e9cf291e Permit zero value for 'child-frame-border-width' parameter (Bug#46184)
* doc/lispref/frames.texi (Layout Parameters): Update entry on
'child-frame-border-width' parameter.
* src/frame.c (make_frame): Init child_frame_border_width to -1.
(Fframe_child_frame_border_width): Return internal border width if
child frame border width parameter is nil.
(gui_report_frame_params): Report nil as child frame border
width parameter if the frame value is negative.
* src/frame.h (FRAME_INTERNAL_BORDER_WIDTH): Return value of
child frame border width only if it is not negative.
* src/xfns.c (Fx_create_frame): Default child frame border to -1
when recording it in its frame slot via gui_default_parameter.
* src/nsfns.m (ns_set_child_frame_border_width): Handle nil ARG.
(Fx_create_frame): Default child frame border width parameter to
nil.
* src/w32fns.c (w32_set_child_frame_border_width): Handle nil ARG.
(Fx_create_frame): Default child frame border width parameter to
nil.
* src/xfns.c (x_set_child_frame_border_width): Handle nil ARG.
(Fx_create_frame): Default child frame border width parameter to
nil.
2021-02-06 18:22:29 +01:00
Eli Zaretskii
b84b8dff70 Fix copying text properties in 'format'
* src/editfns.c (styled_format): Fix accounting for text
properties that come from the format string.  (Bug#46317)

* test/src/editfns-tests.el (format-properties): Add new tests for
bug#46317.
2021-02-06 11:54:08 +02:00
Eli Zaretskii
a6f23c226e ; * src/xdisp.c (Fwindow_text_pixel_size): Fix comment. 2021-02-05 22:04:15 +02:00
Eli Zaretskii
07ead60a82 ; * src/xdisp.c (Fwindow_text_pixel_size): Another minor fix. 2021-02-05 14:27:46 +02:00
Eli Zaretskii
764db69dd0 Fix last change in 'window-text-pixel-size'
* src/xdisp.c (Fwindow_text_pixel_size): Fix last change: preserve
the original Y coordinate after start_display, instead of zeroing
it out.  Reported by martin rudalics <rudalics@gmx.at>.
2021-02-05 14:24:01 +02:00
Eli Zaretskii
a2d7f3f171 Avoid overwriting minibuffer prompt by keystrokes echo
* src/lread.c (Fread_char, Fread_event, Fread_char_exclusive):
Call cancel_echoing to make sure the prompt is not obscured by
keystrokes echo.  (Bug#46243)
2021-02-04 19:35:07 +02:00
Eli Zaretskii
914cb7a1d6 Fix 'window-text-pixel-size' for short spans of text
* src/xdisp.c (Fwindow_text_pixel_size): Support the use case
where FROM and TO belong to the same screen line.  Reported by
Yuan Fu <casouri@gmail.com>.
2021-02-04 18:00:29 +02:00
Glenn Morris
7e86357b42 Merge from origin/emacs-27
9c75434173 Fix build failure on macOS 10.7 (bug#46036)
ca44ea18ef Improve documentation of auto-resize-tool/tab-bars
2021-02-03 08:11:08 -08:00
Lars Ingebrigtsen
56804edc83 Fix up invalid_syntax error signalling
* src/lread.c (invalid_syntax_lisp): Instead of putting the
line/column in a string, signal an error containing the numbers as
data.  This allows for easier post-processing and is how other
similar errors (like (forward-sexp 1)) do it.
2021-02-02 09:26:02 +01:00
Lars Ingebrigtsen
e38e7b7bc1 Make syntax errors say the line/column they appear at
* src/lisp.h: Add count_lines prototype.
* src/lread.c (invalid_syntax_lisp): New function (bug#36970).
(invalid_syntax): Extend function to take a readcharfun parameter.
(read_emacs_mule_char, character_name_to_code): Pass in.
(read_escape, invalid_radix_integer, read1): Ditto.

* src/xdisp.c (count_lines): Add a more succinct shim over
display_count_lines.
2021-02-01 17:04:17 +01:00
Stefan Kangas
d987ca6f22 Remove another variable obsolete since Emacs 23.2
* src/keymap.c (syms_of_keymap, Fdefine_key):
* lisp/subr.el (define-key-rebound-commands): Remove variable obsolete
since Emacs 23.2.
2021-02-01 12:29:10 +01:00
Stefan Kangas
f215332c8b Add cross-references to defvar-local
* src/data.c (Fmake_variable_buffer_local):
* src/eval.c (Fdefvar): Add cross-references to 'defvar-local'.
2021-02-01 12:29:09 +01:00
Alan Mackenzie
427d4b3c69 Minimise the time Vminibuffer_list is in an inconsistent state (src/minibuf.c)
src/minibuf.c (get_minibuffer): Move the XSETCAR which writes the new
minibuffer into Vminibuffer_list to immediately after the MB's creation, so
that the list is in a consistent state before calling fundamental-mode or
minibuffer-inactive-mode.
2021-01-31 17:24:23 +00:00
Lars Ingebrigtsen
5cf9b915fa execute-kbd-macro doc string clarification
* src/macros.c (Fexecute_kbd_macro): Mention that the buffer is
(potentially) changed (bug#37396).
2021-01-31 08:46:02 +01:00
Alan Third
9c75434173 Fix build failure on macOS 10.7 (bug#46036)
* src/nsfns.m (ns_set_represented_filename): Define the NSNumber in a
more compatible manner.
2021-01-30 22:14:22 +00:00
Alan Mackenzie
636ef445af With minibuffer-follows-selected-frame `hybrid', preserve recursive Mbuffers
...when enable-recursive-minibuffers is non-nil, and several minibuffers are
activated from different frames.  Also set the major mode of a reused active
minibuffer to `fundamental-mode' - up till now it's been
minibuffer-inactive-mode.

* src/minibuf.c (read_minibuf): with the indicated settings of variables,
"stack up" all containing minibuffers on the mini-window of the current
frame.  Delete another, now superfluous such stacking up.
(set_minibuffer_mode): New function.
(get_minibuffer): Call the above new function (twice), in place of inline
code, ensuring active minibuffers are never left in minibuffer-inactive-mode.
2021-01-30 21:16:35 +00:00
Eli Zaretskii
419a33eb1d Fix NS build broken by a recent change
* src/nsmenu.m (set_frame_menubar, Fns_reset_menu): Adapt to
recent changes in set_frame_menubar.  (Bug#45759)
2021-01-30 21:13:53 +02:00
Stefan Kangas
3555657585 Remove unused argument from set_frame_menubar (Bug#45759)
* src/w32menu.c (set_frame_menubar):
* src/xmenu.c (set_frame_menubar): Remove unused argument.
All callers updated.
2021-01-30 15:59:13 +01:00
Eli Zaretskii
ca44ea18ef Improve documentation of auto-resize-tool/tab-bars
* src/xdisp.c (syms_of_xdisp) <auto-resize-tool-bars>
<auto-resize-tab-bars>: Doc fix.  (Bug#46178)
2021-01-30 16:15:00 +02:00
Mattias Engdegård
7415c66d8b ; * src/process.c (child_signal_read): Don't report EAGAIN as error 2021-01-29 22:28:41 +01:00
Eli Zaretskii
75eb2d0e85 Support 'operating-system-release' on MS-Windows
* src/w32fns.c (w32_version_string) [WINDOWSNT]: New function.
* src/w32common.h (w32_version_string) [WINDOWSNT]: Add prototype.
* src/editfns.c (init_editfns) [WINDOWSNT]: Produce a non-nil
string with the OS version.
2021-01-29 13:52:31 +02:00
Eli Zaretskii
ae2e2b6acd Improve doc string of 'operating-system-release'
* src/editfns.c (syms_of_editfns) <operating-system-release>: Doc
fix.  (Bug#39940)
2021-01-29 09:45:13 +02:00
Lars Ingebrigtsen
3f92d00932 operating-system-release doc string improvement
* src/editfns.c (syms_of_editfns): Be more precise about what
`operating-system-release' is (bug#39940).
2021-01-29 07:22:14 +01:00
Stefan Monnier
592a230832 * src/fns.c (hash_string): Fix bug#46111
Use `memcpy` instead of an unaligned memory access.  On x86 at least,
GCC turns this `memcpy` into a single `mov`, so it's about as fast.
2021-01-28 12:27:27 -05:00
Glenn Morris
0ca75f1956 Merge from origin/emacs-27
3f610177ad Avoid sending systemd shutdown notifications if non-daemon
009df5cb3c * src/cmds.c (Fforward_line): Doc fix.  (Bug#46027)
ee1c54ebc0 Improve documentation of sendmail.el defcustom's
2021-01-27 07:55:11 -08:00
Eli Zaretskii
ff03411269 Fix display of stretches of whitespace in the display margins
* src/xdisp.c (produce_stretch_glyph): Truncate the stretch glyph
due to line wrap only when drawing in the text area.
* src/xterm.c (x_draw_stretch_glyph_string):
* src/w32term.c (w32_draw_stretch_glyph_string): Fix the
adjustment of the stretch X and width so that stretch glyphs could
be drawn in the left margin.  Reported by Paul W. Rankin
<pwr@bydasein.com>.
2021-01-27 17:52:51 +02:00