diff --git a/doc/lispref/package.texi b/doc/lispref/package.texi index 8fc1572fae8..c96c2f5d234 100644 --- a/doc/lispref/package.texi +++ b/doc/lispref/package.texi @@ -332,7 +332,7 @@ them using a cryptographic key. If you have generated a private/public gpg key pair, you can use gpg to sign the package like this: -@c FIXME EasyPG / package-x way to do this. +@c FIXME EasyPG way to do this. @example gpg -ba -o @var{file}.sig @var{file} @end example diff --git a/etc/PROBLEMS b/etc/PROBLEMS index 5fdb4bd95db..b8d00b7679e 100644 --- a/etc/PROBLEMS +++ b/etc/PROBLEMS @@ -3484,6 +3484,22 @@ for further discussion. * Runtime problems specific to macOS +** Spurious warnings on macOS 15. + +When starting Emacs from the terminal, the following warnings are +displayed: + +2024-09-20 14:24:58.583 emacs[23293:150402] +[IMKClient subclass]: chose IMKClient_Legacy +2024-09-20 14:24:58.583 emacs[23293:150402] +[IMKInputSession subclass]:chose IMKInputSession_Legacy + +As far as we can tell, this is harmless, and affects other software too. +Our understanding is that this is a bug in macOS 15, and should be +reported to and fixed by Apple. + +For more information, see: +https://discussions.apple.com/thread/255761734?sortBy=rank + + ** Error message about malicious software when opening Emacs on macOS When opening Emacs, you may see an error message saying something like diff --git a/lisp/emacs-lisp/cl-macs.el b/lisp/emacs-lisp/cl-macs.el index 8673b360319..d3d4524028d 100644 --- a/lisp/emacs-lisp/cl-macs.el +++ b/lisp/emacs-lisp/cl-macs.el @@ -3576,7 +3576,10 @@ Of course, we really can't know that for sure, so it's just a heuristic." ;;;###autoload (defmacro cl-check-type (form type &optional string) "Verify that FORM is of type TYPE; signal an error if not. -STRING is an optional description of the desired type." +STRING is an optional description of the desired type. + +Hint: To check the type of an object, use `cl-type-of'. +To define new types, see `cl-deftype'." (declare (debug (place cl-type-spec &optional stringp))) (and (or (not (macroexp-compiling-p)) (< cl--optimize-speed 3) (= cl--optimize-safety 3)) diff --git a/lisp/emacs-lisp/crm.el b/lisp/emacs-lisp/crm.el index 676252ae126..a75ccd46f50 100644 --- a/lisp/emacs-lisp/crm.el +++ b/lisp/emacs-lisp/crm.el @@ -269,7 +269,9 @@ with empty strings removed." (setq-local completion-list-insert-choice-function (lambda (_start _end choice) (let* ((beg (save-excursion - (if (search-backward-regexp crm-separator nil t) + (if (search-backward-regexp crm-separator + (field-beginning) + t) (1+ (point)) (minibuffer-prompt-end)))) (end (save-excursion diff --git a/lisp/progmodes/xref.el b/lisp/progmodes/xref.el index a318d3393ed..f37053a6327 100644 --- a/lisp/progmodes/xref.el +++ b/lisp/progmodes/xref.el @@ -1521,31 +1521,40 @@ The meanings of both arguments are the same as documented in xrefs (setq xrefs 'called-already))))))) (let ((cb (current-buffer)) - (pt (point))) + (pt (point)) + (win (selected-window))) (prog1 (funcall xref-show-xrefs-function fetcher - `((window . ,(selected-window)) + `((window . ,win) (display-action . ,display-action) (auto-jump . ,xref-auto-jump-to-first-xref))) - (xref--push-markers cb pt)))) + (xref--push-markers cb pt win)))) (defun xref--show-defs (xrefs display-action) (let ((cb (current-buffer)) - (pt (point))) + (pt (point)) + (win (selected-window))) (prog1 (funcall xref-show-definitions-function xrefs - `((window . ,(selected-window)) + `((window . ,win) (display-action . ,display-action) (auto-jump . ,xref-auto-jump-to-first-definition))) - (xref--push-markers cb pt)))) + (xref--push-markers cb pt win)))) -(defun xref--push-markers (buf pt) +(defun xref--push-markers (buf pt win) (when (buffer-live-p buf) - (save-excursion - (with-no-warnings (set-buffer buf)) - (goto-char pt) - (unless (region-active-p) (push-mark nil t)) - (xref-push-marker-stack)))) + ;; This was we support the `xref-history-storage' getter which + ;; depends on the selected window. This is getting pretty complex, + ;; though. The alternative approach to try would be to push early + ;; but undo the stack insertion and mark-pushing in error handler. + (save-window-excursion + (when (window-live-p win) + (select-window win)) + (save-excursion + (with-no-warnings (set-buffer buf)) + (goto-char pt) + (unless (region-active-p) (push-mark nil t)) + (xref-push-marker-stack))))) (defun xref--prompt-p (command) (or (eq xref-prompt-for-identifier t)