Commit graph

144578 commits

Author SHA1 Message Date
Philipp Stephani
0ea7bb3578 Consistently check for FD_SETSIZE overflow.
Previously this was only checked in a few places.  Now assert that
file descriptors are within the expected range whenever we'd otherwise
introduce undefined behavior.

* src/process.c (add_read_fd, add_process_read_fd, delete_read_fd)
(recompute_max_desc, delete_write_fd, compute_input_wait_mask)
(compute_non_process_wait_mask, compute_non_keyboard_wait_mask)
(compute_write_mask, clear_waiting_thread_info)
(update_processes_for_thread_death, Fset_process_thread)
(create_process, create_pty, Fmake_pipe_process)
(Fprocess_datagram_address, Fset_process_datagram_address)
(Fmake_serial_process, finish_after_tls_connection)
(connect_network_socket, deactivate_process)
(server_accept_connection, wait_reading_process_output)
(read_process_output, read_and_dispose_of_process_output)
(send_process, Fcontinue_process, Fprocess_send_eof)
(Fprocess_filter_multibyte_p, keyboard_bit_set)
(add_timer_wait_descriptor, setup_process_coding_systems): Add
assertions to document and check that file descriptors are within the
expected range when used as file descriptor set elements or array
subscripts.
2020-12-30 23:04:34 +01:00
Philipp Stephani
3a6137a498 Extend and overhaul FD_SETSIZE overflow tests.
Instead of trying to generate the right number of processes,
pre-create lots of unused pipe processes until creation fails.  Extend
the tests to the 'pty' connection type and other kinds of process
objects.

* test/src/process-tests.el (process-tests--ignore-EMFILE)
(process-tests--with-buffers, process-tests--with-processes)
(process-tests--with-many-pipes, process-tests--with-temp-file)
(process-tests--with-temp-directory): New helper macros.
(process-tests/fd-setsize-no-crash/make-process): Renamed from
'process-tests/fd-setsize-no-crash'.  Fail on timeout.  Also test the
'pty' connection type.  Pre-create lots of pipe processes so we reach
the FD_SETSIZE limit faster.  Ignore EMFILE more precisely, if
possible.
(process-tests/fd-setsize-no-crash/make-pipe-process)
(process-tests/fd-setsize-no-crash/make-network-process)
(process-tests/fd-setsize-no-crash/make-serial-process): New tests
that test FD_SETSIZE limits for other kinds of processes.
(process-tests--EMFILE-message): New helper function and cache
variable.
(process-tests--new-pty): New helper function.
2020-12-30 23:04:31 +01:00
Philipp Stephani
72dc46584c * src/nsterm.m (ns_select): Fix off-by-one error, and add assertion 2020-12-30 22:36:42 +01:00
Philipp Stephani
f80eb0d448 ; * test/src/process-tests.el: Fix comment style. 2020-12-30 22:36:42 +01:00
Alan Mackenzie
059f1863a2 CC Mode: correct the handling of empty strings
In particular, have the macro cache invalidated after its last use in
c-before-change.

* lisp/progmodes/cc-langs.el (c-get-state-before-change-functions): Remove
c-invalidate-macro-cache from the entries it's in, moving it to....

* lisp/progmodes/cc-mode.el (c-before-change): Call c-invalidate-macro-cache
directly from the functions, after the call to c-invalidate-state-cache.
2020-12-30 18:31:56 +00:00
Alan Third
c4c8da67e8 Fix Help menu on macOS
* src/nsmenu.m (ns_update_menubar): Make sure to reset the help menu
when we move it to another submenu.
2020-12-30 15:39:26 +00:00
Mattias Engdegård
26bfaa1f78 Use standard key symbols in NS menu entries
* src/nsmenu.m (skipspc): Remove.
(key_symbols, prettify_key): New.
([EmacsMenu fillWithWidgetValue:]): Call prettify_key.
2020-12-30 13:50:49 +01:00
Mattias Engdegård
f232715aac ; * src/nsmenu.m: Undo unintentional change 2020-12-30 13:14:16 +01:00
Stefan Kangas
fd669fbdeb Remove redundant 'function's around lambda in align.el
* lisp/align.el (align-rules-list, align-exclude-rules-list)
(align-vhdl-rules-list, align-highlight-rule): Remove redundant
'function's around lambda.
2020-12-30 13:07:58 +01:00
Dmitry Gutov
13b59c690a Add 'project-relative' as value for 'xref-file-name-display'
* lisp/progmodes/xref.el (xref-file-name-display): Document new value.
(xref-location-group ((l xref-file-location))): Handle the new value.
(xref--project-root): Extract from the default method of
'xref-backend-references' so it can be used in above's new code.
Also fix an old bug in the "backward compat" branch.

