1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-10 16:20:17 -08:00
Commit graph

2549 commits

Author SHA1 Message Date
Robert Pluim
e4b243b931 Use 'char-to-name'
* lisp/international/emoji.el (emoji--name): Lookup name using 'char-to-name'.
* lisp/international/textsec.el (textsec-domain-suspicious-p): And here.
* lisp/simple.el (what-cursor-position): And here.
2024-06-11 11:06:37 +02:00
Richard Sent
579aaa1ec2 Make 'clone-indirect-buffer-other-window' use other window
Previously, depending on the settings in 'display-buffer-alist',
'clone-indirect-buffer-other-window' would display the cloned
buffer in the original window, behaving identically to
'clone-indirect-buffer' with a non-nil display-flag.  This
behavior was inconsistent with other-window commands which
always used another window.
Now, 'clone-indirect-buffer-other-window' uses
'switch-to-buffer-other-window'.  This means it uses the same
logic as other-window commands like 'find-file-other-window'
and 'info-other-window'.
display-flag was kept for API stability and functional
compatibility reasons.
* lisp/simple.el: (clone-indirect-buffer-other-window): Use
switch-to-buffer-other-window.  (Bug#70819)
2024-06-08 15:15:36 +03:00
Dmitry Gutov
a154f0aa73 shell-command-mode: New major mode for async-shell-command
* etc/NEWS: Mention the additions.

* lisp/shell.el (shell-command-mode): New major mode (bug#71049).

* lisp/simple.el (async-shell-command-mode):
New variable, with default value pointing to that mode.
(shell-command): Refer to it here.
(async-shell-command): Update docstring.

* lisp/net/tramp.el (tramp-handle-shell-command):
Use the new variable when available.
2024-06-01 18:03:42 +03:00
Eli Zaretskii
22d9bbe284 Merge from origin/emacs-29
bf50aa38f9 Improve documentation of case-conversion commands
225b426f25 ; Fix typos
2024-06-01 08:34:43 -04:00
Sean Whitton
0b4d2bb9b3 universal-argument--preserve: Preserve last-prefix-arg
* lisp/simple.el (universal-argument--preserve): Set
current-prefix-arg to last-prefix-arg in order to preserve
last-prefix-arg, too (bug#71277).
2024-05-30 16:23:18 +01:00
Juri Linkov
2cadad6f8c minibuffer-allow-text-properties can be buffer-local and affects completions
* doc/lispref/minibuf.texi (Text from Minibuffer): Mention that
minibuffer-allow-text-properties can be let-bound or buffer-local
in the minibuffer.  Correct the description of
minibuffer-allow-text-properties to explain what it did
even before applying code changes in this patch.
Remove wrong example for read-no-blanks-input.

* lisp/imenu.el (imenu--completion-buffer): Set buffer-local
minibuffer-allow-text-properties to t.
(imenu--completion-buffer): Get text property 'imenu-choice'.
(imenu--flatten-index-alist): Propertize annotation
with text property 'imenu-choice'.

* lisp/simple.el (choose-completion): Don't remove text properties
from the returned completion string since the value of
minibuffer-allow-text-properties is already respected
in completion--replace.

* src/minibuf.c (read_minibuf): Preserve text properties not only
when allow_props is non-nil but also in case when
minibuffer_allow_text_properties is non-nil.
(Fread_from_minibuffer): Mention in the docstring that
minibuffer-allow-text-properties can be buffer-local in the minibuffer.
(minibuffer-allow-text-properties): Improve docstring to describe
when text properties are discarded.

https://lists.gnu.org/archive/html/emacs-devel/2024-05/msg00949.html
2024-05-27 21:19:53 +03:00
Stefan Kangas
a212687e24 Make idle-update-delay obsolete
This user option was introduced in 2003, and was advertised as a general
variable for a "delay before updating various things on the screen".
But this has never been true: it was only used by 'which-function-mode',
and, to make matters worse, users of that mode would basically never
know that this user option existed without reading the code.

Conversely, users that did find the user option would be surprised to
see that it only took effect in 'which-func-mode'.

The lack of other users of 'idle-update-delay' reveals that it has not
been considered generally useful.  Thus, it makes more sense to
introduce a new mode specific user option `which-func-update-delay`, and
to mark the old one obsolete.

* lisp/simple.el (idle-update-delay): Make obsolete.
* lisp/progmodes/which-func.el (which-func-update-delay): New defcustom.
(which-function-mode): Use above new defcustom instead of
'idle-update-delay'.
2024-05-27 10:51:54 +02:00
Stefan Kangas
225b426f25 ; Fix typos 2024-05-27 10:11:15 +02:00
Michael Albinus
91509d5d2a Make Tramp's async processes more robust
* lisp/simple.el (shell-command-sentinel): Check process property
`remote-command' first.

* lisp/net/tramp.el (tramp-handle-make-process):
* lisp/net/tramp-androidsu.el (tramp-androidsu-handle-make-process):
Set sentinel `ignore'.  (Bug#71049)

* test/lisp/net/tramp-tests.el
(tramp--test-deftest-direct-async-process): Don't suppress
internal sentinel.
(tramp-test32-shell-commanddirect-async): Don't tag it :unstable.
2024-05-25 17:23:30 +02:00
Eli Zaretskii
d54178f535 Improve documentation of sending commands to shells
* doc/lispref/processes.texi (Synchronous Processes):
* lisp/subr.el (call-shell-region):
* lisp/simple.el (shell-command-on-region)
(shell-command-to-string): Document system-dependent aspects of
sending commands to shells.  (Bug#71081)
2024-05-25 13:02:20 +03:00
Jim Porter
44d1687f1f Tell direction in prompts for '(previous|next)-matching-history-element'
Previously, this always said "Previous" for
'previous-matching-history-element' (likewise "Next").  Now, the prompt
accounts for a negative prefix argument changing the search direction
(bug#70882).

* lisp/simple.el (previous-matching-history-element)
(next-matching-history-element): Consult numeric prefix argument to
determine the prompt string.
2024-05-19 18:32:25 -07:00
Andrea Corallo
6e1bb713f6 Change 'type' declaration to 'ftype'
* lisp/window.el (get-lru-window, get-largest-window)
(one-window-p): Update function type declaration.
* lisp/subr.el (ignore, error, zerop, fixnump, bignump, lsh)
(last, eventp, mouse-movement-p, log10, memory-limit)
(internal-pop-keymap): Likewise.
* lisp/simple.el (count-lines, mark, string-empty-p): Likewise.
* lisp/files.el (parse-colon-path): Likewise.
* lisp/env.el (getenv): Likewise.
* lisp/emacs-lisp/regexp-opt.el (regexp-opt): Likewise.
* lisp/emacs-lisp/lisp.el (buffer-end): Likewise.
* lisp/emacs-lisp/comp.el (comp--final): Likewise.
* lisp/custom.el (custom-variable-p): Likewise.
* lisp/emacs-lisp/byte-run.el (defun-declarations-alist): Rename 'type'
-> 'ftype'.
2024-05-14 11:17:25 +02:00
Dmitry Gutov
ff3f17ca3c choose-completion: Retain the suffix after completion boundary
* lisp/minibuffer.el (completion-base-suffix):
Remove as not optimal after all (bug#48356).
(completion--replace): Use insert-before-markers-and-inherit.
(minibuffer-completion-help): Don't set completion-base-affixes,
implement the same logic more optimally by local search and
querying for field boundaries.  Also fix the problem with
completion table, predicate and extra-props being looked up in the
wrong buffer.
(minibuffer-next-completion, minibuffer-choose-completion):
Don't bind completion-use-base-affixes anymore.

* lisp/simple.el (completion-base-affixes)
(completion-use-base-affixes): Remove.
(completion-list-insert-choice-function):
Don't pass them through anymore.
2024-05-09 05:31:10 +03:00
Andrea Corallo
fa0bf96837 Move lisp function arg type declarations to the functions itself
* lisp/emacs-lisp/comp-common.el (comp-primitive-type-specifiers):
Remove type declaration of lisp functions.
* lisp/window.el (get-lru-window, get-largest-window)
(one-window-p): Declare type.
* lisp/subr.el (ignore, error, zerop, fixnump, bignump, lsh)
(last, eventp, mouse-movement-p, log10, memory-limit)
(interactive-p): Likewise.
* lisp/simple.el (count-lines, mark, lax-plist-get): Likewise.
* lisp/files.el (parse-colon-path): Likewise.
* lisp/env.el (getenv): Likewise.
* lisp/emacs-lisp/regexp-opt.el (regexp-opt): Likewise.
* lisp/emacs-lisp/lisp.el (buffer-end): Likewise.
* lisp/emacs-lisp/comp.el (comp-hint-fixnum, comp-hint-cons): Likewise.
* lisp/custom.el (custom-variable-p): Likewise.
2024-04-29 19:27:28 +02:00
Stefan Monnier
f2bccae22b Use a dedicated type to represent interpreted-function values
Change `function` so that when evaluating #'(lambda ...)
we return an object of type `interpreted-function` rather than
a list starting with one of `lambda` or `closure`.
The new type reuses the existing PVEC_CLOSURE (nee PVEC_COMPILED)
tag and tries to align the corresponding elements:

- the arglist, the docstring, and the interactive-form go in the
  same slots as for byte-code functions.
- the body of the function goes in the slot used for the bytecode string.
- the lexical context goes in the slot used for the constants of
  bytecoded functions.

The first point above means that `help-function-arglist`,
`documentation`, and `interactive-form`s don't need to
distinguish interpreted and bytecode functions any more.

Main benefits of the change:

- We can now reliably distinguish a list from a function value.
- `cl-defmethod` can dispatch on `interactive-function` and `closure`.
  Dispatch on `function` also works now for interpreted functions but still
  won't work for functions represented as lists or as symbols, of course.
- Function values are now self-evaluating.  That was alrready the case
  when byte-compiled, but not when interpreted since
  (eval '(closure ...)) signals a void-function error.
  That also avoids false-positive warnings about "don't quote your lambdas"
  when doing things like `(mapcar ',func ...)`.

* src/eval.c (Fmake_interpreted_closure): New function.
(Ffunction): Use it and change calling convention of
`Vinternal_make_interpreted_closure_function`.
(FUNCTIONP, Fcommandp, eval_sub, funcall_general, funcall_lambda)
(Ffunc_arity, lambda_arity): Simplify.
(funcall_lambda): Adjust to new representation.
(syms_of_eval): `defsubr` the new function.  Remove definition of `Qclosure`.

* lisp/emacs-lisp/cconv.el (cconv-make-interpreted-closure):
Change calling convention and use `make-interpreted-closure`.

* src/data.c (Fcl_type_of): Distinguish `byte-code-function`s from
`interpreted-function`s.
(Fclosurep, finterpreted_function_p): New functions.
(Fbyte_code_function_p): Don't be confused by `interpreted-function`s.
(Finteractive_form, Fcommand_modes): Simplify.
(syms_of_data): Define new type symbols and `defsubr` the two
new functions.

* lisp/emacs-lisp/cl-print.el (cl-print-object) <interpreted-function>:
New method.

* lisp/emacs-lisp/oclosure.el (oclosure): Refine the parent
to be `closure`.
(oclosure--fix-type, oclosure-type): Simplify.
(oclosure--copy, oclosure--get, oclosure--set): Adjust to
new representation.

* src/callint.c (Fcall_interactively): Adjust to new representation.

* src/lread.c (bytecode_from_rev_list):

* lisp/simple.el (function-documentation):
* lisp/help.el (help-function-arglist): Remove the old `closure` case
and adjust the byte-code case so it handles `interpreted-function`s.

* lisp/emacs-lisp/cl-preloaded.el (closure): New type.
(byte-code-function): Add it as a parent.
(interpreted-function): Adjust parent (the type itself was already
added earlier by accident).

* lisp/emacs-lisp/bytecomp.el (byte-compile--reify-function): Adjust to
new representation.
(byte-compile): Use `interpreted-function-p`.

* lisp/emacs-lisp/byte-opt.el (byte-compile-inline-expand): Adjust to
new representation.
(side-effect-free-fns): Add `interpreted-function-p` and `closurep`.

* src/profiler.c (trace_hash, ffunction_equal): Simplify.
* lisp/profiler.el (profiler-function-equal): Simplify.

* lisp/emacs-lisp/nadvice.el (advice--interactive-form-1):
Use `interpreted-function-p`; adjust to new representation; and take
advantage of the fact that function values are now self-evaluating.

* lisp/emacs-lisp/lisp-mode.el (closure):
Remove `lisp-indent-function` property.

* lisp/emacs-lisp/disass.el (disassemble-internal): Adjust to
new representation.
* lisp/emacs-lisp/edebug.el (edebug--strip-instrumentation):
Use `interpreted-function-p`.
* lisp/emacs-lisp/comp-common.el (comp-known-type-specifiers):
Add `closurep` and `interpreted-function-p`.

* test/lisp/help-fns-tests.el (help-fns-test-lisp-defun): Adjust to
more precise type info in `describe-function`.
* test/lisp/erc/resources/erc-d/erc-d-tests.el (erc-d--render-entries):
Use `interpreted-function-p`.
* test/lisp/emacs-lisp/macroexp-resources/vk.el (vk-f4, vk-f5):
Don't hardcode function values.

* doc/lispref/functions.texi (Anonymous Functions): Don't suggest that
function values are lists.  Reword "self-quoting" to reflect the
fact that #' doesn't return the exact same object.  Update examples
with the new shape of the return value.

* doc/lispref/variables.texi (Lexical Binding):
* doc/lispref/lists.texi (Rearrangement):
* doc/lispref/control.texi (Handling Errors): Update examples to reflect
new representation of function values.
2024-04-28 11:58:12 -04:00
Michael Albinus
44d83def4f Move read-passwd* to auth-source.el, avoiding compilation warnings
* lisp/simple.el (read-passwd*):
* lisp/subr.el (read-passwd*): Move definitions ...

* lisp/auth-source.el: ... here.
(icons): Require.
2024-04-04 14:51:57 +02:00
Spencer Baugh
9dcb28d601 With visible-completions, only bind RET when completion is selected
Previously, if minibuffer-visible-completions was non-nil, we bound RET
whenever the *Completions* buffer was visible.  This meant that RET in
completion-in-region would not enter a newline, which is a somewhat
annoying behavior change from minibuffer-visible-completions=nil.

Now, we only bind RET when a completion is selected.  This means
RET will newline in completion-in-region.

So that completion help continues to suggest the correct keys,
we also add minibuffer-visible-completions--always-bind.  When
let-bound to a non-nil value, it makes the
minibuffer-visible-completions binds always active.  We let-bind
it around substitute-command-keys.

* lisp/minibuffer.el (minibuffer-visible-completions--always-bind)
(minibuffer-visible-completions--filter): Add.
(minibuffer-visible-completions-bind): Use
minibuffer-visible-completions--filter.  (bug#68801)
* lisp/simple.el (minibuffer-visible-completions--always-bind)
(completion-setup-function): Let-bind
minibuffer-visible-completions--always-bind so the completion
help is correct.
2024-03-15 09:40:48 +02:00
Michael Albinus
e02c4a864f Modify last change acc to comments
* lisp/simple.el (read-passwd-mode): Change `text' entry of icons.
(read-passwd-toggle-visibility): Rename.
(read-passwd-mode):
* lisp/subr.el (read-passwd-map): Adapt callees.
2024-02-25 15:37:06 +01:00
Michael Albinus
39e3fce0d5 'read-passwd' can toggle the visibility of passwords
* doc/lispref/minibuf.texi (Reading a Password):
* etc/NEWS: 'read-passwd' can toggle the visibility of passwords.

* etc/images/README: Mention the new images below.
* etc/images/conceal.pbm:
* etc/images/conceal.svg:
* etc/images/reveal.pbm:
* etc/images/reveal.svg: New images.

* lisp/simple.el (read-passwd--mode-line-buffer)
(read-passwd--mode-line-icon): New defvars.
(read-passwd--toggle-visibility, read-passwd-mode): New defuns.

* lisp/subr.el (read-passwd-map): Add 'TAB' binding.
(read-passwd--hide-password): New defvar.
(read-passwd--hide-password): Rename function from
`read-password--hide-password'.  Adapt callees.  Implement both
hiding and showing the password.  (Bug#69237)
(read-passwd): Call `read-passwd-mode'.
2024-02-25 10:06:09 +01:00
Juri Linkov
d89e427852 * lisp/simple.el (read-from-kill-ring): Ignore `read-only' text property.
Add `read-only' to the list of text properties removed from history items
(bug#68847).
2024-02-01 19:16:37 +02:00
Juri Linkov
d22a3e5afe * lisp/simple.el (next-line-completion): Better handing of group lines.
Simplify to not compare the result of 'move-to-column'
with the value 'column'.  Such comparison prevented from moving
over lines without completion candidates such as group lines (bug#68688).

* test/lisp/minibuffer-tests.el (completions-group-navigation-test):
Add more group candidates to create more columns and to test
moving over group lines and over columns without candidates.
2024-01-25 19:52:08 +02:00
Spencer Baugh
b5d36efa57 Update minibuffer-show-help based on minibuffer-visible-completions
minibuffer-visible-completions makes some more convenient bindings
available, but the help shown by minibuffer-show-help wasn't
suggesting them.  Now it is.

* lisp/simple.el (completion-setup-function): Change help text when
minibuffer-visible-completions is non-nil. (bug#68689)
2024-01-25 09:49:50 +02:00
Spencer Baugh
28c9c7cf46 Fix next-line-completion for multi-line completions
Previously it would not move out of a multi-line completion, and now it will.

* lisp/simple.el (next-line-completion): Move to the completion start
or end before going forward or backward lines.  (bug#68688)
2024-01-25 09:48:20 +02:00
Stefan Monnier
7959a63ce2 (eval-expression): Fix bug#67196
* lisp/simple.el (eval-expression--debug): New function.
(eval-expression): Use it together with `handler-bind` instead of
let-binding `debug-on-error`.
2024-01-04 16:33:25 -05:00
Po Lu
ecf08f0621 Merge from savannah/emacs-29
dc4e6b1329 ; Update copyright years in more files
64b3777631 ; Run set-copyright from admin.el
8e1c56ae46 ; Add 2024 to copyright years

# Conflicts:
#	doc/misc/modus-themes.org
#	doc/misc/texinfo.tex
#	etc/NEWS
#	etc/refcards/ru-refcard.tex
#	etc/themes/modus-operandi-theme.el
#	etc/themes/modus-themes.el
#	etc/themes/modus-vivendi-theme.el
#	lib/alloca.in.h
#	lib/binary-io.h
#	lib/c-ctype.h
#	lib/c-strcasecmp.c
#	lib/c-strncasecmp.c
#	lib/careadlinkat.c
#	lib/cloexec.c
#	lib/close-stream.c
#	lib/diffseq.h
#	lib/dup2.c
#	lib/filemode.h
#	lib/fpending.c
#	lib/fpending.h
#	lib/fsusage.c
#	lib/getgroups.c
#	lib/getloadavg.c
#	lib/gettext.h
#	lib/gettime.c
#	lib/gettimeofday.c
#	lib/group-member.c
#	lib/malloc.c
#	lib/md5-stream.c
#	lib/md5.c
#	lib/md5.h
#	lib/memmem.c
#	lib/memrchr.c
#	lib/nanosleep.c
#	lib/save-cwd.h
#	lib/sha1.c
#	lib/sig2str.c
#	lib/stdlib.in.h
#	lib/strtoimax.c
#	lib/strtol.c
#	lib/strtoll.c
#	lib/time_r.c
#	lib/xalloc-oversized.h
#	lisp/auth-source-pass.el
#	lisp/emacs-lisp/lisp-mnt.el
#	lisp/emacs-lisp/timer.el
#	lisp/info-look.el
#	lisp/jit-lock.el
#	lisp/loadhist.el
#	lisp/mail/rmail.el
#	lisp/net/ntlm.el
#	lisp/net/webjump.el
#	lisp/progmodes/asm-mode.el
#	lisp/progmodes/project.el
#	lisp/progmodes/sh-script.el
#	lisp/textmodes/flyspell.el
#	lisp/textmodes/reftex-toc.el
#	lisp/textmodes/reftex.el
#	lisp/textmodes/tex-mode.el
#	lisp/url/url-gw.el
#	m4/alloca.m4
#	m4/clock_time.m4
#	m4/d-type.m4
#	m4/dirent_h.m4
#	m4/dup2.m4
#	m4/euidaccess.m4
#	m4/fchmodat.m4
#	m4/filemode.m4
#	m4/fsusage.m4
#	m4/getgroups.m4
#	m4/getloadavg.m4
#	m4/getrandom.m4
#	m4/gettime.m4
#	m4/gettimeofday.m4
#	m4/gnulib-common.m4
#	m4/group-member.m4
#	m4/inttypes.m4
#	m4/malloc.m4
#	m4/manywarnings.m4
#	m4/mempcpy.m4
#	m4/memrchr.m4
#	m4/mkostemp.m4
#	m4/mktime.m4
#	m4/nproc.m4
#	m4/nstrftime.m4
#	m4/pathmax.m4
#	m4/pipe2.m4
#	m4/pselect.m4
#	m4/pthread_sigmask.m4
#	m4/readlink.m4
#	m4/realloc.m4
#	m4/sig2str.m4
#	m4/ssize_t.m4
#	m4/stat-time.m4
#	m4/stddef_h.m4
#	m4/stdint.m4
#	m4/stdio_h.m4
#	m4/stdlib_h.m4
#	m4/stpcpy.m4
#	m4/strnlen.m4
#	m4/strtoimax.m4
#	m4/strtoll.m4
#	m4/time_h.m4
#	m4/timegm.m4
#	m4/timer_time.m4
#	m4/timespec.m4
#	m4/unistd_h.m4
#	m4/warnings.m4
#	nt/configure.bat
#	nt/preprep.c
#	test/lisp/register-tests.el
2024-01-02 10:28:14 +08:00
Po Lu
8e1c56ae46 ; Add 2024 to copyright years 2024-01-02 09:47:10 +08:00
Stefan Kangas
06a12b0ccc ; Fix typos 2023-12-10 13:22:04 +01:00
Stefan Monnier
213d30b3ea Tweak doc of analyze-text-conversion vs post-self-insert-hook
* lisp/simple.el (analyze-text-conversion): Fix typo.

* lisp/progmodes/cc-mode.el (c-initialize-cc-mode): Add comment about
`post-text-conversion-hook`.
2023-12-09 18:03:48 -05:00
Eli Zaretskii
486094126b Merge from origin/emacs-29
0f361cc985 ; Minor copyedits in description of ':box' face property
46fe7a17f5 Fix dragging mode line on text terminals with a mouse (bu...
12daf386f3 ; * doc/lispref/processes.texi (Network): Fix wording and...
037d858dc1 (rust-ts-mode): Set electric-indent-chars
dc9b733ab8 js-ts-mode: Highlight function parameters inside destruct...
4a72f13bdf js-ts-mode: Highlight property shorthands in assignments
83ed9018ed (js--treesit-font-lock-settings): Highlight parameters in...
ad0f87bb4c (js--treesit-font-lock-settings): Remove some duplicates
71c5f3694f ; Another fix of doc string of 'message-mail-user-agent' ...
04a39353ba ; * lisp/gnus/message.el (message-mail-user-agent): Doc f...
82ddcf37ec ; * doc/lispref/files.texi (Changing Files): Fix last cha...
89068516b3 Don't claim to signal an error when deleting a nonexistin...
4fd254e183 * lisp/indent.el (indent-rigidly): Improve prompt (bug#67...
5f923ff1a6 ; Fix typos
a1f88963f5 rust-ts-mode--comment-docstring: Handle block doc comments
a547b0e2e8 rust-ts-mode--comment-docstring: Fix/improve the previous...
2023-12-09 07:25:21 -05:00
Stefan Kangas
5f923ff1a6 ; Fix typos 2023-12-03 23:31:30 +01:00
Spencer Baugh
3c09314895 Deselect the selected completion candidate when typing
minibuffer-choose-completion-or-exit submits the selected completion
candidate, if any, ignoring the contents of the minibuffer.  But a
user might select a completion candidate and then want to type
something else in the minibuffer and submit what they typed.

Now typing will automatically deselect the selected completion
candidate so that minibuffer-choose-completion-or-exit will not choose
it.

minibuffer-choose-completion has the same behavior as before, and is
not affected by the deselection.

* lisp/minibuffer.el (completion-auto-deselect, completions--deselect)
(completions--after-change): Add.
(minibuffer-completion-help): Add completions--after-change hook.
(minibuffer-next-completion): Bind completion-auto-deselect to nil to
avoid immediately deselecting the completion.
(minibuffer-choose-completion-or-exit): Bind
choose-completion-deselect-if-after so deselection takes effect.
(display-completion-list): Guarantee a newline at the beginning of
*Completions* to avoid ambiguity about candidate selection.
* lisp/simple.el (choose-completion-deselect-if-after): Add.
(choose-completion): Check choose-completion-deselect-if-after.
* etc/NEWS: Announce.
2023-12-03 19:20:51 +02:00
Juri Linkov
b261dd1347 * lisp/simple.el (minibuffer-default-add-shell-commands): Require 'dired-aux'.
This is necessary for 'shell-command-guess' after removing autoload cookie
since declare-function doesn't autoload it.
2023-12-01 09:18:28 +02:00
Juri Linkov
90450a3874 * lisp/simple.el: Add declare-function for shell-command-guess.
* lisp/dired-aux.el (shell-command-guess): Remove unneeded autoload cookie.
2023-11-30 20:11:36 +02:00
Juri Linkov
b8d4242e8b New user option 'shell-command-guess-functions' (bug#18132)
* lisp/dired-aux.el (dired-minibuffer-default-add-shell-commands):
Remove function since now mailcap commands are available
by shell-command-guess-mailcap for shell-command-guess
used by dired-guess-shell-command.
(dired-read-shell-command): Don't set minibuffer-default-add-function
to dired-minibuffer-default-add-shell-commands.
(dired-guess-shell-command): Replace dired-guess-default
with shell-command-guess.
(shell-command-guess-functions): New defcustom.
(shell-command-guess, shell-command-guess-dired)
(shell-command-guess-mailcap, shell-command-guess-xdg):
New functions.

* lisp/simple.el (minibuffer-default-add-shell-commands):
Use 'shell-command-guess' instead of requiring 'mailcap'
with 'mailcap-file-default-commands'.  Remove 'interactive'.
2023-11-27 19:32:10 +02:00
Po Lu
1737ffd3a8 Merge from savannah/emacs-29
1978b603bc Make python-ts-mode's syntax-highlighting more standardized
99658346d1 ; Improve documentation of desktop.el in user manual
f7dc020212 Fix "Text is read-only" on backspacing initial Calc input
662d54775d Add a doc string to simple.el (bug#67355)
5a5e36d2aa ; Improve function documentation tips
86016d8ecd Mention "visual line" in user manual
4bb65ed77a ; * doc/lispref/minibuf.texi (Programmed Completion): Imp...
dfb3dcb404 Allow listing Emoji from a read-only buffer

# Conflicts:
#	lisp/calc/calc.el
#	lisp/international/emoji.el
2023-11-24 08:44:34 +08:00
Stefan Monnier
7705bdfa5b Adjust affected callers of derived-mode-p` to use the new convention
* lisp/align.el (align-rules-list): Prefer `derived-mode-p` over
`provided-mode-derived-p`.
(align--rule-should-run):
* lisp/window.el (display-buffer-reuse-mode-window):
* lisp/whitespace.el (whitespace-enable-predicate):
* lisp/transient.el (transient--do-suffix-p):
* lisp/so-long.el (so-long--set-auto-mode):
* lisp/simple.el (command-completion-with-modes-p):
* lisp/progmodes/tcl.el (tcl-current-word):
* lisp/progmodes/idlwave.el (idlwave-fix-keywords):
* lisp/progmodes/gdb-mi.el (gdb, gdb-locals-mode-map)
(gdb-registers-mode-map, gdb-function-buffer-p):
* lisp/progmodes/c-ts-mode.el (c-ts-mode--indent-style-setter)
(c-ts-mode-set-style):
* lisp/progmodes/bug-reference.el (bug-reference--try-setup-gnus-article):
* lisp/help-fns.el (help-fns--list-local-commands):
* lisp/emulation/viper.el (viper-mode)
(viper-this-major-mode-requires-vi-state):
* lisp/emacs-lisp/easy-mmode.el (easy-mmode--globalized-predicate-p):
* lisp/dired.el (dired-hide-details-mode, dired-click-to-select-mode):
* lisp/calendar/todo-mode.el (todo-reset-nondiary-marker)
(todo-reset-done-string, todo-reset-comment-string):
* lisp/vc/vc.el (vc-deduce-backend): Use new calling convention for
`derived-mode-p` and `provided-mode-derived-p`.
2023-11-23 11:59:49 -05:00
Jeremy Bryant
662d54775d Add a doc string to simple.el (bug#67355)
* lisp/simple.el (kill-buffer--possibly-save): Add doc string.
2023-11-23 17:28:43 +02:00
Stefan Monnier
4194f9bd87 Merge branch 'derived-mode-add-parents' 2023-11-16 09:57:38 -05:00
Eli Zaretskii
d72c974fd6 ; * lisp/simple.el (minibuffer-default-add-completions): Doc fix. 2023-11-16 08:55:08 +02:00
Juri Linkov
ff1f82cbe3 * lisp/simple.el (minibuffer-default-add-completions): Improve (bug#64656).
Return nil for some popular completions with undefined order that include
obarray.  Extend the docstring to explain how to disable this feature.
2023-11-15 19:52:10 +02:00
Stefan Monnier
fbb897b7af Move EIEIO's C3 linearization code to subr.el
The code was used to linearize the EIEIO class hierarchy, since
it results in saner results than things like BFS or DFS.
By moving it to `subr.el` we get to benefit from that same
advantage both in `cl--class-allparents` and
in `derived-mode-all-parents`.

* lisp/subr.el (merge-ordered-lists): New function.
(derived-mode-all-parents): Use it to improve parent ordering.

* lisp/emacs-lisp/eieio-core.el (eieio--c3-candidate)
(eieio--c3-merge-lists): Delete functions, replaced by
`merge-ordered-lists`.
(eieio--class-precedence-c3): Use `merge-ordered-lists`.

* lisp/emacs-lisp/cl-preloaded.el (cl--class-allparents):
Use `merge-ordered-lists` to improve parent ordering.
* lisp/emacs-lisp/cl-macs.el (cl--struct-all-parents): Delete function.
(cl--pcase-mutually-exclusive-p): Use `cl--class-allparents` instead.
2023-11-11 11:51:59 -05:00
Juri Linkov
6eafdd8559 Improve 'next-line-completion' and add more tests
* lisp/simple.el (next-line-completion): Improve (bug#59486).
Better handle the case when completion-auto-wrap is nil.

* test/lisp/minibuffer-tests.el (completion-auto-wrap-test)
(completions-header-format-test)
(completions-affixation-navigation-test): Add calls to
'next-line-completion' and 'previous-line-completion'.
(completions-group-navigation-test): New test.
2023-11-09 18:20:14 +02:00
Po Lu
089b7d4e62 Don't leave point amid text conversion edits if auto-fill transpires
* lisp/simple.el (analyze-text-conversion): Save point in
old-point after auto-fill completes, so that point-moved is not
set if point remains intact subsequent to the execution of both
hooks.
2023-11-08 11:03:57 +08:00
Juri Linkov
a1abb6a85e * lisp/simple.el (next-line-completion): Improve (bug#59486).
Handle the case when lines with completion candidates are
interspersed with lines that contain group headings.
2023-11-06 19:43:06 +02:00
Po Lu
e06e61f456 Avoid moving point while analyzing text conversion
* lisp/simple.el (analyze-text-conversion): If neither calling
p-s-i-h nor calling p-t-c-h yields a change to point, return it
to its location before analyze-text-conversion was called.

* src/keyboard.c (kbd_buffer_get_event): See that text
conversion events are uniformly delivered prior to keyboard
events arriving in unison.
2023-11-03 11:34:40 +08:00
Eli Zaretskii
cb92eb404d ; Improve documentation of recent changes
* etc/NEWS:
* lisp/simple.el (completion-auto-wrap, completion-auto-select)
(first-completion, last-completion, previous-completion)
(next-completion, previous-line-completion)
(next-line-completion): Doc fixes.  (Bug#59486)
2023-11-02 09:56:55 +02:00
Juri Linkov
8eb9b82ce5 New commands previous-line-completion and next-line-completion (bug#59486)
* lisp/simple.el (completion-list-mode-map): Bind [up] to
'previous-line-completion', and [down] to 'next-line-completion'.
(completion-auto-wrap): Mention `next-line-completion' and
`previous-line-completion' in the docstring.
(previous-line-completion, next-line-completion): New commands.
2023-11-01 19:45:05 +02:00
Robert Pluim
095d64577c Use key-translate instead of keyboard-translate
As a consequence of the discussions in Bug#65735, move to using the
new key-translate function instead of the deprecated
keyboard-translate.

For future maintainers: ?\C-? or ?\177 do not mean "DEL" with
key-translate, you have to use "DEL".

* lisp/simple.el (normal-erase-is-backspace-mode): Use key-translate.
* lisp/term/bobcat.el (terminal-init-bobcat): Use key-translate.
2023-10-05 17:55:32 +02:00
Eli Zaretskii
6d8801ee73 Merge from origin/emacs-29
476933b235 ; * lisp/simple.el (shell-command-to-string): Fix quotation.
e27ec0e414 Improve remote-file-name-inhibit-cache :type
2023-09-23 09:41:11 -04:00
Eli Zaretskii
c79a4c49ca Merge from origin/emacs-29
71a1f0fdc9 Add more missing builtin package declarations
94705f8300 ; Fix last change in shell-command-to-string
2023-09-23 09:32:56 -04:00