diff --git a/lisp/progmodes/eglot.el b/lisp/progmodes/eglot.el index 0c46e4a5290..8ac21638a5b 100644 --- a/lisp/progmodes/eglot.el +++ b/lisp/progmodes/eglot.el @@ -828,7 +828,8 @@ ACTION is an LSP object of either `CodeAction' or `Command' type." :documentHighlight `(:dynamicRegistration :json-false) :codeAction (list :dynamicRegistration :json-false - :resolveSupport t :dataSupport t + :resolveSupport `(:properties ["edit" "command"]) + :dataSupport t :codeActionLiteralSupport '(:codeActionKind (:valueSet diff --git a/src/xterm.c b/src/xterm.c index cd21665d9fa..5e2d7c05c26 100644 --- a/src/xterm.c +++ b/src/xterm.c @@ -25884,10 +25884,12 @@ x_clean_failable_requests (struct x_display_info *dpyinfo) + (last - first)); } -/* Protect a section of X requests: ignore errors generated by X - requests made from now until `x_stop_ignoring_errors'. Each call - must be paired with a call to `x_stop_ignoring_errors', and - recursive calls inside the protected section are not allowed. +/* Protect a section of X requests. + + Ignore errors generated by X requests made from now until + `x_stop_ignoring_errors'. Each call must be paired with a call to + `x_stop_ignoring_errors', and recursive calls inside the protected + section are not allowed. The advantage over x_catch_errors followed by x_uncatch_errors_after_check is that this function does not sync to @@ -25895,11 +25897,10 @@ x_clean_failable_requests (struct x_display_info *dpyinfo) those two functions for catching errors around requests that do not require a reply. - As a special feature intended to support xselect.c, - SELECTION_SERIAL may be an arbitrary number greater than zero: when - that is the case, x_select_handle_selection_error is called with - the specified number to delete the selection request that - encountered the error. */ + If SELECTION_SERIAL is an arbitrary number greater than zero, + x_select_handle_selection_error is called with the specified number + after any errors within the protected section are received to + delete the selection request that encountered errors. */ void x_ignore_errors_for_next_request (struct x_display_info *dpyinfo, @@ -26474,9 +26475,18 @@ x_error_handler (Display *display, XErrorEvent *event) /* If a selection transfer is the cause of this error, remove the selection transfer now. */ + if (fail->selection_serial) - x_handle_selection_error (fail->selection_serial, - event); + { + x_handle_selection_error (fail->selection_serial, + event); + + /* Clear selection_serial to prevent + x_handle_selection_error from being called again if + any more requests within the protected section cause + errors to be reported. */ + fail->selection_serial = 0; + } return 0; }