commit 55a0504c48a73075db99ce1e84472d05cc8076b9 (HEAD, refs/remotes/origin/master) Author: Andrew G Cohen Date: Tue Apr 18 11:12:54 2023 +0800 * lisp/gnus/gnus-sum.el (gnus-summary-refer-thread): Fix limiting diff --git a/lisp/gnus/gnus-sum.el b/lisp/gnus/gnus-sum.el index 35e867a3508..4effaa981ec 100644 --- a/lisp/gnus/gnus-sum.el +++ b/lisp/gnus/gnus-sum.el @@ -9081,8 +9081,8 @@ gnus-summary-refer-thread (cl-merge 'list gnus-newsgroup-headers new-headers 'gnus-article-sort-by-number))) (setq gnus-newsgroup-articles - (gnus-sorted-nunion gnus-newsgroup-articles article-ids)) - (gnus-summary-limit-include-thread id gnus-refer-thread-limit-to-thread))) + (gnus-sorted-nunion gnus-newsgroup-articles article-ids))) + (gnus-summary-limit-include-thread id gnus-refer-thread-limit-to-thread)) (gnus-summary-show-thread)) (defun gnus-summary-open-group-with-article (message-id) commit b0b968d9af3bfbb7e145e936997901595a843c24 Author: Stefan Monnier Date: Mon Apr 17 18:15:45 2023 -0400 * lisp/emacs-lisp/gv.el (error): Add gv-expander This fixes incorrect expansion of (setf (case-exhaustive ..) ..), as found for example in `elpa-admin.el`. diff --git a/lisp/emacs-lisp/gv.el b/lisp/emacs-lisp/gv.el index ac001af06bd..6c3036da2f2 100644 --- a/lisp/emacs-lisp/gv.el +++ b/lisp/emacs-lisp/gv.el @@ -639,6 +639,13 @@ gv-deref ;;; Generalized variables. +;; You'd think noone would write `(setf (error ...) ..)' but it +;; appears naturally as the result of macroexpansion of things like +;; (setf (case-exhaustive ...)). +;; We could generalize this to `throw' and `signal', but it seems +;; preferable to wait until there's a concrete need. +(gv-define-expander error (lambda (_do &rest args) `(error . ,args))) + ;; Some Emacs-related place types. (gv-define-simple-setter buffer-file-name set-visited-file-name t) (make-obsolete-generalized-variable commit db2d6aac306371501b74f4c0031e1b630a083910 Author: João Távora Date: Mon Apr 17 13:04:39 2023 +0100 Flymake: improve new flymake-show-diagnostics-at-end-of-line feature * lisp/progmodes/flymake.el (flymake-end-of-line-diagnostics-face) (flymake-error-echo-at-eol, flymake-warning-echo-at-eol) (flymake-note-echo-at-eol): New faces (flymake-error, flymake-warning, flymake-note): Use new faces. (flymake--highlight-line): Rework. (flymake-after-change-function): Rework. diff --git a/lisp/progmodes/flymake.el b/lisp/progmodes/flymake.el index ac408145696..b744a717c5c 100644 --- a/lisp/progmodes/flymake.el +++ b/lisp/progmodes/flymake.el @@ -446,6 +446,27 @@ flymake-note-echo "Face used for showing summarized descriptions of notes." :package-version '(Flymake . "1.3.4")) +(defface flymake-end-of-line-diagnostics-face + '((t :height 0.7 :box (:line-width 1))) + "Face used for end-of-line diagnostics. +See variable `flymake-show-diagnostics-at-end-of-line'." + :package-version '("Flymake" . "1.3.5")) + +(defface flymake-error-echo-at-eol + '((t :inherit (flymake-end-of-line-diagnostics-face compilation-error))) + "Face like `flymake-error-echo', but for end-of-line overlays." + :package-version '("Flymake" . "1.3.5")) + +(defface flymake-warning-echo-at-eol + '((t :inherit (flymake-end-of-line-diagnostics-face compilation-warning))) + "Face like `flymake-warning-echo', but for end-of-line overlays." + :package-version '("Flymake" . "1.3.5")) + +(defface flymake-note-echo-at-eol + '((t :inherit (flymake-end-of-line-diagnostics-face flymake-note))) + "Face like `flymake-note-echo', but for end-of-line overlays." + :package-version '("Flymake" . "1.3.5")) + (defcustom flymake-show-diagnostics-at-end-of-line nil "If non-nil, add diagnostic summary messages at end-of-line." :type 'boolean @@ -606,7 +627,7 @@ flymake-diagnostic-types-alist (put 'flymake-error 'severity (warning-numeric-level :error)) (put 'flymake-error 'mode-line-face 'flymake-error-echo) (put 'flymake-error 'echo-face 'flymake-error-echo) -(put 'flymake-error 'eol-face 'flymake-error-echo) +(put 'flymake-error 'eol-face 'flymake-error-echo-at-eol) (put 'flymake-error 'flymake-type-name "error") (put 'flymake-warning 'face 'flymake-warning) @@ -614,7 +635,7 @@ flymake-diagnostic-types-alist (put 'flymake-warning 'severity (warning-numeric-level :warning)) (put 'flymake-warning 'mode-line-face 'flymake-warning-echo) (put 'flymake-warning 'echo-face 'flymake-warning-echo) -(put 'flymake-warning 'eol-face 'flymake-warning-echo) +(put 'flymake-warning 'eol-face 'flymake-warning-echo-at-eol) (put 'flymake-warning 'flymake-type-name "warning") (put 'flymake-note 'face 'flymake-note) @@ -622,7 +643,7 @@ flymake-diagnostic-types-alist (put 'flymake-note 'severity (warning-numeric-level :debug)) (put 'flymake-note 'mode-line-face 'flymake-note-echo) (put 'flymake-note 'echo-face 'flymake-note-echo) -(put 'flymake-note 'eol-face 'flymake-note-echo) +(put 'flymake-note 'eol-face 'flymake-note-echo-at-eol) (put 'flymake-note 'flymake-type-name "note") (defun flymake--lookup-type-property (type prop &optional default) @@ -768,7 +789,7 @@ flymake--highlight-line (end (min (1+ start) (point-max))) (eolov (car (cl-remove-if-not - (lambda (o) (overlay-get o 'flymake-source-ovs)) + (lambda (o) (overlay-get o 'flymake-eol-source-region)) (overlays-at start)))) (bs (flymake-diagnostic-oneliner diagnostic t))) (setq bs (propertize bs 'face eol-face)) @@ -779,15 +800,17 @@ flymake--highlight-line (cond (eolov (overlay-put eolov 'before-string (concat (overlay-get eolov 'before-string) " " bs)) - (overlay-put eolov 'flymake-source-ovs - (cons ov (overlay-get eolov 'flymake-source-ovs)))) + (let ((e (overlay-get eolov 'flymake-eol-source-region))) + (setcar e (min (car e) (overlay-start ov))) + (setcdr e (max (cdr e) (overlay-end ov))))) (t (setq eolov (make-overlay start end nil t nil)) (setq bs (concat " " bs)) (put-text-property 0 1 'cursor t bs) (overlay-put eolov 'before-string bs) (overlay-put eolov 'evaporate (not (= start end))) - (overlay-put eolov 'flymake-source-ovs (list ov)) + (overlay-put eolov 'flymake-eol-source-region + (cons (overlay-start ov) (overlay-end ov))) (overlay-put ov 'eol-ov eolov)))))) ;; Now ensure some essential defaults are set ;; @@ -1308,12 +1331,27 @@ flymake-mode-off (make-obsolete 'flymake-mode-on 'flymake-mode "26.1") (make-obsolete 'flymake-mode-off 'flymake-mode "26.1") -(defun flymake-after-change-function (start stop _len) +(defun flymake-after-change-function (start stop pre-change-len) "Start syntax check for current buffer if it isn't already running. START and STOP and LEN are as in `after-change-functions'." (let((new-text (buffer-substring start stop))) (push (list start stop new-text) flymake--recent-changes) - (flymake--schedule-timer-maybe))) + (flymake--schedule-timer-maybe)) + ;; Some special handling to prevent eol overlays from temporarily + ;; moving to wrong line + (when (and flymake-show-diagnostics-at-end-of-line + (zerop pre-change-len)) + (save-excursion + (goto-char start) + (when-let* ((probe (search-forward "\n" stop t)) + (eolovs (cl-remove-if-not + (lambda (o) + (let ((reg (overlay-get o 'flymake-eol-source-region))) + (and reg (< (car reg) (1- probe))))) + (overlays-at (line-end-position))))) + (goto-char start) + (let ((newend (line-end-position))) + (dolist (ov eolovs) (move-overlay ov newend (1+ newend)))))))) (defun flymake-after-save-hook () (when flymake-start-on-save-buffer