diff --git a/doc/emacs/misc.texi b/doc/emacs/misc.texi index 87cc2aea5b2..80bfb1a103d 100644 --- a/doc/emacs/misc.texi +++ b/doc/emacs/misc.texi @@ -971,6 +971,13 @@ at each prompt, for instance with the following command: printf "\e]7;file://%s%s\e\\" "$HOSTNAME" "$PWD" @end example +@noindent +Then tell Emacs to process the escape codes: + +@lisp +(add-hook 'comint-output-filter-functions #'comint-osc-process-output) +@end lisp + @vindex explicit-shell-file-name @cindex environment variables for subshells @cindex @env{ESHELL} environment variable @@ -1204,7 +1211,7 @@ supports some extended escape codes, like some of the @acronym{OSC} (Operating System Codes) if you put the following in your init file: @lisp -(add-hook 'comint-output-filter-functions 'comint-osc-process-output) +(add-hook 'comint-output-filter-functions #'comint-osc-process-output) @end lisp With this enabled, the output from, for instance, @code{ls diff --git a/doc/lispref/modes.texi b/doc/lispref/modes.texi index 649b6206b7b..ba86b2d7b13 100644 --- a/doc/lispref/modes.texi +++ b/doc/lispref/modes.texi @@ -3273,10 +3273,7 @@ Lock mode is enabled, to set all the other variables. @defvar font-lock-defaults This variable is set by modes to specify how to fontify text in that mode. It automatically becomes buffer-local when set. If its value -is @code{nil}, Font Lock mode does no highlighting, and you can use -the @samp{Faces} menu (under @samp{Edit} and then @samp{Text -Properties} in the menu bar) to assign faces explicitly to text in the -buffer. +is @code{nil}, Font Lock mode does no highlighting. If non-@code{nil}, the value should look like this: diff --git a/lisp/keymap.el b/lisp/keymap.el index cf4c8d90bb1..2cd62ab6498 100644 --- a/lisp/keymap.el +++ b/lisp/keymap.el @@ -60,7 +60,11 @@ DEFINITION is anything that can be a key's definition: keymap has been created with a menu name, see `make-keymap'), or a cons (MAP . CHAR), meaning use definition of CHAR in keymap MAP, or an extended menu item definition. - (See info node `(elisp)Extended Menu Items'.)" + (See info node `(elisp)Extended Menu Items'.) + +The `key-description' convenience function converts a simple +string of characters to an equivalent form that is acceptable for +COMMAND." (declare (compiler-macro (lambda (form) (keymap--compile-check key) form))) (keymap--check key) ;; If we're binding this key to another key, then parse that other diff --git a/src/eval.c b/src/eval.c index fbb881d682d..46705dc4543 100644 --- a/src/eval.c +++ b/src/eval.c @@ -1888,7 +1888,7 @@ See also the function `condition-case'. */ (Lisp_Object error_symbol, Lisp_Object data) { /* If they call us with nonsensical arguments, produce "peculiar error". */ - if (NILP (error_symbol) && NILP (data)) + if (NILP (error_symbol) && !CONSP (data)) error_symbol = Qerror; signal_or_quit (error_symbol, data, false); eassume (false); diff --git a/src/treesit.c b/src/treesit.c index 7fbe331c234..7b8e5d161f7 100644 --- a/src/treesit.c +++ b/src/treesit.c @@ -682,14 +682,29 @@ treesit_load_language_push_for_each_suffix (Lisp_Object lib_base_name, Lisp_Object candidate1 = concat2 (lib_base_name, XCAR (suffixes)); #ifndef WINDOWSNT /* On Posix hosts, support libraries named with ABI version - numbers. In the foreseeable future we only need to support - version 0.0. For more details, see + numbers. Originally tree-sitter grammars are always versioned + at 0.0, so we first try that. For more details, see https://lists.gnu.org/archive/html/emacs-devel/2023-04/msg00386.html. */ Lisp_Object candidate2 = concat2 (candidate1, Vtreesit_str_dot_0); Lisp_Object candidate3 = concat2 (candidate2, Vtreesit_str_dot_0); *path_candidates = Fcons (candidate3, *path_candidates); *path_candidates = Fcons (candidate2, *path_candidates); + + /* Since 2025, tree-sitter grammars use their supported + TREE_SITTER_LANGUAGE_VERSION as the major version. So we need + to try all the version supported by the tree-sitter library + too. (See bug#78754) */ + for (int version = TREE_SITTER_MIN_COMPATIBLE_LANGUAGE_VERSION; + version <= TREE_SITTER_LANGUAGE_VERSION; + version++) + { + char ext[16]; // 16 should be enough until the end of universe. + snprintf ((char *) &ext, 16, ".%d.0", version); + Lisp_Object versioned_candidate = concat2 (candidate1, + build_string (ext)); + *path_candidates = Fcons (versioned_candidate, *path_candidates); + } #endif *path_candidates = Fcons (candidate1, *path_candidates); }