Merge from origin/emacs-29

9715715ac1 (eshell--complete-commands-list): Fix regression in fix t...
ea1bb26315 * doc/emacs/basic.texi (Repeating): Mention describe-repe...
f91bf9df89 Unbreak the MS-Windows build
This commit is contained in:
Stefan Kangas 2023-02-02 06:30:28 +01:00
commit 0571a3cc87
4 changed files with 28 additions and 39 deletions

View file

@ -887,6 +887,7 @@ z z z}. The first @kbd{C-x z} repeats the command once, and each
subsequent @kbd{z} repeats it once again.
@findex repeat-mode
@findex describe-repeat-maps
@vindex repeat-exit-key
@vindex repeat-exit-timeout
Also you can activate @code{repeat-mode} that temporarily enables a
@ -895,11 +896,11 @@ Currently supported shorter key sequences are @kbd{C-x u u} instead of
@kbd{C-x u C-x u} to undo many changes, @kbd{C-x o o} instead of
@kbd{C-x o C-x o} to switch several windows, @kbd{C-x @{ @{ @} @} ^ ^
v v} to resize the selected window interactively, @kbd{M-g n n p p} to
navigate @code{next-error} matches, and @kbd{C-x ] ] [ [} to navigate
through pages. Any other key exits transient mode and then is
executed normally. The user option @code{repeat-exit-key} defines an
additional key to exit this transient mode. Also it's possible to
break the repetition chain automatically after some idle time by
customizing the user option @code{repeat-exit-timeout} to specify the
idle time in seconds after which this transient mode will be turned
off.
navigate @code{next-error} matches, @kbd{C-x ] ] [ [} to navigate
through pages, and other keys listed by @code{describe-repeat-maps}.
Any other key exits transient mode and then is executed normally. The
user option @code{repeat-exit-key} defines an additional key to exit
this transient mode. Also it's possible to break the repetition chain
automatically after some idle time by customizing the user option
@code{repeat-exit-timeout} to specify the idle time in seconds after
which this transient mode will be turned off.

View file

@ -402,31 +402,6 @@ to writing a completion function."
args)
posns)))
(defun eshell--pcomplete-executables ()
"Complete amongst a list of directories and executables.
Wrapper for `pcomplete-executables' or `pcomplete-dirs-or-entries',
depending on the value of `eshell-force-execution'.
Adds path prefix to candidates independent of `action' value."
;; `pcomplete-entries' returns filenames without path on `action' to
;; use current string directory as done in `completion-file-name-table'
;; when `action' is nil to construct executable candidates.
(let ((table (if eshell-force-execution
(pcomplete-dirs-or-entries nil #'file-readable-p)
(pcomplete-executables))))
(lambda (string pred action)
(let ((cands (funcall table string pred action)))
(if (eq action t)
(let ((specdir (file-name-directory string)))
(mapcar
(lambda (cand)
(if (stringp cand)
(file-name-concat specdir cand)
cand))
cands))
cands)))))
(defun eshell--complete-commands-list ()
"Generate list of applicable, visible commands."
;; Building the commands list can take quite a while, especially over Tramp
@ -437,11 +412,19 @@ Adds path prefix to candidates independent of `action' value."
;; we complete. Adjust `pcomplete-stub' accordingly!
(if (and (> (length pcomplete-stub) 0)
(eq (aref pcomplete-stub 0) eshell-explicit-command-char))
(setq pcomplete-stub (substring pcomplete-stub 1)))))
(completion-table-dynamic
(lambda (filename)
(if (file-name-directory filename)
(eshell--pcomplete-executables)
(setq pcomplete-stub (substring pcomplete-stub 1))))
(filename (pcomplete-arg)))
;; Do not use `completion-table-dynamic' when completing a command file
;; name since it doesn't know about boundaries and would end up doing silly
;; things like adding a SPC char when completing to "/usr/sbin/".
;;
;; If you work on this function, be careful not to reintroduce bug#48995.
(if (file-name-directory filename)
(if eshell-force-execution
(pcomplete-dirs-or-entries nil #'file-readable-p)
(pcomplete-executables))
(completion-table-dynamic
(lambda (filename)
(let* ((paths (eshell-get-path))
(cwd (file-name-as-directory
(expand-file-name default-directory)))

View file

@ -597,7 +597,8 @@ This function can be used to force exit of repetition while it's active."
(defun describe-repeat-maps ()
"Describe mappings of commands repeatable by symbol property `repeat-map'.
Used in `repeat-mode'."
If `repeat-mode' is enabled, these keymaps determine which single key
can be used to repeat a command invoked via a full key sequence."
(interactive)
(require 'help-fns)
(let ((help-buffer-under-preparation t))

View file

@ -72,6 +72,7 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */
#undef ts_query_cursor_set_byte_range
#undef ts_query_delete
#undef ts_query_new
#undef ts_query_pattern_count
#undef ts_query_predicates_for_pattern
#undef ts_query_string_value_for_id
#undef ts_set_allocator
@ -135,6 +136,7 @@ DEF_DLL_FN (void, ts_query_cursor_set_byte_range,
DEF_DLL_FN (void, ts_query_delete, (TSQuery *));
DEF_DLL_FN (TSQuery *, ts_query_new,
(const TSLanguage *, const char *, uint32_t, uint32_t *, TSQueryError *));
DEF_DLL_FN (uint32_t, ts_query_pattern_count, (const TSQuery *));
DEF_DLL_FN (const TSQueryPredicateStep *, ts_query_predicates_for_pattern,
( const TSQuery *, uint32_t, uint32_t *));
DEF_DLL_FN (const char *, ts_query_string_value_for_id,
@ -200,6 +202,7 @@ init_treesit_functions (void)
LOAD_DLL_FN (library, ts_query_cursor_set_byte_range);
LOAD_DLL_FN (library, ts_query_delete);
LOAD_DLL_FN (library, ts_query_new);
LOAD_DLL_FN (library, ts_query_pattern_count);
LOAD_DLL_FN (library, ts_query_predicates_for_pattern);
LOAD_DLL_FN (library, ts_query_string_value_for_id);
LOAD_DLL_FN (library, ts_set_allocator);
@ -256,6 +259,7 @@ init_treesit_functions (void)
#define ts_query_cursor_set_byte_range fn_ts_query_cursor_set_byte_range
#define ts_query_delete fn_ts_query_delete
#define ts_query_new fn_ts_query_new
#define ts_query_pattern_count fn_ts_query_pattern_count
#define ts_query_predicates_for_pattern fn_ts_query_predicates_for_pattern
#define ts_query_string_value_for_id fn_ts_query_string_value_for_id
#define ts_set_allocator fn_ts_set_allocator