Make minor mode docstrings say what the mode "variable" is
* lisp/emacs-lisp/easy-mmode.el (easy-mmode--arg-docstring): Add
the mode variable (bug#36500).
(easy-mmode--mode-docstring):
(define-minor-mode): Pass in the getter.
* etc/NEWS: Document new face.
* lisp/apropos.el (apropos-button): Define new face.
(apropos-face): Specify face instead of hardcoding
attributes (bug#49162).
* lisp/emacs-lisp/shortdoc.el (shortdoc-add-function): Use nconc to
actually append a new section to the list of groups while avoiding a
previous OBOE. Push a new group to the front of shortdoc--groups
without copying it, just like define-short-documentation-group does.
(buffer): Fix copypasta in unlock-buffer example.
* test/lisp/emacs-lisp/shortdoc-tests.el (shortdoc-examples): Also
check that :no-value forms demonstrate the right function.
* doc/lispref/help.texi (Documentation Groups): Clarify that @dots
in the define-short-documentation-group arglist refer to whole
key-value pairs. Fix typo in :eg-result-string description.
Alex Bochannek [Mon, 21 Jun 2021 12:35:48 +0000 (14:35 +0200)]
Refactor gnus-article-sort-by-*
* lisp/gnus/gnus-sum.el (gnus-article-sort-extract-extra): New
function (bug#49081).
(gnus-article-sort-by-recipient): Use it.
(gnus-article-sort-by-newsgroups): Ditto.
Grant Shangreaux [Sun, 23 May 2021 16:28:25 +0000 (11:28 -0500)]
Add input methods for Lakota
The White Hat and Suggested Lakota Orthography are represented here
by three different input modes: A prefix and postfix mode for the SLO,
and a postfix mode for the White Hat orthography.
* lisp/leim/quail/latin-post.el (lakota-slo-postfix)
(lakota-white-hat-postfix):
* lisp/leim/quail/latin-pre.el (lakota-slo-prefix): New input methods.
* etc/HELLO: Call out the additions.
Glenn Morris [Sat, 19 Jun 2021 15:17:47 +0000 (08:17 -0700)]
Merge from origin/emacs-27
7722b510aa (origin/emacs-27) Another improvement in documentation of ... 8d5c70d73a Improve documentation of profiler 0ffef0b46b Document 'ispell-program-name' 7be610f911 Fix documentation of 'face-extend-p'
* lisp/startup.el (command-line-1): When loading a file, use the
truename so that eval-after-load works more reliably (bug#49009).
Change suggested by ctarbide@tuta.io.
Alex Bochannek [Sat, 19 Jun 2021 13:13:12 +0000 (15:13 +0200)]
New Gnus Summary buffer sort options for extra headers
* lisp/gnus/gnus-sum.el (gnus-article-sort-functions)
(gnus-thread-sort-functions, gnus-subthread-sort-functions)
(gnus-summary-mode-map, gnus-summary-make-menu-bar)
(gnus-article-sort-by-newsgroups)
(gnus-summary-sort-by-newsgroups, gnus-summary-sort-by-extra):
Sort by Newsgroups extra header. Prompt for header name for other
extra headers.
* doc/misc/gnus.texi (Summary Sorting): Document new sort functions
* etc/NEWS: New Gnus Summary buffer sort feature (bug#49081).
Łukasz Stelmach [Sat, 19 Jun 2021 13:07:13 +0000 (15:07 +0200)]
Allow `message-replace-header' to take a list of AFTERs
* lisp/gnus/message.el (message-replace-header): Facilitate
capability of message-position-on-field to accept multiple headers
as AFTERS argument and make possible to mimic behavioir of
message-goto-* functions with message-replace-header in case the
header does not exist (bug#49070).
Alex Bochannek [Sat, 19 Jun 2021 13:04:37 +0000 (15:04 +0200)]
Add support for displaying total number of groups in subgroups in Gnus
* lisp/gnus/gnus-topic.el (gnus-topic-line-format)
(gnus-topic-line-format-alist, gnus-topic-prepare-topic)
(gnus-topic-insert-topic-line, )
(gnus-topic-display-missing-topic, )
(gnus-topic-update-topic-line):
Provide number of groups in subtopics for topic line display and
add 'G' element to be used for 'gnus-topic-line-format' variable
* doc/misc/gnus.texi (Topic Variables):
Document 'G' element for 'gnus-topic-line-format' variable (bug#49068).
Correct the previous fix (did not correctly handle qualified types).
Also fix the following issues:
- remove module name (+ dot) from tags, as prefixing module name is
often inconsistent in code and may cause tags to be too specific.
- now tag 0-arity predicates and functions (':- func foo_14.')
- now tag one-word declarations (':- interface.')
* lib-src/etags.c (mercury_pr): Pass the correct NAME and NAMELEN
arguments to 'make_tag'.
(mercury_decl): Return more information about the declaration or
definition it finds. This allows mercury_pr to be smarter.
(Bug#47408)
Juri Linkov [Thu, 17 Jun 2021 20:19:30 +0000 (23:19 +0300)]
* lisp/help-fns.el (help--symbol-class): Concat chars for all namespaces.
Since Emacs Lisp is more than Lisp-2, separately output letters
for each namespace: functions, variables, faces, classes.
Use non-letter characters for additional properties
such as advice, obsolete, local.
(help--symbol-completion-table-affixation): Use format "%-4s".
https://lists.gnu.org/archive/html/emacs-devel/2021-06/msg00524.html
Juri Linkov [Thu, 17 Jun 2021 19:53:57 +0000 (22:53 +0300)]
Fix display-buffer-override-next-command for no-select case (bug#49057)
* lisp/window.el (display-buffer-override-next-command):
Separate 'postfun' from 'clearfun', so 'clearfun' resets
'display-buffer-overriding-action', whereas 'postfun' calls
'post-function' that can select the right window in 'post-command-hook'.
* lisp/windmove.el (windmove-display-no-select): Add new choice 'ignore'.
Improve docstring.
(windmove-display-in-direction): Use new value 'ignore' of
'windmove-display-no-select'. Improve docstring.
(windmove-display-left, windmove-display-up)
(windmove-display-right, windmove-display-down): Mention
'windmove-display-no-select' in docstrings.
* src/doprnt.c (exprintf, evxprintf):
* src/lisp.h (exprintf, evxprintf): Don't use a pointer-to-const type
for the `nonheapbuf` argument: although it is never dereferenced, GCC
will warn when passing a pointer to uninitialised memory otherwise.
* src/fns.c (sort_vector_copy, realize_face, realize_gui_face)
(realize_tty_face): Use the same signatures in the prototypes as in
the actual function definitions.
* doc/lispref/modes.texi (Search-based Fontification):
Remove paragraph that has been unnecessary and confusing ever since
regexp-opt stopped using capturing brackets more than 21 years ago.
Pip Cet [Tue, 2 Mar 2021 20:38:23 +0000 (20:38 +0000)]
Prepare pdumper dump file in memory, write it in one go (Bug#46881)
* src/pdumper.c (struct dump_context): Add buf, buf_size, max_offset fields.
(dump_grow_buffer): New function.
(dump_write): Use memcpy, not an actual emacs_write.
(dump_seek): Keep track of maximum seen offset. Don't actually seek.
(Fdump_emacs_portable): Write out the file contents when done.
* lisp/help-mode.el (help-mode-map): Add 'i' and 's'.
(help-mode--current-data): New variable.
(help-mode): Make it local.
(help-view-source, help-goto-info): New commands.
Jared Finder [Tue, 15 Jun 2021 13:54:08 +0000 (15:54 +0200)]
Fix dragging dividers in terminal Emacs when there's margins
* lisp/mouse.el (mouse-drag-line): Do the right thing in the
presence of margins (bug#41156).
(mouse-drag-line): Bind left-margin/right-margin in the map, too.
Fix false positives in docstring width warning with (fn...) constructs.
* lisp/emacs-lisp/bytecomp.el (byte-compile--wide-docstring-p):
Don't consider the function signature when determining whether the
doc string is too wide (bug#49007). (The signature is folded
later when displaying help.)
Stephen Gildea [Tue, 15 Jun 2021 06:16:37 +0000 (23:16 -0700)]
mh-junk need not support SpamAssassin 2.20 from 2003
* lisp/mh-e/mh-junk.el (mh-spamassassin-*list): Remove support
for SpamAssassin 2.20. (SpamAssassin 3.0 was released in 2004.)
This change updates both the flags for sa-learn and the comments
about how the current version works.
This change reverts part of a change made in 2003 that added
support for what was even then an "old version of spamassassin."
* lisp/calendar/iso8601.el (iso8601-parse-time): Get fractional
times (with leading zeroes in the fraction part) right (bug#49017).
Fix based on a patch by "J.P." <jp@neverwas.me>.
Andrea Corallo [Mon, 14 Jun 2021 12:37:14 +0000 (14:37 +0200)]
* Do not produce .elc temporary file when unnecessary (bug#48978)
* lisp/emacs-lisp/bytecomp.el (byte-compile-file): Produce .elc
temporary files only when non native compiling or when native
compiling but `byte+native-compile' is non nil.
* lisp/net/tramp.el (tramp-allow-unsafe-temporary-files): New defcustom.
(tramp-handle-find-backup-file-name)
(tramp-handle-make-auto-save-file-name): Don't expose sensible
auto-save or backup files on local temporary directory. (Bug#45245)
* test/lisp/net/tramp-tests.el (tramp--test-always): New defalias.
(tramp-test10-write-region, tramp-test21-file-links)
(tramp--test--deftest-direct-async-process): Use it.
(tramp-test37-make-auto-save-file-name)
(tramp-test38-find-backup-file-name): Extend tests.
pillule [Mon, 14 Jun 2021 07:59:11 +0000 (09:59 +0200)]
Improve handling of dedicated flag for side windows (Bug#48493)
* doc/lispref/windows.texi (Buffers and Windows): Mention the
special handling of side windows and add a reference.
(Buffer Display Action Alists): Say explicitly that
`display-buffer-in-side-window' is dedicating to side by default.
(Dedicated Windows): Add case (4) and explain its meaning, add
a reference.
(Displaying Buffers in Side Windows): Move the paragraph about
`switch-to-(prev|next)-buffer' into a new item to emphasize the
special meaning of dedication for side windows.
* lisp/window.el (set-window-buffer-start-and-point): Restore
side dedication.
(switch-to-prev-buffer, switch-to-next-buffer): Correct return
value that should be nil instead of the same buffer in case of
no change.
(delete-windows-on): Restore side dedication.
(replace-buffer-in-windows): Update the docstring, restore side
dedication.
(quit-restore-window): Rearrange the logic so that strongly
dedicated windows are eventually deleted first. Restore the
side dedication. In the final case try to
`switch-to-prev-buffer' before deleting a window (Bug#48367).
* src/fileio.c (Fsubstitute_in_file_name): Mention that undefined
variables aren't replaced (as opposed to what happens in a shell
substitution) (bug#40949).
Allow save-interprogram-paste-before-kill to be a number
* doc/emacs/killing.texi (Clipboard): Document it.
* lisp/simple.el (save-interprogram-paste-before-kill): Extend
range (bug#41168).
(kill-new): Implement it (bug#41168).
Stefan Monnier [Sat, 12 Jun 2021 20:22:03 +0000 (16:22 -0400)]
EIEIO: Promote the CLOS behavior over the EIEIO-specific behavior
Change docs to advertize `slot-value` rather than `oref`.
Change the implementation of `:initform` to better match the CLOS semantics,
while preserving the EIEIO semantics, but warn when encountering cases
where the two diverge.
Demote the mostly unused special semantics of `oref-default`
on non-class allocated slots.
* doc/misc/eieio.texi (Quick Start): Use `slot-value`.
(Accessing Slots): Move `slot-value` before `oref`.
Fix paren-typo in example (reported by pillule <pillule@riseup.net>).
(Introspection): Remove mention of `class-slot-initarg`.
* lisp/transient.el (transient--parse-group, transient--parse-suffix):
Don't use `oref-default` to get the default value.
(transient-lisp-variable): Init forms are evaluated.
* lisp/emacs-lisp/eieio.el (defclass): Warn about inapplicable
`:initarg` and about uses of init forms that are ambiguous.
(oref): Don't advertize the deprecated use of initargs as slot names.
(oref-default): Don't advertize the deprecated case where it returns the
initform's value.
(initialize-instance): Use `macroexp-const-p`.
* lisp/emacs-lisp/eieio-core.el (eieio--unbound): Rename from
`eieio-unbound`.
(eieio--unbound-form): New var.
(eieio--slot-override): Use it.
(eieio-defclass-internal): Use it. Change `init` so it should always
be evaluated.
(eieio--known-class-slot-names): New var.
(eieio--eval-default-p): Rename from `eieio-eval-default-p`.
(eieio--perform-slot-validation-for-default): Use `macroexp-const-p` to
decide whether to skip the test.
(eieio--add-new-slot): Register slot in `eieio--known-class-slot-names`
when applicable.
(eieio-oref-default, eieio-oset-default): Add warning for unknown slots
and slots not known to be allocated to the class.
(eieio-default-eval-maybe): Delete function. Use just `eval` instead.
(eieio-declare-slots): Allow slots to specify their allocation class.
* lisp/cedet/srecode/insert.el (point): Declare the slot instead of
moving the class definition before the slot's first use.
(srecode-template-inserter-point, srecode-insert-fcn):
Use nil instead of unbound for the `point` slot.
* lisp/cedet/srecode/compile.el (srecode-template-inserter):
Declare the `key` slot that all children should have.
Matt Beshara [Sun, 6 Jun 2021 03:06:47 +0000 (13:06 +1000)]
Add ability to bring only the selected frame to the front (bug#48865)
Causes ‘ns-hide-emacs’ to layer the selected frame in front of every other
application’s windows, and give that frame keyboard focus, when called with
'activate-front.
* src/nsfns.m (Fns_hide_emacs): Allow activating only selected frame.
Dmitry Gutov [Fri, 11 Jun 2021 01:39:34 +0000 (04:39 +0300)]
Simplify vc-git-log-switches's usage; change default value to nil
* lisp/vc/vc-git.el (vc-git-log-switches):
Do not mention or allow the value 't' anymore
(https://lists.gnu.org/archive/html/emacs-devel/2021-06/msg00452.html).
(vc-git-print-log): Use 'vc-git-log-switches' directly.
Eli Zaretskii [Thu, 10 Jun 2021 13:55:04 +0000 (16:55 +0300)]
Support mercury in 'ctags' as well
The previous lack of support was due to incorrect calls to 'make_tag'
in 'mercury_pr', which caused 'pfnote' to refrain from adding Mercury
tags to the list of recorded tags.
* lib-src/etags.c (mercury_pr): Pass the correct NAME and NAMELEN
arguments to 'make_tag'.
* test/manual/etags/CTAGS.good: Adjust to the above change.
Eli Zaretskii [Thu, 10 Jun 2021 12:06:10 +0000 (15:06 +0300)]
Improve documentation of 'M-y'
* doc/emacs/killing.texi (Yanking): Mention that TTY frames can
also support yanking from the clipboard.
(Earlier Kills): Finalize the documentation of the new behavior
of the lone 'M-y'. (Bug#48478)