* lisp/progmodes/xref.el (xref--project-root-memo): New variable.

* test/lisp/progmodes/xref-tests.el: Add test cases for the three
possible settings of 'xref-file-name-display'.

Co-authored-by: Tobias Rittweiler <trittweiler@gmail.com>
2020-12-30 13:48:55 +02:00
Stefan Kangas
dd662fc972 Fix some over-wide docstrings
* lisp/cedet/semantic/analyze/refs.el
(semantic-analyze-refs-proto)
(semantic-analyze-refs-impl):
* lisp/cedet/semantic/symref.el
(semantic-symref-hit-to-tag-via-buffer):
* lisp/emacs-lisp/chart.el (chart-axis-draw):
* lisp/emacs-lisp/cl-macs.el (cl-defstruct, cl-loop):
* lisp/emacs-lisp/eieio-core.el (eieio--add-new-slot):
* lisp/eshell/em-unix.el (eshell/info):
* lisp/gnus/deuglify.el (gnus-outlook-rearrange-article):
* lisp/gnus/gnus-agent.el (gnus-agent-read-article-number):
* lisp/gnus/gnus-util.el (gnus-put-overlay-excluding-newlines)
(gnus-put-text-property-excluding-newlines):
* lisp/gnus/message.el (message-sort-headers):
* lisp/gnus/nntp.el (nntp-with-open-group)
(nntp-with-open-group-function):
* lisp/gnus/nnvirtual.el (nnvirtual-create-mapping):
* lisp/mail/feedmail.el (feedmail-fiddle-list-of-fiddle-plexes)
(feedmail-queue-reminder, feedmail-mail-send-hook-splitter):
* lisp/net/dictionary.el (dictionary-do-matching):
* lisp/obsolete/longlines.el (longlines-auto-wrap):
* lisp/org/ob-sql.el (org-babel-sql-dbstring-vertica):
* lisp/org/ol-bbdb.el (org-bbdb-date-list):
* lisp/progmodes/cc-cmds.el (c-mark-function):
* lisp/progmodes/cperl-mode.el (cperl-add-tags-recurse)
(cperl-add-tags-recurse-noxs-fullpath)
(cperl-add-tags-recurse-noxs):
* lisp/progmodes/etags.el (tags-search):
* lisp/progmodes/verilog-mode.el (verilog-delete-auto-buffer)
(verilog-auto-re-search-do, verilog-expand-vector-internal):
* lisp/textmodes/reftex-parse.el (reftex-init-section-numbers):
* lisp/textmodes/reftex-toc.el
(reftex-toc-load-all-files-for-promotion):
* lisp/textmodes/sgml-mode.el (html-mode):
* lisp/textmodes/table.el (table--transcoord-cache-to-table)
(table--transcoord-table-to-cache, table--remove-eol-spaces)
(table--region-in-cell-p, table-goto-bottom-right-corner)
(table-split-cell-horizontally):
* lisp/url/url-handlers.el (url-insert):
* lisp/vc/ediff-util.el (ediff-inferior-compare-regions): Fix doc
strings to not exceed 80-column limits.  (Bug#44858)
2020-12-30 12:44:19 +01:00
Mattias Engdegård
d0a2543986 Plug NS memory leaks (bug#45502)
* src/nsmenu.m ([EmacsMenu addItemWithWidgetValue:attributes:]):
Mark allocated and owned objects for autorelease.
2020-12-30 11:33:42 +01:00
Juri Linkov
cd4a51695f Add variables read-char-choice-use-read-key and y-or-n-p-use-read-key
* lisp/subr.el (read-char-choice-use-read-key): New variable.
(read-char-choice): Use read-char-from-minibuffer when
read-char-choice-use-read-key is nil.
(y-or-n-p-use-read-key): New variable.
(y-or-n-p): Restore old code that calls read-key to use it when
y-or-n-p-use-read-key is non-nil.

* lisp/dired-aux.el (dired--no-subst-ask, dired-query):
* lisp/files.el (files--ask-user-about-large-file)
(hack-local-variables-confirm):
* lisp/userlock.el (ask-user-about-supersession-threat):
* lisp/wid-edit.el (widget-choose): Revert to use read-char-choice
instead of read-char-from-minibuffer.

https://lists.gnu.org/archive/html/emacs-devel/2020-12/msg01919.html
2020-12-30 11:54:01 +02:00
Michael Albinus
baeb82df8b * src/dbusbind.c (XD_BASIC_DBUS_TYPE): Fix error in declaration. 2020-12-30 10:49:48 +01:00
Juri Linkov
75191b0af2 In Isearch bind 'C-s M-y' to isearch-yank-pop-only with old code (bug#45483)
* lisp/isearch.el (isearch-menu-bar-yank-map, isearch-mode-map):
(isearch-forward): Use isearch-yank-pop-only instead of isearch-yank-pop.
(isearch-yank-pop): Mention isearch-yank-pop-only.
(isearch-yank-pop-only): New command with old body from Emacs 27.
2020-12-30 11:30:57 +02:00
Stefan Kangas
e5c5a8f959 ; * etc/NEWS: Move entry to correct heading. 2020-12-30 10:06:07 +01:00
Stefan Kangas
d22fa9eb67 Minor cleanup in keymap.c
* src/keymap.c (get_keymap, keymap_parent, Fset_keymap_parent)
(store_in_keymap, Fdefine_key, Flookup_key, define_as_prefix)
(silly_event_symbol_error, current_minor_maps)
(Fcurrent_active_maps, Fkey_binding, Flocal_key_binding)
(Fminor_mode_key_binding, Fdefine_prefix_command)
(Faccessible_keymaps, Fdescribe_buffer_bindings)
(describe_vector, Fwhere_is_internal): Minor cleanup.
2020-12-30 09:43:38 +01:00
Lars Ingebrigtsen
dc771b6c40 Also count symbol plists in memory-report
* lisp/emacs-lisp/memory-report.el (memory-report--symbol-plist):
New function.
(memory-report): Use it.
2020-12-30 08:29:06 +01:00
Lars Ingebrigtsen
3c0c47b3a7 Revert "Switch add-to-ordered-list to eql"
This reverts commit b4fd857ead.

I misunderstood the purposed of the function.
2020-12-30 08:08:07 +01:00
Stefan Kangas
4b6fcb072a ; Fix my previous commit
* test/src/chartab-tests.el (chartab-test-char-table-extra-slot): Fix
test.
2020-12-30 08:36:04 +01:00
Stefan Kangas
2d58e0e803 Add some char-table tests
* test/src/chartab-tests.el (chartab-test-char-table-p)
(chartab-test-char-table-subtype)
(chartab-test-char-table-parent)
(chartab-test-char-table-extra-slot): New tests.
2020-12-30 08:32:36 +01:00
Lars Ingebrigtsen
b4fd857ead Switch add-to-ordered-list to eql
* doc/lispref/lists.texi (List Variables): Update documentation.

* lisp/subr.el (add-to-ordered-list): Switch to eql (bug#45539).
2020-12-30 04:48:13 +01:00
Lars Ingebrigtsen
dc308c80ee Improve the long' computation of mode-line-compact'
* src/xdisp.c (display_mode_line): Compute `long' based on total
window width, and use the passed-in window instead of the selected
window.
2020-12-30 03:34:17 +01:00
Lars Ingebrigtsen
cfb0f1c07c Add caveat about the long' mode-line-compact' setting
* doc/lispref/modes.texi (Mode Line Basics): Elaborate on the
`long' setting.
2020-12-30 03:31:01 +01:00
Tobias Rittweiler
fdb725c384 Minor refactoring of xref-tests
* test/lisp/progmodes/xref-tests.el (xref-tests-data-dir):
Rename to 'xref-tests--data-dir'.
(xref-tests--matches-in-data-dir, xref-tests--locations-in-data-dir):
New functions.  Factored out from test cases and updated usage sites
to use them.
2020-12-30 04:10:08 +02:00
Alan Third
90bd3b3d69 Don't calculate macOS menu data for GNUstep (bug#45502)
* src/nsmenu.m ([EmacsMenu fillWithWidgetValue:]): #ifdef out code
that has no effect on GNUstep and autorelease alloc'd objects.
2020-12-29 21:13:29 +00:00
Artem Loenko
a88f63500e * src/Makefile.in (DO_CODESIGN): Fix architecture for Apple Silicon 2020-12-29 20:42:01 +01:00
Juri Linkov
0a82e66db4 Use explicit "--color=auto" in grep mode to support both GNU grep and ripgrep
* lisp/progmodes/grep.el (grep-highlight-matches):
(grep-compute-defaults, grep-expand-template):
Use "--color=auto" instead of "--color" (bug#44983).
2020-12-29 21:41:24 +02:00
Juri Linkov
c13937ccb6 * lisp/x-dnd.el (x-dnd-get-drop-x-y): Add safer check for top/left (bug#45277) 2020-12-29 21:37:31 +02:00
Eli Zaretskii
baac3562a6 A better fix for process-tests on MS-Windows
* src/w32.c (pipe2): When forcibly closing pipe handles due to
overflow of FD_SETSIZE, set the handles to -1, to avoid assertion
violations in emacs_close.

* test/src/process-tests.el (process-tests/fd-setsize-no-crash):
No need to skip this test anymore.
2020-12-29 21:30:59 +02:00
Eli Zaretskii
0326cddc7b Fix process-tests on MS-Windows
* test/src/process-tests.el (process-tests/fd-setsize-no-crash):
Skip this test on windows-nt systems, as we cannot use more than
FD_SETSIZE file descriptors there: if we try, we crash.
2020-12-29 20:41:46 +02:00
Dmitry Gutov
3e80653d29 xref-show-definitions-completing-read: Tune up completion
* lisp/minibuffer.el (completion-category-defaults)
Use 'substring' completion style for 'xref-location' category by
default.

* lisp/progmodes/xref.el (xref-show-definitions-completing-read):
Assign the 'xref-location' category to the completions. Pass
REQUIRE-MATCH=t.
2020-12-29 20:25:03 +02:00
Michael Albinus
154d4b856f Instrument process-tests.el for timeouts on emba 2020-12-29 18:40:23 +01:00
Philipp Stephani
16bb10889d Add a regression test for Bug#24325.
* test/src/process-tests.el (process-tests/fd-setsize-no-crash): New
unit test.
2020-12-29 18:19:38 +01:00
Mattias Engdegård
b5ada7f9af More readable keys in NS menu entries (bug#45502)
Each menu entry now has the key binding in a right-aligned column, as
an attempt to improve readability.  Previously the keys were given in
brackets immediately following the menu string.

* src/nsmenu.m ([EmacsMenu parseKeyEquiv:]): Remove.
(skipspc): New helper function.
([EmacsMenu addItemWithWidgetValue:]): Add attributes argument.
Use attributed title string.  Don't special-case Super bindings.
([EmacsMenu fillWithWidgetValue:]): Compute maximum width.  Prepare
attributes for title.
2020-12-29 17:34:53 +01:00
Michael Albinus
7fbcca29b8 Sync with Tramp 2.5.0
* doc/misc/trampver.texi:
* lisp/net/trampver.el: Change version to "2.5.0".

* test/lisp/net/tramp-tests.el
(tramp--test--deftest-direct-async-process): Check, that
`make-process' supports file name handlers.  Suppress
`internal-default-process-sentinel'.
(tramp--test-async-shell-command): Set `proc' proper.
(tramp-test32-shell-command-direct-async): Tag it :unstable.
2020-12-29 15:36:38 +01:00
João Távora
ecd9264372 Revert "Allow the flymake mode line indicator to be customized"
This reverts commit 37049ee78c.

It's not ready to be used, contains some fundamental errors.

See bug#33740.
2020-12-29 14:08:23 +00:00
Alan Third
177863b1ce Fix crash in NS menu code
* src/nsmenu.m (ns_update_menubar): When the menu generation code was
copied from xmenu.c the fix for waiting_for_input was lost.  Reinstate
it.
2020-12-29 13:45:30 +00:00
Lars Ingebrigtsen
ee0e259e5d Add some tests for align.el 2020-12-29 08:38:25 +01:00
Glenn Morris
1fc011c075 * src/xdisp.c (display_mode_line): I guess FALSE should be false. 2020-12-28 21:36:47 -08:00
Lars Ingebrigtsen
6481da6b90 Revert the previous display_string change
* src/xdisp.c (display_string): Revert adding the additional
ignore_text_properties parameter -- it was already covered by the
other mix of parameters.
2020-12-29 06:07:44 +01:00
Lars Ingebrigtsen
88c96962cf Fix compact mode line text properties
* src/xdisp.c (display_mode_line): Display the compact mode
correctly (with text properties) (bug#45520).
2020-12-29 05:59:42 +01:00
Lars Ingebrigtsen
03bab768be Add a parameter to display_string to allow not ignoring text props
* src/xdisp.c (display_string): Add a parameter to allow not
ignoring text properties (bug#45520).  Adjust callers throughout
xdisp.c.
2020-12-29 05:16:25 +01:00
Lars Ingebrigtsen
a66f0d3bd3 Introduce new variable mode-line-compact
* doc/lispref/modes.texi (Mode Line Basics): Document it (bug#34476).

* src/xdisp.c (display_mode_line): Use it.
(syms_of_xdisp): New variable mode-line-compact.
2020-12-29 04:53:03 +01:00
Lars Ingebrigtsen
37049ee78c Allow the flymake mode line indicator to be customized
* doc/misc/flymake.texi (Customizable variables): Mention it.

* lisp/progmodes/flymake.el (flymake-mode-line-indicator-format):
New variable (bug#33740).
(flymake--mode-line-format): Use it.
2020-12-29 03:10:00 +01:00
Lars Ingebrigtsen
40d1633259 Add a SPLIT parameter to `format-spec'
* doc/lispref/strings.texi (Custom Format Strings): Document it.

* lisp/format-spec.el (format-spec): Add an optional parameter to
return a list of strings (bug#33740).
2020-12-29 03:04:51 +01:00
Basil L. Contovounesios
3334dd9041 Reword a long docstring in cc-langs.el
* lisp/progmodes/cc-langs.el (c-vsemi-status-unknown-p-fn): Reword
docstring to fit within 80 columns and silence the corresponding
byte-compiler warning (bug#44858).
2020-12-29 01:23:14 +00:00
Lars Ingebrigtsen
b9359d4183 Add a reference between the Strings node and Search/Replace
* doc/lispref/strings.texi (Creating Strings): Mention
string-replace/replace-regexp-in-string (bug#45516).
2020-12-29 02:19:03 +01:00
Lars Ingebrigtsen
92406b02c6 Allow mixing attributes and comments in the diary file
* lisp/calendar/diary-lib.el (diary-face-attrs): The attributes
don't have to be at the end of the line -- there may be ##warntime
or other comments (bug#19965).
2020-12-29 02:01:57 +01:00
João Távora
d199a4640f Robustify completion match scoring for optimized patterns
Fixes: bug#42149

The function completion-pcm--hilit-commonality, which propertizes and
scores a previously confirmed match, expected its PATTERN argument to
match the strings of COMPLETIONS entirely (i.e. up to the string's
very end).  But sometimes the ending wildcard, represented by the
'any' atom in PATTERN, is optimized away by
completion-pcm--optimize-pattern.  Although this is mostly benign in
terms of highlighting commonality, it leads to incorrect score values.

In this change, we ensure that completion-pcm--hilit-commonality is
aware of this exception and isn't affected by it.  We also document
the function a bit better and simplify its workings.

Originally reported by Dario Gjorgjevski <dario.gjorgjevski@gmail.com>

* lisp/minibuffer.el (completion-pcm--hilit-commonality):
Simplify.  Add docstring.

* lisp/minibuffer.el (completion-pcm--hilit-commonality): Add
docstring
2020-12-28 23:09:29 +00:00